
function changeRoomTypeMaxAllowedRooms(roomTypeElementId, numberOfRoomTypeElementId) {
//    for(var i = document.getElementById(numberOfRoomTypeElementId).options.length - 1; i >= 0; --i) {
//        document.getElementById(numberOfRoomTypeElementId).options.remove(i);
//    }
    var child = document.getElementById(numberOfRoomTypeElementId);
    while (child.childNodes.length > 0)
    {
        child.removeChild(child.childNodes[0]);

    }

	if (window.ActiveXObject)
	{
	    var roomType1Code = document.getElementById(roomTypeElementId).value;
	    var oXMLDoc = new ActiveXObject("Microsoft.XMLDOM");
	    oXMLDoc.async="false";
	    oXMLDoc.load('/temp/gta/xml/roomtype/roomtypes.xml');
	    var osRoot = oXMLDoc.documentElement;

	    //var roomType1Element = oXMLDoc.selectSingleNode("/TempRoomTypes/TempRoomType[@RoomTypeCode='" + roomType1Code + "']");
	    var roomTypeElement = oXMLDoc.selectSingleNode("//TempRoomType[@RoomTypeCode='" + roomType1Code + "']");
	    var roomTypeMaxNumberOfAllowedRooms = 0;
	    if (roomTypeElement != null) roomTypeMaxNumberOfAllowedRooms = parseInt(roomTypeElement.getAttribute("MaxNumberOfAllowedRooms"));
	    else {
	        var oOption = document.createElement('OPTION');
	        oOption.text = "0";
	        oOption.value = "0";
	        document.getElementById(numberOfRoomTypeElementId).options.add(oOption);
	    }
	    for (var i = 1; i <= roomTypeMaxNumberOfAllowedRooms; ++i) {
	        var oOption = document.createElement('OPTION');
	        oOption.text = i;
	        oOption.value = i;
	        document.getElementById(numberOfRoomTypeElementId).options.add(oOption);
	    }
	}
	else
	{
        var roomType1Code = document.getElementsByName(roomTypeElementId).item(0).value;
        var oXMLDoc = document.implementation.createDocument('', '', null);
        oXMLDoc.async = "false";
        oXMLDoc.load('/temp/gta/xml/roomtype/roomtypes.xml');
        oXMLDoc.onload = function()
        {
			var roomTypeElement = ffSelectNode(oXMLDoc,"TempRoomType","RoomTypeCode",roomType1Code);
	        var roomTypeMaxNumberOfAllowedRooms = 0;
	        if (roomTypeElement != null)
	            roomTypeMaxNumberOfAllowedRooms = parseInt(roomTypeElement.getAttribute("MaxNumberOfAllowedRooms"));
	        else {
	            var oOption = document.createElement('OPTION');
	            oOption.text = "0";
	            oOption.value = "0";
	            document.getElementById(numberOfRoomTypeElementId).options.add(oOption);
	        }
	        for (var i = 1; i <= roomTypeMaxNumberOfAllowedRooms; ++i) {
	            var oOption = document.createElement('OPTION');
	            oOption.text = i;
	            oOption.value = i;
	            document.getElementById(numberOfRoomTypeElementId).options.add(oOption);
	        }

        }
	}
}

function chooseCity(locale,msg) {
//    for(var i = document.getElementById("cityCode").options.length - 1; i >= 0; --i) {
//        document.getElementById("cityCode").options.remove(i);
//    }
    var msg1=msg;
    var msg2=msg;
    var child = document.getElementById("cityCode");
   while (child.childNodes.length > 0)
    {
        child.removeChild(child.childNodes[0]);
    }
    //var selectedCountryCode = document.getElementById("countryCode").options(document.getElementById("countryCode").selectedIndex).value;
	var selectedCountryCode = document.getElementById("countryCode").value;
    if (selectedCountryCode == "") {
        var dOption = document.createElement('OPTION');
        dOption.text = msg;
        dOption.value = "";
        document.getElementById("cityCode").options.add(dOption);
        document.getElementById("cityCode").disabled = true;
    }
    else {
        document.getElementById("cityCode").disabled = false;
        if (window.ActiveXObject)
        {
	        var oXMLDoc = new ActiveXObject("Microsoft.XMLDOM");
	        oXMLDoc.async="false";
	        var xmlFilePath='/temp/gta/xml/city/country_cities_$selectedCountryCode$.xml';
	        xmlFilePath = xmlFilePath.replace("$selectedCountryCode$", selectedCountryCode);
	        oXMLDoc.load(xmlFilePath);
	        var osRoot=oXMLDoc.documentElement;
//            [@RoomTypeCode='" + roomType1Code + "']

            var oRoot=oXMLDoc.selectSingleNode("//TempCities[@Locale='"+locale+"']");
	        if(oRoot.childNodes != null) {
	            var oOption = document.createElement('OPTION');
	            oOption.text =msg1;
	            oOption.value = "";
	            document.getElementById("cityCode").options.add(oOption);
            for(var i = 0; i < oRoot.childNodes.length; ++i) {
                oItem = oRoot.childNodes.item(i);
                var sCityCode = oItem.getAttribute("CityCode");
                var sValue =  oItem.text;
                var oOption = document.createElement('OPTION');
                oOption.text = sValue;
                oOption.value = sCityCode;
                document.getElementById("cityCode").options.add(oOption);
            	}
        	}
        }
        else
        {
            var oXMLDoc = document.implementation.createDocument('', '', null);
            oXMLDoc.async = "false";
            var xmlFilePath = '/temp/gta/xml/city/country_cities_$selectedCountryCode$.xml';
            xmlFilePath = xmlFilePath.replace("$selectedCountryCode$", selectedCountryCode);
            oXMLDoc.load(xmlFilePath);
            oXMLDoc.onload = function()
            {
				var oRoot = ffSelectNode(oXMLDoc,"TempCities","Locale",locale);
	            if (oRoot.childNodes != null) {
                var oOption = document.createElement('OPTION');
                oOption.text =msg2;
                oOption.value = "";
                document.getElementById("cityCode").options.add(oOption);
                for (var i = 0; i < oRoot.childNodes.length; ++i) {
                    oItem = oRoot.childNodes.item(i);
                    var sCityCode = oItem.getAttribute("CityCode");
                    var sValue = getText(oItem);
                    var oOption = document.createElement('OPTION');
                    oOption.text = sValue;
                    oOption.value = sCityCode;
                    document.getElementById("cityCode").options.add(oOption);
                	}
            	}
			}
        }
    }
}

function isDate(strDate) {
    var strSeparator = "-";
    var strDateArray;
    var intYear;
    var intMonth;
    var intDay;
    var boolLeapYear;

    strDateArray = strDate.split(strSeparator);

    if(strDateArray.length!=3) return false;

    intMonth = parseInt(strDateArray[0],10);
    intDay = parseInt(strDateArray[1],10);
    intYear = parseInt(strDateArray[2],10);

    if(isNaN(intYear) || isNaN(intMonth) || isNaN(intDay)) return false;
    if(intMonth > 12 || intMonth < 1) return false;
    if((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intDay > 31 || intDay < 1)) return false;
    if((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30 || intDay < 1)) return false;

    if(intMonth == 2) {
      if(intDay < 1) return false;

      boolLeapYear = false;
      if((intYear % 100) == 0) {
        if((intYear % 400) == 0) boolLeapYear = true;
      }
      else {
         if((intYear % 4) == 0) boolLeapYear = true;
      }
      if(boolLeapYear) {
         if(intDay > 29) return false;
      }
      else {
         if(intDay > 28) return false;
      }
   }

   return true;
}

function validateSearchCriteria(message1,message2,message3,message4,message5,message6,message7,message8,message9) {
    var checkInDate = null;
    var checkOutDate = null;

    if (document.getElementById("checkInMonth") != null && document.getElementById("checkInDay") != null && document.getElementById("checkInYear") != null && document.getElementById("checkOutMonth") != null && document.getElementById("checkOutDay") != null && document.getElementById("checkOutYear") != null) {
        checkInDate = document.getElementById("checkInMonth").value + "-" + document.getElementById("checkInDay").value + "-" + document.getElementById("checkInYear").value;
        checkOutDate = document.getElementById("checkOutMonth").value + "-" + document.getElementById("checkOutDay").value + "-" + document.getElementById("checkOutYear").value;
    }
    else if (document.getElementById("checkInDate") != null && document.getElementById("checkOutDate") != null) {
        var checkInArray = document.getElementById("checkInDate").value.split("-");
        if (checkInArray.length != 3) {
            alert(message1);
            return (false);
        }
        checkInDate = checkInArray[1] + "-" + checkInArray[2] + "-" + checkInArray[0];

        var checkOutArray = document.getElementById("checkOutDate").value.split("-");
        if (checkOutArray.length != 3) {
            alert(message2);
            return (false);
        }
        checkOutDate = checkOutArray[1] + "-" + checkOutArray[2] + "-" + checkOutArray[0];
    }
    var today = new Date();
    var earlistCheckInDate = (today.getMonth() + 1) + "-" + (today.getDate() + 1) + "-" + today.getYear();

    if (document.getElementById("countryCode") != null) {
        if (document.getElementById("countryCode").value == "") {
            alert(message3);
            document.getElementById("countryCode").focus();
            return (false);
        }
    }

    if (document.getElementById("cityCode").value == "") {
        alert(message4);
        document.getElementById("cityCode").focus();
        return (false);
    }

    if (!isDate(checkInDate)) {
        alert(message5);
        return (false);
    }
    if (!isDate(checkOutDate)) {
        alert(message6);
        return (false);
    }

    if (Date.parse(checkInDate) < Date.parse(earlistCheckInDate)) {
        alert(message7);
        document.getElementById("checkInMonth").focus();
        return (false);
    }
    else if (Date.parse(checkInDate) >= Date.parse(checkOutDate)) {
        alert(message8);
        document.getElementById("checkInDay").focus();
        return (false);
    }

    var roomType1Code = null;
    var roomType2Code = null;
    var roomType3Code = null;
    var roomType4Code = null;
    if (document.getElementById("roomType1") != null) roomType1Code = document.getElementById("roomType1").value;
    if (document.getElementById("roomType2") != null) roomType2Code = document.getElementById("roomType2").value;
    if (document.getElementById("roomType3") != null) roomType3Code = document.getElementById("roomType3").value;
    if (document.getElementById("roomType4") != null) roomType4Code = document.getElementById("roomType4").value;

    var numberOfRoomType1 = 0;
    var numberOfRoomType2 = 0;
    var numberOfRoomType3 = 0;
    var numberOfRoomType4 = 0;
    if (document.getElementById("numberOfRoomType1") != null) numberOfRoomType1 = parseInt(document.getElementById("numberOfRoomType1").value);
    if (document.getElementById("numberOfRoomType2") != null) numberOfRoomType2 = parseInt(document.getElementById("numberOfRoomType2").value);
    if (document.getElementById("numberOfRoomType3") != null) numberOfRoomType3 = parseInt(document.getElementById("numberOfRoomType3").value);
    if (document.getElementById("numberOfRoomType4") != null) numberOfRoomType4 = parseInt(document.getElementById("numberOfRoomType4").value);

    if (numberOfRoomType1 + numberOfRoomType2 + numberOfRoomType3 + numberOfRoomType4 == 0) {
        alert(message9);
	    document.getElementById("numberOfRoomType1").focus();
		return (false);
    }

    var oXMLDoc = new ActiveXObject("Microsoft.XMLDOM");
    oXMLDoc.async="false";
    oXMLDoc.load("/temp/gta/xml/roomtype/roomtypes.xml");
    var osRoot = oXMLDoc.documentElement;
    var roomType1Element = null;
    var roomType2Element = null;
    var roomType3Element = null;
    var roomType4Element = null;
    if (roomType1Code != null) roomType1Element = oXMLDoc.selectSingleNode("//TempRoomType[@RoomTypeCode='" + roomType1Code + "']");
    if (roomType2Code != null) roomType2Element = oXMLDoc.selectSingleNode("//TempRoomType[@RoomTypeCode='" + roomType2Code + "']");
    if (roomType3Code != null) roomType3Element = oXMLDoc.selectSingleNode("//TempRoomType[@RoomTypeCode='" + roomType3Code + "']");
    if (roomType4Code != null) roomType4Element = oXMLDoc.selectSingleNode("//TempRoomType[@RoomTypeCode='" + roomType4Code + "']");
    var numberOfPeople1 = 0;
    var numberOfPeople2 = 0;
    var numberOfPeople3 = 0;
    var numberOfPeople4 = 0;
    if (roomType1Element != null) numberOfPeople1 = parseInt(roomType1Element.getAttribute("NumberOfPeople"));
    if (roomType2Element != null) numberOfPeople2 = parseInt(roomType2Element.getAttribute("NumberOfPeople"));
    if (roomType3Element != null) numberOfPeople3 = parseInt(roomType3Element.getAttribute("NumberOfPeople"));
    if (roomType4Element != null) numberOfPeople4 = parseInt(roomType4Element.getAttribute("NumberOfPeople"));

    var totalNumberOfPeople1 = numberOfRoomType1 * numberOfPeople1;
    var totalNumberOfPeople2 = numberOfRoomType2 * numberOfPeople2;
    var totalNumberOfPeople3 = numberOfRoomType3 * numberOfPeople3;
    var totalNumberOfPeople4 = numberOfRoomType4 * numberOfPeople4;

    if (totalNumberOfPeople1 + totalNumberOfPeople2 + totalNumberOfPeople3 + totalNumberOfPeople4 > 9) {
        alert("<fmt:message>portal.gta.hotel.search.error.numberOfPeopleMoreThan9</fmt:message>");
        /* document.getElementById("numberOfRoomType1").focus(); */
        return (false);
    }

    if (document.getElementById("keyword") != null) {
        if ((checkStrLength(document.getElementById("keyword").value) > 0) && (CheckLength(document.getElementById("keyWord").value) < 3)) {
            alert("<fmt:message>portal.gta.hotel.search.error.keyWordFormatNotCorrect</fmt:message>");
            document.getElementById("keyword").focus();
            return (false);
        }

        var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1234567890" ;
        for (i=0; i < document.getElementById("keyword").value.length; i++) {
    	    var checkChar = document.getElementById("keyword").value.charAt(i);
	        checkChar = checkChar.toUpperCase();
	    }
	}
}
function ffSelectNode(docXML,tagName,attrName,attr)
{
	var tmp = docXML.getElementsByTagName(tagName);
	 for(var i=0;i<tmp.length;++i)
	 {
	     if(tmp[i].getAttribute(attrName) == attr)
	     {
	         return tmp[i];
	     }
	 }
	 return null;
}
function getText(oNode) {
    var sText = "";
    for (var i = 0; i < oNode.childNodes.length; i++) {
        if (oNode.childNodes[i].hasChildNodes()) {
            sText += getText(oNode.childNodes[i]);
        } else {
            sText += oNode.childNodes[i].nodeValue;
        }
    }
    return sText;
}