/* dryes [at] featureblend.com */
function FormLibrary(dD){
	var FL = /,["'\s]+(\w+)["\s']+/, sS = 0, oRef="formLib.checkField", n = navigator, DMSG = "FormLibrary RUNTIME ERROR:\n\n", gAllDt = "get_all_dt=true", BMSG = "No parent form was found.", t = this, dxr = new Object(), d = document, se = "select-one", ta = "textarea", tx = "text", pw = "password", uDT = new Object(), nDT = 0;
	var isIEMAC = /mac/i.test(n.platform)&&/msie/i.test(n.userAgent);
	t.dS = (d.domain.indexOf(dD)!=-1)?0:1
	t.dt = t.eS = t.eO = new Object();
	t.tElObj;
	t.SDef = "";
	t.msg;
	t.tip = 1;
	t.extensions = [];
	var setDTXR = function(){
		var a = arguments
		if(!a[1]){
			var c = a[0].onchange.toString();
			a[1] = c.match(FL)[1];
			a[2] = (c.search(/(0)/)!=-1)?0:1;
		}else{
			a[2] = (a[2])?1:0;
		}
		if(!t.dt[a[1]]){
			t.dB(a[1]+" is an undefined datatype.");
			return false;
		}
		a[0].dt = a[1];
		a[0].req = a[2];
		return true;
	}
	var vD = function(eObj){
		var eV = eObj.value, vR = 1;
		if(eObj.req || (!eObj.req && eV!="") || (eObj.type==se && eV!=this.SDef)){
			var dtObj = t.dt[eObj.dt];
			vR = (eObj.req && eV=="")?0:(eV.toString().search(dtObj[0])!=-1)?1:0;
			if(vR){
				if(eV.length<dtObj[3] || eV.length>dtObj[4]){
					vR = 0;
				}
			}
			t.applyStyle(eObj,vR);
			if(!vR){
				var eStr = t.msg[0]+" " + ((eObj.type==se)?t.msg[1]+" ":t.msg[2]+" ") + dtObj[2] + ".";
				if(dtObj[1]){
					eStr += "\n" + t.msg[3] + " " + dtObj[1]+".";
				}
				t.displayMsg(eStr);
				t.setFocus(eObj);
			}
		}else{
			t.applyStyle(eObj,vR);
		}
		return vR;
	}
	var extM = function(o){
		var ex = t.extensions;
		for(var i=0; i<ex.length; i++){
			if(ex[i].formId==o.id){
				var tE = ex[i].init();
				if(!tE){
					return false;
				}
			}
		}
		return true;
	}
	var fP = function(obj,tp){
		var pN = obj.parentNode;
		if(pN.nodeName=="BODY"){
			return false;
		}else if(pN.nodeName!=tp){
			return fP(pN,tp);
		}else{
			return pN;
		}
	}	
	var cSObj = function(file, qStr){
		var q = (qStr)?"?"+qStr:"";
		var s = file + q, ty = "text/javascript", q = "\u0022", e;
		if(isIEMAC){
			(d.createElement("div")).innerHTML="\u003cscript type="+q+ty+q+" src="+q+s+q+"\u003e\u003c/script\u003e";
		}else{
			(e=d.createElement("script")).setAttribute("src",s);
			e.setAttribute("type",ty);
			d.getElementsByTagName("head")[0].appendChild(e);
		}
	}
	var getDT = function(){
		cSObj(t.dTFile);
	}
	var vF = function(o){
		var el = o.elements;
		for(var i=0; i<el.length; i++){
			var p = el[i];
			if(p.onchange && p.onchange.toString().indexOf(oRef)!=-1 && (p.type==tx||p.type==ta||p.type==se||p.type==pw)){
				if(!setDTXR(p)){
					continue;
				}
				if(!vD(p)){
					return false;
				}
				
			}
		}
		return extM(o);
	}
	var sSH = function(o){
		var df = d.forms;
		for(var i=0; i<df.length; i++){
			df[i].onsubmit = t.onSubmit;
			df[i].onreset = t.onReset;
		}
	}
	t.applyStyle = function(eObj,st){
		var eT = eObj.type, sI = (st)?1:0;
		eObj.xbgC = t.eS.bgColor[sI];
		if(eObj.style){
			with(eObj.style){
				backgroundColor = t.eS.bgColor[sI];
				color = t.eS.txtColor[sI];
			}
		}
		if(t.tip & (eT==tx || eT==ta || eT==pw)){
			var dEx = t.dt[eObj.dt][1];
			if(dEx){
				eObj.title = (sI)?"":t.msg[3]+ " " +dEx+".";
				eObj.style.cursor = (sI)?"default":"help";
			}
		}		
	}
	t.setFocus = function(eObj){
		t.tElObj = eObj;
		setTimeout("formLib.tElObj.focus()",1);
		if(!isIEMAC && eObj.type!=se){
			setTimeout("formLib.tElObj.select()",2);
		}
	}
	t.dB = function(eMsg){
		if(t.dS){
			alert(DMSG + eMsg);
		}
	}
	t.checkField = function(eObj,dt){
		if(!setDTXR(eObj,dt,(arguments[2])?arguments[2]:0)){
			return;
		}
	}
	t.submitForm = function(obj){
		var nN = obj.nodeName;
		if(nN=="BUTTON"||nN=="INPUT"){
			if(obj.type.toUpperCase()=="SUBMIT"){
				return;
			}
		}
		var o = (obj.nodeName!="FORM")?fP(obj,"FORM"):obj;
		if(vF(o)){
			o.submit();
		}
	}
	t.onSubmit = function(){
		return vF(this);
	}
	t.onReset = function(){
		t.resetForm(this);
	}
	t.resetForm = function(obj){
		var nN = obj.nodeName, o;
		if(nN=="FORM"){
			o = obj;
		}else{
			o = fP(obj,'FORM');
			if(!o){
				t.dB(BMSG);
				return;
			}
			o.reset();
		}
		var el = o.elements;
		for(var i=0; i<el.length; i++){
			var p = el[i];
			if(p.onchange && p.onchange.toString().indexOf(oRef)!=-1 && (p.type==tx||p.type==ta||p.type==se||p.type==pw) ){
				if(!setDTXR(p)){
					continue;
				}else{
					t.applyStyle(p,true);
				}
			}
		}
		t.elementFocus();
	}
	t.elementFocus = function(){
		for(var i=0;i<d.forms.length;i++){
			var el = d.forms[i].elements;
			for(var j=0; j<el.length; j++){
				if(el[j].type!="hidden" && el[j].nodeName!="BUTTON"){
					t.setFocus(el[j]);
					if(el[j].type!="checkbox" && el[j].type!="radio"){
						el[j].style.backgroundColor = t.eS.onfocusBgColor;
					}
					return;
				}
			}
		}
	}
	t.getDataTypes = function(){
		for(var i in t.dt){
			alert("Data Type: "+i+"\nRegular Expression: "+this.dt[i][0]+"\nExample Format: "+this.dt[i][1]+"\nDisplay Name: "+this.dt[i][2]);
		}
	}
	t.displayMsg = function(s){
		alert(s);
	}
	t.setOFE = function(){
		var eFC = ["INPUT","SELECT","TEXTAREA"];
		for(var h=0; h<eFC.length; h++){
			var iObj = document.getElementsByTagName(eFC[h]);
			for(var i=0; i<iObj.length; i++){
				if(iObj[i].type!="checkbox" && iObj[i].type!="radio"){
					iObj[i].onfocus = function(){
						if(this.xbgC!=t.eS.bgColor[0]){
							this.style.backgroundColor = t.eS.onfocusBgColor;
						}
					}
					iObj[i].onblur = function(){
						if(this.xbgC!=t.eS.bgColor[0]){
							this.style.backgroundColor = t.eS.bgColor[1];
						}
					}
				}
			}
		}
	}
	t.onload = function(){
		t.setOFE();
		sSH();
		if(t.autoFocus){
			t.elementFocus();
		}
		getDT();
	}
	base.addOnLoadEvent("formLib.onload()");
}
var formLib = new FormLibrary("gng");
formLib.dTFile = "/scripts/form_lib_dt.js";
formLib.eS.bgColor = ["#AD3133","#ffffff"];
formLib.eS.txtColor = ["#ffffff","#000000"];
formLib.eS.onfocusBgColor = "#B0B9C0";
formLib.msg = ["Please","select a","enter a valid","Example Format: "];
formLib.autoFocus = 0;
formLib.tip = 1;
