/**********************************************************************************************\
 Programmed by 
 	Carles Ortega González
 
 Maintaining this head comment, you can modify and distribute this code.
 
 If you modifies this code to made it better, send me the new source to carlesog@hotmail.com
\**********************************************************************************************/

var FIELDSEPARATOR="_";

function TrimLeft(sString) {
	var resultStr = "";
	var iCount = iStrLen = 0;
	sString += "";
	if (sString.length == 0) {
		resultStr = "";
	} else {	
		iStrLen = sString.length;
  		while ((iCount <= iStrLen) && (sString.charAt(iCount) == " ")) iCount++;
  		resultStr = sString.substring(iCount, iStrLen);
  	}
  	return resultStr;
}

function TrimRight(sString) {
	var iCount = 0;
	sString += "";	
	if (sString.length == 0) {
		resultStr = "";
	} else {
  		iCount = sString.length - 1;
  		while ((iCount >= 0) && (sString.charAt(iCount) == " ")) iCount--;
  		resultStr = sString.substring(0, iCount + 1);
  	}
  	return resultStr;
}

function Trim(sString) {
	var resultStr = "";	
	resultStr = TrimLeft(sString);
	resultStr = TrimRight(resultStr);
	return resultStr;
}

function fnAlwaysUpper(oObject) {
	var strTemp=oObject.value;
	strTemp=strTemp.toUpperCase();
	oObject.value=Trim(strTemp);
}

function fnCheckLength(oObject,iMin,iMax) {
	var sTemp=oObject.value;
	if (!((sTemp.length>=iMin) && (sTemp.length<=iMax))) {
		alert("El campo " + getDescriptionField(oObject.id) + " debe tener \n una longitud entre " + iMin + " y " + iMax + " carácteres.");
	}
	
	return ((sTemp.length>=iMin) && (sTemp.length<=iMax));
}

function fnGetSubString(sValue,sSeparator,iStrPosition) {
	var iSubStrCounter=0;
	var sToReturn="";
	for (iSubStrCounter=0;iSubStrCounter<iStrPosition;iSubStrCounter++){
		sToReturn=sValue.substr(0,sValue.indexOf(sSeparator,0));
		sValue=sValue.substr(sValue.indexOf(sSeparator,0)+1,sValue.length);				
	}		
	return sToReturn;
}

function fnIsValidMobilePhone(strPhone){
	return ((strPhone.charAt(0)=="6") && (/^\d{9}$/.test(strPhone)));
}

function fnIsValidPhone(strPhone){
	return ((strPhone.charAt(0)=="9") && (/^\d{9}$/.test(strPhone)));
}


function fnIsValidGeneralPhone(strPhone){
	return (((strPhone.charAt(0)=="9") && (/^\d{9}$/.test(strPhone))) || ((strPhone.charAt(0)=="6") && (/^\d{9}$/.test(strPhone))));
}

	function fnIsValidCIF(strCIF){
		var sTemp=strCIF;
		var sNum="";
		var sCad="";
		var iSumaPar=0;
		var iSumaImpar=0;
		var iSuma=0;
		var iCount=0;
		var iCount2=0;
		var strReturn="";
		var bValido=false;
		if (sTemp.length==9) {
			sNum=sTemp.substring(1,9)
			for (iCount=0;iCount<7;iCount++) { // 			for (iCount=1;iCount<=7;iCount++) {
				if (((iCount+1) % 2)==0) {
					iSumaPar=iSumaPar + parseInt(sNum.substring(iCount,1+iCount));
				} else {
					sCad = (2 * parseInt(sNum.substring(iCount,1+iCount))).toString();
					for (iCount2=0;iCount2<sCad.length;iCount2++){
						iSumaImpar=iSumaImpar+parseInt(sCad.substring(iCount2,1+iCount2));
					}
				}
			}
			iSuma=iSumaPar+iSumaImpar;
			iSumaMod10=iSuma % 10;
			if (iSumaMod10==0) {
				iSumaMod10=10 // Para los que acaban en 0
			}
		
			if (parseInt(sTemp.substring(8,9))==parseInt(10-iSumaMod10)) {
				bValido=true;
				strReturn=strCIF;
			}
		}
	return bValido;
	}

function fnGetNIFChar(strDNI) {
	var strCadena="TRWAGMYFPDXBNJZSQVHLCKET";
	var iPos = strDNI % 23;
	var strChar = strCadena.substring(iPos,iPos+1);
	return strChar;
}

function fnIsValidNIF(sValue) {
	var sTempValue=sValue.substring(0,sValue.length - 1);
	if (!/^\d{8}$/.test(sTempValue)) {
		return false;
	} else {
		return (fnGetNIFChar(sTempValue)==sValue.charAt(sValue.length-1));
	}
}

function fnIsValidLegalDocument(sValue) {
	// return (/^\w+([\.-]?\w+)+$/.test(sValue));
	if (/^\w+$/.test(sValue)) {
		for (iCount=0;iCount<=sValue.length;iCount++) {
			if (sValue.charAt(iCount)=="_") { return false; end;}
		}
		return true;
	} else {
		return false;
	}
}

function fnIsValidPassport(sValue) {
	// return (/^\w+([\.-]?\w+)+$/.test(sValue));
	if (/^\w+$/.test(sValue)) {
		for (iCount=0;iCount<=sValue.length;iCount++) {
			if (sValue.charAt(iCount)=="_") { return false; end;}
		}
		return true;
	} else {
		return false;
	}
}

function fnIsValidResidenceCard(sValue) {
	//return (/^[A-Z]\d\d\d\d\d\d\d[A-Z]$/.test(sValue))	
	if (/^\w+$/.test(sValue)) {
		for (iCount=0;iCount<=sValue.length;iCount++) {
			if (sValue.charAt(iCount)=="_") { return false; end;}
		}
		return true;
	} else {
		return false;
	}
}

function fnIsValidEMailAddress(sValue) {
	return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(sValue));
}

function fnIsValidNumber(sValue) {
	return (!isNaN(sValue) && (sValue!=""))
}

function fnIsValidWebAddress(sValue) {
	return ((sValue.indexOf("http://")>=0)&&(sValue.length>=11));
}

function fnGetDigitControl(strCadena){
	var arrNumbers = new Array(1,2,4,8,5,10,9,7,3,6);
    var iResult = 0;
    for (var i=0; i < arrNumbers.length; i++){
		iResult += parseInt(strCadena.charAt(i)) * arrNumbers[i];
	}
    iResult = 11 - (iResult % 11);
	if (iResult==11) { iResult = 0; }
	if (iResult==10) { iResult = 1; }
    return iResult;
}

function fnIsValidCCC(oObjectEntidad,oObjectOficina,oObjectDC,oObjectNC,sErrorColor,sCorrectColor) {
	/*
	// Se supone que ya comprobamos el formato con la función fnFormFilter, desde el formulario a filtrar
	if (!fnIsValidNumber(oObjectEntidad.value)) return false;
	if (!fnIsValidNumber(oObjectOficina.value)) return false;
	if (!fnIsValidNumber(oObjectDC.value)) return false;	
	if (!fnIsValidNumber(oObjectNC.value)) return false;
	*/
	
	if (fnCheckLength(oObjectEntidad,4,4) && fnCheckLength(oObjectOficina,4,4) && fnCheckLength(oObjectDC,2,2) && fnCheckLength(oObjectNC,10,10)) {
		if ((oObjectEntidad.value!="0000") && (oObjectOficina.value!="0000") && (oObjectNC.value!="0000000000")) {
			// Primer digito de control
			var strFirstControl="00"+oObjectEntidad.value+oObjectOficina.value;
			var strFirstDigit=fnGetDigitControl(strFirstControl);
			if (strFirstDigit != oObjectDC.charAt(0)) { 
				fnMarkField(oObjectEntidad, sErrorColor, true);
				fnMarkField(oObjectOficina, sErrorColor, false);
				fnMarkField(oObjectDC, sErrorColor, false);
				fnMarkField(oObjectNC, sErrorColor, false);		
				alert("El Código de Cuenta Cliente no és correcto.");		
				return false; 
			}
		
			// Segundo digito de control
			var strSecondControl=oObjectNC.value;
			var strSecondDigit=fnGetDigitControl(strSecondControl);
			if (strSecondDigit != oObjectDC.charAt(1)) { //
				fnMarkField(oObjectEntidad, sErrorColor, true);
				fnMarkField(oObjectOficina, sErrorColor, false);
				fnMarkField(oObjectDC, sErrorColor, false);
				fnMarkField(oObjectNC, sErrorColor, false);
				alert("El Código de Cuenta Cliente no és correcto.");		
				return false; 
			} else {
				fnMarkField(oObjectEntidad, sCorrectColor, false);
				fnMarkField(oObjectOficina, sCorrectColor, false);
				fnMarkField(oObjectDC, sCorrectColor, false);
				fnMarkField(oObjectNC, sCorrectColor, false);
				return true;
			}
		} else {
			return false;
		}
	} else {
			return false;
	}
}

function isRequired(objId) {
	return (fnGetSubString(objId,FIELDSEPARATOR,1)=="REQUIRED");
}

function getDescriptionField(objId){
	return Trim(fnGetSubString(objId,FIELDSEPARATOR,3));
}

function getTypeField(objId){
	var	sType="";
	sType=fnGetSubString(objId,FIELDSEPARATOR,2);
	return Trim(sType);
}

function getNullSelectValue(objId){
	return fnGetSubString(objId,FIELDSEPARATOR,4);
}

function isEmpty(oObject){
	return (Trim(oObject.value)=="");
}

function fnMarkField(oObject, sMarkColor, bSetFocus){
	oObject.style.backgroundColor=sMarkColor;
	if (bSetFocus) {
		oObject.focus();
	}
}

function fnFormFilter(formObject, sErrorColor, sCorrectColor) {
	var iControlsIn = formObject.elements.length;
	var iControlsCount = 0;
	var sErrorMessage = "";
	var sName = "";
	var bAssignFocus = true;
	
	for (iControlsCount=0;iControlsCount<iControlsIn;iControlsCount++) {		
		if ((formObject.elements[iControlsCount].type=="text") ||
			(formObject.elements[iControlsCount].type=="textarea") ||
			(formObject.elements[iControlsCount].type=="password") ||
			(formObject.elements[iControlsCount].type=="select-one") ||
			(formObject.elements[iControlsCount].type=="checkbox") ||			
			(formObject.elements[iControlsCount].type=="file")) {
			if (isRequired(formObject.elements[iControlsCount].id)) {
				if (formObject.elements[iControlsCount].type=="checkbox"){
					if (!(formObject.elements[iControlsCount].checked)) {
						sErrorMessage+="\nDebe activar el campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" para continuar";
					}
				} else if (formObject.elements[iControlsCount].type=="select-one"){
					if (formObject.elements[iControlsCount].value==getNullSelectValue(formObject.elements[iControlsCount].id)){
						sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" es obligatorio";
						fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
						bAssignFocus=false;
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				} else {
					if (isEmpty(formObject.elements[iControlsCount])) {
						sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" es obligatorio";
						fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
						bAssignFocus=false;
					} else {
						if (getTypeField(formObject.elements[iControlsCount].id)=="EMAIL") {
							if (!fnIsValidEMailAddress(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener una DIRECCIÓN E-MAIL válida";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="NUMBER") {
							if (!fnIsValidNumber(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un NÚMERO válido";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="WEB") {
							if (!fnIsValidWebAddress(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener una DIRECCIÓN WEB válida";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="NIF") {
							if (!fnIsValidNIF(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número NIF válido";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="CIF") {
							if (!fnIsValidCIF(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número CIF válido";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="PHONE") {
							if (!fnIsValidPhone(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de TELÉFONO FIJO válido";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="MOBILE") {
							if (!fnIsValidMobilePhone(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de TELÉFONO MÓVIL válido";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="PASSPORT") {
							if (!fnIsValidPassport(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de PASAPORTE válido";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="LEGALDOCUMENT") {
							if (!fnIsValidLegalDocument(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de DOCUMENTO válido";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="RESIDENCE") {
							if (!fnIsValidResidenceCard(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de TARJETA DE RESIDENCIA válido";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="GENERALPHONE") {
							if (!fnIsValidGeneralPhone(formObject.elements[iControlsCount].value)) {
								sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de TELÉFONO válido";
								fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
								bAssignFocus=false;
							} else {
								fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
							}
						} else if (getTypeField(formObject.elements[iControlsCount].id)=="TEXT") {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					}
				}
			} else {
				if (getTypeField(formObject.elements[iControlsCount].id)=="NUMBER") {
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidNumber(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un NÚMERO válido";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}				
				} else if (getTypeField(formObject.elements[iControlsCount].id)=="EMAIL") {
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidEMailAddress(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener una DIRECCIÓN E-MAIL válida";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				} else if (getTypeField(formObject.elements[iControlsCount].id)=="NIF") {				
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidNIF(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número NIF válido";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				} else if (getTypeField(formObject.elements[iControlsCount].id)=="CIF") {
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidCIF(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número CIF válido";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				} else if (getTypeField(formObject.elements[iControlsCount].id)=="PHONE") {
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidPhone(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de TELÉFONO FIJO válido";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				} else if (getTypeField(formObject.elements[iControlsCount].id)=="MOBILE") {
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidMobilePhone(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de TELÉFONO MÓVIL válido";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				} else if (getTypeField(formObject.elements[iControlsCount].id)=="PASSPORT") {
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidPassport(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de PASAPORTE válido";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				} else if (getTypeField(formObject.elements[iControlsCount].id)=="LEGALDOCUMENT") {
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidLegalDocument(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de DOCUMENTO válido";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				} else if (getTypeField(formObject.elements[iControlsCount].id)=="RESIDENCE") {
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidResidenceCard(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de TARJETA DE RESIDENCIA válido";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				} else if (getTypeField(formObject.elements[iControlsCount].id)=="GENERALPHONE") {
					if (!isEmpty(formObject.elements[iControlsCount])) {
						if (!fnIsValidGeneralPhone(formObject.elements[iControlsCount].value)) {
							sErrorMessage+="\nEl campo \"" + getDescriptionField(formObject.elements[iControlsCount].id) + "\" debería contener un número de TELÉFONO válido";
							fnMarkField(formObject.elements[iControlsCount], sErrorColor, bAssignFocus);
							bAssignFocus=false;
						} else {
							fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
						}
					} else {
						fnMarkField(formObject.elements[iControlsCount], sCorrectColor, false);
					}
				}
			}
		}
	}
	if (Trim(sErrorMessage)=="") { 
	bt_acept();
		return true;
	} else {
		alert(sErrorMessage);
		return false;
	}
}