//Javascript for client side testing of mail forms
//Ondrej Pokluda   Jan 2006
//         v. 1.1. Mar 2006
//         v. 1.2. Mar 2006
//         v. 1.3. Apr 2006
//this is not the best regexp for email address, but good enough for now
var email_regexp = new RegExp("^[^@]+@[^.]+\..+$");

//this should be OK
var MID_regexp= new RegExp("([\\da-fA-F]{2}\\.){5}[\\da-fA-F]{2}");

var key_required = [["last_name","Last Name"], 
							  ["email"    ,"Email"],      
							  ["MID"      ,"Computer MID"]
							 ];

var key_regexps = [["email", email_regexp, "Incorrect email"],
							 ["MID"  ,   MID_regexp, "MID must be in form xx.xx.xx.xx.xx.xx"]];

//

var info_required = [["last_name","Last Name"], 
							  ["email"    ,"Email"]      
							 ];

var info_regexps = [["email", email_regexp, "Incorrect email"]
								];

var info_oneof = ["Extrusion_Simulation", 
									"Short_Courses", 
									"Thermoforming", 
									"Blow_Molding", 
									"Injection_Molding"
								];

//
var support_required = [["name","Name"], 
							  ["product"    ,"Subject"],      
							  ["email"      ,"Email"]
							 ];

var support_regexps = [["email", email_regexp, "Incorrect email"]];


var application_required = [["name","Name"], 
							  ["interest"    ,"Interest"],      
							  ["email"      ,"Email"]
							 ];

var application_regexps = [["email", email_regexp, "Incorrect email"]];
//

function check_element_empty(element,element_name) {
  	if (element.value == "") {
	 		alert(element_name + " required");
			element.focus();
  		return true;
		}
  return false;
}

function check_element_regexp(element,regexp,element_name) {
	if (! regexp.test(element.value)) {
		alert(element_name);
		element.focus();
	  return false;
	}	
	return true;
}

function check_local(form,required,regexps,oneof)
{
	var retval = false;
	for (i=0;i<required.length;i++) {
  	if (check_element_empty(form.elements[required[i][0]],
														required[i][1] )) {
  		return false;
		}
	}
  for (i=0;i<regexps.length;i++) {
		if (!check_element_regexp(form.elements[regexps[i][0]],
															regexps[i][1],
															regexps[i][2]))
			return false;
	 }
	if (oneof) {
		retval = false;
		for (i=0; i<oneof.length;i++) {
		if (form.elements[oneof[i]].checked) {
			retval = true;
			break;
			}
		} 
		if (! retval) {
			var element;
			element = form.elements[oneof[0]];
	 		alert("Check at least one option required");
			element.focus();
			return false;
		}
	}
	return true;
}

function check(form)
{
	return check_local(form,key_required,key_regexps,null);
}

function check_info(form)
{
	return check_local(form,info_required,info_regexps,info_oneof);
}

function check_support(form)
{
	return check_local(form,support_required,support_regexps,null);
}

function check_application(form)
{
	return check_local(form,application_required,application_regexps,null);
}
