Link to home
Start Free TrialLog in
Avatar of andreni78
andreni78

asked on

Validation Script Bug Fixes and Add a feature...

This script doesn't place the cursor to the top most input box/select box/radio/checkbox that has error.. also the text in the input field doesn't change to  a custom color.. like white text on red background if there's an error in the particular input field..
if someone can add that and fix the bug.. that would be great.. before it would put the cursor on the top most input field.. but not this time..

i will display the script and it's usage in the next post...
Avatar of andreni78
andreni78

ASKER

SCRIPT:
function Validator(frmname){
   this.formobj=document.forms[frmname];
    if(!this.formobj)
    {
      alert("BUG: couldnot get Form object "+frmname);
         return;
    }
    if(this.formobj.onsubmit)
    {
     this.formobj.old_onsubmit = this.formobj.onsubmit;
     this.formobj.onsubmit=null;
    }
    else
    {
     this.formobj.old_onsubmit = null;
    }
    this.formobj.onsubmit=form_submit_handler;
    this.addValidation = add_validation;
    this.setAddnlValidationFunction=set_addnl_vfunction;
    this.clearAllValidations = clear_all_validations;
}
function set_addnl_vfunction(functionname)
{
 this.formobj.addnlvalidation = functionname;
}
function clear_all_validations()
{
    for(var itr=0;itr < this.formobj.elements.length;itr++)
    {
         this.formobj.elements[itr].validationset = null;
    }
}
var errMsg;
function form_submit_handler(){
    errMsg = "";
    var retVal = true;
    for(var itr=0;itr < this.elements.length;itr++)
    {
         if(this.elements[itr].validationset &&
       !this.elements[itr].validationset.validate())
         {
           retVal = false;
         }
    }
   if(errMsg>""){
     alert("Please correct these errors:"+errMsg);
     return false;
   }
   if(retVal && this.addnlvalidation)
    {
      str =" var ret = "+this.addnlvalidation+"()";
      eval(str);
   if(retVal && !ret) return ret;
   }
   return retVal;
}
function add_validation(itemname,descriptor,errstr)
{
    if(!this.formobj)
    {
         alert("BUG: the form object is not set properly");
         return;
    }//if
    var itemobj = this.formobj[itemname];

   if(itemobj.length && isNaN(itemobj.selectedIndex) )
   //for radio button; don't do for 'select' item
    {
         itemobj = itemobj[0];
    }    
     if(!itemobj)
    {
         alert("BUG: Couldnot get the input object named: "+itemname);
         return;
    }
   
     if(!itemobj.validationset)
    {
         itemobj.validationset = new ValidationSet(itemobj);
    }
    itemobj.validationset.add(descriptor,errstr);
}
function ValidationDesc(inputitem,desc,error)
{
   this.desc=desc;
    this.error=error;
    this.itemobj = inputitem;
    this.validate=vdesc_validate;
}
function vdesc_validate(){
  if(!this.itemobj.oldColor){
    this.itemobj.oldColor = "color:"+this.itemobj.style.backgroundColor;
  }
  if(!validateInput(this.desc,this.itemobj,this.error)){
    this.itemobj.style.backgroundColor="red"
    this.itemobj.focus();
    this.itemobj.onkeydown =

function(){this.style.backgroundColor=this.oldColor.split("color:")[1]};
    this.itemobj.onclick = this.itemobj.onkeydown;
    return false;
  } else {
    this.itemobj.style.backgroundColor=this.itemobj.oldColor.split("color:")[1];
    return true;
  }
}

function ValidationSet(inputitem)
{
   this.vSet=new Array();
    this.add= add_validationdesc;
    this.validate= vset_validate;
    this.itemobj = inputitem;
}
function add_validationdesc(desc,error)
{
 this.vSet[this.vSet.length]=
  new ValidationDesc(this.itemobj,desc,error);
}
function vset_validate()
{
   for(var itr=0;itr<this.vSet.length;itr++)
      {
        if(!this.vSet[itr].validate())
           {
             return false;
           }
      }
      return true;
}

/*  checks the validity of an email address entered
*   returns true or false
*/
function validateEmail(email)
{
   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;
}

function TestComparison(objValue,strCompareElement,strvalidator,strError)
{
  var bRet=true;
  var objCompare=null;
  if(!objValue.form)
  {
     alert("BUG: No Form object!");
      return false
  }
  objCompare = objValue.form.elements[strCompareElement];
  if(!objCompare)
  {
    alert("BUG: Element with name"+strCompareElement+" not found !");
    return false;
  }
  if(strvalidator != "eqelmnt" &&
         strvalidator != "neelmnt")
  {
     if(isNaN(objValue.value))
      {
        errMsg += "\n\t"+objValue.name+": Should be a number ";
        return false;
      }//if
      if(isNaN(objCompare.value))
      {
        errMsg += "\n\t"+objCompare.name+": Should be a number ";
        return false;
      }//if        
  }//if
  var cmpstr="";
  switch(strvalidator)
  {
      case "eqelmnt":
               {
                 if(objValue.value != objCompare.value)
                 {
                      cmpstr = " should be equal to ";
                    bRet = false;
                 }//if
                 break;
              }//case
         case "ltelmnt":
              {
              if(eval(objValue.value) >= eval(objCompare.value))
                    {
                     cmpstr =  " should be less than ";
                      bRet = false;                        
                    }
                break;
              }//case
         case "leelmnt":
              {
                   if(eval(objValue.value) >  eval(objCompare.value))
                    {
                     cmpstr =  " should be less than or equal to";
                      bRet = false;                        
                    }
                break;
              }//case          
         case "gtelmnt":
              {
                   if(eval(objValue.value) <=  eval(objCompare.value))
                    {
                     cmpstr =  " should be greater than";
                      bRet = false;                        
                    }
                break;
              }//case
         case "geelmnt":
              {
                   if(eval(objValue.value) < eval(objCompare.value))
                    {
                     cmpstr =  " should be greater than or equal to";
                      bRet = false;                        
                    }
                break;
              }//case
         case "neelmnt":
              {
                 if(objValue.value.length > 0 &&
                   objCompare.value.length > 0 &&
                   objValue.value == objCompare.value)
                 {
                      cmpstr = " should be different from ";
                    bRet = false;
                 }//if
                 break;              
               }              
   }//switch
  if(bRet==false)
  {
     if(!strError || strError.length==0)
      {
        strError = objValue.name + cmpstr + objCompare.value;
       }//if
      errMsg += "\n\t"+strError;
  }//if
  return bRet;
}
function TestSelMin(objValue,strMinSel,strError)
{
   var bret = true;
    var objcheck = objValue.form.elements[objValue.name];
    var chkcount =0;
    if(objcheck.length)
    {
         for(var c=0;c < objcheck.length;c++)
         {
            if(objcheck[c].checked == "1")
            {
              chkcount++;
            }//if
         }//for
    }
    else
    {
      chkcount = (objcheck.checked == "1")?1:0;
    }
    var minsel = eval(strMinSel);
    if(chkcount < minsel)
    {
         if(!strError || strError.length ==0)
          {
               strError = "Please Select atleast"+minsel+" check boxes

for"+objValue.name;  
         }//if                                                              
          errMsg += "\n\t"+strError;
          bret = false;
    }
    return bret;
}

function TestDontSelectChk(objValue,chkValue,strError)
{
   var pass=true;
    var objcheck = objValue.form.elements[objValue.name];
   if(objcheck.length)
    {
         var idxchk=-1;
         for(var c=0;c < objcheck.length;c++)
         {
            if(objcheck[c].value == chkValue)
            {
              idxchk=c;
               break;
            }//if
         }//for
         if(idxchk>= 0)
         {
           if(objcheck[idxchk].checked=="1")
           {
             pass=false;
           }
         }//if
    }
    else
    {
         if(objValue.checked == "1")
         {
              pass=false;
         }//if
    }//else
    if(pass==false)
    {
    if(!strError || strError.length ==0)
        {
             strError = "Can't Proceed as you selected "+objValue.name;  
       }//if                
       errMsg += "\n\t"+strError;
     
     }
   return pass;
}

function TestRequiredInput(objValue,strError)
{
var ret = true;
   if(eval(objValue.value.length) == 0)
    {
       if(!strError || strError.length ==0)
       {
         strError = objValue.name + " : Required Field";
       }//if
       errMsg += "\n\t"+strError;
       ret=false;
    }//if
return ret;
}

function TestMaxLen(objValue,strMaxLen,strError)
{
var ret = true;
   if(eval(objValue.value.length) > eval(strMaxLen))
    {
      if(!strError || strError.length ==0)
      {
        strError = objValue.name + " : "+ strMaxLen +" characters maximum ";
      }//if
      errMsg += "\n\t"+strError + "\n\t[Current length = " + objValue.value.length + " 

]";
      ret = false;
    }//if
return ret;
}

function TestMinLen(objValue,strMinLen,strError)
{
var ret = true;
   if(eval(objValue.value.length) <  eval(strMinLen))
    {
      if(!strError || strError.length ==0)
      {
        strError = objValue.name + " : " + strMinLen + " characters minimum  ";
      }//if              
      errMsg += "\n\t"+strError + "\n\t[Current length = " + objValue.value.length + " 

]";
      ret = false;  
    }//if
return ret;
}

function TestInputType(objValue,strRegExp,strError,strDefaultError)
{
  var ret = true;

   var charpos = objValue.value.search(strRegExp);
    if(objValue.value.length > 0 &&  charpos >= 0)
    {
     if(!strError || strError.length ==0)
      {
        strError = strDefaultError;
     }//if
      errMsg += "\n\t"+strError + "\n\t [Error character position " +

eval(charpos+1)+"]";
      ret = false;
    }//if
 return ret;
}

function TestEmail(objValue,strError)
{
var ret = true;
    if(objValue.value.length > 0 && !validateEmail(objValue.value)      )
     {
       if(!strError || strError.length ==0)
       {
          strError = objValue.name+": Enter a valid Email address ";
       }//if                                              
       errMsg += "\n\t"+strError;
       ret = false;
     }//if
return ret;
}

function TestLessThan(objValue,strLessThan,strError)
{
var ret = true;
      if(isNaN(objValue.value))
       {
         errMsg += "\n\t"+objValue.name+": Should be a number ";
         ret = false;
       }//if
       else
      if(eval(objValue.value) >=  eval(strLessThan))
       {
         if(!strError || strError.length ==0)
         {
           strError = objValue.name + " : value should be less than "+ strLessThan;
         }//if              
         errMsg += "\n\t"+strError;
         ret = false;                
        }//if  
return ret;          
}

function TestGreaterThan(objValue,strGreaterThan,strError)
{
var ret = true;
    if(isNaN(objValue.value))
     {
       errMsg += "\n\t"+objValue.name+": Should be a number ";
       ret = false;
     }//if
      else
    if(eval(objValue.value) <=  eval(strGreaterThan))
      {
        if(!strError || strError.length ==0)
        {
          strError = objValue.name + " : value should be greater than "+ strGreaterThan;
        }//if              
        errMsg += "\n\t"+strError;  
       ret = false;
     }//if  
return ret;          
}

function TestRegExp(objValue,strRegExp,strError)
{
var ret = true;
   if( objValue.value.length > 0 && 
        !objValue.value.match(strRegExp) )
    {
      if(!strError || strError.length ==0)
      {
        strError = objValue.name+": Invalid characters found ";
      }//if                                                              
      errMsg += "\n\t"+strError;
      ret = false;                  
    }//if
return ret;
}
function TestDontSelect(objValue,index,strError)
{
var ret = true;
    if(objValue.selectedIndex == null)
     {
       alert("BUG: dontselect command for non-select Item");
       ret = false;
     }
      else
    if(objValue.selectedIndex == eval(index))
     {
      if(!strError || strError.length ==0)
       {
       strError = objValue.name+": Please Select one option ";
       }//if                                                              
       errMsg += "\n\t"+strError;
       ret =  false;                                  
      }
return ret;
}

function TestSelectOneRadio(objValue,strError)
{
    var objradio = objValue.form.elements[objValue.name];
    var one_selected=false;
    for(var r=0;r < objradio.length;r++)
    {
      if(objradio[r].checked == "1")
      {
           one_selected=true;
         break;
      }
    }
    if(false == one_selected)
    {
     if(!strError || strError.length ==0)
       {
        strError = "Please select one option from "+objValue.name;
       }    
       errMsg += "\n\t"+strError;
    }
return one_selected;
}

//*  Checks each field in a form
function validateInput(strValidateStr,objValue,strError)
{
    var ret = true;
   var epos = strValidateStr.search("=");
    var  command  = "";
    var  cmdvalue = "";
    if(epos >= 0)
    {
     command  = strValidateStr.substring(0,epos);
     cmdvalue = strValidateStr.substr(epos+1);
    }
    else
    {
     command = strValidateStr;
    }

    switch(command)
    {
        case "req":
        case "required":
         {
             ret = TestRequiredInput(objValue,strError)
          break;            
         }
       case "maxlength":
        case "maxlen":
          {
                ret = TestMaxLen(objValue,cmdvalue,strError)
            break;
          }
       case "minlength":
        case "minlen":
           {
                ret = TestMinLen(objValue,cmdvalue,strError)
            break;
           }
       case "alnum":
        case "alphanumeric":
           {
                    ret = TestInputType(objValue,"[^A-Za-z0-9]",strError,
                              objValue.name+": Only alpha-numeric characters allowed ");
                   break;
           }
       case "alnum_s":
        case "alphanumeric_space":
           {
                    ret = TestInputType(objValue,"[^A-Za-z0-9\\s]",strError,
                              objValue.name+": Only alpha-numeric characters and space

allowed ");
                   break;
           }            
        case "num":
        case "numeric":
           {
                ret = TestInputType(objValue,"[^0-9]",strError,
                              objValue.name+": Only digits allowed ");
               break;              
           }
       case "alphabetic":
        case "alpha":
           {
                ret = TestInputType(objValue,"[^A-Za-z]",strError,
                              objValue.name+": Only alphabetic characters allowed ");
               break;
           }
       case "alphabetic_space":
        case "alpha_s":
           {
                ret = TestInputType(objValue,"[^A-Za-z\\s]",strError,
                              objValue.name+": Only alphabetic characters and space

allowed ");
               break;
           }
       case "email":
          {
                  ret = TestEmail(objValue,strError);
              break;
          }
       case "lt":
        case "lessthan":
         {
               ret = TestLessThan(objValue,cmdvalue,strError);
             break;
         }
       case "gt":
        case "greaterthan":
         {
               ret = TestGreaterThan(objValue,cmdvalue,strError);
           break;
         }
       case "regexp":
         {
               ret = TestRegExp(objValue,cmdvalue,strError);
          break;
         }
       case "dontselect":
         {
                ret = TestDontSelect(objValue,cmdvalue,strError)
            break;
         }
         case "dontselectchk":
         {
              ret = TestDontSelectChk(objValue,cmdvalue,strError)
              break;
         }
         case "selmin":
         {
              ret = TestSelMin(objValue,cmdvalue,strError);
              break;
         }
         case "selone":
         {
              ret = TestSelectOneRadio(objValue,strError);
             break;
         }          
          //Comparisons
         case "eqelmnt":
          case "ltelmnt":
         case "leelmnt":
         case "gtelmnt":
         case "geelmnt":
         case "neelmnt":
         {
             return TestComparison(objValue,cmdvalue,command,strError);
             break;
         }
   }//switch
    return ret;
}



USAGE:

<form name="myform">
<select name="name1">
<option>One
<option>Two
<option>Three
</select>
<input type=text name="name2">
<input type=text name="name3">
<input type=radio name="name4" value="One"> One
<input type=radio name="name4" value="Two"> Two
<input type=radio name="name4" value="Three"> Three
<input type=checkbox name="name5" value="One"> One
<input type=checkbox name="name5" value="Two"> Two
<input type=checkbox name="name5" value="Three"> Three
<input type=submit>
</form>

<SCRIPT language=JavaScript type="text/javascript">
 var frmvalidator  = new Validator("myform");
<!-- for select list form, uses "dontselect=0" -->
 frmvalidator.addValidation("name1","dontselect=0","Select list error message");
<!-- "req" is for required entry for inputbox -->
 frmvalidator.addValidation("name2","req","inputbox error message");
<!-- "minlen=#" is minimum length requirement -->
 frmvalidator.addValidation("name3","minlen=3", "inputbox minimum length error message");
<!-- "selone" is for radio box requirement selection -->
 frmvalidator.addValidation("name4","selone","Radio box error message");
<!-- "selmin" is for checkbox requirement -->
 frmvalidator.addValidation("name5","selmin=1","checkbox error message");
</script>
</body>
</html>
I have modified only 'form_submit_handler' method. Replace your existing method with the modified one and check if it solves ur purpose.

function form_submit_handler(){
    errMsg = "";
    var retVal = true;
    var firstFrmValidateFailedObj;

    for(var itr=0;itr < this.elements.length;itr++)
    {
         if(this.elements[itr].validationset && !this.elements[itr].validationset.validate())
         {
           retVal = false;
           if(typeof(firstFrmValidateFailedObj) == "undefined"){

                       firstFrmValidateFailedObj = this.elements[itr];
                 }
         }
    }

   if(errMsg>""){
          alert("Please correct these errors:"+errMsg);
          if(typeof(firstFrmValidateFailedObj) != "undefined"){
                if(firstFrmValidateFailedObj.type == "text" || firstFrmValidateFailedObj.type == "textarea"){
                  firstFrmValidateFailedObj.select();
                }
           firstFrmValidateFailedObj.focus();
     }
     return false;
   }

   if(retVal && this.addnlvalidation){
      str =" var ret = "+this.addnlvalidation+"()";
      eval(str);
           if(retVal && !ret) return ret;
   }
   return retVal;
}
ASKER CERTIFIED SOLUTION
Avatar of nimaig
nimaig
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Zyloch
You script is a bit messy, I'd have to say. Is it ok if I change it to this:?


var errMsg="";
var formobj=false;

function Validator(frmname) {
   formobj=document.forms[frmname];
   if(!formobj) {
      alert("Could not get form object "+frmname+". Please try again.");
      return false;
   } else {
      for (var i=0;i<addValidation.length;i++) {
alert(i);
         validateInput(addValidation[i].split(","));
      }
      if (errMsg!="") {
         return false;
      }
   }
   return true;
}

function validateInput(elArray) {
   ret=true;
   if (!formobj.elements[elArray[0]]) {
      return false;
   } else {
      currEl=formobj.elements[elArray[0]];
   }
   if (elArray[1]) {
      epos=elArray[1].search("=");
   } else {
      return true;
   }
   command="";
   cmdvalue="";
   if (epos>=0) {
      command=elArray[1].substring(0,epos);
      cmdvalue=elArray[1].substr(epos+1);
   } else {
     command=elArray[1];
   }
   strErr=(elArray[2]) ? elArray[2] : "An Unspecified Error Occurred";
   switch(command) {
      case "req":
      case "required":
         ret=TestRequiredInput(currEl,strErr);
         break;            
      case "maxlength":
      case "maxlen":
         ret=TestLen(currEl,command,cmdvalue,strErr)
         break;
      case "minlength":
      case "minlen":
         ret=TestLen(currEl,command,cmdvalue,strErr)
         break;
      case "alnum":
      case "alphanumeric":
         ret=TestInputType(currEl,"[^A-Za-z0-9]",strErr,currEl.name+": Only alpha-numeric characters allowed!");
         break;
      case "alnum_s":
      case "alphanumeric_space":
         ret=TestInputType(currEl,"[^A-Za-z0-9\\s]",strErr,currEl.name+": Only alpha-numeric characters and spaces allowed!");
         break;            
      case "num":
      case "numeric":
         ret=TestInputType(currEl,"\D",strErr,currEl.name+": Only digits allowed!");
         break;              
      case "alphabetic":
      case "alpha":
         ret=TestInputType(objValue,"[^A-Za-z]",strErr,currEl.name+": Only alphabetic characters allowed!");
         break;
      case "alphabetic_space":
      case "alpha_s":
         ret=TestInputType(currEl,"[^A-Za-z\\s]",strErr,currEl.name+": Only alphabetic characters and space allowed!");
         break;
      case "email":
         ret=validateEmail(currEl,strErr);
         break;
      case "lt":
      case "lessthan":
         ret=TestInequality(currEl,command,cmdvalue,strErr);
         break;
      case "gt":
      case "greaterthan":
         ret=TestInequality(currEl,command,cmdvalue,strErr);
         break;
      case "regexp":
         ret=TestRegExp(currEl,cmdvalue);
         break;
      case "dontselect":
         ret = TestDontSelect(currEl,cmdvalue,strErr)
         break;
      case "dontselectchk":
         ret=TestDontSelectChk(currEl,cmdvalue,strErr)
         break;
      case "selmin":
         ret=TestSelMin(currEl,cmdvalue,strErr);
         break;
      case "selone":
         ret=TestSelectOneRadio(currEl,strErr);
         break;        
///Comparisons////////////////////////////////////////////////////
      case "eqelmnt":
      case "ltelmnt":
      case "leelmnt":
      case "gtelmnt":
      case "geelmnt":
      case "neelmnt":
         ret=TestComparison(currEl,cmdvalue,command,strErr);
         break;
      default:
         ret=false;
         break;
   }
   return ret;
}

function validateEmail(obj,strError) {
   email=obj.value
   if (email.match("^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$")!=null) {
      return true;
   }
   changeAppearance(obj,"white","red");
   if (errMsg=="") {
      obj.focus();
   }
   errMsg+=strError+"\n";
   return false;
}

function TestRequiredInput(obj,strError) {
   objValue=obj.value;
   if (objValue.length==0) {
      if (!strError||strError.length==0) {
         strError=obj.name+": Required Field!";
      }
      changeAppearance(obj,"white","red");
      if (errMsg=="") {
         obj.focus();
      }
      errMsg+=strError+"\n";
      return false;
   }
   return true;
}

function TestLen(obj,com,strLen,strError) {
   objValue=obj.value;
   ret=true;
   switch(com) {
      case "maxlength":
      case "maxlen":
         if (objValue.length>strLen) {
            ret=false;
         }
         break;
      case "minlength":
      case "minlen":
         if (objValue.length<strLen) {
            ret=false;
         }
         break;
      default:
         alert("Program Error:\nUnrecognized value passed to TestLen function!");
         break;
   }
   if (!ret) {
      changeAppearance(obj,"white","red");
      if (errMsg=="") {
         obj.focus();
      }
      errMsg+=strError+"\n";
      return ret;
   }
   return ret;
}


function TestInputType(obj,strRegExp,strError,strDefaultError) {
  objValue=obj.value;
  var charpos=objValue.search(strRegExp);
  if (strError&&(!strError.search("^\s+$"))) {
     strDefaultError=strError;
  }
  if(charpos>=0) {
     changeAppearance(obj,"white","red");
     if (errMsg=="") {
        obj.focus();
     }
     errMsg+=strError+"\n\t[Error at character position "+charpos+"]\n";
     return false;
   }
   return true;
}

function TestInequality(obj,com,numComp,strError) {
   ret=true;
   objValue=obj.value;
   if(isNaN(objValue.value)) {
      if (!strError||strError.length==0) {
         strError+="\n\t"+obj.name+": Should be a number!";
      }
      ret=false;
   } else {
      switch(com) {
         case "lt":
         case "lessthan":
         case "ltelmnt":
            if (objValue>=parseInt(numComp,10)) {
               if (!strError||strError.length==0) {
                  strError=obj.name+": value should be less than "+numComp;  
               }
               ret=false;
            }
            break;
         case "gt":
         case "greaterthan":
         case "gtelmnt":
            if (objValue<=parseInt(numComp,10)) {
               if (!strError||strError.length==0) {
                  strError=obj.name+": value should be greater than "+numComp;  
               }
               ret=false;
            }
            break;
         case "leelmnt":
            if (objValue>parseInt(numComp,10)) {
               if (!strError||strError.length==0) {
                  strError=obj.name+": value should be less than or equal to "+numComp;
               }
            }
            break;
         case "geelmnt":
            if (objValue<parseInt(numComp,10)) {
               if (!strError||strError.length==0) {
                  strError=obj.name+": value should be greater than or equal to "+numComp;
               }
            }
            break;
         default:
            alert("Program Error:\nUnrecognized value passed to TestInequality function!");
            break;
      }
      if (!ret) {
         changeAppearance(obj,"white","red");
         if (errMsg=="") {
            obj.focus();
         }
         errMsg+=strError+"\n";                      
      }  
   }
   return ret;          
}

function TestRegExp(obj,strRegExp) {
   strError="";
   objValue=obj.value;
   if (!objValue.value.match(strRegExp.toString())) {
     strError=obj.name+": Invalid characters found!";
   }                                                              
   errMsg+=strError;
   if (strError!="") {
      changeAppearance(obj,"white","red");
      if (errMsg=="") {
         obj.focus();
      }
      errMsg+="\n";
      return false;
   }
   return true;
}

function TestComparison(obj,strCompareElement,strvalidator,strError) {
   objValue=obj.value;
   ret=true;
   var objCompare=null;
   objCompare=obj.form.elements[strCompareElement];
   if(!objCompare) {
     alert("Element with name"+strCompareElement+" not found!");
     return false;
   }
   objCompareVal=objCompare.value;
   if(strvalidator=="leelmnt"||strvalidator=="geelmnt"||strvalidator=="gtelmnt"||strvalidator=="ltelmnt") {
      return(TestInequality(obj,strvalidator,objCompareVal,strError));
   }
   switch(strvalidator) {
      case "eqelmnt":
         if (objValue!=objCompareVal) {
            if (!strError||strError.length==0) {
               strError=obj.name+" should be equivalent to "+objCompare.name;
            }
            ret=false;
         }
         break;
      case "neelmnt":
         if (objValue==objCompareVal) {
            if (!strError||strError.length==0) {
               strError=obj.name+" should be different from "+objCompare.name;
            }
            ret = false;
         }
         break;              
      default:
         alert("Program Error:\nUnrecognized value passed to TestComparison function!");
         break;          
   }
  if(!ret) {
      changeAppearance(obj,"white","red");
      if (errMsg=="") {
         obj.focus();
      }
      errMsg+=strError+"\n";
  }
  return ret;
}

function TestSelMin(obj,strMinSel,strError) {
   var objcheck=obj.form.elements[obj.name];
   var chkcount=0;
   for (var i=0;i<objcheck.length;i++) {
      if(objcheck[i].checked=="1") {
         chkcount++;
      }
   }
   if(chkcount<parseInt(strMinSel,10)) {
      if (!strError||strError.length==0) {
         strError="Please Select at least "+minsel+" check boxes with name "+obj.name+"!";
      }
      changeAppearance(obj,"white","red");
      if (errMsg=="") {
         obj.focus();
      }
      errMsg+=strError+"\n";
      return false;
   }                                                      
   return true;
}

function TestDontSelectChk(obj,chkValue,strError) {
   ret=true;
   if(obj.length) {
      var idxchk=-1;
      for (var i=0;i<obj.length;i++) {
         if(obj[c].value==chkValue) {
            idxchk=c;
            break;
         }
      }
      if(idxchk!=-1) {
        if(obj[idxchk].checked) {
           ret=false;
        }
      }
   } else {
      if (obj.checked) {
         ret=false;
      }
   }
   if(!ret) {
      if (!strError||strError.length==0) {
         strError="Can't Proceed as you selected "+obj.name;  
      }                
      changeAppearance(obj,"white","red");
      if (errMsg=="") {
         obj.focus();
      }
      errMsg+=strError+"\n";
   }
   return ret;
}

function TestDontSelect(obj,index,strError) {
   ret = true;
   if (obj.selectedIndex==parseInt(index,10)) {
       ret = false;
       if (!strError||strError.length==0) {
          strError = obj.name+": Please don't select option "+index+"!";
       }      
       changeAppearance(obj,"white","red");
       if (errMsg=="") {
          obj.focus();
       }                                                        
       errMsg+=strError+"\n";                                
   }
   return ret;
}

function TestSelectOneRadio(obj,strError) {
   ret=false;
   for (var i=0;i<obj.length;i++) {
      if (obj[i].checked) {
         ret=true;
         break;
      }
   }
   if (!ret) {
      if (!strError||strError.length==0) {
         strError = "Please select one option from "+obj.name;
      }    
      errMsg+=strError+"\n";
   }
   return ret;
}

function changeAppearance(obj,fgcol,bgcol) {
   obj.style.backgroundColor=bgcol;
   obj.style.color=fgcol;
}


These functions are changed slightly and may have slighly different functions than you want. Usage is follows:

You can have those functions in an external js or on your page. On your page, also have this in the <head>:

<script language="javascript">
<!--

var addValidation = new Array;
addValidation[0]="name1,dontselect=0,Select list error message";
addValidation[1]="name2,req,inputbox error message";
addValidation[2]="name3,minlen=3,inputbox minimum length error message";

//-->
</script>

where you set the validations as such separated by comma.


Finally, in  your form tag, have this:

<form name="myform" onsubmit="return(Validator('myform'));">
Oops, I spent a few hours typing all of this and editing so it was a stale window, sorry
wow zyloch.. i don't want to spend all that time for nothing.. please answer my other post and i'll give you what you deserve.. definitely 500 isn't enough..