
//----------------------------------------------
// FORM VALIDATION - intelliForms v1.0 by rudy@digifx.tv ... lol... aka: Intelligent Live Forms
// vType Legend (validationType~MinChars~maxChars~mustMatchID
//----------------------------------------------

// submitButton Rollovers
function submitOver(myDiv){
	document.getElementById(myDiv).style.background="#EEEEEE";
	document.getElementById(myDiv).style.border="1px solid #990000";
	document.getElementById(myDiv).style.color="#990000";
}
function submitOut(myDiv){
	document.getElementById(myDiv).style.background="#FFFFFF";
	document.getElementById(myDiv).style.border="1px solid #000000";
	document.getElementById(myDiv).style.color="#000000";
}


function mustMatch(me,you){
	if (me.value != document.getElementById(you).value){
	me.value="";
	borderThis(me,1);
	borderThis(document.getElementById(you),1);
	document.getElementById(you).value="";
	document.getElementById(you).focus();
	}

}
function borderThis(theObj,mode){
	if (mode == 0) { 
		theObj.style.border = "1px #000000 solid";
		theObj.style.background = "#FFFFFF";
	} else if (mode == 1){ 
		theObj.style.border = "1px #ff0033 solid";
		theObj.style.background = "#fee9e9";
	} else if (mode == 2){ 
		theObj.style.border = "1px #33cc33 solid";
		theObj.style.background = "#eeffd9";
		//theObj.style.background = "#eeffd9";
		//setTimeout("theObj.style.background = '#FFFFFF'",2000);
	} //repeat as required.
	
}
function getIndex(theObj) {
	var index = -1, i = 0, found = false;
	while (i < theObj.form.length && index == -1) {
		if (theObj.form[i] == theObj) { index = i; } else { i++; }
	}
	return index;
}
function checkField(theObj) {
//	var reAlpha = /!|@|#|\$|%|`|~|\^|&|\*|\(|\)|_|\-|=|\+|'|"|:|;|\]|\[|\{|\}|,|<|\.|>|\\|\?|\||\/|\d/;  // my regular expression - in the works.     reAlpha.exec(elemVal)
//	var reNumba = /!|@|#|\$|%|`|~|\^|&|\*|\(|\)|_|\-|=|\+|'|"|:|;|\]|\[|\{|\}|,|<|\.|>|\\|\?|\||\/|\D/
//	var reEmail = /!|#|\$|%|`|~|\^|&|\*|\(|\)|_|\-|=|\+|'|"|:|;|\]|\[|\{|\}|,|<|>|\\|\?|\||\//; // same as Alpha but . @ and numbers are permitted
	var reAlpha = /[^A-Za-z]/;
	var reEmail = /[^A-Za-z@._0-9\-]/;
	var reNumba = /[^0-9]/;
	var reAlphaNum = /[^A-Za-z0-9]/;
	var reAlphaNumS = /[^A-Za-z\ 0-9]/;
	var rePostalA = /[^A-Za-z]/;
	var rePostal1 = /[^0-9]/;
	//var reSelect = /[^A-Za-z0-9 ]/;	
	var preChkStr = theObj.className.split(" ");
	var chkStr = preChkStr[1].split("~"); 	
	var elemVal = theObj.value;
	var q = 0, f = 0;
	if(elemVal.length >= chkStr[2]) { theObj.value = elemVal.slice(0, chkStr[2]); theObj.form[(getIndex(theObj)+1) % theObj.form.length].focus(); } // TOO LONG
	if (elemVal.length < chkStr[1]){ borderThis(theObj,1);  q=q+1;} // TOO SHORT 
	if (chkStr[0] == 'numba') { if ( reNumba.exec(elemVal) != null) { theObj.value = elemVal.slice(0, elemVal.indexOf(reNumba.exec(elemVal))); q=q+1;}
	} else if (chkStr[0] == 'email') { 
			if ( reEmail.exec(elemVal) != null) { theObj.value = elemVal.slice(0, elemVal.indexOf(reEmail.exec(elemVal))); q=q+1;}
			if ((elemVal.indexOf('.') == -1) || (elemVal.indexOf('@') == -1)) { q=q+1;
			} else if (elemVal.split("@").length > 2){ theObj.value = elemVal.slice(0, elemVal.indexOf("@")); q=q+1;
			} else { if (elemVal.split("@").length == 2) { tVarA=elemVal.split("@");
							if (tVarA[1].split(".").length != -1) { tVarB=tVarA[1].split(".");
								if ((tVarB[1].length < 2) || (tVarB[1].length > 6)) { q=q+1; }
							} else { q=q+1;}
					} else { q=q+1;}
			}
	} else if (chkStr[0] == 'alpha') { if ( reAlpha.exec(elemVal) != null) { theObj.value = elemVal.slice(0, elemVal.indexOf(reAlpha.exec(elemVal))); q=q+1;}
	} else if (chkStr[0] == 'alphaNum') { if ( reAlphaNum.exec(elemVal) != null) { theObj.value = elemVal.slice(0, elemVal.indexOf(reAlphaNum.exec(elemVal))); q=q+1;}
	} else if (chkStr[0] == 'alphaNumS') { if ( reAlphaNumS.exec(elemVal) != null) { theObj.value = elemVal.slice(0, elemVal.indexOf(reAlphaNumS.exec(elemVal))); q=q+1;}
	} else if (chkStr[0] == 'postalA') { if (elemVal.split("").length == 3) { tVarA=elemVal.split(""); if ( rePostalA.exec(tVarA[0])+rePostal1.exec(tVarA[1])+rePostalA.exec(tVarA[2]) != 0){q=q+1;}}
	} else if (chkStr[0] == 'postalB') { if (elemVal.split("").length == 3) { tVarA=elemVal.split(""); if ( rePostal1.exec(tVarA[0])+rePostalA.exec(tVarA[1])+rePostal1.exec(tVarA[2]) != 0){q=q+1;}}
	} else if (chkStr[0] == 'select') { /* if ( reSelect.exec(elemVal) != null) { theObj.value = elemVal.slice(0, elemVal.indexOf(reSelect.exec(elemVal))); q=q+1;} */
	} else { // borderThis(theObj,0); alert("did nothing");		alert("q="+q+"f="+f+"objName="+theObj.id);
	} 
	if (q > 0){ borderThis(theObj,1); if (f < 0){ alert("f was 0");	document.getElementById(theObjid).focus(); f=1;} return 'no'; } else { borderThis(theObj,2); return 'ok';}
}
function formCheck(obj,goesTo,showsIn) {
	var getstr = "";
	var myOkStr = "";
	for (i=0; i<obj.form.length; i++) {
		if (obj.form[i].tagName == "INPUT") {
			if (obj.form[i].type == "text") {  //ok
				myOkStr = myOkStr+checkField(obj.form[i])+",";
				getstr += obj.form[i].id + "=" + obj.form[i].value + "&";
			}	
			if (obj.form[i].type == "password") { //ok
				myOkStr = myOkStr+checkField(obj.form[i])+",";
				getstr += obj.form[i].id + "=" + obj.form[i].value + "&";
			}			
			if (obj.form[i].type == "checkbox") {
				if (obj.form[i].checked) {
					getstr += obj.form[i].id + "=" + obj.form[i].value + "&";
				} else {
					getstr += obj.form[i].id + "=&"; // could possibly omit`
				}
			}
			if (obj.form[i].type == "radio") {
				if (obj.form[i].checked) {
					getstr += obj.form[i].id + "=" + obj.form[i].value + "&";
				}
			}
		}  
		if (obj.form[i].tagName == "SELECT") {
			myOkStr = myOkStr+checkField(obj.form[i])+",";
			var sel = obj.form[i];
			getstr += sel.id + "=" + sel.options[sel.selectedIndex].value + "&";
		}   
		if (obj.form[i].tagName == "textarea") {
			myOkStr = myOkStr+checkField(obj.form[i])+",";
			getstr += obj.form[i].id + "=" + obj.form[i].value + "&";
		}         
	}//     alert(chkStr); 	alert(myOkStr);
	//alert(getstr);
	if (myOkStr.indexOf('no') == -1){ 
	//	postRequest(goesTo, getstr); 
	getData(goesTo, showsIn, getstr); // this calls the form submission method
	} else {
		document.getElementById('myspan').innerHTML = "An error occured with your request. Please ensure that no fields are highlighted red"; //document.getElementById('myspan').innerHTML + 
		reBox();
	}
	return false
}

var formJax
   function getData(goesTo, showsIn, postStr) {
 		formJax=GetXmlHttpObject();
		var postStr  = postStr+"randy="+Math.random();
		// alert("going to send:"+postStr);
		formJax.open("POST",goesTo,true);
		formJax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		formJax.onreadystatechange = function() {
			if (formJax.readyState == 4 && formJax.status == 200) { //	alert("i changed state");
			// document.getElementById(showsIn).innerHTML = formJax.responseText;
				if (formJax.responseText.indexOf('<!-- ok -->') != -1){  document.getElementById(showsIn).innerHTML = formJax.responseText; 
				} else { document.getElementById('myspan').innerHTML = formJax.responseText;
				} reBox();
			} else if( formJax.readyState == 4 && formJax.status != 200){
			 alert(formJax.responseText);
				document.getElementById('myspan').innerHTML = "an internal error has occured, please retry your request.<br>If this problem persists, please contact a system administrator."; 
				// formJax.responseText;
			}
         }
       formJax.send(postStr);
     }
