// Contains functionality to validate form input.

function trim(string_input) {
// Removes excess whitespace from beginning and end of a string, just like php's trim() function.

	return string_input.replace(/^\s+|\s+$/g, '');
};

function validate(formid) {
// Validates the user's form input against given required (and some optional) fields.	
	
	var fields = new Object();
	var failed = false;
	
	fields['namewarn'] = $('#name_warn');
	fields['phonewarn'] = $('#phone_warn');
	fields['subjectwarn'] = $('#subject_warn');
		
	var namebox = $("#cl_name");
	var phonebox = $("#cl_phone");
	var subjectbox = $("#cl_subject");
	
	// Reset the error markers to empty.
	namebox.css('border', "1px solid #000");
	phonebox.css('border', "1px solid #000");
	subjectbox.css('border', "1px solid #000");
		
	for (key in fields) {
		fields[key].attr('display', "none");
		fields[key].html("");
	}
		
// ======== Name field =================================
	if (trim(namebox.val()) == "") {
		fields['namewarn'].html("Please input your name.");
		fields['namewarn'].css('display', "block");
		namebox.css('border', "2px solid #ff0000");
		namebox.focus();
		
		failed = true;
	}

// ======== Subject field ======================
	if (trim(subjectbox.val()) == "") {
		fields['subjectwarn'].html("Please input a subject.");
		fields['subjectwarn'].css('display', "block");
		subjectbox.css('border', "2px solid #ff0000");
		
		failed = true;
	}

// ======== Phone field detection ===============
	if (trim(phonebox.val()) == "") {
		fields['phonewarn'].html("Please input a phone number.");
		fields['phonewarn'].css('display', "block");
		phonebox.css('border', "2px solid #ff0000");
				
		failed = true;
	}

// ======== Failure detection ===========
	if (failed) {
		return false; // failed, disallow submission
	}
		
	return true; // Everything validated properly, return success.
}; // End function validate()