/***********************************************************************************/
/* EASTGATE MULTIMEDIA CMS
/* JS FUNCTIONS LIBRARY
/* VERSION 1.0 - DECEMBER 2009 
/***********************************************************************************/

/////////////////////////////////////////////////////////////////////////////////
// CHECK FOCUS/BLUR
/////////////////////////////////////////////////////////////////////////////////
function check_focus(i,v) {
	if (i.value == v) {
		i.value = "";
	}
}
function check_blur(i,v) {
	if (i.value == "") {
		i.value = v;
	}
}

/////////////////////////////////////////////////////////////////////////////////
// CHECK FORM
/////////////////////////////////////////////////////////////////////////////////
function check_form(check_scope,a,disp,output) {
// note: when disp is true the class of the field will NOT be changed
// note: if 'output' is given (this will be an object), the script will output any messages to this object instead of an alert

// DISABLED SUBMIT BUTTON
snum = check_scope.num.value;
submitButton = document.getElementById('submit'+snum);
submitButton.disabled = "disabled";
var submitLabel = submitButton.value;
submitButton.value = "LOADING...";

var error = "";
var chkFlds = ["input","select","textarea","checkbox"];
// loop thru field types - chkFlds
for (var j=0; j < chkFlds.length; j++) {
	// get all the fields for the current type into array
	var frmObjs = check_scope.getElementsByTagName(chkFlds[j]);
	// loop thru type array
	for (var i=0; i < frmObjs.length; i++) {
		var displayname = (frmObjs[i].title == "")?frmObjs[i].name:frmObjs[i].title;
		var type = frmObjs[i].type;
			// if not resetting, get value and id from current object
			var fldVal = frmObjs[i].value;
			var fldVfy = frmObjs[i].lang;
			var thiserror = 0;
			if (fldVfy.indexOf("vf#")!=-1 && frmObjs[i].disabled !== true) {
		// if reset action called, reset current field
		if (a == "reset") {
			if (!(type == "button") && !(type == "hidden")) {
				if(!disp){
					if (frmObjs[i].className.indexOf("err")!=-1) {
						frmObjs[i].className = frmObjs[i].className.slice(0,-3);
						}
					}
				frmObjs[i].value="";
				}
			} else {
			// Check for empty mandatory fields - m
			if (fldVal == "" && fldVfy.indexOf("m")!=-1) {
				if(!disp){
					if (frmObjs[i].className.indexOf("err")==-1) {
						frmObjs[i].className = frmObjs[i].className+"-err";
						}   
					}
				error += "   Required: "+displayname+'\n';
				thiserror = 1;
				}
			// check for unticked checkbox - m
			if (type == "checkbox" && fldVfy.indexOf("m")!=-1 && frmObjs[i].checked !== true) {
				if(!disp){
					if (frmObjs[i].className.indexOf("err")==-1) {
						frmObjs[i].className = frmObjs[i].className+"-err";
						}   
					}
				error += "   Unticked checkbox: "+displayname+'\n';
				thiserror = 1;
				}
				
			// Check for non numeral - n
			var numerror = 0;
			var numerals = "-0123456789. \r\n";
			if (fldVal !== "" && fldVfy.indexOf("n")!=-1) {
				for (k=0; k<fldVal.length; k++) {
					var ch = fldVal.charAt(k);
					var x = numerals.indexOf(ch);
					if (x == -1) {
						numerror = 1;
						} 
					}
				if (numerror == 1) {
					if(!disp){
						if (frmObjs[i].className.indexOf("err")==-1) {
							frmObjs[i].className = frmObjs[i].className+"-err";
							}   
						}
					error += "   Numbers only: "+displayname+'\n';
					thiserror = 1;
					}
				}

			// Check for non phone number - p
			var phoneerror = 0;
			var numerals = "0123456789.() \r\n";
			if (fldVal !== "" && fldVfy.indexOf("p")!=-1) {
				for (k=0; k<fldVal.length; k++) {
					var ch = fldVal.charAt(k);
					var x = numerals.indexOf(ch);
					if (x == -1) {
						phoneerror = 1;
						} 
					}
				if (phoneerror == 1) {
					if(!disp){
						if (frmObjs[i].className.indexOf("err")==-1) {
							frmObjs[i].className = frmObjs[i].className+"-err";
							}
						}
					error += "   Phone numbers only: "+displayname+'\n';
					thiserror = 1;
					}
				}


			// Check for non alpha - a
			var alphaerror = 0;
			var numerals = "0123456789. ";
			if (fldVal !== "" && fldVfy.indexOf("a")!=-1) {
				for (k=0; k<fldVal.length; k++) {
					var ch = fldVal.charAt(k);
					var x = numerals.indexOf(ch);
					if (x !== -1) {
						alphaerror = 1;
						} 
					}
				if (alphaerror == 1) {
					if(!disp){
						if (frmObjs[i].className.indexOf("err")==-1) {
							frmObjs[i].className = frmObjs[i].className+"-err";
							}    
						}
					error += "   Numbers not allowed: "+displayname+'\n';
					thiserror = 1;
					}
				}
			
			// Check for password confirmation
			if (fldVfy.indexOf("P1")!=-1) {
				if (fldVal  != frmObjs[i+1].value) {
					if (frmObjs[i+1].className.indexOf("err")==-1) {
						frmObjs[i+1].className = frmObjs[i+1].className+"-err";
						}
					error += "   Password not confirmed: Please retype.\n";
					thiserror = 1;
				}
			}
			
			// Check for incorrect email address - e
			if (fldVal !== "" && (fldVfy.indexOf("e")!=-1)) {
				var at =  fldVal.indexOf("@");
				var dot = fldVal.indexOf(".");
				if (at==-1 || dot==-1) {
					if(!disp){
						if (frmObjs[i].className.indexOf("err")==-1) {
							frmObjs[i].className = frmObjs[i].className+"-err";
							}
						}
					error += "   Incorrect email address: "+displayname+'\n';
					thiserror = 1;
					}
				}
				
			// Check for email confirmation
			if (fldVfy.indexOf("E1")!=-1) {
				if (fldVal  != frmObjs[i+1].value) {
					if (frmObjs[i+1].className.indexOf("err")==-1) {
						frmObjs[i+1].className = frmObjs[i+1].className+"-err";
						}
					error += "   Email not confirmed: Please retype.\n";
					thiserror = 1;
				}
			}
				
			// If field ok, set colour to normal
				if (thiserror!=1) {
					if(!disp){
						if (frmObjs[i].className.indexOf("err")!=-1) {
							frmObjs[i].className = frmObjs[i].className.slice(0,-4);
							}
						}
					}
				}
			}
		}
	}
// If errors, give error alert, otherwise, submit the form
	if (a == "verify") {
		if (!error == "") {
			//error = "Please correct the following errors:    "+'\n\n'+error;
			if(!output){
				alert(error);
			} else {
			var formatted_output = error.replace(/\n/g,'<br />');
			var formatted_output = formatted_output.replace(/Required:/g,'<b>Required:</b>');
			var formatted_output = formatted_output.replace(/Phone numbers only:/g,'<b>Phone numbers only:</b>');
			var formatted_output = formatted_output.replace(/Numbers only:/g,'<b>Numbers only:</b>');
			var formatted_output = formatted_output.replace(/Numbers not allowed:/g,'<b>Numbers not allowed:</b>');
			var formatted_output = formatted_output.replace(/Incorrect email address:/g,'<b>Incorrect email address:</b>');
			var formatted_output = formatted_output.replace(/Unticked checkbox:/g,'<b>Unticked checkbox:</b>');
			var formatted_output = formatted_output.replace(/Password not confirmed:/g,'<b>Password not confirmed:</b>');
			document.getElementById(output).innerHTML = '<br /><br />'+formatted_output;
			}
			// ENABLE SUBMIT BUTTON
			submitButton.disabled = "";
			submitButton.value = submitLabel;
			return false;
			} else {
			if(output){
				document.getElementById(output).innerHTML = '';
				}			
			return true;
			}
	}
}
