//--------------------------------
// - Process Booking Function - ||
//--------------------------------
function processBooking(dynamicAreaIn, urlIn)
{
	var paramsIn = "";
	if(validateBooking())
	{
	  var intHotelID = document.getElementById("intHotelID").value;
	  var datStart = document.getElementById("datStart").value;
	  var datEnd = document.getElementById("datEnd").value;
	  paramsIn = paramsIn + "&intHotelID=" + intHotelID + "&datStart=" + datStart + "&datEnd=" + datEnd;
	  
	  var intRoom1Qty = document.getElementById("intRoom1Qty").value;
	  var intRoom1Type = document.getElementById("intRoom1Type").value;
	  var intRoom1Adults = document.getElementById("intRoom1Adults").value;
	  var intRoom1Children = document.getElementById("intRoom1Children").value;
	  var intRoom1Cots = document.getElementById("intRoom1Cots").value;
	  paramsIn = paramsIn + "&intRoom1Qty=" + intRoom1Qty + "&intRoom1Type=" + intRoom1Type + "&intRoom1Adults=" + intRoom1Adults + "&intRoom1Children=" + intRoom1Children + "&intRoom1Cots=" + intRoom1Cots;
	  
	  var intRoom2Qty = document.getElementById("intRoom2Qty").value;
	  var intRoom2Type = document.getElementById("intRoom2Type").value;
	  var intRoom2Adults = document.getElementById("intRoom2Adults").value;
	  var intRoom2Children = document.getElementById("intRoom2Children").value;
	  var intRoom2Cots = document.getElementById("intRoom2Cots").value;
	  paramsIn = paramsIn + "&intRoom2Qty=" + intRoom2Qty + "&intRoom2Type=" + intRoom2Type + "&intRoom2Adults=" + intRoom2Adults + "&intRoom2Children=" + intRoom2Children + "&intRoom2Cots=" + intRoom2Cots;

	  var intRoom3Qty = document.getElementById("intRoom3Qty").value;
	  var intRoom3Type = document.getElementById("intRoom3Type").value;
	  var intRoom3Adults = document.getElementById("intRoom3Adults").value;
	  var intRoom3Children = document.getElementById("intRoom3Children").value;
	  var intRoom3Cots = document.getElementById("intRoom3Cots").value;
	  paramsIn = paramsIn + "&intRoom3Qty=" + intRoom3Qty + "&intRoom3Type=" + intRoom3Type + "&intRoom3Adults=" + intRoom3Adults + "&intRoom3Children=" + intRoom3Children + "&intRoom3Cots=" + intRoom3Cots;	  	  
	  
	  
	  try
	  {
	      var halfBoard = document.getElementById("halfBoard").checked; // function could throw exception
	      paramsIn = paramsIn + "&halfBoard=" + halfBoard;
	  }
	  catch (e) 
	  {
		  // Do Nothing ...
	  }
	  try
	  {
	      var fullBoard = document.getElementById("fullBoard").checked; // function could throw exception
	      paramsIn = paramsIn + "&fullBoard=" + fullBoard;
	  }
	  catch (e) 
	  {
		  // Do Nothing ...
	  }
	  try
	  {
	      var allInclusive = document.getElementById("allInclusive").checked; // function could throw exception
	      paramsIn = paramsIn + "&allInclusive=" + allInclusive;
	  }
	  catch (e) 
	  {
		  // Do Nothing ...
	  }
	  try
	  {
	      var breakfast = document.getElementById("breakfast").checked; // function could throw exception
	      paramsIn = paramsIn + "&breakfast=" + breakfast;
	  }
	  catch (e) 
	  {
		  // Do Nothing ...
	  }
	  try
	  {
	      var lunch = document.getElementById("lunch").checked; // function could throw exception
	      paramsIn = paramsIn + "&lunch=" + lunch;
	  }
	  catch (e) 
	  {
		  // Do Nothing ...
	  }
	  try
	  {
	      var dinner = document.getElementById("dinner").checked; // function could throw exception
	      paramsIn = paramsIn + "&dinner=" + dinner;
	  }
	  catch (e) 
	  {
		  // Do Nothing ...
	  }
	  
	  try
	  {
	      var ap_1_15_transfer = document.getElementById("ap_1_15_transfer").checked; // function could throw exception
	      paramsIn = paramsIn + "&ap_1_15_transfer=" + ap_1_15_transfer;
	  }
	  catch (e) 
	  {
		  // Do Nothing ...
	  }
	  try
	  {
	      var ap_16_55_transfer = document.getElementById("ap_16_55_transfer").checked; // function could throw exception
	      paramsIn = paramsIn + "&ap_16_55_transfer=" + ap_16_55_transfer;
	  }
	  catch (e) 
	  {
		  // Do Nothing ...
	  }			  	  	  
	  
	  var strCurrency = document.getElementById("strCurrency").value;
	  paramsIn = paramsIn + "&strCurrency=" + strCurrency;
	  
	  // Call bookingCalc.php ...
	  response = queuePage(dynamicAreaIn, urlIn, paramsIn);
	}
}

//---------------------------------
// - Validate Booking Function - ||
//---------------------------------
function validateBooking()
{
	var errorString = "";
	var errorFlag = 0;

	if (document.getElementById('intHotelID').value == "")
	{
		errorString += "There has been an error parsing the Hotel ID, please refresh the page and try again.\n";
		if(errorFlag == 0)
			errorFlag = 1;
	}
	if (document.getElementById('datStart').value > document.getElementById('datEnd').value)
	{
		errorString += "The Departure Date cannot be before the Arrival Date.\n";
		if(errorFlag == 0)
			errorFlag = 2;
	}
	if (document.getElementById('intRoom1Qty').value == "" || document.getElementById('intRoom1Type').value == "" || document.getElementById('intRoom1Adults').value == 0)
	{
		errorString += "You must enter at least one room type, quantity and have at least one adult present.\n";
		if(errorFlag == 0)
			errorFlag = 3;
	}
			
	if(errorFlag > 0)
	{
		switch(errorFlag)
		{
			case 1:
				document.getElementById('intHotelID').focus();
			break;
			case 2:
				document.getElementById('datStart_Day_ID').focus();
			break;
			case 3:
				document.getElementById('intRoom1Qty').focus();
			break;
		}

		alert(errorString);
		return false;
	}
	else
	{
		return true;
	}
}

//---------------------------------------
// - Process Secure Booking Function - ||
//---------------------------------------
function processSecureBooking()
{
	if(validateSecureBooking())
	{
	  // Submit Form ...
	  //document.getElementById('secureBookingForm').submit();
	  document.secureBookingForm.submit();
	}
}

//----------------------------------------
// - Validate Secure Booking Function - ||
//----------------------------------------
function validateSecureBooking()
{
	var errorString = "The following fields are compulsary:\n\n";
	var errorFlag = 0;
	var now = new Date();

	if(document.getElementById('clientName').value == "")
	{
		errorString += "    - Full Name.\n";
		if(errorFlag == 0)
			errorFlag = 1;
	}
	if(document.getElementById('clientEmail').value == "")
	{
		errorString += "    - E-mail Address.\n";
		if(errorFlag == 0)
			errorFlag = 2;
	}
	else if(!emailAddressValidation(document.getElementById('clientEmail').value))
	{
		errorString += "    - Incorrect E-mail Address.\n";
		if(errorFlag == 0)
			errorFlag = 2;
	}
	if(document.getElementById('clientAddress').value == "")
	{
		errorString += "    - Address.\n";
		if(errorFlag == 0)
			errorFlag = 3;
	}
	if(document.getElementById('clientPostal_Code').value == "")
	{
		errorString += "    - Postal Code.\n";
		if(errorFlag == 0)
			errorFlag = 4;
	}
	if(document.getElementById('clientCity').value == "")
	{
		errorString += "    - City.\n";
		if(errorFlag == 0)
			errorFlag = 5;
	}
	if(document.getElementById('clientProvince').value == "")
	{
		errorString += "    - Province.\n";
		if(errorFlag == 0)
			errorFlag = 6;
	}
	if(document.getElementById('clientCountry').value == "")
	{
		errorString += "    - Country.\n";
		if(errorFlag == 0)
			errorFlag = 7;
	}
	
	errorString += "\n";
	
	// Credit/Debit Card Details ...
	if(document.getElementById('Card_Class').value == "")
	{
		errorString += "    - Credit/Debit Card.\n";
		if(errorFlag == 0)
			errorFlag = 8;
	}
	if(document.getElementById('Credit_Card_Name').value == "-")
	{
		errorString += "    - Credit Card Type.\n";
		if(errorFlag == 0)
			errorFlag = 9;
	}
	if(document.getElementById('CardHolderName').value == "")
	{
		errorString += "    - Card Holder Name.\n";
		if(errorFlag == 0)
			errorFlag = 10;
	}
	if(document.getElementById('Card_Number').value == "")
	{
		errorString += "    - Card Number.\n";
		if(errorFlag == 0)
			errorFlag = 11;
	}
	if(document.getElementById('StartMonth').value == "-")
	{
		errorString += "    - Start Month.\n";
		if(errorFlag == 0)
			errorFlag = 12;
	}
	if(document.getElementById('StartYear').value == "-")
	{
		errorString += "    - Start Year.\n";
		if(errorFlag == 0)
			errorFlag = 13;
	}
	if(document.getElementById('ExpiryMonth').value == "-")
	{
		errorString += "    - Expiry Month.\n";
		if(errorFlag == 0)
			errorFlag = 14;
	}
	if(document.getElementById('ExpiryYear').value == "-")
	{
		errorString += "    - Expiry Year.\n";
		if(errorFlag == 0)
			errorFlag = 15;
	}
	dateFlagError = false;
	
	if(document.getElementById('StartYear').value > document.getElementById('ExpiryYear').value)
		dateFlagError = true;
	else if(document.getElementById('StartYear').value == document.getElementById('ExpiryYear').value)
	{
		if(document.getElementById('StartMonth').value > document.getElementById('ExpiryMonth').value)
		dateFlagError = true;
	}
	else if(document.getElementById('ExpiryYear').value < now.getFullYear())
		dateFlagError = true;
		
	if(dateFlagError)
	{		
		errorString += "    - Start Date & Expiry Date conflict.\n";
		if(errorFlag == 0)
			errorFlag = 12;
	}
	
	// Add validation to ensure that if expiry year is current year ... that the expiry month is future and not past ...
	if(document.getElementById('ExpiryYear').value < now.getFullYear())
	{
		errorString += "    - Expiry Year is in the past.\n";
		if(errorFlag == 0)
			errorFlag = 15;		
	}
	
	if(document.getElementById('ExpiryYear').value == now.getFullYear() && parseInt(document.getElementById('ExpiryMonth').value) <= now.getMonth())
	{
		errorString += "    - Expiry Date is invalid.\n";
		if(errorFlag == 0)
			errorFlag = 15;
	}
	
	
	if(errorFlag > 0)
	{
		switch(errorFlag)
		{
			case 1:
				document.getElementById('clientName').focus();
			break;
			case 2:
				document.getElementById('clientEmail').focus();
			break;
			case 3:
				document.getElementById('clientAddress').focus();
			break;
			case 4:
				document.getElementById('clientPostal_Code').focus();
			break;
			case 5:
				document.getElementById('clientCity').focus();
			break;
			case 6:
				document.getElementById('clientProvince').focus();
			break;
			case 7:
				document.getElementById('clientCountry').focus();
			break;
			case 8:
				document.getElementById('Card_Class').focus();
			break;
			case 9:
				document.getElementById('Credit_Card_Name').focus();
			break;
			case 10:
				document.getElementById('CardHolderName').focus();
			break;
			case 11:
				document.getElementById('Card_Number').focus();
			break;
			case 12:
				document.getElementById('StartMonth').focus();
			break;
			case 13:
				document.getElementById('StartYear').focus();
			break;
			case 14:
				document.getElementById('ExpiryMonth').focus();
			break;
			case 15:
				document.getElementById('ExpiryYear').focus();
			break;
		}

		alert(errorString);
		return false;
	}
	else
	{
		return true;
	}
}
