var b = 0 ;
	var i = 0 ;
	var errmsg = "" ;
	var punct = "" ;
	var min = 0 ;
	var max = 0 ;

	function val_empty(field) {
		if (b && (field.value.length == 0)) return true;
		if (field.value.length < min) {alert(errmsg); field.focus();
		if (field.type == "text") field.select(); return false ;
	}

	if ((max > 0) && (field.value.length > max)) {
		alert(errmsg);
		field.focus();
		if (field.type == "text") field.select(); return false ;} 
		return true ;
	}
	
	function val_date(field){
		var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
		var returnval=false
		if (!validformat.test(field.value))
			alert(errmsg)
		else{ //Detailed check for valid date ranges
			var monthfield=field.value.split("/")[0]
			var dayfield=field.value.split("/")[1]
			var yearfield=field.value.split("/")[2]
			var dayobj = new Date(yearfield, monthfield-1, dayfield)
			if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
				alert(errmsg); 
			else
				returnval=true
			}
			if (returnval==false) field.select()
			return returnval
		}
		
	function val_number(field) {
		if (b && (field.value.length == 0)) return true ; ;
		if (i)
	 		var valid = "0123456789"
		else
 			var valid = ".,0123456789"
		
		var pass = 1;
		var temp;
		for (var i=0; i<field.value.length; i++) {temp = "" + field.value.substring(i, i+1); if (valid.indexOf(temp) == "-1") pass = 0;}
		if (!pass) {alert(errmsg); field.focus();
		if (field.type == "text") field.select(); return false;}
		if (field.value < min) {alert(errmsg); field.focus();
		if (field.type == "text") field.select(); return false;}
		if ((max > 0) && (field.value > max)) {alert(errmsg); field.focus();
		if (field.type == "text") field.select(); return false;} 
		return true ;
	}

	function val_numseq(field) {
		if (b && (field.value.length == 0)) return true ;
		var valid = punct + "0123456789"
		var pass = 1;
		var digits = 0
		var temp;
		for (var i=0; i<field.value.length; i++) {temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") pass = 0;
		if (valid.indexOf(temp) > (punct.length-1) ) digits++ ;}
		if (!pass) {alert(errmsg); field.focus();
		if (field.type == "text") field.select(); return false ; ;}
		if (digits < min) {alert(errmsg); field.focus();
		if (field.type == "text") field.select(); return false;}
		if ((max > 0) && (digits > max)) {alert(errmsg); field.focus();
		if (field.type == "text") field.select(); return false;}
		return true ;
	}

	function val_email(field) {
		if (b && (field.value.length == 0)) return true ;
		if (! emailCheck(field.value))  {field.focus();
		if (field.type == "text") field.select(); return false ;} 
		return true ;
	}
	
	function emailCheck (emailStr) {
		var checkTLD=1;
		var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|ws)$/;
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		var matchArray=emailStr.match(emailPat);
	
		if (matchArray==null) {alert(errmsg); return false;}

		var user=matchArray[1];
		var domain=matchArray[2];
	
		for (i=0; i<user.length; i++) {if (user.charCodeAt(i)>127) {alert(errmsg); return false;}}
		for (i=0; i<domain.length; i++) {if (domain.charCodeAt(i)>127) {alert(errmsg); return false;}}
		if (user.match(userPat)==null) {alert(errmsg); return false;}
	
		var atomPat=new RegExp("^" + atom + "$");
		var domArr=domain.split(".");
		var len=domArr.length;
		
		for (i=0;i<len;i++) {if (domArr[i].search(atomPat)==-1) {alert(errmsg);	return false;}}
	
		if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {alert(errmsg); return false;}
		if (len<2) {alert(errmsg); return false;}
		return true;
	}

	
