function waitTillLast(inFunctionCall)
{
	if (document.getElementById("last"))
	{
		eval(inFunctionCall);
	}
	else
	{		
		setTimeout("waitTillLast('" + inFunctionCall + "')", 1);
	}
	
	return true;
}

function setChildrenActive() {
	if ($('#hotelNumberChildren').val() == 0) {
		$('#hotelChildrenSelect').removeClass('active');
	}
	else {
		$('#hotelChildrenSelect').addClass('active');
	}
}
$(document).ready(function() {
	setChildrenActive();
});
      
function displayChildAgeBoxes(numChildFld, divName, totNum)
{
    var numChild = document.getElementById(numChildFld).value;
    document.getElementById(divName).style.display = numChild > 0 ? "" : "none";
    for (i=1; i<=numChild; i++)
        document.getElementById(divName + i).style.display = "";
    for (; i<=totNum; i++)
        document.getElementById(divName + i).style.display = "none";
	setChildrenActive();
}

function bookCdp()
{
	var roomMixes = getRoomMixes("hotel");
	var packageCode = document.getElementById("package").value;	
	var startDate = document.getElementById("hotelStartDate").value;

	if (!cityValidation())
		return(false);

	runInitial(convertDateDDMMYYYY(startDate), "hotel");

	package.start(packageCode, parseStartDate(startDate), roomMixes);

	return(false);
}

function rerunBookCdp()
{
	var roomMixes = getRoomMixes("hotel");
	var duration = document.getElementById("duration").value;
	var packageCode = document.getElementById("package").value;	
	var startDate = document.getElementById("hotelStartDate").value;

	nPkgRetry = nPkgRetry + 1;
	package.addGlobalParameter("previous_package_start_" + nPkgRetry, convertDateDDMMYYYY(startDate));
	
	if (!cityValidation())
		return(false);

	package.addGlobalParameter("duration", duration);
	package.start(packageCode, parseStartDate(startDate), roomMixes);

	return(false);
}

function cityValidation()
{
	var hotelLocn = document.getElementById("htlCity").value;
	if (hotelLocn.length == 0) {
		alert("Please specify a location");
		return(false);
	}	
	return(true);
}

function parseStartDate(inStartDate)
{
	return parseUserFmtDate(inStartDate).print("%d/%m/%Y")
}

function getRoomMixes(inPrefix)
{
    var roomMixes = "";
	var adultCount = document.getElementById(inPrefix + "NumberAdults").value;
	var childCount = document.getElementById(inPrefix + "NumberChildren").value;
	
	if (adultCount == 0) return roomMixes;
	
	roomMixes = adultCount + "A";
	
	if (childCount > 0)
	{
		roomMixes += childCount + "C";
		
		for (i=1; i<= childCount; i++)
		{
			roomMixes += "-" + document.getElementById(inPrefix + "ChildAge" +  i).value ;
		}
	}

	return(roomMixes);
}

// The following relates to the history support



function revealFirst(inDefaultTab)
{
	 // Forces this to be displayed 
	 var isReady = document.getElementById("last");
	 if (!isReady) setTimeout("revealFirst()", 1);
	 var anchorString = window.location.hash;
	 
	 if (anchorString)
	 {
		switchTab(anchorString.substr(1));
	 }
	 else
	 {
		TT.show(inDefaultTab);
	 }
}	

/** Our callback to receive history change
  events. */
 
function initialize() 
{
	// initialize the DHTML History
	// framework
	callLast();	
  /*	dhtmlHistory.initialize();
	if (dhtmlHistory.isFirstLoad())
	{ 
		revealFirst(glbDefaultTab);
	}
	// subscribe to DHTML history change events
	dhtmlHistory.addListener(historyChange); */

}

function historyChange(newLocation, historyData) 
{
    switchTab(newLocation);               
}


function switchTab(inAnchorString)
{
	var paramsArray = getParams(inAnchorString);
	
	var form;
	
	for (var idx = 0; idx < paramsArray.length; idx++) {
		var aParam = paramsArray[idx];

		if (aParam.key == 'tab') 
		{
			TT.show(aParam.value);
		}
		else if (aParam.key.match("^input-")) 
		{
			var inputFld = aParam.key.replace("input-", "");
			var field = document.getElementById(inputFld)
			if (field) 
			{
				field.value = aParam.value;

				if (field.onchange) {
					eval(field.getAttribute("onchange"));
				}
			}
		}
	}
}

function setupAnchor()
{
  var anchorString = "tab=" + glbSelectedTab;
  

  var bkListInputs = document.getElementById("bkList").getElementsByTagName("input");
  var bkListSelects = document.getElementById("bkList").getElementsByTagName("select");

  for (idx = 0; idx < bkListInputs.length; idx++)
  {
  	  var id = bkListInputs[idx].id;
	  var value =  bkListInputs[idx].value;
  	  if (bkListInputs[idx].id && bkListInputs[idx].id.length > 0)
	      anchorString += ("&input-" + bkListInputs[idx].id + "=" + bkListInputs[idx].value);
  }

  for (idx = 0; idx < bkListSelects.length; idx++)
  {
  	  var id = bkListSelects[idx].id;
	  var value =  bkListSelects[idx].value;
  	  if (bkListSelects[idx].id && bkListSelects[idx].id.length > 0)
	      anchorString += ("&input-" + bkListSelects[idx].id + "=" + bkListSelects[idx].value);
  }
   
  // dhtmlHistory.add(anchorString, "");	
}

function getParams(inAnchorString)
{
	var params = inAnchorString.split("&");
	var paramsArray = new Array();
	
	for (var idx2=0;idx2<params.length;idx2++)
	{
		var paramSplit = params[idx2].split("=");
		
		var aParam = new Object();
		
		aParam.key = paramSplit[0];
		aParam.value = paramSplit[1];
		
		paramsArray.push(aParam)
	}	
	return(paramsArray);
}

function quickRerun(inPackage, inStartDate, inRoomMixes)
{
    nPkgRetry++;
    package.addGlobalParameter("previous_package_start_" + nPkgRetry, inStartDate);
    package.start(inPackage, inStartDate, inRoomMixes);
    
}

var TT = {
  show : function(inOption){
      var sfEls = document.getElementById("bkList").getElementsByTagName("dd");
      
      var selectedTabInput = document.getElementById("selectedTab");
      if (selectedTabInput)
      {
        selectedTabInput.value = inOption;
      }
      
      for (var i=0; i<sfEls.length + 1; i++) {
        if (i != 2)
          document.getElementById("menu"+i).style.display = "none"; 
      }
      
      document.getElementById("menu"+inOption).style.display = "block";
  }
}
