function unsecureLinks()
{
    var i = 0;
    var aTags=document.getElementsByTagName('a');
    for(i = 0; i < aTags.length; i++)
    {
        var tag = aTags[i].href;
        aTags[i].href = tag.replace("https:","http:")
    }
}

function validateSearch()
{
//alert("We are currently performing essential maintenance on our website. \nPlease call 0845 085 8080 to book your flights.");
//return false;
	var validForm = true;
	var errorMessages = "";
	var arrAirport = document.getElementById("arrAirport");
	var errorDate = document.getElementById("errorDate");
	var errArrAirport = document.getElementById("errArrAirport");
	
	var today = new Date();
	var depDate = new Date();
	depDate.setYear(document.getElementById("year").value);
	depDate.setMonth(document.getElementById("month").value - 1);
	depDate.setDate(document.getElementById("day").value);
	//alert("depDate: " + depDate + "\ntoday: " + today);
	
	/*for(i = 0; i < document.forms["form1"].length; i++)
	{
		removeError(document.forms["form1"][i]);
	}*/
	removeError(errorDate);
	removeError(errArrAirport);
	
	if(arrAirport.value == "")
	{
		writeError(errArrAirport);
		errorMessages += "Please remember to select a destination airport\n";
		validForm = false;
	}
	if(depDate <= today.setDate(today.getDate() + 2))
	{
		writeError(errorDate);
		errorMessages += "For bookings within 48 hours of departure please call our reservations department\n";
		validForm = false;
	}
	if(depDate.getFullYear()+leftPad(depDate.getMonth(),'0',2)>="201104")
	{
		writeError(errorDate);
		errorMessages += "This date is not on sale yet. Please call 0845 085 8080 for more details.\n";
		validForm = false;
	}
	if(arrAirport.value!="TAB" && arrAirport.value!="GND")
	{
		writeError(errArrAirport);
		errorMessages += "Sorry this destination is not bookable online. Please call 0845 085 8080 to book this flight.\n";
		validForm = false;
	}
	if(errorMessages != "")
	{
		 alert(errorMessages);
	}
	return validForm;
}

function validatePax()
{
	var boolPaymentRequired = document.getElementById("boolPaymentRequired").value;
	var OverEighteenExists=false;
	var UnderSixteenExists=false;
	var i = 0;
	var validForm = true;
	var errorMessages = "";
// Only validate CC etc details if payemnt is required
if (boolPaymentRequired != "False") {
	var CCardAddresses1 = document.getElementById("CCardAddresses1");
	var CCardAddresses2 = document.getElementById("CCardAddresses2");
	var CCardCities = document.getElementById("CCardCities");
	var CCardCountries = document.getElementById("CCardCountries");
	var CCardPostCodes = document.getElementById("CCardPostCodes");
	var MainEmail = document.getElementById("MainEmail");
	var MainTelWork = document.getElementById("MainTelWork");
	var MainTelHome = document.getElementById("MainTelHome");
	var cc_type = document.getElementById("cc_type");
	var cc_name = document.getElementById("cc_name");
	var cc_number = document.getElementById("cc_number"); //.match(/^\d+$/)
	var cc_cvv = document.getElementById("cc_cvv");
	var cc_month_start = document.getElementById("cc_month_start");
	var cc_year_start = document.getElementById("cc_year_start");
	var cc_month = document.getElementById("cc_month");
	var cc_year = document.getElementById("cc_year");
	var cc_issue = document.getElementById("cc_issue");
	var termsbox = document.getElementById("termsbox");
}
//End CC etc if statement as followings tuff is required

	for(i = 0; i < document.forms["pax"].length; i++)
	{
		removeError(document.forms["pax"][i]);
	}

// Only validate CC etc details if payemnt is required
if (boolPaymentRequired != "False") {
	
	removeError(document.getElementById("expiryError"));
	removeError(document.getElementById("startError"));
			
	if(CCardAddresses1.value == "" || CCardAddresses1.value == CCardAddresses1.defaultValue)
	{
		writeError(CCardAddresses1);
		errorMessages += "Please enter address line 1\n";
		validForm = false;
	}
	if(CCardAddresses2.value == CCardAddresses1.defaultValue) // not mandatory field
	{
		//writeError(CCardAddresses2);
		//errorMessages += "Please enter address line 2\n";
		//validForm = false;
		CCardAddresses2.value = "";
	}
	if(CCardCities.value == "" || CCardCities.value == CCardCities.defaultValue)
	{
		writeError(CCardCities);
		errorMessages += "Please enter your city\n";
		validForm = false;
	}
	if(CCardPostCodes.value == "" || CCardPostCodes.value == CCardPostCodes.defaultValue)
	{
		writeError(CCardPostCodes);
		errorMessages += "Please enter your postcode\n";
		validForm = false;
	}
	if(CCardCountries.value == "" || CCardCountries.value == CCardCountries.defaultValue)
	{
		writeError(CCardCountries);
		errorMessages += "Please enter your country\n";
		validForm = false;
	}
	if(MainEmail.value == "" || MainEmail.value.indexOf(".") == -1 || MainEmail.value.indexOf("@") == -1 || MainEmail.value.length < 6)
	{
		writeError(MainEmail);
		errorMessages += "Please enter a valid email\n";
		validForm = false;
	}
	if(MainTelWork.value == "" || MainTelWork.value == MainTelWork.defaultValue)
	{
		writeError(MainTelWork);
		errorMessages += "Please enter your work number\n";
		validForm = false;
	}
	if(MainTelHome.value == "" || MainTelHome.value == MainTelHome.defaultValue)
	{
		writeError(MainTelHome);
		errorMessages += "Please enter your home number\n";
		validForm = false;
	}
	/*if(cc_type.value == "SWI" || cc_type.value == "DEL")
	{
		var CCard=confirm("An additional charge of 1.75% will be made to cover the cost of this transaction. If you wish to avoid this charge please use a credit card.");
		if(CCard==false) validForm=false;
	}*/
	
}
//End CC etc if statement as followings tuff is required
	
	
	i = 1;
	while(document.getElementById("initA"+i) != null)
	{
	    var tmp = document.getElementById("initA"+i)
	    if(tmp.value == "" || tmp.value == tmp.defaultValue)
	    {
		    writeError(tmp);
		    errorMessages += "Please make sure you enter the initial of adult " + i + "\n";
		    validForm = false;
	    }
	    i++;
	}
	i = 1;
	while(document.getElementById("surnameA"+i) != null)
	{
	    var tmp = document.getElementById("surnameA"+i)
	    if(tmp.value == "" || tmp.value == tmp.defaultValue)
	    {
		    writeError(tmp);
		    errorMessages += "Please make sure you enter the surname of adult " + i + "\n";
		    validForm = false;
	    }
	    i++;
	}

	i = 1;
	while(document.getElementById("ageA"+i) != null)
	{
	    var tmp = document.getElementById("ageA"+i)
	    if(tmp.value == "")
	    {
		    writeError(tmp);
		    errorMessages += "Please make sure you enter the age of adult " + i + "\n";
		    validForm = false;
	    }
	    else
		{
			if(tmp.value > 17)
			{
			OverEighteenExists=true;
			}
			if(tmp.value < 16)
			{
			UnderSixteenExists=true;
			}			
		}
	i++;
	}
	i = 1;
	while(document.getElementById("initC"+i) != null)
	{
	    var tmp = document.getElementById("initC"+i)
	    if(tmp.value == "" || tmp.value == tmp.defaultValue)
	    {
		    writeError(tmp);
		    errorMessages += "Please make sure you enter the initial of child " + i + "\n";
		    validForm = false;
	    }
	    i++;
	}
	i = 1;
	
	while(document.getElementById("surnameC"+i) != null)
	{
	    var tmp = document.getElementById("surnameC"+i)
	    if(tmp.value == "" || tmp.value == tmp.defaultValue)
	    {
		    writeError(tmp);
		    errorMessages += "Please make sure you enter the surname of child " + i + "\n";
		    validForm = false;
	    }
		i++;
	}
	i = 1;
	while(document.getElementById("ageC"+i) != null)
	{
	    var tmp = document.getElementById("ageC"+i)
	    if(tmp.value == "")
	    {
		    writeError(tmp);
		    errorMessages += "Please make sure you enter the age of child " + i + "\n";
		    validForm = false;
	    }
	    else
		{
			if(tmp.value < 16)
			{
			UnderSixteenExists=true;
			}
		}
		i++;
	}
	i = 1;
	while(document.getElementById("initI"+i) != null)
	{
	    var tmp = document.getElementById("initI"+i)
	    if(tmp.value == "" || tmp.value == tmp.defaultValue)
	    {
		    writeError(tmp);
		    errorMessages += "Please make sure you enter the initial of infant " + i + "\n";
		    validForm = false;
	    }
	    i++;
	}
	i = 1;
	while(document.getElementById("surnameI"+i) != null)
	{
	    var tmp = document.getElementById("surnameI"+i)
	    if(tmp.value == "" || tmp.value == tmp.defaultValue)
	    {
		    writeError(tmp);
		    errorMessages += "Please make sure you enter the surname of infant " + i + "\n";
		    validForm = false;
	    }
	    i++;
	}
	i = 1;
	while(document.getElementById("ageI"+i) != null)
	{
	    var tmp = document.getElementById("ageI"+i)
	    if(tmp.value == "")
	    {
		    writeError(tmp);
		    errorMessages += "Please make sure you enter the age of infant " + i + "\n";
		    validForm = false;
	    }
	    else
		{
			if(tmp.value < 16)
			{
			UnderSixteenExists=true;
			}
		}
	i++;
	}
	if(UnderSixteenExists)
	{
		if(!OverEighteenExists)
		{
			errorMessages += "Under 16 year olds must be accompanied by an adult of at least 18\n";
			validForm = false;
		}
	}
	
// Only validate CC etc details if payemnt is required
if (boolPaymentRequired != "False") {
	
	if(cc_name.value == "" || cc_name.value == cc_name.defaultValue)
	{
		writeError(cc_name);
		errorMessages += "Please enter the card holders name\n";
		validForm = false;
	}
	if(!cc_number.value.match(/^[\d ]+$/))
	{
		writeError(cc_number);
		errorMessages += "Please enter a valid card number\n";
		validForm = false;
	}
	if(!isvalidcard(cc_type.value,cc_number.value))
	{
		if(!confirm("Please confirm that you are happy with your card number and card type\n Press ok to continue or cancel to alter your details."))
		{
			writeError(cc_number);
			errorMessages += "Please enter a valid vard number\n";
			validForm = false;
		}
	}
	if(!cc_cvv.value.match(/^\d+$/))
	{
		writeError(cc_cvv);
		errorMessages += "Please enter the card's security number ("+(cc_type.value=="AMX" ? "4 digits on front of the card" : "last 3 digits on the back")+")\n";
		validForm = false;
	}
	//validate start date if swi
	if(cc_type.value == "SWI" && cc_month_start.selectedIndex == 0 && cc_year_start.selectedIndex == 0)
	{
		writeError(document.getElementById("startError"));
		errorMessages += "Please make sure you enter your cards start date\n";
		validForm = false;
	}
	
	if(cc_month.selectedIndex == 0 && cc_year.selectedIndex == 0)
	{
		writeError(document.getElementById("expiryError"));
		errorMessages += "Please make sure you enter your cards expiry date\n";
		validForm = false;
	}
	
	if(cc_type.value != "SWI")
	{
		cc_issue.value = "";
	}
	if(cc_type.value == "SWI" && !cc_issue.value.match(/^\d+$/) && validForm) // only bother to check if so far valid form
	{
		if(!confirm("You haven't entered your cards issue number, is this ok?"))
		{
			writeError(cc_issue);
			errorMessages += "Please enter a valid issue number\n";
			validForm = false;
		}
	}
	
	if(termsbox.checked == false)
	{
		writeError(document.getElementById("termsbox"));
		errorMessages += "You need to accept our Terms and Conditions to proceed\n";
		validForm = false;
	}
	
}
//End CC etc if statement as followings tuff is required
	
	if(errorMessages != "")
	{
		 alert(errorMessages);
	}
	return validForm;
}

 // Adapted from http://en.wikipedia.org/wiki/Credit_card_number
 function CheckParity(strLuhn){var intRunning=0,intThis=0;for(var intI=strLuhn.length-1;intI>=0;intI--){numvar=parseInt(strLuhn.charAt(intI));if((strLuhn.length-intI)%2==0){intThis*=2;if(intThis>9)intThis-=9;}intRunning+=intThis;}return intRunning%10==0;}
function isvalidcard(strCardType,strCardNumber)
  {
   var boolValid = false;
   if (strCardType=="AMX"      && (/^3(4|7)\d{13}?$/.test(strCardNumber)) && CheckParity(strCardNumber)) { boolValid = true; } // American Express
   else if (strCardType=="ACC" && (/^5[1-5]\d{14}?$/.test(strCardNumber)) && CheckParity(strCardNumber)) { boolValid = true; } // MasterCard
   else if (strCardType=="SWI" && (/^(5020|5038|6304|6759)\d{12}(\d{2})?$/.test(strCardNumber)) && CheckParity(strCardNumber)) { boolValid = true; } // Maestro
   else if (strCardType=="SWI" && (/^6334\d{12}(\d{2,3})?$/.test(strCardNumber)) && CheckParity(strCardNumber)) { boolValid = true; } // Solo
   else if (strCardType=="SWI" && (/^(4903|4905|4911|4936|564182|633110|6333|6759)\d{10}(\d{2,3})?$/.test(strCardNumber)) && CheckParity(strCardNumber)) { boolValid = true; } // Switch
   else if (strCardType=="VIS" && (/^4\d{11}(\d{4})?$/.test(strCardNumber)) && CheckParity(strCardNumber)) { boolValid = true; } // Visa Credit
   else if (strCardType=="VIS" && (/^4(17500|917|913|508|844)\d{10}(\d{2})?$/.test(strCardNumber)) && CheckParity(strCardNumber)) { boolValid = true; } // Visa Debit
   return boolValid;
  }
 
function writeError(obj) {
	if (obj.hasError) return;
	obj.className += ' redborder';
	obj.hasError = true;
}

function removeError(obj)
{
	if(obj.className.indexOf('redborder') != -1)
	{
		obj.className = obj.className.substring(0,obj.className.lastIndexOf(' '));
	}
	obj.hasError = false;
}

function calculateSurcharge(totHolVal,cardType,totDueNow)
{
	var elTotHolVal = document.getElementById("TotHolVal");
	var elSurcharge = document.getElementById("surcharge");
	var elSurcharge2 = (document.getElementById("surcharge2") != null) ? document.getElementById("surcharge2") : "";
	var elPaylater = (document.getElementById("paylater") != null) ? document.getElementById("paylater") : "";
	var elDepositSurchargeText = (document.getElementById("depositsurchargetext") != null) ? document.getElementById("depositsurchargetext") : "";
	var elDepositValue = (document.getElementById("depositvalue") != null) ? document.getElementById("depositvalue") : "";
	var surcharge = 1;
	var payLaterSurcharge = 0;
	var depSurcharge = 0;	
	
	if(cardType == "ACC" || cardType == "VIS" || cardType == "AMX")
	{
		surcharge = myround(totHolVal * 0.02);
		elSurcharge.innerHTML = " (including 2.00% credit card surcharge of &pound;" + surcharge + ") ";
		if(elSurcharge2 != "")
		{
			payLaterSurcharge = myround((totHolVal - totDueNow) * 0.02);
			elSurcharge2.innerHTML = " (including 2.00% credit card surcharge of &pound;" + payLaterSurcharge + ") ";
		}
		if(elDepositSurchargeText != "")
		{
			depSurcharge = myround(totDueNow * 0.02);
			elDepositValue.innerHTML = "" + myround(parseFloat(totDueNow) + parseFloat(depSurcharge));
			elDepositSurchargeText.innerHTML = "";
			elDepositSurchargeText.innerHTML = " (including 2.00% credit card surcharge of &pound;" + depSurcharge + ") ";
		}
	}
	else
	{
		surcharge = totHolVal * 0;
		elSurcharge.innerHTML = "";
		depSurcharge = myround(totDueNow);
		if(elSurcharge2 != "")
		{
			elSurcharge2.innerHTML = "";
		}
		if(elDepositSurchargeText != "")
		{
			elDepositValue.innerHTML = depSurcharge;
			elDepositSurchargeText.innerHTML = "";
		}
	}
	
	elTotHolVal.innerHTML = myround(parseFloat(totHolVal) + parseFloat(surcharge));
	if(elPaylater != "")
	{
		elPaylater.innerHTML = myround((parseFloat(totHolVal) + parseFloat(payLaterSurcharge)) - totDueNow);
	}
}
function myround(value)
{
	value = Math.round(value * 100);
	value = value / 100;
	if(value.toString().indexOf(".") == -1)
	{
		value = value + ".00";
	}
	else if(value.toString().indexOf(".") == value.toString().length - 2)
	{
		value = value.toString() + "0";
	}
	return value;
}