var FIELD_NULL					= "Debe rellenar el campo.";
var FIELD_NULL_ca				= "Ha d'omplir el camp.";
var FIELD_CHAR_INVALID			= "El campo contiene caracteres no válidos.";
var FIELD_CHAR_INVALID_ca		= "El camp conté caràcters no vàlids.";
var FIELD_INVALID				= "El valor del campo no es válido.";
var FIELD_INVALID_ca			= "El valor del camp no és vàlid.";
var FIELD_NOTNUMERIC			= "El valor del campo sólo puede contener números.";
var FIELD_NOTNUMERIC_ca			= "El valor del camp només pot contenir números.";
var FIELD_NOTINTEGER			= "El valor del campo debe ser un número entero.";
var FIELD_NOTINTEGER_ca			= "El valor del camp ha de ser un número enter.";
var FIELD_MAX_SIZE				= "La longitud del valor del campo excede el máximo permitido.";
var FIELD_MAX_SIZE_ca			= "La longitud del valor del camp excedeix el màxim permès.";
var FIELD_MIN_SIZE				= "La longitud del valor del campo no llega al mínimo permitido.";
var FIELD_MIN_SIZE_ca			= "La longitud del valor del camp no arriba al mínim permès.";
var FIELD_SIZE					= "La longitud del valor del campo no es correcta.";
var FIELD_SIZE_ca				= "La longitud del valor del camp no és correcta.";
var FIELD_NOT_ALFANUMERIC		= "Sólo se admiten caracteres alfanuméricos para el campo.";
var FIELD_NOT_ALFANUMERIC_ca	= "Només s'admeten caràcters alfanumèrics pel camp.";
var FIELD_NOT_ALFABETIC			= "Sólo se admiten caracteres alfabéticos para el campo.";
var FIELD_NOT_ALFABETIC_ca		= "Només s'admeten caràcters alfabètics pel camp.";
var FIELD_NOT_VALUE				= "El campo contiene un valor que no es válido.";
var FIELD_NOT_VALUE_ca			= "El camp conté un valor que no és vàlid.";
    
var LEER_CONDICIONES_LEGALES_es = "Debe leer y aceptar las condiciones legales para poder continuar.";
var LEER_CONDICIONES_LEGALES_ca = "Ha de llegir i acceptar les condicions legals per a poder continuar.";
var IDIOMA_NOTVALID				= "El código del idioma no es válido.";
var IDIOMA_NOTVALID_ca			= "El codi de l'idioma no és vàlid.";
var DATE_FORMAT_INVALID			= "El formato de la fecha no es válido.";
var DATE_FORMAT_INVALID_ca		= "El format de la data no és vàlid.";
var TELEPHONE_FIRST_CHAR		= "El número de teléfono debe empezar por 6,7,8 (excepto 80) ó 9.";
var TELEPHONE_FIRST_CHAR_ca		= "El número de telèfon ha de començar per 6,7,8 (excepte 80) ó 9.";
var TELEPHONE_SIZE				= "La longitud del número de teléfono debe ser de 9 caracteres, 12 si se añade el código del país.";
var TELEPHONE_SIZE_ca			= "La longitud del número de telèfon ha de ser de 9 caràcters, 12 si s'afegeix el codi del país.";
var TELEPHONE_NOTNUMERIC		= "El número de teléfono sólo puede contener cifras.";
var TELEPHONE_NOTNUMERIC_ca		= "El número de telèfon només pot contenir xifres.";
var TELEPHONE_FORMAT			= "El número de teléfono no es correcto (el formato es [XX+]XXXXXXXXX).";
var TELEPHONE_FORMAT_ca			= "El número de telèfon no és correcte (el format és [XX+]XXXXXXXXX).";
var CREDITCARD_NULL				= "Debe rellenar el número de tarjeta.";
var CREDITCARD_NULL_ca			= "Ha d'omplir el número de targeta.";
var CREDITCARD_INVALID			= "El número de tarjeta no es correcto.";
var CREDITCARD_INVALID_ca		= "El número de targeta no és correcte.";
var CREDITCARD_NOTNUMERIC		= "El número de tarjeta sólo puede contener números.";
var CREDITCARD_NOTNUMERIC_ca	= "El número de targeta només pot contenir números.";
var CREDITCARD_SIZE				= "El número de tarjeta debe ser de 13 a 16 cifras.";
var CREDITCARD_SIZE_ca			= "El número de targeta ha de ser de 13 a 16 xifres.";
var CVV2_NULL					= "Debe rellenar el campo código de verificación de tarjeta (CVV2).";
var CVV2_NULL_ca				= "Ha d'omplir el camp codi de verificació de targeta (CVV2).";
var CVV2_NOTNUMERIC				= "El campo código de verificación de tarjeta (CVV2) sólo puede contener números.";
var CVV2_NOTNUMERIC_ca			= "El camp codi de verificació de targeta (CVV2) només pot contenir números.";
var CVV2_SIZE					= "El campo código de verificación de tarjeta (CVV2) debe ser de 3 cifras.";
var CVV2_SIZE_ca				= "El camp codi de verificació de targeta (CVV2) ha de ser de 3 xifres.";
var CP_NUMERIC 					= "El Código Postal debe estar compuesto por 5 cifras numéricas.";
var CP_NUMERIC_ca 				= "El Codi Postal ha d'estar composat por 5 xifres numèriques.";
var CP_INVALID					= "El Código Postal no es válido.";
var CP_INVALID_ca				= "El Codi Postal no és vàlid.";
var CP_PROVINCE_INVALID			= "El Código Postal no es válido para la provincia indicada.";
var CP_PROVINCE_INVALID_ca		= "El Codi Postal no és vàlid per la província indicada.";
var DAY_INVALID					= "El día de la fecha debe estar comprendido entre 1 y 31.";
var DAY_INVALID_ca				= "El dia de la data ha d'estar comprès entre 1 i 31.";
var DAY_IN_MONTH_INVALID		= "El día de la fecha introducida no es correcto para el mes.";
var DAY_IN_MONTH_INVALID_ca		= "El dia de la data introduïda no és correcte pel mes.";
var MONTH_INVALID				= "El mes de la fecha tiene que estar comprendido entre 1 y 12.";
var MONTH_INVALID_ca			= "El mes de la data ha d'estar comprès entre 1 i 12.";
var YEAR_INVALID				= "El año de la fecha debe estar comprendido entre 2000 y 2100.";
var YEAR_INVALID_ca				= "L'any de la data ha d'estar comprès entre 2000 i 2100.";
var EXPIRATION_DATE_MONTH		= "El mes de la fecha de caducidad debe estar comprendido entre 01 y 12.";
var EXPIRATION_DATE_MONTH_ca	= "El mes de la data de caducitat ha d'estar comprès entre 01 i 12.";
var EXPIRATION_DATE_YEAR		= "El año de la fecha de caducidad debe estar comprendido entre 00 y 99.";
var EXPIRATION_DATE_YEAR_ca		= "L'any de la data de caducitat ha d'estar comprès entre 00 i 99.";
var EXPIRATION_DATE_INF			= "La fecha de caducidad no puede ser inferior a la fecha actual.";
var EXPIRATION_DATE_INF_ca		= "La data de caducitat no pot ser inferior a la data actual.";
var EXPIRATION_DATE_SUP			= "La fecha de caducidad no puede exceder 5 años de la fecha actual.";
var EXPIRATION_DATE_SUP_ca		= "La data de caducitat no pot excedir 5 anys de la data actual.";
var IMPORTE_NULL				= "Debe rellenar el campo \"Importe\".";
var IMPORTE_NULL_ca				= "Ha d'omplir el camp \"Import\".";
var IMPORTE_DECIMAL_NULL		= "Debe rellenar la parte decimal o quitar la coma del campo \"Importe\".";
var IMPORTE_DECIMAL_NULL_ca		= "Ha d'omplir la part decimal o treure la coma del camp \"Import\".";
var IMPORTE_DECIMAL_SIZE		= "La longitud de la parte decimal debe tener como máximo dos dígitos.";
var IMPORTE_DECIMAL_SIZE_ca		= "La longitud de la part decimal ha de tenir com a màxim dos dígits.";
var IMPORTE_FORMATO				= "El importe no es correcto (el formato es 99999,99).";
var IMPORTE_FORMATO_ca			= "L'import no és correcte (el format és 99999,99).";
var IMPORTE_MINIMO				= "El importe mínimo debe ser de 6 euros.";
var IMPORTE_MINIMO_ca			= "L'import mínim ha de ser de 6 euros.";
var EXPIRATION_DATE_SIZE		= "La longitud de la fecha de caducidad es incorrecta.";
var EXPIRATION_DATE_SIZE_ca		= "La longitud de la data de caducidad és incorrecta.";
var EXPIRATION_DATE_NOTNUMERIC 	= "La fecha de caducidad sólo puede contener cifras.";
var EXPIRATION_DATE_NOTNUMERIC_ca = "La data de caducitat només pot contenir xifres.";
var EXPIRATION_MONTH_SIZE		= "El mes de la fecha de caducidad ha de tener dos cifras.";
var EXPIRATION_MONTH_SIZE_ca	= "El mes de la data de caducitat ha de tenir dues xifres.";
var EXPIRATION_YEAR_SIZE		= "El año de la fecha de caducidad ha de tener dos cifras.";
var EXPIRATION_YEAR_SIZE_ca		= "L'any de la data de caducitat ha de tenir dues xifres.";
var EXPIRATION_MONTH_NOTNUMERIC = "El mes de la fecha de caducidad sólo puede contener cifras.";
var EXPIRATION_MONTH_NOTNUMERIC_ca = "El mes de la data de caducitat només pot contenir xifres.";
var EXPIRATION_YEAR_NOTNUMERIC 	= "El año de la fecha de caducidad sólo puede contener cifras.";
var EXPIRATION_YEAR_NOTNUMERIC_ca = "L'any de la data de caducitat només pot contenir xifres.";

var NIF_CIF_NIE_INVALID			= "No ha introducido un NIF/CIF/NIE válido.";
var NIF_CIF_NIE_INVALID_ca		= "No ha introduït un NIF/CIF/NIE vàlid.";
var NIF_NIE_INVALID				= "No ha introducido un NIF/NIE válido.";
var NIF_NIE_INVALID_ca			= "No ha introduït un NIF/NIE vàlid.";
var NIF_NUMERIC					= "Los primeros 8 caracteres del NIF han de ser numéricos.";
var NIF_NUMERIC_ca				= "Els primers 8 caràcters del NIF han de ser numèrics.";
var NIF_LETRA					= "La letra indicada en el NIF no es correcta.";
var NIF_LETRA_ca				= "La lletra indicada en el NIF no és correcta.";
var NIF_SIZE					= "La longitud del NIF no es correcta.";
var NIF_SIZE_ca					= "La longitud del NIF no és correcta.";
var NIE_NUMERIC					= "Todos los caracteres del NIE excepto el primero y el último deben ser numéricos.";
var NIE_NUMERIC_ca				= "Tots els caràcters del NIE excepte el primer i l'últim han de ser numèrics.";
var NIE_LETRA					= "La letra indicada en el NIE no es correcta.";
var NIE_LETRA_ca				= "La lletra indicada en el NIE no és correcta.";
var NIE_SIZE					= "La longitud del NIE no es correcta.";
var NIE_SIZE_ca					= "La longitud del NIE no és correcta.";
var NIE_FIRST_CHAR				= "El primer caràcter del NIE debe ser X, Y o Z.";
var NIE_FIRST_CHAR_ca			= "El primer caràcter del NIE ha de ser X, Y o Z.";
var NIE_LAST_CHAR				= "El último caràcter del NIE no es correcto.";
var NIE_LAST_CHAR_ca			= "L'últim caràcter del NIE no és correcte.";
var CIF_NUMERIC_PART			= "La parte numérica del CIF contiene caracteres no numéricos.";
var CIF_NUMERIC_PART_ca			= "La part numèrica del CIF conté caràcters no numèrics.";
var CIF_FIRST_CHAR				= "El primer carácter del CIF no es válido.";
var CIF_FIRST_CHAR_ca			= "El primer caràcter del CIF no és vàlid.";
var CIF_CONTROL_DIGIT			= "El dígito de control del CIF no es correcto.";
var CIF_CONTROL_DIGIT_ca		= "El dígit de control del CIF no és correcte.";
var CIF_SIZE					= "La longitud del CIF no es correcta.";
var CIF_SIZE_ca					= "La longitud del CIF no és correcta.";
var IP_NOTVALID					= "El formato de la dirección IP no es válido.";
var IP_NOTVALID_ca				= "El format de la direcció IP no és vàlid.";


/***************************************/
/******** FUNCIONES AUXILIARES *********/
/***************************************/
//Quita espacios por la izquierda
function leftTrim(aValue){
	aValue = aValue.toString();
	while (aValue.substring(0,1) == ' ')
		aValue = aValue.substring(1, aValue.length);
	
	return aValue;
}

//Quita espacios por la derecha
function rightTrim(aValue){
	aValue = aValue.toString();
	while (aValue.substring(aValue.length-1, aValue.length) == ' ')
		aValue = aValue.substring(0,aValue.length-1);

	return aValue;
}

//Quita espacios por la derecha y la izquierda
function trim(aValue){
	aValue = leftTrim(aValue);
	aValue = rightTrim(aValue);
	return aValue;
}

//valida que haya algun caracter
function validateNotNull(aValue) {
	var val;
	if(aValue!=undefined)
		val = trim(aValue);
	if(val==undefined || val.toString().length==0)
		return FIELD_NULL;

	return true;
}

//valida que haya algun caracter y devuelve mensaje de error con idioma y nombre de campo
function validateNotNullCampo(aValue, aField, aIdioma){
	var val;
	if(aValue!=undefined)
		val = trim(aValue);
	if(val==undefined || val.toString().length==0){	
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \""+aField+"\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \""+aField+"\"");
	}
	return true;
}


//valida que la longitud del campo sea la que queremos
function validateLength(aValue, aLength){
	var val = trim(aValue);
	var value=val.toString();
	if(value.length==aLength) return true;
	else return FIELD_SIZE;
}

//valida que la longitud del campo sea la que queremos y devuelve
//mensaje de error con idioma y nombre del campo
function validateLengthCampo(aValue, aLength, aField, aIdioma){
	var val = trim(aValue);
	var value=val.toString();
	if(value.length==aLength) return true;
	else{
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \""+aField+"\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \""+aField+"\"");
	}
}

//valida que el campo no exceda una determinada longitud
function validateMaxLength(aValue, aMaxLength){
	var val = trim(aValue);
	var value = aValue.toString();
	if(value.length > aMaxLength) return FIELD_MAX_SIZE;

	return true;
}

//valida que el campo no exceda una determinada longitud y devuelve mensaje de error
//con idioma y nombre del campo
function validateMaxLengthCampo(aValue, aMaxLength, aField, aIdioma){
	var val = trim(aValue);
	var value = aValue.toString();
	if(value.length > aMaxLength){
		if(aIdioma=="es") return FIELD_MAX_SIZE.replace("campo","campo \""+aField+"\"");
		else if(aIdioma=="ca") return FIELD_MAX_SIZE_ca.replace("camp","camp \""+aField+"\"");
	}
	return true;
}

//valida que el campo no sea inferior a una determinada longitud
function validateMinLength(aValue, aMinLength){
	var val = trim(aValue);
	value = val.toString();
	if(value.length < aMinLength) return FIELD_MIN_SIZE;

	return true;
}

//valida que el campo no sea inferior a una determinada longitud
//y devuelve mensaje de error con idioma y nombre de campo
function validateMinLengthCampo(aValue, aMinLength, aField, aIdioma){
	var val = trim(aValue);
	value = val.toString();
	if(value.length < aMinLength){
		if(aIdioma=="es") return FIELD_MIN_SIZE.replace("campo","campo \""+aField+"\"");
		else if(aIdioma=="ca") return FIELD_MIN_SIZE_ca.replace("camp","camp \""+aField+"\"");
	}

	return true;
}

//Quita ceros por la izquierda
function quitarCeros(aNum){
	var i=0;
	while(aNum.charAt(i)=='0'){
		aNum = aNum.substring(i+1,aNum.length);
	}
	return aNum;
}

//valida si un valor es numÃ.Â©rico y entero
function validateInteger(aValue){
	var tabla= "0123456789";
	var MENOS = "-";
	var val = trim(aValue);

	if(tabla.indexOf(val.charAt(0))==-1 && val.charAt(0)!=MENOS) return FIELD_NOTINTEGER;
	if(val.charAt(0)==MENOS && val.length==1) return FIELD_NOTINTEGER;
	for(i=1; i<val.length; i++){
		if(tabla.indexOf(val.charAt(i))==-1) return FIELD_NOTINTEGER;
	}

	return true;
}

//valida si un valor es numÃ.Â©rico, entero y positivo
function validateIntegerPositive(aValue){
	var tabla= "0123456789";
	var val = trim(aValue);

	for(i=0; i<val.length; i++){
		if(tabla.indexOf(val.charAt(i))==-1) return FIELD_NOTINTEGER;
	}

	return true;
}

//Valida que solo hayan caracteres alfabeticos (los definidos en la funcion) en una cadena de entrada
function validateAlfabetic(aValue){
	var val = trim(aValue);
	var tabla ="ªABCDEFGHIKJLMNOPQRSTUVWXYZÇÑabcdefghijklmnopqrstuvwxyzçñ/.,áéíóúàèìòùäëïöüâêîôûÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ ";
	var value = val.toString();

	for(i=0; i<value.length; i+=1){
		if(tabla.indexOf(value.substring(i,i+1))==-1) return FIELD_NOT_ALFABETIC;
	}
	return true;
}

//Valida que solo hayan caracteres alfabeticos (los definidos en la funcion) en una cadena de entrada
//y devuelve mensaje de error con idioma y nombre de campo
function validateAlfabeticCampo(aValue, aField, aIdioma){
	var val = trim(aValue);
	var tabla ="ªABCDEFGHIKJLMNOPQRSTUVWXYZÇÑabcdefghijklmnopqrstuvwxyzçñ/.,áéíóúàèìòùäëïöüâêîôûÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ ";
	var value = val.toString();

	for(i=0; i<value.length; i+=1){
		if(tabla.indexOf(value.substring(i,i+1))==-1){
			if(aIdioma=="es") return FIELD_NOT_ALFABETIC.replace("campo","campo \""+aField+"\"");
			else if(aIdioma=="ca") return FIELD_NOT_ALFABETIC_ca.replace("camp","camp \""+aField+"\"");
		}
	}
	return true;
}

//Valida que solo hayan caracteres alfanumericos (los definidos en la funcion) en una cadena de entrada
function validateAlfanumeric(aValue){
	var val = trim(aValue);
	var tabla ="ªºABCDEFGHIKJLMNOPQRSTUVWXYZÇÑabcdefghijklmnopqrstuvwxyzçñ,áéíóúàèìòùäëïöüâêîôûÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ-.,/()`'¿^ 0123456789";
	var value = val.toString();

	for(i=0; i<value.length; i+=1){
		if(tabla.indexOf(value.substring(i,i+1))==-1) return FIELD_NOT_ALFANUMERIC;
	}

	return true;
}

//Valida que solo hayan caracteres alfanumericos (los definidos en la funcion) en una cadena de entrada
//y devuelve mensaje de error con idioma y nombre de campo
function validateAlfanumericCampo(aValue, aField, aIdioma){
	var val = trim(aValue);
	var tabla ="ªºABCDEFGHIKJLMNOPQRSTUVWXYZÇÑabcdefghijklmnopqrstuvwxyzçñ,áéíóúàèìòùäëïöüâêîôûÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ-.,/()`'¿^ 0123456789";
	var value = val.toString();

	for(i=0; i<value.length; i+=1){
		if(tabla.indexOf(value.substring(i,i+1))==-1){
			if(aIdioma=="es") return FIELD_NOT_ALFANUMERIC.replace("campo","campo \""+aField+"\"");
			else if(aIdioma=="ca") return FIELD_NOT_ALFANUMERIC_ca.replace("camp","camp \""+aField+"\"");	
		}	
	}

	return true;
}

//Valida que el parametro "aValue" sea igual al parametro "aCompared"
//y devuelve mensaje de error con idioma y nombre de campo
function validateValueCampo(aValue, aCompared, aField, aIdioma){
	var val = validateNotNullCampo(aValue, aField, aIdioma);
	if(val!=true){
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \""+aField+"\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \""+aField+"\"");
	}
	if( aValue.toString() != aCompared ){
		if(aIdioma=="es") return FIELD_INVALID.replace("campo","campo \""+aField+"\"");
		else if(aIdioma=="ca") return FIELD_INVALID_ca.replace("camp","camp \""+aField+"\"");
	}
	return true;
}

//Valida que un Radio Button esta checkeado
function chekedRadioButton(aValue) {
	var selectedButton;
	
	for (i=0; i< aValue.length; i++) {
				if (aValue[i].checked)
					selectedButton = aValue[i].value;
			}
 return selectedButton;
}

/*************************************************************/
/******** VALIDACIONES GENERICAS DEL DATA DICTIONARY *********/
/*************************************************************/

//GEN_idioma
function validateIdioma(aValue, aIdioma){
	aValue = trim(aValue).toLowerCase();
	if(aValue!="ca" && aValue!="es"){
		if(aIdioma=="es") return IDIOMA_NOTVALID;
		else if(aIdioma=="ca") return IDIOMA_NOTVALID_ca;
	}

	return true;
}

//GEN_fecha
function validateFecha(aValue, aIdioma){
	aValue = trim(aValue);
	var fecha= new String(aValue);

	// Cadena Día
	var dia= new String(fecha.substring(0,2));
	// Cadena Mes
	var mes= new String(fecha.substring(2,4));
	// Cadena Año
	var ano= new String(fecha.substring(4,8));
	// Valida el año
	if (isNaN(ano) || ano.length<4 || parseInt(ano,10)<2000 || parseInt(ano,10)>2100){
		if(aIdioma=="es") return YEAR_INVALID;
		else if(aIdioma=="ca") return YEAR_INVALID_ca;
	}

	// Valida el Mes
	if (isNaN(mes) || parseFloat(mes)<1 || parseFloat(mes)>12){
		if(aIdioma=="es") return MONTH_INVALID;
		else if(aIdioma=="ca") return MONTH_INVALID_ca;
	}

	// Valida el Dia
	if (isNaN(dia) || parseInt(dia,10)<1 || parseInt(dia,10)>31){
		if(aIdioma=="es") return DAY_INVALID;
		else if(aIdioma=="ca") return DAY_INVALID_ca;
	}

	if (mes==4 || mes==6 || mes==9 || mes==11)
		if (dia>30){
			if(aIdioma=="es") return DATE_FORMAT_INVALID;
			else if(aIdioma=="ca") return DATE_FORMAT_INVALID_ca;
		}
	
	if (mes==2){
		if(ano>=2000 && ano<2100 && ano%4==0){
			if(dia>29){
				if(aIdioma=="es") return DAY_IN_MONTH_INVALID;
				else if(aIdioma=="ca") return DAY_IN_MONTH_INVALID_ca;
			}
		}else
			if(dia>28){
				if(aIdioma=="es") return DAY_IN_MONTH_INVALID;
				else if(aIdioma=="ca") return DAY_IN_MONTH_INVALID_ca;
			}
	}

  return true;
}

//GEN_importe
function validateImport(aValue,aIdioma){
	var val = trim(aValue);
	var entero, decimal;

	//valida formato (XXXXX(,XX))
	if(val.indexOf(",")!=-1){
		entero = val.substring(0, val.indexOf(","));
		decimal = val.substring(val.indexOf(",")+1, val.length);

		if(validateNotNull(decimal)!=true){
			if(aIdioma=="es") return IMPORTE_DECIMAL_NULL;
			else if(aIdioma=="ca") return IMPORTE_DECIMAL_NULL_ca;
		}

		if(validateIntegerPositive(decimal)!=true){
			if(aIdioma=="es") return FIELD_NOTINTEGER.replace("del campo","de la parte decimal del campo \"Importe\"");
			else if(aIdioma=="ca") return FIELD_NOTINTEGER_ca.replace("del camp","de la part decimal del camp \"Import\"");
		}
		
		if(validateMaxLength(decimal,2)!=true){
			if(aIdioma=="es") return IMPORTE_DECIMAL_SIZE;
			else if(aIdioma=="ca") return IMPORTE_DECIMAL_SIZE_ca;
		}
	}else{
		entero = val;
	}
	
	if(validateIntegerPositive(entero)!=true){
		if(aIdioma=="es") return FIELD_NOT_VALUE.replace("campo","campo \"Importe\"");
		else if(aIdioma=="ca") return FIELD_NOT_VALUE_ca.replace("camp","camp \"Import\"");
	}
	if(validateMaxLength(entero,5)!=true){
		if(aIdioma=="es") return FIELD_MAX_SIZE.replace("campo","campo \"Importe\"");
		else if(aIdioma=="ca") return FIELD_MAX_SIZE_ca.replace("camp","camp \"Import\"");
	}

	//valida que sea mayor que 6
	if(val.indexOf(",")!=-1)
		val = aValue.replace(",",".");
	
	if(val<6){
		if(aIdioma=="es") return IMPORTE_MINIMO;
		else if(aIdioma=="ca") return IMPORTE_MINIMO_ca;
	}

	return true;
}

//GEN_importeMTLO
function validateImportMTLO(imp, aIdioma){
	imp = trim(imp);
	if(validateIntegerPositive(imp)!=true){
		if(aIdioma=="es") return FIELD_NOT_VALUE.replace("campo","campo \"Importe MTLO\"");
		else if(aIdioma=="ca") return FIELD_NOT_VALUE_ca.replace("camp","camp \"Import MTLO\"");
	}
	if (validateLength(imp,7)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"Importe MTLO\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"Import MTLO\"");
	}

	return true;
}

//GEN_nombreCliente
function validateNombre(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateAlfabetic(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOT_ALFABETIC.replace("campo","campo \"Nombre\"");
		else if(aIdioma=="ca") return FIELD_NOT_ALFABETIC_ca.replace("camp","camp \"Nom\"");
	}
	return true;
}

//GEN_apellido1Cliente
function validatePrimerApellido(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateAlfabetic(aValue)!=true){
		if(aIdioma=="es")return FIELD_NOT_ALFABETIC.replace("campo","campo \"Primer Apellido\"");
		else if(aIdioma=="ca")return FIELD_NOT_ALFABETIC_ca.replace("camp","camp \"Primer Cognom\"");
	}

	return true;
}

//GEN_apellido2Cliente
function validateSegundoApellido(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateAlfabetic(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOT_ALFABETIC.replace("campo","campo \"Segundo Apellido\"");
		else if(aIdioma=="ca") return FIELD_NOT_ALFABETIC_ca.replace("camp","camp \"Segon Cognom\"");
	}

	return true;
}

//GEN_direccionCliente
function validateDireccion(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateAlfanumeric(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOT_ALFANUMERIC.replace("campo","campo \"Dirección\"");
		else if(aIdioma=="ca") return FIELD_NOT_ALFANUMERIC_ca.replace("camp","camp \"Adreça\"");
	}

	return true;
}

//GEN_cPostalCliente
function validateCodigoPostal(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOTINTEGER.replace("campo","campo \"Código Postal\"");
		else if(aIdioma=="ca") return FIELD_NOTINTEGER_ca.replace("camp","camp \"Codi Postal\"");
	}
	if(validateLength(aValue,5)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"Código Postal\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"Codi Postal\"");
	}

	return true;
}

//GEN_poblacionCliente
function validatePoblacion(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateAlfanumeric(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOT_ALFANUMERIC.replace("campo","campo \"Población\"");
		else if(aIdioma=="ca") return FIELD_NOT_ALFANUMERIC_ca.replace("camp","camp \"Població\"");
	}

	return true;
}

//GEN_provinciaCliente
function validateProvincia(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateAlfanumeric(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOT_ALFANUMERIC.replace("campo","campo \"Provincia\"");
		else if(aIdioma=="ca") return FIELD_NOT_ALFANUMERIC_ca.replace("camp","camp \"Província\"");
	}

	return true;
}

//GEN_telfCliente
function validateTelefono(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOTINTEGER.replace("campo","campo \"Teléfono\"");
		else if(aIdioma=="ca") return FIELD_NOTINTEGER_ca.replace("camp","camp \"Telèfon\"");
	}
	if(validateLength(aValue,9)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"Teléfono\"");
		if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"Telèfon\"");
	}
	if(aValue.charAt(0)!="6" && aValue.charAt(0)!="9" && aValue.charAt(0)!="7" && !(aValue.charAt(0)=="8" && aValue.charAt(1)!="0")){
		if(aIdioma=="es") return TELEPHONE_FIRST_CHAR;
		else if(aIdioma=="cas") return TELEPHONE_FIRST_CHAR_ca;
	}

	return true;
}

//GEN_nifCifNieCliente
function validateNIFCIFNIE(aValue, aIdioma){
	aValue = trim(aValue);

	var nifnie_ultim = "TRWAGMYFPDXBNJZSQVHLCKE";	
	var nie_primer = "XYZ";
	var cif_primer = "ABCDEFGHJKLMNPRQSUVW";
	var cif_ultim = "JABCDEFGHI";

	var first_char = aValue.substring(0,1).toUpperCase();
	var last_char  = aValue.substring(aValue.length-1, aValue.length).toUpperCase();
	var resultado;


	//El valor introducido es un NIF
	if(validateIntegerPositive(first_char)==true){
		if(validateLength(aValue,9)!=true){
			if(aIdioma=="es") return NIF_SIZE;
			else if(aIdioma=="ca") return NIF_SIZE_ca;
		}
		var numero_nif = aValue.substring(0,aValue.length-1);
		if(validateIntegerPositive(numero_nif)!=true){
			if(aIdioma=="es") return NIF_NUMERIC;
			else if(aIdioma=="ca") return NIF_NUMERIC_ca;
		}
		if(nifnie_ultim.indexOf(last_char)==-1){
			if(aIdioma=="es") return NIF_LETRA;
			else if(aIdioma=="ca") return NIF_LETRA_ca;
		}

		resultado = numero_nif % 23;
		var letra_resul = nifnie_ultim.substring(resultado, resultado+1);

		if(letra_resul!=last_char){
			if(aIdioma=="es") return NIF_LETRA;
			else if(aIdioma=="ca") return NIF_LETRA_ca;
		}

		return true;
	}
	
	//El valor introducido es un NIE
	if(nie_primer.indexOf(first_char)!=-1){
		if(validateLength(aValue,9)!=true && validateLength(aValue,10)!=true){
			if(aIdioma=="es") return NIE_SIZE;
			else if(aIdioma=="ca") return NIE_SIZE_ca;
		}
		var numero_nie = aValue.substring(1,aValue.length-1);
		if(numero_nie.length==8 && numero_nie.substring(0,1)!='0'){
			if(aIdioma=="es") return NIE_SIZE;
			else if(aIdioma=="ca") return NIE_SIZE_ca;
		}
		if(validateIntegerPositive(numero_nie)!=true){
			if(aIdioma=="es") return NIE_NUMERIC;
			else if(aIdioma=="ca") return NIE_NUMERIC_ca;
		}
		if(nifnie_ultim.indexOf(last_char)==-1){
			if(aIdioma=="es") return NIE_LETRA;
			else if(aIdioma=="ca") return NIE_LETRA_ca;
		}

		resultado = nie_primer.indexOf(first_char) + numero_nie;
		resultado = resultado % 23;
		var letra_resul = nifnie_ultim.substring(resultado, resultado+1);

		if(letra_resul!=last_char){
			if(aIdioma=="es") return NIE_LETRA;
			else if(aIdioma=="ca") return NIE_LETRA_ca;
		}

		return true;
	}

	//El valor introducido es un CIF
	if(cif_primer.indexOf(first_char)!=-1){
		if(validateLength(aValue,9)!=true){
			if(aIdioma=="es") return CIF_SIZE;
			else if(aIdioma=="ca") return CIF_SIZE_ca;
		}
		var numero_cif = aValue.substring(1, aValue.length-1);
		if(validateIntegerPositive(numero_cif)!=true){
			if(aIdioma=="es") return CIF_NUMERIC_PART;
			else if(aIdioma=="ca") return CIF_NUMERIC_PART_ca;
		}

		//Verificamos último caracter
		var sumaDigitosPares=0, sumaDigitosImpares=0, numero=0, digitoControl=0;

		//Suma los dígitos pares de la cadena resultante de quitar el primer y último caracter del CIF
		for(i=1; i<numero_cif.length; i=i+2){
			sumaDigitosPares = sumaDigitosPares + parseInt( numero_cif.substring(i,i+1),10 );
		}
	
		//Multiplicar por 2 los dígitos impares de la cadena resultante de quitar el primer y último caracter del CIF
		//y con cada resultado, sumar sus dígitos.
		//Sumarlo todo
		for(j=0; j<numero_cif.length; j=j+2){
			numero = parseInt( numero_cif.substring(j,j+1),10 ) * 2;
			if (numero > 9)		numero = (numero % 10) + 1;
			sumaDigitosImpares = sumaDigitosImpares + numero;
		}
		
		//Sumar la suma de dígitos pares y la de dígitos impares
		//Coger la última cifra del número obtenido y restarlo a 10
		numero = sumaDigitosPares + sumaDigitosImpares;	
		numero = numero % 10;

		digitoControl = 10 - numero;
		if(digitoControl==10) digitoControl=0;
		var strDigitoControl="";

		//comprueba el dígito de control, que puede ser letra o número
		if(first_char=='A' || first_char=='B' || first_char=='E' || first_char=='H')
			strDigitoControl = digitoControl.toString();
		else if(first_char=='K' || first_char=='P' || first_char=='Q' || first_char=='S')
			strDigitoControl = cif_ultim.substring(digitoControl, digitoControl+1);
		else{
			if(validateIntegerPositive(last_char)==true || last_char=='0')
				strDigitoControl = digitoControl.toString();
			else
				strDigitoControl = cif_ultim.substring(digitoControl, digitoControl+1);
		}

		//Comprueba si el dígito de control se corresponde correctamente
		if(strDigitoControl!=last_char){
			if(aIdioma=="es") return CIF_CONTROL_DIGIT;
			else if(aIdioma=="ca") return CIF_CONTROL_DIGIT_ca;
		}

		
		return true;
	}
	
	if(aIdioma=="es") return NIF_CIF_NIE_INVALID;
	else if(aIdioma=="ca") return NIF_CIF_NIE_INVALID_ca;

}




//GEN_NIF_NIE
function validateNIFNIE(aValue, aIdioma){
	aValue = trim(aValue);
	var nifnie_ultim = "TRWAGMYFPDXBNJZSQVHLCKE";
	var nie_primer = "XYZ";
	var first_char = aValue.substring(0,1).toUpperCase();
	var last_char  = aValue.substring(aValue.length-1, aValue.length).toUpperCase();
	var resultado;

	//El valor introducido es un NIF
	if(validateIntegerPositive(first_char)==true){
		if(validateLength(aValue,9)!=true){
			if(aIdioma=="es") return NIF_SIZE;
			else if(aIdioma=="ca") return NIF_SIZE_ca;
		}
		var numero_nif = aValue.substring(0,aValue.length-1);
		if(validateIntegerPositive(numero_nif)!=true){
			if(aIdioma=="es") return NIF_NUMERIC;
			else if(aIdioma=="ca") return NIF_NUMERIC_ca;
		}
		if(nifnie_ultim.indexOf(last_char)==-1){
			if(aIdioma=="es") return NIF_LETRA;
			else if(aIdioma=="ca") return NIF_LETRA_ca;
		}
		
		resultado = numero_nif % 23;
		var letra_resul = nifnie_ultim.substring(resultado, resultado+1);

		if(letra_resul!=last_char){
			if(aIdioma=="es") return NIF_LETRA;
			else if(aIdioma=="ca") return NIF_LETRA_ca;
		}

		return true;
	}
	//El valor introducido es un NIE
	if(nie_primer.indexOf(first_char)!=-1){
		if(validateLength(aValue,9)!=true && validateLength(aValue,10)!=true){
			if(aIdioma=="es") return NIE_SIZE;
			else if(aIdioma=="ca") return NIE_SIZE_ca;
		}
		var numero_nie = aValue.substring(1,aValue.length-1);
		if(numero_nie.length==8 && numero_nie.substring(0,1)!='0'){
			if(aIdioma=="es") return NIE_SIZE;
			else if(aIdioma=="ca") return NIE_SIZE_ca;
		}
		if(validateIntegerPositive(numero_nie)!=true){
			if(aIdioma=="es") return NIE_NUMERIC;
			else if(aIdioma=="ca") return NIE_NUMERIC_ca;
		}
		if(nifnie_ultim.indexOf(last_char)==-1){
			if(aIdioma=="es") return NIE_LETRA;
			else if(aIdioma=="ca") return NIE_LETRA_ca;
		}

		resultado = nie_primer.indexOf(first_char) + numero_nie;
		resultado = resultado % 23;
		var letra_resul = nifnie_ultim.substring(resultado, resultado+1);

		if(letra_resul!=last_char){
			if(aIdioma=="es") return NIE_LETRA;
			else if(aIdioma=="ca") return NIE_LETRA_ca;
		}

		return true;
	}
		
	if(aIdioma=="es") return NIF_NIE_INVALID;
	else if(aIdioma=="ca") return NIF_NIE_INVALID_ca;
}


//GEN_numeroTarjeta
function validateNumeroTarjeta(aValue, aIdioma){
	aValue = trim(aValue);

	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return CREDITCARD_NOTNUMERIC;
		else if(aIdioma=="ca") return CREDITCARD_NOTNUMERIC_ca;
	}
	if(aValue.length < 13 || aValue.length > 16){
		if(aIdioma=="es") return CREDITCARD_SIZE;
		else if(aIdioma=="ca") return CREDITCARD_SIZE_ca;
	}

	var primero=1;
	var par=1;
	var digito;
	var temp;
	var acumulado=0;
	var multiplo;
	primero = aValue.length-2;
	while (primero >=0){
		digito=parseInt(aValue.substring(primero,primero+1),10);
	    primero --;
	    if (par==1) digito = digito*2;
		par=par*(-1);
	    if (digito >9){
			temp=("" + digito);
	      	digito=parseInt(temp.substring(0,1),10)+parseInt(temp.substring(1,2),10);
	    }
	    acumulado +=digito;
	}
	if ((acumulado%10)!=0) multiplo = (Math.floor(acumulado/10)+1)*10;
	else multiplo=acumulado;
	digito = multiplo - acumulado;
	if (digito != parseInt( aValue.substring( aValue.length-1, aValue.length ) ,10)){
		if(aIdioma=="es") return CREDITCARD_INVALID;
		else if(aIdioma=="ca") return CREDITCARD_INVALID_ca;
	}
	    

	return true;
}

//GEN_fechaCaducidadTarjeta
function validateFechaCaducidad(aValue, aIdioma){
	aValue = trim(aValue);

	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOTINTEGER.replace("campo","campo \"Fecha de Caducidad\"");
		else if(aIdioma=="ca") return FIELD_NOTINTEGER_ca.replace("camp","camp \"Data de Caducitat\"");
	}
	if(validateLength(aValue,4)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"Fecha de Caducidad\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"Data de Caducitat\"");
	}

	var fecha= new String(aValue);

	// Cadena Mes
	var mes= new String(fecha.substring(0,2));
	// Cadena Año
	var ano= new String(fecha.substring(2,4));

	// Valida el Mes
	if (validateIntegerPositive(mes)!=true || mes>12){
		if(aIdioma=="es") return EXPIRATION_DATE_MONTH;
		else if(aIdioma=="ca") return EXPIRATION_DATE_MONTH_ca;
	}
	// Valida el año
	if (validateIntegerPositive(ano)!=true || ano>99){
		if(aIdioma=="es") return EXPIRATION_DATE_YEAR;
		else if(aIdioma=="ca") return EXPIRATION_DATE_YEAR_ca;
	}
	var fechaActual = new Date();
	var mesActual = fechaActual.getMonth()+1;
	var anoActual = fechaActual.getFullYear().toString().substring(2,4);

	if(ano<anoActual || ano==anoActual && mes<mesActual){
		if(aIdioma=="es") return EXPIRATION_DATE_INF;
		else if(aIdioma=="ca") return EXPIRATION_DATE_INF_ca;
	}

	//if(ano>parseInt(anoActual,10)+5 || (ano==parseInt(anoActual,10)+5 && mes>mesActual)){
	//	if(aIdioma=="es") return EXPIRATION_DATE_SUP;
	//	else if(aIdioma=="ca") return EXPIRATION_DATE_SUP_ca;
	//}

  return true;
}

//GEN_cvv2
function validateCVV2(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateLength(aValue,3)!=true){
		if(aIdioma=="es") return CVV2_SIZE;
		else if(aIdioma=="ca") return CVV2_SIZE_ca;
	}
	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return CVV2_NOTNUMERIC;
		else if(aIdioma=="ca") return CVV2_NOTNUMERIC_ca;
	}

	return true;
}

//GEN_numeroAutorizacionCredito
function validateNumAutorizacionCredito(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateLength(aValue,6)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"Número de Autorización\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"Número d'Autorizació\"");
	}
	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOTINTEGER.replace("campo","campo \"Número de Autorización\"");
		else if(aIdioma=="ca") return FIELD_NOTINTEGER_ca.replace("camp","camp \"Número d'Autorizació\"");
	}

	return true;
}

//GEN_longPin
function validateLongPin(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateLength(aValue,2)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"LongPin\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"LongPin\"");
	}
	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOTINTEGER.replace("campo","campo \"LongPin\"");
		else if(aIdioma=="ca") return FIELD_NOTINTEGER_ca.replace("camp","camp \"LongPin\"");
	}

	return true;
}

//GEN_pinEnc
function validatePinEnc(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateLength(aValue,8)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"PinEnc\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"PinEnc\"");
	}
	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOTINTEGER.replace("campo","campo \"PinEnc\"");
		else if(aIdioma=="ca") return FIELD_NOTINTEGER_ca.replace("camp","camp \"PinEnc\"");
	}

	return true;
}

//GEN_pinSeed
function validatePinSeed(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateLength(aValue,16)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"PinSeed\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"PinSeed\"");
	}
	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOTINTEGER.replace("campo","campo \"PinSeed\"");
		else if(aIdioma=="ca") return FIELD_NOTINTEGER_ca.replace("camp","camp \"PinSeed\"");
	}

	return true;
}

//GEN_nSeqSeed
function validateNSeqSeed(aValue, aIdioma){
	aValue = trim(aValue);
	if(validateLength(aValue,2)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"nSeqSeed\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"nSeqSeed\"");
	}
	if(validateIntegerPositive(aValue)!=true){
		if(aIdioma=="es") return FIELD_NOTINTEGER.replace("campo","campo \"nSeqSeed\"");
		else if(aIdioma=="ca") return FIELD_NOTINTEGER_ca.replace("camp","camp \"nSeqSeed\"");
	}

	return true;
}

//GEN_ip
function validateIP(aValue, aIdioma){
	var PUNTO = '.';
	aValue = trim(aValue);
	if(validateMaxLength(aValue,15)!=true){
		if(aIdioma=="es") return FIELD_MAX_SIZE.replace("campo","campo \"IP\"");
		else if(aIdioma=="ca") return FIELD_MAX_SIZE_ca.replace("camp","camp \"IP\"");
	}
	if(validateMinLength(aValue,7)!=true){
		if(aIdioma=="es") return FIELD_MIN_SIZE.replace("campo","campo \"IP\"");
		else if(aIdioma=="ca") return FIELD_MIN_SIZE_ca.replace("camp","camp \"IP\"");
	}
	if(validateIntegerPositive(aValue)!=true && aValue.indexOf(PUNTO)==-1){
		if(aIdioma=="es") return IP_NOTVALID;
		else if(aIdioma=="ca") return IP_NOTVALID_ca;
	}

	var punto1, punto2, punto3;

	punto1 = aValue.indexOf(PUNTO);
	if(punto1==-1){
		if(aIdioma=="es") return IP_NOTVALID;
		else if(aIdioma=="ca") return IP_NOTVALID_ca;
	}
	var num1=aValue.substring(0,punto1);
	if(num1.length==0){
		if(aIdioma=="es") return IP_NOTVALID;
		else if(aIdioma=="ca") return IP_NOTVALID_ca;
	}

	punto2 = aValue.indexOf(PUNTO,punto1+1);
	if(punto2==-1){
		if(aIdioma=="es") return IP_NOTVALID;
		else if(aIdioma=="ca") return IP_NOTVALID_ca;
	}
	var num2=aValue.substring(punto1+1,punto2);
	if(num2.length==0){
		if(aIdioma=="es") return IP_NOTVALID;
		else if(aIdioma=="ca") return IP_NOTVALID_ca;
	}

	punto3 = aValue.indexOf(PUNTO,punto2+1);
	if(punto3==-1){
		if(aIdioma=="es") return IP_NOTVALID;
		else if(aIdioma=="ca") return IP_NOTVALID_ca;
	}
	var num3=aValue.substring(punto2+1,punto3);
	if(num3.length==0){
		if(aIdioma=="es") return IP_NOTVALID;
		else if(aIdioma=="ca") return IP_NOTVALID_ca;
	}

	var num4=aValue.substring(punto3+1,aValue.length);
	if(num4.length==0){
		if(aIdioma=="es") return IP_NOTVALID;
		else if(aIdioma=="ca") return IP_NOTVALID_ca;
	}

	if(validateIntegerPositive(num1)!=true || validateIntegerPositive(num2)!=true ||
	   validateIntegerPositive(num3)!=true || validateIntegerPositive(num4)!=true ||
	   validateMaxLength(num1,3)!=true || validateMaxLength(num2,3)!=true ||
	   validateMaxLength(num3,3)!=true || validateMaxLength(num4,3)!=true ||
	   num1>255 || num2>255 || num3>255 || num4>255){
		if(aIdioma=="es") return IP_NOTVALID;
		else if(aIdioma=="ca") return IP_NOTVALID_ca;
	}

	return true;
}

//Valida Email
function validateEmail(aValue, aIdioma){

	aValue = trim(aValue);
	var valor = aValue.toString();

	if(validateMaxLength(valor,100)!=true){
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"Email\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"Email\"");
	}

	var PATRON_EMAIL = "@.ABCDEFGHIKJLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";

	
	var countArrobas = 0;
	var countPuntos = 0;
	
	//El email no puede empezar ni acabar por '@' o por '.'
	if(valor.charAt(0)=='@' || valor.charAt(valor.length - 1)=='@' ||
	   valor.charAt(0)=='.' || valor.charAt(valor.length - 1)=='.'){
		if(aIdioma=="es") return FIELD_INVALID.replace("campo","campo \"Email\"");
		else if(aIdioma=="ca") return FIELD_INVALID_ca.replace("camp","camp \"Email\"");
	}
	//caracteres permitidos: a-z,A-Z,.,@
	for(i=0; i<valor.length; i++){
		if(PATRON_EMAIL.indexOf(valor.substring(i,i+1))==-1){
			if(aIdioma=="es") return FIELD_CHAR_INVALID.replace("campo","campo \"Email\"");
			else if(aIdioma=="ca") return FIELD_CHAR_INVALID_ca.replace("camp","camp \"Email\"");
		}
		//Los caracteres '@' y '.' no pueden estar seguidos
		if(valor.charAt(i)=='@'){
			countArrobas=countArrobas+1;
			if(valor.charAt(i+1)=='.'){
				if(aIdioma=="es") return FIELD_INVALID.replace("campo","campo \"Email\"");
				else if(aIdioma=="ca") return FIELD_INVALID_ca.replace("camp","camp \"Email\"");
			}
		}
		if(valor.charAt(i)=='.'){
			countPuntos=countPuntos+1;
			if(aValue.charAt(i+1)=='@' || aValue.charAt(i+1)=='.'){
				if(aIdioma=="es") return FIELD_INVALID.replace("campo","campo \"Email\"");
				else if(aIdioma=="ca") return FIELD_INVALID_ca.replace("camp","camp \"Email\"");
			}
		}

	}
	//Solo puede haber una arroba y, como minimo, un punto
	if(valor.length>0 && (countArrobas!=1  || countPuntos<1)){
		if(aIdioma=="es") return FIELD_INVALID.replace("campo","campo \"Email\"");
		else if(aIdioma=="ca") return FIELD_INVALID_ca.replace("camp","camp \"Email\"");
	}
	return true;
}

//valida el telefono sin codigo de pais.
function validateTelefonoSinPais(aValue, aIdioma){

	if( aValue.length > 0 ){
		//hay caracteres no numericos
		if(validateIntegerPositive(aValue)!=true){
		   	if(aIdioma=="es") return FIELD_INVALID.replace("campo","campo \"Teléfono\"");
		   	else if(aIdioma=="ca") return FIELD_INVALID_ca.replace("camp","camp \"Telèfon\"");
		}
		//el telefono debe comenzar por 6 o 9
		if(aValue.charAt(0)!="6" && aValue.charAt(0)!="9"){
			if(aIdioma=="es") return TELEPHONE_FIRST_CHAR;
			else if(aIdioma=="ca") return TELEPHONE_FIRST_CHAR_ca;
		}
		//La longitud no es valida
		if(validateLength(aValue,9)!=true){
			if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"Teléfono\"");
			else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"Telèfon\"");
		}
	}
	return true;
}

/*************************************************************/
/*************** VALIDACIONES DE 'DONATIVOS' *****************/
/*************************************************************/

//DON_importe
function DON_validateImport(aValue,aIdioma){
	var val = trim(aValue);

	if(val==null || val.length==0){
		if(aIdioma=="es") return IMPORTE_NULL;
		else if(aIdioma=="ca") return IMPORTE_NULL_ca;
	}
	return validateImport(val, aIdioma);
}

//DON_numeroTarjeta
function DON_validateNumeroTarjeta(aValue, aIdioma){
	aValue = trim(aValue);
	if(aValue==null || aValue.length==0){
		if(aIdioma=="es") return CREDITCARD_NULL;
		else if(aIdioma=="ca") return CREDITCARD_NULL_ca;
	}
	return validateNumeroTarjeta(aValue, aIdioma);
}

//DON_fechaCaducidad
function DON_validateFechaCaducidad(aValue, aIdioma){
	aValue = trim(aValue);
	if(aValue==null || aValue.length==0){
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \"Fecha de Caducidad\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \"Data de Caducitat\"");
	}
	return validateFechaCaducidad(aValue, aIdioma);
}

//DON_nombreCliente
function DON_validateNombre(aValue, aIdioma){
	var val = trim(aValue);
	if(val==null || val.length==0){
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \"Nombre\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \"Nom\"");
	}
	return validateNombre(aValue, aIdioma);
}

//DON_direccionCliente
function DON_validateDireccion(aValue, aIdioma){
	aValue = trim(aValue);
	if(aValue==null || aValue.length==0){
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \"Dirección\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \"Adreça\"");
	}
	return validateDireccion(aValue, aIdioma);
}

//DON_cPostalCliente
function DON_validateCodigoPostal(aValue, aIdioma){
	aValue = trim(aValue);
	if(aValue==null || aValue.length==0){
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \"Código Postal\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \"Codi Postal\"");
	}
	return validateCodigoPostal(aValue, aIdioma);
}

//DON_poblacionCliente
function DON_validatePoblacion(aValue, aIdioma){
	aValue = trim(aValue);
	if(aValue==null || aValue.length==0){
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \"Población\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \"Població\"");
	}
	return validatePoblacion(aValue, aIdioma);
}

//DON_provinciaCliente
function DON_validateProvincia(aValue, aIdioma){
	aValue = trim(aValue);
	if(aValue==null || aValue.length==0){
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \"Provincia\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \"Província\"");
	}
	return validateProvincia(aValue, aIdioma);
}

//DON_telfCliente
function DON_validateTelefono(aValue, aIdioma){
	aValue = trim(aValue);
	//el telefono no es obligatorio
	if(aValue==null || aValue.length==0) return true;
	//SÃ­ tiene codigo de pais
	if(validateLength(aValue,12)==true){
		var pais = aValue.substring(0,2); var tlf = aValue.substring(3,aValue.length);
		if(validateIntegerPositive(pais)!=true ||
		   aValue.charAt(2)!='+' || 
		   validateIntegerPositive(tlf)!=true){
		   	if(aIdioma=="es") return FIELD_INVALID.replace("campo","campo \"Teléfono\"");
		   	else if(aIdioma=="ca") return FIELD_INVALID_ca.replace("camp","camp \"Telèfon\"");
		}
		if(aValue.charAt(3)!="6" && aValue.charAt(3)!="9"){
			if(aIdioma=="es") return TELEPHONE_FIRST_CHAR;
			else if(aIdioma=="ca") return TELEPHONE_FIRST_CHAR_ca;
		}
		
	//No tiene codigo de pais
	}else if(validateLength(aValue,9)==true){
		if(validateIntegerPositive(aValue)!=true){
		   	if(aIdioma=="es") return FIELD_INVALID.replace("campo","campo \"Teléfono\"");
		   	else if(aIdioma=="ca") return FIELD_INVALID_ca.replace("camp","camp \"Telèfon\"");
		}
		if(aValue.charAt(0)!="6" && aValue.charAt(0)!="9"){
			if(aIdioma=="es") return TELEPHONE_FIRST_CHAR;
			else if(aIdioma=="ca") return TELEPHONE_FIRST_CHAR_ca;
		}
	//La longitud no es valida
	}else{
		if(aIdioma=="es") return FIELD_SIZE.replace("campo","campo \"Teléfono\"");
		else if(aIdioma=="ca") return FIELD_SIZE_ca.replace("camp","camp \"Telèfon\"");
	}

	return true;
}

//DON_nifNieCliente
function DON_validateNIFCIFNIE(aValue, aIdioma){
	aValue = trim(aValue);
	if(aValue==null || aValue.length==0){
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \"NIF/CIF/NIE\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \"NIF/CIF/NIE\"");
	}
	return validateNIFCIFNIE(aValue, aIdioma);
}

//DON_cvv2
function DON_validateCVV2(aValue, aIdioma){
	aValue = trim(aValue);
	if(aValue==null || aValue.length==0){
		if(aIdioma=="es") return FIELD_NULL.replace("campo","campo \"CVV2\"");
		else if(aIdioma=="ca") return FIELD_NULL_ca.replace("camp","camp \"CVV2\"");
	}
	return validateCVV2(aValue, aIdioma);
}

