function IEVersion(){
	var _n=navigator,_w=window,_d=document;
	var version="NA";
	var na=_n.userAgent;
	var ieDocMode="NA";
	var ie8BrowserMode="NA";
	// Look for msie and make sure its not opera in disguise
	if(/msie/i.test(na) && (!_w.opera)){
		// also check for spoofers by checking known IE objects
		if(_w.attachEvent && _w.ActiveXObject){		
			// Get version displayed in UA although if its IE 8 running in 7 or compat mode it will appear as 7
			version = (na.match( /.+ie\s([\d.]+)/i ) || [])[1];
			// Its IE 8 pretending to be IE 7 or in compat mode		
			if(parseInt(version)==7){				
				// documentMode is only supported in IE 8 so we know if its here its really IE 8
				if(_d.documentMode){
					version = 8; //reset? change if you need to
					// IE in Compat mode will mention Trident in the useragent
					if(/trident\/\d/i.test(na)){
						ie8BrowserMode = "Compat Mode";
					// if it doesn't then its running in IE 7 mode
					}else{sssss
						ie8BrowserMode = "IE 7 Mode";
					}
				}
			}else if(parseInt(version)==8){
				// IE 8 will always have documentMode available
				if(_d.documentMode){ ie8BrowserMode = "IE 8 Mode";}
			}
			// If we are in IE 8 (any mode) or previous versions of IE we check for the documentMode or compatMode for pre 8 versions			
			ieDocMode = (_d.documentMode) ? _d.documentMode : (_d.compatMode && _d.compatMode=="CSS1Compat") ? 7 : 5;//default to quirks mode IE5				   			
		}
	}
	
	return ie8BrowserMode;
	//return {
		//"UserAgent" : na,
		//"Version" : version,
		//"BrowserMode" : ie8BrowserMode,
		//"DocMode": ieDocMode
		
	//}			
}

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

function checkVersion()
{
  var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();
  var ie_mode = IEVersion();

  if ( ver > -1 )
  {
    if ( ver >= 8.0 ) {
      msg = "You're using version " + ver + " of Internet Explorer.";
	   //location.href = "http://www.skipowerdev.co.uk/ie8_warning.asp";
	   //alert( msg );
	   //alert( ie_mode );
	} else {
      msg = "You should upgrade your copy of Internet Explorer.";
	}
  }
  
}

checkVersion();

//set to true to prompt user that navigatin away from the quote screen will loose the current quote
var bInQuote = false;

function newwindow(mypage, myname, w, h, scroll, sContent) {
	try	
	{
		var winl = (screen.width - w) / 2;
		var wint = (screen.height - h) / 2;
		winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable';
		win = window.open(mypage, myname, winprops);
		if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
		if (sContent.length > 0){win.document.writeln(sContent);}
	}
	catch(e)
	{
		window.alert('A window was trying to open but was blocked by your browser.\n\nTo view the content unrestrict popups and try again');
	}
	return false;
}

//returns form elements
function getObject(s)
{
	var o = null;

	if ( document.getElementById(s) != null )
		o = document.getElementById(s);
	
	return o;
}

//restrict user input to integer values only
function RestrictUserInput(elem) 
{
    	if (/[^\d]/g.test(elem.value))
       		elem.value = elem.value.replace(/[^\d]/g, '');
}

//toggles a textbox value based upon checkbox value
function toggleTextfromCheck(chk,text)
{
	var o = getObject(text);

	if ( o != null )
	{
		o.value = ( chk.checked ) ? 1 : 0;
	}
}

//toggles a textbox value based upon checkbox value
function toggleTextfromCheckInt(chk,text,val)
{
	var o = getObject(text);

	if ( o != null )
	{
		o.value = ( chk.checked ) ? val : 0;
	}	
}

//compare two text boxes
function compareBox(txt1, txt2)
{
	var o = getObject(txt1);
	var p = getObject(txt2);
	var status = false;

	if ( o != null && p != null )
	{
		status = ( o.value == p.value );
	}

	return status;
}

//notify's caller of comparison of boxes
function matchBoxes(txt1, txt2, divEl, rtnText)
{
	var display = "";
	var o = getObject(divEl);

	if ( o != null )
	{
		if ( !compareBox(txt1, txt2) )
			display = rtnText;			
	}

	o.innerHTML = display;
}

//sets focus to a box
function focusBox(sWho)
{
	var o = getObject(sWho);
	
	if ( o != null )
		o.focus();
}

function sB(va)
{
	document.getElementById('butHyper').disabled = false;
	document.getElementById('txtSelection').value=va.id;
}

function changeHeaderImage(what, resetDisplay)
{
	try
	{
		var o = document.getElementById('tmpBanner');

		if ( o != null )
			o.src="_images/content_pages_top/" + what;

		o = document.getElementById('resetTag');

		if ( o != null )
			o.style.visibility = resetDisplay;
	}
	catch(e)
	{
		//window.alert(e.description);
	}
}

function resetTemplate(what)
{
	try
	{
		var o = document.getElementById('selTemplates');

		o.value = what;
		changeHeaderImage(what, "hidden");
	}
	catch(e)
	{}
	finally
	{
		return false;
	}
}

function CopyRow(row, column, iMax, txt)
{
	if ( column >= iMax )
	{
		var txt1 = getObject(txt + row + '' + (column - iMax));
		var txt2 = getObject(txt + row + column);

		if ( txt2.value == '' )	
		{
			if ( txt1 && txt2 )
			{
				txt2.value = txt1.value;
			}
		}
	}
}

function cacheImgs()
{
	var img1 = new Image();
	img1.src = "_images/navigation/home2_hig.gif";
}

function filterSearch(who)
{
	try
	{
		var o = getObject("search_container");

		if ( o ) o.style.display = (o.style.display == "none") ? "block":"none";

		var j = getObject("search_text");

		if ( j ) j.style.display = (j.style.display == "none") ? "block":"none";

		var a = getObject("search_filter");

		if ( a ) a.innerHTML = (o.style.display == "none") ? "<a href='#' onClick='return filterSearch(this);'><img src='_images/buttons/filter_show.gif'></a>":"<a href='#' onClick='return filterSearch(this);'><img src='_images/buttons/filter_hide.gif'></a>";
	}
	catch(e)
	{}
	finally
	{
		this.text = "hello";
		return false;
	}
	
}

function toggleConfirm(who, what)
{
	var sName = getObject("txtName" + what);
	var sEmail = getObject("txtEmail" + what);

	if ( sName && sEmail )
	{
		sName.style.backgroundColor = (who.checked) ? "#e3e3e3" : "#ffffff";
		sName.value = (who.checked) ? "Guest " + what : (sName.value == "Guest " + what) ? "" : sName.value;
		sEmail.style.backgroundColor = (who.checked) ? "#e3e3e3" : "#ffffff";
		sEmail.value = (who.checked) ? "T.B.C." : (sEmail.value == "T.B.C.") ? "" : sEmail.value;
	}
}

function toggleDivDisplay(who, bToggle)
{
	try
	{
		var o = getObject(who);

		if ( o != null )
			o.style.display = (bToggle) ? "block" : "none";
		else
			alert(who);
	}
	catch(e)
	{
		//window.alert(e.description);
	}
	finally
	{
		return false;
	}
}

// this function checks the amount of beds allocated 
function checkBeds(i_no)
{
	var rtn = false;

	try
	{
		var i_adults = getObject("txtExtraPersonsAdults").value;
		i_adults = (i_adults.length == 0) ? 0 : i_adults;

		var i_juniors = getObject("txtExtraPersonsJuniors").value;
		i_juniors = (i_juniors.length == 0) ? 0 : i_juniors;

		var i_infants = getObject("txtExtraPersonsInfants").value;
		var i_minbeds = parseInt(i_adults) + parseInt(i_juniors);
		var ibed = getObject("txtNoBeds");

		if ( i_no < i_minbeds )
		{
			window.alert('You need at least ' + i_minbeds + ' beds to accomodate the adults and juniors in the party');		
			ibed.value = i_minbeds;
			ibed.focus();
		}	
		else
			rtn = true;
	}
	catch(e)
	{
		//window.alert(e.description);
	}
	finally
	{
		return rtn;
	}
}

// this function toggles an elements disabled property
function toggleElement(who)
{
	try
	{
		var o = getObject(who);

		if ( o )
		{
			o.disabled = !o.disabled;
			o.style.backgroundColor = (o.disabled) ? "#e3e3e3" : "#ffffff";
		}
	}
	catch(e)
	{}
}

function checkQuote()
{
	var rtn = true;

	try
	{
		if ( bInQuote ) 
			rtn = confirm('You are currently in a quote\n\nNavigating away will loose this quote. Are you sure?');
	}
	catch(e)
	{
	}
	finally
	{
		return rtn;
	}
}

function get_countOfguests(iMax)
{
	var iAdults = getObject("txtAdults");	
	var iJuniors = getObject("txtJuniors");	
	var iInfants = getObject("txtInfants");
	var iFlights = getObject("txtFlights");	
	var iFlights1 = getObject("txtFlights1");	
	var iTransfers = getObject("txtTransfers");
	var iTransfers1 = getObject("txtTransfers1");
	var oHTML = getObject("total_guests");
	var o = getObject("continue");
	var sMessage;
	var bResult;
	
	//try
	//{
		var iA = (iAdults.value != "") ? iAdults.value : 0;
		var iJ = (iJuniors.value != "") ? iJuniors.value : 0;
		var iI = (iInfants.value != "") ? iInfants.value : 0;
		var iF = (iFlights.value != "") ? iFlights.value : 0;
		var iF1 = (iFlights1.value != "") ? iFlights1.value : 0;
		var iT = (iTransfers.value != "") ? iTransfers.value : 0;
		var iT1 = (iTransfers1.value != "") ? iTransfers1.value : 0;
		
		oHTML.innerHTML = parseInt(iA) + parseInt(iJ) + parseInt(iI);

		if ( iA <= 0 ) {
			sMessage = "A booking has to have at least 1 adult.";
			iAdults.focus();
			bResult = false;
		}
		else if ( iMax < (parseInt(iA) + parseInt(iJ) + parseInt(iI)) )
		{
			//oHTML.innerHTML += "<br /><font style='font-weight:normal;font-size:10px;color:#000000;'>exceeded maximum occupancy (" + iMax + ")</font>";
			//o.disabled = true;
			//alert("exceeded maximum occupancy (" + iMax + ")");	
			sMessage = "exceeded maximum occupancy (" + iMax + ")";
			bResult = false;
			//return false;
		}	
		else if ( Number(iF1) > Number(iI) ) {
			sMessage = "Number of infant flights exceeds the number of infants.";
			bResult = false;
		}
		else if ( Number(iF)+Number(iF1) > Number(iA)+Number(iJ)+Number(iI) ) {
			sMessage = "Number of flights exceeds the number of guests.";
			bResult = false;
		}
		else if ( (Number(iT)+Number(iT1)) > (Number(iA)+Number(iJ)+Number(iI))-(Number(iF)+Number(iF1)) ) {
			sMessage = "Number of transfers exceeds the number of guests without a flight.";
			bResult = false;
		}
		else if ( Number(iF1) > Number(iF) ) {
			sMessage = "Number of infant flights exceeds the number of adult flights.";
			bResult = false;
		}		
		else
		{
			o.disabled = false;
			//sMessage = "ok";
			//return true;
			bResult = true;
		}
	//}
	if (bResult == false) {
		//alert(sMessage);
	}
	
	return bResult;
	
	//catch(e)
	//{window.alert(e.description);}
	
}

function round_number(number,X) {
// rounds number to X decimal places, defaults to 2
    X = (!X ? 2 : X);
    return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

function get_CalculateManualSubTotals()
{
	var iAdults = getObject("txtAdults");	
	var iAdultsRate = getObject("txtAdultsRate");
	var iJuniors = getObject("txtJuniors");	
	var iJuniorsRate = getObject("txtJuniorsRate");
	var iInfants = getObject("txtInfants");	
	var iInfantsRate = getObject("txtInfantsRate");	
	var iAdultUnderOverOccupancy = getObject("txtAdultChildUnderOverOccupancy");	
	var iAdultUnderOverOccupancyRate = getObject("txtAdultChildUnderOverOccupancyRate");
	var iInfantUnderOverOccupancy = getObject("txtInfantUnderOverOccupancy");	
	var iInfantUnderOverOccupancyRate = getObject("txtInfantUnderOverOccupancyRate");
	
	var iFlights = getObject("txtFlights");	
	var iFlightsRate = getObject("txtFlightsRate");

	var iFlights1 = getObject("txtFlights1");	
	var iFlightsRate1 = getObject("txtFlightsRate1");

	var iTransfers = getObject("txtTransfers");	
	var iTransfersRate = getObject("txtTransfersRate");

	var iTransfers1 = getObject("txtTransfers1");	
	var iTransfersRate1 = getObject("txtTransfersRate1");

	//var iUnderOverOccupancy = getObject("txtUnderOverOccupancy");	
	//var iUnderOverOccupancyRate = getObject("txtUnderOverOccupancyRate");

	var oAdultsTotal = getObject("AdultsTotal");
	var oJuniorsTotal = getObject("JuniorsTotal");
	var oInfantsTotal = getObject("InfantsTotal");
	var oAdultUnderOverOccupancyTotal = getObject("AdultUnderOverOccupancyTotal");
	var oInfantUnderOverOccupancyTotal = getObject("InfantUnderOverOccupancyTotal");
	var oAdultFlightsTotal = getObject("AdultFlightsTotal");
	var oInfantFlightsTotal = getObject("InfantFlightsTotal");
	var oMotorwayTransfersTotal = getObject("MotorwayTransfersTotal");
	var oNonMotorwayTransfersTotal = getObject("NonMotorwayTransfersTotal");
	var oGrandTotal = getObject("GrandTotal");
	//var o = getObject("continue");
	
	//try
	//{
	//alert("dd");
		var iA = (iAdults.value != "") ? iAdults.value : 0;
		var iAR = (iAdultsRate.value != "") ? iAdultsRate.value : 0;
		var iJ = (iJuniors.value != "") ? iJuniors.value : 0;
		var iJR = (iJuniorsRate.value != "") ? iJuniorsRate.value : 0;
		var iI = (iInfants.value != "") ? iInfants.value : 0;
		var iIR = (iInfantsRate.value != "") ? iInfantsRate.value : 0;
		var iAF = (iFlights.value != "") ? iFlights.value : 0;
		var iAFR = (iFlightsRate.value != "") ? iFlightsRate.value : 0;
		var iIF = (iFlights1.value != "") ? iFlights1.value : 0;
		var iIFR = (iFlightsRate1.value != "") ? iFlightsRate1.value : 0;
		var iMT = (iTransfers.value != "") ? iTransfers.value : 0;
		var iMTR = (iTransfersRate.value != "") ? iTransfersRate.value : 0;
		var iNMT = (iTransfers1.value != "") ? iTransfers1.value : 0;
		var iNMTR = (iTransfersRate1.value != "") ? iTransfersRate1.value : 0;

		var iAUOO = (iAdultUnderOverOccupancy.value != "") ? iAdultUnderOverOccupancy.value : 0;
		var iAUOOR = (iAdultUnderOverOccupancyRate.value != "") ? iAdultUnderOverOccupancyRate.value : 0;
		var iIUOO = (iInfantUnderOverOccupancy.value != "") ? iInfantUnderOverOccupancy.value : 0;
		var iIUOOR = (iInfantUnderOverOccupancyRate.value != "") ? iInfantUnderOverOccupancyRate.value : 0;
//alert('£' + round_number(parseFloat(iA) * parseFloat(iAR), 2));
		oAdultsTotal.innerHTML = '£' + round_number(parseFloat(iA) * parseFloat(iAR), 2);
		oJuniorsTotal.innerHTML = '£' + round_number(parseFloat(iJ) * parseFloat(iJR),2);
		oInfantsTotal.innerHTML = '£' + round_number(parseFloat(iI) * parseFloat(iIR),2);
		oAdultFlightsTotal.innerHTML = '£' + round_number(parseFloat(iAF) * parseFloat(iAFR),2);
		oInfantFlightsTotal.innerHTML = '£' + round_number(parseFloat(iIF) * parseFloat(iIFR),2);
		oMotorwayTransfersTotal.innerHTML = '£' + round_number(parseFloat(iMT) * parseFloat(iMTR),2);
		oNonMotorwayTransfersTotal.innerHTML = '£' + round_number(parseFloat(iNMT) * parseFloat(iNMTR),2);
		oAdultUnderOverOccupancyTotal.innerHTML = '£' + round_number(parseFloat(iAUOO) * parseFloat(iAUOOR),2);
		oInfantUnderOverOccupancyTotal.innerHTML = '£' + round_number(parseFloat(iIUOO) * parseFloat(iIUOOR),2);
		var iTotal = round_number((parseFloat(iA) * parseFloat(iAR)) + (parseFloat(iJ) * parseFloat(iJR)) + (parseFloat(iI) * parseFloat(iIR)) + (parseFloat(iAF) * parseFloat(iAFR)) + (parseFloat(iIF) * parseFloat(iIFR)) + (parseFloat(iMT) * parseFloat(iMTR)) + (parseFloat(iNMT) * parseFloat(iNMTR)) + (parseFloat(iAUOO) * parseFloat(iAUOOR)) + (parseFloat(iIUOO) * parseFloat(iIUOOR)),2);
		oGrandTotal.innerHTML = '£' + iTotal;

	//}
	//catch (e) {
	//window.alert(e.description);
	//}
}

function get_CalculateManualFlightSubTotals()
{	
	var iFlights = getObject("txtFlights");	
	var iFlightsRate = getObject("txtFlightsRate");

	var iFlights1 = getObject("txtFlights1");	
	var iFlightsRate1 = getObject("txtFlightsRate1");

	//var iUnderOverOccupancy = getObject("txtUnderOverOccupancy");	
	//var iUnderOverOccupancyRate = getObject("txtUnderOverOccupancyRate");

	var oAdultFlightsTotal = getObject("AdultFlightsTotal");
	var oInfantFlightsTotal = getObject("InfantFlightsTotal");
	var oGrandTotal = getObject("GrandTotal");
	//var o = getObject("continue");
	
	//try
	//{
		var iAF = (iFlights.value != "") ? iFlights.value : 0;
		var iAFR = (iFlightsRate.value != "") ? iFlightsRate.value : 0;
		var iIF = (iFlights1.value != "") ? iFlights1.value : 0;
		var iIFR = (iFlightsRate1.value != "") ? iFlightsRate1.value : 0;
		oAdultFlightsTotal.innerHTML = '£' + parseFloat(iAF) * parseFloat(iAFR);
		oInfantFlightsTotal.innerHTML = '£' + parseFloat(iIF) * parseFloat(iIFR);
		var iTotal = (parseFloat(iAF) * parseFloat(iAFR)) + (parseFloat(iIF) * parseFloat(iIFR));
		oGrandTotal.innerHTML = '£' + iTotal;

	//}
	//catch(e)
	//{
	//window.alert(e.description);
	//}
}

function changeweeks(iDuration, iPriceID)
{
	var iframe = getObject("fra");

	if ( iframe )
		iframe.src = "Includes/Runner.asp?t=aw&p=" + iPriceID + "&d=" + iDuration;
}

//MD 20-09-2007 
//utils 
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function ExtractNoFromString(str)
{
	var code = '';
	for (var i=0; i < str.length; i++)
	{
		if (! isNaN( str.charAt(i) ) )
		{
			code = code + str.charAt(i).toString();
		}	
	}
	return code;
}

//------------------------------------------------------------
function ResetForm(formObject)
{
	
	var currElement;
	for(var i=0; i < formObject.length; i++)
	{	
		currElement = formObject.elements[i];	
		//getObject(currElement.name).style.borderColor = '#98AEC5';
	}
}

//test Functions
function ValidateForm_WithChecked(formObject, elementList, errDiv, blnWithCheckBox, a, j, f, f1, f2)
{

	var currElement, currElementName, currElement, blnIsValidated
	var elementToCheck, validationType
	var iErrorCount = 0;
	var iCode = 0;
	var oErrElement = getObject(errDiv);
	var aElementList = elementList.split(",");
	var sAge;
	var nAdults = 0;
	var nJuniors = 0;
	var nInfants = 0;
	var bGroupLeaderIsAdult = false;
	
	ResetForm(formObject);
	
	//sMessage = "Note: upon completing the booking process we will email the group leader advising them of the holiday and how they can book ski passes, equipment and lessons online, plus benefit from a 10% discount on ski equipment by booking in advance.";
	
	for (var x=0; x < aElementList.length; x++)
	{		
		iEndOf = aElementList[x].indexOf('=', 0);
		iGeneric = aElementList[x].indexOf('#',0);
		
		//get code if 
		if (iGeneric >0) elementToCheck = aElementList[x].substring(0,iGeneric);
		if (iGeneric == 0) elementToCheck = aElementList[x].substring(0,iEndOf);
		validationType = aElementList[x].substring(iEndOf+1, aElementList[x].length);

		for(var i=0; i < formObject.length; i++)
		{			
			currElement = formObject.elements[i];	
			iCode = ExtractNoFromString(currElement.name);
			if (x == 0) {
				if (currElement.name.indexOf('age', 0) != -1)
				{
					sAge = getAge(iCode);
					if (sAge == 'Adult'){
						nAdults++;	
						if (iCode == 0) {
							bGroupLeaderIsAdult = true;
						}
					}
					else if (sAge == 'Infant'){
						nInfants++;	
					}
					else {
						nJuniors++	
					}
				}
			}
			
			if ( (currElement.type == 'text') || (currElement.type == 'textarea') )
			{
				//get code for current element				
				iCode = ExtractNoFromString(currElement.name);
				if (blnWithCheckBox)
				{					
					blnIsValidated = IsNotInfant(iCode);
					//blnIsValidated = IsValidated(formObject, iCode);
					//blnIsValidated = true;
				}else{		
					blnIsValidated = true;
				}			
			
				if (validationType=='email' && iCode==0)
				{		
					if (currElement.name.substring(0, elementToCheck.length) == elementToCheck)
					{			
						if (blnIsValidated)
						{
							if ( validateEmailAddress(currElement.value) == false)
							{
								//getObject(currElement.name).style.borderColor = '#cc0000';
								//oErrElement.style.color = '#cc0000';
								iErrorCount++		
								sMessage = "Email address is in the wrong format. Please re-enter your details and re-submit the form.";
							}
						}
					}
				}else if(validationType=='required'){
					if (currElement.name.substring(0, elementToCheck.length) == elementToCheck)
					{
						if ( validChars(currElement.value) == false)
						{
								//getObject(currElement.name).style.borderColor = '#cc0000';
								//oErrElement.style.color = '#cc0000';
								iErrorCount++		

								//sMessage = StripOutBadChars(currElement.name) + " is a required field. Please enter your details and re-submit the form.";
								sMessage = "All items highlighted in red must be correctly completed, please complete all the red boxes and then click Continue to proceed.";
						}			
					}					
				}		
			}
		}	
	}
	//var sMessage = "Please correct the errors";
	
	if (a + j + f != 0) {
		if (nAdults != a) {
			iErrorCount++;
			sMessage = "There are " + a + " adult(s) in your booking but you have marked " + nAdults + " adult(s) on the form.\n\n";
			sMessage = sMessage + "Please ensure that the number of adults on the form matches the number of adults in your booking.";
		}
		else if (nJuniors != j) {
			iErrorCount++;
			sMessage = "There are " + j + " children(s) in your booking but you have marked " + nJuniors + " children(s) on the form.\n\n";
			sMessage = sMessage + "Please ensure that the number of children on the form matches the number of children in your booking.";
		}
		else if (nInfants != f) {
			iErrorCount++;
			sMessage = "There are " + f + " infants(s) in your booking but you have marked " + nInfants + " infants(s) on the form.\n\n";
			sMessage = sMessage + "Please ensure that the number of infants on the form matches the number of infants in your booking.";		
		}
	}
	else {
		if ((nAdults + nJuniors) != f1) {
			iErrorCount++;
			sMessage = "There are " + f1 + " adult flights in your booking but you have marked " + (nAdults + nJuniors) + " adults and juniors on the form.\n\n";
			sMessage = sMessage + "Please ensure that the number of adults and juniors on the form matches the number of adult flights in your booking.";
		}
		else if (nInfants != f2) {
			iErrorCount++;
			sMessage = "There are " + f2 + " infants flights in your booking but you have marked " + nInfants + " infants(s) on the form.\n\n";
			sMessage = sMessage + "Please ensure that the number of infants on the form matches the number of infant flights in your booking.";		
		}
	}
	
	if (bGroupLeaderIsAdult == false) {
		iErrorCount++;
		sMessage = "The group leader must be an adult. Please check the form and re-submit.";		
	}

	if (iErrorCount >0)	{
		//oErrElement.innerHTML = sMessage;
		alert(sMessage);
		return false;
	}else {		
		//alert(sMessage);
		return true;
	}	
	
}

function StripOutBadChars(sText) {
	var	sList = "0123456789_";
	var sChar;
	
	for (var i=0; i < sText.length; i++)
	{
		sChar = sText.charAt(i);
		if (sList.indexOf(sText.charAt(i), 0) != -1	)
		{
			if (sChar == "_")
			{
				sText = sText.replace(sChar, ' ');
			}
			else
			{
				sText = sText.replace(sChar, '');
			}
		}	
	}	
	
	return sText;
	
}

function ValidateAges(a, j, f) {
	var iTotal = a + j + f;
	alert(iTotal);
	
}

function ValidateTerms()
{
	//alert(document.form1.chkTerms.checked);
	if (document.form1.chkTerms.checked == true)
	{
		return true;
	}
	else
	{
		alert ('Please read our terms and conditions and then check the box before proceeding');
		return false;		
	}
}

function IsNotInfant(index) {
	
	var currElement;
	var j;
	var formObject = document.form1;
	var bResult = true;
	var aAges = new Array();

	j = 0;
	for(var i=0; i < formObject.length; i++)
	{
		currElement = formObject.elements[i].name;
		
		if (currElement.indexOf('age', 0) != -1)
		{
			aAges[j] = formObject.elements[i].value;
			j = j + 1;
		}
	}
	//alert(aAges[index]);
	//alert(index);
	//alert(aAges[index]);
	
	if (aAges[index] == 'Infant')
	{
		bResult = false;	
	}
	
	return bResult;
}

function getAge(index) {
	
	var currElement;
	var j;
	var formObject = document.form1;
	var bResult = true;
	var aAges = new Array();

	j = 0;
	for(var i=0; i < formObject.length; i++)
	{
		currElement = formObject.elements[i].name;
		
		if (currElement.indexOf('age', 0) != -1)
		{
			aAges[j] = formObject.elements[i].value;
			j = j + 1;
		}
	}
		
	return aAges[index];
}

function IsValidated(formObject, index)
{
	var currElementChecked
	var iCheckboxCode =  0;
		
	for(var i=0; i < formObject.length; i++)
	{
		currElementChecked = formObject.elements[i];	
		if (currElementChecked.type == 'checkbox')
		{
			iCheckboxCode = ExtractNoFromString(currElementChecked.name);
			if ( currElementChecked.checked )
			{
				if (iCheckboxCode == index)
				{
			///	alert ('currElementChecked.name = '+currElementChecked.name+' currElementChecked.type = '+currElementChecked.type+' iCheckboxCode = '+iCheckboxCode+' currElementChecked.checked = '+currElementChecked.checked+' index = '+index);
					return true;
				}
			}
		}		
	}
}

function validChars(sdata)
{
	var sRegExp = /^[a-z0-9]/i;
	return (regExpIsValid(sRegExp, sdata))
}

function validateEmailAddress(sEmail)
{
	var sRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return (regExpIsValid(sRegExp, sEmail))

}
function regExpIsValid (sPattern, sData)
{
	return (sPattern.test(sData));
}

//===============================================================================
//MW - 07/01/2008
//Following function taken from previous development for refreshing drop down box
//===============================================================================


function getCorrectDate(sDate) {
	
	aDate = sDate.split("/");
	var oDate = new Date(); // new date object
	//oDate.setDate(aDate[0]);
	oDate.setMonth(aDate[1]-1, aDate[0]);
	oDate.setFullYear(aDate[2]);	

return oDate	
	
}



	function refresh_display_dates() {
	var i = 0;
	var j = 0;
	var oSysDepartureDate = getObject("selDepartureDate");	
	var oDispDepartureDate = getObject("selDispDepartureDate");
	
	//alert(oSysDepartureDate.value);
	for (var i=(oDispDepartureDate.options.length-1); i>=0; i--) { 
		//from.options[i] = null;
		oDispDepartureDate.options.remove(i);
	} 

	for (var i=0;i < 7; i++) {
			var sDate = oSysDepartureDate.value;
			var p_Date = getCorrectDate(sDate);
			var newElement = document.createElement("OPTION");
			//var curDate=new Date(sDate);
			//alert(curDate);
			newElement.text = formatDate(dateAdd("d", i, p_Date), "d/M/y");
			newElement.value = formatDate(dateAdd("d", i, p_Date), "d/M/y");
			oDispDepartureDate.add(newElement);
	}

}


function refresh_transfer_options(nIndex, nTransfers, nTransfers1) {
    //alert("transfer value=" + nIndex + " nTransfers=" + nTransfers + " ntransfer1=" + nTransfers1);
	var i = 0;
	var j = 0;
	var oTravel = getObject("travel" + nIndex); //document.getElementById("travel" + nIndex);  //
	var oTransfer = getObject("transfer" + nIndex); //document.getElementById("transfer" + nIndex); //
	var iValue = oTravel.value;
	
	//alert(iValue);
	
	for (var i=(oTransfer.options.length-1); i>=0; i--) {
	    oTransfer.remove(i); //.options
	}
	if (iValue == "0") {
	    var newElement = document.createElement("OPTION");
		newElement.text = "Included Coach Transfer";
		newElement.value = "0";
		oTransfer.options.add(newElement);
	}
	else
	{
	    if (iValue == "1") {
			var newElement = document.createElement("OPTION");
			newElement.text = "Private Transfer: motorway";
			newElement.value = "1";
			oTransfer.options.add(newElement);

			var newElement1 = document.createElement("OPTION");
			newElement1.text = "Private Transfer: non-motorway";
			newElement1.value = "2";
			oTransfer.options.add(newElement1);
		}
//		if (nTransfers1 > 0) {		
//			var newElement = document.createElement("OPTION");		
//			newElement.text = "Private Transfer: non-motorway";
//			newElement.value = 2;
//			oTransfer.options.add(newElement);
//		}
		
		var newElement = document.createElement("OPTION");		
		newElement.text = "No Transfers";
		newElement.value = 3;
		oTransfer.options.add(newElement);
	}

	
}

function IsNumeric(sName, sType, nMin, nReq)
{
	var ValidChars;
	if (sType == "") // default check for positive number
	{
		ValidChars = "0123456789.";
	}
	if (sType == "r") // check for real number i.e whole, positive number including zero
	{
		ValidChars = "0123456789";
	}
	
	var IsNumber = true;
	var Char;
	var sMessage;
	var sText = getObject(sName).value;
	
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
			{
			IsNumber = false;
			}
	}
	
	if (nReq == 1 && sText.length == 0)
	{
		IsNumber = false;
		sMessage = "This is a required field.";
	}
	
	if (IsNumber == true)
	{
		if (sText < nMin)
		{
			IsNumber = false;
			sMessage = "Incorrect value entered!\n\nThe value entered needs to be a number greater than or equal to " + nMin;
		}
	}
	else
	{
		if (sType == "r")
		{
			sMessage = "Incorrect value entered!\n\nThe value needs to be a positive whole number.";
		}
		if (sType == "")
		{
			sMessage = "Incorrect value entered!\n\nThe value needs to be a number.";
		}
	}
		  
	if (IsNumber == false)
	{
		getObject(sName).value = '';
		getObject(sName).focus();
		alert(sMessage);
	}
	return IsNumber;
}

function Validate_Manual_Form() {
	
	var sResult = IsNumeric('txtAdults', 'r', 1, 1);
	if (sResult == true)
	{
		sResult = IsNumeric('txtAdultsRate', '', 0, 1);
	}
	return sResult;

}

function Validate_Manual_Form_For_Flights() {
	
	var sResult = IsNumeric('txtFlights', 'r', 1, 1);
	if (sResult == true)
	{
		sResult = IsNumeric('txtFlightsRate', '', 30, 1);
		if (sResult == true) 
		{
			var nInfants = getObject('txtFlights1').value;
			var nAdults = getObject('txtFlights').value;
			if (nInfants > nAdults) {
				alert("The number of infant flights must be less than or equal to the number of adult flights.");
				sResult = false;
			}
		}
	}
	return sResult;

}

function ValidateTravel(nIndex, nAdultFlights, nInfantFlights, nTransfers, nAdults, nChildren, nInfants) {
	var currElement;
	var j;
	var formObject = document.form1;
	var bResult = true;
	var aAges = new Array();
	var iNoOfFlights = 0;
	var iNoOfTransfers = 0;
	var sMessage;
	var nFlights = nAdultFlights + nInfantFlights;
	//alert(nIndex + " " + nAdultFlights + " " + nInfantFlights + " " + nTransfers + " " + nAdults + " " + nChildren + " " + nInfants);
	
	//sMessage = "If you select Private Transfer with a Ski Power flight, then this will over ride the included coach transfer and charges will apply as detailed above.";
	
	//aTravel = array("Ski Power Flight inc. coach transfer", "Independent Flight", "Indepedent Train", "Ski Drive", "Ski Power Flight Only")
	//aTransfers = array("Not Required", "Private Transfer: motorway", "Private Transfer: non-motorway", "No Transfers")

	j = 0;
	for(var i=0; i < formObject.length; i++)
	{
		currElement = formObject.elements[i].name;
		
		if (currElement.indexOf('travel', 0) != -1)
		{
			//aTravel[j] = formObject.elements[i].value;
			if (formObject.elements[i].value == 0 || formObject.elements[i].value == 4) {
				iNoOfFlights++;
			}
		}
		if (currElement.indexOf('transfer', 0) != -1)
		{
			//aTravel[j] = formObject.elements[i].value;
			if (formObject.elements[i].value == 1 || formObject.elements[i].value == 2) {
				iNoOfTransfers++;
			}
		}
		
	}
	if (iNoOfFlights != nFlights) {
		bResult = false;
		sMessage = "There are " + nFlights + " flights included in the booking but you have specified " + iNoOfFlights + " on the form.\n\n";
		sMessage = sMessage + "Please check the form and ensure that the number of flights specified match the number of flights booked.";
	}
	if (iNoOfTransfers != nTransfers) {
		bResult = false;
		sMessage = "There are " + nTransfers + " transfers included in the booking but you have specified " + iNoOfTransfers + " on the form.\n\n";
		sMessage = sMessage + "Please check the form and ensure that the number of transfers specified match the number of transfers booked.";
	}
	var sAge;
	var nTravel;
	var iInfantsWithFlights = 0;
	
	for(var i=0; i < nIndex + 1; i++) {
		sAge = getObject('age' + i).value;
		nTravel = getObject('travel' + i).value;
		if (sAge == 'Infant' && nTravel == 0) {
			iInfantsWithFlights++
		}
		//alert(sAge + ":" + nTravel);

    }

	//alert(iInfantsWithFlights + ":" + nInfantFlights);
	
	var s1;
	var s2;
	
	if (iInfantsWithFlights < nInfantFlights) {
		bResult = false;
		if (nInfantFlights == 1) {
			s1 = "is"
			s2 = "flight"
		}
		else
		{
			s1 = "are"
			s2 = "flights"
		}
		sMessage = "There " + s1 + " " + nInfantFlights + " infant " + s2 + " included in the booking but you have specified " + iInfantsWithFlights + " on the form.\n\n";
		sMessage = sMessage + "Please check the form and ensure that the number of infant flights specified match the number of infant flights booked.";
	}

	
	//alert(nFlights + ":" + iNoOfFlights);
	//alert(nTransfers + ":" + iNoOfTransfers);
	
	var iInfantsSelected = 0;
	for (var i = 0; i < nIndex + 1; i++) {
	    sAge = getObject('age' + i).value;
	    if (sAge == 'Infant') {
	        iInfantsSelected++;
	    }
	    //alert(sAge + ":" + nTravel);

	}
	
	if (bResult == false) {
		alert(sMessage);	
	}
	
	return bResult;

}

function CheckFields() {
    var Arrival = document.getElementById("arrival_flight_no").value;
    var Departure = document.getElementById("departure_flight_no").value;
    if (Arrival == "" || Departure == "") {
        alert("Flight numbers are required.");
        return false;
    }
    return true;
}

function ValidateNames() {
	
	var currElement;
	var j;
	var formObject = document.form1;
	var bResult = true;
	var sMessage = "";
	
	j = 0;
	for(var i=0; i < formObject.length; i++)
	{
		currElement = formObject.elements[i].name;
		
		if (currElement.indexOf('surname', 0) != -1)
		{
			if (formObject.elements[i].value == "") {
				bResult = false;
				//sMessage = "surname is a required field.";
				sMessage = sMessage + "All items highlighted in red must be correctly completed, please complete all the red boxes and then click Continue to proceed.";
			}			
		}
		if (currElement.indexOf('first_name', 0) != -1)
		{
			if (formObject.elements[i].value == "") {
				bResult = false;
				//sMessage = "first name is a required field.";
				sMessage = sMessage + "All items highlighted in red must be correctly completed, please complete all the red boxes and then click Continue to proceed.";
			}			
		}
		
	}
	
	/*
	var sAge;
	var nTravel;
	var iInfantsWithFlights = 0;
	
	for(var i=0; i < nIndex + 1; i++) {
		sAge = getObject('age' + i).value;
		nTravel = getObject('travel' + i).value;
		if (sAge == 'Infant' && nTravel == 0) {
			iInfantsWithFlights++
		}
		//alert(sAge + ":" + nTravel);
		
	}
	*/
	
	if (bResult == false) {
		alert(sMessage);	
	}
	
	return bResult;

}

function ValidateBedrooms (iTotal) {
	
	var currElement;
	var formObject = document.form1;
	var bResult = true;
	var aStandardOccupancy = new Array();
	var aOverOccupancy = new Array();
	var iStandardOccupancy = 0;
	var iOverOccupancy = 0;
	var sMessage;	
	var iMaxOccupancy = 0;
	var j = 0;
	var k = 0;
	
	for(var i=0; i < formObject.length; i++)
	{
		currElement = formObject.elements[i].name;
		//alert(currElement);
		if (currElement.indexOf('txtSleeps', 0) != -1) {
		    //alert(currElement + " " + formObject.elements[i].value+ " j="+j);	
			aStandardOccupancy[j] = Number(formObject.elements[i].value);
			j = j + 1;
		}
		if (currElement.indexOf('txtOverOccupancy', 0) != -1)
		{
			aOverOccupancy[k] = Number(formObject.elements[i].value);
			k = k + 1;
		}
		
	}
	
	for(i=0; i < formObject.length; i++)
	{
		currElement = formObject.elements[i];	
		if (currElement.type == 'checkbox')
		{
			iCheckboxCode = Number(ExtractNoFromString(currElement.name));
			if ( currElement.checked )
			{
				//alert(iCheckboxCode);
			    //alert(iMaxOccupancy + " "+iCheckboxCode+"=code " + aStandardOccupancy[iCheckboxCode] + " " + aOverOccupancy[iCheckboxCode]);
				iMaxOccupancy = Number(iMaxOccupancy) + Number(aStandardOccupancy[iCheckboxCode]) + Number(aOverOccupancy[iCheckboxCode]);
				
				//if (iCheckboxCode == index)
				//{
			///	alert ('currElementChecked.name = '+currElementChecked.name+' currElementChecked.type = '+currElementChecked.type+' iCheckboxCode = '+iCheckboxCode+' currElementChecked.checked = '+currElementChecked.checked+' index = '+index);
				//	return true;
				//}
			}
		}		
	}
	//alert("max=" + iMaxOccupancy);
	if (iTotal > iMaxOccupancy) {
		bResult = false;
		sMessage = "There are " + iTotal + " guests in your booking but you have selected enough bedrooms to sleep " + iMaxOccupancy + ".\n\nPlease check your selection and re-submit the form.";
	}
	
	//alert ("i = " + i);
	//alert ("iTotalGuests = " + iTotal);
	//alert ("iStandardOccupancy = " + iStandardOccupancy);
	//alert ("iOverOccupancy = " + iOverOccupancy);
	//alert ("iMaxOccupancy = " + iMaxOccupancy);
	if (bResult == false) {
		alert (sMessage);
	}

return bResult;
	
	
	
	
}

function ValidateQuote () {
	
	var currElement;
	var formObject = document.form1;
	var bResult = true;
	var aStandardOccupancy = new Array();
	var aOverOccupancy = new Array();
	var iStandardOccupancy = 0;
	var iOverOccupancy = 0;
	var sMessage;	
	var iMaxOccupancy = 0;
	var j = 0;
	var k = 0;
	
	currElement = formObject.elements["txtAdults"].name;	
	
	alert(currElement);
	
	for(var i=0; i < formObject.length; i++)
	{
		currElement = formObject.elements[i].name;
		
		if (currElement.indexOf('txtSleeps', 0) != -1)
		{			
			aStandardOccupancy[j] = Number(formObject.elements[i].value);
			j = j + 1;
		}
		if (currElement.indexOf('txtOverOccupancy', 0) != -1)
		{
			aOverOccupancy[k] = Number(formObject.elements[i].value);
			k = k + 1;
		}
		
	}
	
	for(i=0; i < formObject.length; i++)
	{
		currElement = formObject.elements[i];	
		if (currElement.type == 'checkbox')
		{
			iCheckboxCode = Number(ExtractNoFromString(currElement.name))-1;
			if ( currElement.checked )
			{
				//alert(iCheckboxCode);
				//alert(aStandardOccupancy[iCheckboxCode]);
				iMaxOccupancy = Number(iMaxOccupancy) + Number(aStandardOccupancy[iCheckboxCode]) + Number(aOverOccupancy[iCheckboxCode]);
				
				//if (iCheckboxCode == index)
				//{
			///	alert ('currElementChecked.name = '+currElementChecked.name+' currElementChecked.type = '+currElementChecked.type+' iCheckboxCode = '+iCheckboxCode+' currElementChecked.checked = '+currElementChecked.checked+' index = '+index);
				//	return true;
				//}
			}
		}		
	}
	
	if (iTotal > iMaxOccupancy) {
		bResult = false;
		sMessage = "There are " + iTotal + " guests in your booking but you have selected enough bedrooms to sleep " + iMaxOccupancy + ".\n\nPlease check your selection and re-submit the form.";
	}
	
	//alert ("i = " + i);
	//alert ("iTotalGuests = " + iTotal);
	//alert ("iStandardOccupancy = " + iStandardOccupancy);
	//alert ("iOverOccupancy = " + iOverOccupancy);
	//alert ("iMaxOccupancy = " + iMaxOccupancy);
	if (bResult == false) {
		alert (sMessage);
	}

return bResult;




}


function ValidateInfants() {
    var all = 0;
    var allF = 0;
    var selected = 0;
    var selectedAdults = 0;
    var iInfants = 0;
    var iInfantsF = 0;
    var iAdults = 0;
    var sPhone;
    var formObject = document.form1;
    for (var i = 0; i < formObject.length; i++) {
        var currElement = formObject.elements[i].name;
        //alert("name=" + currElement);
        if (currElement == "a" || currElement == "j" || currElement == "f") {
            all = all + parseInt(formObject.elements[i].value);
        }
        if (currElement == "f1" || currElement == "f2") {
            allF = allF + parseInt(formObject.elements[i].value);
        }
        if (currElement == "a") {
            iAdults = parseInt(formObject.elements[i].value);
        }
        if (currElement == "f") {
            iInfants = parseInt(formObject.elements[i].value);
        }
        if (currElement == "f2") {
            iInfantsF = parseInt(formObject.elements[i].value);
        }
        if (currElement.indexOf('age', 0) != -1) {
            if (formObject.elements[i].value == "Infant") {
                selected++;
            }
            if (formObject.elements[i].value == "Adult") {
                selectedAdults++;
            }
        }
        currElement = formObject.elements[i];
        //alert("11" + currElement.style.borderLeftStyle + "22"); //+ currElement.style.border + "33" + currElement.value + "11"
        if (currElement.type == "text" && currElement.value == "" && currElement.style.borderLeftStyle == "solid") {//(currElement.style.border == "1px solid rgb(204, 0, 0)" || currElement.style.border == "#cc0000 1px solid") &&
            alert("All items highlighted in red must be correctly completed, please complete all the red boxes and then click Continue to proceed.");
            return false;
        }
    }
    //alert(selected + "infants=" + iInfants + "all=" + all+"finf="+iInfantsF+"allf="+allF);

    if ((selected == iInfants && selectedAdults == iAdults) || (selected == iInfantsF && all == 0)) {

    } else {
        alert("Infants declared does not match the amount of selected infants. Please make sure to select the amount of infants as declared.");
        return false;
    }


    return true;
}

function CompareTime(time1, time2) {
    var splittime1 = time1.split(":");
    var splittime2 = time2.split(":");
    var hour1 = splittime1[0];
    var minute1 = splittime1[1];
    var hour2 = splittime2[0];
    var minute2 = splittime2[1];

    if (hour1 > hour2) {
        return 1;
    }
    else {
        if (hour1 < hour2) {
            return 2;
        }
        else {
            if (hour1 == hour2) {
                if (minute1 > minute2) {
                    return 1;
                }
                else {
                    if (minute1 < minute2)
                        return 2;
                    else return 0;
                }
            }
        }
    }
}

function AddHours(time, amount) {
    var splittime1 = time.split(":");
    var hour1 = (splittime1[0].substring(0, 1) == "0") ? parseInt(splittime1[0].substring(1)) : parseInt(splittime1[0]);
    //alert(time+"  "+splittime1[0]+"  "+splittime1[0].substring(0, 1) + "  " + splittime1[0].substring(1));
    var minute1 = splittime1[1];
    var NewHour = parseInt(hour1) + parseInt(amount);
    if (NewHour < 10) {
        return "0" + NewHour + ":" + minute1;
    }
    else {
        return NewHour + ":" + minute1;
    }
}

function DecMinutes(time, amount) {
    var splittime1 = time.split(":");
    var hour1 = (splittime1[0].substring(0, 1) == "0") ? parseInt(splittime1[0].substring(1)) : parseInt(splittime1[0]);
    //alert(time+"  "+splittime1[0]+"  "+splittime1[0].substring(0, 1) + "  " + splittime1[0].substring(1));
    var minute1 = (splittime1[1].substring(0, 1) == "0") ? parseInt(splittime1[1].substring(1)) : parseInt(splittime1[1]);
    var NewHour = hour1;
    var NewMinute;
    if (parseInt(minute1) + parseInt(amount) > 59) {
        NewHour = hour1 + 1;
        NewMinute = (parseInt(minute1) + parseInt(amount)) - 60;
    } else {
        NewMinute = parseInt(minute1) + parseInt(amount);
    }

    if (NewHour < 10) {
        NewHour = "0" + NewHour;
    }
    if (NewMinute < 10) {
        NewMinute = "0" + NewMinute;
    }
    return NewHour + ":" + NewMinute;
}