// JavaScript Document

//-------------------------------------------------------------------
// Djaiman Toni validation extention
//-------------------------------------------------------------------
var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i;

// validate given email address by given string
function vldEmail(addr) {
	var returnval=emailfilter.test(addr);
	return returnval;
}

function csvString(currentstr,tailingstr){
	if (currentstr!="") currentstr+=", ";
	return currentstr+=tailingstr;
}

function showErrTag(formobj, divid, errmsg) {
	formobj.v.value="Y";
	document.getElementById(divid).innerHTML="<font class='fderror'>"+TrimAll(errmsg)+"</font>";
}

function clrsErrTag(divid) {
	document.getElementById(divid).innerHTML="<!-- -->";
}

// validate text code form element
function vldFldKeys(formobj, errdiv, vldobj, txtlen) {
	var txtstr=Trim(vldobj.value);
	var txterr=false;
	var errstr="";
	
	clrsErrTag(errdiv);
	if (txtstr=="") errstr=csvString(errstr, "* Key field is required");
	if (txtstr.length > txtlen) errstr=csvString(errstr, "* Max character size: "+txtlen);
	while (txtstr.indexOf(" ")>0) {
		txtstr=txtstr.replace(/\s/,"_");
	}
	vldobj.value=txtstr.toUpperCase();
	if (errstr!="") showErrTag(formobj, errdiv, errstr);
	return (errstr==""?true:false);
}

// validate key field rules
function vldRecKeys(formobj, errdiv, vldobj, actobj, keyobj, rectbls, recflds) {
	var reccnts=0;
	var keyold=false;
	clrsErrTag(errdiv);
	
	sqlprm="q=COUNT&t="+rectbls+"&ff="+recflds+"&fo=eq"+"&fv="+vldobj.value;
	reccnts=sjx_sql_query(sqlprm);
	recexst=(reccnts > 0);
	keychgd=(vldobj.value!=keyobj.value);
	var errstr="";
	if ((actobj.value=="N") && recexst) { errstr=csvString(errstr, "* Key field value exists"); }
	if ((actobj.value=="E") && keychgd && recexst) { errstr=csvString(errstr, "* New key field value exists"); }
	if ((((actobj.value=="E") && !keychgd) || (actobj.value=="D")) && !recexst) {
		errstr=csvString(errstr, "* Records is gone");
	}
	if (errstr!="") showErrTag(formobj, errdiv, errstr);
	return (errstr==""?true:false);
}

// validate required form element
function vldFldText(formobj, errdiv, vldobj, txtlen) {
	var txtstr=Trim(vldobj.value);
	var txterr=false;
	var errstr="";

	clrsErrTag(errdiv);
	if (txtstr=="") errstr=csvString(errstr, "* Field is required");
	if (txtlen > 0) {
		if (txtstr.length>txtlen) errstr=csvString(errstr, "* Max character size: "+txtlen);
	}
	if (errstr!="") showErrTag(formobj, errdiv, errstr);
	return (errstr==""?true:false);
}

// validate required form element
function fixFldInt(formobj, errdiv, vldobj) {
	var txtval=intVal(Trim(vldobj.value));
	var txterr=false;
	vldobj.value=txtval;
	clrsErrTag(errdiv);
}

// validate required form element
function vldFldMail(formobj, errdiv, vldobj, txtlen) {
	var txtstr=Trim(vldobj.value);
	var txterr=false;
	var errstr="";
	
	clrsErrTag(errdiv);
	if (txtstr=="") {
		errstr=csvString(errstr, "* Field is required");
	} else {
		if (!vldEmail(txtstr)) errstr=csvString(errstr, "* Invalid e-mail address format");
	}
	if ((txtlen > 0) && (errstr=="")){
		if (txtstr.length>txtlen) errstr=csvString(errstr, "* Max character size: "+txtlen);
		
	}
	if (errstr!="") showErrTag(formobj, errdiv, errstr);
	return (errstr==""?true:false);
}

// validate required form element
function vldFldCapt(formobj, errdiv, vldobj, vldkey) {
	var txtstr=Trim(vldobj.value);
	var txterr=false;
	var errstr="";
	
	clrsErrTag(errdiv);
	vldobj.value=txtstr.toUpperCase();
	if (txtstr.toUpperCase()!=Base64.decode(vldkey)) {
		errstr=csvString(errstr, "* Incorrect human validation");
	}
	if (errstr!="") showErrTag(formobj, errdiv, errstr);
	return (errstr==""?true:false);
}
