var numberOfAdults = "";
var numberOfChildren = "";
var numberOfInfants = "";
var maxChildAge = "";
var invalidPartySize = "";
var tooManyInfants = "";
var enterallchildages = ""
var noDestinationSelected = "";
var noCountrySelected = "";
var maxPartySize = "";
var roomConfigAdultsCaption = "";
var roomConfigChildrenCaption = "";
var roomConfigChildCaption = "";
var roomConfigAgeCaption = "";
var minSeasonDate = "";
var maxSeasonDate = "";
var currentDate = "";
var selectedSubType = "";
var sunContextDesc = "";
var sunContextId = "";
var cityContextDesc = "";
var cityContextId = "";
var villaContextDesc = "";
var villaContextId = "";
var dateBeforeToday = "";
var dateAfterMax = "";
var alternateSearchPanelLink=""
var otherDestinationsSearchPanelLink=""
var durationList="";
var durationListVillas="";
var selectedDuration="";
var countryCaption = "";
var cityCaption = "";
var hotelCaption = "";
var destinationCaption = "";
var resortCaption = "";
var accommodationCaption = "";
var spiMap = { type: 'accom', subtype: 'sun' };
var specialChar = new Array();
var displayChar = new Array();

var roomConfigurationArray = new Array();

function Room(roomNumber,numAdults,numChildren,numInfants,childAges)
{
  this.roomNumber = roomNumber;
  this.numAdults = numAdults;
  this.numChildren = numChildren;
  this.numInfants = numInfants;
  this.childAges = childAges;
}

function createRoomConfigurationFromForm()
{
  roomConfigurationArray = new Array();
  var roomConfigFromForm = document.forms[getSearchFormName()].partyRoomConfForFCAO.value;

  if (roomConfigFromForm!="")
  {
    var roomConfigFromFormArr = roomConfigFromForm.split("/");
    for(var i=0;i<roomConfigFromFormArr.length-1;i++)
    {
      var room = roomConfigFromFormArr[i].split("|");
      var childAges = null;
      if (room.length>4)
      {
        childAges = room[4].split("-");
      }
      var roomObj = new Room();
      roomObj.numberOfRooms = i;
      roomObj.numAdults = room[1];
      roomObj.numChildren = room[2];
      roomObj.numInfants = room[3];
      roomObj.childAges = childAges;
      roomConfigurationArray[roomConfigurationArray.length] = roomObj;
    }
  }
  if (selectedSubType != "VILLA|3")
  {
    for(i=0;i<document.forms.length;i++)
    {
      if(document.forms[i].name==getSearchFormName())
      {
        createVillaPartyConfig();
        redrawRoomConfiguration($('numberOfRooms').value);
        break;
      }
    }
  }
}

function createVillaPartyConfig() {
  var roomConfigFromForm = document.forms[getSearchFormName()].partyRoomConfForFCAO.value;
  if (roomConfigFromForm!="")
  {
    var roomConfigFromFormArr = roomConfigFromForm.split("/");
    var room = roomConfigFromFormArr[0].split("|");
    var childAges = null;
    if (room.length>4)
    {
      childAges = room[4].split("-");
    }
    var roomObj = new Room();
    roomObj.numberOfRooms = 1;
    roomObj.numAdults = room[1];
    roomObj.numChildren = room[2];
    roomObj.numInfants = room[3];
    roomObj.childAges = childAges;
    roomConfigurationArray[roomConfigurationArray.length] = roomObj;
  }
}

function redrawRoomConfiguration(numberOfRooms) {
  var roomConfig = "";
  if (numberOfRooms>0)
  {
    for(var i=1;i<5;i++)
    $("roomBlock"+i).hide();

    for(var i=1;i<=numberOfRooms;i++)
      createSingleRoomConfiguration(i);
  }
  for(var i=1;i<=numberOfRooms;i++)
  {
    for(j=0;j<document.forms.length;j++)
    {
      if(document.forms[j].name==getSearchFormName())
        redrawChildAges($('scuWhoChildrenSelect'+ i));
    }
  }
  populateRoomConfigArray();
}

function populateRoomConfigArray() {
  roomConfigurationArray = new Array();
  for(k=0;k<document.forms.length;k++)
  {
    if(document.forms[k].name==getSearchFormName())
    {
      for(var i=1;i<=$("numberOfRooms").value;i++)
      {
        if (currentStyle($('roomBlock'+i),'display') != "none")
        {
          var numAdults     = $('scuWhoAdultsSelect'+i).value;
          var numChildren   = $('scuWhoChildrenSelect'+i).value;
          var numInfants    = $('scuWhoInfantsSelect'+i).value;
          var childAges     = new Array();
          if (numChildren>0)
          {
            for(var j=1;j<=numChildren;j++)
            {
                childAges[j-1] = $('scuWhoChildAgeSelect'+i+''+j).value;
            }
          }
          roomConfigurationArray[roomConfigurationArray.length] = new Room(i,numAdults,numChildren,numInfants,childAges);
        }
      }
    }
  }
  return roomConfigurationArray;
}

function createSingleRoomConfiguration(roomNumber) {
  $("roomBlock"+roomNumber).show();
  createAdultDefault(roomNumber);
  createChildDefault(roomNumber);
  createInfantDefault(roomNumber);
}

function createAdultDefault(roomNumber)
{
  if (roomConfigurationArray && roomConfigurationArray[roomNumber-1])
  {
    var currentAdultNums = 2;
    currentAdultNums = roomConfigurationArray[roomNumber-1].numAdults;
    for(var i=0;i<=numberOfAdults;i++)
    {
      if (currentAdultNums==i)
        $('scuWhoAdultsSelect'+roomNumber).selectedIndex = i-1;
    }
  }
}

function createChildDefault(roomNumber)
{
  if (roomConfigurationArray && roomConfigurationArray[roomNumber-1])
  {
    var currentChildrenNums = 0;
    currentChildrenNums = roomConfigurationArray[roomNumber-1].numChildren;
    //alert("number of childs: " + currentChildrenNums + "room number" + roomNumber);
    for(var i=0;i<=numberOfChildren;i++)
    {
      if (currentChildrenNums==i)
        $('scuWhoChildrenSelect'+roomNumber).selectedIndex = i;
    }
  }
}

function createInfantDefault(roomNumber)
{
  var numberOfInfants = 4;//This because its not sent by the page!
  var currentInfantNums = 0;
  if (roomConfigurationArray && roomConfigurationArray[roomNumber-1])
    currentInfantNums = roomConfigurationArray[roomNumber-1].numInfants;
  for(var i=0;i<=numberOfInfants;i++)
  {
    if (currentInfantNums==i)
      $('scuWhoInfantsSelect'+roomNumber).selectedIndex = i;
  }
}

function redrawChildAges(obj) {
  var roomNumber = getRoomNumber(obj.id);
  var numberOfChildren = obj.value;
  var childAgesBlock = $('childAgesBlock'+roomNumber);

  if(numberOfChildren>0)
  {
    if(childAgesBlock)
    {
      childAgesBlock.show();
    }

    for(var childNum=1;childNum<= 8;childNum++) // Hide all the Child SelectBoxes
    {
      var childAgeRoom = $('childAge'+roomNumber+''+childNum);

      if( childNum <= numberOfChildren )
      {
        childAgeRoom.show();
    }
    else
    {
      childAgeRoom.hide();
    }
    }
  }
  else
  {
    if (childAgesBlock)
    {
      childAgesBlock.hide();
    }
  }
}

function getRoomNumber(id)
{
  var roomNumber = id.substring(id.indexOf("scuWhoChildrenSelect")+20,id.length);
  return roomNumber;
}

function constructRoomConfigurationString(roomConfig)
{
  var roomConfigurationString = "";
  for(var i=0;i<roomConfig.length;i++)
  {
    var room = roomConfig[i];
    var childAgesString = "";
    roomConfigurationString +=  room.roomNumber + "|" + room.numAdults + "|" + room.numChildren + "|" + room.numInfants + "|";
    for(var j=0;j<room.childAges.length;j++)
    {
      childAgesString += room.childAges[j] + "-";
    }
    childAgesString = childAgesString.substring(0,childAgesString.length-1);
    if (childAgesString=="")
    {
      roomConfigurationString = roomConfigurationString.substring(0,roomConfigurationString.length-1);
    }
    roomConfigurationString += childAgesString + "/";
  }
  document.forms[getSearchFormName()].partyRoomConfForFCAO.value = roomConfigurationString;
}

function changeDropdownStyle(elemId, size)
{
  $(elemId).setAttribute("size",size);
}

function handleRadioButtons()
{
  var subTypeRadioBtns = document.forms[getSearchFormName()].subtype;

  for ( var i=0,iLen=subTypeRadioBtns.length; i < iLen; i++ )
  {
    if ( subTypeRadioBtns[i].value == "sun" )
    {
      subTypeRadioBtns[i].value = sunContextDesc+"|"+sunContextId;
    }
    else if ( subTypeRadioBtns[i].value == "city")
    {
      subTypeRadioBtns[i].value = cityContextDesc+"|"+cityContextId;
    }
    else if ( subTypeRadioBtns[i].value == "accom")
    {
      subTypeRadioBtns[i].value = villaContextDesc+"|"+villaContextId;
    }

    subTypeRadioBtns[i].onclick = function(event)
    {
      alterSearchPanelForSubtype(event);
    }
  }
}

function alterSearchPanelForSubtype(event)
{
  SaveSelection();
  updateDuration();
  updateCheckoutDate();
  clearPredictivePanels();
  var selectedMonthYear = $("calendar_month_year").value.split('/');
  var selectedDate = new Date(selectedMonthYear[0]+"/"+$("calendar_day").value+"/"+selectedMonthYear[1]);
  var selectedDateInMillis = selectedDate.getTime();
  var currentDateObj=new Date(currentDate);
  var timeInMillis = currentDateObj.getTime();
  var twodaysmillis = 2 * 24 * 60 * 60 * 1000;
  timeInMillis = timeInMillis + twodaysmillis;
  currentDateObj.setTime(timeInMillis);
  var accommodationType = $('isuAccomtype');
  var isuRating = $('isuRating');

  $("resortAccomCode").setAttribute('alt',resortCaption);
  $("resortAccomCode").setAttribute('title',resortCaption);
  $("countryDestCode").setAttribute('title',destinationCaption);

  var subTypeRadioBtns = document.forms[getSearchFormName()].subtype;

  if (subTypeRadioBtns[2].checked)
  {
    redrawRoomConfiguration(1);
    $('whosgoingHeading').show();
    $('otherdestinations').hide();
    $('scuRoom').hide();
    $('roomTextBlock1').hide();
    if (accommodationType) accommodationType.hide();
    if (isuRating) isuRating.hide();
    $('otherdestinations').hide();

    changeDropdownStyle("destinationCode","1");
    changeDropdownStyle("resortCode","1");
    if (selectedDate.getTime()==currentDateObj.getTime())
    {
      var currentDateObj=new Date(currentDate);
      resetCheckInDate((currentDateObj.getMonth()+1)+"/"+currentDateObj.getDate()+"/"+currentDateObj.getFullYear());
    }
    else
    {
      resetCheckInDate(selectedDate);
    }
    UpdateDayOfWeek();
    updateCheckoutDate();
  }
  else
  {
    if (accommodationType) accommodationType.show();
    if (subTypeRadioBtns[1].checked)
    {
      $("resortAccomCode").setAttribute('alt',cityCaption);
      $("resortAccomCode").setAttribute('title',cityCaption);
      $("countryDestCode").setAttribute('title',countryCaption);

      if (selectedDate.getTime()<currentDateObj.getTime())
      {
        resetCheckInDate((currentDateObj.getMonth()+1)+"/"+currentDateObj.getDate()+"/"+currentDateObj.getFullYear());
      }
      if (accommodationType) accommodationType.hide();
      if (isuRating)
      {
        isuRating.show();
        createRatingOptions('Star');
      }
    }
    else
    {
      if (selectedDate.getTime()==currentDateObj.getTime())
      {
        var currentDateObj=new Date(currentDate);
        resetCheckInDate((currentDateObj.getMonth()+1)+"/"+currentDateObj.getDate()+"/"+currentDateObj.getFullYear());
      }
      else
      {
        resetCheckInDate(selectedDate);
      }
      if (isuRating)
      {
        isuRating.show();
        createRatingOptions('Sun');
      }
    }

    UpdateDayOfWeek();
    updateCheckoutDate();
    $('whosgoingHeading').hide();
    $('scuRoom').show();
    $('roomTextBlock1').show();





    $('otherdestinations').show();

    for(i=0;i<document.forms.length;i++)
    {
      if(document.forms[i].name==getSearchFormName())
      {
        redrawRoomConfiguration($('numberOfRooms').value);
        break;
      }
    }

    $('otherdestinations').show();
  }

  DynamicUpdate("subtype","change");
}

function resetSubType()
{
  // NOTE: selectedSubType is a global JavaScript variable set in the searchPanel.jsp
  var subTypeRadioBtns = document.forms[getSearchFormName()].subtype;

  for ( var i = 0, iLen = subTypeRadioBtns.length; i < iLen; i++ )
  {
    if (subTypeRadioBtns[i] && subTypeRadioBtns.value == selectedSubType)
    {
      subTypeRadioBtns[i].checked = true;
    }
  }

  if (subTypeRadioBtns[2] && subTypeRadioBtns[2].checked)
  {
    createVillaPartyConfig();
    redrawRoomConfiguration($('numberOfRooms').value);
  }
}

// Get the value of a date
function DateValue(objval) {
  dateval = new Date()
  var Pat1 = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2,4})$/;
  if (Pat1.test(objval)) {
    var dateArray = objval.match(Pat1); // is the format ok?
    dateval.setDate(dateArray[1])
    dateval.setMonth(dateArray[3]-1)
    dateval.setYear(dateArray[4])
    dateval.setHours(0)
    dateval.setMinutes(0)
    dateval.setSeconds(0)
    dateval.setMilliseconds(0)
    return dateval.getTime()
  } else {
    return 0
  }
}

//sets the product type variable to be user across the scripts
function setProductType(productType){
  this.productType = productType;
}

function showError()
{
  var errorMessage = $('errormessage').value;
  if(errorMessage != "")
    alert(errorMessage);
}

// MOVED from fcao_general.js
function updateDuration()
{
  var durationArr = null;
  var durationElem = $("duration");

  durationElem.options.length = 0;

  if( getSelectedSubtype().indexOf('VILLA') > -1 )
  {
    durationArr = durationListVillas.split(",");
  }
  else
  {
    durationArr = durationList.split(",");
  }

  for( var i = 0, len = durationArr.length; i < len; i++ )
  {
    if(durationArr[i]!='')
    {
      var durationContent = durationArr[i].split("|");
      AddOption(durationElem, durationContent[1], durationContent[0], 7, 7);
    }
  }

  if (selectedDuration !='0' )
  {
    var foundflag = false;
    for( var i = 0, len = durationElem.options.length; i < len; i++ )
    {
      if( durationElem.options[i].value == selectedDuration )
      {
        durationElem.options[i].selected = true;
        foundflag = true;
        break;
      }

      if ( !foundflag )
      {
        if( getSelectedSubtype().indexOf('VILLA') > -1 )
        {
          durationElem.selectedIndex = 0;
        }
        else
        {
         durationElem.selectedIndex = 8;
        }
      }
    }
  }
  else
  {
    for(var i = 0, len = durationElem.options.length; i < len; i++)
    {
      if( durationElem.options[i].value == 7 )
      {
        durationElem.options[i].selected = true;
        break;
      }
    }
  }
}

function validateAOIsu()
{
  setSubtypeId();
  validateSearchCriteria();

  return false;
}

function initialiseAOEvents()
{
  initialiseAOInterstitial();
  initialiseSearchBtn();
  handleRadioButtons();
  resetSubType();
  alterSearchPanelForSubtype();
  updateDuration();
  createRoomConfigurationFromForm();
  DynamicUpdateInit();
  updateCheckoutDate();
  appendOnFocusToAllElements();
  resetSearchCodes();
  disableFreeTextSearchOnEnter();
}

function getSearchFormName()
{
  return "searchForm";
}

function createRatingOptions(obj) {
  var rating = $('rating')
  for (i=1;i<5;i++)
  {
    var rateOpt = rating.options[i].text;
    rating.options[i].text = rateOpt.split(' ')[0]+' '+obj;
  }
}