/*HTMLElement.prototype.hasClass = function(className){ //add hasClass boolean method to all HTML Elements
  return ( this.className && this.className.match( new RegExp( "\\b"+className+"\\b" ) ) ) ? true : false;
};*/

function getElementsByClassName(node, classname)
{
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++){
        if(re.test(els[i].className)){a.push(els[i]);}}
    return a;
}

var Names = new Object();
Names.FIRST_NAME = 'First Name';
Names.LAST_NAME = 'Last Name';
Names.MYSENDFROMEMAILADDRESS = 'E-mail Address';
Names.Address1 = 'Address';
Names.City = 'Town / City';
Names.State = 'State';
Names.Zip = 'Postal / Zip Code';
Names.Phone = 'Phone';
Names.MeetingName = 'Meeting Name';
Names.TotalAttendees = "Total Attendees";
Names.ArrivalDateA = "Arrival Date";
Names.DepartureDateA = "Departure Date";
Names.GeneralSessionPeople = "Number of People";
Names.GeneralStartDateA = "Start Date";
Names.GeneralEndDateA = "End Date";
Names.GeneralSetup = "Setup Type";

var possibleForms = ['rfpForm'];

function determineFormID(){
	for (var i;i<possibleForms.length;i++){ 
		if(document.getElementById(possibleForms[i])){
			return possibleForms[i];
		}
	}
	return false;
}
function determineRequiredFields(formID){
	var requiredFields = getElementsByClassName(document, 'required'); 
	return requiredFields;
}
function determineUnfilledFields(requiredFields){
	var unfilledFields = [];
	for (var i=0;i<requiredFields.length;i++){
		if (requiredFields[i].value == ''){
			unfilledFields[unfilledFields.length] = requiredFields[i].name;
		}
	}
	if(unfilledFields.length > 0){
		for (var j=0;j<unfilledFields.length;j++){
			unfilledFields[j] = Names[unfilledFields[j]];
		}
		return(unfilledFields);
	}
	else { return false; }
}
function report(unfilledFields){
	if(unfilledFields.length){
		var reportOutput = "Please fill in the following field";
			if (unfilledFields.length == 1){ 
				reportOutput += ": " + unfilledFields[0] + ".";
			}
			else {
				reportOutput += "s: ";
				for (var i=0;i<unfilledFields.length;i++){
					if (i==unfilledFields.length-1){ 
						reportOutput += "and " + unfilledFields[i];
					}
					else { reportOutput += unfilledFields[i] + ", "; }
				}
			}
		alert(reportOutput);
		return false;
	}
	else { return true; }
}
function checkValidEmail(myForm){
	var emailSwitch = true;
	if (document.getElementById('MYSENDFROMEMAILADDRESS')){ 
		var email = document.getElementById('MYSENDFROMEMAILADDRESS').value; 
		emailSwitch = checkEmail(email);
	}
	if (emailSwitch == true) return true;
	else return false;
}
function checkEmail(email){
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email)){
		return true;
	}
	else {
		alert('You have entered an invalid email address.');
		return false;
	}
}
function validate(){
	var myForm = determineFormID();
	var requiredFields = determineRequiredFields(myForm);
	var unfilledFields = determineUnfilledFields(requiredFields);
	if (report(unfilledFields) == false) { 
		return false;
	}
	else return checkValidEmail();
}