//universal form pre-submission sniffer
//specs: a hidden field exists for each type of form check, and the form field should be listed in the value field, seperated by commas
// hidden field names : required, email, zip, or TBA
//coded by dan netzer
//additional code by greg doolittle

function agree_check(s_agree) {
	if (s_agree.checked == true) {
		return true;
	} else {
		return false;
	}
}

function number_check(s_number) {
	pattern = /[0-9]+/;
	if (pattern.test(s_number)) {
		return false;
	} else {
		return true;
	}
}


function email_check(e_mail) {
	if ((e_mail == "" || e_mail.indexOf('@', 0) == -1) || e_mail.indexOf('.') == -1) {
        return false ;
    } else {
        return true ;
    }
}


function zip_check(e_mail) {
    if ((e_mail == "" || e_mail.indexOf('@', 0) == -1) || e_mail.indexOf('.') == -1) {
        return false ;
    } else {
        return true ;
    }
}


function check_form_universal() {
    var other_statements = "" ;
    var missing_fields = ""
    var form_name = document.web20 ;
    var sniff_check = 1 ;
    var s_required = form_name._required.value.split(',') ;
    var s_email = form_name._email.value.split(',') ;
        for( i=0 ; i < s_required.length ; i ++) {
            for( j=0 ; j < form_name.elements.length ; j ++) {
                if(form_name.elements[j].name == s_required[i]) {
                    if(form_name.elements[j].value == "" || form_name.elements[j].value == "  "){
                        sniff_check = 0 ;
                        missing_fields += "\t"+ form_name.elements[j].name + "\n" ;
                    }
                }
           }
        }
		for( i=0 ; i < s_email.length ; i ++) {
			for( j=0 ; j < form_name.elements.length ; j ++) {
				if(form_name.elements[j].name == s_email[i]) {
					var confirmed = email_check(form_name.elements[j].value) ;
						if(confirmed == false){
							sniff_check = 0 ;
							other_statements += "- Your e-mail address isn't formatted correctly.\nPlease use the format: name@company.com\n\n" ;
						}
				}
		   }
        }

	    var s_agree = form_name.agree;
		var confirmed = agree_check(s_agree);
		if(confirmed == false) {
			sniff_check = 0 ;
			other_statements += "- Please read the Terms and Conditions and click the checkbox to indicate that you have read, understand, and agree to them.\n" ;
		}
				
	/*	
		var s_number = form_name.numberofpeople.value;
		var confirmed = number_check(s_number);
		if(confirmed == false) {
			sniff_check = 0 ;
			other_statements += "- Please make sure the \"Number of People\" form field contains only digits.\n" ;
		}
		*/



	 if(sniff_check == 1){
		return true ;
	 } else {
        var error_statement = "________________________________________________________\n\n" ;
        error_statement += "This form was not submitted because of the following error(s).\n" ;
        error_statement += "Please correct these error(s) and re-submit.\n" ;
        error_statement += "________________________________________________________\n\n" ;
            if (missing_fields){
                error_statement += "- The following required field(s) are empty:\n" ;
                error_statement += missing_fields	 + "\n" ;
            }
		error_statement += other_statements ;
		alert(error_statement) ;
		return false;
     }
}

function maxCharacters(form_field) {
     if(form_field.value.length>=375) {
          alert('Company descriptions in excess of 50 words may be subject to editing by Web 2.0 Expo team without review.');
          return false;
     } else {
          return true;
     }	
}