﻿
/*CONST*/var numAccomMessages = 5;
var accom_message='';

var accom_messages = new Array(numAccomMessages);
accom_messages[0] = 'This destination is invalid. Please re-enter.';
accom_messages[1] = 'This is a required field. Please enter a destination.';
accom_messages[2] = 'The check-in date you have entered has already passed. Please enter a new check-in date.';
accom_messages[3] = 'The date entered is invalid';
accom_messages[4] = 'Each room must have at least one adult occupant.'// <A class="error redText" target="_blank" href="http://thomascooknew.custhelp.com/cgi-bin/thomascooknew.cfg/php/enduser/std_adp.php?p_faqid=181&p_created=1132909608&p_sid=NstpJHJi&p_lva=154&p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTMmcF9wcm9kcz0wJnBfY2F0cz0mcF9wdj0mcF9jdj0mcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1vbmUgYWR1bHQgcGVyIGNoaWxk&p_li=&p_topview=1">Click here</A> for more information.';
accom_messages[5] = 'There is a maximum of 9 people per booking.'
accom_messages[6] = 'There must be at least 1 adult for each infant.'
function InitialiseAccomSearchForm(maxChildAge) {


  var textOverrides = null;
  
  InitialiseNumericDropdown('RMS', 1, 3, 1, null);

  InitialiseNumericDropdown('RM1A', 1, 9, 2, null);  
  InitialiseNumericDropdown('RM1C', 0, 6, 0, null);

  InitialiseNumericDropdown('RM2A', 1, 9, 1, null);  
  InitialiseNumericDropdown('RM2C', 0, 6, 0, null);

  InitialiseNumericDropdown('RM3A', 1, 9, 1, null);  
  InitialiseNumericDropdown('RM3C', 0, 6, 0, null);

  textOverrides = new Array(1);
  textOverrides[1] = 'under 2';
//Init child ages
  for(var rm=1;rm<=3;rm++)
  {
    for(var ch=1;ch<=6;ch++)
    {
      InitialiseNumericDropdown('RM'+rm+'C'+ch, 1, maxChildAge, 0, textOverrides);
    }
  }

  NumberOfRoomsOnChangeHandler(GetElementById('RMS'));       

    restoreAccomValues();

if(GetCookie('uxHotelName') != null && GetCookie('uxHotelName') != "")
{
    $('uxHotelName').value = GetCookie('uxHotelName');
    $('uiSearchHotelName').style.display="block";
    $('uxSearchFormControl_uxHotelNameSelect').checked=true;
}

uxSearchFormControl_uxSearchFormPaxRoomMixControl_toggleRoomFields($('RMS'));
uxSearchFormControl_uxSearchFormPaxRoomMixControl_toggleRoomChildFields($('RM1C'),1);
uxSearchFormControl_uxSearchFormPaxRoomMixControl_toggleRoomChildFields($('RM2C'),2);
uxSearchFormControl_uxSearchFormPaxRoomMixControl_toggleRoomChildFields($('RM3C'),3);       

document.getElementById('DTN_TEXT').focus();        
    
}

function NumberOfRoomsOnChangeHandler(thisControl) {

  var value = null;
  var elementId = null;  
  var uiRoomContainer = null;
  

  if (thisControl != null) {

    for (var i = 2; i <= 3; i ++) {
      value = '' + i;
      elementId = '' + 'uiRoom' + value + 'Container';
      uiRoomContainer = GetElementById(elementId);
      if (uiRoomContainer != null) {
        if (i <= thisControl.value) {
          uiRoomContainer.style.display='';
          //Find the Adult dropdown and change to 1
          var adultDrop = null;
          adultDrop = $('' + 'RM' + value + 'A');
          if (adultDrop != null && adultDrop !='undefined')
          {
            if (adultDrop.value == '')
            {
                adultDrop.value = 1;
            }
          }
          
        } else {
          uiRoomContainer.style.display='none';
        }
      } else {
        alert('NumberOfRoomsOnChangeHandler: Could not find room container with and id of <' + elementId + '>!');
        return null;   
      }
    }      
  } else {
    alert('NumberOfRoomsOnChangeHandler: Control supplied to function was <null>!');
    return null;    
  }

}

function NumberOfChildrenOnChangeHandler(thisControl) {

  var value = null;
  var elementId = null;
  var roomNumber = null;
  var uiRoomChildContainer = null;

  if (thisControl != null) {

    try {
      roomNumber = thisControl.id.substr(2,1)
    } catch(e) {
      alert('NumberOfChildrenOnChangeHandler: The id of the supplied control is not in the expected format!');
    }

    for (var i = 1; i <= 6; i ++) {
      value = '' + i;
      elementId = '' + 'uiRoom' + roomNumber + 'Child' + value + 'Container';
      uiRoomChildContainer = GetElementById(elementId);
      if (uiRoomChildContainer != null) {
        if (i <= thisControl.value) {
          uiRoomChildContainer.style.display='';
          $('RM' + roomNumber + 'C' + value).selectedIndex = 0;
        } else {
          uiRoomChildContainer.style.display='none';
          $('RM' + roomNumber + 'C' + value).selectedIndex = null;
        }        
      } else {
        alert('NumberOfChildrenOnChangeHandler: Could not find room/child container with and id of <' + elementId + '>!');
        return null;   
      }
    }

  } else {
    alert('NumberOfChildrenOnChangeHandler: Control supplied to function was <null>!');
    return null;    
  }

}

function durationOnChangehandler(obj)
{
    var duration = parseInt(obj.value);
    if( isNaN(duration) || (obj.value.indexOf('-') > -1))
    {
        duration = 0;
        document.getElementById("CheckOutLabel").innerHTML = "";
        $('COLabel').style.visibility = 'hidden';
    } 
    else
    {
        $('COLabel').style.visibility = 'visible';
        setCheckOut(duration);
    }
}

function isMethodType(s) 
{ 
    return (s == "function" || s == "object"); 
} 

function getNextControl(obj) 
{ 
    if (obj) 
    { 
        while ((obj = obj.nextSibling)) 
        { 
            if (isMethodType(typeof obj.focus) && /input|button|select/.test(obj.tagName.toLowerCase()) 
                && !obj.style.visibility=='hidden' && !obj.style.display=='none' && !obj.disabled==true) 
            { 
                return obj; 
            } 
            else if (isMethodType(typeof obj.focus) && /input|button|select/.test(obj.tagName.toLowerCase()) 
                && !obj.style.visibility=='hidden' && !obj.style.display=='none' && !obj.disabled==true) 
            { 
                return obj; 
            } 
        } 
    } 

    return {focus: function() {}}; 
}

function setCheckOut(duration)
{
    var d = new Date();
    var d2 = new Date();
    var day;
    var month;
    var year;
    var Day;
    var Days = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
    var Months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
    
    if (!isValidDate(document.getElementById('DepartureDate').value))
    {
         document.getElementById("CheckOutLabel").innerHTML = '';
         document.getElementById("CO").value = '';
    }
    else
    {
        var deptDate = document.getElementById('DepartureDate').value.split('/');
        day = deptDate[0];
        month = deptDate[1];
        year = deptDate[2];
        d.setDate(15);
        d.setMonth(month-1);
        d.setFullYear(year);
        d.setDate(day);
        var d2 = d.add("d", duration);
        if(d2.getDate().toString().length < 2)
        {
            Day = "0" + d2.getDate();
        }
        else
        {
            Day = d2.getDate();
        }

        document.getElementById("CheckOutLabel").innerHTML = (Days[d2.getDay()] + " " + Day + " " + Months[d2.getMonth()] + " " + d2.getFullYear() );   
        document.getElementById("CO").value = (Days[d2.getDay()] + " " + Day + " " + Months[d2.getMonth()] + " " + d2.getFullYear() );   
     }
}
function validateAccomSearchForm()
{
 
    $('dtn_spacer').innerHTML = '';
    $('dtn_spacer').style.display = 'none';
    $('date_spacer').innerHTML = '';
    $('date_spacer').style.display='none';
    $('pax_spacer').innerHTML = '';
    $('pax_spacer').style.display = 'none';
   
    var valid = true;
    
    if (typeof(validateDestinationBlank) == 'function')
    { 
        if (!validateDestinationBlank())
        {
            accom_message = accom_messages[1];
            var msgDiv = $('dtn_spacer');
            valid = false;
        }
    }
    if (valid && typeof(validateDestinationBlank) == 'function')
    {
        if (!validateDestinationMatch())
        {
            accom_message = accom_messages[0];
            var msgDiv = $('dtn_spacer');
            valid = false;
        }
    }
    if (valid && !isValidDate($("DepartureDate").value))
    {      
        accom_message = accom_messages[3];
        var msgDiv = $('date_spacer');
        valid = false;
    }
    if (valid && typeof(validateDepartureDate) == 'function')
    {
        if(!validateDepartureDate())
        {
            accom_message = accom_messages[2];
            var msgDiv = $('date_spacer');
            valid = false;
        }
    }
    if (valid && typeof(validateAccomRoom) == 'function')
    {
        if(!validateAccomRoom(1) || !validateAccomRoom(2) || !validateAccomRoom(3))
        {
            //Accom_message set in validateroom
            //var message = accom_messages[4];
            var msgDiv = $('pax_spacer');
            valid = false;
        }
    
    }
    
    if(!valid)
    {
        var objDiv = document.createElement("DIV");
         //Show the msgDiv
        msgDiv.style.display = 'block';
        
        if(msgDiv.childNodes.length == 0 || (browserType == "Firefox" && msgDiv.childNodes.length == 1))
        {
            objDiv.innerHTML = accom_message;
            objDiv.style.display = 'block';
            objDiv.style.fontSize = '9pt';
            objDiv.style.color = 'red';
            msgDiv.insertAdjacentElement("beforeEnd", objDiv); 
        }
        else
        {
            msgDiv.childNodes[0].innerHTML = accom_message;
        }
        return false;
    }
    storeAccomValues();
}


function validateDestinationBlank()
{
return !($('DTN').value == '' || $('DTN_TEXT').value == '');
}

function validateDestinationMatch()
{
return !($('DTN').value == '' && $('DTN_TEXT').value != '');
}

function validateDepartureDate()
{
    if($("DepartureDate").value != '')
    {
        var deptdate = $("DepartureDate").value;
        dateArray = deptdate.split("/");
        day = dateArray[0];
        month = dateArray[1];
        year = dateArray[2];
        if(year.toString().length == 2)
        {
            year = '20' + year;
        }
        var departureDate = new Date();
        departureDate.setFullYear(year);	        
        departureDate.setDate(day);
        departureDate.setMonth((month-1));
        
        var deptDay = departureDate.getDate().toString();
        var deptMonth = (departureDate.getMonth()+1).toString();
        var deptYear =  departureDate.getFullYear().toString();
        if(deptDay.toString().length == 1)
        {
            deptDay = '0' + deptDay;
        }
        
        if(deptMonth.toString().length == 1)
        {
            deptMonth = '0' + deptMonth;
        } 
        var Date1 = deptDay + '/' + deptMonth + '/' + deptYear;
        var curDate = new Date();        
        var nDay = curDate.getDate().toString();
        var nMonth = (curDate.getMonth()+1).toString();
        
        if(nDay.toString().length == 1)
        {
            nDay = '0' + nDay;
        }
        
        if(nMonth.toString().length == 1)
        {
            nMonth = '0' + nMonth;
        }  
        var sDate = nDay + '/' + nMonth + '/' + curDate.getFullYear().toString(); 
        curDate.DateDiff({interval:"d",date1:sDate,date2:Date1,delimiter:"/"});
        return !(curDate.difference <= 0); // date selected is prior to 2 days hence
    }
}

function storeAccomValues()
{
  var value = {
    CPG  : $('CPG').value,
    PRP  : $('PRP').value, 
    LTP  : $('LTP').value,
    DTN_TEXT    : $('DTN_TEXT').value,
    DTN         : $('DTN').value,
    DD          : $('DepartureDate').value,
    DG          : $('DG').value,
    CO          : $('CO').value,
    RMS         : $('RMS').value,
    RM1A        : $('RM1A').value,
    RM1C        : $('RM1C').value,
    RM2A        : $('RM2A').value,
    RM2C        : $('RM2C').value,
    RM3A        : $('RM3A').value,    
    RM3C        : $('RM3C').value,
    RM1C1       : $('RM1C1').value,
    RM1C2       : $('RM1C2').value,
    RM1C3       : $('RM1C3').value,
    RM1C4       : $('RM1C4').value,
    RM1C5       : $('RM1C5').value,
    RM1C6       : $('RM1C6').value,
    RM2C1       : $('RM2C1').value,
    RM2C2       : $('RM2C2').value,
    RM2C3       : $('RM2C3').value,
    RM2C4       : $('RM2C4').value,
    RM2C5       : $('RM2C5').value,
    RM2C6       : $('RM2C6').value,
    RM3C1       : $('RM3C1').value,
    RM3C2       : $('RM3C2').value,
    RM3C3       : $('RM3C3').value,
    RM3C4       : $('RM3C4').value,
    RM3C5       : $('RM3C5').value,
    RM3C6       : $('RM3C6').value,   
    SR          : $('SR').value,
    BDG         : $('BDG').value   
  };
  subcookiejar.bake('accomParams', value);
  if($('uxSearchFormControl_uxHotelNameSelect').checked)
  {
    SetCookie( 'uxHotelName', $('uxHotelName').value );
  }else {SetCookie( 'uxHotelName',"");}   
}

function restoreAccomValues()
{
    // Also check the cookie setting code in integrationEP
    //if(document.readyState == 'complete')
    //{         
      var value;
        restoreAccomValue('accomParams','CPG');
        restoreAccomValue('accomParams','PRP');
        restoreAccomValue('accomParams','LTP');
        restoreAccomValue('accomParams','DTN_TEXT');
        restoreAccomValue('accomParams','DTN');
        
        value = subcookiejar.fetch('accomParams','DD');
        if(value != null && value != "" )
        {
            if($('DepartureDate') != null)
            {
                $('DepartureDate').value = value;
                document.getElementById('DepartureDate_txtDateLabel').innerHTML = getTheDay($('DepartureDate').value);
            }
        }
        else
        {
             if($('DepartureDate') != null)
            {
                var nDate = new Date();
                var nMonth;
                var nDay;
                nDate.setDate(nDate.getDate()+3)
                nDay = nDate.getDate(); 
                if(nDay.toString().length == 1)
                {
                    nDay = '0' + nDay;
                }
                nMonth = (nDate.getMonth()+1)
                if(nMonth.toString().length == 1)
                {
                    nMonth = '0' + nMonth;
                }
                var oDate = nDay + '/' + nMonth + '/' + nDate.getFullYear();
                var sDate = nDay.toString() + '/' + nMonth.toString() + '/' + nDate.getFullYear().toString();
                $('DepartureDate').value = oDate;
                document.getElementById('DepartureDate_txtDateLabel').innerHTML = getTheDay(sDate);
            }
        }
        if(! restoreAccomValue('accomParams','DG'))
        {
            $('DG').item(6).selected=true;
        }
        restoreAccomValue('accomParams','RMS');
        if(! restoreAccomValue('accomParams','RM1A'))
        {
            $('RM1A').value = '2';
        }       
        for(var rm=1;rm<=3;rm++)
        {
        restoreAccomValue('accomParams','RM'+rm+'A');
        restoreAccomValue('accomParams','RM'+rm+'S');
        restoreAccomValue('accomParams','RM'+rm+'C');
          for(var ch=1;ch<=6;ch++)
          {
            restoreAccomValue('accomParams','RM'+rm+'C'+ch)
          }
        }
        if(! restoreAccomValue('accomParams','SR'))        
        {
            $('SR').value = 'All star ratings';
        }
        value = subcookiejar.fetch('accomParams','BDG');
        if(value != null && value != "" && value !="All budgets" ) {
            var re = new RegExp(value.charAt(0), "g");
            if (value.charAt(0) == 'U') {
                re = new RegExp(value.charAt(6), "g");
            }
            value=value.replace(re,"");
            $('BDG').value=value;
           // $('BDG').value = value.replace(/Â/g,"");
        }
        else
        {
            $('BDG').value = 'All budgets';
        }
        value = subcookiejar.fetch('accomParams','CO');
        if(value != null && value != "" )
        {
            //Set label and hidden field
            $('CO').value = value;
            $('CheckOutLabel').innerHTML = value;
        }
        else
        {
            durationOnChangehandler($('DG'));
        }
}
function restoreAccomValue(container,name)
{
    var value = subcookiejar.fetch(container,name);
    if(value != null && value != "" )
    {
        $(name).value = value;
        return true;
    }
    return false;
}

function validateAccomRoom(rmNum)
{
    if (rmNum == 1 )
    {
        partySize = 0;
    }
    if($('RMS').value > (rmNum-1))
    {
        var roomAdults = parseInt($('RM'+rmNum+'A').value) ;
        var roomChildren = parseInt($('RM'+rmNum+'C').value);
        var roomInfants = 0;
        partySize += roomAdults + roomChildren;
        for(var i=0; i<roomChildren; i++)
        {
            if($('RM'+rmNum+'C'+(i+1)).value == '1')
            {
                roomInfants++;
            }
        }
         if  ( roomAdults == 0 )
        {
            accom_message = messages[0];
            return false;
        }       
        // each room must have at least one adult
        if  ( partySize > 9 )
        {
            accom_message = accom_messages[5];
            return false;
        }
        if(roomAdults<roomInfants)
        {
            accom_message = accom_messages[6];
            return false;
        }
        // does every child have a child age defined 
        for(var child=1;child<roomChildren+1;child++)
        {
          if(isNaN(parseInt($('RM'+rmNum+'C'+child).value))||$('RM'+rmNum+'C'+child).value=="0")
          {
            accom_message = messages[1];
            return false;  
          }
        }       
    }
    return true;
}

document.onkeydown = function testForEnter(e)
{ 
    var elementId;
    if(!e)
    { 
        e=window.event;
        elementId = e.srcElement.id;
    }
    else
    {
        elementId = e.target.id;        
    }    
	if (e.keyCode == 13 && (elementId == "DepartureDate" || elementId == "DTN_TEXT") ) 
	{        
		e.cancelBubble = true;
		e.returnValue = false;
		return false;	
    }
} 
function disableNoAvailability(navigationGuid)
{
    try
    {
        var noAvail = new Array();
        var storedNoAvail = GetCookie('AccomNoAvail');
        if(storedNoAvail != null && storedNoAvail != "")
        {
            noAvail = storedNoAvail.split('|');
        }
        noAvail.push(navigationGuid);
        for(var outerIndex=0; outerIndex<= noAvail.length; outerIndex++)
        {
            var elements = document.getElementsByTagName("input");
            var selectedNode;
            var idArray;
            for(var index=0; index<elements.length; index++)
            {
                if(elements[index].value == noAvail[outerIndex])
                {
                    selectedNode = elements[index];
                    idArray = selectedNode.id.split("_");
                    break;
                }
            }
            if(typeof(idArray) != "undefined")
            {
                idArray[idArray.length-1] = "uxSelect";
                var selectButtonId = idArray.join("_");
                
                
                document.getElementById(selectButtonId).style.visibility = "hidden";
                
                idArray[idArray.length-1] = "uxToggleShowRooms";
                var toggleRoomsId = idArray.join("_");
                
                
                if(document.getElementById(toggleRoomsId) != null)
                {
                    document.getElementById(toggleRoomsId).style.visibility = "hidden";
                }
                
                while(selectedNode.parentNode.id != 'uxSummaryControl')
                {
                    selectedNode = selectedNode.parentNode;
                }
                var summaryControl = selectedNode.parentNode;
                summaryControl.disabled = true;
            }
        }
        storedNoAvail = noAvail.join('|');
        SetCookie( 'AccomNoAvail', storedNoAvail );
     }
     catch(e)
     {
        alert(e);
     }
}