

/***********************************************************************/

//  Really Basic Form Validation

/***********************************************************************/

document.getElementsByType = function( tag, elementType, startnodeID ) {    

  var starttagID = startnodeID||'';

  var retVal = new Array();   

  var elements;

  

  if (starttagID) {

    starttag = document.getElementById(starttagID);   

    if (starttag)

      elements = starttag.getElementsByTagName(tag); 

    else

      return retVal;

  }

  else

    elements = document.getElementsByTagName(tag); 

         

  for(var i = 0;i < elements.length;i++) {  

   if(elements[i].type == elementType) { 

     retVal.push(elements[i]);

    }        

  }    

  return retVal;

};



  

document.getElementsByClassName = function( clsName, nodeName, startnodeID ) {    

  var tag = nodeName||'*';

  var starttagID = startnodeID||'';

  var retVal = new Array();   

  var starttag;

  var elements;

  if (starttagID) {

    starttag = document.getElementById(starttagID);   

    if (starttag)

      elements = starttag.getElementsByTagName(tag); 

    else

      return retVal;; 

  }

  else

    elements = document.getElementsByTagName(tag); 

  

  for(var i = 0;i < elements.length;i++) {  

   if(elements[i].className.indexOf(" ") >= 0) {            

      var classes = elements[i].className.split(" ");            

      for(var j = 0;j < classes.length;j++) {                

        if(elements[i].className.contains(clsName)) {                   

          retVal.push(elements[i]);

          break;

        }            

      }        

    }        

    else if(elements[i].className.contains(clsName)) {          

      retVal.push(elements[i]);    

    }

  }    

  return retVal;

};





  function hasClass(myNode, mycssClass) {



    if(myNode.className.indexOf(" ") >= 0) {

      var classes = myNode.className.split(" ");            

      for(var j = 0;j < classes.length;j++) {                

        if(classes[j] == mycssClass) { 

          return true; 

        }

      }

    }

    else {         

      if (myNode.className == mycssClass) {

          return true; 

      }    

    } 

    return false;              

  }





	function validateForm(myFormid, RequiredClass, IDsubstring, startID) {

	  var email = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;

	  var typetext = /[a-zA-Z][a-zA-Z'][a-zA-Z0-9']*/;

	  var typepassword = /[a-zA-Z0-9&!$@*]{6,10}/;

	  var typephone = /((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}/

	  var emailfield = /.*[Ee]mail.*/;

	  var phonefield = /.*[Pp]hone.*/;

	  var invalid_string = "";

	  var form_focus = null;

	  var RegExpID = new RegExp(IDsubstring);

	  var myForm = document.getElementById(myFormid);

    var StartElementID = startID||'';

	  

    var passwordElements = document.getElementsByType("input","password",StartElementID);

    var InputElements = myForm.getElementsByTagName("input");    

    var SelectElements = myForm.getElementsByTagName("select");    

    var TextareaElements = myForm.getElementsByTagName("textarea");    

          

    for(var i = 0;i < InputElements.length;i++) { 

      var ElementName = InputElements[i].id.substr(InputElements[i].id.search(RegExpID) + IDsubstring.length); 

      if(hasClass(InputElements[i], RequiredClass)) {            

        if (emailfield.test(ElementName)){

          if (!email.test(InputElements[i].value)) {

	          invalid_string += "You entered an invalid " + ElementName.replace(/.*_/g,"") + "\n";      

	          if (form_focus == null)

	            form_focus = InputElements[i];

	        }

	      }

	      else {

          if (phonefield.test(ElementName)){

            if (!typephone.test(InputElements[i].value)) {

	            invalid_string += "You entered an invalid " + ElementName.replace(/.*_/g,"") + "\n";      

	            if (form_focus == null)

	              form_focus = InputElements[i];

	          }

	        }

	        else {

            if ((InputElements[i].type == "text") && (!typetext.test(InputElements[i].value))) {

	            invalid_string += "Invalid " + ElementName.replace(/_/g," ") + " -- text fields must start with 2 letters.\n";      

	            if (form_focus == null)

	              form_focus = InputElements[i];

            }

            if ((InputElements[i].type == "password") && (!typepassword.test(InputElements[i].value))) {

	            invalid_string += "Invalid " + ElementName.replace(/_/g," ") + " -- passwords fields must contain 6-10 letters, numbers, or &!$@*\n";      

	            if (form_focus == null)

	              form_focus = InputElements[i];

            }

          }

	      }

      }

    }

    

    for(var j = 0;j < SelectElements.length;j++) { 

      if(hasClass(SelectElements[j], RequiredClass)) {            

        if (SelectElements[j].selectedIndex == 0) {

          var ElementName = SelectElements[j].id.substr(SelectElements[j].id.search(RegExpID) + IDsubstring.length); 

	        invalid_string += "You did not select an option for " + ElementName.replace(/_/g," ") + "\n";      

	        if (form_focus == null)

	          form_focus = SelectElements[j];

        }

      }

    }

    

    for(var k = 0;k < passwordElements.length;k++) { 

      if (k != 0) {

        if (passwordElements[k].value != passwordElements[k-1].value) {

          invalid_string += "Password and Confirmation Password were not the same\n";      

          if (form_focus == null) {

            form_focus = passwordElements[k-1];

          }

          break;

        }

      }

    }

    

    if (invalid_string != "") {

      alert(invalid_string);

      if (form_focus.focus())

        form_focus.focus();

      return false;

    }

    else {

      myForm.submit();

  //    alert("Form Submitted");

    }

  } 

  



  function addLoadEvent(func) {

    var oldonload = window.onload;

    if (typeof window.onload != 'function') {

      window.onload = func;

    } else {

      window.onload = function() {

        if (oldonload) {

          oldonload();

        }

        func();

      }

    }

  }

