// JavaScript Document
// Copyright 2006-2007 javascript-array.com

var timeout	= 500;
var closetimer	= 0;
var ddmenuitem	= 0;

// open hidden layer
function mopen(id)
{	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	opentimer=window.setTimeout('ddmenuitem.style.visibility = \'visible\'',500);

}
// close showed layer
function mclose()
{
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
	if(opentimer)
	{
		window.clearTimeout(opentimer);
		opentimer = null;
	}
}


// cancel close timer
function mcancelclosetime()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

// close layer when click-out
document.onclick = mclose;

//don't know, but it's important
function MM_findObj(n, d) { //v4.01
  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);
  if(!x && d.getElementById) x=d.getElementById(n); 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];}
}

//show/hide form elements based on selection formhide(id of div to show/hide, value to display on, current value)
//eg used so if they select 'ready to book' it will display the fields for entering when to contact them
function formhide(hidethis,hidevalue,selectedvalue) {
if (selectedvalue==hidevalue) {
document.getElementById(hidethis).style.display='block';
} else {
document.getElementById(hidethis).style.display='none';
}}

//form validation
//I added the bits where it highlights the sections that have errors, just make sure everything's named properly
function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    label=val.name
	if (label=='terms') {
		if (!(val.checked)) {
			errors+='- Please accept the terms and conditions\n';
			if (document.getElementById('termstr')!=null){document.getElementById('termstr').style.background='#fffb9a'}
		}
		else
		{
			if (document.getElementById('termstr')!=null){document.getElementById('termstr').style.background='#ffffff'}
		}
	}
	if (label=='email') {
		if (val.value=='') {
			if (document.getElementById('emailerror')!=null){document.getElementById('emailerror').style.display='block'}
			if (document.getElementById('emailerror2')!=null){document.getElementById('emailerror2').style.display='block'}
			if (document.getElementById('emailtr')!=null){document.getElementById('emailtr').style.background='#fffb9a'}
			if (document.getElementById('emailtr2')!=null){document.getElementById('emailtr2').style.background='#fffb9a'}
			if (document.getElementById('email')!=null){document.getElementById('email').focus()}
		}
		else
		{
			if (document.getElementById('emailerror')!=null){document.getElementById('emailerror').style.display='none'}
			if (document.getElementById('emailerror2')!=null){document.getElementById('emailerror2').style.display='none'}
			if (document.getElementById('emailtr')!=null){document.getElementById('emailtr').style.background='#ffffff'}
			if (document.getElementById('emailtr2')!=null){document.getElementById('emailtr2').style.background='#ffffff'}
		}
	}
	if (label=='telephone') {
		if (val.value=='') {
			if (document.getElementById('phoneerror')!=null){document.getElementById('phoneerror').style.display='block'}
			if (document.getElementById('phoneerror2')!=null){document.getElementById('phoneerror2').style.display='block'}
			if (document.getElementById('phonetr')!=null){document.getElementById('phonetr').style.background='#fffb9a'}
			if (document.getElementById('phonetr2')!=null){document.getElementById('phonetr2').style.background='#fffb9a'}
			if (document.getElementById('telephone')!=null){document.getElementById('telephone').focus()}
		}
		else
		{
			if (document.getElementById('phoneerror')!=null){document.getElementById('phoneerror').style.display='none'}
			if (document.getElementById('phoneerror2')!=null){document.getElementById('phoneerror2').style.display='none'}
			if (document.getElementById('phonetr')!=null){document.getElementById('phonetr').style.background='#ffffff'}
			if (document.getElementById('phonetr2')!=null){document.getElementById('phonetr2').style.background='#ffffff'}
		}
	}
	if (label=='location') {
		if (val.value=='') {
			if (document.getElementById('locationtr')!=null){document.getElementById('locationtr').style.background='#fffb9a'}
		}
		else
		{
			if (document.getElementById('locationtr')!=null){document.getElementById('locationtr').style.background='#ffffff'}
		}
	}
	if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if ((test.charAt(0) == 'R')&&(label!='terms')) {if (nm=='insuranceexpiry'){nm='next renewal date'};errors += '- '+nm+' is required.\n';} }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

