
 // ############################################################################################### trim()
 function trim(txt)
  {
   var pattern = /^\s+|\s+$/g
   return txt.replace(pattern, '');
  }

 // ############################################################################################### chgmsg()
 function chgmsg(id, type, str)
  {
   var msgid = id+'_msg';

   if (document.getElementById(msgid))
     {var obj = document.getElementById(msgid);}
   else if (document.getElementsByName(msgid))
     {var obj = document.getElementsByName(msgid);}
   else
     {return;}

   var pattern = /^\s*$/
   if (pattern.test(str))
     {var msgtxt = String.fromCharCode(160);}
   else
     {var msgtxt = str;}

   obj.value = msgtxt;  
   obj.className = type;
  }

 // ############################################################################################### validEXIST()
 function validEXIST(id, req)
  {
   if (!document.getElementById) {return true;}
   
   var obj = document.getElementById(id);
   var pattern = /^\s*$/
   if (pattern.test(obj.value))
     {
      if (req == true)
        {
         chgmsg(id, "warn", "This field is Required!");
         return false;
        }
      else
        {
         chgmsg(id, "hidden", "");
         return true;  
        }
     }

   chgmsg(id, "hidden", "");
   return 2;
  }

 // ############################################################################################### validSTRING()
 function validSTRING(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([a-zA-Z0-9\&\-\/\ \~\`\!\@\#\$\%\^\&\*\\\\(\)\_\+\=\{\}\[\]\|\/\?\,\.\;\:\'\"\<\>]*)$/i
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid entry!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Unusual entry, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validEMAIL()
 function validEMAIL(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^[^@]+@[^@.]+\.[^@]*\w\w$/
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid e-mail address!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Unusual e-mail address, may be incorrect.");
          return 'warn';  
         }
      }

    var irr_pattern = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/
    if (!irr_pattern.test(obj.value))
      {chgmsg(id, "msg", "Unusual e-mail address, may be incorrect.");}

    return true;
   }

 // ############################################################################################### validSEARCH()
 function validSEARCH(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([a-zA-Z0-9\&\-\/\ ]*)$|^([%]?([a-zA-Z0-9\&\-\/\ ])+)$/i
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid search criteria!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Unusual search criteria, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validALNUM()
 function validALPHA(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([a-zA-Z]*)$/i
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid entry!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Invalid entry, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validALNUMSP()
 function validALPHASP(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([a-zA-Z ]*)$/i
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid entry!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Invalid entry, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validALNUM()
 function validALNUM(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([a-zA-Z0-9]*)$/i
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid entry!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Invalid entry, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validALNUMSP()
 function validALNUMSP(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([a-zA-Z0-9 ]*)$/i
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid entry!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Invalid entry, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validLIST()
 function validLIST(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([a-zA-Z0-9 \,]*)$/i
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid list!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Invalid list, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validDATE()
 function validDATE(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);

    var mmddyyyy = /^(([0]?[1-9]|[1][0-2])[\/\-]([0]?[1-9]|[1-2][0-9]|[3][0-1])([\/\-][1-9][0-9]{3})?)$/
    var yyyymmdd = /^(([1-9][0-9]{3}[\/\-])?([0]?[1-9]|[1][0-2])[\/\-]([0]?[1-9]|[1-2][0-9]|[3][0-1]))?$/

    if (!mmddyyyy.test(obj.value))
      {
       if (!yyyymmdd.test(obj.value))
         {
          if (req == true)
            {
             chgmsg(id, "warn", "Invalid date!");
             return false;
            }
          else
            {
             chgmsg(id, "msg", "Invalid date, may be ignored.");
             return 'warn';  
         }  }
       else
         {
          chgmsg(id, "msg", "We ignore your kind here.");
          return 'warn';  
      }  }

    return true;
   }

 // ############################################################################################### validNUM()
 function validNUM(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([0-9]*)$/
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid number!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Invalid number, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validNUMSP()
 function validNUMSP(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([0-9 ]*)$/
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid number!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Invalid number, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validPRICE()
 function validPRICE(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^([/$]?[0-9]*[/.][0-9]{2})$|^([/$]?[0-9]*)$/
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid number!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Invalid number, may be ignored.");
          return 'warn';  
         }
      }

    return true;
   }


 // ############################################################################################### validPHONE()
 function validPHONE(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var pattern = /^((([1]?[ ]?[\- .]{1}[ ]?)?[\(]?([2-9]{1}[\d]{2})?[\)]?[\- .]{1})?([1-9]{1}[\d]{2})[ ]?[\- .]{1}[ ]?([\d]{4}))$/
    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid phone number!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Unusual phone number, may be incorrect.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validIP()
 function validIP(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var octet = '((1?[0-9]?[0-9])|(2[0-4][0-9])|(25[0-5]))';
    var pattern = /^((1?[0-9]?[0-9])|(2[0-4][0-9])|(25[0-5]))\.((1?[0-9]?[0-9])|(2[0-4][0-9])|(25[0-5]))\.((1?[0-9]?[0-9])|(2[0-4][0-9])|(25[0-5]))\.((1?[0-9]?[0-9])|(2[0-4][0-9])|(25[0-5]))$/

    if (!pattern.test(obj.value))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid IP address!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Unusual IP address, may be incorrect.");
          return 'warn';  
         }
      }

    return true;
   }

 // ############################################################################################### validAGE()
 function validAGE(id, req)
   {
    var exists = validEXIST(id, req);
    if (exists != 2) {return exists;}

    var obj = document.getElementById(id);
    var age = obj.value;

    var pattern = /^[0-9]{1,3}$/
    if (!pattern.test(age))
      {
       if (req == true)
         {
          chgmsg(id, "warn", "Invalid Age!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Unusual Age, may be incorrect.");
          return 'warn';  
         }
      }

    if (age >= 200)
      {
       if (req == true)
         {
          chgmsg(id, "warn", "I don't believe you, no one is that old!");
          return false;
         }
       else
         {
          chgmsg(id, "msg", "Are you sure you're that Old?");
          return 'warn';  
         }
      }

    if (age > 110) {chgmsg(id, "msg", "Are you sure you're that Old?");}
    if (age < 10)  {chgmsg(id, "msg", "A bit young for this, aren't you?");}

    return true;
   }