// define the companies
var Anek = 1;
var Minoan = 2;
var Superfast = 3;
var Ventouris = 4;
var Agoudimos = 5;
var BlueStar = 6;
var Endeavor = 7;
var European = 8;
var Sealines = 21;

var AnekCompany = "Anek Lines";
var MinoanCompany = "Minoan Lines";
var SuperfastCompany = "Superfast Ferries";
var VentourisCompany = "Ventouris Ferries";
var AgoudimosCompany = "Agoudimos Lines";
var BlueStarCompany = "Blue Star Ferries";
var EndeavorCompany = "Endeavor Lines";
var EuropeanCompany = "European Seaways";
var SealinesCompany = "European Sealines";

// ----------------------------------
// AJAX ROUTINES
// ----------------------------------
var request = false;	// AJAX variable
var objFillArea = "";	// area to fill content from AJAX

function renewRequest()
{
	var request;
	try {
		request = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = false;
			}
		}
	}
	if (!request) {alert("Error initializing XMLHttpRequest!");}
	return request;
}

function BuildRoute(iCompanyID, obj, value, idFillArea, lang)
{
	// assign ajax URL parameters and fill area
	request = renewRequest();
	var url = "/includes/build_route.asp?iCompanyID=" + iCompanyID + "&sLanguage=" + lang + "&objID=" + obj.id + "&value=" + value;
	objFillArea = document.getElementById(idFillArea);
	
	if (value != '0|0')
	{
		if (obj.name == "f_OneWayFrom")
		{
			document.getElementById('ajaxOutBoundWait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		else if (obj.name == "f_OneWayFrom2")
		{
			document.getElementById('ajaxOutBound2Wait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		else if (obj.name == "f_ReturnFrom2")
		{
			document.getElementById('ajaxInBound2Wait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		
		resetForm('routes', obj, 'BuildRoute');
		
		request.open("GET", url, true);
		request.onreadystatechange = function() {updateBuildRoute(obj.name);}
		request.send(null);	
	}
	else
	{
		resetForm('routes', obj, 'BuildRoute');
	}
}

function updateBuildRoute(objName)
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var response = request.responseText;
			objFillArea.innerHTML = response;
			
			//modify the english text "From..." and "To..." to their equivalent language text
			
			//for One Way selection
			document.getElementById("f_OneWayTo").options[0].text = document.getElementById("toText").value;
			
			//for Return selection
			document.getElementById("f_OneWayTo2").options[0].text = document.getElementById("toText").value;
			document.getElementById("f_ReturnFrom2").options[0].text = document.getElementById("fromText").value;
			document.getElementById("f_ReturnTo2").options[0].text = document.getElementById("toText").value;
			
			if (objName == "f_OneWayFrom")
			{
				document.getElementById('ajaxOutBoundWait').innerHTML = '';
			}
			else if (objName == "f_OneWayFrom2")
			{
				document.getElementById('ajaxOutBound2Wait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
			}
			
			if (objName == "f_OneWayTo2")
			{
				SeasonsColorOutboundForBooking('return');
			}
		}
		else if (request.status == 404)
		{
			if (objName == "f_OneWayFrom")
			{
				document.getElementById('ajaxOutBoundWait').innerHTML = '';
			}
			else if (objName == "f_OneWayTo2")
			{
				document.getElementById('ajaxOutBound2Wait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
			}
			alert("Page Does Not Exist!");
		}
		else
		{
			if (objName == "f_OneWayFrom")
			{
				document.getElementById('ajaxOutBoundWait').innerHTML = '';
			}
			else if (objName == "f_OneWayTo2")
			{
				document.getElementById('ajaxOutBound2Wait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
			}
			alert("Error: status code is " + request.status);
		}
	}
}

function BuildRouteSelected(iCompanyID, obj, value, idFillArea, lang, arrival_port_id_outbound, departure_port_id_inbound, arrival_port_id_inbound)
{
	// assign ajax URL parameters and fill area
	request = renewRequest();
	var url = "/includes/build_route.asp?iCompanyID=" + iCompanyID + "&sLanguage=" + lang + "&objID=" + obj.id + "&value=" + value;
	objFillArea = document.getElementById(idFillArea);
	
	//alert(obj.name);
	if (value != '0|0')
	{
		if (obj.name == "f_OneWayFrom")
		{
			document.getElementById('ajaxOutBoundWait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		else if (obj.name == "f_OneWayFrom2")
		{
			document.getElementById('ajaxOutBound2Wait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		else if (obj.name == "f_ReturnFrom2")
		{
			document.getElementById('ajaxInBound2Wait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		
		request.open("GET", url, true);
		request.onreadystatechange = function() {updateBuildRouteSelected(obj.name, iCompanyID, lang, arrival_port_id_outbound, departure_port_id_inbound, arrival_port_id_inbound);}
		request.send(null);	
	}
}

function updateBuildRouteSelected(dropDownName, iCompanyID, lang, arrival_port_id_outbound, departure_port_id_inbound, arrival_port_id_inbound)
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var response = request.responseText;
			objFillArea.innerHTML = response;

			//modify the english text "From..." and "To..." to their equivalent language text
			
			//for One Way selection
			document.getElementById("f_OneWayTo").options[0].text = document.getElementById("toText").value;
			
			//for Return selection
			document.getElementById("f_OneWayTo2").options[0].text = document.getElementById("toText").value;
			document.getElementById("f_ReturnFrom2").options[0].text = document.getElementById("fromText").value;
			document.getElementById("f_ReturnTo2").options[0].text = document.getElementById("toText").value;
			
			//alert(dropDownName);
			//alert(selectedValue);
			
			if (dropDownName == "f_OneWayFrom")
			{
				document.getElementById('ajaxOutBoundWait').innerHTML = '';
				
				var f_OneWayTo = document.getElementById("f_OneWayTo");
				for (var i = 0; i < f_OneWayTo.options.length; i++)
				{
					if (f_OneWayTo.options[i].value.split("|")[0] == arrival_port_id_outbound)
					{
						// Item is found. Set its selected property, and exit the loop
						f_OneWayTo.options[i].selected = true;
						updateRoute(f_OneWayTo);
						setFormReset(false);	// to prevent clearing of the date field and calendar pop up
						SeasonsColorOutboundForBooking('oneway');
						break;
					}
				}
			}
			
			if (dropDownName == "f_OneWayFrom2")
			{
				document.getElementById('ajaxOutBound2Wait').innerHTML = '';
				
				var f_OneWayTo2 = document.getElementById("f_OneWayTo2");
				for (var i = 0; i < f_OneWayTo2.options.length; i++)
				{
					if (f_OneWayTo2.options[i].value.split("|")[0] == arrival_port_id_outbound)
					{
						// Item is found. Set its selected property, and exit the loop
						f_OneWayTo2.options[i].selected = true;
						updateRoute(f_OneWayTo2);
						BuildRouteSelected(iCompanyID,f_OneWayTo2,f_OneWayTo2.value,'spanReturnFrom2', lang, arrival_port_id_outbound, departure_port_id_inbound, arrival_port_id_inbound);
						break;
					}
				}
			}
			
			if (dropDownName == "f_OneWayTo2")
			{
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
				
				var f_ReturnFrom2 = document.getElementById("f_ReturnFrom2");
				for (var i = 0; i < f_ReturnFrom2.options.length; i++)
				{
					if (f_ReturnFrom2.options[i].value.split("|")[0] == departure_port_id_inbound)
					{
						// Item is found. Set its selected property, and exit the loop
						f_ReturnFrom2.options[i].selected = true;
						updateRoute(f_ReturnFrom2);
						BuildRouteSelected(iCompanyID,f_ReturnFrom2,f_ReturnFrom2.value,'spanReturnTo2', lang, arrival_port_id_outbound, departure_port_id_inbound, arrival_port_id_inbound);
						break;
					}
				}
			}
			
			if (dropDownName == "f_ReturnFrom2")
			{
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
				
				var f_ReturnTo2 = document.getElementById("f_ReturnTo2");
				for (var i = 0; i < f_ReturnTo2.options.length; i++)
				{
					if (f_ReturnTo2.options[i].value.split("|")[0] == arrival_port_id_inbound)
					{
						// Item is found. Set its selected property, and exit the loop
						f_ReturnTo2.options[i].selected = true;
						updateRoute(f_ReturnTo2);
						setFormReset(false);	// to prevent clearing of the date field and calendar pop up
						SeasonsColorOutboundForBookingSelected('return');	// the inbound is called inside this ajax function
						break;
					}
				}
			}
			
			
		}
		else if (request.status == 404)
		{
			alert("Page Does Not Exist!");
		}
		else
		{
			alert("Error: status code is " + request.status);
		}
	}
}

function BuildRouteSeasonality(iCompanyID, obj, value, idFillArea, lang)
{
	// assign ajax URL parameters and fill area
	request = renewRequest();
	var url = "/includes/build_route.asp?iCompanyID=" + iCompanyID + "&sLanguage=" + lang + "&objID=" + obj.id + "&value=" + value;
	objFillArea = document.getElementById(idFillArea);
	
	if (value != '0|0')
	{
		if (obj.name == "f_RouteFrom")
		{
			document.getElementById('ajaxRouteWait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style=""/>';
		}

request.open("GET", url, true);
		request.onreadystatechange = function() {updateBuildRouteSeasonality(obj.name);}
		request.send(null);	
	}
}

function updateBuildRouteSeasonality(objName)
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var response = request.responseText;
			objFillArea.innerHTML = response;
			
			//modify the english text "From..." and "To..." to their equivalent language text
			
			document.getElementById("f_RouteTo").options[0].text = document.getElementById("toText").value;
			
			if (objName == "f_RouteFrom")
			{
				document.getElementById('ajaxRouteWait').innerHTML = '';
			}
		}
		else if (request.status == 404)
		{
			if (objName == "f_RouteFrom")
			{
				document.getElementById('ajaxRouteWait').innerHTML = '';
			}
			alert("Page Does Not Exist!");
		}
		else
		{
			if (objName == "f_RouteFrom")
			{
				document.getElementById('ajaxRouteWait').innerHTML = '';
			}
			alert("Error: status code is " + request.status);
		}
	}
}

function BuildRouteRates(obj, value, idFillArea, lang)
{
	// assign ajax URL parameters and fill area
	request = renewRequest();
	var url = "/includes/build_route_rates.asp?sLanguage=" + lang + "&objID=" + obj.id + "&value=" + value;
	objFillArea = document.getElementById(idFillArea);
	
	if (value != '0|0')
	{
		if (obj.name == "f_OneWayFrom")
		{
			document.getElementById('ajaxOutBoundWait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		else if (obj.name == "f_OneWayFrom2")
		{
			document.getElementById('ajaxOutBound2Wait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		else if (obj.name == "f_ReturnFrom2")
		{
			document.getElementById('ajaxInBound2Wait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		
		request.open("GET", url, true);
		request.onreadystatechange = function() {updateBuildRouteRates(obj.name);}
		request.send(null);	
	}
}

function updateBuildRouteRates(objName)
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var response = request.responseText;
			objFillArea.innerHTML = response;
			
			//modify the english text "From..." and "To..." to their equivalent language text
			
			//for One Way selection
			document.getElementById("f_OneWayTo").options[0].text = document.getElementById("toText").value;
			
			//for Return selection
			document.getElementById("f_OneWayTo2").options[0].text = document.getElementById("toText").value;
			document.getElementById("f_ReturnFrom2").options[0].text = document.getElementById("fromText").value;
			document.getElementById("f_ReturnTo2").options[0].text = document.getElementById("toText").value;
			
			if (objName == "f_OneWayFrom")
			{
				document.getElementById('ajaxOutBoundWait').innerHTML = '';
			}
			else if (objName == "f_OneWayFrom2")
			{
				document.getElementById('ajaxOutBound2Wait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
			}
			
			if (objName == "f_OneWayTo2")
			{
				//SeasonsColorOutboundForBooking('return');
			}
		}
		else if (request.status == 404)
		{
			if (objName == "f_OneWayFrom")
			{
				document.getElementById('ajaxOutBoundWait').innerHTML = '';
			}
			else if (objName == "f_OneWayTo2")
			{
				document.getElementById('ajaxOutBound2Wait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
			}
			alert("Page Does Not Exist!");
		}
		else
		{
			if (objName == "f_OneWayFrom")
			{
				document.getElementById('ajaxOutBoundWait').innerHTML = '';
			}
			else if (objName == "f_OneWayTo2")
			{
				document.getElementById('ajaxOutBound2Wait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
			}
			alert("Error: status code is " + request.status);
		}
	}
}

function VehiclePrice(company_id, obj, idFillArea)
{
	request = renewRequest();
	var oneWayFromText, oneWayFromValue, oneWayToText, oneWayToValue;
	var oneWayFromText2, oneWayFromValue2, oneWayToText2, oneWayToValue2;
	var returnFromText2, returnFromValue2, returnToText2, returnToValue2;
	
	var departure_port_id_one_way, arrival_port_id_one_way, departure_date_one_way;
	var departure_port_id_return, arrival_port_id_return, departure_date_return;
	
	var route_type, vehicle_category_id, url;
	
	route_type = "";
	if (document.getElementById('radioOneWay').checked == true) {route_type = "oneway";} else {route_type = "return";}
	
	vehicle_category_id = obj.value.split("|")[1];
	
	if (route_type == 'oneway')
	{
		oneWayFromText = document.getElementById('f_OneWayFrom')[document.getElementById('f_OneWayFrom').selectedIndex].text;
		oneWayFromValue = document.getElementById('f_OneWayFrom')[document.getElementById('f_OneWayFrom').selectedIndex].value;
		oneWayToText = document.getElementById('f_OneWayTo')[document.getElementById('f_OneWayTo').selectedIndex].text;
		oneWayToValue = document.getElementById('f_OneWayTo')[document.getElementById('f_OneWayTo').selectedIndex].value;
		//alert(oneWayFromText + " " + oneWayFromValue + " " + oneWayToText + " " + oneWayToValue);
		
		departure_port_id_one_way = oneWayFromValue.split("|")[0];
		arrival_port_id_one_way = oneWayToValue.split("|")[0];
		departure_date_one_way = document.getElementById('f_OutboundDate').value;

		// assign ajax URL parameters and fill area (for one way )
		url = "/includes/vehicle_price.asp?company_id=" + company_id 
				+ "&route_type=" + route_type 
				+ "&departure_port_id_one_way=" + departure_port_id_one_way 
				+ "&arrival_port_id_one_way=" + arrival_port_id_one_way 
				+ "&departure_date_one_way=" + departure_date_one_way 
				+ "&vehicle_category_id=" + vehicle_category_id 
		//alert(url);
		objFillArea = document.getElementById(idFillArea);
	}
	else
	{
		// outbound
		oneWayFromText2 = document.getElementById('f_OneWayFrom2')[document.getElementById('f_OneWayFrom2').selectedIndex].text;
		oneWayFromValue2 = document.getElementById('f_OneWayFrom2')[document.getElementById('f_OneWayFrom2').selectedIndex].value;
		oneWayToText2 = document.getElementById('f_OneWayTo2')[document.getElementById('f_OneWayTo2').selectedIndex].text;
		oneWayToValue2 = document.getElementById('f_OneWayTo2')[document.getElementById('f_OneWayTo2').selectedIndex].value;
		//alert(oneWayFromText2 + " " + oneWayFromValue2 + " " + oneWayToText2 + " " + oneWayToValue2);
		
		departure_port_id_one_way = oneWayFromValue2.split("|")[0];
		arrival_port_id_one_way = oneWayToValue2.split("|")[0];
		departure_date_one_way = document.getElementById('f_OutboundDate2').value;
		
		// inbound
		returnFromText2 = document.getElementById('f_ReturnFrom2')[document.getElementById('f_ReturnFrom2').selectedIndex].text;
		returnFromValue2 = document.getElementById('f_ReturnFrom2')[document.getElementById('f_ReturnFrom2').selectedIndex].value;
		returnToText2 = document.getElementById('f_ReturnTo2')[document.getElementById('f_ReturnTo2').selectedIndex].text;
		returnToValue2 = document.getElementById('f_ReturnTo2')[document.getElementById('f_ReturnTo2').selectedIndex].value;
		//alert(returnFromText2 + " " + returnFromValue2 + " " + returnToText2 + " " + returnToValue2);
		
		departure_port_id_return = returnFromValue2.split("|")[0];
		arrival_port_id_return = returnToValue2.split("|")[0];
		departure_date_return = document.getElementById('f_InboundDate2').value;

		// assign ajax URL parameters and fill area (for return)
		url = "/includes/vehicle_price.asp?company_id=" + company_id 
				+ "&route_type=" + route_type 
				+ "&departure_port_id_one_way=" + departure_port_id_one_way 
				+ "&arrival_port_id_one_way=" + arrival_port_id_one_way 
				+ "&departure_date_one_way=" + departure_date_one_way 
				+ "&departure_port_id_return=" + departure_port_id_return
				+ "&arrival_port_id_return=" + arrival_port_id_return 
				+ "&departure_date_return=" + departure_date_return 
				+ "&vehicle_category_id=" + vehicle_category_id 
		//alert(url);
		objFillArea = document.getElementById(idFillArea);
	}
	
	request.open("GET", url, true);
	request.onreadystatechange = updateVehiclePrice;
	request.send(null);	
}

function updateVehiclePrice()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var response = request.responseText;
			objFillArea.innerHTML = response;
			
			// update the total vehicle price
			var objTotalVehiclePrice = document.getElementById("totalVehiclePrice")
			var vehiclePrice1 = 0;
			var vehiclePrice2 = 0;
			var totalVehiclePrice = 0;
			
			// get the FIRST vehicle price as long as it is a number, otherwise it will remain zero
			if (!isNaN(parseFloat(document.getElementById("priceVehicle1").innerHTML.replace("€",""))))
			{
				vehiclePrice1 = parseFloat(document.getElementById("priceVehicle1").innerHTML.replace("€",""));
			}
			// get the SECOND vehicle price as long as it is a number, otherwise it will remain zero
			if (!isNaN(parseFloat(document.getElementById("priceVehicle2").innerHTML.replace("€",""))))
			{
				vehiclePrice2 = parseFloat(document.getElementById("priceVehicle2").innerHTML.replace("€",""));
			}
			
			// calculate the vehicle total price
			totalVehiclePrice = vehiclePrice1 + vehiclePrice2;
			
			if (totalVehiclePrice == 0)
			{
				// instead of showing "0 €", send &nbsp; (equivalent to &#160; for xsl) instead
				objTotalVehiclePrice.innerHTML = "&#160;";
			}
			else
			{
				// show the total in Euros
				objTotalVehiclePrice.innerHTML = totalVehiclePrice.toFixed(2) + " €";
			}
			
			document.getElementById("priceVehicle1Hidden").value = vehiclePrice1.toFixed(2) + " €";
			document.getElementById("priceVehicle2Hidden").value = vehiclePrice2.toFixed(2) + " €";
			document.getElementById("totalVehiclePriceHidden").value = totalVehiclePrice.toFixed(2) + " €";
		}
		else if (request.status == 404)
		{
			alert("Page Does Not Exist!");
		}
		else
		{
			alert("Error: status code is " + request.status);
		}
	}
}

function checkAvailability(obj, lang)
{
	request = renewRequest();
	var company_id = document.getElementById('iCompanyID').value;
	var date_name = obj.name;
	
	var oneWayFromText, oneWayFromValue, oneWayToText, oneWayToValue;
	var oneWayFromText2, oneWayFromValue2, oneWayToText2, oneWayToValue2;
	var returnFromText2, returnFromValue2, returnToText2, returnToValue2;
	
	var departure_port_id, arrival_port_id, departure_date;
	
	var route_type, url;

	if (date_name == 'f_OutboundDate')
	{
		oneWayFromText = document.getElementById('f_OneWayFrom')[document.getElementById('f_OneWayFrom').selectedIndex].text;
		oneWayFromValue = document.getElementById('f_OneWayFrom')[document.getElementById('f_OneWayFrom').selectedIndex].value;
		oneWayToText = document.getElementById('f_OneWayTo')[document.getElementById('f_OneWayTo').selectedIndex].text;
		oneWayToValue = document.getElementById('f_OneWayTo')[document.getElementById('f_OneWayTo').selectedIndex].value;
		//alert(oneWayFromText + " " + oneWayFromValue + " " + oneWayToText + " " + oneWayToValue);
		
		departure_port_id = oneWayFromValue.split("|")[0];
		arrival_port_id = oneWayToValue.split("|")[0];
		departure_date = document.getElementById('f_OutboundDate').value;
	}
	else if (date_name == 'f_OutboundDate2')
	{
		oneWayFromText2 = document.getElementById('f_OneWayFrom2')[document.getElementById('f_OneWayFrom2').selectedIndex].text;
		oneWayFromValue2 = document.getElementById('f_OneWayFrom2')[document.getElementById('f_OneWayFrom2').selectedIndex].value;
		oneWayToText2 = document.getElementById('f_OneWayTo2')[document.getElementById('f_OneWayTo2').selectedIndex].text;
		oneWayToValue2 = document.getElementById('f_OneWayTo2')[document.getElementById('f_OneWayTo2').selectedIndex].value;
		//alert(oneWayFromText2 + " " + oneWayFromValue2 + " " + oneWayToText2 + " " + oneWayToValue2);
		
		departure_port_id = oneWayFromValue2.split("|")[0];
		arrival_port_id = oneWayToValue2.split("|")[0];
		departure_date = document.getElementById('f_OutboundDate2').value;
	}
	else if (date_name == 'f_InboundDate2')
	{
		// inbound
		returnFromText2 = document.getElementById('f_ReturnFrom2')[document.getElementById('f_ReturnFrom2').selectedIndex].text;
		returnFromValue2 = document.getElementById('f_ReturnFrom2')[document.getElementById('f_ReturnFrom2').selectedIndex].value;
		returnToText2 = document.getElementById('f_ReturnTo2')[document.getElementById('f_ReturnTo2').selectedIndex].text;
		returnToValue2 = document.getElementById('f_ReturnTo2')[document.getElementById('f_ReturnTo2').selectedIndex].value;
		//alert(returnFromText2 + " " + returnFromValue2 + " " + returnToText2 + " " + returnToValue2);
		
		departure_port_id = returnFromValue2.split("|")[0];
		arrival_port_id = returnToValue2.split("|")[0];
		departure_date = document.getElementById('f_InboundDate2').value;
	}
	// assign ajax URL parameters and fill area (for one way )
	url = "/includes/check_availability.asp?company_id=" + company_id 
			+ "&departure_port_id=" + departure_port_id 
			+ "&arrival_port_id=" + arrival_port_id 
			+ "&departure_date=" + departure_date;
	//alert(url);
	objFillArea = document.getElementById('availabilityMessage');	

	request.open("GET", url, true);
	request.onreadystatechange = updateCheckAvailability;
	request.send(null);	
}

function updateCheckAvailability()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var response = request.responseText;
			objFillArea.innerHTML = response;
		}
		else if (request.status == 404)
		{
			alert("Page Does Not Exist!");
		}
		else
		{
			alert("Error: status code is " + request.status);
		}
	}
}

function PassengerPrice(company_id, objPassengerType, objClassCode, idFillArea)
{
	request = renewRequest();
	
	var passenger_type;
	var oneWayFromText, oneWayFromValue, oneWayToText, oneWayToValue;
	var oneWayFromText2, oneWayFromValue2, oneWayToText2, oneWayToValue2;
	var returnFromText2, returnFromValue2, returnToText2, returnToValue2;
	
	var departure_port_id_one_way, arrival_port_id_one_way, departure_date_one_way;
	var departure_port_id_return, arrival_port_id_return, departure_date_return;
	
	var route_type, passenger_type, class_code, url;
	
	passenger_type = objPassengerType.value;
		
	route_type = "";
	if (document.getElementById('radioOneWay').checked == true) {route_type = "oneway";} else {route_type = "return";}
	
	class_code = objClassCode.value;
	
	if (route_type == 'oneway')
	{
		oneWayFromText = document.getElementById('f_OneWayFrom')[document.getElementById('f_OneWayFrom').selectedIndex].text;
		oneWayFromValue = document.getElementById('f_OneWayFrom')[document.getElementById('f_OneWayFrom').selectedIndex].value;
		oneWayToText = document.getElementById('f_OneWayTo')[document.getElementById('f_OneWayTo').selectedIndex].text;
		oneWayToValue = document.getElementById('f_OneWayTo')[document.getElementById('f_OneWayTo').selectedIndex].value;
		//alert(oneWayFromText + " " + oneWayFromValue + " " + oneWayToText + " " + oneWayToValue);
		
		departure_port_id_one_way = oneWayFromValue.split("|")[0];
		arrival_port_id_one_way = oneWayToValue.split("|")[0];
		departure_date_one_way = document.getElementById('f_OutboundDate').value;

		// assign ajax URL parameters and fill area (for one way )
		url = "/includes/passenger_price.asp?company_id=" + company_id 
				+ "&route_type=" + route_type 
				+ "&passenger_type=" + passenger_type 
				+ "&departure_port_id_one_way=" + departure_port_id_one_way 
				+ "&arrival_port_id_one_way=" + arrival_port_id_one_way 
				+ "&departure_date_one_way=" + departure_date_one_way 
				+ "&class_code=" + class_code 
		//alert(url);
		objFillArea = document.getElementById(idFillArea);
	}
	else
	{
		// outbound
		oneWayFromText2 = document.getElementById('f_OneWayFrom2')[document.getElementById('f_OneWayFrom2').selectedIndex].text;
		oneWayFromValue2 = document.getElementById('f_OneWayFrom2')[document.getElementById('f_OneWayFrom2').selectedIndex].value;
		oneWayToText2 = document.getElementById('f_OneWayTo2')[document.getElementById('f_OneWayTo2').selectedIndex].text;
		oneWayToValue2 = document.getElementById('f_OneWayTo2')[document.getElementById('f_OneWayTo2').selectedIndex].value;
		//alert(oneWayFromText2 + " " + oneWayFromValue2 + " " + oneWayToText2 + " " + oneWayToValue2);
		
		departure_port_id_one_way = oneWayFromValue2.split("|")[0];
		arrival_port_id_one_way = oneWayToValue2.split("|")[0];
		departure_date_one_way = document.getElementById('f_OutboundDate2').value;
		
		// inbound
		returnFromText2 = document.getElementById('f_ReturnFrom2')[document.getElementById('f_ReturnFrom2').selectedIndex].text;
		returnFromValue2 = document.getElementById('f_ReturnFrom2')[document.getElementById('f_ReturnFrom2').selectedIndex].value;
		returnToText2 = document.getElementById('f_ReturnTo2')[document.getElementById('f_ReturnTo2').selectedIndex].text;
		returnToValue2 = document.getElementById('f_ReturnTo2')[document.getElementById('f_ReturnTo2').selectedIndex].value;
		//alert(returnFromText2 + " " + returnFromValue2 + " " + returnToText2 + " " + returnToValue2);
		
		departure_port_id_return = returnFromValue2.split("|")[0];
		arrival_port_id_return = returnToValue2.split("|")[0];
		departure_date_return = document.getElementById('f_InboundDate2').value;

		// assign ajax URL parameters and fill area (for return)
		url = "/includes/passenger_price.asp?company_id=" + company_id 
				+ "&route_type=" + route_type 
				+ "&passenger_type=" + passenger_type 
				+ "&departure_port_id_one_way=" + departure_port_id_one_way 
				+ "&arrival_port_id_one_way=" + arrival_port_id_one_way 
				+ "&departure_date_one_way=" + departure_date_one_way 
				+ "&departure_port_id_return=" + departure_port_id_return
				+ "&arrival_port_id_return=" + arrival_port_id_return 
				+ "&departure_date_return=" + departure_date_return 
				+ "&class_code=" + class_code 
		//alert(url);
		objFillArea = document.getElementById(idFillArea);
	}

	request.open("GET", url, true);
	request.onreadystatechange = updatePassengerPrice;
	request.send(null);	

}

function updatePassengerPrice()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var response = request.responseText;
			objFillArea.innerHTML = response;
			
			var objTotalPassengerPrice = document.getElementById("totalPassengerPrice")
			var totalPassengerPrice = 0;
			
			var numPassengers = document.getElementById("numPassengers").value;
			
			for(var i=1;i <= numPassengers;i++)
			{
				if (!isNaN(parseFloat(document.getElementById("passPrice" + i).innerHTML.replace("€",""))))
				{
					document.getElementById("passPrice" + i + "Hidden").value = document.getElementById("passPrice" + i).innerHTML;
					totalPassengerPrice = totalPassengerPrice + parseFloat(document.getElementById("passPrice" + i).innerHTML.replace("€",""));
				}
			}
			
			if (totalPassengerPrice == 0)
			{
				// instead of showing "0 €", send &nbsp; (equivalent to &#160; for xsl) instead
				objTotalPassengerPrice.innerHTML = "&#160;";
			}
			else
			{
				// show the total in Euros
				objTotalPassengerPrice.innerHTML = totalPassengerPrice.toFixed(2) + " €";
			}
			
			document.getElementById("totalPassengerPriceHidden").value = totalPassengerPrice.toFixed(2) + " €";
		}
		else if (request.status == 404)
		{
			alert("Page Does Not Exist!");
		}
		else
		{
			alert("Error: status code is " + request.status);
		}
	}
}

function updatePricesSchedules()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			document.getElementById('pricesSchedules').innerHTML = '';
			var response = request.responseText;
			objFillArea.innerHTML = response;
			var hh = new HelpHover();
			hh.init();
			
			document.getElementById("searchButton").style.visibility = "hidden";	// hide the price continue button
		}
		else if (request.status == 404)
		{
			document.getElementById('pricesSchedules').innerHTML = '';
			alert("Page Does Not Exist!");
		}
		else
		{
			document.getElementById('pricesSchedules').innerHTML = '';
			alert("Error: status code is " + request.status);
		}
	}
}

function updatePricesRates()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			document.getElementById('pricesRates').innerHTML = '';
			var response = request.responseText;
			objFillArea.innerHTML = response;
			var hh = new HelpHover();
			hh.init();
			
			//document.getElementById("searchButton").style.visibility = "hidden";	// hide the price continue button
		}
		else if (request.status == 404)
		{
			document.getElementById('pricesRates').innerHTML = '';
			alert("Page Does Not Exist!");
		}
		else
		{
			document.getElementById('pricesRates').innerHTML = '';
			alert("Error: status code is " + request.status);
		}
	}
}

function updateCumulativeOffersRates()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			document.getElementById('offersRates').innerHTML = '';
			var response = request.responseText;
			objFillArea.innerHTML = response;
			var hh = new HelpHover();
			hh.init();
			
			//document.getElementById("searchButton").style.visibility = "hidden";	// hide the price continue button
		}
		else if (request.status == 404)
		{
			document.getElementById('cumulativeOffersRates').innerHTML = '';
			alert("Page Does Not Exist!");
		}
		else
		{
			document.getElementById('cumulativeOffersRates').innerHTML = '';
			alert("Error: status code is " + request.status);
		}
	}
}

function updateOffersRates()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			document.getElementById('offersRates').innerHTML = '';
			var response = request.responseText;
			objFillArea.innerHTML = response;
			var hh = new HelpHover();
			hh.init();
			
			//document.getElementById("searchButton").style.visibility = "hidden";	// hide the price continue button
		}
		else if (request.status == 404)
		{
			document.getElementById('offersRates').innerHTML = '';
			alert("Page Does Not Exist!");
		}
		else
		{
			document.getElementById('offersRates').innerHTML = '';
			alert("Error: status code is " + request.status);
		}
	}
}

function SeasonsColorOutbound(type)
{
	request = renewRequest();
	var company_id = document.getElementById('iCompanyID').value;
	//alert(company_id);
	
	var departure_port_id_outbound = document.getElementById("sDepartureOutboundPortID").value;
	var arrival_port_id_outbound = document.getElementById("sArrivalOutboundPortID").value;
	//alert(departure_port_id_outbound);
	//alert(arrival_port_id_outbound);

	departure_port_id = departure_port_id_outbound;
	arrival_port_id = arrival_port_id_outbound;
	
	url = "/includes/season_colors.asp?company_id=" + company_id 
			+ "&departure_port_id=" + departure_port_id
			+ "&arrival_port_id=" + arrival_port_id
	//alert(url);

	request.open("GET", url, true);
	document.getElementById('calOutboundDate').innerHTML = '<img src="/images/pics/ajax-loader3.gif" style="margin-top:50px;" />';
	request.onreadystatechange = updateSeasonsColorOutbound;
	request.send(null);
}

function updateSeasonsColorOutbound()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			document.getElementById('calOutboundDate').innerHTML = '';
			var response = request.responseText;
			updateSeasonsColorOutboundXML(response);
			//SeasonsColorInbound();
		}
		else if (request.status == 404)
		{
			document.getElementById('calOutboundDate').innerHTML = '';
			alert("Page Does Not Exist!");
		}
		else
		{
			document.getElementById('calOutboundDate').innerHTML = '';
			alert("Error: status code is " + request.status);
		}
	}
}

function updateSeasonsColorOutboundXML(response)
{
	// code for IE
	if (window.ActiveXObject)
	{
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async=false;
		doc.loadXML(response);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else 
	{
		var parser=new DOMParser();
		var doc=parser.parseFromString(response,"text/xml");
	}
	var xml = doc.documentElement;
	
	var objNodeList = xml.getElementsByTagName("Section");
	var objNode;
	var internalObjNode;
	var date;
	var day, month, year;
	var color;
	
	for (var i = 0; i < objNodeList.length; i++)
	{
		objNode = objNodeList[i];
		date = objNode.getElementsByTagName("date")[0].childNodes[0].nodeValue;

		var dateSeparator;
		if (date.search("/") == -1)	dateSeparator = "."; else dateSeparator = "/";

		day = parseFloat(date.split(dateSeparator)[0]).toFixed(0);
		month = parseFloat(date.split(dateSeparator)[1]).toFixed(0);
		year = date.split(dateSeparator)[2];
		
		color = objNode.getElementsByTagName("color")[0].childNodes[0].nodeValue;

		SPECIAL_DAYS_OUTBOUND.push(day.toString() + "/" + month.toString() + "/" + year.toString());
		SPECIAL_DAYS_OUTBOUND.push(color);
	}
	
	document.getElementById("calOutboundDate").innerHTML = "";
	Calendar.setup(
		{
			flat						:	"calOutboundDate",
			ifFormat				: "%d/%m/%Y",
			displayArea			: "f_OutboundDate",
			weekNumbers			:	false,
			range						: [today.getFullYear(), today.getFullYear() + 1 ],
			dateStatusFunc	:	dateIsSpecialOutbound,
			flatCallback		: dateChanged
		}
	);
	
	SeasonsColorInbound();
}

function SeasonsColorInbound(type)
{
	request = renewRequest();
	var company_id = document.getElementById('iCompanyID').value;
	//alert(company_id);
	
	var departure_port_id_inbound = document.getElementById("sDepartureInboundPortID").value;
	var arrival_port_id_inbound = document.getElementById("sArrivalInboundPortID").value;
	//alert(departure_port_id_inbound);
	//alert(arrival_port_id_inbound);

	departure_port_id = departure_port_id_inbound;
	arrival_port_id = arrival_port_id_inbound;
	
	url = "/includes/season_colors.asp?company_id=" + company_id 
			+ "&departure_port_id=" + departure_port_id
			+ "&arrival_port_id=" + arrival_port_id
	//alert(url);

	request.open("GET", url, true);
	document.getElementById('calInboundDate').innerHTML = '<img src="/images/pics/ajax-loader3.gif" style="margin-top:50px;" />';
	request.onreadystatechange = updateSeasonsColorInbound;
	request.send(null);
}

function updateSeasonsColorInbound()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			document.getElementById('calInboundDate').innerHTML = '';
			var response = request.responseText;
			updateSeasonsColorInboundXML(response);
		}
		else if (request.status == 404)
		{
			document.getElementById('calInboundDate').innerHTML = '';
			alert("Page Does Not Exist!");
		}
		else
		{
			document.getElementById('calInboundDate').innerHTML = '';
			alert("Error: status code is " + request.status);
		}
	}
}

function updateSeasonsColorInboundXML(response)
{
	// code for IE
	if (window.ActiveXObject)
	{
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async=false;
		doc.loadXML(response);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else 
	{
		var parser=new DOMParser();
		var doc=parser.parseFromString(response,"text/xml");
	}
	
	var xml = doc.documentElement;
	var objNodeList = xml.getElementsByTagName("Section");
	var objNode;
	var internalObjNode;
	var date;
	var day, month, year;
	var color;
	
	for (var i = 0; i < objNodeList.length; i++)
	{
		objNode = objNodeList[i];
		date = objNode.getElementsByTagName("date")[0].childNodes[0].nodeValue;

		var dateSeparator;
		if (date.search("/") == -1)	dateSeparator = "."; else dateSeparator = "/";

		day = parseFloat(date.split(dateSeparator)[0]).toFixed(0);
		month = parseFloat(date.split(dateSeparator)[1]).toFixed(0);
		year = date.split(dateSeparator)[2];

		color = objNode.getElementsByTagName("color")[0].childNodes[0].nodeValue;
		
		SPECIAL_DAYS_INBOUND.push(day.toString() + "/" + month.toString() + "/" + year.toString());
		SPECIAL_DAYS_INBOUND.push(color);
	}
	
	document.getElementById("calInboundDate").innerHTML = "";
	Calendar.setup(
		{
			flat						: "calInboundDate",
			ifFormat				: "%d/%m/%Y", 
			displayArea			: "f_InboundDate",
			weekNumbers			:	false,
			range						: [today.getFullYear(), today.getFullYear() + 1 ],
			date						:	futureDate,
			dateStatusFunc	:	dateIsSpecialInbound,
			flatCallback		: dateChanged
		}
	);
}

function SeasonsColorOutboundForBooking(route_type)
{
	request = renewRequest();
	var company_id = document.getElementById('iCompanyID').value;
	//alert(company_id);
	
	if (route_type == 'oneway')
	{
		var departure_port_id_outbound = document.getElementById("f_OneWayFrom").options[document.getElementById("f_OneWayFrom").selectedIndex].value.split("|")[0]
		var arrival_port_id_outbound = document.getElementById("f_OneWayTo").options[document.getElementById("f_OneWayTo").selectedIndex].value.split("|")[0];
	}
	else
	{
		var departure_port_id_outbound = document.getElementById("f_OneWayFrom2").options[document.getElementById("f_OneWayFrom2").selectedIndex].value.split("|")[0]
		var arrival_port_id_outbound = document.getElementById("f_OneWayTo2").options[document.getElementById("f_OneWayTo2").selectedIndex].value.split("|")[0];
	}
	//alert(departure_port_id_outbound);
	//alert(arrival_port_id_outbound);
	
	if (arrival_port_id_outbound == 0)
	{
		if (route_type == 'oneway')
		{
			resetForm('routes', document.getElementById("f_OneWayTo"), 'SeasonsColorOutboundForBooking');
		}
		else
		{
			resetForm('routes', document.getElementById("f_OneWayTo2"), 'SeasonsColorOutboundForBooking');
		}
	}
	else
	{
		if (route_type == 'oneway')
		{
			resetForm('routes', document.getElementById("f_OneWayTo"), 'SeasonsColorOutboundForBooking');
		}
		else
		{
			resetForm('routes', document.getElementById("f_OneWayTo2"), 'SeasonsColorOutboundForBooking');
		}
		
		departure_port_id = departure_port_id_outbound;
		arrival_port_id = arrival_port_id_outbound;
		
		url = "/includes/season_colors.asp?company_id=" + company_id 
				+ "&departure_port_id=" + departure_port_id
				+ "&arrival_port_id=" + arrival_port_id
		//alert(url);
	
		request.open("GET", url, true);
		if (route_type == 'oneway')
		{
			document.getElementById('ajaxOutBoundDateWait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:2px;"/>';
		}
		else
		{
			document.getElementById('ajaxOutBound2DateWait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:2px;"/>';
			document.getElementById('ajaxInBound2Wait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:35px;"/>';
		}
		request.onreadystatechange = function() {updateSeasonsColorOutboundForBooking(route_type);}
		request.send(null);
	}
}

function updateSeasonsColorOutboundForBooking(route_type)
{
	//alert(request.readyState);
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			if (route_type == 'oneway')
			{
				document.getElementById('ajaxOutBoundDateWait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxOutBound2DateWait').innerHTML = '';
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
			}
			var response = request.responseText;
			updateSeasonsColorOutboundXMLForBooking(response, route_type);
			//SeasonsColorInboundForBooking();
			
		}
		else if (request.status == 404)
		{
			if (route_type == 'oneway')
			{
				document.getElementById('ajaxOutBoundDateWait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxOutBound2DateWait').innerHTML = '';
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
			}
			alert("Page Does Not Exist!");
		}
		else
		{
			if (route_type == 'oneway')
			{
				document.getElementById('ajaxOutBoundDateWait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxOutBound2DateWait').innerHTML = '';
				document.getElementById('ajaxInBound2Wait').innerHTML = '';
			}
			alert("Error: status code is " + request.status);
		}
	}
}

function updateSeasonsColorOutboundXMLForBooking(response, route_type)
{
	// code for IE
	if (window.ActiveXObject)
	{
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async=false;
		doc.loadXML(response);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else 
	{
		var parser=new DOMParser();
		var doc=parser.parseFromString(response,"text/xml");
	}
	var xml = doc.documentElement;
	
	var objNodeList = xml.getElementsByTagName("Section");
	var objNode;
	var internalObjNode;
	var date;
	var color;
	
	SPECIAL_DAYS_OUTBOUND = new Array();
	for (var i = 0; i < objNodeList.length; i++)
	{
		/*
		objNode = objNodeList[i];
		date = objNode.getElementsByTagName("date")[0].childNodes[0].nodeValue;
		color = objNode.getElementsByTagName("color")[0].childNodes[0].nodeValue;
		
		SPECIAL_DAYS_OUTBOUND.push(date.toString());
		SPECIAL_DAYS_OUTBOUND.push(color);
		*/
		
		objNode = objNodeList[i];
		date = objNode.getElementsByTagName("date")[0].childNodes[0].nodeValue;

		var dateSeparator;
		if (date.search("/") == -1)	dateSeparator = "."; else dateSeparator = "/";

		day = parseFloat(date.split(dateSeparator)[0]).toFixed(0);
		month = parseFloat(date.split(dateSeparator)[1]).toFixed(0);
		year = date.split(dateSeparator)[2];
		
		color = objNode.getElementsByTagName("color")[0].childNodes[0].nodeValue;

		SPECIAL_DAYS_OUTBOUND.push(day.toString() + "/" + month.toString() + "/" + year.toString());
		SPECIAL_DAYS_OUTBOUND.push(color);
		
	}
	
	//document.getElementById("ajaxOutBoundDateWait").innerHTML = "";

	if (route_type == "oneway")
	{
		Calendar.setup(
			{
				inputField			: "f_OutboundDate",  // ID of the input field
				ifFormat				: "%d/%m/%Y",     // the date format
				button					: "trgOutbound",       // ID of the button
				weekNumbers			:	false,
				range						: [today.getFullYear(), today.getFullYear() + 1 ],
				dateStatusFunc	:	dateIsSpecialOutbound,
				flatCallback		: dateChanged
			}
		);
	}
	else
	{
		Calendar.setup(
			{
				inputField			: "f_OutboundDate2",  // ID of the input field
				ifFormat				: "%d/%m/%Y",     // the date format
				button					: "trgOutbound2",       // ID of the button
				weekNumbers			:	false,
				range						: [today.getFullYear(), today.getFullYear() + 1 ],
				dateStatusFunc	:	dateIsSpecialOutbound,
				flatCallback		: dateChanged
			}
		);
	}
	
	setFormReset(true);	// to allow clearing of the date field and calendar pop up
}



function SeasonsColorOutboundForBookingSelected(route_type)
{
	request = renewRequest();
	var company_id = document.getElementById('iCompanyID').value;
	//alert(company_id);
	
	if (route_type == 'oneway')
	{
		var departure_port_id_outbound = document.getElementById("f_OneWayFrom").options[document.getElementById("f_OneWayFrom").selectedIndex].value.split("|")[0]
		var arrival_port_id_outbound = document.getElementById("f_OneWayTo").options[document.getElementById("f_OneWayTo").selectedIndex].value.split("|")[0];
	}
	else
	{
		var departure_port_id_outbound = document.getElementById("f_OneWayFrom2").options[document.getElementById("f_OneWayFrom2").selectedIndex].value.split("|")[0]
		var arrival_port_id_outbound = document.getElementById("f_OneWayTo2").options[document.getElementById("f_OneWayTo2").selectedIndex].value.split("|")[0];
	}
	//alert(departure_port_id_outbound);
	//alert(arrival_port_id_outbound);

	departure_port_id = departure_port_id_outbound;
	arrival_port_id = arrival_port_id_outbound;
	
	url = "/includes/season_colors.asp?company_id=" + company_id 
			+ "&departure_port_id=" + departure_port_id
			+ "&arrival_port_id=" + arrival_port_id
	//alert(url);

	request.open("GET", url, true);
	if (route_type == "oneway")
	{
		document.getElementById('ajaxOutBoundDateWait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:2px;"/>';
	}
	else
	{
		document.getElementById('ajaxOutBound2DateWait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:2px;"/>';
	}
	request.onreadystatechange = function() {updateSeasonsColorOutboundForBookingSelected(route_type);}
	request.send(null);
}

function updateSeasonsColorOutboundForBookingSelected(route_type)
{
	//alert(request.readyState);
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			if (route_type == "oneway")
			{
				document.getElementById('ajaxOutBoundDateWait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxOutBound2DateWait').innerHTML = '';
			}
			var response = request.responseText;
			updateSeasonsColorOutboundXMLForBookingSelected(response, route_type);
			SeasonsColorInboundForBooking('return');
		}
		else if (request.status == 404)
		{
			if (route_type == "oneway")
			{
				document.getElementById('ajaxOutBoundDateWait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxOutBound2DateWait').innerHTML = '';
			}
			alert("Page Does Not Exist!");
		}
		else
		{
			if (route_type == "oneway")
			{
				document.getElementById('ajaxOutBoundDateWait').innerHTML = '';
			}
			else
			{
				document.getElementById('ajaxOutBound2DateWait').innerHTML = '';
			}
			alert("Error: status code is " + request.status);
		}
	}
}

function updateSeasonsColorOutboundXMLForBookingSelected(response, route_type)
{
	// code for IE
	if (window.ActiveXObject)
	{
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async=false;
		doc.loadXML(response);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else 
	{
		var parser=new DOMParser();
		var doc=parser.parseFromString(response,"text/xml");
	}
	var xml = doc.documentElement;
	
	var objNodeList = xml.getElementsByTagName("Section");
	var objNode;
	var internalObjNode;
	var date;
	var color;
	
	SPECIAL_DAYS_OUTBOUND = new Array();
	for (var i = 0; i < objNodeList.length; i++)
	{
		/*
		objNode = objNodeList[i];
		date = objNode.getElementsByTagName("date")[0].childNodes[0].nodeValue;
		color = objNode.getElementsByTagName("color")[0].childNodes[0].nodeValue;
		
		SPECIAL_DAYS_OUTBOUND.push(date.toString());
		SPECIAL_DAYS_OUTBOUND.push(color);
		*/
		
		objNode = objNodeList[i];
		date = objNode.getElementsByTagName("date")[0].childNodes[0].nodeValue;

		var dateSeparator;
		if (date.search("/") == -1)	dateSeparator = "."; else dateSeparator = "/";

		day = parseFloat(date.split(dateSeparator)[0]).toFixed(0);
		month = parseFloat(date.split(dateSeparator)[1]).toFixed(0);
		year = date.split(dateSeparator)[2];
		
		color = objNode.getElementsByTagName("color")[0].childNodes[0].nodeValue;

		SPECIAL_DAYS_OUTBOUND.push(day.toString() + "/" + month.toString() + "/" + year.toString());
		SPECIAL_DAYS_OUTBOUND.push(color);
	}
	
	//document.getElementById("ajaxOutBoundDateWait").innerHTML = "";

	//alert(route_type);
	if (route_type == "oneway")
	{
		Calendar.setup(
			{
				inputField			: "f_OutboundDate",  // ID of the input field
				ifFormat				: "%d/%m/%Y",     // the date format
				button					: "trgOutbound",       // ID of the button
				weekNumbers			:	false,
				range						: [today.getFullYear(), today.getFullYear() + 1 ],
				dateStatusFunc	:	dateIsSpecialOutbound,
				flatCallback		: dateChanged
			}
		);
	}
	else
	{
		Calendar.setup(
			{
				inputField			: "f_OutboundDate2",  // ID of the input field
				ifFormat				: "%d/%m/%Y",     // the date format
				button					: "trgOutbound2",       // ID of the button
				weekNumbers			:	false,
				range						: [today.getFullYear(), today.getFullYear() + 1 ],
				dateStatusFunc	:	dateIsSpecialOutbound,
				flatCallback		: dateChanged
			}
		);
	}
}




function SeasonsColorInboundForBooking(route_type)
{
	request = renewRequest();
	var company_id = document.getElementById('iCompanyID').value;
	//alert(company_id);
	
	if (route_type == 'oneway')
	{
		//do nothing (for clarity)
	}
	else
	{
		var departure_port_id_inbound = document.getElementById("f_ReturnFrom2").options[document.getElementById("f_ReturnFrom2").selectedIndex].value.split("|")[0]
		var arrival_port_id_inbound = document.getElementById("f_ReturnTo2").options[document.getElementById("f_ReturnTo2").selectedIndex].value.split("|")[0];
	}
	//alert(departure_port_id_inbound);
	//alert(arrival_port_id_inbound);
	
	if (arrival_port_id_inbound == 0)
	{
		if (route_type == 'oneway')
		{
			//do nothing (for clarity)
		}
		else
		{
			resetForm('routes', document.getElementById("f_ReturnTo2"), 'SeasonsColorInboundForBooking');
		}
	}
	else
	{
		if (route_type == 'oneway')
		{
			//do nothing (for clarity)
		}
		else
		{
			resetForm('routes', document.getElementById("f_ReturnTo2"), 'SeasonsColorInboundForBooking');
		}
		
		departure_port_id = departure_port_id_inbound;
		arrival_port_id = arrival_port_id_inbound;
		
		url = "/includes/season_colors.asp?company_id=" + company_id 
				+ "&departure_port_id=" + departure_port_id
				+ "&arrival_port_id=" + arrival_port_id
		//alert(url);
	
		request.open("GET", url, true);
		document.getElementById('ajaxInBound2DateWait').innerHTML = '<img src="/images/pics/ajax-loader4.gif" style="margin-left:2px;"/>';
		request.onreadystatechange = function() {updateSeasonsColorInboundForBooking(route_type);}
		request.send(null);
	}
}

function updateSeasonsColorInboundForBooking(route_type)
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			document.getElementById('ajaxInBound2DateWait').innerHTML = '';
			var response = request.responseText;
			updateSeasonsColorInboundXMLForBooking(response, route_type);
		}
		else if (request.status == 404)
		{
			document.getElementById('ajaxInBound2DateWait').innerHTML = '';
			alert("Page Does Not Exist!");
		}
		else
		{
			document.getElementById('ajaxInBound2DateWait').innerHTML = '';
			alert("Error: status code is " + request.status);
		}
	}
}

function updateSeasonsColorInboundXMLForBooking(response, route_type)
{
	// code for IE
	if (window.ActiveXObject)
	{
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async=false;
		doc.loadXML(response);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else 
	{
		var parser=new DOMParser();
		var doc=parser.parseFromString(response,"text/xml");
	}
	
	var xml = doc.documentElement;
	var objNodeList = xml.getElementsByTagName("Section");
	var objNode;
	var internalObjNode;
	var date;
	var color;
	
	SPECIAL_DAYS_INBOUND = new Array();
	for (var i = 0; i < objNodeList.length; i++)
	{
		/*
		objNode = objNodeList[i];
		date = objNode.getElementsByTagName("date")[0].childNodes[0].nodeValue;
		color = objNode.getElementsByTagName("color")[0].childNodes[0].nodeValue;
		
		SPECIAL_DAYS_INBOUND.push(date.toString());
		SPECIAL_DAYS_INBOUND.push(color);
		*/
		
		objNode = objNodeList[i];
		date = objNode.getElementsByTagName("date")[0].childNodes[0].nodeValue;

		var dateSeparator;
		if (date.search("/") == -1)	dateSeparator = "."; else dateSeparator = "/";

		day = parseFloat(date.split(dateSeparator)[0]).toFixed(0);
		month = parseFloat(date.split(dateSeparator)[1]).toFixed(0);
		year = date.split(dateSeparator)[2];

		color = objNode.getElementsByTagName("color")[0].childNodes[0].nodeValue;
		
		SPECIAL_DAYS_INBOUND.push(day.toString() + "/" + month.toString() + "/" + year.toString());
		SPECIAL_DAYS_INBOUND.push(color);
	}
	
	//document.getElementById("ajaxInBound2DateWait").innerHTML = "";
	
	//alert(route_type);
	if (route_type == "oneway")
	{
		// do nothing (for clarity)
	}
	else
	{
		Calendar.setup(
			{
				inputField			: "f_InboundDate2",  // ID of the input field
				ifFormat				: "%d/%m/%Y",     // the date format
				button					: "trgInbound2",       // ID of the button
				weekNumbers			:	false,
				range						: [today.getFullYear(), today.getFullYear() + 1 ],
				dateStatusFunc	:	dateIsSpecialInbound,
				flatCallback		: dateChanged
			}
		);
	}
	
	setFormReset(true);	// to allow clearing of the date field and calendar pop up
}

function verifyCaptchaCode(captchaCode)
{
	var captchaCode = document.getElementById("captchaCode").value.toLowerCase();
	//alert(captchaCode);
	
	request = renewRequest();
	var url = "/includes/getASPCAPTCHA.asp"
	request.open("GET", url, false);
	request.send(null);
	var captchaImageCode = request.responseText.toLowerCase();	// captcha code from image
	//alert(captchaImageCode);
	
	if (captchaImageCode == captchaCode)
	{
		// both codes match
		return true;
	}
	else
	{
		// both codes do not match
		return false;
	}
}

//for debug purposes (IE issues)
function showCaptchaCode()
{
	request = renewRequest();
	var url = "/includes/getASPCAPTCHA.asp"
	request.open("GET", url, false);
	request.send(null);
	var captchaImageCode = request.responseText.toLowerCase();	// captcha code from image
	alert(captchaImageCode);
	
	return true;
}

//for debug purposes (IE issues)
function clearCaptchaCode()
{
	request = renewRequest();
	var url = "/includes/clearASPCAPTCHA.asp"
	request.open("GET", url, false);
	request.send(null);
	return true;
}

/*
function updateSeasonality(target)
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			document.getElementById(target).innerHTML = '';
			var response = request.responseText;
			objFillArea.innerHTML = response;
			//updateSeasonalityXML(response);
		}
		else if (request.status == 404)
		{
			document.getElementById(target).innerHTML = '';
			alert("Page Does Not Exist!");
		}
		else
		{
			document.getElementById(target).innerHTML = '';
			alert("Error: status code is " + request.status);
		}
	}
}

function updateSeasonalityXML(response)
{
	// code for IE
	if (window.ActiveXObject)
	{
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async=false;
		doc.loadXML(response);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else 
	{
		var parser=new DOMParser();
		var doc=parser.parseFromString(response,"text/xml");
	}
	var xml = doc.documentElement;
	
	var objNodeList = xml.getElementsByTagName("Section");
	var objNode;
	var internalObjNode;
	var date;
	var day, month, year;
	var color;
	
	alert(objNodeList.length);
	
	for (var i = 0; i < objNodeList.length; i++)
	{
		objNode = objNodeList[i];
		date = objNode.getElementsByTagName("date")[0].childNodes[0].nodeValue;
		day = parseFloat(date.split("/")[0]).toFixed(0);
		month = parseFloat(date.split("/")[1]).toFixed(0);
		year = date.split("/")[2];
		color = objNode.getElementsByTagName("color")[0].childNodes[0].nodeValue;
		
		SEASONALITY.push(day.toString() + "/" + month.toString() + "/" + year.toString() + "|" + color);
	}
	
//	for (var i = 0; i < 5; i++)
//	{
//		alert(SEASONALITY[i].toString());
//	}

}
*/

// ----------------------------------
// FERRY ROUTINES
// ----------------------------------
// "custom" function that is activated at submission (this function MUST be modified as required for each form)
function setUserEmail(obj)
{
	// set custom form fields to the user's email address
	var userEmail = document.getElementById('perEmail').value;
	var userEmailCC = "";	// not used at the current moment - leave blank

	document.getElementById('mail_from').value = userEmail;
	document.getElementById('mail_replyto').value = userEmail;
	document.getElementById('mail_cc').value = userEmailCC;
}

function expandTrip(obj)
{
	var sTripType = obj.value;
	//alert(sTripType);
	
	document.getElementById('journeyAdvantageBox').style.display = 'none';
	document.getElementById('journeyAdvantageBox').style.visibility = 'hidden';
	document.getElementById('journeyInfoBox').style.display = 'block';
	document.getElementById('journeyInfoBox').style.visibility = 'visible';
	
	document.getElementById('availabilityMessage').innerHTML = '';
	if (sTripType == 'oneway')
	{
		document.getElementById('journeyInfoBoxOneWay').style.display = '';
		document.getElementById('journeyInfoBoxOneWay').style.visibility = 'visible';
		
		document.getElementById('journeyInfoBoxReturn').style.display = 'none';
		document.getElementById('journeyInfoBoxReturn').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('journeyInfoBoxOneWay').style.display = 'none';
		document.getElementById('journeyInfoBoxOneWay').style.visibility = 'hidden';
		
		document.getElementById('journeyInfoBoxReturn').style.display = '';
		document.getElementById('journeyInfoBoxReturn').style.visibility = 'visible';
	}
	
//			document.getElementById('passengerSelection').style.display = '';
//			document.getElementById('passengerSelection').style.visibility = 'visible';	
}

function expandTripRates(obj)
{
	var sTripType = obj.value;
	//alert(sTripType);
	
	document.getElementById('journeyAdvantageBox').style.display = 'none';
	document.getElementById('journeyAdvantageBox').style.visibility = 'hidden';
	document.getElementById('journeyInfoBox').style.display = 'block';
	document.getElementById('journeyInfoBox').style.visibility = 'visible';
	
	if (sTripType == 'oneway')
	{
		document.getElementById('journeyInfoBoxOneWay').style.display = '';
		document.getElementById('journeyInfoBoxOneWay').style.visibility = 'visible';
		
		document.getElementById('journeyInfoBoxReturn').style.display = 'none';
		document.getElementById('journeyInfoBoxReturn').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('journeyInfoBoxOneWay').style.display = 'none';
		document.getElementById('journeyInfoBoxOneWay').style.visibility = 'hidden';
		
		document.getElementById('journeyInfoBoxReturn').style.display = '';
		document.getElementById('journeyInfoBoxReturn').style.visibility = 'visible';
	}
	
	hidePassengerContinueButton(false, 'continue');
	hidePassengerVehicleDataForRates(true);
	clearPassengerVehicleDataForRates();
	hidePricesRatesForRates(true);
	hideOffersSectionsForRates(true);
	
//			document.getElementById('passengerSelection').style.display = '';
//			document.getElementById('passengerSelection').style.visibility = 'visible';	
}

function expandTripSeasonality(obj)
{
	var sTripType = obj.value;
	//alert(sTripType);
	
	document.getElementById('journeyInfoBox').style.display = 'block';
	document.getElementById('journeyInfoBox').style.visibility = 'visible';
	
	document.getElementById('journeyTypeMessageRow').style.display = 'none';
	document.getElementById('journeyTypeMessageRow').style.visibility = 'hidden';
	
	document.getElementById('f_DepRouteOneWay').options[0].selected = true;
	document.getElementById('f_DepRouteReturn').options[0].selected = true;
	document.getElementById('f_ArrRouteReturn').options[0].selected = true;
	
	document.getElementById('f_DepMonthOneWay').options[0].selected = true;
	document.getElementById('f_DepMonthReturn').options[0].selected = true;
	document.getElementById('f_ArrMonthReturn').options[0].selected = true;
	
	document.getElementById('seasonality').innerHTML = '';
	document.getElementById('seasonalityLeft').innerHTML = '';
	document.getElementById('seasonalityRight').innerHTML = '';
	
	document.getElementById('departure_date').value = '';
	document.getElementById('departure_port_id_outbound').value = '';
	document.getElementById('departure_port_name_outbound').value = '';
	document.getElementById('arrival_port_id_outbound').value = '';
	document.getElementById('arrival_port_name_outbound').value = '';
	
	document.getElementById('arrival_date').value = '';
	document.getElementById('departure_port_id_inbound').value = '';
	document.getElementById('departure_port_name_inbound').value = '';
	document.getElementById('arrival_port_id_inbound').value = '';
	document.getElementById('arrival_port_name_inbound').value = '';
	
	document.getElementById('pricesButtonSelection').style.display = 'none';
	document.getElementById('pricesButtonSelection').style.visibility = 'hidden';
	
	if (sTripType == 'oneway')
	{
		document.getElementById('route_type').value = 'oneway';
		
		document.getElementById('journeyInfoBoxOneWay').style.display = '';
		document.getElementById('journeyInfoBoxOneWay').style.visibility = 'visible';
		
		document.getElementById('journeyInfoBoxReturn').style.display = 'none';
		document.getElementById('journeyInfoBoxReturn').style.visibility = 'hidden';
		
		document.getElementById('seasonality').style.display = '';
		document.getElementById('seasonality').style.visibility = 'visible';
		
		document.getElementById('seasonalityLeft').style.display = 'none';
		document.getElementById('seasonalityLeft').style.visibility = 'hidden';
		
		document.getElementById('seasonalityRight').style.display = 'none';
		document.getElementById('seasonalityRight').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('route_type').value = 'return';
		
		document.getElementById('journeyInfoBoxOneWay').style.display = 'none';
		document.getElementById('journeyInfoBoxOneWay').style.visibility = 'hidden';
		
		document.getElementById('journeyInfoBoxReturn').style.display = '';
		document.getElementById('journeyInfoBoxReturn').style.visibility = 'visible';
		
		document.getElementById('seasonality').style.display = 'none';
		document.getElementById('seasonality').style.visibility = 'hidden';
		
		document.getElementById('seasonalityLeft').style.display = '';
		document.getElementById('seasonalityLeft').style.visibility = 'visible';
		
		document.getElementById('seasonalityRight').style.display = '';
		document.getElementById('seasonalityRight').style.visibility = 'visible';
	}
}

// this function is not used due to prices being shown on the booking form
function setInboundDateToOpen(obj, val)
{
	//alert(obj.checked);
	
	if (obj.checked == true)
	{
		document.getElementById('trgInbound2').style.visibility='hidden';
		document.getElementById('f_InboundDate2').value = val;
	}
	else
	{
		document.getElementById('trgInbound2').style.visibility='visible';
		document.getElementById('f_InboundDate2').value = '';
	}
}

function updateRoute(obj)
{
	var strRouteValue = obj.options[obj.selectedIndex].value;
	var strRouteText = obj.options[obj.selectedIndex].text;
	
	switch(obj.name)
	{
		case 'f_OneWayFrom':
			document.getElementById('f_OneWayFromName').value = strRouteText;
			break;
	
		case 'f_OneWayTo':
			document.getElementById('f_OneWayToName').value = strRouteText;
			break;
			
		case 'f_OneWayFrom2':
			document.getElementById('f_OneWayFrom2Name').value = strRouteText;
			break;
			
		case 'f_OneWayTo2':
			document.getElementById('f_OneWayTo2Name').value = strRouteText;
			break;
		
		case 'f_ReturnFrom2':
			document.getElementById('f_ReturnFrom2Name').value = strRouteText;
			break;
			
		case 'f_ReturnTo2':
			document.getElementById('f_ReturnTo2Name').value = strRouteText;
			break;
			
		case 'f_RouteFrom':	// for seasonality page
			document.getElementById('f_RouteFromID').value = strRouteValue.split("|")[0];
			document.getElementById('f_RouteFromName').value = strRouteText;
			break;
		
		case 'f_RouteTo':	// for seasonality page
			document.getElementById('f_RouteToID').value = strRouteValue.split("|")[0];
			document.getElementById('f_RouteToName').value = strRouteText;
			break;
	}
}

function updateRouteRates(obj)
{
	var strRouteValue = obj.options[obj.selectedIndex].value;
	var strRouteText = obj.options[obj.selectedIndex].text;
	//alert(obj.name);
	switch(obj.name)
	{
		case 'f_OneWayFrom':
			document.getElementById('f_OneWayFromName').value = strRouteText;
			break;
	
		case 'f_OneWayTo':
			document.getElementById('f_OneWayToName').value = strRouteText;
			break;
			
		case 'f_OneWayFrom2':
			document.getElementById('f_OneWayFrom2Name').value = strRouteText;
			break;
			
		case 'f_OneWayTo2':
			document.getElementById('f_OneWayTo2Name').value = strRouteText;
			break;
		
		case 'f_ReturnFrom2':
			document.getElementById('f_ReturnFrom2Name').value = strRouteText;
			break;
			
		case 'f_ReturnTo2':
			document.getElementById('f_ReturnTo2Name').value = strRouteText;
			break;
			
		case 'f_RouteFrom':	// for seasonality page
			document.getElementById('f_RouteFromID').value = strRouteValue.split("|")[0];
			document.getElementById('f_RouteFromName').value = strRouteText;
			break;
		
		case 'f_RouteTo':	// for seasonality page
			document.getElementById('f_RouteToID').value = strRouteValue.split("|")[0];
			document.getElementById('f_RouteToName').value = strRouteText;
			break;
	}
	
	hidePassengerContinueButton(false, 'continue');
	hidePassengerVehicleDataForRates(true);
	clearPassengerVehicleDataForRates();
	hidePricesRatesForRates(true);
	hideOffersSectionsForRates(true);
}

function changeCategory(obj)
{	
	var i = 0;
	var id = obj.name.charAt(obj.name.length-1);	// identify which passenger triggered this change
	var passengerType = obj.value;	// get the passenger type
	var catLength = document.getElementById('passAcc'+id).length;
	
	var sTripType;

	sTripType = "";
	var radioButtons = document.getElementsByName('radioTripType');
	for (var x = 0; x < radioButtons.length; x++) {
		if (radioButtons[x].checked) {
			sTripType = radioButtons[x].value;
		}
	}
	
	// if infant was selected, default the category to DECK and disable category selection
	if (passengerType == 'Infant')
	{
		// search for DECK category
		for (i=0; i <= catLength-1; i++)
		{
			if (document.getElementById('passAcc'+id).options[i].text.search(/DECK/) > -1)
			{
				document.getElementById('passAcc'+id).options[i].selected = true;
			}
		}
		
		// disable category selection for infants
		document.getElementById('passAcc' + id).disabled = true;
	}
	else
	{
		// enable category selection for adults and children passenger types
		if (sTripType != 'camping')
		{
			document.getElementById('passAcc' + id).disabled = false;
		}
	}
}

function changeCategoryRates(obj)
{	
	var i = 0;
	var id = obj.name.charAt(obj.name.length-1);	// identify which passenger triggered this change
	var passengerType = obj.value;	// get the passenger type
	var catLength = document.getElementById('passAcc'+id).length;
	
	var sTripType;

	sTripType = "";
	var radioButtons = document.getElementsByName('radioTripType');
	for (var x = 0; x < radioButtons.length; x++) {
		if (radioButtons[x].checked) {
			sTripType = radioButtons[x].value;
		}
	}
	
	// if infant (id = 3 from the PassengerType table - hardcoded for now) was selected, default the category to DECK and disable category selection
	if (passengerType == '3')
	{
		// search for DECK category
		for (i=0; i <= catLength-1; i++)
		{
			if (document.getElementById('passAcc'+id).options[i].text.search(/DECK/) > -1)
			{
				document.getElementById('passAcc'+id).options[i].selected = true;
			}
		}
		
		// disable category selection for infants
		document.getElementById('passAcc' + id).disabled = true;
	}
	else
	{
		// enable category selection for adults and children passenger types
		if (sTripType != 'camping')
		{
			document.getElementById('passAcc' + id).disabled = false;
		}
	}
}

function displayPassDataSECONDSECTIONMessage(bShowMessage)
{
	if (bShowMessage == true)
	{
		//hide passengerData SECOND SECTION
		document.getElementById('passDataSECONDSECTION').style.display = 'none';
		document.getElementById('passDataSECONDSECTION').style.visibility = 'hidden';
		
		//show passengerData SECOND SECTION Message
		document.getElementById('passDataSECONDSECTIONMessage').style.display = '';
		document.getElementById('passDataSECONDSECTIONMessage').style.visibility = 'visible';
		document.getElementById('passDataSECONDSECTIONButton').style.display = '';
		document.getElementById('passDataSECONDSECTIONButton').style.visibility = 'visible';
	}
	else
	{
		//hide passengerData SECOND SECTION
		document.getElementById('passDataSECONDSECTION').style.display = '';
		document.getElementById('passDataSECONDSECTION').style.visibility = 'visible';
		
		//show passengerData SECOND SECTION Message
		document.getElementById('passDataSECONDSECTIONMessage').style.display = 'none';
		document.getElementById('passDataSECONDSECTIONMessage').style.visibility = 'hidden';
		document.getElementById('passDataSECONDSECTIONButton').style.display = 'none';
		document.getElementById('passDataSECONDSECTIONButton').style.visibility = 'hidden';

	}
}

function displayNumVehicles(obj)
{
	if (obj.value == 'simple')
	{
		// disable number of vehicles for "passengers only"
		document.getElementById('numVehicles').disabled = true;
		// pre-set number of vehicles to 0
		//document.getElementById('numVehicles').selectedIndex = 0;
	}
	else if (obj.value == 'vehicle')
	{
		// enable number of vehicles for "passengers with vehicle(s)"
		document.getElementById('numVehicles').disabled = false;
		// pre-set number of vehicles to 1
		document.getElementById('numVehicles').selectedIndex = 0;
	}
	else if (obj.value == 'vehicletrailer')
	{
		// disable number of vehicles for "passengers with vehicle + trailer"
		document.getElementById('numVehicles').disabled = true;
		// pre-set number of vehicles to 2
		document.getElementById('numVehicles').selectedIndex = 1;
	}
	else if (obj.value == 'camping')
	{
		// disable number of vehicles for "passengers only"
		document.getElementById('numVehicles').disabled = false;
		// pre-set number of vehicles to 1
		document.getElementById('numVehicles').selectedIndex = 0;
	}
}

function hidePassengerData(bDisplay)
{
	if (bDisplay)
	{
		document.getElementById('passengerData').style.display = 'none';
		document.getElementById('passengerData').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('passengerData').style.display = '';
		document.getElementById('passengerData').style.visibility = 'visible';
	}
}

function hideVehicleData(bDisplay)
{
	if (bDisplay)
	{
		document.getElementById('vehicleData').style.display = 'none';
		document.getElementById('vehicleData').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('vehicleData').style.display = '';
		document.getElementById('vehicleData').style.visibility = 'visible';
	}
}

function hidePassengerVehicleDataForRates(bDisplay)
{
	
	if (bDisplay)
	{
		document.getElementById('passengerVehicleData').style.display = 'none';
		document.getElementById('passengerVehicleData').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('passengerVehicleData').style.display = '';
		document.getElementById('passengerVehicleData').style.visibility = 'visible';
	}
}

function clearPassengerVehicleDataForRates()
{
	var i;
	var sTripType;
	
	sTripType = "";
	var radioButtons = document.getElementsByName('radioTripType');
	for (var x = 0; x < radioButtons.length; x++) {
		if (radioButtons[x].checked) {
			sTripType = radioButtons[x].value;
		}
	}
	
	// clear passengers information
	var iMaxNumPassengers = parseInt(document.getElementById('numPassengers').length);	
	
	for (i=1; i <= iMaxNumPassengers-1; i++)
	{
		document.getElementById('passType'+i).options[0].selected = true;
		if (sTripType != "camping")
		{
			document.getElementById('passAcc'+i).options[0].selected = true;
		}
	}
	
	// clear vehicle information
	document.getElementById('vehType1').options[0].selected = true;
	document.getElementById('vehType2').options[0].selected = true;
	
	document.getElementById('vehLength1').value = "";
	document.getElementById('vehHeight1').value = "";
	document.getElementById('vehLength2').value = "";
	document.getElementById('vehHeight2').value = "";
}

function hidePricesRatesForRates(bDisplay)
{
	
	if (bDisplay)
	{
		document.getElementById('pricesRates').style.display = 'none';
		document.getElementById('pricesRates').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('pricesRates').style.display = '';
		document.getElementById('pricesRates').style.visibility = 'visible';
	}
}

function hideOffersSectionsForRates(bDisplay)
{
	
	if (bDisplay)
	{
		document.getElementById('cumulativeOffersRates').style.display = 'none';
		document.getElementById('cumulativeOffersRates').style.visibility = 'hidden';
		document.getElementById('offersRates').style.display = 'none';
		document.getElementById('offersRates').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('cumulativeOffersRates').style.display = '';
		document.getElementById('cumulativeOffersRates').style.visibility = 'visible';
		document.getElementById('offersRates').style.display = '';
		document.getElementById('offersRates').style.visibility = 'visible';
	}
}

function hidePaymentPersonalData(bDisplay)
{
	if (bDisplay)
	{
		document.getElementById('paymentSelection').style.display = 'none';
		document.getElementById('paymentSelection').style.visibility = 'hidden';
		document.getElementById('paymentData').style.display = 'none';
		document.getElementById('paymentData').style.visibility = 'hidden';
		document.getElementById('personalData').style.display = 'none';
		document.getElementById('personalData').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('paymentSelection').style.display = '';
		document.getElementById('paymentSelection').style.visibility = 'visible';
		document.getElementById('paymentData').style.display = '';
		document.getElementById('paymentData').style.visibility = 'visible';
		document.getElementById('personalData').style.display = '';
		document.getElementById('personalData').style.visibility = 'visible';
	}
}

function hideSurchargeData(bDisplay)
{
	if (document.getElementById("hasSurcharge").value == '1')
	{
		if (bDisplay)
		{
			document.getElementById('surchargeData').style.display = 'none';
			document.getElementById('surchargeData').style.visibility = 'hidden';
		}
		else
		{
			document.getElementById('surchargeData').style.display = '';
			document.getElementById('surchargeData').style.visibility = 'visible';
		}
	}

}

function hideFormButtons(bDisplay)
{
	if (bDisplay)
	{
		//document.getElementById('buttons').style.display = 'none';
		document.getElementById('buttons').style.visibility = 'hidden';
	}
	else
	{
		//document.getElementById('buttons').style.display = '';
		document.getElementById('buttons').style.visibility = 'visible';
	}
}

function hidePassengerContinueButton(bDisplay, btnContinueName)
{
	if (bDisplay)
	{
		//document.getElementById('continue').style.display = 'none';
		document.getElementById(btnContinueName).style.visibility = 'hidden';
	}
	else
	{
		//document.getElementById('continue').style.display = '';
		document.getElementById(btnContinueName).style.visibility = 'visible';
	}
}

function hideCaptcha(bDisplay)
{
// remove this code as captcha is no longer used due to IE problems
//	if (bDisplay)
//	{
//		document.getElementById('captchaData').style.display = 'none';
//		document.getElementById('captchaData').style.visibility = 'hidden';
//	}
//	else
//	{
//		document.getElementById('captchaData').style.display = '';
//		document.getElementById('captchaData').style.visibility = 'visible';
//	}
// end of remove code
}

function clearVehiclePrices()
{
	// clear the vehicle prices
	document.getElementById('priceVehicle1').innerHTML = "&#160;";
	document.getElementById('priceVehicle2').innerHTML = "&#160;";
	document.getElementById('totalVehiclePrice').innerHTML = "&#160;";
	
	// reset both indexes back to zero
	document.getElementById('vehType1').selectedIndex = 0;
	document.getElementById('vehType2').selectedIndex = 0;
}

function displaySecondVehicle()
{
	if (document.getElementById('numVehicles').value > 1)
	{
		document.getElementById('tblRowVehicle2').style.display = '';
		document.getElementById('tblRowVehicle2').style.visibility = 'visible';
	}
	else
	{
		document.getElementById('tblRowVehicle2').style.display = 'none';
		document.getElementById('tblRowVehicle2').style.visibility = 'hidden';
	}
}

function displaySecondVehicleForRates()
{
	if (document.getElementById('numVehicles').value > 1)
	{
		document.getElementById('tblRowVehicle2').style.display = '';
		document.getElementById('tblRowVehicle2').style.visibility = 'visible';
	}
	else
	{
		document.getElementById('tblRowVehicle2').style.display = 'none';
		document.getElementById('tblRowVehicle2').style.visibility = 'hidden';
	}
	
	hidePassengerContinueButton(false, 'continue');
	hidePassengerVehicleDataForRates(true);
	clearPassengerVehicleDataForRates();
	hidePricesRatesForRates(true);
	hideOffersSectionsForRates(true);
}

function showPassengerDataRows()
{
	var iSelectedNumPassengers = parseInt(document.getElementById('numPassengers').value);
	var iMaxNumPassengers = parseInt(document.getElementById('numPassengers').length);
	
	// make the passenger data rows visible until (and including) the selected number of passengers
	for (var i=1; i<=iSelectedNumPassengers; i++)
	{
		document.getElementById('passRowFIRSTSECTION' + i).style.display = '';
		document.getElementById('passRowFIRSTSECTION' + i).style.visibility = 'visible';	
		document.getElementById('passRowSECONDSECTION' + i).style.display = '';
		document.getElementById('passRowSECONDSECTION' + i).style.visibility = 'visible';	
	}
	
	// hide rest of passenger data rows starting from the next selected number of passengers
	for (var i=iSelectedNumPassengers+1; i<=iMaxNumPassengers-1; i++)
	{
		document.getElementById('passRowFIRSTSECTION' + i).style.display = 'none';
		document.getElementById('passRowFIRSTSECTION' + i).style.visibility = 'hidden';	
		document.getElementById('passRowSECONDSECTION' + i).style.display = 'none';
		document.getElementById('passRowSECONDSECTION' + i).style.visibility = 'hidden';	
	}
}

function showPassengerVehicleDataRowsForRates(obj)
{
	var iSelectedNumPassengers = parseInt(document.getElementById('numPassengers').value);
	var iMaxNumPassengers = parseInt(document.getElementById('numPassengers').length);
	//alert(iSelectedNumPassengers);
	//alert(iMaxNumPassengers);
	
	// make the passenger data rows visible until (and including) the selected number of passengers
	for (var i=1; i<=iSelectedNumPassengers; i++)
	{
		document.getElementById('passRowFIRSTSECTION' + i).style.display = '';
		document.getElementById('passRowFIRSTSECTION' + i).style.visibility = 'visible';	
		//document.getElementById('passRowSECONDSECTION' + i).style.display = '';
		//document.getElementById('passRowSECONDSECTION' + i).style.visibility = 'visible';	
	}
	
	// hide rest of passenger data rows starting from the next selected number of passengers
	for (var i=iSelectedNumPassengers+1; i<=iMaxNumPassengers-1; i++)
	{
		document.getElementById('passRowFIRSTSECTION' + i).style.display = 'none';
		document.getElementById('passRowFIRSTSECTION' + i).style.visibility = 'hidden';	
		//document.getElementById('passRowSECONDSECTION' + i).style.display = 'none';
		//document.getElementById('passRowSECONDSECTION' + i).style.visibility = 'hidden';	
	}
	
	hidePassengerContinueButton(false, 'continue');
	hidePassengerVehicleDataForRates(true);
	clearPassengerVehicleDataForRates();
	hidePricesRatesForRates(true);
	hideOffersSectionsForRates(true);
}

function changeAllCategory(strCategory, blnReadOnly)
{
	var i;	// counter for number of passengers (excluding 0 which is not used)
	var j;	// counter for number of categories
	var maxNumPassengers;	// maximum number of passengers
	var maxNumCabins;	// maximum number of accommodation cabins

	maxNumPassengers = document.getElementById("numPassengers").length-1;
	maxNumCabins = document.getElementById('passAcc1').length-1;
	//alert(maxNumPassengers);
	//alert(maxNumCabins);
	
	if (strCategory == 'DEFAULT')
	{
		for (i=1; i <= maxNumPassengers; i++)
		{
			for (j=1; j <= maxNumCabins; j++)
			{
				document.getElementById('passAcc'+i).options[0].selected = true;
				document.getElementById('passAcc'+i).disabled = blnReadOnly;
			}
		}
	}
	else
	{
		for (i=1; i <= maxNumPassengers; i++)
		{
			for (j=1; j <= maxNumCabins; j++)
			{
				//alert(eval("document.getElementById('passAcc'+i).options[j].text.search(/" + strCategory + "/) > -1"));
				if (eval("document.getElementById('passAcc'+i).options[j].text.search(/" + strCategory + "/) > -1"))
				{
					document.getElementById('passAcc'+i).options[j].selected = true;
					document.getElementById('passAcc'+i).disabled = blnReadOnly;
				}
			}
		}
	}
}

function changeAllCategoryHidden(blnReadOnly)
{
	var i;	// counter for number of passengers (excluding 0 which is not used)
	var j;	// counter for number of categories
	var maxNumPassengers;	// maximum number of passengers
	var maxNumCabins;	// maximum number of accommodation cabins

	maxNumPassengers = document.getElementById("numPassengers").length-1;
	maxNumCabins = document.getElementById('passAcc1').length-1;
	//alert(maxNumPassengers);
	//alert(maxNumCabins);
	
	for (i=1; i <= maxNumPassengers; i++)
	{
		for (j=1; j <= maxNumCabins; j++)
		{
			document.getElementById('passAcc'+i).disabled = blnReadOnly;
		}
	}
}

function hideCreditCardData(bDisplay)
{
	document.getElementById('paymentDataMessage').style.display = 'none';
	document.getElementById('paymentDataMessage').style.visibility = 'hidden';
	
	if (bDisplay)
	{
		document.getElementById('paymentDataBankTransfer').style.display = '';
		document.getElementById('paymentDataBankTransfer').style.visibility = 'visible';
		document.getElementById('paymentDataCreditCard').style.display = 'none';
		document.getElementById('paymentDataCreditCard').style.visibility = 'hidden';
	}
	else
	{
		document.getElementById('paymentDataBankTransfer').style.display = 'none';
		document.getElementById('paymentDataBankTransfer').style.visibility = 'hidden';
		document.getElementById('paymentDataCreditCard').style.display = '';
		document.getElementById('paymentDataCreditCard').style.visibility = 'visible';
	}
}

function setHiddenValues(obj)
{
	document.getElementById('autoClubHidden').value = document.getElementById('autoClub')[document.getElementById('autoClub').selectedIndex].text;
	
	document.getElementById('vehType1Hidden').value = document.getElementById('vehType1')[document.getElementById('vehType1').selectedIndex].text;
	document.getElementById('vehType2Hidden').value = document.getElementById('vehType2')[document.getElementById('vehType2').selectedIndex].text;
	changeAllCategoryHidden(false);
	document.getElementById('numVehicles').disabled = false;
}

function setHiddenValuesFromRates(obj)
{
	var trip_type = document.getElementById('trip_type').value;
	
	if (trip_type != 'simple')
	{
		document.getElementById('autoClubHidden').value = document.getElementById('autoClub')[document.getElementById('autoClub').selectedIndex].text;
	}
}

function toggleRoute(obj)
{
	var sTripType = obj.value;
	//alert(sTripType);
	
	//alert(document.getElementsByName('radioRouteType')[0].checked);
	//alert(document.getElementsByName('radioRouteType')[1].checked);
	
	showPricesContinueButton();
	
	if (sTripType == 'oneway')
	{
		document.getElementById('f_InboundDate').innerHTML = "N/A";
	}
	else
	{
		document.getElementById('f_InboundDate').innerHTML = "";
	}
}

function showCampingOnBoardAvailability(obj)
{
	//alert(obj.checked);
	var blnCampingOnBoard = obj.checked;
	
	showPricesContinueButton();
	
	if (blnCampingOnBoard)
	{
		document.getElementById('campingOnBoardAvailability').style.visibility='visible';
	}
	else
	{
		document.getElementById('campingOnBoardAvailability').style.visibility='hidden';
	}
}

function showPricesContinueButton()
{
	if (document.getElementById("searchButton").style.visibility == "hidden")
	{
		document.getElementById("pricesSchedules").innerHTML = "";
		document.getElementById("searchButton").style.visibility = "visible";
	}
}

function addSeasonalityInfo(target, iDay, iMonth, iYear)
{
	//alert(target);
	//alert(iDay);
	//alert(iMonth);
	//alert(iYear);
	
	if (target == 'seasonality')	//one way
	{
		document.getElementById('departure_date').value = iDay.toString() + '/' + iMonth.toString() + '/' + iYear.toString();
		document.getElementById('departure_port_id_outbound').value = document.getElementById('f_DepRouteOneWay').options[document.getElementById('f_DepRouteOneWay').selectedIndex].value.split("|")[0];
		document.getElementById('departure_port_name_outbound').value = document.getElementById('f_DepRouteOneWay').options[document.getElementById('f_DepRouteOneWay').selectedIndex].text.split(" - ")[0];
		document.getElementById('arrival_port_id_outbound').value = document.getElementById('f_DepRouteOneWay').options[document.getElementById('f_DepRouteOneWay').selectedIndex].value.split("|")[1];
		document.getElementById('arrival_port_name_outbound').value = document.getElementById('f_DepRouteOneWay').options[document.getElementById('f_DepRouteOneWay').selectedIndex].text.split(" - ")[1];

		document.getElementById('arrival_date').value = '';
		document.getElementById('departure_port_id_inbound').value = document.getElementById('f_DepRouteOneWay').options[document.getElementById('f_DepRouteOneWay').selectedIndex].value.split("|")[1];
		document.getElementById('departure_port_name_inbound').value = document.getElementById('f_DepRouteOneWay').options[document.getElementById('f_DepRouteOneWay').selectedIndex].text.split(" - ")[1];
		document.getElementById('arrival_port_id_inbound').value = document.getElementById('f_DepRouteOneWay').options[document.getElementById('f_DepRouteOneWay').selectedIndex].value.split("|")[0];
		document.getElementById('arrival_port_name_inbound').value = document.getElementById('f_DepRouteOneWay').options[document.getElementById('f_DepRouteOneWay').selectedIndex].text.split(" - ")[0];

	}
	else if (target == 'seasonalityLeft')	//return - left side
	{
		document.getElementById('departure_date').value = iDay.toString() + '/' + iMonth.toString() + '/' + iYear.toString();
		document.getElementById('departure_port_id_outbound').value = document.getElementById('f_DepRouteReturn').options[document.getElementById('f_DepRouteReturn').selectedIndex].value.split("|")[0];
		document.getElementById('departure_port_name_outbound').value = document.getElementById('f_DepRouteReturn').options[document.getElementById('f_DepRouteReturn').selectedIndex].text.split(" - ")[0];
		document.getElementById('arrival_port_id_outbound').value = document.getElementById('f_DepRouteReturn').options[document.getElementById('f_DepRouteReturn').selectedIndex].value.split("|")[1];
		document.getElementById('arrival_port_name_outbound').value = document.getElementById('f_DepRouteReturn').options[document.getElementById('f_DepRouteReturn').selectedIndex].text.split(" - ")[1];
	}
	else if (target == 'seasonalityRight')	//return - right side
	{
		document.getElementById('arrival_date').value = iDay.toString() + '/' + iMonth.toString() + '/' + iYear.toString();
		document.getElementById('departure_port_id_inbound').value = document.getElementById('f_ArrRouteReturn').options[document.getElementById('f_ArrRouteReturn').selectedIndex].value.split("|")[0];
		document.getElementById('departure_port_name_inbound').value = document.getElementById('f_ArrRouteReturn').options[document.getElementById('f_ArrRouteReturn').selectedIndex].text.split(" - ")[0];
		document.getElementById('arrival_port_id_inbound').value = document.getElementById('f_ArrRouteReturn').options[document.getElementById('f_ArrRouteReturn').selectedIndex].value.split("|")[1];
		document.getElementById('arrival_port_name_inbound').value = document.getElementById('f_ArrRouteReturn').options[document.getElementById('f_ArrRouteReturn').selectedIndex].text.split(" - ")[1];
	}
	
	// set form action with values
	setFormPricesButtonAction();
}

function defaultDimensionsForRates(obj)
{
	var vehNum;
	var vehLength;
	var varHeight;
	var vehType = obj.options[obj.selectedIndex].value;
	
	if (obj.name == 'vehType1')
	{
		vehNum = 1;
	}
	else
	{
		vehNum = 2;
	}
	
	if (vehType.search(/Motorcycle/i) > -1)
	{
		vehLength = document.getElementById('vehLength'+vehNum)
		vehLength.disabled = true;
		vehLength.value = "0";
		
		vehHeight = document.getElementById('vehHeight'+vehNum)
		vehHeight.disabled = true;
		vehHeight.value = "0";
	}
	else
	{
		vehLength = document.getElementById('vehLength'+vehNum)
		vehLength.disabled = false;
		vehLength.value = "";
		
		vehHeight = document.getElementById('vehHeight'+vehNum)
		vehHeight.disabled = false;
		vehHeight.value = "";
	}
}

function setFormPricesButtonAction()
{
	// set form's action parameters @@DEPOUT@@, @@ARROUT@@, @@DEPIN@@, @@ARRIN@@, @@ROUTETYPE@@
	str = document.getElementById('origFormAction').value;
	str = str.replace(/@@DEPOUT@@/, document.getElementById('departure_port_id_outbound').value);
	str = str.replace(/@@ARROUT@@/, document.getElementById('arrival_port_id_outbound').value);
	str = str.replace(/@@DEPDATE@@/, document.getElementById('departure_date').value);
	
	str = str.replace(/@@DEPIN@@/, document.getElementById('departure_port_id_inbound').value);
	str = str.replace(/@@ARRIN@@/, document.getElementById('arrival_port_id_inbound').value);
	str = str.replace(/@@ARRDATE@@/, document.getElementById('arrival_date').value);
	
	str = str.replace(/@@ROUTETYPE@@/, document.getElementById('route_type').value);
	document.frmPricesButton.action = str;
	//alert(document.frmPricesButton.action);
}

function buildPricesOffers(route_type, num_passengers, num_vehicles)
{
	// first check if the user did not pick any offer for both passengers and vehicles (the minimum offers selected must be N/A - not Select...)
	// NOTE: checkOffersSelected is defined in validation.xsl due to error messages defined in xml file
	var blnHasOffers = true;
	//uncomment the above two lines and comment the one below to validate the first selection of offers table
	//var blnHasOffers = false;
	//blnHasOffers = checkOffersSelected(route_type, num_passengers, num_vehicles);
	
	// for debugging purposes, uncomment next line *AND* comment previous line
	//blnHasOffers = true;
		
	if (blnHasOffers == true)
	{
		for (i=0; i < num_passengers; i++)
		{
			//get the outbound passenger cost
			document.getElementById('spn_out_cost_pass' + i).value = trimAll(document.getElementById('spnOutCostPass' + i).innerHTML);
			//get the outbound passenger offer selected list
			document.getElementById('sel_out_offer_list_pass' + i).value = document.getElementById('selOutOfferListPass' + i).options[document.getElementById('selOutOfferListPass' + i).selectedIndex].text;
			
			if (route_type == "return")
			{
				//get the inbound passenger cost
				document.getElementById('spn_in_cost_pass' + i).value = trimAll(document.getElementById('spnInCostPass' + i).innerHTML);
				//get the inbound passenger offer selected list
				document.getElementById('sel_in_offer_list_pass' + i).value = document.getElementById('selInOfferListPass' + i).options[document.getElementById('selInOfferListPass' + i).selectedIndex].text;
		}
			
			document.getElementById('spn_total_cost_pass' + i).value = trimAll(document.getElementById('spnTotalCostPass' + i).innerHTML);
		}
		
		for (i=1; i < num_vehicles+1; i++)
		{
			//get the outbound vehicle cost
			document.getElementById('spn_out_cost_veh' + i).value = trimAll(document.getElementById('spnOutCostVeh' + i).innerHTML);
			//get the outbound vehicle offer selected list
			document.getElementById('sel_out_offer_list_veh' + i).value = document.getElementById('selOutOfferListVeh' + i).options[document.getElementById('selOutOfferListVeh' + i).selectedIndex].text;
			
			if (route_type == "return")
			{
				//get the inbound vehicle cost
				document.getElementById('spn_in_cost_veh' + i).value = trimAll(document.getElementById('spnInCostVeh' + i).innerHTML);
				//get the inbound vehicle offer selected list
				document.getElementById('sel_in_offer_list_veh' + i).value = document.getElementById('selInOfferListVeh' + i).options[document.getElementById('selInOfferListVeh' + i).selectedIndex].text;
			}
			
			//get the total vehicle cost
			document.getElementById('spn_total_cost_veh' + i).value = trimAll(document.getElementById('spnTotalCostVeh' + i).innerHTML);
		}
		
		//get the total cost of reservation
		document.getElementById('spn_total_cost').value = trimAll(document.getElementById('spnTotalCost').innerHTML);
		
		//get the trip type (i.e., passengers only, passengers w/ vehicles, passengers w/ veh. & trailer, or passengers w/ cob)
		var tripTypeValue = 0;
	
		for( i = 0; i < document.getElementsByName('radioTripType').length; i++ )
		{
			if(document.getElementsByName('radioTripType')[i].checked == true)
			{
				tripTypeValue = document.getElementsByName('radioTripType')[i].value;
				break;
			}
		}
		document.getElementById('trip_type').value = tripTypeValue;
		
		//submit the form
		document.frmCompareRates.submit();
	}
}

// ----------------------------------
// OTHER ROUTINES
// ----------------------------------
function trimAll(str, chars)
{
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars)
{
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars)
{
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function getDateObject(dateString,dateSeperator)
{
	//This function return a date object after accepting 
	//a date string ans dateseparator as arguments
	var curValue=dateString;
	var sepChar=dateSeperator;
	var curPos=0;
	var cDate,cMonth,cYear;

	//extract day portion
	curPos=dateString.indexOf(sepChar);
	cDate=dateString.substring(0,curPos);
	
	//extract month portion				
	endPos=dateString.indexOf(sepChar,curPos+1);
	cMonth=dateString.substring(curPos+1,endPos);
	
	//extract year portion				
	curPos=endPos;
	endPos=curPos+5;			
	cYear=curValue.substring(curPos+1,endPos);
	
	//Create Date Object
	dtObject=new Date(cYear,cMonth-1,cDate);	
	return dtObject;
}

function queryStr(ji)
{
	hu = window.location.search.substring(1);
	gy = hu.split("&");
	for (i=0;i<gy.length;i++)
	{
		ft = gy[i].split("=");
		if (ft[0] == ji)
		{
			return ft[1];
		}
	}
}

Date.prototype.getCurrentMonthName = function(lang) {
	if (lang == 'en')
		var m = ['January','February','March','April','May','June','July','August','September','October','November','December'];
	else if (lang == 'de')
		var m = [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember '];
	else if (lang == 'it')
		var m = [ 'January', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre '];
	else if (lang == 'nl')
		var m = [ 'Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December '];
	else if (lang == 'fr')
		var m = [ 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre '];
	else if (lang == 'gr')
		var m = [ 'Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρ', 'Μαΐου', 'Ιούν', 'Ιούλ', 'Αυγ', 'Σεπ', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος '];
	else if (lang == 'sp')
		var m = [ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre '];

	return m[this.getMonth()];
}

Date.prototype.getMonthName = function(lang, month) {
	if (lang == 'en')
		var m = ['January','February','March','April','May','June','July','August','September','October','November','December'];
	else if (lang == 'de')
		var m = [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember '];
	else if (lang == 'it')
		var m = [ 'January', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre '];
	else if (lang == 'nl')
		var m = [ 'Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December '];
	else if (lang == 'fr')
		var m = [ 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre '];
	else if (lang == 'gr')
		var m = [ 'Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρ', 'Μαΐου', 'Ιούν', 'Ιούλ', 'Αυγ', 'Σεπ', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος '];
	else if (lang == 'sp')
		var m = [ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre '];
	
	return m[month];
}

//still have problems with this function (left it here for later to fix it)
function go(){
	str=document.getElementById('hiddenSeasonalityOutbound').innerHTML
	newwin=window.open('','printwin','left=150,top=200,width=700,height=400')
	newwin.document.write('<HTML>\n<style type="text/css">body { color:#000000;font-family:tahoma;font-size:11px;}#calendar_frame {	float: left;	margin-right: 20px;	margin-bottom: 10px;}#calendar {	width: 141px;	padding: 0;	margin: 0;	border-left: 1px solid #A2ADBC;	font: normal 11px/19px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;	color: #616B76;	text-align: center;	background-color: #fff;}.caption_cal {	margin: 0;	padding: 0;	width: 141px;	background: #A2ADBC;	color: #fff;	 	font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;	text-transform: capitalize;	text-align: center;}#calendar th {	font: bold 10px/19px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;	text-transform: capitalize;	color: #616B76;	background: #D9E2E1;	border-right: 1px solid #A2ADBC;	border-bottom: 1px solid #A2ADBC;	border-top: 1px solid #A2ADBC;}/*.cal_blanks, .cal_day, .cal_eventday {background: url(/images/pics/bg_calendar.gif) no-repeat right bottom;}*/.cal_blanks, .cal_day, .cal_eventday {}.cal_noevent {	text-decoration:line-through;}.cal_eventday a{    font: bold 10px/19px verdana;	color: #616B76;	text-decoration: underline;}.cal_today {}/*.cal_today {	color:#000;	font-weight:bold;	border:1px solid #F00;	}*/	.cal_today a{    font: bold 10px/19px verdana;	color: #616B76;	text-decoration: underline;}#calendar td {	border-right: 1px solid #A2ADBC;	border-bottom: 1px solid #A2ADBC;	width: 20px;	height: 20px;	text-align: center;}.cal_edit_events {float: left; border: 0px;}div#showhide {display: none;}.view_next_cal {text-transform: capitalize; margin: 5px 0px 5px 0px;}.view_next_cal a:hover {text-decoration: none;}/* edit_events.asp */#event_list, #event_list_new{	width: 100%;	padding: 0;	margin-bottom: 30px;	font: normal 10px Verdana;}#event_list th {	font: bold 10px Verdana;	color: #4f6b72;	border: 1px solid #C1DAD7;	text-transform: lowercase;	padding-top: 3px;	padding-bottom: 3px;	background: #CAE8EA url(../images/table_header.jpg) no-repeat;	text-align: center;}#event_list td {	border: 1px solid #C1DAD7;	background: #fff;	padding: 3px;	color: #4f6b72;}#event_list_new th {	font: bold 10px Verdana;	color: #4f6b72;	border: 1px solid #C1DAD7;	text-transform: lowercase;	padding-top: 3px;	padding-bottom: 3px;	background: #CAE8EA url(../images/table_header.jpg) no-repeat;	text-align: center;}#event_list_new td {	background: #fff;	padding: 3px;	color: #4f6b72;}#event_list_new textarea {	border: 3px solid #C1DAD7;	padding: 3px;	color: #4f6b72;	width: 100%;}#event_list_new .widebox {	border: 3px solid #C1DAD7;	padding: 3px;	color: #4f6b72;	width: 100%;}#event_list_new .narrowbox {	border: 3px solid #C1DAD7;	padding: 3px;	color: #4f6b72;	width: 30px;}/* events.html */.events_page_title {    color: #fff;	font-weight: bold;	background: #A2ADBC;	padding: 5px;}.event {    font: normal 10px/19px verdana;	margin-bottom: 20px;	border-top: 2px dotted #A2ADBC;}.event_date, .event_title {    font-weight: bold;	margin-right: 10px;	padding: 3px;}.event_title {	background: #D9E2E1;}.event_text {    padding: 3px;}/* Misc. */.color_red {color: red;}.color_blue {color: blue;}.color_magenta {color: #ff00ff;}.color_green {color: #008080;}</style><HEAD>\n')
	newwin.document.write('<TITLE>Print Page</TITLE>\n')
	newwin.document.write('<script>\n')
	newwin.document.write('function chkstate(){\n')
	newwin.document.write('if(document.readyState=="complete"){\n')
	newwin.document.write('window.close()\n')
	newwin.document.write('}\n')
	newwin.document.write('else{\n')
	newwin.document.write('setTimeout("chkstate()",2000)\n')
	newwin.document.write('}\n')
	newwin.document.write('}\n')
	newwin.document.write('function print_win(){\n')
	newwin.document.write('window.print();\n')
	newwin.document.write('chkstate();\n')
	newwin.document.write('}\n')
	newwin.document.write('<\/script>\n')
	newwin.document.write('</HEAD>\n')
	newwin.document.write('<BODY onload="print_win()">\n')
	newwin.document.write(str)
	newwin.document.write('</BODY>\n')
	newwin.document.write('</HTML>\n')
	newwin.document.close()
}

function resetForm(type, obj, caller)
{
	//alert(type + " " + obj.name);
	var reset_form = document.getElementById("reset_form").value;
	//alert(reset_form);
	
	if (reset_form == "true")
	{
		if (type == 'routes')	// if the routes are changed
		{
			// clear the dropdowns depending on where it came from
			if (obj.name == "f_OneWayFrom")
			{	
				removeSelectItems('f_OneWayTo');
				
				clearDate('f_OutboundDate');
				clearCalendar('trgOutbound');
			}
			if (obj.name == "f_OneWayTo")
			{
				clearDate('f_OutboundDate');
				clearCalendar('trgOutbound');
			}
			else if (obj.name == "f_OneWayFrom2")
			{
				removeSelectItems('f_OneWayTo2');
				
				clearDate('f_OutboundDate2');
				clearCalendar('trgOutbound2');
				
				if (caller == 'BuildRoute')
				{
					removeSelectItems('f_ReturnFrom2');
				}
				else
				{
					chooseFirstSelectItem('f_ReturnFrom2');
				}
				
				removeSelectItems('f_ReturnTo2');
				
				clearDate('f_InboundDate2');
				clearCalendar('trgInbound2');
			}
			else if (obj.name == "f_OneWayTo2")
			{
				clearDate('f_OutboundDate2');
				clearCalendar('trgOutbound2');
				
				if (caller == 'BuildRoute')
				{
					removeSelectItems('f_ReturnFrom2');
				}
				else
				{
					chooseFirstSelectItem('f_ReturnFrom2');
				}
				
				removeSelectItems('f_ReturnTo2');
				
				clearDate('f_InboundDate2');
				clearCalendar('trgInbound2');
			}
			else if (obj.name == "f_ReturnFrom2")
			{
				removeSelectItems('f_ReturnTo2');
				
				clearDate('f_InboundDate2');
				clearCalendar('trgInbound2');
			}
			else if (obj.name == "f_ReturnTo2")
			{
				clearDate('f_InboundDate2');
				clearCalendar('trgInbound2');
			}
		}
		else if (type == 'trip')	// if the trip type is changed
		{
			chooseFirstSelectItem('f_OneWayFrom');
			removeSelectItems('f_OneWayTo');
			clearDate('f_OutboundDate');
			clearCalendar('trgOutbound');
	
			chooseFirstSelectItem('f_OneWayFrom2');
			removeSelectItems('f_OneWayTo2');
			removeSelectItems('f_ReturnFrom2');
			removeSelectItems('f_ReturnTo2');
	
			clearDate('f_OutboundDate2');
			clearCalendar('trgOutbound2');
			
			clearDate('f_InboundDate2');
			clearCalendar('trgInbound2');
		}
	}
	hideFormData();
}

function disableAllDates(date, y, m, d)
{
	return true; // other dates are enabled
}

function removeSelectItems(selectname)
{
	selectbox = document.getElementById(selectname);
	for (var i=selectbox.options.length-1; i>0; i--)
	{
		selectbox.remove(i);
	}
}

function clearDate(datename)
{
	// clear the date
	var traveldate = document.getElementById(datename);
	traveldate.value = "";
}

function clearCalendar(calendarname)
{
	// disable the date calendar
	Calendar.setup(
		{
			button					: calendarname,       // ID of the button
			dateStatusFunc	:	disableAllDates
		}
	)
}

function chooseFirstSelectItem(selectname)
{
	// select the first item
	var selectbox = document.getElementById(selectname);
	for (var i=selectbox.options.length-1; i>0; i--)
	{
		selectbox.selectedIndex = 0;
	}
}

function setFormReset(blnResetForm)
{
	if (blnResetForm)
	{
		document.getElementById("reset_form").value = "true";
	}
	else
	{
		document.getElementById("reset_form").value = "false";
	}
}

function hideFormData()
{
	clearVehiclePrices();
	clearPassengerData();
	
	var sTripType;
	
	sTripType = "";
	var radioButtons = document.getElementsByName('radioTripType');
	for (var x = 0; x < radioButtons.length; x++) {
		if (radioButtons[x].checked) {
			sTripType = radioButtons[x].value;
		}
	}
	
	if (sTripType == 'camping')
	{
		changeAllCategory('DECK', true);
	}
	else
	{
		changeAllCategory('DEFAULT', false);
	}
	
	showPassengerDataRows();
	hidePassengerData(true);
	hidePassengerContinueButton(false, 'continue');
	hideVehicleData(true);
	hidePaymentPersonalData(true);
	hideFormButtons(true);
}

function clearPassengerData()
{
	var i;
	var sTripType;
	
	sTripType = "";
	var radioButtons = document.getElementsByName('radioTripType');
	for (var x = 0; x < radioButtons.length; x++) {
		if (radioButtons[x].checked) {
			sTripType = radioButtons[x].value;
		}
	}
	
	// clear passengers information
	var iMaxNumPassengers = parseInt(document.getElementById('numPassengers').length);	
	
	for (i=1; i <= iMaxNumPassengers-1; i++)
	{
		document.getElementById('passType'+i).options[0].selected = true;
		document.getElementById('passPrice'+i).innerHTML = "&#160;";
		
		if (sTripType != "camping")
		{
			document.getElementById('passAcc'+i).options[0].selected = true;
		}
	}
	
	document.getElementById('totalPassengerPrice').innerHTML = "&#160;";
}
