/*
 * Purpose: Provide input validation and phone masking
 * 
 * Created: 2/3/2009
 * Last edited: 2/6/2009
 */
;(function($){
    var message = '', str = '',prettyPhone = '', phoneIndex='';
    var eles = {};
    var regPhone = /^\d{7}$|^\d{10}$/; 
    var regZipcode = /^\d{5}$/;
    var regNumeric = /^\d+$/;
    
    var isNumeric = function(ele){
        ele.value = ele.value.replace(/\D/g,'');
        return regNumeric.test(ele.value);    
    };
    var validPhone = function(ele){
        if(isNumeric(ele)){
            return regPhone.test(ele.value);
        }
        return false;
    };
    var validName = function(ele){
        ele.value = ele.value.replace(/\s/g,''); 
        return (ele.value.length > 0);
    };
    var validZipcode = function(ele){
        if(isNumeric(ele)){
            return regZipcode.test(ele.value);
        }
        return false;
    };

    var validate = function(){
			message = '';
			eles = this.elements;
			for (var i = 0; eles[i]; i++) {
				switch (eles[i].id) {
					case 'submit':
						eles[i].disabled = true;
						submitIndex = i;
						break;
					case 'first_name':
						if (!validName(eles[i])) {
							message += "Please enter your First name.\n";
						}
						break;
					case 'last_name':
						if (!validName(eles[i])) {
							message += "Please enter your Last name.\n";
						}
						break;
					case 'business_name':
						if (!validName(eles[i])) {
							message += "Please enter your Business name.\n";
						}
						break;
					case 'phone':
						prettyPhone = eles[i].value;
						phoneIndex = i;
						if (!validPhone(eles[i])) {
							message += "Please enter your phone number.\n";
						}
						break;
					case 'email':
						if (!validName(eles[i])) {
							message += "Please enter your Email address.\n";
						}
						break;
				}
			};
			if (message.length > 0) {
				eles[phoneIndex].value = prettyPhone; //Validation failed put pretty version back in.
				alert(message);
				if (typeof submitIndex != 'undefined') {
					eles[submitIndex].disabled = false;
				}
			}
			return (message.length === 0);
			
		};
    window.onload = function(){
        //pointer to our form
        var formPtr = document.forms[0]; 
        formPtr.onsubmit = validate;
        $("input[name=phone]",formPtr).mask("(999) 999-9999");
    };
})(jQuery);  