
/***********************************************************************/
//  Really Basic Form Validation
/***********************************************************************/
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

  FormIDsubstring = "MyMembershipID";
  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(myForm, RequiredClass, IDsubstring, startID) {
	  var email = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
	  var typetext = /[a-zA-Z0-9][a-zA-Z0-9'][a-zA-Z0-9']*/;
	  var typepassword = /[a-zA-Z0-9&!$@*]{6,10}/;
	  var typephone = /((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}/
	  var emailfield = /.*Email.*/;
	  var phonefield = /.*Phone.*/;
	  var invalid_string = "";
	  var form_focus = null;
	  var RegExpID = new RegExp(IDsubstring);
	  
    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 testSelect(mySelect, RequiredClass, idString, testString) {
	  if (mySelect.options[mySelect.selectedIndex].text == testString) {
      var ids = idString.split("-");            
      for(var j = 0;j < ids.length;j++) {                
	      var docElement = document.getElementById(ids[j].trim())
        if(docElement) { 
          if(!hasClass(docElement, RequiredClass)) {  
             docElement.className = docElement.className + " " + RequiredClass;
          }         
        }
      } 
	  }
	  else{
      var ids = idString.split("-");            
      for(var j = 0;j < ids.length;j++) {                
	      var docElement = document.getElementById(ids[j].trim())
        if(docElement) { 
          if(hasClass(docElement, RequiredClass)) {  
            var classes = docElement.className.split(" ");  
            var newclasslist = "";          
            for(var i = 0;i < classes.length;i++) {  
              if (classes[i] != RequiredClass)
                newclasslist = newclasslist + classes[i] + " ";         
            }
            docElement.className = newclasslist.trim();
          }         
        }
      } 
	  }
  }