
/***********************************************************************/
//  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(FormContainorClass, RequiredClass, IDsubstring, startID) {
	  var email = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
	  var typetext = /[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 = null;
    var StartElementID = startID||'';
	  var myFormArray = document.getElementsByClassName(FormContainorClass);
	  if (myFormArray.length > 0)
	    myForm = myFormArray[0];
	  else {
	    alert("Form containor not found!");
	    return false;
	  }
    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;
        }
      }
    }
    
    for(var l = 0;l < TextareaElements.length;l++) { 
      var ElementName = TextareaElements[l].id.substr(TextareaElements[l].id.search(RegExpID) + IDsubstring.length); 
      if(hasClass(TextareaElements[l], RequiredClass)) {            
        if (!typetext.test(TextareaElements[l].value)) {
          invalid_string += "Invalid " + ElementName.replace(/_/g," ") + " -- text fields must start with a letter.\n";      
          if (form_focus == null)
            form_focus = TextareaElements[l];
        }
	    }
    }
    
    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();
      }
    }
  }

