// JavaScript Document

function validate(form){
	var errcode=0;
	var errmsg = new Array();
	var outmsg = "";
	var icount=0;
	var remail = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
	var rezip = /(^\d{5}$)|(^\d{5}-\d{4}$)/

		for (var i=form.elements.length-1;i>=0;i--){
		//check if required
		if (form.elements[i].id.substr(0,1) == "r"){
			var field = form.elements[i]
			switch (form.elements[i].id.substr(1,1)){
				//text field content
				case "t":	{
					//reset label
					getLabel(field).className="";
					//check for value
					if (field.value.length == 0){
						errcode += processField(field);
						labeltext=getLabel(form.elements[i]).innerHTML.split("<");
						errmsg[errmsg.length] = "The '" + labeltext[0] + "'field is empty";
					}
					break
				}
				//zip validation
				case "z": {
					//reset label
					getLabel(field).className="";
					if (! field.value.match(rezip)){
						errcode += processField(field);
						errmsg[errmsg.length] = "The '" + form.elements[i].name + "' field is invalid";
					}
					break
				}
				//email validation
				case "e": {
					//reset label
					getLabel(field).className="";
					if (! field.value.match(remail)){
						errcode += processField(field);
						errmsg[errmsg.length] = "The '" + form.elements[i].name + "' field is invalid";
					}
					break
				}
				//phone validation
				case "p": {
					//reset label
					getLabel(field).className="";
					//if (field.value.search(/\d{3}\-\d{3}\-\d{4}/)==-1){
					subfield=form.elements[i].id.substr(8,1)
					if ((subfield=='0'||subfield=='1')&&field.value.length != 3){
						if(subfield=='0') fieldname='Area Code';
						else fieldname='Prefix';
						errcode += processField(field);
						errmsg[errmsg.length] = "The '" + fieldname + "' field is invalid.\r\n";
					}else if(subfield=='2'&& field.value.length != 4){
						fieldname='Phone';
						errcode += processField(field);
						errmsg[errmsg.length] = "The '" + fieldname + "' field is invalid.\r\n";
					}
					break
					
				}
				//option selected
				case "s": {
					//reset label
					if(getLabel(field))
						getLabel(field).className="";
					if (field.selectedIndex == 0){
						getLabel(field);
						errcode += processField(field);
						str=form.elements[i].name
						errmsg[errmsg.length] = "The '" + str.replace(/_/g," ") + "' field requires a selection";
					}
					break
				}
				//gender radio selected
				case "c": {
					if (!form.elements[i].checked){
						errcode += 1;
						errmsg[errmsg.length] = "You must agree to the terms and conditions";
					}
					break
				}
				//make sure at least one, and less than 6 interests are selected
				case "i": {
					if (icount == 0 || icount > 3){
						errcode += 1;
						document.getElementById('interesttbl').className="error";
						if (icount == 0) errmsg[errmsg.length] = "You must select three 'Fields of Interest'";
						if (icount > 3) errmsg[errmsg.length] = "You have selected " +  (icount-3) + " too many 'Fields of Interest'";
					}
					break
				}
			}
		//check and build interest list into hidden field
		}else if (form.elements[i].id.substr(0,1) == "i"){
			if (form.elements[i].checked) {
				if(icount>0) form.ri_ilist.value += "|"
				sellabel=getLabel(form.elements[i]).innerHTML
				if (sellabel == "Other"){
					if (form.tt_other.value.length == 0){
						errcode += 1;
						form.tt_other.focus();
						document.getElementById('interesttbl').className="error";
						errmsg[errmsg.length] = "Please enter a field of interest for your selection 'Other'";
					}else{
						sellabel += " - " + form.tt_other.value
					}
				}
				form.ri_ilist.value += sellabel;
				icount++;
			}
		}
	}

//  	if (form.elements['Area_Of_Interest1'].value==form.elements['Area_Of_Interest2'].value||form.elements['Area_Of_Interest1'].value==form.elements['Area_Of_Interest3'].value||form.elements['Area_Of_Interest3'].value==form.elements['Area_Of_Interest2'].value){
//  		errcode += 1;
//  		errmsg[errmsg.length] = "Please select different fields of interest";
//  	}

	if (errcode>0){
		outmsg = "Please correct the following errors before submitting:\n\r\n\r";
		for (i=errmsg.length-1;i>=0;i--){
			outmsg += "\t" + errmsg[i] + "\n\r";
		}
		alert(outmsg);
		return(false);
	}else{
		return(true);
	}
}

function processField(field){
	getLabel(field).className="error";
	field.focus();
	return(1)
}

function getLabel(field){
	var label
	var labels = document.getElementsByTagName('label');
	for(var i=0; i<labels.length; i++) {
		if(labels[i].getAttribute('htmlfor') == field.id || 
			labels[i].getAttribute('for') == field.id) {
				label = labels[i];
			break;		
		}
	}
	if(label)
		return label;
	else
		return false;
}