function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

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;
}

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];}
}

function MM_openBrWindow(theURL,winName,features) {
	newwindow=window.open(theURL,winName,features);
	if (window.focus) {newwindow.focus()}
}

// ***** validation functions *****
function validateEmpty(data,fieldname) {

	// initial variable states
    var blankErr = "";

	// check for a blank entry in the firstname field
	if (data == "") {
	    blankErr = "- " + fieldname  + " must not be blank\n";
	}
	return blankErr;

}

function validateEmail(email,fieldname) {

	// initial variable states
    var emailErr = "";

	if (email == "") {
	    emailErr = "- " + fieldname  + " must not be blank\n";
	} else {
		// check for invalid characters in the email address
		var email = email.toLowerCase();
		var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";  
		for (var i=0; i < email.length; i++) {
			var letter = email.charAt(i);
			if (validchars.indexOf(letter) == -1) { emailErr = "- " + fieldname  + " must be a valid email address\n"; }
		}
		// check to make sure there is an (@) and a following (.)
		if (email.indexOf("@") < 1) { emailErr = "- " + fieldname  + " must be a valid email address\n"; }
		if (email.indexOf(".",(email.indexOf("@")+2)) < 1) { emailErr = "- " + fieldname  + " must be a valid email address\n"; }
	}
	return emailErr;
}

function validateZip(zipcode) {

	// initial variable states
    var zipErr = "";

	if (zipcode == "") {
	    zipErr = "- Zip/Postal Code must not be blank\n";
	} else if (zipcode.length < 5 || zipcode.length > 10) {
		zipErr = "- Zip/Postal Code must be a valid zip or zip+4 code\n";
	} else {
		var validchars = "0123456789-";
		for (var i=0; i < zipcode.length; i++) {
			var nmbr = zipcode.charAt(i);
			if (validchars.indexOf(nmbr) == -1) { zipErr = "- Zip/Postal Code must be a valid zip or zip+4 code\n"; }
		}
	}
	return zipErr;

}

function validatePhone(phonenumber,fieldname) {

	// initial variable states
    var phoneErr = "";

	// check for a blank entry in the firstname field
	if (phonenumber == "") {
	    phoneErr = "- " + fieldname  + " must not be blank\n";
	} else if (phonenumber.length < 10) {
		phoneErr = "- " + fieldname  + " must be in a valid\n   phone number format with area code\n      (ex: 987-123-4567)\n";
	} else {
		var validchars = "0123456789-(). ";
		for (var i=0; i < phonenumber.length; i++) {
			var nmbr = phonenumber.charAt(i);
			if (validchars.indexOf(nmbr) == -1) { phoneErr = "- " + fieldname  + " must be in a valid\n   phone number format with area code\n      (ex: 987-123-4567)\n"; }
		}
	}
	return phoneErr;

}
