function Validation()
 { 
    var ie=false;
    this.ErrorMessage="";
	this.ShowErrorInControl="";
	var CheckForBlank=false;
    this.IsPageValid=true;
    this.FirstErrorOnControl=null;
	if (document.all) { ie = true; }
	 
	     function getObj(id) 
	  {
		   if (ie) { return document.all[id]; } 
		   else {	return document.getElementById(id);	}
	  }    
	  
	  	this.IsValid= function(Control,TypeOfCheck,CheckForBlank,CheckForBlankErrorMessage,length,LengthError,showMessage,ValidationErrorMessage,Required)
	   {
		   var obj=getObj(Control);
		   var temp=this.Trim(obj.value);
		   if(CheckForBlank==true &&  temp=="")
		   {
			   if(showMessage) { alert(CheckForBlankErrorMessage); } else { this.ErrorMessage=CheckForBlankErrorMessage;this.setStatus(Control,CheckForBlankErrorMessage);if(this.IsPageValid) { this.IsPageValid=false;this.FirstErrorOnControl=obj; } return false; }
		   }
		   
           if(temp=="" && Required==false)
           {
              return true;
           }
             else 

		   if(!this.Validate(this.GetPattern(TypeOfCheck),temp))
		   {

			   if(showMessage)  { alert(ValidationErrorMessage); } else { this.ErrorMessage=ValidationErrorMessage;this.setStatus(Control,ValidationErrorMessage);if(this.IsPageValid) { this.IsPageValid=false;this.FirstErrorOnControl=obj; } return false; }
		   }
		   
		   if(length!=-1)
		   {
			     if(!this.ValidateStringLength(temp,length))
				 {
					 if(showMessage)  { alert(LengthError); } else { this.ErrorMessage=LengthError;this.setStatus(Control,LengthError);if(this.IsPageValid) { this.IsPageValid=false;this.FirstErrorOnControl=obj; } return false; }
				 }
		   }
		      this.ErrorMessage="";
		      this.setStatus(Control,this.ErrorMessage);
		      return true;
		     
	   }
	   
	         
	     this.setStatus=function(Control,message)
	   {
		     obj=getObj(Control+"_ErrMsg");
		     if(obj!=null) {
 			 obj.innerHTML=message; 
		   }
	   }

	 
   	      this.Validate= function(expression,TextToValidate)
	   {
		   
		   if(expression==".") { return true; }
		    var expr=new RegExp(expression);
		   var temp=expr.exec(TextToValidate);
		   
		       if(temp==null)
             {
               return false;
             }
               else
             {
				   
		         return temp[0]==TextToValidate;
             }
	   }
	   
	   this.ValidateStringLength=function(text,length)
	   {
		   return text.length>=length;
	   }
	   
	   this.Trim=function(text) 
	   {
	       //return text.replace(/^\s+|\s+$/g,"");
		   return text;
       }
	   
	   
	   this.IsValidKey=function(e,TypeOfCheck,Control)
	   {
		  var key= this.getKeyCode(e);
		  if(key==null || key==0 || key==8 || key==9 || key==13 || key==27) { return true; }
		  key=String.fromCharCode(key);
		  if(key!=".") {
		  var pattern=this.GetKeyPattern(TypeOfCheck);
          
		   if(pattern.test(key)==true || this.Validate(pattern,Control.value+key)) { return true; } else { return false; }
		  }
		    else
			{ 
			      if((TypeOfCheck=="FLOAT" || TypeOfCheck=="SGN_FLOAT") && Control.value.indexOf('.')==-1)
				 {
				   return true;
				 }
				   else
				 {
					 return this.Validate(TypeOfCheck,Control.value);
				 }
			}
		  
		  

	   }
	   
	   this.GetPattern=function(type)
	   {
		   var pattern="";
		   
		    switch(type)
			{
				case "NUM":      pattern=/^\d+$/;break;
				case "SGN_NUM":  pattern=/^[-]?\d+$/;break;
				case "FLOAT":    pattern=/^\d+(?:\.\d{0,2})?$/;break;
				case "SGN_FLOAT":pattern=/^[-]?\d+(?:\.\d{0,2})?$/;break;
				case "USRNAME":  pattern=/(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,15})$/;break;
				case "PWD":      pattern=/[a-zA-Z0-9_\.]{6,15}/;break;
				case "EMAIL":    pattern=/^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9_\-]+\.[a-zA-Z0-9]{2,}[\.]?[a-zA-Z0-9]+$/;break;
				case "STATE":    pattern=/(^[a-zA-Z]+[a-zA-Z,\s]*)/;break;
				case "FST_NAME": pattern=/^[a-zA-Z]+/;break;
				case "LST_NAME": pattern=/(^[a-zA-Z]+[a-zA-Z,\s]*)/;break;
				case "CITY":     pattern=/(^[a-zA-Z]+[a-zA-Z,\s]*)/;break;
				case "ZIP":      pattern=/(^(?!0{5})(\d{5})(?!-?0{4})(-?\d{4})?$)/;break;
				case "PHONE":    pattern=/^\d{2}\-?\d+\-?\d+/;break;
                case "ANY" :     pattern=".";break;
			}
			
			return pattern;
	   }
	   
	    this.GetKeyPattern=function(type)
	   {
		   var pattern="";
		   
		    switch(type)
			{
				case "NUM":      pattern=/^\d+$/;break;
				case "SGN_NUM":  pattern=/^[-]?\d+$/;break;
				case "FLOAT":    pattern=/^\d+(?:\.\d{0,2})?$/;break;
				case "SGN_FLOAT":pattern=/^[-]?\d+(?:\.\d{0,2})?$/;break;
				case "USRNAME":  pattern=/(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9])$/;break;
				case "PWD":      pattern="";break;
				case "EMAIL":    pattern=/^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]{2,}[\.]?[a-zA-Z0-9]+$/;break;
				case "STATE":    pattern=/(^[a-zA-Z]+[a-zA-Z,\s]*)/;break;
				case "FST_NAME": pattern=/^[a-zA-Z]+/;break;
				case "LST_NAME": pattern=/^[a-zA-Z]+[a-zA-Z,\s]*/;break;
				case "CITY":     pattern=/(^[a-zA-Z]+[a-zA-Z,\s]*)/;break;
				case "ZIP":      pattern=/\d{0,12}/;break;
				case "PHONE":    pattern=/^\d{2}\-?\d+\-?\d+/;break;     
                case "ANY" :     pattern=".";break;
			}
			
			return pattern;
	   }
	   
		 this.getKeyCode=function (e)
       {
	         if (window.event) {
          	   return window.event.keyCode;
			 }
         	else if (e) {
          	   return e.which;
			}
     	    else {
 	               return null;
			}
       } 


 }

var ValidateControls= new  Validation();

//Email me on webcom_rakesh@yahoo.co.in for further updates if you need to this script