var Quote = new Object;

Quote.HttpRequest = false;
Quote.ProdType = null;
Quote.Successful = null;
Quote.RequestType = null;
Quote.ActualFormObject = null;

function makePOSTRequest() 
{
      		Quote.HttpRequest = false;
      		if (window.XMLHttpRequest) { // Mozilla, Safari,...
         	Quote.HttpRequest = new XMLHttpRequest();
         	if (Quote.HttpRequest.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            Quote.HttpRequest.overrideMimeType('text/html');}
      		} 
      		else if (window.ActiveXObject) { // IE
         	try {
            	Quote.HttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
         		} catch (e) {
            		try {
               			Quote.HttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            			} catch (e) {}
        	}
	      	}
	      	if (!Quote.HttpRequest) {
	         alert('Cannot create XMLHTTP instance');
	         return false;
	      	}
			//alert(Quote.RequestParameters);
	      	if (Quote.RequestType == "requote") Quote.HttpRequest.onreadystatechange = Requote;
	      	Quote.HttpRequest.open('POST', Quote.TargetUrl, true);
	      	Quote.HttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	      	Quote.HttpRequest.setRequestHeader("Content-length", Quote.RequestParameters.length);
	      	Quote.HttpRequest.setRequestHeader("Connection", "close");
	      	Quote.HttpRequest.send(Quote.RequestParameters);
}

function Requote() // inject response into the web page and handle quote buttons
{ 
			if (Quote.HttpRequest.readyState == 4) {
		    	if (Quote.HttpRequest.status == 200) {
           
		            Quote.Result = Quote.HttpRequest.responseText;
		            
		            // uncomment for response
		            //alert(Quote.Result); 
		            		            
		            var params = Quote.Result.split("&");
		            Quote.Successful = false;
		            
		            for (var i=0; i<params.length; i++)
		            {	
		            	if (params[i].indexOf("updatedprice=")>=0)
		            	{
		            		var pricevalue = params[i].substr((params[i].indexOf("=")+1));
		            		//alert(pricevalue);
		            		if (pricevalue) { document.getElementById('inj_price'+Quote.ProdType).innerHTML = "&pound;" + pricevalue;}			
		            		else 
		            		{
		            		document.getElementById('inj_duration' + Quote.ProdType).innerHTML = "Sorry";
		            		document.getElementById('inj_price' + Quote.ProdType).innerHTML = "NA";
		            		alert('No availability for this period. Please try another date.');
		            		}
		            	}
		            	if (params[i].indexOf("updatedduration=")>=0)

	            	{
		            		var durvalue = params[i].substr((params[i].indexOf("=")+1));
		            		//alert(pricevalue);
		            		if (durvalue) 
		            		{ 
		            			if (parseInt(durvalue) == durvalue)
		            			{
		            				if (Quote.ProdType == "_h")
		            				{document.getElementById('inj_duration' + Quote.ProdType).innerHTML = durvalue + " days parking<br>incl. 1 night stay"; Quote.Successful = true;}
		            				else if (Quote.ProdType == "_p")
		            				{document.getElementById('inj_duration' + Quote.ProdType).innerHTML = durvalue + " days parking"; Quote.Successful = true; }
		            			}
		            			else
		            			{
			            			if (Quote.ProdType == "_h")
			            			{document.getElementById('inj_duration' + Quote.ProdType).innerHTML = "parking per week<br>incl. 1 night stay"; Quote.Successful = true; }
			            			else if (Quote.ProdType == "_p")
			            			{document.getElementById('inj_duration' + Quote.ProdType).innerHTML = "parking per week"; Quote.Successful = true; }
		            			}
		            		}			
		            	}		            	
		            }
		              
		        } else {
		            alert('Server has not responded. Please try again.' + Quote.HttpRequest.status);
		        }
		        if (Quote.Successful) OutputResults();
			}
}

function inArray( search, myArray )
{	
	var a=false;	
	for (var i = 0; i < myArray.length; i++)
	{	  
		if ( search == myArray[i] )
		{ a=true; break; }	
	}	
	return a;
}

function getParameters() // reads parameters of the form
{
   			var validParams = new Array('agent','ddd','ddm','ddy','dth','dtm','rdd','rdm','rdy','rth','rtm','cp','px','zn','prod','ap');
   			form = Quote.ActualFormObject;
   			var data = "";
   			for (var elem = 0; elem < form.elements.length; elem++)
   			{
   				//alert(form.elements[elem].name + "=" + form.elements[elem].value);
   				if (  inArray(form.elements[elem].name, validParams) && (form.elements[elem].value != "")) data += form.elements[elem].name + "=" + form.elements[elem].value + "&";   				
   			}
   			
   			return data;
}

function OutputResults()
{
			var obj = Quote.ActualFormObject;
			document.getElementById('fields' + Quote.ProdType).style.display = "none";
		    document.getElementById('formmssg' + Quote.ProdType).innerHTML = "Booking details <span style=\"font-size:10px;\">[<a ref=\"#\" style=\"text-decoration:underline; color: blue;\" onclick=\"ResetForm();\" class=\"hand\">Change</a>]<span>";
		    var setdates_str = null;
		    setdates_str = "<p style=\"margin:2px\"><b>Departure:</b><br>" + obj.ddd.value + "/" + obj.ddm.value + "/" + obj.ddy.value;
   		    if (Quote.ProdType == "_h") setdates_str += " - <i>Night of stay</i>";
		    if (Quote.ProdType == "_p") setdates_str += " at " + obj.dth.value + ":" +  obj.dtm.value + "</p>";
		    setdates_str += "<p style=\"margin:2px\"><b>Return:</b><br>" + obj.rdd.value + "/" + obj.rdm.value + "/" + obj.rdy.value;
		     if (Quote.ProdType == "_p") setdates_str += " at " + obj.rth.value + ":" +  obj.rtm.value + "</p>";
		    setdates_str += "<p style=\"margin:2px\"><b>Parking at " + Airports[obj.ap.value] + "</b></p>";
		    document.getElementById('setdates' + Quote.ProdType).innerHTML = setdates_str;
		    document.getElementById('moreinfo_bttn' + Quote.ProdType).style.display = "";
		    document.getElementById('sbm_bttn' + Quote.ProdType).style.display = "";
		    document.getElementById('upd_bttn' + Quote.ProdType).style.display = "none";
}

function ResetForm()
{
			var obj = Quote.ActualFormObject;
	
			document.getElementById('fields' + Quote.ProdType).style.display = "";
		    document.getElementById('formmssg' + Quote.ProdType).innerHTML = "Please enter your dates";
		    document.getElementById('setdates' + Quote.ProdType).innerHTML = "";
		    document.getElementById('moreinfo_bttn' + Quote.ProdType).style.display = "none";
		    document.getElementById('sbm_bttn' + Quote.ProdType).style.display = "none";
			document.getElementById('upd_bttn' + Quote.ProdType).style.display = "";
}
   		
function ReQuoteParking(obj) // delegate for requote button
{
			Quote.ActualFormObject = obj;
			Quote.ProdType = "_p"; 
   			Quote.RequestParameters = getParameters(); 
   			Quote.TargetUrl = '/cgi-bin/scheduled/requote_parking.pl';
   			Quote.RequestType = 'requote';
   			document.getElementById('inj_duration'+Quote.ProdType).innerHTML = "Please wait...";
   			document.getElementById('inj_price'+Quote.ProdType).innerHTML = "";

			makePOSTRequest();
}


function ReQuoteHotel(obj) // delegate for requote button
{
			Quote.ActualFormObject = obj;
			Quote.ProdType = "_h"; 
  			Quote.RequestParameters = getParameters(); 
   			Quote.TargetUrl = '/cgi-bin/scheduled/requote_hotel.pl';
   			Quote.RequestType = 'requote';

   			document.getElementById('inj_duration'+Quote.ProdType).innerHTML = "Please wait...";
   			document.getElementById('inj_price'+Quote.ProdType).innerHTML = "";

			makePOSTRequest();
}
