function fTrim(str){
	str=str||""
	//JS Trim created by dagon (greymagic.com)
		return( str.replace(/^\s+|\s*([\+\,>\s;:])\s*|\s+$/g,'$1') ); 
}

function fisValidEmail(strEmail){
	if(!strEmail) return true
	return /^[a-z][\w\-\.]*@([a-z0-9\-]*\.)+[a-z]{2,}$/i.test(strEmail);
}

function fIsTextFile(val){
	if(!val) return true
	var sExt=val.substr(val.lastIndexOf(".")+1,val.length)
	sExt=sExt.toLowerCase()
	return(sExt=="txt"||sExt=="doc"||sExt=="pdf"||sExt=="rtf")
}
function fIsImgFile(val){
	if(!val) return true
	var sExt=val.substr(val.lastIndexOf(".")+1,val.length)
	sExt=sExt.toLowerCase()
	return(sExt=="jpg"||sExt=="bmp"||sExt=="png"||sExt=="gif")
}

function fIsTextOrImgFile(val){
	if(!val) return true
	return(fIsTextFile(val)||fIsImgFile(val))
}

function fIsNumeric(strNum){
	if(!strNum) return true
	return /^\d+$/.test(strNum);
}
function fIsNumericOrEmpty(strNum){
	return !strNum || /^\d+$/.test(strNum);
}

function fIsFloat(strNum){
	return /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/.test(strNum);
}

function fIsAlphanumeric(str){
	return /^[a-zA-Z0-9à-ú]+$/.test(str);
}

function fIsFileName(str){
	return /^[a-zA-Z0-9 -_()]+$/.test(str);
}

function fIsValidUniqeString(str){
	return /^[a-zA-Z0-9 \-_@à-ú]+$/.test(str);
}

function fIsValidDate(str){
	return /^(3[01]|0[1-9]|[12]\d)\/(0[1-9]|1[012])\/\d{4}/.test(str);
}

function fIsNotEmpty(str){
	return(!(fTrim(str)==""));
}

function fIsValidUserName(str){
	return /^[a-zA-Z0-9à-ú ]+$/.test(str);
}

function oValidator(funcRef, sMsg){
	this.funcRef=funcRef;
	this.sMsg=sMsg;
}

function oFld(){
	var argv = oFld.arguments;
	this.obj = argv[0];
	this.validationFuncs=new Array();
    for (var i = 1; i < argv.length; i++) 
        this.validationFuncs[i-1]=argv[i];
}
