﻿/*
JS_CONTROLLER IS THE JS CONTROLLER ALL EVENTS ARE PASSED TO THIS FUNCTION AND THEN THIS 
FUNCTION DECIDES WHAT TO DO
*/
//VARIABLE DECLARATION
var totAdults;                                      //NUMBER OF ADULTS TRAVELLING AS SELECTED ON SEARCH TILE
var totChildren;                                    //NUMBER OF CHILDREN TRAVELLING AS SELECTED ON SEARCH TILE
var totInfants;                                     //NUMBER OF INFANTS TRAVELLING AS SELECTED ON SEARCH TILE
var selectedDestinationCode;                        //THE CURRENT CETRES CODE
var depDate;                                        //THE DATE AS SELECTED ON SEARCH TILE
var duration;                                       //THE DURATION OF THE HOLIDAY IN WEEKS
var depDateObj;                                     //DATE OBJECT CREATED FROM THE DEPARTURE DATE
var depAirport;                                     //THE AIPORT AS SELECTED ON THE SEARCH TILE
var isPageLoaded;
var isLoadEvent = false; 
var prevSelAdult;   //Holds previous selected adult quantity
var prevSelChild;   //Holds previous selected child quantity
var prevSelInfant;  //Holds previous selected infant quantity
var prevSelDuration; //Holds previous selected duration quantity
var prevSelFlight;  //Holds previous selected airport name quantity
var curSelectedDate = "";                              //THIS IS USED TO HOLD CURRENT SELETED DATE ACROSS ALL FUNCTION inController_SearchTile.js andController_SearchResult.js
var jsAllCentreDates = "";
var arrVillLoaded = false;
                                   
function js_controller_searchTile(sender, event)
{
try{
    switch(sender.toLowerCase())
    {
        case "body":
            if(event.toLowerCase() == "onload")
            {                               
                DeCompressDates();
                ClearDropDown(ddDestinationsId);     
                fillDestinations(ddDestinationsId, arrDestinations);
                
                GetPostedSearchTileDetails();
                SetDropDownDefault(selectedDestinationCode, ddDestinationsId);
                
                isLoadEvent = true;
                isPageLoaded = false;
                js_controller_searchTile(ddDestinationsId,'onChange');
                isLoadEvent = false;

                ds_shChanged(hiddenDateId, datePickerId);
                
                var adultCtrl = document.getElementById(ddAdultsId);
                var childCtrl = document.getElementById(ddChildrenId);
                var infantCtrl = document.getElementById(ddInfantsId);
                var durationCtrl = document.getElementById(ddDurationId);
                var airportCtrl = document.getElementById(ddAirportsId);
                
                prevSelAdult =  adultCtrl.options[adultCtrl.options.selectedIndex].value;
                prevSelChild = childCtrl.options[childCtrl.options.selectedIndex].value;
                prevSelInfant = infantCtrl.options[infantCtrl.options.selectedIndex].value;
                prevSelDuration  = durationCtrl.options[durationCtrl.options.selectedIndex].value;  
                prevSelFlight = airportCtrl.options[airportCtrl.options.selectedIndex].value; 
                
                isPageLoaded = true;
                if (showIncompleteBooking==1)
                {
                    DisableParent();
                }
                else
                {
                    EnableParent();
                }
                
                ChangeThePassengerLable();
                
                // Initialize the tray events.
                initializeTrayEvents();
                
               
            }
        break;
        case ddDestinationsId.toLowerCase():
            if(event.toLowerCase() == "onchange")
            {
                var adultCtrl = document.getElementById(ddAdultsId);
                var childCtrl = document.getElementById(ddChildrenId);
                var infantCtrl = document.getElementById(ddInfantsId);
                var durationCtrl = document.getElementById(ddDurationId);
                var airportCtrl = document.getElementById(ddAirportsId);
                var destCtrl = document.getElementById(ddDestinationsId);
            
                if (isLoadEvent == false)
                {
                    prevSelAdult = adultCtrl.options[adultCtrl.options.selectedIndex].value;
                    prevSelAdult = parseInt(prevSelAdult); 
                    prevSelChild = childCtrl.options[childCtrl.options.selectedIndex].value;
                    prevSelInfant = infantCtrl.options[infantCtrl.options.selectedIndex].value;  
                    prevSelDuration  = durationCtrl.options[durationCtrl.options.selectedIndex].value;  
                    prevSelFlight = airportCtrl.options[airportCtrl.options.selectedIndex].value; 
                    duration = prevSelDuration ;
                }
                
                ClearDropDown(ddDurationId);
                ClearDropDown(ddAdultsId);
                ClearDropDown(ddChildrenId);
                ClearDropDown(ddInfantsId);
                ClearDropDown(ddAirportsId);
                                                                 
                ds_shChanged(hiddenDateId, datePickerId);
                fillDuration(ddDurationId);
                fillAdultPax(ddAdultsId, arrMaxPax, destCtrl.options[destCtrl.options.selectedIndex].value);
                fillChildPax(ddChildrenId, arrMaxPax, destCtrl.options[destCtrl.options.selectedIndex].value);
                fillInfantPax(ddInfantsId, arrMaxPax, destCtrl.options[destCtrl.options.selectedIndex].value);
                fillAirports(ddAirportsId, arrAirports, destCtrl.options[destCtrl.options.selectedIndex].value);
                
                if (isLoadEvent == false)
                {
                    storeSearchTilePreviousValues();
                }
                else
                {
                   SetDropDownDefault(totAdults, ddAdultsId);
                   SetDropDownDefault(totChildren, ddChildrenId);
                   SetDropDownDefault(totInfants, ddInfantsId);
                   SetDropDownDefault(duration, ddDurationId);
                   SetDropDownDefault(depAirport, ddAirportsId);
                }
            }
        break;
        case "ddavailability":
            if(event.toLowerCase() == "onchange")
            {
                ClearDropDown(ddDurationId);
            }
        break;
        case imgsearchId.toLowerCase():
            if(event.toLowerCase()=="click")
            {
                if (ValidateOccupancy()== false)
                {
                    return;
                }
                if (ValidateDate()== false)
                {
                    return;
                }
                if (ValidateAirport()== false)
                {
                    return;
                }
                
                if(!isCentre)
                {
                    var strUrl="http://" + serverName;
                }
                else
                {
                    var strUrl="http://" + serverName + "/" + ReturnVirDirectory(gSTR_CENTRE_CODE)
                }
                //3891- Searchresults page URL Change
                strUrl+="/searchresults.aspx";                
                
                setHiddenFieldValues();
                CreateXML();
                document.forms[0].action=strUrl;
                document.forms[0].method="post";
                document.forms[0].submit();
            }
            if(event.toLowerCase() == "mouseover")
            {
                swapImage(document.getElementById(imgsearchOverId), document.getElementById(imgsearchId));
            }
            if(event.toLowerCase() == "mouseout")
            {
                swapImage(document.getElementById(imgsearchId), document.getElementById(imgsearchOverId));
            }            
        break;
        case ddAirportsId.toLowerCase():
            ChangeThePassengerLable();
            
        break;
        case imgSearchVillaId.toLowerCase():
            if(event.toLowerCase() == "click")
            {
                var strUrl="";
                if(Trim(document.forms[0].txtVilla.value)=="")
                {
                    var objAnchor=getAnchorPosition('txtVilla');
                    
                    try
                    {
                        if (isASP == "1")
                        {                            
                            showAlert("Incorrect Input", "Please enter a valid villa name.", "OK", 250, 90, objAnchor,'','undefined');
                        }
                        else
                        {
                            showAlertIFrame("Incorrect Input", "Please enter a valid villa name.", "OK", 250, 90, objAnchor,'','undefined');
                        }
                    }
                    catch(e)        
                    {
                        showAlertIFrame("Incorrect Input", "Please enter a valid villa name.", "OK", 250, 90, objAnchor,'','undefined');
                    }    
                }
                else
                {
                    try
                    {
                        if(document.forms[0].selVillas.selectedIndex != -1)
                        { 
                            strUrl= getUrl(document.forms[0].selVillas.options[document.forms[0].selVillas.options.selectedIndex].value, arrVillas);
                            strUrl = strUrl + "code/villas/villaindividual.asp?id=" + document.forms[0].selVillas.options[document.forms[0].selVillas.options.selectedIndex].value;
                            window.open(strUrl, "_parent");
                        }
                        else 
                        {
                             strUrl = getUrl(document.forms[0].txtVilla.value, arrVillas);
                             if(strUrl.indexOf("http://")>=0)
                             {   
                                //3871
                               // strUrl = strUrl + "code/villas/villaindividual.asp?id=" + vID;
                                strUrl = strUrl + "code/villas/villaindividual.asp?id=" + document.forms[0].txtVilla.value;
                                window.open(strUrl, "_parent");
                            }
                            else
                            {
                                var objAnchor=getAnchorPosition('txtVilla');
                                try
                                {
                                    if (isASP == "1")
                                    {
                                        showAlert("Incorrect Input", "Please enter a valid villa name.", "OK", 250, 90, objAnchor,'','undefined');
                                    }
                                    else
                                    {
                                        showAlertIFrame("Incorrect Input", "Please enter a valid villa name.", "OK", 250, 90, objAnchor,'','undefined');
                                    }
                                }
                                catch(e)
                                {        
                                    showAlertIFrame("Incorrect Input", "Please enter a valid villa name.", "OK", 250, 90, objAnchor,'','undefined');
                                }    
                            } 
                          }
                      }
                      catch(e)
                      {
                        var objAnchor=getAnchorPosition('txtVilla');   
                        try
                        {
                            if (isASP == "1")
                            {
                                showAlert("Incorrect Input", "Please enter a valid villa name.", "OK", 250, 90, objAnchor,'','undefined');
                            }
                            else
                            {
                                showAlertIFrame("Incorrect Input", "Please enter a valid villa name.", "OK", 250, 90, objAnchor,'','undefined');
                            }
                        }
                        catch(e)
                        {        
                            showAlertIFrame("Incorrect Input", "Please enter a valid villa name.", "OK", 250, 90, objAnchor,'','undefined');
                        }    
                    }
                }
            }
            if(event.toLowerCase() == "mouseover")
            {
                swapImage(document.getElementById(imgSearchVillaOverId), document.getElementById(imgSearchVillaId));
            }
            if(event.toLowerCase() == "mouseout")
            {
                swapImage(document.getElementById(imgSearchVillaId), document.getElementById(imgSearchVillaOverId));
            }            
        break;
        case "dvdestination":                       //CLICK OF THE DESTINATION TAB
            if(event.toLowerCase() == "click")
            {
                var obj = document.getElementById(imgDestinationId);
                if(obj == null)
                {
                    show('search1_imgDestination');
                    hide('search1_imgVilla');
                }
                else
                {
                    show(imgDestinationId);
                    hide(imgVillaId);
                }
                hide('villas');
                hide('brochureRequest');
                show('destinations');
            }
            if(event.toLowerCase() == "mouseover")
            {
                SwapImageShowHide(document.getElementById(imgDestinationId), document.getElementById(imgVillaId));
            }
            if(event.toLowerCase() == "mouseout")
            {
                if(document.getElementById('destinations').style.display=="none")swapImage(document.getElementById(imgVillaId), document.getElementById(imgDestinationId));
            }            
        break;
        case "dvvillas":                            //CLICK OF THE VILLAS TAB
            if((event.toLowerCase() == "click") && (arrVillLoaded==true))
            {
                var obj = document.getElementById(imgDestinationId);
                document.forms[0].txtVilla.value="";
                ClearDropDown('selVillas');
                if(obj == null)
                {
                    show(imgVillaId);
                    hide(imgDestinationId);
                }
                else
                {
                    show(imgVillaId);
                    hide(imgDestinationId);
                }
                hide('destinations');
                show('villas');
                show('brochureRequest');
                if (arrVillLoaded == true)
                {
                    document.forms[0].txtVilla.focus(); 
                 }
             }
            if ((event.toLowerCase() == "mouseover") && (arrVillLoaded==true))
            {
                SwapImageShowHide(document.getElementById(imgVillaId), document.getElementById(imgDestinationId));
            }
            if ((event.toLowerCase() == "mouseout") &&(arrVillLoaded == true))
            {
                if(document.getElementById('villas').style.display=="none")SwapImageShowHide(document.getElementById(imgDestinationId), document.getElementById(imgVillaId));
            }                       
        break;
        case helpImgId.toLowerCase():
            if(event.toLowerCase() == "onmouseover")
            {
                showLayer('dvHelp', 'search_closeHelp');            //FUNCTION DEFINED IN SUPPORT.JS
                swapImage(document.getElementById(helpImgOverId), document.getElementById(helpImgId));
            }
            if(event.toLowerCase() == "onmouseout")
            {
                hideLayer('dvHelp');                                //FUNCTION DEFINED IN SUPPORT.JS
                swapImage(document.getElementById(helpImgId), document.getElementById(helpImgOverId));
            }
        break;
        case calIconId.toLowerCase():
            if(event.toLowerCase() == "mouseover")
            {
                swapImage(document.getElementById(calIconOverId), document.getElementById(calIconId));
            }
            if(event.toLowerCase() == "mouseout")
            {
                swapImage(document.getElementById(calIconId), document.getElementById(calIconOverId));
            }           
        break;
        case "enews1":
            if(event.toLowerCase() == "mouseover")
            {
                swapImage(document.getElementById('eNews1On'), document.getElementById('eNews1'));
            }
            if(event.toLowerCase() == "mouseout")
            {
                swapImage(document.getElementById('eNews1'), document.getElementById('eNews1On'));
            }
        break;
        
        case "enews":
            if(event.toLowerCase() == "mouseover")
            {
                swapImage(document.getElementById('eNews2On'), document.getElementById('eNews2'));
            }
            if(event.toLowerCase() == "mouseout")
            {
                swapImage(document.getElementById('eNews2'), document.getElementById('enews2On'));
            }
           
        break;
        case "eco":
            if(event.toLowerCase() == "mouseover")
            {
                swapImage(document.getElementById('ecoOn'), document.getElementById('eco'));
            }
            if(event.toLowerCase() == "mouseout")
            {
                swapImage(document.getElementById('eco'), document.getElementById('ecoOn'));
            }
        break;
        case "atol":
            if(event.toLowerCase() == "mouseover")
            {
                swapImage(document.getElementById('atolOn'), document.getElementById('atol'));
            }
            if(event.toLowerCase() == "mouseout")
            {
                swapImage(document.getElementById('atol'), document.getElementById('atolOn'));
            }            
        break;  
        case "imgyearsestablish":
            if(event.toLowerCase() == "mouseover")
            {
                SwapImageShowHide(document.getElementById("imgYearsEstablishOn"), document.getElementById("imgYearsEstablish"));
            }
            if(event.toLowerCase() == "mouseout")
            {
                SwapImageShowHide(document.getElementById("imgYearsEstablish"), document.getElementById("imgYearsEstablishOn"));
            }            
        break;  
        case "slidea":
            var objDiv = document.getElementById('comfort');
            var divHeight = objDiv.style.height.replace("px",""); 
            
            //Big DIV
            if( parseInt(divHeight) > 120)
            {
                if(event.toLowerCase() == "mouseover")
                {
                    document.getElementById('SlideA').src = gSTR_COMMON_IMG_PATH+"common/Slider_BlueBigON.gif";
                }
                if(event.toLowerCase() == "mouseout")
                {
                    document.getElementById('SlideA').src = gSTR_COMMON_IMG_PATH+"common/Slider_BlueBigOFF.gif";
                } 
            }
            else    //Small Div
            {
                if(event.toLowerCase() == "mouseover")
                {
                    swapImage(document.getElementById('SlideAOn'), document.getElementById('SlideA'));
                }
                if(event.toLowerCase() == "mouseout")
                {
                    swapImage(document.getElementById('SlideA'), document.getElementById('SlideAOn'));
                }
            }    
        break;
        case "slideb":
            var objDiv = document.getElementById('Relax');
            var divHeight = objDiv.style.height.replace("px",""); 
            //Big DIV
            if( parseInt(divHeight) > 120)
            {
                if(event.toLowerCase() == "mouseover")
                {
                    document.getElementById('SlideB').src = gSTR_COMMON_IMG_PATH+"/common/Slider_YellowBigON.gif";
                }
                if(event.toLowerCase() == "mouseout")
                {
                    document.getElementById('SlideB').src = gSTR_COMMON_IMG_PATH+"/common/Slider_YellowBigOFF.gif";
                } 
            }
            else    //Small Div
            {
                if(event.toLowerCase() == "mouseover")
                {
                    swapImage(document.getElementById('SlideBOn'), document.getElementById('SlideB'));
                }
                if(event.toLowerCase() == "mouseout")
                {
                    swapImage(document.getElementById('SlideB'), document.getElementById('SlideBOn'));
                }
            }            
        break;
        case "slidec":
            var objDiv = document.getElementById('peace');
            var divHeight = objDiv.style.height.replace("px",""); 
            //Big DIV
            if( parseInt(divHeight) > 120)
            {
                if(event.toLowerCase() == "mouseover")
                {
                    document.getElementById('SlideC').src = gSTR_COMMON_IMG_PATH+"/common/Slider_YellowBigON.gif";
                }
                if(event.toLowerCase() == "mouseout")
                {
                    document.getElementById('SlideC').src = gSTR_COMMON_IMG_PATH+"/common/Slider_YellowBigOFF.gif";
                } 
            }
            else    //Small Div
            {
                if(event.toLowerCase() == "mouseover")
                {
                    swapImage(document.getElementById('SlideCOn'), document.getElementById('SlideC'));
                }
                if(event.toLowerCase() == "mouseout")
                {
                    swapImage(document.getElementById('SlideC'), document.getElementById('SlideCOn'));
                }
            }                
        break;
        case "slided":
            var objDiv = document.getElementById('villa');
            var divHeight = objDiv.style.height.replace("px",""); 
            //Big DIV
            if( parseInt(divHeight) > 120)
            {
                if(event.toLowerCase() == "mouseover")
                {
                    document.getElementById('SlideD').src = gSTR_COMMON_IMG_PATH+"/common/Slider_BlueBigON.gif";
                }
                if(event.toLowerCase() == "mouseout")
                {
                    document.getElementById('SlideD').src = gSTR_COMMON_IMG_PATH+"/common/Slider_BlueBigOFF.gif";
                } 
            }
            else    //Small Div
            {
                if(event.toLowerCase() == "mouseover")
                {
                    swapImage(document.getElementById('SlideDOn'), document.getElementById('SlideD'));
                }
                if(event.toLowerCase() == "mouseout")
                {
                    swapImage(document.getElementById('SlideD'), document.getElementById('SlideDOn'));
                } 
            }           
        break;
        case "whychoose":
            if(event.toLowerCase() == "mouseover")
            {
                swapImage(document.getElementById('whychooseOn'), document.getElementById('whychoose'));
            }
            if(event.toLowerCase() == "mouseout")
            {
                swapImage(document.getElementById('whychoose'), document.getElementById('whychooseOn'));
            }            
        break; 
        case "cmdbrochure":

            if(event.toLowerCase() == "mouseover")
            {
                swapImage(gSTR_COMMON_IMG_PATH+"/common/brochureBullet_on.gif", document.getElementById('cmdBrochure'));
            }
            if(event.toLowerCase() == "mouseout")
            {
                swapImage(gSTR_COMMON_IMG_PATH+"/common/brochureBullet.gif", document.getElementById('cmdBrochure'));
            }           
        break;
        case "brochure":
           
            if(event.toLowerCase() == "mouseover")
            {
               
                SwapImageShowHide(document.getElementById('brochure_On'), document.getElementById('brochure_Off'));
            }
            if(event.toLowerCase() == "mouseout")
            {
               
                SwapImageShowHide(document.getElementById('brochure_Off'), document.getElementById('brochure_On'));
            }           
        break;   
    }
    }
    catch(e)
    {}
}

function ChangeThePassengerLable()
{
    var airportCtrl = document.getElementById(ddAirportsId);
    SelectedFlight = airportCtrl.options[airportCtrl.options.selectedIndex].value; 
    var paxheading = document.getElementById('paxheading');
    if (SelectedFlight  == -1)
    {
        paxheading.innerHTML = '<b>Party Members</b>';
    }
    else
    {
        paxheading.innerHTML = '<b>Passengers</b>';
    }
}

function DeCompressDates()
{
    try
    {
        var jsCenterWiseDates = jsAllCentreDatesCompressed.split("|")
        for (j=0; j<jsCenterWiseDates.length;j++)
        {
                if (jsAllCentreDates == "")
                {
                    jsAllCentreDates = jsAllCentreDates + jsCenterWiseDates[j].split("=")[0] + "=";
                }
                else
                {
                    jsAllCentreDates = jsAllCentreDates + "|" + jsCenterWiseDates[j].split("=")[0] + "=";
                }
                var arrAvailYearsOfVilla  = jsCenterWiseDates[j].split("Y");
			    var arrAvailMonthsOfVilla
			    var arrAvailDatesOfVilla
			    var displayDate, displayYear, displayMonth, displayDay,valueDate
				var thisCentreDates = ""
			    for (var intIndex=0,intOptions=0; intIndex < arrAvailYearsOfVilla.length;intIndex++)
			    {
				    arrAvailMonthsOfVilla=arrAvailYearsOfVilla[intIndex].split("M");
				    if (arrAvailMonthsOfVilla.length>1)
				    {
				        displayYear = arrAvailMonthsOfVilla[0];
				        for (var intMonthIndex=1;intMonthIndex<arrAvailMonthsOfVilla.length; intMonthIndex++ )
				        {
				            arrAvailDatesOfVilla = arrAvailMonthsOfVilla[intMonthIndex].split("D");
				            if (arrAvailDatesOfVilla.length > 1) 
				            {
				                displayMonth = arrAvailDatesOfVilla[0];
				                arrAllAvailDatesOfVilla = arrAvailDatesOfVilla[1].split(",");
				                for (var intDayIndex=0; intDayIndex<arrAllAvailDatesOfVilla.length;intDayIndex++ )
				                {
				                    displayDay = arrAllAvailDatesOfVilla[intDayIndex];
				                    valueDate = displayYear +'-'+ displayMonth  + '-' + displayDay ;
				                    if(thisCentreDates=="")
					                {
						                thisCentreDates = valueDate
					                }
					                else
					                {
						                thisCentreDates = thisCentreDates+","+ valueDate;
					                }
				                }
				            }
				        }
				    }
			    }
				jsAllCentreDates = jsAllCentreDates + thisCentreDates;
        }
    }
    catch(e)
    {
        alert(e);
    }  
}

function GetPostedSearchTileDetails()
{
    var form = document.forms[0];
    totAdults = form.hdn_Adults.value;
    totChildren = form.hdn_Children.value;
    totInfants = form.hdn_Infants.value;
    selectedDestinationCode = Trim(form.hdn_Destinations.value.toLowerCase());
    
    var sType = GetSearchType(selectedDestinationCode);
    if (sType.toLowerCase() == "group")
    {
        searchType = 1;
    }
    else
    {
        searchType = 0;
    } 
    //searchType = (selectedDestinationCode=="any") ? 1:0;

    //DETERMINES THE SEARCH TYPE 1:AD, 0: SD
    var hdateCtrl = document.getElementById(hiddenDateId);
    try {
        curSelectedDate = arrSearchResults[0][22].split(' ');
        curSelectedDate = curSelectedDate[2] + "-" + curSelectedDate[1] + "-" + curSelectedDate[0];
        form.hdn_Date.value = curSelectedDate;
        hdateCtrl.value = curSelectedDate;
        //3696 (modified to show in browser back, also date tab was missing so added the condition for groups
        if(sType.toLowerCase() != "group") 
        {
        form.hdn_Destinations.value = arrSearchResults[0][0];
        selectedDestinationCode = Trim(form.hdn_Destinations.value.toLowerCase());
        }
        ///
    }
    catch (e) {
        hdateCtrl.value = form.hdn_Date.value;
    }
    depDate = form.hdn_Date.value;    
    duration = form.hdn_Weeks.value;
    
    depAirport = form.hdn_DepAirport.value;
    
    if(depAirport.toLowerCase() == "-1")
    {       
        packageType = 0;
    }
    else
    {      
        packageType = 1;
    }
    
    try
    {   
         if (arrSearchResults[0][19]== "--")
         {           
             packageType = 0;
         }
   }
   catch(e)
   {            
             packageType = 1;
   }
    
    if (duration =='' ){duration = 1;}
    if (totAdults =='' ){totAdults = 2;}
    if (totChildren =='' ){totChildren = 1;}
    //if (selectedDestinationCode =='' ){selectedDestinationCode = 'AL';}    
    if(isCentre == false && selectedDestinationCode == '')
    {
        selectedDestinationCode = 'ANY';
    }
    CreateXML();
   
}

//SUPPORT FUNCTIONS CALLED BY THE CONTROLLER FOR THE SEARCH TILE

//FILLS THE DESTINATION DROP DOWN ON THE TILE
//PARAMS: THE DROP DOWN CONTROL NAME, AND THE ARRAY TO BE USED
function fillDestinations(formControlName, arrayObject)
{
    var arr = arrayObject.split("|");
    for(var ctr = 0; ctr <= arr.length -1; ctr++)
    {
        var destination = arr[ctr].split('=') ;
        var optionIsSelected = Trim(gSTR_CENTRE_CODE.toLowerCase())==Trim(destination[0].toLowerCase())?true:false;
        AddOptionsToDrowDown(formControlName, destination[1], destination[0], optionIsSelected);
    }
}


function fillAvailability(formControlName, arrayObject, selectedDestination)
{
//SAVIO REMEBER THAT SELECTED DESTINATIONS COULD ALSO BE A COLLECTION OF CENTER CODES LIKE BALERIC ISLANDS
    var arr = arrayObject;
    for(var ctr = 0; ctr <= arr.length -1; ctr++)
    {
        if(selectedDestination.toLowerCase() != "any")//FILLING AVAILABILITY FOR A SPECIFIC CENTRE
        {
            if(arr[ctr][2].toLowerCase() == selectedDestination.toLowerCase())
            {
                var optionIsSelected = false;
                AddOptionsToDrowDown(formControlName, arr[ctr][0], arr[ctr][0], optionIsSelected);
            }
        }
        else
        {
            var optionIsSelected = false;
            AddOptionsToDrowDown(formControlName, arr[ctr][0], arr[ctr][0], optionIsSelected);
        }
    }
}

function fillDuration(formControlName)
{
    //IMPLEMENTED IN CALENDAR.JS
}
var stp=0;
var extraChildren=0;
function fillAdultPax(formControlName, arrayObject, selectedDestination)
{
    var arr = arrayObject.split('|');
    
    //Getting All Groups and centers
    var arrGroups= js_Groups.split('|');
    var arrGroupCenters;
    arrGroupCenters = '';
    for (i=0; i<arrGroups.length;i++)
    {
        var arrGroup = arrGroups[i].split('=')  ;
        if (arrGroup[0].split("-")[0].toUpperCase() == selectedDestination.toUpperCase())
        {
            arrGroupCenters = arrGroup[1].split(',');
            break;
        }
    }
    
    //For Group
    
    if (arrGroupCenters != '')
    {
        
         for (j=0; j<arrGroupCenters.length;j++)
         {
            for(var ctr = 0; ctr <= arr.length -1; ctr++)
            {
                if(arr[ctr].split('=')[0].toUpperCase() == arrGroupCenters[j].toUpperCase())
                {
                    var tmpstp = arr[ctr].split('=')[1].split('-')[1];
                    if (parseInt(tmpstp)> parseInt(stp))
                    {
                        stp=tmpstp;
                        extraChildren = arr[ctr].split('=')[1].split('-')[2];
                    }
                    break;
                }
            }
         }
         
    }
    //For Centre
    else
    {
        for(var ctr = 0; ctr <= arr.length -1; ctr++)
        {
            if(arr[ctr].split('=')[0].toLowerCase() == selectedDestination.toLowerCase())
            {
                stp = arr[ctr].split('=')[1].split('-')[1];
                extraChildren = arr[ctr].split('=')[1].split('-')[2];
                break;
            }
        }
    }
    buildPaxList(formControlName, stp);
}

function fillChildPax(formControlName, arrayObject, selectedDestination)
{
    buildPaxList(formControlName, stp-2);
    
}

function fillInfantPax(formControlName, arrayObject, selectedDestination)
{
    buildPaxList(formControlName, stp);
}

function buildPaxList(formControlName, totPax)
{
    if (formControlName != ddAdultsId)
    {
        for(var ctr = 0; ctr<=totPax; ctr++)
        {
            var optionIsSelected = false;
            AddOptionsToDrowDown(formControlName, ctr, ctr, optionIsSelected);
        }
    }
    else
    {
        for(var ctr = 1; ctr<=totPax; ctr++)
        {
            var optionIsSelected = false;
            AddOptionsToDrowDown(formControlName, ctr, ctr, optionIsSelected);
        }
    }
}


function fillAirports(formControlName, arrayObject, selectedDestination)
{
    try
    {
        var arrAllAirports = arrayObject.split(',') ;   
        for(var count=0;count<=arrAllAirports.length-1;count++)
        {
            var Airport = arrAllAirports[count].split("-");
            var optionIsSelected = false;
            AddOptionsToDrowDown(formControlName, Airport[1], Airport[0], optionIsSelected);
        }
     }
     catch(e)
     {
        alert("Error Filling Airports");
     }
    
    var optionIsSelected = false;
    AddOptionsToDrowDown(formControlName, "No Flight", "-1", optionIsSelected);
}

function hide(objToHide)
{
    var obj = document.getElementById(objToHide);
    obj.style.display = "none";
    obj.style.visibility = "hidden";
}

function show(objToShow)
{
    var obj = document.getElementById(objToShow);
    obj.style.display = "";
    obj.style.visibility = "visible";
}

function fillVillas(formControlName, arrayObject)
{
    var arr = arrayObject;
    for(var ctr = 0; ctr <= arr.length -1; ctr++)
    {
        var optionIsSelected = false;
        AddOptionsToDrowDown(formControlName, arr[ctr][0] + " (" + getCentreName(arr[ctr][2], arrVillas) + ")", arr[ctr][1], optionIsSelected);
    }
}

function ValidateAirport()
{
    var airportCtrl=document.getElementById(ddAirportsId);;
    if(airportCtrl.options[airportCtrl.selectedIndex].value == 'XXX')
    {
        var objAnchor=getAnchorPosition(ddAirportsId);
        try
        {
            if (isASP == "1")
            {
                showAlert("Incorrect Input", "Please select a valid departure airport.", "OK", 250, 90, objAnchor,'','undefined');
            }
            else
            {
                showAlertIFrame("Incorrect Input", "Please select a valid departure airport.", "OK", 250, 90, objAnchor,'','undefined');
            }
        }
        catch(e)
        {
            showAlertIFrame("Incorrect Input", "Please select a valid departure airport.", "OK", 250, 90, objAnchor,'','undefined');
        }

        airportCtrl.focus();
        return false;
    }
}

function ValidateOccupancy()
{
    var adultCtrl = document.getElementById(ddAdultsId);
    var childCtrl = document.getElementById(ddChildrenId);
    var infantCtrl = document.getElementById(ddInfantsId);
   
    var totAdults = parseInt(adultCtrl.options[adultCtrl.selectedIndex].value); 
    var totChildren = parseInt(childCtrl.options[childCtrl.selectedIndex].value );
    var totInfants = parseInt(infantCtrl.options[infantCtrl.selectedIndex].value);
    
    if((totAdults + totChildren) > (parseInt(stp)+parseInt(extraChildren)))
    {
        var objAnchor=getAnchorPosition(ddAdultsId);
        try
        {
            if (isASP == "1")
            {
                showAlert("Incorrect Input", "You can not select more than " + (parseInt(stp)+parseInt(extraChildren)) + " <br /> members including adults and children.", "OK", 250, 90, objAnchor,'','undefined');
            }
            else {
                showAlertIFrame("Incorrect Input", "You can not select more than " + (parseInt(stp)+parseInt(extraChildren)) + " <br /> members including adults and children.", "OK", 250, 90, objAnchor,'','undefined');
            }
        }
        catch(e)
        {        
            showAlertIFrame("Incorrect Input", "You can not select more than " + (parseInt(stp)+parseInt(extraChildren)) + " <br /> members including adults and children.", "OK", 250, 90, objAnchor,'','undefined');
        }    
        adultCtrl.focus();
        return false;
    }
    
    if( totAdults + totChildren <= 1) {
        // Made Chages for Bug 3737 on select 1 Adult & 1 Infant no alert msg to be shown directly increase pax to 2 adult 1 infant                           
        var selectedIndex = getSelectedIndex(adultCtrl.id, '2');        
        adultCtrl.selectedIndex = selectedIndex;
    }
    
    return true;
}

function GetAllAvailableDatesForCentre(centreCode)
{
    var arrGroups= js_Groups.split('|');
    var arrGroupCenters;
    arrGroupCenters = '';
    for (i=0; i<arrGroups.length;i++)
    {
        var arrGroup = arrGroups[i].split('=')  ;
        if (arrGroup[0].split("-")[0].toUpperCase() == centreCode.toUpperCase())
        {
            arrGroupCenters = arrGroup[1].split(',');
            break;
        }
    }
    
   var jsAllCentreDatesArr = jsAllCentreDates.split("|")
   var strAllCentreDates = '';
  
   if (arrGroupCenters != '') //Getting available dates for centres in a destination group e.g. Balleric Island
    {
            for (j=0; j<arrGroupCenters.length;j++)
            {
                for (i=0; i < jsAllCentreDatesArr.length;i++)
                {
                    if (arrGroupCenters[j].toUpperCase() == jsAllCentreDatesArr[i].split('=')[0].toUpperCase() )
                    {
                        if (strAllCentreDates == '')
                        {
                            strAllCentreDates = jsAllCentreDatesArr[i].split('=')[1];
                        }
                        else
                        {
                            strAllCentreDates = strAllCentreDates + "," + jsAllCentreDatesArr[i].split('=')[1];
                        }
                        //SetStartDateEndDate(jsAllCentreDatesArr[i].split('=')[1]);
                        break;
                    }
                }
            }
    }
    else
    {
        
        if (centreCode == "any") //Getting available dates for all centres
        {
            for (i=0; i<jsAllCentreDatesArr.length;i++)
            {
                if (strAllCentreDates == '')
                {
                    strAllCentreDates = jsAllCentreDatesArr[i].split('=')[1];
                }
                else
                {
                    strAllCentreDates = strAllCentreDates + "," + jsAllCentreDatesArr[i].split('=')[1];
                }
                //SetStartDateEndDate();
            }
        }
        else //Getting available dates for a specific centre
        {
            for (i=0; i<jsAllCentreDatesArr.length;i++) 
            {
                if (centreCode.toUpperCase()== jsAllCentreDatesArr[i].split('=')[0].toUpperCase() )
                {
                    strAllCentreDates = jsAllCentreDatesArr[i].split('=')[1];
                    break;
                }
            }
            //SetStartDateEndDate(jsAllDates);
        }
    }
    
    var arrAllCentreDates;
    arrAllCentreDates = strAllCentreDates.split(",");
    arrAllCentreDates.sort();
    return arrAllCentreDates;
}

function GetPrevNextDates(centreCode, departureDate)
{
    //Get All available dates for the given centre code
    var arrAllCentreDates;
    arrAllCentreDates = GetAllAvailableDatesForCentre(centreCode);
    
    //Define day and month names
    var ds_daynames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 
    var ds_monthnames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

    //Get the no. of tabs to be displayed
    var numDays = nDAYS_DATE_TABS;
    var numDateTabs = (numDays * 2) + 1; 
     
    //Get first and last date in the availability array
    var tempDateParts;
    tempDateParts = arrAllCentreDates[0].split('-');
    var firstDate = new Date(tempDateParts[0], tempDateParts[1]-1, tempDateParts[2]);
    
    tempDateParts = arrAllCentreDates[arrAllCentreDates.length-1].split('-');
    var lastDate = new Date(tempDateParts[0], tempDateParts[1]-1, tempDateParts[2]);
        
    //Get milliseconds in a day. This will be used to calculate date difference
    var one_day=1000*60*60*24;
    
    var strTabDates = '';
   
   var mydate = new Date(departureDate);
    //Getting index of departure date from the availability date array
    var selIndex = -1;
    //var tempDepDateParts = departureDate.split(' ');
    
    var tempDepDate = mydate.getFullYear();
    
    var tempDateHolder = mydate.getMonth()+1;
    
    if (tempDateHolder< 10)
    {
        tempDateHolder = "0" + tempDateHolder;
    }
    tempDepDate = tempDepDate + "-" + tempDateHolder;
    
    tempDateHolder = mydate.getDate();
    
    if (tempDateHolder < 10)
    {
        tempDateHolder = "0" + tempDateHolder;
    }
    tempDepDate = tempDepDate + "-" + tempDateHolder;  
    
    var tempDepDateParts = tempDepDate.split("-");
     
    for(var ctr=0;ctr<arrAllCentreDates.length;ctr++)
    {
        if (tempDepDate == arrAllCentreDates[ctr])
        {
            strTabDates = tempDepDate;
            selIndex = ctr;
            break;
        }
    }
    
    //Getting available dates befor the selected departure date
    var beforeCtr = 0;
    var tempDate;
    var diff;
    var iCtr = -1;
    var strTempDate;
    var index = selIndex-1;
    var strMonth = '';
    var strDate = '';
    var beforeDate;
    
    while (beforeCtr < numDays)
    {
        tempDate = new Date(tempDepDateParts[0], tempDepDateParts[1]-1, tempDepDateParts[2]);
        tempDate.setDate(tempDate.getDate() + iCtr);
        diff = Math.ceil((tempDate.getTime() - firstDate.getTime())/(one_day));
        if (diff >= 0)
        {
            strTempDate = tempDate.getFullYear() + "-";  
            
            strMonth = (tempDate.getMonth()+1) + '';
            strDate = (tempDate.getDate()) + '';
              
            if (strMonth.length == 1)
            {
                strTempDate = strTempDate + "0" + (tempDate.getMonth()+1) + "-";
            }
            else
            {
                strTempDate = strTempDate + (tempDate.getMonth()+1) + "-";
            }
            if (strDate.length == 1)
            {
                strTempDate = strTempDate + "0" + (tempDate.getDate());
            }
            else
            {
                strTempDate = strTempDate + (tempDate.getDate());
            }
                        
            for(var ctr=index ;ctr>=0;ctr--)
            {
                if (strTempDate == arrAllCentreDates[ctr])
                {
                    if (strTabDates == '')
                    {
                        strTabDates = arrAllCentreDates[ctr];
                    }
                    else
                    {
                        strTabDates = arrAllCentreDates[ctr] + "|" + strTabDates;
                    }
                    
                    if (beforeCtr == 0)
                    {
                        beforeDate = tempDate;
                    }
                    
                    beforeCtr++;
                    index = ctr-1;
                    break;
                }
            }                    
        }
        else
        {
            break;
        }
        
        if (index < 0)
        {
            break;
        }
          
        iCtr-- ;
    }
    
    //Getting available dates after the selected departure date
    var afterCtr = 0;
    iCtr = 1;
    index = selIndex + 1;
    var afterDate;
    while (afterCtr < numDays)
    {
        tempDate = new Date(tempDepDateParts[0], tempDepDateParts[1]-1, tempDepDateParts[2]);
        tempDate.setDate(tempDate.getDate() + iCtr);
        
        if (afterCtr == 0)
        {
            afterDate = tempDate;
        }
        
        diff = Math.ceil((lastDate.getTime() - tempDate.getTime())/(one_day));
        if (diff >= 0)
        {
            //strTempDate = tempDate.getFullYear() + "-" + (tempDate.getMonth()+1) + "-" + tempDate.getDate();
            strTempDate = tempDate.getFullYear() + "-";   
            strMonth = (tempDate.getMonth()+1) + '';
            strDate = (tempDate.getDate()) + '';
            
            if (strMonth.length == 1)
            {
                strTempDate = strTempDate + "0" + (tempDate.getMonth()+1) + "-";
            }
            else
            {
                strTempDate = strTempDate + (tempDate.getMonth()+1) + "-";
            }
            if (strDate.length == 1)
            {
                strTempDate = strTempDate + "0" + (tempDate.getDate());
            }
            else
            {
                strTempDate = strTempDate + (tempDate.getDate());
            }
            
            for(var ctr=index;ctr<arrAllCentreDates.length;ctr++)
            {
                if (strTempDate == arrAllCentreDates[ctr])
                {
                    if (strTabDates == '')
                    {
                        strTabDates = arrAllCentreDates[ctr];
                    }
                    else
                    {
                        strTabDates = strTabDates + "|" +  arrAllCentreDates[ctr];
                    }
                    afterCtr++;
                    index = ctr + 1;
                    break;
                }
            }                    
            if (index >= arrAllCentreDates.length)
            {
                break;
            }
        }
        else
        {
            break;
        }
        iCtr++ ;
    } 
   
    //Display the date tabs
    var arrTabDates;
    arrTabDates = strTabDates.split('|');
    return arrTabDates;
}
function CreateXML()	
{
    
    var forms=document.forms[0];
    var pkType=forms.hdn_DepAirport.value==-1?"VO":"PKG";
    var strXMLOutPut;
    strXMLOutPut='<SearchRequest SearchType="' + pkType + '">';
             
    var arrMonthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var arrDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri','Sat'];
    var dateParts = forms.hdn_Date.value.split('-'); 
    var dtDepDate = new Date(dateParts[0],(dateParts[1]-1),dateParts[2]);       
                
    var strDepDate = dateParts[2] + ' ' + arrMonthNames[dtDepDate.getMonth()]+' '+dateParts[0]+' '+arrDayNames[dtDepDate.getDay()];
    if (dateParts[0].length == 1)
    {
        strDepDate = "0" + strDepDate;
    } 
    
    strXMLOutPut+='<DepartureDate>' + strDepDate + '</DepartureDate>';
    strXMLOutPut+='<Duration>' + parseInt(forms.hdn_Weeks.value) * 7 + '</Duration>';    
    
    var arrGroups= js_Groups.split('|');
    var arrGroupCenters;
    arrGroupCenters = '';
    for (i=0; i<arrGroups.length;i++)
    {
        var arrGroup = arrGroups[i].split('=')  ;
        if (Trim(arrGroup[0].split("-")[0].toUpperCase()) == Trim(forms.hdn_Destinations.value.toUpperCase()))
        {
            arrGroupCenters = arrGroup[1].split(',');
            break;
        }
    }
    var alternateDates;
    if (arrGroupCenters != '')
    {
        alternateDates = GetPrevNextDates(Trim(forms.hdn_Destinations.value.toUpperCase()),strDepDate)
        for (j=0; j<arrGroupCenters.length;j++)
        {
            strXMLOutPut+='<CentreCode>' + arrGroupCenters[j] + '</CentreCode>';
        }
        strXMLOutPut+='<GroupCode>' + forms.hdn_Destinations.value + '</GroupCode>';
    }
    else
    {
        alternateDates=new Array;
        strXMLOutPut+='<CentreCode>' + forms.hdn_Destinations.value + '</CentreCode>';
        strXMLOutPut+='<GroupCode>-</GroupCode>';
    }
        
    strXMLOutPut+='<SourceAirport>' + forms.hdn_DepAirport.value + '</SourceAirport>';
    strXMLOutPut+='<SelectedDestinationCode>' + forms.hdn_Destinations.value.toUpperCase() + '</SelectedDestinationCode>';
    strXMLOutPut+='<Pax>';
    strXMLOutPut+='<Adults>' + forms.hdn_Adults.value + '</Adults>'; 
    strXMLOutPut+='<Childs>' +  forms.hdn_Children.value + '</Childs>'; 
    strXMLOutPut+='<Infants>' + forms.hdn_Infants.value + '</Infants>'; 
    strXMLOutPut+='</Pax>';
    if(alternateDates.length>0)
    {
        strXMLOutPut+='<AlternateDates>';
        for(datecount=0;datecount<alternateDates.length;datecount++)
        {
            strXMLOutPut+='<AltDate>' + alternateDates[datecount] + '</AltDate>'; 
        }
        strXMLOutPut+='</AlternateDates>';
    }
    strXMLOutPut+='</SearchRequest>';
    document.getElementById(hiddenOutputId).value = strXMLOutPut;
    return false;
}

function storeSearchTilePreviousValues()
{
    var objSelect; 
    var strMessage="";
    var alertAdultFlag=false; 
    var alertChildFlag=false;
    var onChangeDestination; 
    var onChangeCenterAdultMaxOccupancy= document.getElementById(ddAdultsId).options.length; 
    var totalPrevOccupancy = parseInt(prevSelAdult)+ parseInt(prevSelChild);
    var totalSelCentreMaxOccupancy  = parseInt(document.getElementById(ddAdultsId).options.length) + 1;
    var onChangeSelAdult = document.getElementById(ddAdultsId).options[document.getElementById(ddAdultsId).options.selectedIndex].value;
    
    if(prevSelInfant > 0)
    {
        totInfants = getSelectedIndex(ddInfantsId,prevSelInfant);
        objSelect = document.getElementById(ddInfantsId);
        
        if(totInfants==0)
        {
            SetDropDownDefault(objSelect.options.length-1, ddInfantsId);
            strMessage = strMessage+" "+ (objSelect.options.length-1) +" Infants";
        }
        else 
        {
            SetDropDownDefault(prevSelInfant, ddInfantsId);
        } 
    }
    else
    {
       SetDropDownDefault(0, ddInfantsId);
    }  
    
    SetDropDownDefault(prevSelFlight, ddAirportsId);
    onChangeDestination =document.getElementById(ddDestinationsId).options[document.getElementById(ddDestinationsId).options.selectedIndex].text;
    var objAnchor=getAnchorPosition(ddAdultsId);
    if(totalPrevOccupancy > totalSelCentreMaxOccupancy)
    {
        SetDropDownDefault(onChangeCenterAdultMaxOccupancy, ddAdultsId);
        SetDropDownDefault(1, ddChildrenId);
        var text = "Our largest villa in "+onChangeDestination+" has a maximum occupancy of "+onChangeCenterAdultMaxOccupancy +" adults plus 1 child and it looks as if your party size is greater than this. So, please try searching for villas large enough to accommodate all of your party across ALL of our destinations or, if you prefer, continue with your search for a "+ onChangeDestination+" villa that will accommodate "+onChangeCenterAdultMaxOccupancy+" adults plus 1 child and our reservations staff will be happy to help you find a suitable additional villa to accommodate the remaining party members."
        
        try
        {
            if (isASP == "1")
            {
                showAlert("Incorrect Input", text , "OK", 300, 200,objAnchor,'','undefined');
            }
            else
            {
                showAlertIFrame("Incorrect Input", text, "OK", 300, 200, objAnchor,'','undefined');
            }
        }
        catch(e)
        {        
            showAlertIFrame("Incorrect Input", text, "OK", 300, 200, objAnchor,'','undefined');
        }    
    }
    else
    {
        SetDropDownDefault(prevSelAdult, ddAdultsId);
        SetDropDownDefault(prevSelChild, ddChildrenId);
    }
}

function setHiddenFieldValues()
{
  var form = document.forms[0];
    var adultCtrl = document.getElementById(ddAdultsId);
    var childCtrl = document.getElementById(ddChildrenId);
    var infantCtrl = document.getElementById(ddInfantsId);
    var durationCtrl = document.getElementById(ddDurationId);
    var airportCtrl = document.getElementById(ddAirportsId);
    var destCtrl = document.getElementById(ddDestinationsId);
    var dateCtrl = document.getElementById(datePickerId);
    var hiddenDateCtrl = document.getElementById(hiddenDateId);
  
  form.hdn_Adults.value = adultCtrl.options[adultCtrl.selectedIndex].value;
  form.hdn_Children.value = childCtrl.options[childCtrl.selectedIndex].value;
  form.hdn_Infants.value = infantCtrl.options[infantCtrl.selectedIndex].value;
  form.hdn_Destinations.value = destCtrl.options[destCtrl.selectedIndex].value;
  
  var dateParts = dateCtrl.value.split(' ');

  if (dateParts[0] < 10)
  {
    dateParts[0]= "0"+dateParts[0];
  }

  // Get the numeric value of the month from the selected date.
  var selectedDate = new Date(dateParts[0] + ' ' + dateParts[1] + ' ' + dateParts[2]);
  dateParts[1] = selectedDate.getMonth() + 1;
  if (dateParts[1] < 10)
  {
    dateParts[1]= "0" + dateParts[1];
  }
  
  form.hdn_Date.value = dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0];
  form.hdn_Weeks.value = durationCtrl.options[durationCtrl.selectedIndex].value;
  form.hdn_DepAirport.value = airportCtrl.options[airportCtrl.selectedIndex].value;
  hiddenDateCtrl.value = form.hdn_Date.value;
}