function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


/* this function opens an htm file in a separate window. Parameters are the URL filename,
   window width and height in pixels, and window position from left and top of screen */

var newWindow = null;

function openWin(URL, wWidth, wHeight, wLeft, wTop) 
{ 
if(newWindow&&!newWindow.closed)
{
  closeWin();
}

//  alert("Wait a tick!");

  newWindow=window.open(URL,"XXX","toolbar=no,left="+wLeft+",top="+wTop+",width="+wWidth+",height="+wHeight+",status=no,resize=no,menubar=no");
}

/* this function closes an open window. It is necessary to resolve a problem with IE4 */

function closeWin() 
{ 
  newWindow.close();
}

function checkEmail(str)

// Validate e-mail address - called by ValidateForm function

{
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	   return false
	}
	if (str.indexOf(at,(lat+1))!=-1){
	   return false
	}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	   return false
	}
	if (str.indexOf(dot,(lat+2))==-1){
	   return false
	}
	if (str.indexOf(" ")!=-1){
	   return false
	}
	return true					
}

function checkInvChars(str)

// Check for any invalid characters in field - called by ValidateForm function

{
	var checkInv = "<>";
	var i;
	for (i = 0; i < str.length; i++) {
		if (checkInv.indexOf(str.charAt(i))>=0) {
			return false		
		}
	}
	return true
}

function checkTelephone(checkStr)

// Check for a valid telephone number - called by ValidateForm function

{
	var checkOK="0123456789- ";
	var allValid=true;
	var spaces=0;
	var hyphens=0;
	var digits=0;
	for (i=0; i<checkStr.length; i++) {
		ch=checkStr.charAt(i);
		if (checkOK.indexOf(ch)==-1) {
			allValid=false;
			break;
		}
	if (ch=="-") {
		hyphens++ }
	if (ch==" ") {
		spaces++; }
	if (checkOK.indexOf(ch)<=9) {
		digits++; }
	}
	if (allValid==false || hyphens>2 || spaces>3 || digits<8) {
		return false }
	else {
		return true }
}

function ValidateForm(checkForm)

// Validate form enquiry data. 

{
	if (checkForm.date1.value.length > 0) {
	
		if (isDate(checkForm.date1.value,"d/M/yyyy")==false) {	
			alert("Please enter a valid date in the format dd/mm/yyyy") 
			checkForm.date1.focus()
			return false
		}
		if (compareDates(checkForm.date1.value,"d/M/yyyy",formatDate(new Date(),"d/M/yyyy"),"d/M/yyyy") != 1 ) {
			alert("Arrival date must be after today")
			checkForm.date1.focus()
			return false
		}		
	}	

	if (checkForm.Nights.value.length > 0 && checkInvChars(checkForm.Nights.value)==false) {
		alert("Number of nights must be numeric")
		checkForm.Nights.focus()
		return false
	}	
	if (checkForm.Comments.value.length > 0 && checkInvChars(checkForm.Comments.value)==false) {
		alert("Comments contains invalid characters")
		checkForm.Comments.focus()
		return false
	}
	if (checkForm.Name.value.length < 1 || checkInvChars(checkForm.Name.value)==false) {
		alert("Name not entered or contains invalid characters")	
		checkForm.Name.focus()
		return false
	}	
	if (checkForm.AddressLine1.value.length > 0 && checkInvChars(checkForm.AddressLine1.value)==false) {
		alert("Address contains invalid characters")
		checkForm.AddressLine1.focus()
		return false
	}	
	if (checkForm.AddressLine2.value.length > 0 && checkInvChars(checkForm.AddressLine2.value)==false) {
		alert("Address contains invalid characters")
		checkForm.AddressLine2.focus()
		return false
	}	
	if (checkForm.AddressLine3.value.length > 0 && checkInvChars(checkForm.AddressLine2.value)==false) {
		alert("Address contains invalid characters")
		checkForm.AddressLine3.focus()
		return false
	}
	if (checkForm.Postcode.value.length > 0 && checkInvChars(checkForm.Postcode.value)==false) {
		alert("Postcode contains invalid characters")
		checkForm.Postcode.focus()
		return false
	}
	if (checkForm.County.value.length > 0 && checkInvChars(checkForm.County.value)==false) {
		alert("County contains invalid characters")
		checkForm.County.focus()
		return false
	}
	if (checkForm.Country.value.length > 0 && checkInvChars(checkForm.Country.value)==false) {
		alert("Country contains invalid characters")
		checkForm.Country.focus()
		return false
	}
	if (checkForm.Telephone.value.length > 0 && checkTelephone(checkForm.Telephone.value)==false) {
		alert("Telephone number invalid")	
		checkForm.Telephone.focus()
		return false
	}	
	if (checkForm.FAX.value.length > 0 && checkTelephone(checkForm.FAX.value)==false) {
		alert("FAX number invalid")	
		checkForm.FAX.focus()
		return false
	}
	if (checkForm.email.value.length > 0 && checkEmail(checkForm.email.value)==false) {
		alert("E-mail address invalid")
		checkForm.email.focus()
		return false
	}
	if (checkForm.email.value.length < 1 && checkForm.Telephone.value.length < 1) {	
		alert("Please enter an e-mail address or a telephone number")
		checkForm.email.focus()
		return false	
	}
	if (checkForm.email.value.length < 1 && checkForm.Preferred[0].checked==true) {
		alert("Please enter your e-mail address as your preferred method of contact is e-mail")
		checkForm.email.focus()
		return false	
	}
	if (checkForm.Telephone.value.length < 1 && checkForm.Preferred[1].checked==true) {
		alert("Please enter your telephone number as your preferred method of contact is telephone")
		checkForm.Telephone.focus()
		return false	
	}
	if ((checkForm.AddressLine1.value.length < 1 || checkForm.Postcode.value.length < 1) && checkForm.Preferred[2].checked==true) {
		alert("Please enter your address as your preferred method of contact is mail (minimum first line and postcode)")
		if (checkForm.AddressLine1.value.length < 1) {
			checkForm.AddressLine1.focus()
		}
		else {
			checkForm.Postcode.focus()
		}
		return false	
	}
	if (checkForm.Source.selectedIndex == 0) {
		alert("Please tell us how you found us")	
		checkForm.Source.focus()
		return false	
	}	
//	if (checkForm.Source.selectedIndex == 6 && checkForm.SourceSpecify.value.length < 1) {
//		alert("You have specified that you found us another way - please tell us how")	
//		checkForm.SourceSpecify.focus()
//		return false	
//	}	
//	if (checkForm.Source.selectedIndex == 1 && checkForm.SourceSpecify.value.length < 1) {
//		alert("Please tell us which search engine")	
//		checkForm.SourceSpecify.focus()
//		return false	
//	}
//	if (checkForm.Source.selectedIndex == 2 && checkForm.SourceSpecify.value.length < 1) {
//		alert("Please tell us which web-site")	
//		checkForm.SourceSpecify.focus()
//		return false	
//	}
//	if (checkForm.Source.selectedIndex == 3 && checkForm.SourceSpecify.value.length < 1) {
//		alert("Please tell us who recommended us")	
//		checkForm.SourceSpecify.focus()
//		return false	
//	}
//	if (checkForm.Source.selectedIndex == 4 && checkForm.SourceSpecify.value.length < 1) {
//		alert("Please tell us which magazine")	
//		checkForm.SourceSpecify.focus()
//		return false	
//	}
	if (checkForm.SourceSpecify.value.length > 0 && checkInvChars(checkForm.SourceSpecify.value)==false) {
		alert("How you found us contains invalid characters")
		checkForm.SourceSpecify.focus()
		return false
	}

	if (checkForm.date1.value.length > 0) {
	
		DayofWeek = formatDate(new Date(getDateFromFormat(checkForm.date1.value,"d/M/yyyy")),"EE")

		if (DayofWeek != "Saturday" && !confirm("Did you mean to enter a " + DayofWeek + "? Normal start day is a Saturday.")) {
			checkForm.date1.focus()
			return false
		}
	}	
	
	return true
}
