function fclientsyntax(oF) {

for (i=0;i<oF.elements.length;i++) {
	oE=oF.elements[i];

	sE=""

	try {
		sC=oE.attributes["check"].nodeValue;
		sL=oE.attributes["label"].nodeValue;
	}
	catch (e) {
		try {
			sC=oE.check;
			sL=oE.label;
		}
		catch(e) {
			sC=""; sL=""
		}
	}

	sL=(sL)?sL:oE.name;

	if (sC) {
		aC=sC.split(";")
		for (j=0;j<aC.length;j++) {
			sV=("text,textarea,password,hidden,".indexOf(oE.type+",")>-1)?oE.value:oE.options[oE.selectedIndex].value
			sTE="OK"
			if (aC[j].substring(0,1)!="!") {
				eval("sTE=f" + aC[j])
			}
			else {
				if (sV!="") {
					eval("sTE=f" + aC[j].substring(1))
				}
			}
			sE += (sTE==undefined || sTE=="OK")?"":sTE + ",\n"
		}
	}
	if (sE!="") {
		oE.focus(); alert(sTR["DATA"] + ": " + sL + "\n\n" + sE.substring(0,sE.length-2) + "!")
		return false
	}
}
return true
}

function fTT(sT) {
sM=""; aT=sT.split(",")
for (l=0;l<aT.length;l++) sM += " " + ((aT[l]=="")?"":sTR[aT[l]])
return sM
}

function fNOE() {
	if (sV.length<1) { return fTT("CANT,BE,EMPTY") }
}

function fMAX(I) {
 	if (sV.length>I) { return fTT("CANT,BE,LONGERTHAN,") + I + fTT("CHARS") }
}

function fMIN(I) {
 	if (sV.length<I) { return fTT("CANT,BE,SHORTERTHAN,") + I + fTT("CHARS") }
}

function fEMA() {
 	if (!(/^[\w\-\.]+@[\w\-\.]+\.[\w]{2,}$/.test(sV))) { return fTT("MUST,BE,VALID,EMAIL") }
}

function fEXT(I) {
	RE=new RegExp(".+\.(" + I + ")$", "i")
 	if (!(RE.test(sV))) { return fTT("MUST,HAVE,EXTENSION,") + (I.split("|")).join(fTT("OR,")) }
}

function fURL() {
	if (!(/^http\:\/\/.{2,}\..{2,}$/i.test(sV))) { return fTT("MUST,BE,VALID,URL") }
}

function fINT() {
 	if (!(/^\d{1,}$/i.test(sV))) { return fTT("MUST,BE,INTEGER") }
}

function fURLINT() {
	if (!(/^http\:\/\/.{2,}\..{2,}$/i.test(sV)) && !(/^\d{1,}$/i.test(sV)) && sV.length>0) { return fTT("MUST,BE,VALID,URL,OR,INTEGER") }
}

function fVAR() {
 	if (!(/^[a-zA-Z]+[a-zA-Z0-9_]+$/.test(sV))) { return fTT("MUST,BE,VALID,VNAME") }
}

function fLET() {
 	if (!(/^[a-zA-Z]+$/.test(sV))) { return fTT("MUST,CONTAIN,ONLY,LETTERS") }
}

function fNSC(I) {
J=I.replace("DOUBLE QUOTE","\"")
J=J.replace("SINGLE QUOTE","'")
J=J.replace("SPACE"," ")
aS=J.split(",")
bE=false
for (K=0;K<aS.length;K++) {
	if (sV.indexOf(aS[K])>-1) bE=true
}
if (bE) { return fTT("CANT,CONTAIN") + ": " + (I.split(",")).join(", ") }
}

