/******************** General functions ********************/

//Used to instantiate the XmlHttpObject for Ajax functions
function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			//IE6+
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				//IE5.5+
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				var returnMessage;
				returnMessage='Your browser does not support Ajax.';
				return false;
			}
		}
	}
	return xmlHttp;
}


/******************** Activity section ********************/

function displayMap()
{
	if(document.getElementById('displayMapText').innerHTML=='where\'s my nearest?')
	{
		document.getElementById('divLocationMap').style.display='block';
		document.getElementById('displayMapText').innerHTML='hide map';
	}
	else
	{
		document.getElementById('divLocationMap').style.display='none';
		document.getElementById('displayMapText').innerHTML='where\'s my nearest?';
	}
}



// updates bg color of an element

function updateBgColor( variableName, bgColor ){
	document.getElementById('1').style.background='#FFFFFF';
	document.getElementById('2').style.background='#FFFFFF';
	document.getElementById('3').style.background='#FFFFFF';
	document.getElementById('4').style.background='#FFFFFF';
	document.getElementById('5').style.background='#FFFFFF';
	document.getElementById('6').style.background='#FFFFFF';
	document.getElementById(variableName).style.background=bgColor;
}



/////////////////////////
///// ALL AJAX STUFF
/////////////////////////
function updateAjax(divName, pageName, variableName, data, variableName2, data2){
	xmlHttp=GetXmlHttpObject();
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			var ajax_processActivityClickResponseText=xmlHttp.responseText;
			document.getElementById(divName).innerHTML=ajax_processActivityClickResponseText;
			document.getElementById(divName).style.visibility = "visible";
		}
	}
	if(variableName) {
		var url=pageName+'?'+variableName+'='+data+'&'+variableName2+'='+data2;
	}
	else
	{
		var url=pageName;
	}
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}





/////////////////////////
///// ALL FORM FIELD UPDATES
/////////////////////////
function updateFormField(formName, fieldName, value){
	document.getElementById(fieldName).value = value;
}



function updateDiv(divName, value){
	document.getElementById(divName).innerHTML = value;
}





function processMapClick(selectedIndex)
{
	var selectLocation=document.getElementById("selectLocation");
	selectLocation.selectedIndex=selectedIndex;
	//updateDiv('basketLocation', selectLocation.options[selectLocation.selectedIndex].text); 
	updateAjax('activityAjaxSection', 'ajax_processLocationChange.php', 'locationId', selectLocation.options[selectLocation.selectedIndex].value); 
	updateFormField('activity', 'location', selectLocation.options[selectLocation.selectedIndex].text);
	
	//Change the location select drop-down. The rest of the code is then exactly the same as processLocationChange().
	document.getElementById('divLocationMap').style.display='none';
	document.getElementById('displayMapText').innerHTML='where\'s my nearest?';
	document.getElementById('done1').style.display='inline'; 
}









//When the continue button is clicked on the Activity page, we need to ensure that certain fields have been set before we allow the customer to continue.
function validateFormActivity(formVar)
{
	var formValid=true;
	var loc = "";
	var loc2 = "";
	var loc3 = "";
	var loc4 = "";
	
	if(document.getElementById("voucherCode"))
	{
		//If the voucherCode field is present, we must determine whether the customer has submitted a voucher code that was actually issued by that voucher issuer.
		xmlHttp=GetXmlHttpObject();
		xmlHttp.onreadystatechange=function()
		{
			if(xmlHttp.readyState==4)
			{
				document.getElementById("voucherCode").value=xmlHttp.responseText;
			}
		}
		var url='ajax_processRedeemVoucher.php?voucherCode='+document.getElementById("voucherCode").value+'&voucherIssuer='+document.getElementById("voucherIssuer").value;
		xmlHttp.open("GET",url,true);
		// the only way not to cache results in IE
		xmlHttp.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
		xmlHttp.send(null);
	}

	//The two voucher fields only appear on the classPageActivityRedeemVoucher instance.
	if(document.getElementById("voucherIssuer"))
	{
		if(document.getElementById("voucherIssuer").value=='0')
		{
			//var loc5 = "- You must select an issuer";
			//formValid=false;
		}
	}

	/////////////////
	//We test for presence because there is no location drop-down for the Buy Voucher variation.
	/////////////////

	if(document.getElementById("done1").style.display=="none"){
		var loc = "- You must select a location";
		formValid=false;
	}

	if(document.getElementById("done2").style.display=="none"){
		var loc2 = "- You must select an activity";
		formValid=false;
	}

	if(document.getElementById("done3").style.display=="none"){
		var loc3 = "- You must select a date and time";
		formValid=false;
	}


	if(document.getElementById("validateTrue"))
	{
		if(document.getElementById("validateTrue").value=='')
		{
			var loc4 = "- You have entered an invalid code";
			formValid=false;
		}
	}


	if (formValid==false)
	{
		alert(loc + "\n" + loc2 + "\n" + loc3 + "\n" + loc4);
		return false;
	} else {
		document.getElementById(formVar).submit();	
	}
}



/******************** Add Ons section ********************/

function addMerchandise(id,unitCost,name)
{
	//alert(id);
	var qtyId = "selectQty_"+id;
	var sizeId = "size_"+id;
	var qty = document.getElementById(qtyId).value;
	if ( document.getElementById(sizeId) ){
		var name = document.getElementById(sizeId).value + ' ' + name;
	}
	updateAjax('divBasketPanel', 'updateCart.php', 'itemvalues', id+'@'+unitCost+'@'+name+'@'+qty);

}

function removeMerchandise(id)
{
	updateAjax('divBasketPanel', 'updateCart.php', 'removeItemId', id);

}








/******************** Your Details section ********************/

function validateFormYourDetails(formVar)
{
	var formValid="123";
	var loc = "";
	var loc2 = "";
	var loc3 = "";
	
	if(document.getElementById('name1').value.length==0)
	{
		document.getElementById('nameWarning1').innerHTML='You must enter a first name';
		formValid="false";
	}
	else
	{
		document.getElementById('nameWarning1').innerHTML='';
	}
	
	
	if(document.getElementById('name2').value.length==0)
	{
		document.getElementById('nameWarning2').innerHTML='You must enter a last name';
		formValid="false";
	}
	else
	{
		document.getElementById('nameWarning2').innerHTML='';
	}
	
	
	if(document.getElementById('email').value.length==0)
	{
		document.getElementById('emailWarning').innerHTML='You must enter an email address';
		formValid="false";
	}
	else if (document.getElementById('email').value.indexOf("@")==-1)
	{
		document.getElementById('emailWarning').innerHTML='You must enter a valid email address';
		formValid="false";
	}
	else if(document.getElementById('email').value !== document.getElementById('email2').value)
	{
		document.getElementById('emailWarning').innerHTML='Your email address must match';
		formValid="false";
	}
	else
	{
		document.getElementById('emailWarning').innerHTML='';
	}



	if(document.getElementById('postcode').value.length==0)
	{
		document.getElementById('postcodeWarning').innerHTML='You must enter a postcode';
		formValid="false";
	}
	else
	{
		document.getElementById('postcodeWarning').innerHTML='';
	}

	if(document.getElementById('address').value.length==0)
	{
		document.getElementById('addressWarning').innerHTML='You must enter an address';
		formValid="false";
	}
	else
	{
		document.getElementById('addressWarning').innerHTML='';
	}

	if(document.getElementById('mobNo').value.length==0)
	//if(isNaN(document.getElementById('telNo').value)==true)
	{
		document.getElementById('mobNoWarning').innerHTML='You must enter a contact number';
		formValid="false";
	}
	else
	{
		document.getElementById('mobNoWarning').innerHTML='';
	}

	//if(isNaN(document.getElementById('mobNo').value)==true)
	//{
		//document.getElementById('mobNoWarning').innerHTML='There must only be numbers in your mobile number';
		//formValid="false";
	//}
	//else
	//{
		//document.getElementById('mobNoWarning').innerHTML='';
	//}

	if(document.getElementById('divParty1'))
	{
		if(document.getElementById('party1FirstName1').value=="")
		{
			document.getElementById('party1FirstNameWarning1').innerHTML='You must enter a first name for party 1';
			formValid="false";
		}
		else
		{
			document.getElementById('party1FirstNameWarning1').innerHTML='';
		}
		
		if(document.getElementById('party1FirstName2').value=="")
		{
			document.getElementById('party1FirstNameWarning2').innerHTML='You must enter a last name for party 1';
			formValid="false";
		}
		else
		{
			document.getElementById('party1FirstNameWarning2').innerHTML='';
		}

		if(document.getElementById('party1DobDay').value=="day")
		{
			document.getElementById('party1DobWarning').innerHTML='You must enter a date of birth';
			formValid="false";
		}
		else
		{
			document.getElementById('party1DobWarning').innerHTML='';
		}
		
		
		if(document.getElementById('party1DobMonth').value=="month")
		{
			document.getElementById('party1DobWarning').innerHTML='You must enter a date of birth';
			formValid="false";
		}
		else
		{
			document.getElementById('party1DobWarning').innerHTML='';
		}
		
		
		if(document.getElementById('party1DobYear').value=="year")
		{
			document.getElementById('party1DobWarning').innerHTML='You must enter a date of birth for party 1';
			formValid="false";
		}
		else
		{
			document.getElementById('party1DobWarning').innerHTML='';
		}

		if(document.getElementById('party1TelNo').value=="")
		{
			document.getElementById('party1TelWarning').innerHTML='You must enter a contact number for party 1';
			formValid="false";
		}
		else
		{
			document.getElementById('party1TelWarning').innerHTML='';
		}


	}

	if(document.getElementById('divParty2'))
	{
		if(document.getElementById('party2FirstName1').value.length==0)
		{
			document.getElementById('party2FirstNameWarning1').innerHTML='You must enter a first name for party 2';
			formValid="false";
		}
		else
		{
			document.getElementById('party2FirstNameWarning1').innerHTML='';
		}
		
		if(document.getElementById('party2FirstName2').value.length==0)
		{
			document.getElementById('party2FirstNameWarning2').innerHTML='You must enter a last name for party 2';
			formValid="false";
		}
		else
		{
			document.getElementById('party2FirstNameWarning2').innerHTML='';
		}


		if(document.getElementById('party2DobYear').value=="year")
		{
			document.getElementById('party2DobWarning').innerHTML='You must enter a date of birth for party 2';
			formValid="false";
		}
		else
		{
			document.getElementById('party2DobWarning').innerHTML='';
		}


	}
	if(document.getElementById('terms').checked==false)
	{
		document.getElementById('termsWarning').innerHTML='You must agree to our terms and conditions';
		formValid="false";
	}
	else
	{
		document.getElementById('termsWarning').innerHTML='';
	}

	/*
	EVOUCHER GIFT MESSAGE - NOW OPTIONAL
	if(document.getElementById('evoucherEmail'))
	{
		if(document.getElementById('evoucherEmail').value.length==0)
		{
			document.getElementById('evoucherEmailWarning').innerHTML='You must enter a recipient email address';
			formValid="false";
		}
		else
		{
			document.getElementById('evoucherEmailWarning').innerHTML='';
		}
	
		if(document.getElementById('evoucherName').value.length==0)
		{
			document.getElementById('evoucherNameWarning').innerHTML='You must enter a recipient name';
			formValid="false";
		}
		else
		{
			document.getElementById('evoucherNameWarning').innerHTML='';
		}
	
	}*/
		if (formValid=="123") {
			document.getElementById(formVar).submit();	
		} else {
			document.getElementById("errorMsgBox").style.display="block";
		}
}






function displayDivPartyAddressDetails(id)
{
	if(id==1)
	{
		document.getElementById('divPartyAddressDetails').style.display='none';
		document.getElementById('divPartyAddressDetailsInput').style.display='block';
	}
	else
	{
		document.getElementById('divPartyAddressDetailsInput').style.display='none';
		document.getElementById('divPartyAddressDetails').style.display='block';
	}
}

function winOpenCardVerification()
{
	window.open("winOpenCardVerification.html","_blank","toolbar=no, location=no, directories=no, status=no, titlebar=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=200, height=300");
}










/******************** Redeem Voucher functions ********************/

//For the Redeem Voucher instance, there is a requirement that clicking the Continue button on the Your Details page will take the user straight to the confirmation page if they have not added any merchandise to their basket. We determine this very simply by deducting the value of the activity from the basket total (both fields are found in the basket panel). If the result is zero, then we change the div containing the initial form tag so that the action points to the confirmation page rather than the Your Details page. The Your Merchandise page is the default action so that in the event of an error the customer at least gives too much information rather than too little.
function determineFormAction()
{
	var basketActivityPrice=parseInt(document.getElementById('basketActivityPrice').value);
	var basketTotal=parseInt(document.getElementById('basketTotal').value);
	var merchandiseTotal=basketTotal-basketActivityPrice;
	if(merchandiseTotal==0)
	{
		document.getElementById('formYourDetails').action='bookingConfirmation.php';
		alert(document.getElementById('formYourDetails').action);
	}
	else
	{
		document.getElementById('formYourDetails').action='bookingYourBasketRedeemVoucher.php';
		alert(document.getElementById('formYourDetails').action);
	}
}








/******************** Buy Voucher functions ********************/

//A simplified version of processActivityClick to take into account the removal of the location and date sections.
function voucher1(formVar)
{
	var formValid=true;
	var loc = "";
	var loc2 = "";
	var loc3 = "";


	if(document.getElementById("activityId").value=='')
	{
			var loc2 = "- You must select an activity";
			formValid=false;
	}


	if (formValid==false)
	{
		alert(loc + "\n" + loc2 + "\n" + loc3);
		return false;
	} else {
		document.getElementById(formVar).submit();	
	}
}

