/********************************************
	This script is taken from O'Reilly's Javascript book
	modified 11/7/08 to use jQuery blockUI plugin
	
	To call the script from your HTML form, use the following sytax.
	<form onSubmit = "
		this.fieldname.optional = true;
		this.numberfield.min = 0;
		this.numberfield.max = 99999;
		return verify(this);
	">	
	
********************************************/	

function isblank(s) {
	for (var i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
	}
	return true;
}

function verify(f) {
	var msg = "";
	var empty_fields = "";
	var errors = "";
	var radio_sel = new Array();
	
	for (var i = 0; i < f.length; i++) {
		var e = f.elements[i];
		
		if (((e.type == "text")  || (e.type == "textarea")) && !e.optional) {
			if ((e.value == null) || (e.value == "") || isblank(e.value)) {
				empty_fields += "<li>" + FieldNames[e.name] + "</li>";
				continue;
			}
			
			if (e.numeric || ((e.min != null) && (e.min != "")) || ((e.max != null) && (e.max != ""))) {
				var v = parseFloat(e.value);
				
				if (isNaN(v) ||
					((e.min != null) && (v < e.min)) ||
					((e.max != null) && (v > e.max))) {
					
					 	errors += "- The field " + FieldNames[e.name] + " must be a number";
					 	if (e.min != null)
					 		errors += " that is greater than " + e.min;
					 	if (e.max != null && e.min != null)
					 		errors += " and less than " + e.max;
					 	else if (e.max != null)
					 		errors += " that is less than " + e.max;
					 	errors += ".\n"
				}
				continue;
			}
			
			if (e.regex && (e.regex.test(e.value) == false)) {
				errors += "- The field " + FieldNames[e.name] + " is not in a valid format.\n";
			}

		}	//if (((e.type == "text")
		
		
		if ((e.type == "password") && !e.optional) {
			if ((e.value == null) || (e.value == "") || isblank(e.value)) {
				empty_fields += "<li>" + FieldNames[e.name] + "</li>";
			}
		}


		if ((e.type == 'select-one') && (!e.optional)) {
			if ((e.options[e.selectedIndex].value == "") || (e.options[e.selectedIndex].value == null)) {
				empty_fields += "<li>" + FieldNames[e.name] + "</li>";
			}
		}


		if ((e.type == 'radio') && (!e.optional)) {
			if (radio_sel[e.name] == null) { radio_sel[e.name] = false; }
			if (e.checked == true) { radio_sel[e.name] = true; }
		}


	}	//for (var i = 0; i < f.length; i++)

	if (radio_sel.length > 0) {
		for (key in radio_sel) {
			if (radio_sel[key] == false) {
				empty_fields += "<li>" + FieldNames[key] + "</li>";
			}
		}
	}
	if (!empty_fields && !errors) return true;

	
	msg += "<h2>The information you provided has NOT been submitted due to the following.</h2>";
	//msg += "Please make these necessary changes before trying again.\n\n\n";
	if (empty_fields) {
		msg += "<h3>The following fields require a response:</h3><ul>" + empty_fields + "</ul>";
		if (errors) msg += "<p>";
	}
	msg += errors + "</p>";
	
	//blockUI style confirmation window
	$.blockUI.defaults.css = { }; 
	$.blockUI({ 
		message: msg + '<a href="#" class="close">OK</a>',
		overlayCSS: {
			opacity: '0.5'
		}
	});
	$('.blockOverlay').click($.unblockUI);
	$('.blockUI a.close').click(function(){
		$.unblockUI();
		return false;
	});
	return false;
}

