	// Added DOM detection for Opera which doesn't handle the length property of
	// an array of form elements.
	isDOM = document.getElementById ? 1:0;

	function stripSpaces(x) {
		while (x.substring(0,1) == ' ') x = x.substring(1);
		return x;
	}

	function empty(x) { if (x.length > 0) return false; else return true; }

	function chkForChecked (f,fld,msg) {

		var frm = f ;
		var e ;
		var j = 0 ; // This is so that we know which RADIO/CHECKBOX element to return to.

		if(isDOM) {
		// Added the DOM part for Opera which seems to choke on the length
		// property of an array of elements.
			e = document.getElementsByTagName('INPUT'); // returns a Node List

			for (var i=0; i<=e.length-1; ++i){

				if(e[i].name == fld) {
					if(j==0)j=i;
					if ( e[i].checked ) return true;  // one is checked after all!
				}
			}

		}else{

			e = f.elements[fld] ; // returns an array of elements

			for( var i=0; i < e.length; ++i ) {
				if ( e[i].checked )
				{
					return true;  // one is checked after all!
					break;
				}
			}
		}

		alert( msg );
		e[j].focus() ;
		return false;
	}

	function chkForNonblank (f,fld,msg) {

		var frm = f ;
		var e = f.elements[fld]

		if ( ! empty(stripSpaces(e.value))  ) return true;
		alert( msg );
		e.focus() ;
		return false;
	}

	function chkForIsSelected (f,fld,msg) {

		var frm = f ;
		var e = f.elements[fld]

		if ( ! e.selectedIndex == 0 ) return true;
		alert( msg );
		e.focus() ;
		return false;
	}

	function chkNumeric (f,fld,msg)
	{

		var frm = f ;
		var e = f.elements[fld]

		s = e.value;
		filteredValues = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"£$€%^&*()€_+={}[]:;@'~#?/><,|\¬";     // Characters stripped out
		var i;
		var returnString = "";
		for (i = 0; i < s.length; i++)
		{  // Search through string and append to unfiltered values to returnString.
		var c = s.charAt(i);
		if (filteredValues.indexOf(c) == -1) returnString += c;
		}
		e.value = trim(returnString);

		if ( !isNaN(parseInt(e.value)) ) return true;
		alert( msg );
		e.focus() ;
		return false;
	}

	function chkInput (f,fld,msg)
	{

		var frm = f;
		var e = f.elements[fld]

		s = e.value;
		filteredValues = "¬<>";     // Characters stripped out
		var i;
		var returnString = "";
		for (i = 0; i < s.length; i++)
		{  // Search through string and append to unfiltered values to returnString.
		var c = s.charAt(i);
		if (filteredValues.indexOf(c) == -1) returnString += c;
		}
		e.value = trim(returnString);


		if ( ! empty(stripSpaces(e.value))  ) return true;
		alert( msg );
		e.focus() ;
		return false;
	}

	var good;
	function chkEmail(f,fld,msg)
	{

	var frm = f ;
	var e = f.elements[fld]
	
	if(e.value.length == 0)
	return true;

	var goodEmail = e.value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);

	if (goodEmail){
   	return true;
	} else {
	alert(msg);
	e.focus();
	return false;
   	
   	}
	
	}




	function chkTime (f,fld,msg)
	{
		var frm = f;
		var e = f.elements[fld]

		var string = e.value;

		if(string.length != 5)
		{
			alert(msg);
			e.focus();
			return false;
		}

		return true;
		//e.focus() ;

	}


	function chkDate (f,fld,msg)
	{
		var frm = f;
		var e = f.elements[fld]
		var string = e.value;
		var PDate = new String(string);

		var regex = /(^\d{1,2})\/(\d{1,2})\/(\d{4,4})|(^\d{1,2})\/(\d{1,2})\/(\d{2,2})/;

		if( regex.test(PDate) )
		{
			var day = new String(RegExp.$1);
			var month = new String(RegExp.$2);
			var year = new String(RegExp.$3);
			if( month.length == 0 )
			{
				day = new String(RegExp.$4);
				month = new String(RegExp.$5);
				year = new String(RegExp.$6);
			}

			var today = new Date();
			var thisYear = new String(today.getFullYear());

			if( year.length == 2 )
			{
				if( year > 50 )
				{
					year = String(Number(thisYear.substring(0,2))-1) + year;
				}
				else
				{
					year = thisYear.substring(0,2) + year;
				}
			}

			if( month < 1 || month > 12 ) {
				alert(msg);
				e.focus();
				return false;
				}

			if( day < 1 || day > 31 ) {
				alert(msg);
				e.focus();
				return false;
			}

			if ((month==4 || month==6 || month==9 || month==11) && day>30)
			{
				alert(msg);
				e.focus();
				return false;
			}

			if (month == 2) // check for february 29th
			{
				var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
				if (day>29 || (day==29 && !isleap))
				{
					return false;
				}
			}

			if( (Number(year) < Number(thisYear) - 250) ||
				(Number(year) > Number(thisYear) + 250) )
				{
					alert(msg);
					e.focus();
					return false;
				}

			return true;
		}

		alert(msg);
		e.focus();
		return false;


	}


function trim(value) {
   var temp = value;
   var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
   if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
   var obj = / +/g;
   temp = temp.replace(obj, " ");
   if (temp == " ") { temp = ""; }
   return temp;
}



function customHandler (f,fld,msg) {
    var frm = document.frm ;
    //if(frm.radShoes[0].checked) {
    //    if(chkForChecked(f, fld, msg)) return true; else return false;
    //}
    return true ;
}

	function validate(f)
	{
		for( var i=0; i < fieldsToCheck.length; ++i )
		{
			if (! fieldsToCheck[i][1](f,fieldsToCheck[i][0],fieldsToCheck[i][2]) ) {
				return false ;
			}
		}

		//alert('Success!!  Your form has successfully validated.') ;
		return true ;
	}

	function validate2(f)
	{

		for( var i=0; i < fieldsToCheck2.length; ++i )
		{
			if (! fieldsToCheck2[i][1](f,fieldsToCheck2[i][0],fieldsToCheck2[i][2]) ) {
				return false ;
			}
		}

		//alert('Success!!  Your form has successfully validated.') ;
		return true ;
	}



