function fTrim(str){
	str=str||""
	//JS Trim created by dagon (greymagic.com)
		//return( str.replace(/^\s+|\s*([\+\,>\s;:])\s*|\s+$/g,'$1') ); 
		return( str.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1') ); 
}

function fisValidEmail(strEmail){
	if(!strEmail) return true
	return /^[a-z0-9][\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){
	if(!str) return true
	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 fIsValidPhone(str){
	if(!str) return true
	str=fTrim(str)
	return /^(?:0[1-9]{1,2}[- ]?)?\d{7}$/ig.test(str)
}

function fIsValidCell(str){
	if(!str) return true
	str=fTrim(str)
	return /^(?:05[0-9][- ]?)?\d{7}$/ig.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];
}

function fIsValidIDNum(idnum){
	var arr=[], nSum=0
	if (idnum.length<9 || isNaN(idnum))return false
	for (var i=0; i<9; i++){
		arr[i]=idnum.substr(i,1)*((i%2)+1)
		if(arr[i]>9) arr[i]=(arr[i]%10)+1
		nSum+=arr[i]
	}
	nSum=nSum%10
	if (nSum>0) return false;
	return true;
}

function fIsNotEmptyEditor(){
	var oEditor = FCKeditorAPI.GetInstance('sText') 
	var str=oEditor.GetXHTML()
	return fIsNotEmpty(str)
}
