/* ValidateThis!
 * A generic form validator, based on classname. 
 * http://code.google.com/p/validatethis/
 * Version 2008.10.24
 * Currently Implements:                                       
 *   vt_req                                     
 *   vt_date                                     
 *   vt_real                                     
 *   vt_phone                                    
 *   vt_email         
 *   vt_nospaces                                 
 */

function validateThis(form) {
    var isValid = true;
	var formsArray = new Array();
	if (form) 
	    formsArray[0] = document.forms[form];
	else
	    formsArray = document.getElementsByTagName("FORM");
		
    for (f=0; f<formsArray.length; f++)
		theForm = formsArray[f];
	
	    for (i=0; i < (theForm.elements.length); i++) {
	    	 
            theForm.elements[i].style.borderStyle='';
            theForm.elements[i].style.borderColor='';
            theForm.elements[i].parentNode.style.color='';
            theForm.elements[i].parentNode.style.fontWeight='normal';
            
            if (theForm.elements[i].tagName == "INPUT" || theForm.elements[i].tagName == "TEXTAREA") {   
                if (theForm.elements[i].type == "text" || theForm.elements[i].type == "password" || theForm.elements[i].type == "textarea") {

                    if (theForm.elements[i].className.match(/vt_req/) && (isValid == true)) { 
                        if (theForm.elements[i].value == "") {
                            isValid = badInputHandler(theForm.elements[i]);                          
                        }
                    }        
                    if (theForm.elements[i].className.match(/vt_real/) && (isValid == true)) { 
                        if (!validateReal(theForm.elements[i].value)) {
                            isValid = badInputHandler2(theForm.elements[i]);
                        }
                    } else if (theForm.elements[i].className.match(/vt_date/) && (isValid == true)) { 
                        if (!validateDate(theForm.elements[i])) {
                            isValid = badInputHandler2(theForm.elements[i]);
                        }
                    } else if (theForm.elements[i].className.match(/vt_phone/) && (isValid == true)) { 
                        if (!validatePhone(theForm.elements[i])) {
                            isValid = badInputHandler2(theForm.elements[i]);                 
                        }
                    } else if (theForm.elements[i].className.match(/vt_nospaces/) && (isValid == true)) { 
                        if (!validateNoSpaces(theForm.elements[i])) {
                            isValid = badInputHandler2(theForm.elements[i]);                 
                        }
                                             
                    } else if (theForm.elements[i].className.match(/vt_email/) && (isValid == true)) { 
                        if (!validateEmail(theForm.elements[i])) {
                            isValid = badInputHandler2(theForm.elements[i]);
                    }
                }
            }
           
            if (isValid && theForm.elements[i].type == "checkbox") {
            	
            	if (theForm.elements[i].className.match(/vt_req/)) {
	                if (!theForm.elements[i].checked) {
	                	isValid = badInputHandler(theForm.elements[i]);
	                }	
            	}
            
            }
                              
            if (isValid && theForm.elements[i].type == "radio") {            	
                if (theForm.elements[i].className.match(/vt_req/)) {                	
                  var currRadioName = theForm.elements[i].name;
                  var isChecked = false;
                                    
                  while (theForm.elements[i].type == "radio" && currRadioName == theForm.elements[i].name){                  
                	  if (theForm.elements[i].checked && !isChecked) {
                    	isChecked = true;  
                      }
                    i++
                  }
				                    
                  if (!isChecked) {
                	  isValid = badInputHandler(theForm.elements[i-1]);
                  }	                    
                  i--;                  
                }               
            }    
	    }     
            
        if (isValid && theForm.elements[i].tagName == "SELECT") {
        	
            var sel = theForm.elements[i];
            
            if (theForm.elements[i].className.match(/vt_req/)) {
            	if (sel.value=="") {
            		isValid = badInputHandler(theForm.elements[i]);
            	}	
            }
            //getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
        }
    } 
    return isValid;
}

function badInputHandler2(input) {
    input.style.borderStyle='solid';
    input.style.borderColor='#BE2F21';
    input.focus();
    return false;
}

function badInputHandler(input) {	
	if (input.type == "radio" || input.type == "checkbox") {
      input.parentNode.style.color='#BE2F21';
	  input.parentNode.style.fontWeight='bold'; 
	  	} else {
	  input.style.borderStyle='solid';
	  input.style.borderColor='#BE2F21';
	}
	
    input.focus();
    
    var str1 = "";
    
    if (input.title !=null && input.title > " ") {
    	str1 = input.title
    } else {
    	str1 = input.name 
    }
    
    if (input.tagName == "SELECT" || input.type == "radio" || input.type == "checkbox"){
      alert("Please select a " + str1)	
    } else {
      alert("Please fill in the " + str1 + " field." )
    }
    
    return false;
}

function validateReal (strng) {
  var error = "";
  if (!strng.match(/^[\d]*[/.]{0,1}\d{0,2}$/)) {
    alert(strng + " is not a valid number.\n Please do not include spaces.");
    return false;
  }
  return true;
}

function validateDate (obj) {
  if (!obj.value == "") {
    if (!obj.value.match(/^[0-1]\d[\/][0-3]\d[\/](19|20)\d\d$/)) {
      if ( (obj.title == "") || (obj.title == null) ) {
        alert("Please enter a date using the mm/dd/yyyy format.");
      } else {
        alert("Please enter a valid " + obj.title + " using the mm/dd/yyyy format.");
      }
      return false;
    }
  }
  return true;

}

function validatePhone(obj) {
  var phone = obj.value;
  var numbersOnly = phone.replace(/[\(\)\.\-\ ]/g, '');
  if (phone != numbersOnly) {
    obj.value = numbersOnly;
  }
  if ((obj.value != "") && 
      !((obj.value.match(/^\d{11}$/) && obj.value.substr(0,1)=="1") ||
        (obj.value.match(/^\d{10}$/)) ||
        (obj.value.match(/^\d{7}$/)))) {
       if ( (obj.title == "") || (obj.title == null) ) {
         alert("Please enter a valid phone number.");
       } else {
       alert("The " + obj.title + " must contain a phone number.");
       }
       return false;
  }
  return true;
}

function validateEmail(obj) {
  if ((obj.value != "") && 
      (!obj.value.match(/^.+@.+\..{2,4}$/))) {
      if ( (obj.title == "") || (obj.title == null) ) {
        alert("Please enter a valid email address.");
      } else {
        alert("The " + obj.title + " must be a valid email address.");
      } 
      return false;
  }
  return true;
}

    function validateNoSpaces(obj) {
	  if ((obj.value != "") && 
		  (obj.value.indexOf(" ") > 0)) {
	      if ( (obj.title == "") || (obj.title == null) ) {
	        alert("Please enter a username without any spaces.");
	      } else {
	        alert("The " + obj.title + " cannot have spaces.");
	      } 
	      return false;
	  }
	  return true;
	}
