function ValidateForm(requirefields)
{
		non_alphabetic = /[^A-Za-z. \']+/;
		special_symbol = /[\<\>\:\;\/\"\'\%\=\[\]]+/;
		non_numeric = /[^0-9+ ]+/;
	var formname=requirefields[0];
	for(var i=1; i<requirefields.length; i++)
	{
		var fields = requirefields[i].split('=>');
		
		var fieldname = fields[1];
		var fieldtype = fields[0];		
		var replaceby = " ";
		var strfield = fieldname.replace(/_/g, replaceby);
		if(fieldtype=='text' || fieldtype=='username' || fieldtype=='integer'|| fieldtype=='alphabetic' || fieldtype=='numeric')
		{
			if(document.getElementById(fieldname).value.trim()=='')
			{
				alert("Please enter "+ strfield);
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
			if(fieldtype=='alphabetic' && non_alphabetic.test(document.getElementById(fieldname).value))
			{
				alert(strfield + " should contain alphabetes only.");
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
			if(fieldtype=='username' && document.getElementById(fieldname).value.length<8)
			{
				alert(strfield + " should be atleast 8 characters.");
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
			if(fieldtype=='username' && special_symbol.test(document.getElementById(fieldname).value))
			{
				alert(strfield + " should not contain special symbol.");
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
			if(fieldtype=='numeric' && non_numeric.test(document.getElementById(fieldname).value))
			{
				
				alert(strfield + " should be in digits.");
				document.getElementById(fieldname).focus();
				return false;
				break;
				
			}
			if(fieldtype=='integer' && isNaN(document.getElementById(fieldname).value))
			{
				
				alert(strfield + " should be in digits.");
				document.getElementById(fieldname).focus();
				return false;
				break;
				
			}
		}
		if(fieldtype=='pincode')
		{
			if(document.getElementById(fieldname).value.trim()=='')
			{
				alert("Please enter "+ strfield);
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
			if(non_numeric.test(document.getElementById(fieldname).value))
			{
				
				alert(strfield + " should be in digits.");
				document.getElementById(fieldname).focus();
				return false;
				break;
				
			}
			if(document.getElementById(fieldname).value.length!=6)
			{
				alert(strfield + " should be 6 digits in length.");
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
		}
		if(fieldtype=='notequal')
		{
				var varname  = fieldname.split('&');
				var values   = varname[1];
				var variable = varname[0];
				var strfield = variable.replace(/_/g, replaceby);

				if(document.getElementById(variable).value == values)
				{
					alert("Please enter "+ strfield);
					document.getElementById(variable).focus();
					return false;
					break;
				}
				
		}
		if(fieldtype=='password')
		{
			var passwordname = fieldname.split(',');
			var passwordname1 = passwordname[0];
			if(passwordname.length>1)
				var passwordname2 = passwordname[1];
			else
				var passwordname2 = '';
			var strpass1 = passwordname1.replace("_", replaceby);
			if(document.getElementById(passwordname1).value.trim()=='')
			{
				
				alert("Please enter "+ strpass1);
				document.getElementById(passwordname1).focus();
				return false;
				break;
			}
			if(document.getElementById(passwordname1).value.length<8)
			{
				alert( strpass1 + " should be atleast 8 characters.");
				document.getElementById(passwordname1).focus();
				return false;
				break;
			}
			if(special_symbol.test(document.getElementById(passwordname1).value))
			{
				alert("special symbol are not allowed.");
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
			if(passwordname2!='' && passwordname2!='undfined')
			{
				var strpass2 = passwordname2.replace("_", replaceby);
				if(document.getElementById(passwordname2).value.trim()=='')
				{
					alert("Please enter "+ strpass2);
					document.getElementById(passwordname2).focus();
					return false;
					break;
				}
				
				if(document.getElementById(passwordname1).value!=document.getElementById(passwordname2).value)
				{
					alert(strpass1 + " and " + strpass2 + " should be same.");
					document.getElementById(passwordname1).focus();
					return false;
					break;
				}
			}
		}
		if(fieldtype=='email')
		{
			if(document.getElementById(fieldname).value.trim()=='')
			{
				alert("Please enter "+ strfield);
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
			emailStr1=document.getElementById(fieldname).value.trim();
			if(isEmail(emailStr1) == false)
			{	
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
		}
		if(fieldtype=='select')
		{
			if(document.getElementById(fieldname).value.trim()=='')
			{
				alert("Please select "+ strfield);
				document.getElementById(fieldname).focus();
				return false;
				break;
			}
		}
		if(fieldtype=='checkbox')
		{
			var fieldname = fieldname+'[]';
			var len = document.forms[formname].elements[fieldname].length;	
			if(isNaN(len))
				var len = 1;
			var checkfield = fieldname.replace('[]','');		
			for(var x=1; x<=len; x++)
			{
				if(document.getElementById(checkfield+x).checked==true)
				{
					var StrErr = false;
					break;
				}
				else
					var StrErr = true;
			}
			if(StrErr)
			{
				alert("Please select "+checkfield.replace(/_/g, replaceby));
				document.getElementById(checkfield+1).focus();
				return false;
				break;
			}
		}
		if(fieldtype=='date')
		{
			var date = fieldname.split(',');
			var date1 = date[0];
			var date2 = date[1];
			var date01 = date1.replace("_", replaceby);
			if(document.getElementById(date1).value.trim()=='')
			{
				
				alert("Please enter "+ date01);
				document.getElementById(date1).focus();
				return false;
				break;
			}
			if(date2!='')
			{
				var date02 = date2.replace("_", replaceby);
				if(document.getElementById(date2).value.trim()=='')
				{
					alert("Please enter "+ date02);
					document.getElementById(date2).focus();
					return false;
					break;
				}
				
				if(!ValidateDate(document.getElementById(date1).value,document.getElementById(date2).value))
				{
					alert(date02  + " should be greater than " + date01 + ".");
					document.getElementById(date1).focus();
					return false;
					break;
				}
			}
		}


	}
	
}

//to trim string functions
String.prototype.trim = function(){ return this.replace(/^\s+|\s+$/g,"");};

function isEmail(emailStr1)
{
		var emailPat=/^(.+)@(.+)$/
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
		var validChars="\[^\\s" + specialChars + "\]"
		var quotedUser="(\"[^\"]*\")"
		var ipDomainPat=/^\[(\d{1,4})\.(\d{1,4})\.(\d{1,4})\.(\d{1,4})\]$/
		var atom=validChars + '+'
		var word="(" + atom + "|" + quotedUser + ")"
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

		var matchArray=emailStr1.match(emailPat)
		if (matchArray==null) {
			alert("Email address seems incorrect (check @ and .'s)")		
			return false
		}
		
		var user=matchArray[1]
		var domain=matchArray[2]
		if (user.match(userPat)==null) {
			alert("The user name doesn't seem to be valid.")
			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!")
					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
 }

function DateFormat(date0 , seperator)
{
	
	var	p1=date0.indexOf(seperator);
	var p2=date0.indexOf(seperator,p1+1);
	var yyYear=date0.substr(0,p1);
	var mmMonth=date0.substr(p1+1,2);
	var ddDate=date0.substr(p2+1);
	var now = new Date();
	var date00= new Date(yyYear,mmMonth,ddDate);
	return date00;
}

function ValidateDate(date1,date2)
{
	
	date01 = DateFormat(date1 , '-');
	date02 = DateFormat(date2 , '-');
	if(date02 < date01)	
		return false;
	else
		return true;

}
function validateEmail(email)
{
	if(email.length <= 0)
	{
	  return false;
	}
	var splitted = email.match("^(.+)@(.+)$");
	if(splitted == null) return false;
	if(splitted[1] != null )
	{
	  var regexp_user=/^\"?[\w-_\.]*\"?$/;
	  if(splitted[1].match(regexp_user) == null) return false;
	}
	if(splitted[2] != null)
	{
	  var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
	  if(splitted[2].match(regexp_domain) == null)
	  {
		var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
		if(splitted[2].match(regexp_ip) == null) return false;
	  }// if
	  return true;
	}
	return false;
}
