function getPrice(action)
{
	xmlhttp3=GetXmlHttpObject();
	if (xmlhttp3==null) {
  		alert ("Your browser does not support AJAX!");
  		return;
  	}
	clearError();
	var url="https://www.anyferry.co.uk/af-includes/price_request.php?";
	
	url=url+"routeOut="+document.step1.routeOut.value;
	url=url+"&outDate="+document.step1.outDate.value;
	url=url+"&outwardDepartureTime="+document.step1.outDepartureTime.value;
	
	url=url+"&routeReturn="+document.step1.routeReturn.value;
	url=url+"&returnDate="+document.step1.returnDate.value;
	url=url+"&returnDepartureTime="+document.step1.returnDepartureTime.value;
	
	url=url+"&adults="+document.step1.adults.value;
	url=url+"&children="+document.step1.children.value;
	url=url+"&infants="+document.step1.infants.value;
	
	url=url+"&vehicleCode="+document.step1.vehicleCode.value;
	url=url+"&trailerCode="+document.step1.trailerCode.value;
	
	url=url+"&mode="+document.step1.mode.value;
	
	if (action=="book") {
		url=url+"&action=book";
	}
	url=url+"&sid="+Math.random();
	
	if (document.step1.singleorreturn[1].checked) {
		url=url+"&return=true";
	} else {
		url=url+"&return=false";	
	}
	//alert("get price: "+url);
	
	xmlhttp3.open("POST",url,true);
	xmlhttp3.send(null);
	//document.getElementById("price").innerHTML="Updating...";
	document.getElementById("booking").style.display='';
	document.getElementById("price").innerHTML='<center><img src=https://www.anyferry.co.uk/af-includes/loading/loadingAnimation.gif></center>';
		
	document.getElementById("booking").innerHTML='<center><img src=https://www.anyferry.co.uk/af-includes/loading/loadingAnimation.gif></center>';
    
	document.getElementById("step1").style.display='none';
    
	xmlhttp3.onreadystatechange=stateChanged3;
}


function book()
{
	//Hide the other DIVs
	document.getElementById('step1').style.display='none';
	document.getElementById("booking").style.display='none';
	
	xmlhttp3=GetXmlHttpObject();
	if (xmlhttp3==null) {
  		alert ("Your browser does not support AJAX!");
  		return;
  	}
	var url="https://www.anyferry.co.uk/af-includes/passenger_details.php";
	url=url+"?adults="+document.step1.adults.value;
	url=url+"&children="+document.step1.children.value;
	url=url+"&infants="+document.step1.infants.value;
	//alert("book: "+url);
	xmlhttp3.open("POST",url,true);
	xmlhttp3.send(null);
	document.getElementById("passengers").innerHTML="Two seconds...";
    xmlhttp3.onreadystatechange=stateChanged5;
}

function pay()
{
	alert ("Ok, let us pay");
	xmlhttp3=GetXmlHttpObject();
	if (xmlhttp3==null) {
  		alert ("Your browser does not support AJAX!");
  		return;
  	}
	var url="https://www.anyferry.co.uk/af-includes/doDirectPayment.php?";
	url = url + "cardholder=" + document.getElementById("cardholder").value;	
	url = url + "&firstname=" + document.passengerinfo.firstname.value;
	url = url + "&surname=" + document.passenger_info.surname.value;
	url = url + "&cardtype=" + document.passenger_info.cardtype.value;
	url = url + "&cardnumber=" + document.passenger_info.cardnumber.value;
	url = url + "&expirymonth=" + document.passenger_info.expirymonth.value;
	url = url + "&expiryyear=" + document.passenger_info.expiryyear.value;
	url = url + "&cvv=" + document.passenger_info.cvv.value;
	url = url + "&housenumber=" + document.passenger_info.housenumber.value;
	url = url + "&address1=" + document.passenger_info.address1.value;
	url = url + "&address2=" + document.passenger_info.address2.value;
	url = url + "&town=" + document.passenger_info.town.value;
	url = url + "&county=" + document.passenger_info.county.value;
	url = url + "&postcode=" + document.passenger_info.postcode.value;
	url = url + "&country=" + document.passenger_info.country.value;
	url = url + "&amount=" + document.form_amount.amount.value;
	alert("Payment url: " + url);
	
	xmlhttp3.open("POST",url,true);
	xmlhttp3.send(null);
	document.getElementById("passengers").innerHTML="Processing Payment...";
    xmlhttp3.onreadystatechange=stateChanged5;
}

function updatePrice()
{
	clearError();
	xmlhttp3=GetXmlHttpObject();
	if (xmlhttp3==null) {
  		alert ("Your browser does not support AJAX!");
  		return;
  	}
	var url="https://www.anyferry.co.uk/af-includes/price_request.php?";
	
	url=url+"routeOut="+document.step1.routeOut.value;
	url=url+"&outDate="+document.step1.outDate.value;
	url=url+"&outwardDepartureTime="+document.step1.outDepartureTime.value;
	
	url=url+"&routeReturn="+document.step1.routeReturn.value;
	url=url+"&returnDate="+document.step1.returnDate.value;
	url=url+"&returnDepartureTime="+document.step1.returnDepartureTime.value;
	
	url=url+"&adults="+document.step1.adults.value;
	url=url+"&children="+document.step1.children.value;
	url=url+"&infants="+document.step1.infants.value;
	
	url=url+"&vehicleCode="+document.step1.vehicleCode.value;
	url=url+"&trailerCode="+document.step1.trailerCode.value;
	
	url=url+"&mode="+document.step1.mode.value;
	
	if (document.step1.singleorreturn[1].checked) {
		url=url+"&return=true";
	} else {
		url=url+"&return=false";	
	}
	
	var theForm = document.forms[0]
	for(i=0; i<theForm.elements.length; i++){
		var alertText = ""
		if(theForm.elements[i].type == "select-one"){
			url=url+"&"+theForm.elements[i].name+"="+theForm.elements[i].options[theForm.elements[i].selectedIndex].value;
		}
	}
	
	url=url+"&sid="+Math.random();
	//alert("Update Price URL: "+url);
	
	xmlhttp3.open("POST",url,true);
	xmlhttp3.send(null);
    document.getElementById("price").innerHTML='<center><img src=https://www.anyferry.co.uk/af-includes/loading/loadingAnimation.gif></center>';
	xmlhttp3.onreadystatechange=stateChanged4;	
}

function amend()
{
	document.getElementById("booking").style.display='none';
    
	document.getElementById("step1").style.display='';
}

function getTimes(leg,div,element)
{
	clearError();
	xmlhttp=GetXmlHttpObject();
	if (xmlhttp==null) {
  		alert ("Your browser does not support AJAX!");
  		return;
  	}
	var url="https://www.anyferry.co.uk/af-includes/sailing_request.php";
	if (leg=="out") {
		route = document.step1.routeOut.value;
		mydate = document.step1.outDate.value;
		mytime = document.step1.outDepartureTime.value;
		document.getElementById(div).innerHTML="Getting times...";
	} else if (leg=="return") {
		route = document.step1.routeReturn.value;
		mydate = document.step1.returnDate.value;
		mytime = document.step1.returnDepartureTime.value;
		document.getElementById(div).innerHTML="Getting return times...";
	}

	url=url+"?date="+mydate+"&time="+mytime+"&route="+route;
	url=url+"&mode="+document.step1.mode.value;
	url=url+"&sid="+Math.random();

	//alert("Url: "+url);

	xmlhttp.onreadystatechange=function(){
		if(xmlhttp.readyState==4){
		setDivContents(div,element,xmlhttp.responseText,leg);
		}
	}	
	xmlhttp.open("POST",url,true);
	xmlhttp.send(null);
}

function setDivContents(div,element,rt,leg) {
	resp=rt;
  	resp_array=resp.split("<div>");
	respcheck = resp_array[1].substring(0,8);
  	if (respcheck="<option") {

    	htmlstring='<select name="'+element+'" onChange="altItinerary(this.value,\''+leg+'\')">'+resp_array[1]+'</select>';
		//alert("htmlstring: "+htmlstring);
  		document.getElementById(div).innerHTML=htmlstring;
    }
	document.getElementById('errors').style.display='none';
	document.getElementById('getprice').style.display='';
	//alert("error length: " + resp_array[2].length);
	if (resp_array[2].length>2) {
		document.getElementById('errors').innerHTML+=resp_array[2];
		document.getElementById('errors').style.border='3px red solid';
		document.getElementById('errors').style.display='';
		document.getElementById('getprice').style.display='none';
	}
	
	document.getElementById('xml').innerHTML=resp_array[3];
	document.getElementById('xml').style.display='none';
	
}

function clearError() {
	//Clears errors and XML (xml for testing only)
	document.getElementById('errors').innerHTML='';
	document.getElementById('errors').style.border='none';
	document.getElementById('errors').style.display='none';
	
	document.getElementById('xml').innerHTML='';
	document.getElementById('xml').style.display='none';
}

//added to allow multiple simultaneous requests
function getTimes2(leg,div,element)
{
	clearError();
	xmlhttp2=GetXmlHttpObject();
	if (xmlhttp2==null) {
  		alert ("Your browser does not support AJAX!");
  		return;
  	}
	var url="https://www.anyferry.co.uk/af-includes/sailing_request.php";

	if (leg=="out") {
		route = document.step1.routeOut.value;
		mydate = document.step1.outDate.value;
		mytime = document.step1.outDepartureTime.value;
		document.getElementById(div).innerHTML="Getting times...";
	} else if (leg=="return") {
		route = document.step1.routeReturn.value;
		mydate = document.step1.returnDate.value;
		mytime = document.step1.returnDepartureTime.value;
		document.getElementById(div).innerHTML="Getting times...";
	}

	url=url+"?date="+mydate+"&time="+mytime+"&route="+route;
	url=url+"&mode="+document.step1.mode.value;
	url=url+"&sid="+Math.random();
	
	xmlhttp2.onreadystatechange=function(){
		if(xmlhttp2.readyState==4){
		setDivContents(div,element,xmlhttp2.responseText,leg);
		}
	}
	xmlhttp2.open("POST",url,true);
	xmlhttp2.send(null);
}

function altItinerary(itinerary,leg) 
{
	//alert("new itinerary= "+itinerary);
	if (itinerary.substring(0,3)=="ALT") {
		newvalues = itinerary.split("-");
		newdate = newvalues[1];
		newtime = newvalues[2];
		//alert("New date" + newdate);
		//alert("Leg " + leg);
		newsupplier = newvalues[3];
		newdepart = newvalues[4];
		newarrive = newvalues[5];
		newitinerary = newsupplier+"-"+newdepart+"-"+newarrive;
		if (leg=="out") {
			document.step1.outDate.value = newdate;
			document.step1.outDepartureTime.options.length=0
			document.step1.outDepartureTime.options[0]=new Option(newtime,newtime, true, true);

			for(index = 0; index < document.step1.routeOut.length; index++) 
			{ 
				if(document.step1.routeOut[index].value == newitinerary) 
				document.step1.routeOut.selectedIndex = index; 
			}
			getTimes("out","departTime","outDepartureTime");
		}
		if (leg=="return") {
			document.step1.returnDate.value = newdate;
			document.step1.returnDepartureTime.options.length=0
			document.step1.returnDepartureTime.options[0] = new Option(newtime,newtime, true, true);
			
			for(index=0; index < document.step1.routeReturn.length; index++)
			{
				if(document.step1.routeReturn[index].value == newitinerary) 
				document.step1.routeReturn.selectedIndex = index; 			
			}
			getTimes2("return",'returnTime','returnDepartureTime');
		}
		
	}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

function stateChanged(div,element)
{
if (xmlhttp.readyState==4)
  {
	document.getElementById(div).innerHTML="had response 1";
	resp=xmlhttp.responseText;
	resp_array=resp.split("<div>");
	respcheck = resp_array[1].substring(0,8);
  if (respcheck="<option") {
		htmlstring='<select name="'+element+'" onChange="altItinerary(this.value,\'out\');">'+resp_array[1]+'</select>';
    	document.getElementById(div).innerHTML=htmlstring;
    }
	document.getElementById('errors').innerHTML=resp_array[2];
	document.getElementById('errors').style.display+='';
	
	document.getElementById('xml').innerHTML=resp_array[3];
	document.getElementById('xml').style.display='';
  }
}

function stateChanged2(div,element)
{
if (xmlhttp2.readyState==4)
  {
	document.getElementById(div).innerHTML="had response 2";
	resp2=xmlhttp2.responseText;
  	resp2_array=resp2.split("<div>");
  	resp2check = resp2_array[0].substring(0,8);
  if (resp2check="<option") {
    htmlstring='<select name="'+element+'" onChange="altItinerary(this.value,\'return\');">'+resp2_array[1]+'</select>';
  	document.getElementById(div).innerHTML=htmlstring;
  }
	document.getElementById('errors').innerHTML=resp_array[2];
	document.getElementById('errors').style.display='';

	document.getElementById('xml').innerHTML=resp_array[3];
	document.getElementById('xml').style.display='';	
  }
}

function stateChanged3()
{
resp=xmlhttp3.responseText;
if (xmlhttp3.readyState==4)
  {
   	resp_array = resp.split("<div>"); 
	document.getElementById("price").innerHTML=resp_array[0];


	document.getElementById("booking").innerHTML=resp_array[1];
	
	if (resp_array[2].length>2) {
		document.getElementById('errors').innerHTML+="Outbound journey: "+resp_array[2];
		document.getElementById('errors').style.border='3px red solid';
		document.getElementById('errors').style.display='';
		updatePrice();
	}
	
	document.getElementById("xml").innerHTML=resp_array[3];
	document.getElementById("xml").style.display='';
  }
}


function stateChanged4()
{
resp=xmlhttp3.responseText;
if (xmlhttp3.readyState==4)
  {
    resp_array = resp.split("<div>"); 
	document.getElementById("price").innerHTML=resp_array[0];
	//document.getElementById("booking").innerHTML=resp_array[1];
	//alert("return length: " + resp_array[2].length + ", value " + resp_array[2]);
	if (resp_array[2].length>7) {
		document.getElementById('errors').innerHTML+=resp_array[2]+'<br />';
		document.getElementById('errors').style.border='3px red solid';
		document.getElementById('errors').style.display='';
	}
	
	document.getElementById("xml").innerHTML=resp_array[3];
	document.getElementById("xml").style.display='';
	//init_accomm();
  }
}

function stateChanged5()
{
resp=xmlhttp3.responseText;
if (xmlhttp3.readyState==4)
	{
    document.getElementById("passengers").innerHTML=resp;
	}
}


