function Validate(objForm) {
var arrValidated=new Array();
for (var i=0; i<objForm.elements.length; i++) {
var element=objForm.elements[i];
var elName=element.name;
if ((!elName)||(elName.length == 0)||(arrValidated[elName]))
continue;
arrValidated[elName] = true;
var validationType = element.getAttribute("validate");
if ((!validationType)||(validationType.length == 0))
continue;
var strMessages=element.getAttribute("msg");
if (!strMessages)
strMessages = "";
var arrMessages = strMessages.split("|");
var arrValidationTypes = validationType.split("|");  
for (var j=0; j<arrValidationTypes.length; j++) {
var curValidationType = arrValidationTypes[j];
var blnValid=true;
switch (curValidationType) {
case "not_empty":
blnValid = ValidateNotEmpty(element);
break;
case "integer":
blnValid = ValidateInteger(element);
break;
case "number":
blnValid = ValidateNumber(element);
break;
case "email":
blnValid = ValidateEmail(element);
break;
case "alphabet":
blnValid = ValidateAlphaBet(element);
break;
default:
try {
blnValid = eval(curValidationType+"(element)");
}
catch (ex) {
blnValid = true;
}
}
if (blnValid == false) {
var message="invalid value for "+element.name;
if ((j < arrMessages.length)&&(arrMessages[j].length > 0))
message = arrMessages[j];
InsertError(element, message);
if ((typeof element.focus == "function")||(element.focus)) {
element.focus();
}
return false;
}
else
ClearError(element);
}
}
return true;
}
function ValidateNotEmpty(objElement) {
var strValue = GetElementValue(objElement);
return (strValue.length > 0);
}
function ValidateInteger(objElement) {
var strValue = GetElementValue(objElement);
return (!isNaN(parseInt(strValue)));

      }

       

      function ValidateNumber(objElement) {

          var strValue = GetElementValue(objElement);

          return (!isNaN(parseFloat(strValue)));
 
      }

      function ValidateEmail(objElement) {
 
          var strValue = GetElementValue(objElement);
 
          if (strValue.length < 5)
 
              return false;

          var arrTemp=strValue.split("@");

          if (arrTemp.length != 2)

              return false;

          var strLeftPart = arrTemp[0];

          var strRightPart = arrTemp[1];

          if ((strLeftPart.length == 0)||(strRightPart.length == 0))

              return false;

          arrTemp = strRightPart.split(".");

          if (arrTemp.length < 2)

              return false;

          for (var i=0; i<arrTemp.length; i++) {

              if (arrTemp[i].length == 0)

                  return false;

          }

          return true;

      }

      function ValidateAlphaBet(objElement) {

          var strValue = GetElementValue(objElement);

         

          if (strValue.length == 0)
             return true;
   

          var strAllowOnly = objElement.getAttribute("allow_only");

          if (!strAllowOnly)

              strAllowOnly = "";

         

          if (strAllowOnly.length == 0)

              return true;

         

          var i=0;

          var arrAllowedChars=new Array();

          while (i < strAllowOnly.length) {

              if ((i < (strAllowOnly.length-2)) && (strAllowOnly.substr(i+1, 2) == "..")) {

                  for (var j=strAllowOnly.charCodeAt(i); j<=strAllowOnly.charCodeAt(i+3); j++) {

                      arrAllowedChars[arrAllowedChars.length] = String.fromCharCode(j);

                  }

                  i += (2*2);

                  continue;

              }
 
              arrAllowedChars[arrAllowedChars.length] = strAllowOnly.charAt(i)+"";

              i++;

          }

         

          for (var i=0; i<strValue.length; i++)

              if (InArray(arrAllowedChars, strValue.substr(i, 1)) < 0)

                  return false;

         

          return true;

      }

       

      function GetElementValue(objElement) {

          var result="";

          switch (objElement.type) {

              case "text":

              case "hidden":

              case "textarea":

              case "password":

                  result = objElement.value;

                  break;

              case "select-one":

              case "select":

                  if (objElement.selectedIndex >= 0)

                      result = objElement.options[objElement.selectedIndex].value;

                  break;

              case "radio":

              case "checkbox":

                  for (var i=0; i<objElement.form.elements.length; i++) {

                      if (objElement.form.elements[i].name == objElement.name) {

                          if (objElement.form.elements[i].checked)

                              result += objElement.form.elements[i].value+",";

                      }

                  }
                 break;

          }

          return result;

      }

       

      function InsertError(element, strMessage) {

          if ((element.form.getAttribute("show_alert")) && (element.form.getAttribute("show_alert") != "0")) {

              alert(strMessage);

              return;

          }

         

          var strSpanID = GetErrorContainerID(element);

          var objSpan = document.getElementById(strSpanID);

          if (!objSpan) {

              if ((element.type == "radio")||(element.type == "checkbox")) {

                  for (var i=0; i<element.form.elements.length; i++) {

                      if (element.form.elements[i].name == element.name) {

                          element = element.form.elements[i];

                      }

                  }

              }

              objSpan = document.createElement("span");

              objSpan.id = strSpanID;

              var nodeAfter=0;

              var nodeParent = element.parentNode;

              for (var i=0; i<nodeParent.childNodes.length; i++) {

                  if (nodeParent.childNodes[i] == element) {

                      if (i < (nodeParent.childNodes.length-1))

                          nodeAfter = nodeParent.childNodes[i+1];

                      break;

                  }

              }

              if ((!nodeAfter)&&(nodeParent.parentNode)) {

                  nodeParent = nodeParent.parentNode;

                  for (var i=0; i<nodeParent.childNodes.length; i++) {

                      if (nodeParent.childNodes[i] == element.parentNode) {

                          if (i < (nodeParent.childNodes.length-1))

                              nodeAfter = nodeParent.childNodes[i+1];

                          break;
 
                      }
 
                  }
 
              }
 
              if (nodeAfter)
 
                  nodeParent.insertBefore(objSpan, nodeAfter);
 
              else
 
                  document.body.appendChild(objSpan);

          }
 
          if (objSpan.className.length == 0)

              objSpan.className = "validation_error";

          objSpan.innerHTML = strMessage;

      }
  

      function ClearError(element) {

          var strSpanID = GetErrorContainerID(element);

          var objSpan = document.getElementById(strSpanID);

          if (objSpan) {

              objSpan.innerHTML = "";
     }

      }

       

      function GetErrorContainerID(element) {

          var strSpanID = element.getAttribute("error_container");

          if (!strSpanID || strSpanID.length == 0) {

              strSpanID = element.name+"_val_error";

          }

          return strSpanID;
 }

       

      function InArray(arr, key) {

          for (var i=0; i<arr.length; i++) {

              if (arr[i] == key) {
                  return i;

              }

          }

          return -1;

      } 