function check_integer ( n ) { return RegExp ( "^[-+]?[0-9]+$" ).test( n ); }
function check_string ( s ) { return RegExp ( "^[a-zA-Z]+$" ).test( s ); }
function check_alfanum_string ( s ) { if(s  !=null && s != '') return s.length>1; else return true; } 
function check_date ( s ) { return RegExp ( "^[0-9]{4,4}.[0-9]{2,2}.[0-9]{2,2}$" ).test( s ); }
function check_time ( s ) { return RegExp ( "^[012][0-9]:[0-5][0-9]$" ).test( s ); }
function check_email ( s ) { var aP=s.indexOf('@'), dP=s.indexOf('.', aP) , dB=s.indexOf('.', aP-2); return (s=='' || ((dB==-1 || dB==dP) && aP>1 && aP<dP-1 && dP+2<s.length)); }
function check_range( l, u , v){v=parseInt(v); return (v>=parseInt(l) && v<=parseInt(u));}
function check_float ( n )
{
	if (n.length == 0) return false;

	var first_char = n.charAt(0);
	if (first_char != '-' && first_char != '.' &&
	    (first_char < '0' || first_char > '9')) return false;

	var dot = false;
	var digit_expected = false;
	if (first_char == '.') {
		dot = true;
		digit_expected = true;
	} else if (first_char == '-')
		digit_expected = true;

	if (digit_expected && n.length < 2) return false;

	for (var count = 1; count < n.length; count++) {
		var c = n.charAt(count);
		if (c == '.') {
			if (dot) return false;
			dot = true;
		} else if (c < '0' || c > '9')
			return false;
	}

	return true;
}
function oninfo_validform(form)
{if(form!=null){
  var errors='Error(s)', ret=true, args=oninfo_validform.arguments;
  for(i=1; i<(args.length); i++)
  {
   arg=args[i];
   if(arg!=null && arg!=''){
    var checker=arg.split(':');
	if(checker.length>=4){
	 field=form[checker[0]];
	 if(field!=null){
	  if(checker[2]=='y' && field.value==''){
	   ret=false;
	   errors += '\n  '+checker[1]+' is required and should be a'+(checker[3]=='e'?'n Email':(checker[3]=='a'?' String':(checker[3]=='s'?' non-numeric Sting':(checker[3]=='i'?'n Integer(number)':(checker[3]=='d'?' Date':(checker[3]=='t'?' Time':(checker[3]=='f'?' Float':(checker[3]=='l'?' string':true))))))))+' filed';
	  }
	  else{
	   if(checker[3]=='r' && checker.length>=5){
	    if(!check_range(checker[4], checker[5], field.value))
		{
	     ret=false;
	     errors += '\n  The field '+checker[1]+' should have a number between '+checker[4]+' and '+checker[5];
		}
	   }
	   if(checker[3]=='l' && checker.length>=5){
	    checker[4]=parseInt(checker[4]);
		if(checker[5]!=null) checker[5]=parseInt(checker[5]);
	    if(field.value.length==0 || field.value.length<checker[4])
		{
	     ret=false;
	     errors += '\n  The field '+checker[1]+' should have atleast '+checker[4]+' characters';
		}
		if(checker[5]==0 || (checker[5]!=null && checker[5]<field.value.length)){
	     ret=false;
	     errors += '\n  The field '+checker[1]+' should not exceed '+checker[5]+' characters';
		}
	   }
	   else if(checker.length>=4){
		if(!(checker[3]=='e'?check_email(field.value):(checker[3]=='a'?check_alfanum_string(field.value):(checker[3]=='s'?check_string(field.value):(checker[3]=='i'?check_integer(field.value):(checker[3]=='d'?check_date(field.value):(checker[3]=='t'?check_time(field.value):(checker[3]=='f'?check_float(field.value):true))))))))
		{
		 var valTy=(checker[3]=='e'?'n Email':(checker[3]=='a'?' String':(checker[3]=='s'?' non-numeric Sting':(checker[3]=='i'?'n Integer(number)':(checker[3]=='d'?' Date':(checker[3]=='t'?' Time':(checker[3]=='f'?' Float':true)))))));
	     ret=false;
	     errors += '\n  The field '+checker[1]+' should have a'+valTy+' value';
		} 
	   }
	  }
	 }
	}
   }
 }
 if(ret==false) alert(errors);
 return ret;
}}