﻿
var spControlID;
    
    function searchPanelValidationScript(cid) {
      
        spControlID = cid;
    }
    
    function isDate(value) 
    {    
        var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;       
        
        if ((value.match(RegExPattern)) && (value!='')) 
        {
            return true;
        } 
        else 
        {
            return false;
        }
    }

    function ValidateSearch() {
        var AirportCode;
        var DestinationID;
        var ResortID;
        var BuildingID;
        var GatewayCode;
        var CheckinDate;
        var BuildingName;

        var hfSearchType;
        var hfSmartSearchName;
        var hfSmartSearchValue;

        CheckinDate = document.getElementById(spControlID + "_txtCheckInDate").value;
        //CheckinDate2 = document.getElementById(ctl00_ucSearchPanel3 + "_txtCheckInDate").value;

        if (CheckinDate) {
            if (!isDate(CheckinDate)) {
                alert("Invalid Checkin Date");
                return false;
            }
        }
        else {
            if (!isDate(CheckinDate2)) {
                alert("Invalid Checkin Date");
                return false;
            }
        }
        var today = new Date();
        var DateToday = today.getDate() + "/" + parseInt(today.getMonth() + 1) + "/" + today.getFullYear();


        var daysDiff = DateDiff('d', DateToday, CheckinDate);


        if (daysDiff < 0) {
            alert("The Check-in date must not be in the past.");
            return false;
        }

        if (document.getElementById(spControlID + "_txtAirportCode")) {
            AirportCode = document.getElementById(spControlID + "_txtAirportCode").value;
        }
        else
            AirportCode = "";

        if (document.getElementById(spControlID + "_ddlDestination") != null && document.getElementById(spControlID + "_ddlDestination").selectedIndex > 0) {
            GatewayCode = document.getElementById(spControlID + "_ddlDestination").value;
        }
        else {
            GatewayCode = 0;
        }


        if (document.getElementById(spControlID + "_ddlResort") != null && document.getElementById(spControlID + "_ddlResort").selectedIndex > 0) {
            ResortID = document.getElementById(spControlID + "_ddlResort").value;

        }
        else {
            ResortID = 0;
        }

        if (document.getElementById(spControlID + "_txtBuildingID").value == "")
            BuildingID = 0;
        else
            BuildingID = document.getElementById(spControlID + "_txtBuildingID").value;



        if (document.getElementById(spControlID + "_txtSmartSearchHotel") != null) {
            BuildingName = document.getElementById(spControlID + "_txtSmartSearchHotel").value;
        }
        else {
            BuildingName = "";
        }

        if (BuildingName.length > 0) {
            if (document.getElementById(spControlID + "_ddlDestination")) {
                document.getElementById(spControlID + "_ddlDestination").selectedIndex = 0;
                document.getElementById(spControlID + "_ddlResort").selectedIndex = 0;
            }

            if (document.getElementById(spControlID + "_txtAirportCode")) {
                document.getElementById(spControlID + "_txtAirportCode").value = "";
            }

            AirportCode = "";
            GatewayCode = 0;
            ResortID = 0;
        }

        if (AirportCode.length > 0) {
            document.getElementById(spControlID + "_ddlDestination").selectedIndex = 0;
            document.getElementById(spControlID + "_ddlResort").selectedIndex = 0;
        }

        //txtBuilding = document.getElementById(spControlID + "_txtBuilding");
        //hfSearchType = document.getElementById(spControlID + "_hfSearchType");
        hfSmartSearchName = document.getElementById(spControlID + "_hfSmartSearchName");
        hfSmartSearchValue = document.getElementById(spControlID + "_hfSmartSearchValue");

        //	    if (hfSearchType.value == "ddl")
        //	    {
        //	        if (AirportCode.length == 0 && GatewayCode == 0 && ResortID == 0 && BuildingID == 0 && BuildingName == "")
        //	        {
        //	            alert("You must select either Destination, Airport Code, Resort or a Building");
        //	            return false;
        //	        }
        //	    }
        //	    else if (hfSearchType.value == "txt")
        //	    {
        //	        if (BuildingName == "" && hfSmartSearchName.value == "" && hfSmartSearchValue.value == "" && hfSmartSearchGatewayCode.value == "")
        //	        {
        //	            alert("You must type a Country, Destination, resort or Airport code");
        //	            return false;
        //	        }
        //	    }
        //	    else
        //	        return false;


        if (BuildingName == "" && hfSmartSearchName.value == "" && hfSmartSearchValue.value == "" && hfSmartSearchGatewayCode.value == "") {
            alert(document.getElementById(spControlID + "_hfSmartSearchError").value);
            return false;
        }

        var Rooms = document.getElementById(spControlID + "_ddlRooms").value;
        
        //added to redirect to groupbookings page if the serach button is clicked after selecting 3+ option in dropdown (mainly on back button)
        if (Rooms == "3+") {
            __doPostBack(spControlID + "_ddlRooms", Rooms);
            return true;
        }
        for (var i = 0; i < Rooms; i++) {
            var Child;
            var Age;


            Child = document.getElementById(spControlID + "_ddlR" + parseInt(i + 1) + "C").value;

            if (parseInt(Child) > 0) {
                for (var j = 0; j < Child; j++) {
                    Age = document.getElementById(spControlID + "_txtR" + parseInt(i + 1) + "C" + parseInt(j + 1)).value;

                    if (IsNumeric(Age) == false) {
                        alert("Invalid Child " + parseInt(j + 1) + " age in Room " + parseInt(i + 1));
                        return false;
                    }
                    else if (Age > 18) {
                        alert("Maximum child age is 18. Please select a valid age.");
                        return false;
                    }
                }
            }
        }

        if (document.getElementById("divProgress")) {
            document.getElementById("divProgress").style.display = "";
            document.getElementById("divProgress").style.visibility = "visible";
        }

        if (document.getElementById(spControlID + "_txtSmartSearchHotel") != null) {
            if (document.getElementById(spControlID + "_txtSmartSearchHotel").value == "") {
                document.getElementById(spControlID + "_txtBuildingID").value = 0;
            }
        }

        if (jQuery('[id$=btnSearch]').length > 0)
            SearchClicked();
        if (jQuery('[id$=lnkSearchPlaces]').length > 0) {

            tb_show('Welcome', '#TB_inline?height=415&inlineId=level2Places-search-overlay', null);

            var __targ = jQuery("body form");
            __targ.append(jQuery("#TB_overlay"));
            __targ.append(jQuery("#TB_window"));

            var __closeLink = jQuery("div#TB_ajaxContent a.close");

            if (__closeLink.length <= 0) {

                //Create new close link
                var __close = document.createElement("a");
                __close.className = "close";
                __close.href = "#";
                __close.appendChild(document.createTextNode("close"));
                //Insert new close link before header
                var __targ = jQuery("div#TB_ajaxContent .search-check-availibility");
                __targ.before(__close);
                var __closeLink = jQuery("div#TB_ajaxContent a.close");
                __closeLink.bind("click", function() {
                    jQuery("a#TB_closeWindowButton").click();
                    return false;
                })

            }
        }
        return true;
    }

    function ge(id) {
        return document.getElementById(id);
    }

    function SearchClicked() {
        if (ge("divSearching")) {
            var browserName = navigator.appName;
            if (browserName == "Microsoft Internet Explorer") {

                var imgLoadingBar = spControlID + "_imgLoadingBar";
                var img = jQuery('#' + imgLoadingBar);
                var f = function() {
                    img.attr('src', img.attr('src'));
                };
                setTimeout(f, 100);

                var imgPromoId = spControlID + "_imgSearchingPromo";
                var imgPromo = jQuery('#' + imgPromoId);
                if (imgPromo) {
                    var f1 = function() {
                        imgPromo.attr('src', imgPromo.attr('src'));
                    };
                    setTimeout(f1, 100);
                }
                
            }
            ge("divSearching").style.display = "";
            var divSearchingBack = ge("divSearchingBack");
            divSearchingBack.style.display = "";
            divSearchingBack.style.width = document.body.parentNode.scrollWidth + 'px';
            divSearchingBack.style.height = document.body.parentNode.scrollHeight + 'px';
            var ie6SearchingBack = ge("iSearchBack");
            if (ie6SearchingBack)
                ie6SearchingBack.style.height = document.body.parentNode.scrollHeight + 'px';
        }
        //turn off filter and map panels if present
        if (document.getElementById("fc-search-results-filters")) {
            document.getElementById("fc-search-results-filters").style.display = "none";
            document.getElementById("fc-search-results-filters").style.visibility = "hidden";
        }
        if (document.getElementById("location-map")) {
            document.getElementById("location-map").style.display = "none";
            document.getElementById("location-map").style.visibility = "hidden";
        }
    }

    function DisplayChild()
	{
		var ddl = document.getElementById( spControlID + "_ddlRooms");
		if (ddl.value != "3+") {
		    switch (parseInt(ddl.value)) {
		        case 1:
		            document.getElementById("trRoomOne").style.display = "";
		            document.getElementById("trRoomOne").style.visibility = "visible";

		            document.getElementById("trRoomTwo").style.display = "none";
		            document.getElementById("trRoomTwo").style.visibility = "hidden";

		            document.getElementById("trRoomThree").style.display = "none";
		            document.getElementById("trRoomThree").style.visibility = "hidden";

		            document.getElementById("trRoom2Ages").style.display = "none";
		            document.getElementById("trRoom2Ages").style.visibility = "hidden";
		            document.getElementById("trRoom3Ages").style.display = "none";
		            document.getElementById("trRoom3Ages").style.visibility = "hidden";

		            if (document.getElementById("room1Head"))
		                document.getElementById("room1Head").style.display = "none";

		            ShowChildAges(1);
		            break;

		        case 2:
		            document.getElementById("trRoomOne").style.display = "";
		            document.getElementById("trRoomOne").style.visibility = "visible";

		            document.getElementById("trRoomTwo").style.display = "";
		            document.getElementById("trRoomTwo").style.visibility = "visible";

		            document.getElementById("trRoomThree").style.display = "none";
		            document.getElementById("trRoomThree").style.visibility = "hidden";

		            document.getElementById("trRoom3Ages").style.display = "none";
		            document.getElementById("trRoom3Ages").style.visibility = "hidden";

		            document.getElementById("room1Head").style.display = "block";

		            ShowChildAges(1);
		            ShowChildAges(2);
		            break;

		        case 3:
		            document.getElementById("trRoomOne").style.display = "";
		            document.getElementById("trRoomOne").style.visibility = "visible";

		            document.getElementById("trRoomTwo").style.display = "";
		            document.getElementById("trRoomTwo").style.visibility = "visible";

		            document.getElementById("trRoomThree").style.display = "";
		            document.getElementById("trRoomThree").style.visibility = "visible";

		            document.getElementById("room1Head").style.display = "block";

		            ShowChildAges(1);
		            ShowChildAges(2);
		            ShowChildAges(3);
		            break;
		    }
		}
		else {
            //Added to fix the child textbox display issue on back button from group bookings
		    ShowChildAges(1);
		    ShowChildAges(2);
		    ShowChildAges(3);

		}
	}
    
    function ShowChildAges(RoomNo)
	{				
	    var ddl = document.getElementById( spControlID + "_ddlR" + RoomNo + "C");
		
		if (parseInt(ddl.value) == 0)
		{
		    document.getElementById("trRoom" + RoomNo + "Ages").style.display="none";
		    document.getElementById("trRoom" + RoomNo + "Ages").style.visibility="hidden";
		}
		else		
		{
	       	document.getElementById("trRoom" + RoomNo + "Ages").style.display="";
			document.getElementById("trRoom" + RoomNo + "Ages").style.visibility="visible";
			
			switch (parseInt(ddl.value))
			{
				case 1:
					document.getElementById(spControlID + "_txtR" + RoomNo + "C1").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C1").visibility="visible";
					
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C2").style.display="none";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C2").visibility="hidden";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C3").style.display="none";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C3").visibility="hidden";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C4").style.display="none";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C4").visibility="hidden";
					break;
					
				case 2:
					document.getElementById(spControlID + "_txtR" + RoomNo + "C1").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C1").visibility="visible";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C2").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C2").visibility="visible";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C3").style.display="none";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C3").visibility="hidden";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C4").style.display="none";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C4").visibility="hidden";
					break;

				case 3:
					document.getElementById(spControlID + "_txtR" + RoomNo + "C1").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C1").visibility="visible";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C2").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C2").visibility="visible";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C3").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C3").visibility="visible";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C4").style.display="none";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C4").visibility="hidden";
					break;
					
				case 4:
					document.getElementById(spControlID + "_txtR" + RoomNo + "C1").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C1").visibility="visible";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C2").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C2").visibility="visible";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C3").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C3").visibility="visible";
					
					document.getElementById(spControlID + "_txtR" + RoomNo + "C4").style.display="";
					document.getElementById(spControlID + "_txtR" + RoomNo + "C4").visibility="visible";
					break;
			}
		}
	}	
	
	function OnAiportSelected()
	{	   
	   	
	   	/*     
	    document.getElementById(spControlID + "_ddlDestination").selectedIndex = 0;
	    document.getElementById(spControlID + "_ddlResort").selectedIndex = 0;
	    
	    if (document.getElementById(spControlID + "_ddlBuilding"))
	    {
	        document.getElementById(spControlID + "_ddlBuilding").selectedIndex = 0;
	    }
	    
	    document.getElementById(spControlID + "_txtBuilding").value = "";
	    document.getElementById(spControlID + "_txtBuildingID").value = "0"
	    
	    AirportCode_OnKeyUp();
	    
	    */
	    	        
	}
	
	function AirportCode_OnKeyUp()
	{
	    var value;
	    var pos;
	    var code;
	   
	    value = document.getElementById(spControlID + "_txtAirportCode").value;

	    pos = value.indexOf("(");
	    
	    if ( pos >-1 )
	    {
	        code =value.substring(pos+1, value.length-1);
	        
	        document.getElementById(spControlID + "_txtAirportCode").value= code;
	    }
	}
	
	function OnResortSelected()
	{
	    if (document.getElementById(spControlID + "_txtAirportCode"))	
	        document.getElementById(spControlID + "_txtAirportCode").value = '';
	        
	    if (document.getElementById(spControlID + "_ddlBuilding"))
	    {
	        document.getElementById(spControlID + "_ddlBuilding").selectedIndex = 0;
	    }
	    
	    document.getElementById(spControlID + "_txtSmartSearchHotel").value = "";
	    document.getElementById(spControlID + "_txtBuildingID").value = "0"
	    
	    if (document.getElementById(spControlID + "_txtAirportCode"))	
	        document.getElementById(spControlID + "_txtAirportCode").value = '';
	}
	
	function OnDestinationChanged()
	{	    
	    if (document.getElementById(spControlID + "_ddlBuilding"))
	    {
	        document.getElementById(spControlID + "_ddlBuilding").selectedIndex = 0;
	    }
	    
	    document.getElementById(spControlID + "_txtSmartSearchHotel").value = "";
	    document.getElementById(spControlID + "_txtBuildingID").value = "0"
	    
	    if (document.getElementById(spControlID + "_txtAirportCode"))	
	    {	        
	        document.getElementById(spControlID + "_txtAirportCode").value = '';
        }
        
        if (document.getElementById(spControlID + "_ddlBoardBasis"))
        {
            document.getElementById(spControlID + "_ddlBoardBasis").selectedIndex = 0;
        }   
	}
	
	function OnBuildingSelected()
	{
	    /*
	    
	    if (document.getElementById(spControlID + "_txtAirportCode"))	
	        document.getElementById(spControlID + "_txtAirportCode").value = '';
	        
	    document.getElementById(spControlID + "_ddlResort").selectedIndex = 0;	 
	    document.getElementById(spControlID + "_ddlDestination").selectedIndex = 0;   
	    */    
	}	
	
    function IsNumeric(input)
	{
		var ret = false;
		
		if (input == "")
		{
			ret = false;
		}
		else
		{				
			if (isNaN(input))
			{
				ret = false
			}
			else
				ret = true;
		}
		return ret;
    }
    function ValidateGroupBookingSubmit(groupRoomsRepeater) {
        var AirportCode;
        var DestinationID;
        var ResortID;
        var BuildingID;
        var GatewayCode;
        var CheckinDate;
        var BuildingName;

        var hfSearchType;
        var hfSmartSearchName;
        var hfSmartSearchValue;

        CheckinDate = document.getElementById(spControlID + "_txtGroupCheckInDate").value;
        //CheckinDate2 = document.getElementById(ctl00_ucSearchPanel3 + "_txtCheckInDate").value;

        if (CheckinDate) {
            if (!isDate(CheckinDate)) {
                alert("Invalid Checkin Date");
                return false;
            }
        }

        var today = new Date();
        var DateToday = today.getDate() + "/" + parseInt(today.getMonth() + 1) + "/" + today.getFullYear();


        var daysDiff = DateDiff('d', DateToday, CheckinDate);

        if (daysDiff < 0) {
            alert("The Check-in date must not be in the past.");
            return false;
        } else if (daysDiff < 7) {
            alert("The Check-in date must at least a week in advance.");
            return false;
        }

        if (document.getElementById(spControlID + "_txtBuildingID").value == "")
            BuildingID = 0;
        else
            BuildingID = document.getElementById(spControlID + "_txtBuildingID").value;



        if (document.getElementById(spControlID + "_txtSmartSearchHotel") != null) {
            BuildingName = document.getElementById(spControlID + "_txtSmartSearchHotel").value;
        }
        else {
            BuildingName = "";
        }

        //if (BuildingName.length > 0) {
        //    if (document.getElementById(spControlID + "_ddlDestination")) {
        //        document.getElementById(spControlID + "_ddlDestination").selectedIndex = 0;
        //        document.getElementById(spControlID + "_ddlResort").selectedIndex = 0;
        //    }
        //
        //    if (document.getElementById(spControlID + "_txtAirportCode")) {
        //        document.getElementById(spControlID + "_txtAirportCode").value = "";
        //    }
        //   
        //    AirportCode = "";
        //    GatewayCode = 0;
        //    ResortID = 0;
        //}
        //
        //if (AirportCode.length > 0) {
        //    document.getElementById(spControlID + "_ddlDestination").selectedIndex = 0;
        //    document.getElementById(spControlID + "_ddlResort").selectedIndex = 0;
        // }
        hfSmartSearchName = document.getElementById(spControlID + "_hfSmartSearchName");
        hfSmartSearchValue = document.getElementById(spControlID + "_hfSmartSearchValue");


        if (BuildingName == "" && hfSmartSearchName.value == "" && hfSmartSearchValue.value == "" && hfSmartSearchGatewayCode.value == "") {
            alert(document.getElementById(spControlID + "_hfSmartSearchError").value);
            return false;
        }

        var Rooms = document.getElementById(spControlID + "_ddlRooms").value;

        for (var i = 0; i < Rooms; i++) {
            var Child;
            var Age;

            var childDDL = "_ddlR1C" + parseInt(i);
            //TODO: Add the validation error messages in to a string array to display as a single alert
            Child = jQuery('[id$=' + childDDL + ']').val();
            if (parseInt(Child) > 0) {
                for (var j = 0; j < Child; j++) {
                    var childAgetxt = "_txtR1C0" + parseInt(j + 1) + parseInt(i);
                    Age = jQuery('[id$=' + childAgetxt + ']').val();
                    //Age = document.getElementById(spControlID + "_txtRC0" + parseInt(i) + parseInt(j)).value;

                    if (IsNumeric(Age) == false) {
                        alert("Invalid Child " + parseInt(j + 1) + " age in Room " + parseInt(i + 1));
                        return false;
                    }
                    else if (Age > 18) {
                        alert("Maximum child age is 18. Please select a valid age.");
                        return false;
                    }
                }
            }
        }


        if (document.getElementById(spControlID + "_txtSmartSearchHotel") != null) {
            if (document.getElementById(spControlID + "_txtSmartSearchHotel").value == "") {
                document.getElementById(spControlID + "_txtBuildingID").value = 0;
            }
        }
        if (document.getElementById(spControlID + "_chkTerms") != null) {
            if (document.getElementById(spControlID + "_chkTerms").checked == false) {
                alert("Please accept the group booking terms and conditions.");
                return false;
            }
        }
        if (Page_ClientValidate() == true) {
            return true;
        }
        else {
            return false;
        }
    }
    
    function Level2PlaceSearchClicked() {
        tb_remove();
        SearchClicked();
    }

    function Validate() {
        if (ValidateSearch()) {
            jQuery('[id$=lnkSearchPlaces]').addClass(".thickbox");
            return false;
        }
        else {
            jQuery('[id$=lnkSearchPlaces]').removeClass(".thickbox");
            return false;
        }        
    }
