// sift_forms.js - functions for validating and formating SIFT forms in HTML pages
// (and possibly in Flash .swf files too... at some point)



function sift_validate_form(the_form) {

	validity = true;

	var frm = document.getElementById(the_form);
	var lbls = document.getElementsByTagName("label");
	var lblNames = new Array();

	for(var i=0; i<lbls.length; i++) {
		lblNames[lbls[i].getAttribute("for")]=lbls[i].innerHTML;
	}

	var errorList = '';

	for(var i=0; i<frm.length; i++) {
		var frmBox = frm.elements[i];
		var frmBoxClass = frmBox.className.toLowerCase();

		if(frmBox.name == "sift_email") {
			if(!validateEmail(frmBox.value)) {
				errorList += "<li>" + lblNames[frmBox.name] + "(" + frmBox.value + " is not a valid email address.)</li>\n";
				validity = false;
			}
		}

		if(frmBoxClass.indexOf("required")>=0 && frmBox.value=='') {
			errorList += "<li>" + lblNames[frmBox.name] + "</li>\n";
			frmBox.style.borderColor='red';
			frmBox.style.color='red';
			validity = false;
		}

	}


	if(document.getElementById && document.createElement && errorList) {

		if(document.getElementById("errBox")) {
			frm.removeChild(frm.firstChild);
		}

		var errBox = document.createElement('div');
		errBox.id = "errBox";
		errBox.innerHTML = "Error - The following fields are required and/or did not contain valid values:<br />\n<ol>" + errorList + "\n</ol>\n";
		errBox.className = "error";
		errBox.style.border = "1px solid red";
		errBox.style.color = "red";
		errBox.style.margin = "0.5em";
		errBox.style.padding = "1em";
		frm.insertBefore(errBox, frm.childNodes[0]);
	}

	return validity;
}



function sift_clear_form(the_form) {

	var frm = document.getElementById(the_form);

	for(var i=0; i<frm.length; i++) {
		var frmBox = frm.elements[i];
		var frmBoxClass = frmBox.className;

		if(frmBoxClass.indexOf('required')>=0) {
			frmBox.style.borderColor="green";
		} else {
			frmBox.style.borderColor="";
		}

		frmBox.style.color="";
	}

	if(document.getElementById("errBox")) {
		frm.removeChild(frm.firstChild);
	}
}

function sift_apply_form_styles (the_form) {

	var frm = document.getElementById(the_form);
	var lbls = document.getElementsByTagName("label");

	frm.style.margin="0";
	frm.style.padding="0";
	frm.style.position="relative";


	for(var i=0; i<lbls.length; i++) {
		var lbl = lbls[i];
		var lblClass = lbl.className.toLowerCase();

		lbl.style.display="block";
		lbl.style.cssFloat="left";
		lbl.style.clear="left";
		lbl.style.width="160px";
		lbl.style.margin="0.5em";

		if(lblClass.indexOf("required")>=0) {
			lbl.innerHTML+=" *";
		}
	}

	for(var i=0; i<frm.length; i++) {
		var frmBox = frm.elements[i];
		var frmBoxClass = frmBox.className;

		frmBox.style.margin="0.5em";

		if(frmBoxClass.indexOf('required')>=0) {
			frmBox.style.borderColor="green";
			frmBox.style.color="green";
		}
	}

}

function validateEmail(email) {
	var e = email;
	apos = e.indexOf("@");
	dotpos = e.lastIndexOf(".");

	if (apos<1 || dotpos-apos<2) {
		return false;
	} else {
		return true;
	}
}

