function message1(formfield) {
   alert('The ' + formfield.requiredname + ' Field is Required.\nPlease supply the required information and try again.');
   formfield.focus();
   formfield.select();
}
function message2(formfield) {
   alert('Please enter a valid ' + formfield.requiredname + '.');
   formfield.focus();
   formfield.select();
}
function message3(formfield1,formfield2) {
   alert('The ' + formfield1.requiredname + ' Field and the ' + formfield2.requiredname + ' Field do not Match.\nPlease correct the problem and try again.');
   formfield1.focus();
   formfield1.select();
}
function message4(formfield) {
   alert('The ' + formfield.requiredname + ' Field is Required.\nPlease select a value.');
   formfield.focus();
}
function verifyemail(verifyfield) {
   var verifyvalue=verifyfield.value;
   var verifyfilter=/^.+@.+\..{2,6}$/;
   if (verifyfilter.test(verifyvalue)) {
      return 1;
   } else {
      return 0;
   }
}
function verifylength(verifyfield) {
   var verifyvalue=verifyfield.value;
   if(verifyfield.condition == "nospace") { verifyvalue = verifyvalue.replace(/ /g,''); }
   var verifyvaluelength=verifyvalue.length;
   var verifylength=verifyfield.vlength;
   if (verifyvaluelength == verifylength) {
      return 1;
   } else {
      return 0;
   }
}
function verifynumlength(verifyfield) {
   var verifyvalue=verifyfield.value;
   var sval=stripChar(verifyvalue);
   var verifyvaluelength=sval.length;
   var verifylength=verifyfield.numlength;
   if (verifyvaluelength == verifylength) {
      return 1;
   } else {
      return 0;
   }
}
function verifyphone(verifyfield) {
   var verifyvalue=verifyfield.value;
   var sval=stripChar(verifyvalue);
   if(sval.length == 10){
      var newvalue=reformat(sval, "(", 3, ") ", 3, "-", 4);
      newvalue=reformat(sval, "", 3, "", 3, "", 4);
      verifyfield.value=newvalue;
      return 1;
   } else {
      return 0;
   }
}
function verifydate(verifyfield) {
   var verifyvalue=verifyfield.value;
   var formats = 'Accepted Formats:\nMM/DD/YY\nMM-DD-YY\nMM/DD/YYYY\nMM-DD-YYYY';
   var pattern = /^(1[0-2]|0?[1-9])[\/\-](0?[1-9]|[12][0-9]|3[01])[\/\-]([0-9]{2}|[0-9]{4})$/;
   if (pattern.test(verifyvalue)) {}
   else {
      alert("Please input a valid date.\n" + formats);
      verifyfield.focus();
      verifyfield.select();
      return 0;
   }
   return 1;
}
function verifyform(myform) {
   var l = myform.elements.length;
   for (i=0;i<l;i++) {
      if(myform.elements[i].required=="yes") {
         if(myform.elements[i].type=="text") {
            if(((myform.elements[i].minlength!="") && (myform.elements[i].value.length < myform.elements[i].minlength)) || (myform.elements[i].value.length < 1)) {
               message1(myform.elements[i]);
               return false;
            }
            if(myform.elements[i].verify=="confirm") {
               if(myform[myform.elements[i].confirmfield].value != myform.elements[i].value) {
                  message3(myform.elements[i], myform[myform.elements[i].confirmfield]);
                  return false;
               }
            }
            if((myform.elements[i].verify=="email") && (verifyemail(myform.elements[i]) == 0)) {
               message2(myform.elements[i]);
               return false;
            }
            if((myform.elements[i].verify=="date") && (verifydate(myform.elements[i]) == 0)) {
               return false;
            }
            if((myform.elements[i].verify=="vlength") && (verifylength(myform.elements[i]) == 0)) {
               message2(myform.elements[i]);
               return false;
            }
            if((myform.elements[i].verify=="numlength") && (verifynumlength(myform.elements[i]) == 0)) {
               message2(myform.elements[i]);
               return false;
            }
            if((myform.elements[i].verify=="phone") && (verifyphone(myform.elements[i]) == 0)) {
               message2(myform.elements[i]);
               return false;
            }
         } else if(myform.elements[i].type=="password") {
            if((((myform.elements[i].minlength!="") && (myform.elements[i].value.length < myform.elements[i].minlength)) || (myform.elements[i].value.length < 1)) && myform.elements[i].verify!="confirm") {
               message1(myform.elements[i]);
               return false;
            }
            if(myform.elements[i].verify=="confirm") {
               if(myform[myform.elements[i].confirmfield].value != "" && myform[myform.elements[i].confirmfield].value != myform.elements[i].value) {
                  message3(myform.elements[i], myform[myform.elements[i].confirmfield]);
                  return false;
               }
            }
         } else if(myform.elements[i].type=="textarea") {
            if(((myform.elements[i].minlength!="") && (myform.elements[i].value.length < myform.elements[i].minlength)) || (myform.elements[i].value.length < 1)) {
               message1(myform.elements[i]);
               return false;
            }
         } else if(myform.elements[i].type=="select-one") {
            if(myform.elements[i][myform.elements[i].selectedIndex].invalid=="yes") {
               message4(myform.elements[i]);
               return false;
            }
         }
      } else if(myform.elements[i].required=="if") {
         if((myform.elements[i].type=="text") && (myform.elements[i].value.length > 0)) {
            if((myform.elements[i].verify=="date") && (verifydate(myform.elements[i]) == 0)) {
               return false;
            }
         }
      }
   }
   return true;
}
function stripChar(s){
   var digits = ".0123456789";
   var i;
   var returnString = '';
   for (i = 0; i < s.length; i++){   
      var c = s.charAt(i);
      if (digits.indexOf(c) > 0){returnString += c;}
   }
   return returnString;
}
function reformat (s){
   var arg;
   var sPos = 0;
   var resultString = "";
   for (var i = 1; i < reformat.arguments.length; i++) {
      arg = reformat.arguments[i];
      if (i % 2 == 1){ resultString += arg;}
      else {
         resultString += s.substring(sPos, sPos + arg);
         sPos += arg;
      }
   }
   return resultString;
}
