function readCookie(name)
{
  var cookieValue = "";
  var offset = 0;
  var search = name + "=";
  if(document.cookie.length > 0)
  { 
    offset = document.cookie.indexOf(search);
    if (offset != -1)
    { 
      offset += search.length;
      end = document.cookie.indexOf(";", offset);
      if (end == -1) end = document.cookie.length;
      cookieValue = unescape(document.cookie.substring(offset, end))
    }
  }
  return cookieValue;
}
//  === Highlight row when mouseOver ===================================  //
function rowOverEffect(object) 
{
  if (object.className == 'normal') object.className = 'highlight';
}
//  === Return to normal when mouseOut =================================  //
function rowOutEffect(object) 
{
  if (object.className == 'highlight') object.className = 'normal';
}
//// Jump to a dBase record  ////////////
function jump(recno) 
{
	document.cookie = 'selected' + "=" + escape(recno);
	window.location='showDetails.php';
}
/////////////////////////////////////////////////////////////////////

//// Jump to a dBase record  ////////////
function jumpE(recno) 
{
	document.cookie = 'selected' + "=" + escape(recno);
	window.location='editDetails.php';
}
/////////////////////////////////////////////////////////////////////
//// Jump to a dBase record  ////////////

function jumpH(recno) 
{
	document.cookie = 'selected' + "=" + escape(recno);
	window.location='showDetails2.php';
}
/////////////////////////////////////////////////////////////////////
function jumpL(recno) 
{
	document.cookie = 'selected' + "=" + escape(recno);
	window.location='editDetailsL.php';
}
/////////////////////////////////////////////////////////////////////
function jumpP(recno) 
{
	document.cookie = 'selected' + "=" + escape(recno);
	/*document.write(recno);*/
	window.location='invoiceReport.php';
}
/////////////////////////////////////////////////////////////////////

// Example: preloadImages('file.gif', 'http://www.x.com/y.gif');

function preloadImages()
{
  if(document.images)
  {
    if(!document.imageArray) document.imageArray = new Array();
    var i,j = document.imageArray.length, args = preloadImages.arguments;
    
    for(i=0; i<args.length; i++)
    {
      if (args[i].indexOf("#")!=0)
      {
        document.imageArray[j] = new Image;
        document.imageArray[j++].src = args[i];
      }
    }
  }
}
/////////////////////////////////////////////////////////////
// * Dependencies * 
// this function requires the following snippets:
// JavaScript/readable_MM_functions/findObj
//
// Accepts a variable number of arguments, in triplets as follows:
// arg 1: simple name of a layer object, such as "Layer1"
// arg 2: ignored (for backward compatibility)
// arg 3: 'hide' or 'show'
// repeat...
//
// Example: showHideLayers(Layer1,'','show',Layer2,'','hide');

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_showHideLayers() 
{ //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'':(v='hide')?'none':v; }
    obj.display=v; }
}
/////////////////////////////////////////////////////////////////////////////
function checkDelete()
{
	return confirm("Are you sure you wish to delete this record ? \n It cannot be recovered !");
}
function checkSave()
{
	return confirm("Are you sure you wish to save the changes ?");
}

/////////////////////////////////////////////////////////////////////////////
function emailCheck (emailStr) 
{
	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 matchArray=emailStr.match(emailPat)
	var ok=true;
	if (matchArray==null) {
		alert("Email address seems incorrect, (you entered: "+emailStr+")")
		document.form1.email1.focus();
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) 
	{
		alert("The email name doesn't seem to be valid.")
		document.form1.email1.focus();
		return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) 
	{
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Destination IP address is invalid!")
			document.form1.email1.focus();
			return false;
	    }
    }
    return true;
}
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("The domain name doesn't seem to be valid.")
    return false;
}
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) {
   alert("The address must end in a three-letter domain, or two letter country.")
   return false;
}
if (len<2) {
   var errStr="This address is missing a hostname!"
   alert(errStr)
   return false;
}
return true;
}
////  End email check  ////////////////////////

///   Complete form 1 validation  ///////////////////
function validateForm1()
{
	var ok=true;
	var errStr="";
	var message="";
	///  Names  //////////////////////////////	
	if(document.form1.name1.value.length<2)
	{
		ok=false; 
		errStr="Please enter your name";
		alert(errStr);
		document.form1.name1.focus();
		return ok;
	}	
	if(document.form1.fname1.value.length<2)
	{
		ok=false; 
		errStr="Please enter your first name";
		alert(errStr);
		document.form1.fname1.focus();
		return ok;
	}
	if ((document.form1.name2.value.length>1) && (document.form1.fname2.value.length<2))
	{
		ok=false; 
		errStr="Please enter accompanying person's first name";
		alert(errStr);
		document.form1.fname2.focus();
		return ok;
	}
	if ((document.form1.fname2.value.length>1) && (document.form1.name2.value.length<2))
	{
		ok=false; 
		errStr="Please enter accompanying person's name";
		alert(errStr);
		document.form1.name2.focus();
		return ok;
	}
	
	///  Passports  ///////////////////
	if(document.form1.passNat1.value.length<2){
		ok=false; 
		errStr="Please enter your passport country of issue (nationality)";
		alert(errStr);
		document.form1.passNat1.focus();
		return ok;
		}	
	if ( (document.form1.name2.value.length>2) && (document.form1.passNat2.value.length<2))
		{
		ok=false; 
		alert("Please add accompanying person's passport country of issue (nationality)");
		document.form1.passNat2.focus();
		return false;
		}
	if(document.form1.passNu1.value.length<4){
		ok=false; 
		errStr="Please enter your passport number";
		alert(errStr);
		document.form1.passNu1.focus();
		return ok;
		}	
	if ( (document.form1.name2.value.length>2) && (document.form1.passNu2.value.length<4))
		{
		ok=false; 
		alert("Please add accompanying person's passport number");
		document.form1.passNu2.focus();
		return false;
		}
	if(document.form1.passExp1.value.length<10){
		ok=false; 
		alert("Please enter your passport expiry date (dd-mm-yyyy)");
		document.form1.passExp1.focus();
		return ok;
		}	
	if ( (document.form1.name2.value.length>2) && (document.form1.passExp2.value.length<10))
		{
		ok=false; 
		alert("Please add accompanying person's passport expiry date (dd-mm-yyyy)");
		document.form1.passExp2.focus();
		return false;
		}
	if(document.form1.bname1.value.length<2)
	{
		ok=false; 
		errStr="Please enter name to appear on your conference badge";
		alert(errStr);
		document.form1.bname1.focus();
		return ok;
	}
	if( (document.form1.raddress1.value.length<2) && (document.form1.paddress1.value.length<2) )
	{
		ok=false; 
		errStr="Please enter your address";
		alert(errStr);
		document.form1.paddress1.focus();
		return ok;
	}
	if(document.form1.organisation1.value.length<2)
	{
		ok=false; 
		errStr="Please enter the name of your organisation";
		alert(errStr);
		document.form1.organisation1.focus();
		return ok;
	} 
	///  Email  //////////////////////////////
	if(document.form1.email1.value.length<5)
	{
		ok=false; 
		errStr="Please enter your email address";
		alert(errStr);
		document.form1.email1.focus();
		return ok;
	}
	else if (document.form1.email1.value.length>4)
	{
		if (!emailCheck (document.form1.email1.value))
		{
			document.form1.email1.focus();
			return false;
		}
	}
	// End email check  ///////////////
	/// Terms and Conditions ///////////////////
	if(!document.form1.terms1.checked)
	{
		ok=false;
		alert("Please acknowledge acceptance of the Terms and Conditions");
		document.form1.terms1.focus();
		return false;
	}
	return ok;
}
///  End form1 verification  ////////////

/*
///  Form 3  /////////////////////////////////////
function validateForm3()
{
if ((form3.golf1.checked && form3.cat1.checked) || (form3.golf2.checked && form3.cat2.checked))
	{
	alert("Golf and Cat Cruise are on the same day!  Please choose one only");
	return false;
	}
else
	{
	return true;
	}
}
/// End form 3 ////////////////////////////////////////////

///  Cat   ///////////////////////////////////////////////
function c1()
{
	if (form3.cat1.checked)
	{
		form3.clubs1.checked=false;
		form3.handicap1.value="";
		form3.golf1.checked=false;
	}
}
function c2()
{
	if (form3.cat2.checked)
	{
		form3.clubs2.checked=false;
		form3.handicap2.value="";
		form3.golf2.checked=false;
	}
}
*/
///  Golf special functions  ///////////////////////
function g1() 
{
	if (form3.handicap1.value.length>0 && isNaN(parseInt(form3.handicap1.value)))
	{
		alert("Please enter a number in the handicap field.");
		form3.handicap1.value="";
	}
	else
	{
		if (form3.handicap1.value.length>0)
		{
			//form3.handicap1.value=parseInt(form3.handicap2.value);
			form3.golf1.checked=true;
			//form3.cat1.checked=false;
		}
	}
	if (form3.clubs1.checked)
	 {
	 form3.golf1.checked=true;
	 //form3.cat1.checked=false;
	 }
/*
	if (form3.cat1.checked)
	 {
	 form3.golf1.checked=false;
	 form3.handicap1.value="";
	 form3.clubs1.checked=false;
	 }
	else if (form3.golf1.checked)
	 {
	 form3.cat1.checked=false;
	 } 
 */
}

function g2() 
{
	if (form3.handicap2.value.length>0 && isNaN(parseInt(form3.handicap2.value)))
	{
		alert("Please enter a number in the handicap field.");
		form3.handicap2.value="";
	}
	else
	{
		if (form3.handicap2.value.length>0)
		{
			//form3.handicap2.value=parseInt(form3.handicap2.value);
			form3.golf2.checked=true;
			//form3.cat2.checked=false;
		}
	}
	if (form3.clubs2.checked)
	 {
	 form3.golf2.checked=true;
	 //form3.cat2.checked=false;
	 }
/*
	if (form3.cat2.checked)
	 {
	 form3.golf2.checked=false;
	 form3.handicap2.value="";
	 form3.clubs2.checked=false;
	 }
	else if (form3.golf2.checked)
	 {
	 form3.cat2.checked=false;
	 } 
*/
}

function unset1() 
{
	if (form3.golf1.checked)
	{
		//form3.cat1.checked=false
	}
	else if (!form3.golf1.checked)
	{
		form3.clubs1.checked=false;
		form3.handicap1.value="";
	}
}
function unset2() 
{
	if (form3.golf2.checked)
	{
		//form3.cat2.checked=false
	}
	else if (!form3.golf2.checked)
	 {
		form3.clubs2.checked=false;
		form3.handicap2.value="";
	 }
}
///  End golf functions  /////////////////////////