/*
JavaScript Functions
Created by Brian Jenkins - 20 April 2007
do not change anything or it will break!
*/

function notYet()

/* stop the user from accessing somewhere by displaying a message */

{
	alert("Sorry, this function is not available yet.")
}

function ignoreIt(obj)
{
	obj.blur();
}
function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.
 
	RETVAL:
		The formatted number!
 **********************************************************************/
{ 
	if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

	return tmpNumStr;		// Return our formatted string!
}

function checkEmailValid(emailStr,msg)
{
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var errMsg="";   
	var matchArray=emailStr.match(emailPat)

	if (matchArray==null) 
	{
	   errMsg=errMsg+"The "+msg+" eMail Address seems incorrect";
	   return errMsg;
	}
	else
	{
	  var user=matchArray[1]
	  var domain=matchArray[2]
	  if (user.match(userPat)==null) 
	  {
		errMsg=errMsg+"The "+msg+" eMail Address seems incorrect";
		return errMsg;       
	  }
	  var IPArray=domain.match(ipDomainPat)
	  if (IPArray!=null) 
	  {
		  for (var i=1;i<=4;i++) 
			  {
			if (IPArray[i]>255) 
				{
				errMsg=errMsg+"The "+msg+" eMail Address seems incorrect";
				return errMsg;
				}//IF
			  }//for
	   }//IP Array
	   var domainArray=domain.match(domainPat)
	   if (domainArray==null) 
	   {
		 errMsg=errMsg+"The "+msg+" eMail Address seems incorrect";
		 return errMsg;
	   }
	   var atomPat=new RegExp(atom,"g")
	   var domArr=domain.match(atomPat)
	   var len=domArr.length
	   if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
	   {
		 errMsg=errMsg+"The "+msg+" eMail Address seems incorrect";
		 return errMsg;	
	   } 
	   if (len<2) 
	   {
		 errMsg=errMsg+"The "+msg+" eMail Address seems incorrect";
		 return errMsg;	 
	   } 
	 }//End  Match
	return "0";
}

function checkDataEntry(obj)
{
	var mycode
	var count=0;
	if(obj.length!=0)
	{
		for(i=0; i<obj.length; i++)
		{
			mycode = obj.charCodeAt(i);
			if((mycode>47 && mycode<58) || (mycode>64 && mycode<91) || (mycode>96 && mycode<123) || (mycode>3584 && mycode<3631) || (mycode>3647 && mycode<3653))
			{
				count=count+1;
			}
		}
	}
	return count;
}

function checkBookingForm()
{
	if(checkDataEntry(document.frmData.strContactName.value)==0)
	{
		alert("Please enter the name of the person who we can contact regarding this booking");
		return false;
	}
	var e=document.frmData.strEmailAddress.value;
	if(checkDataEntry(e)==0)
	{
		alert("Please enter a valid email address");
		return false;
	}
	else
	{
		if (checkEmailValid(e)!="0") 
		{
			alert(checkEmailValid(e,''));
			return false;	
		}
	}
	if(document.frmData.strDateBox.value==" Click icon to select =>")
	{
		alert("Please select your requested booking date");
		return false;
	}
	else
	{
		var millisecond=1;
		var second=millisecond*1000;
		var minute=second*60;
		var hour=minute*60;
		var day=hour*24;
		var year=day*365;
		var dateObj;
		
		dateObj=Date.parse(Date())
		var newDate;
		var dVal=dateObj.valueOf();
		var selDate=document.frmData.strDateBox.value;
		
		if(document.frmData.optPayment[0].checked==true)
		{
/*			newDate=new Date(dVal+day*1);
		
			if(Date.parse(selDate)<Date.parse(newDate))
			{
				alert("A minimum of 2 days is required to make a booking");
				return false;
			}*/
		}
		else
		{
			newDate=new Date(dVal+day*6);
		
			if(Date.parse(selDate)<Date.parse(newDate))
			{
				alert("A minimum of 7 days is required to make a booking");
				return false;
			}
		}
	}
	var numGuy=document.frmData.intQty.value/1;
	if(((document.frmData.optDays[0].checked==true) || (document.frmData.optDays[1].checked==true)) && numGuy>8)
	{
		alert("For Hellfire Pass overnight tours for groups with over 8 persons please contact us directly for a quote");
		return false;
	}
	if((checkDataEntry(document.frmData.strHotelName.value)==0) && (checkDataEntry(document.frmData.strAddress.value)==0))
	{
		alert("Please enter the pickup details");
		return false;
	}
	if(document.frmData.optPayment[0].checked==false && document.frmData.optPayment[1].checked==false)
	{
		alert("Please select a payment method");
		return false;
	}
	return true;
}

function setDayNumber(obj)
{
	if(document.frmData.optDays[0].checked==false && document.frmData.optDays[1].checked==false)
	{
		document.frmData.optDays[0].checked=true;
	}
}

function resetTourBoxes(obj)
{
	document.frmData.optDays[0].disabled=false;
	document.frmData.optDays[1].disabled=false;

	document.frmData.chkFloating.disabled=true;
	document.frmData.chkHellFire.disabled=true;
}

function resetDayBoxes(obj)
{
	document.frmData.chkFloating.disabled=false;
	document.frmData.chkHellFire.disabled=false;

	document.frmData.optDays[0].disabled=true;
	document.frmData.optDays[1].disabled=true;
}

function resetOtherBoxes(obj)
{
	document.frmData.chkFloating.disabled=true;
	document.frmData.chkHellFire.disabled=true;

	document.frmData.optDays[0].disabled=true;
	document.frmData.optDays[1].disabled=true;
}
