// v1.6
//    * Added support for hidden fields.
//    * Removed queuing option as it was propably quite useless.
//    * Removed !config tag as it was not langer needed
// v1.5
//    * Added 'deny' tag for fields. [deny]:-1:You cannot select -1
//    * Support for hidden form fields. 
// v1.4
//    * Added new form configuration tag [question].
//    * changed format for formtags to match that of normal field tags. Only difference is that
//      formtags require 2 parameters: [type]:value. For example: [queueerrors]:true or [question]:Are you sure?
// v1.3
//    * Fixed problems with masks. Masks still fail if field is empty. Optional/non-optional should be set with [required]
// v1.2
//    * Added new ruletype [confirm]. This type can confirm if the user is sure he or she wants to enter the specific value
// v1.1 
//    * Fixed textareas not working with script (forgot to add case-statement for textareas)
// v1.0
//    * First release

<!--
function Validate(strFormName)
{
   var objRegExp
   var arrFormParams
   var arrFormParam
   var arrRules
   var arrRule
   var strRuleType
   var strRuleValue
   var strName
   var strPrefix
   var strRules
   var strValue
   var strFormParamType
   var strFormParamValue
   var strFieldType
   var intFields
   var blnFieldFailed
   var blnSkipErrorMessage
   var blnFormFailed

   intFields = eval("document." + strFormName + ".length")
   blnFormFailed = false

   for (var i = 0; i < intFields; i++)
   {
      strName = eval("document." + strFormName + "[i].name")
      strRules = eval("document." + strFormName + "[i].value")
      strPrefix = strName.substring(0, 1)
      strName = strName.substring(1)
     
      if (strPrefix == "!")
      {      
         strFieldType = eval("document." + strFormName + "." + strName + ".type")          
         blnSkipErrorMessage = false
         arrRules = strRules.split(";")  

         switch (strFieldType)
         {
            case "text" : strValue = eval("document." + strFormName + "." + strName + ".value"); break
            case "textarea" : strValue = eval("document." + strFormName + "." + strName + ".value"); break
            case "password" : strValue = eval("document." + strFormName + "." + strName + ".value"); break
            case "radio" : strValue = eval("document." + strFormName + "." + strName + ".value"); break
            case "checkbox" : if (eval("document." + strFormName + "." + strName + ".checked") == true) { strValue = "true" } else { strValue = "" } ; break
            case "select-one" : strValue = eval("document." + strFormName + "." + strName + ".options[document." + strFormName + "." + strName + ".selectedIndex].value"); break
            case "hidden" : strValue = eval("document." + strFormName + "." + strName + ".value"); break
         }

         for (var j = 0; j < arrRules.length; j++)
         {
            arrRule = arrRules[j].split(":")
 
            strRuleType = arrRule[0]
            strRuleValue = arrRule[1]
            strRuleMessage = arrRule[2]   

            switch (strRuleType)
            {
               case "[min]" : if (strValue.length == 0) { break }; blnFieldFailed = (strValue.length < new Number(strRuleValue)); break                  
               case "[max]" : if (strValue.length == 0) { break }; blnFieldFailed = (strValue.length > new Number(strRuleValue)); break
               case "[mask]" : if (strValue.length == 0) { break }; objRegExp = new RegExp(strRuleValue, "ig"); blnFieldFailed = !(strValue.search(objRegExp) > -1); break
               case "[deny]" : if (strValue.length == 0) { break }; blnFieldFailed = CompareString(strValue, strRuleValue); break 
               case "[confirm]" : if (strValue == strRuleValue) { blnFieldFailed = !window.confirm(strRuleMessage); blnSkipErrorMessage = true } else { blnFieldFailed = false }; break
               case "[required]" : 
                  switch (strRuleValue)
                  {
                     case "no" : blnFieldFailed = false; break
                     case "yes" : blnFieldFailed = strValue.length == 0; break
                     case "ask" : if (strValue.length == 0) { blnFieldFailed = !window.confirm(strRuleMessage); blnSkipErrorMessage = true }; break
                  }
                  break                   
               default : blnFieldFailed = false; break
            }

            if (blnFieldFailed == true) { break }
         }   
         
         if (blnFieldFailed == true)
         {
            if (blnSkipErrorMessage == false) { alert(strRuleMessage) } 
               
            if (strFieldType !== "hidden") { eval("document." + strFormName + "." + strName + ".focus();") }
            return false
         }   
      }
   }
   
   if (blnFormFailed == false) { return true } else { return false }
}   
//-->
