//ABCversionCBA
//version=20100218103045#Z:/VOB_INMPRISSL/INMPRISSL/Web Content/INMPRISSL/docs/INM/PastorInmuebles/js/custom.js@@/main/RSUidlpl2010021102/1;
//XYZversionZYX

function limpiaSimulador() {
	document.getElementById('importe').value='';
	document.getElementById('interes').value='';
	document.getElementById('plazo').selectedIndex=35;
	document.getElementById('result').style.display='none';
}

function StrReplace(str1, str2, str3){
	str1 = str1.split(str2).join(str3);
	return str1;
}

function redondear(numero,X) {
	//X = (!X ? 2 : X);
	var result= Math.round(numero*Math.pow(10,X))/Math.pow(10,X);
	return result;
}

//Da formato al importe
function importeConFormato(num,numDec, decSep, thousandSep){
	if (num==""){
		return num;
	}
	var  valor;
	var Dec;
	Dec = Math.pow(10, numDec); 
	num= StrReplace(num.toString(), thousandSep, '');
	num= StrReplace(num.toString(), decSep, '.');	
	if (isNaN(num)) {
		num = "0";
	}
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num * Dec + 0.50000000001);
	cents = num % Dec;
	num = Math.floor(num/Dec).toString(); 
	if (cents < (Dec / 10)) {
		cents = "0" + cents;
	}
	for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
		num = num.substring(0, num.length - (4 * i + 3)) + thousandSep + num.substring(num.length - (4 * i + 3));
	}
	if (Dec == 1) {
		valor=  (((sign)? '': '-') + num);
	} else {
		valor= (((sign)? '': '-') + num + decSep + cents);
	}
	return valor; 
}

function importeFormatear(importe){
	nuDecimales=2;
	if (isNaN(importe)){
		importe= StrReplace(importe.toString(), ".", '');
		importe= StrReplace(importe.toString(), ",", '.');
	}
	importe=redondear(importe, nuDecimales);     
	importe= StrReplace(importe.toString(), ".", ',');
	importe= importeConFormato(importe, nuDecimales, ",", ".");
	return importe;
}

//Funcion que calcula la cuota mensual
function cuotaMensual(importe,interes,plazo) {
	if (plazo!=0){
		importe=StrReplace(importe, ".","");
		importe=StrReplace(importe, ",",".");  	
		interes=StrReplace(interes, ",",".");
		interes=interes/100;//valsain;
		var numerador =importe*interes/12;
		var denominador = 1- Math.pow(1+(interes/12),-(plazo*12)); 
		var aux=numerador/denominador;
		return redondear(numerador/denominador, 2);
	}else{
		return redondear(0, 2);
	}
}

//Da formato al resultado cuota
function importeFormatearCuota(importe){
	nuDecimales=2;
	importe= StrReplace(importe.toString(), ",", '.');
	importe=redondear(importe, nuDecimales);  
	importe= StrReplace(importe.toString(), ".", ',');
	importe=  importeConFormato(importe, nuDecimales, ",", ".");
	return importe;
}

function pintaInner(id,valor){
	var campo=document.getElementById(id);
	campo.innerHTML=valor;
}

function calcularCuota(campo){
	var importe= StrReplace(document.getElementById("importe").value, ".","");
	importe=importeFormatear(document.getElementById("importe").value);  
	document.getElementById("importe").value=importe;   	
	var cPrdo=document.getElementById("plazo");   
	var periodo=cPrdo[cPrdo.selectedIndex].value;
	var anios=0;      
	anios=document.getElementById("plazo").value;
	var iCuota=cuotaMensual(document.getElementById("importe").value, document.getElementById("interes").value, anios);
	iCuota=importeFormatearCuota(iCuota);   //Devuelve la iCuota correspondiente
	pintaInner(campo,iCuota);
}

//------------------------------------------------------------------------------
//ponerSaltosLinea: pone los saltos de linea en un campo de texto
//------------------------------------------------------------------------------
function ponerSaltosLinea(input) {
    var str;
    var output = "";
    
    if (navigator.appName == "Microsoft Internet Explorer") {
    	str = input.split('\r\n');
    } else {
    	str = input.split('\n');
    }
	for (i=0; i<str.length-1; i++) {
		output = output + str[i] + "<br />";
	}
	output = output + str[i];
    return output;
}

//------------------------------------------------------------------------------
//quitarSaltosLinea: elimina los saltos de linea en un campo de texto
//------------------------------------------------------------------------------
function quitarSaltosLinea(cadena) {
    while (cadena.indexOf("<br />") != -1) {
		cadena = cadena.replace("<br />", "\n")
	}
	return cadena;
}

//----------------------------------------------------------------------------------
//crearEvento: incluye la funcion en el evento del elemento pasado como parametro
//----------------------------------------------------------------------------------
function crearEvento(elemento, evento, funcion) {
      if (elemento.addEventListener) {
            elemento.addEventListener(evento, funcion, false);
      } else {
            elemento.attachEvent("on" + evento, funcion);
      }
}

//------------------------------------------------------------------------------
//mostrarMensaje: nos devuelve un array con elementos entre 1 y tamano desordenados
//   param: msg
//   param: error
//------------------------------------------------------------------------------
function mostrarMensaje(titMsg, msg, error) {
	if (error) {
		//parent.window.document.getElementById("mensaje").getElementsByTagName("img")[0].src = "PastorComercial/img/form_err.gif";
	} else {
		//parent.window.document.getElementById("mensaje").getElementsByTagName("img")[0].src = "PastorComercial/img/form_crr.gif";
		crearEvento(parent.window.document.getElementById("cerrar_popup"), "click", function(){
           parent.window.location.href = parent.window.location.href;
      	});
      	crearEvento(parent.window.document.getElementById("btnBuscar"), "click", function(){
           parent.window.location.href = parent.window.location.href;
      	});
	}
	parent.window.document.getElementById("titMensaje").innerHTML = titMsg;
	parent.window.document.getElementById("textoMensaje").innerHTML = msg;
	//abre VentanaModal;
	parent.window.document.getElementById("popup").style.display="block";
	parent.window.document.getElementById("capa_modal").style.display="block";
}

//------------------------------------------------------------------------------
//redimensionarIframe: redimensiona el iframe pasado como parametro
//------------------------------------------------------------------------------
function redimensionarIframe(myiframe) {
	// Guardamos el documento contenido en el iframe
    var documento = this.document.body;
	// Guardamos el iframe que vamos a redimensionar
    var iFrame = parent.window.document.getElementById(myiframe);
    var alturaIframe = documento.scrollHeight + documento.offsetHeight - documento.clientHeight;
	// Redimensionamos la altura del iframe
    iFrame.style.height = eval("'"+alturaIframe+"px'");
    
    var anchoIframe = documento.scrollWidth + documento.offsetWidth - documento.clientWidth;
    // Redimensionamos el ancho del iframe
    iFrame.style.width = eval("'"+anchoIframe+"px'");
    
}

function cerrarPopup() {
	document.getElementById("capa_modal").style.display="none";
	document.getElementById("popup").style.display="none";
}


//------------------------------------------------------------------------------
// Funcion: validaDocumento
// Necesita: 
//	numDoc: string que contiene el numero de documento a validar
//	tipoDoc: string que contiene el tipo de documento a validar
// Produce:
//	True si el numero de documento proporcionado es válido.
//	False si el documento no es válido
//------------------------------------------------------------------------------
function validaDocumento(numDoc, tipoDoc) {
	if (tipoDoc == "DNI")
		return validaDNI(numDoc);
	else if (tipoDoc == "NIF")
		return validaNIF(numDoc);
	else if (tipoDoc == "CIF")
		return validaCIF(numDoc);
	else if (tipoDoc == "NIE")
		return validaNIE(numDoc);
	else
		return true;
}

//------------------------------------------------------------------------------
// Funcion: validaDNI
// Necesita: 
//	dniStr: string que contiene el dni a validar
// Produce:
//	True si el dni proporcionado es válido.
//	False si el dni no es válido
//------------------------------------------------------------------------------
function validaDNI(dniStr) {
	var regExpDNI = /^[0-9]{8}$/;
	return regExpDNI.test(dniStr);
}

//------------------------------------------------------------------------------
// Funcion: validaNIF
// Necesita: 
//	nifStr: string que contiene el nif a validar
// Produce:
//	True si el nif proporcionado es válido.
//	False si el dni no es válido
//------------------------------------------------------------------------------	
function validaNIF(nifStr) {
	numero = nifStr.substr(0,nifStr.length-1);
	let = nifStr.substr(nifStr.length-1,1);
	let = let.toUpperCase();
	numero = numero % 23;
	letra='TRWAGMYFPDXBNJZSQVHLCKET';
	letra=letra.substring(numero,numero+1);
	if (letra!=let)
		return false;
	else
		return true;
}

//------------------------------------------------------------------------------
// Funcion: validaNIE
// Necesita: 
//	nieStr: string que contiene el nie a validar
// Produce:
//	True si el nie proporcionado es válido.
//	False si el nie no es válido
//------------------------------------------------------------------------------
function validaNIE(nieStr) {
	var regExpNIE = /^[xXtT]{1}[0-9]{7,8}[a-zA-Z]{1}$/;
	if (regExpNIE.test(nieStr))
		return validaNIF(nieStr.substr(1,nieStr.length-1));
	else
		return false;
}

//------------------------------------------------------------------------------
// Funcion: validaCIF
// Necesita: 
//	cifStr: string que contiene el cif a validar
// Produce:
//	True si el cif proporcionado es válido.
//	False si el cif no es válido
//------------------------------------------------------------------------------
function validaCIF(cifStr) {
	var i = temp = 0;
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
	cifStr = cifStr.toUpperCase();
	if (validaNIF(cifStr)) return true;
	else if (!/^[A-Za-z0-9]{9}$/.test(cifStr)) return false
	else if (!/^[ABCDEFGHKLMNPQS]/.test(cifStr)) return false
	else {
		for(i=2; i<=6; i+=2) {
			temp += v1[parseInt(cifStr.substr(i-1, 1))];
			temp += parseInt(cifStr.substr(i, 1));
		}
		temp = temp + v1[parseInt(cifStr.substr(7,1))];
		temp = (10 - ( temp % 10));
		if(temp == 10 && (cifStr.charAt(cifStr.length-1) == 'J' || cifStr.charAt(cifStr.length-1) == 0)) return true;
		else if (cifStr.charAt(cifStr.length-1) == temp || cifStr.charAt(cifStr.length-1) == String.fromCharCode(64 + temp)) return true;
		else return false;
	}
}


//------------------------------------------------------------------------------
// Funcion: validaCamposDocumento
// Necesita: 
//	camposNumDocumentoStr: string que contiene los nombres de los campos 'tipo de documento' del formulario, separados por comas
//	camposNumDocumentoDescStr: string que contiene las descripciones de los campos 'tipo de documento' del formulario, separados por comas
//	camposTipoDocumentoStr: string que contiene los nombres de los campos 'numero documento' del formulario, separados por comas
//	camposTipoDocumentoDescStr: string que contiene las descripciones de los campos 'numero documento' del formulario, separados por comas	
// Produce:
//	Cadena "" en caso de que todos los campos esten rellenados correctamente
//	Mensaje de error indicando que campos estan mal
//------------------------------------------------------------------------------
function validarCamposDocumento(camposNumDocumentoStr, camposNumDocumentoDescStr, camposTipoDocumentoStr, camposTipoDocumentoDescStr) {
	msgErrValida = "";
	
	camposNumDocumentoDesc = camposNumDocumentoDescStr.split(",");
	camposNumDocumento = camposNumDocumentoStr.split(",");
	camposTipoDocumentoDesc = camposTipoDocumentoDescStr.split(",");
	camposTipoDocumento = camposTipoDocumentoStr.split(",");
	
	if (camposNumDocumentoStr == "") {
		return msgErrValida;
	}	
	
	for (var i = 0; i < camposNumDocumento.length; i++) {
		if ((document.getElementById(camposNumDocumento[i]).value != "") && (document.getElementById(camposTipoDocumento[i]).value != "") && (!validaDocumento(document.getElementById(camposNumDocumento[i]).value, document.getElementById(camposTipoDocumento[i]).value))) {
			if (msgErrValida == "") {
				msgErrValida +="ErrorDocumento,";
			} else {
				msgErrValida += ",";
			}
			msgErrValida += camposNumDocumentoDesc[i];
		}
	}
	
	if (msgErrValida != "") {
		msgErrValida += ";";
	}
				
	return msgErrValida;
}

//------------------------------------------------------------------------------
// Funcion: validaEmail
// Necesita: 
//	emailStr: string que contiene la dirección de mail a validar
// Produce:
//	True si la dirección de mail proporcionada es correcta.
//	Mensaje de error (en una ventana alert) y False si la direccion de mail no es correcta
//------------------------------------------------------------------------------

function validaEmail(emailStr) {
	if (emailStr != null && emailStr != "") {
		var checkTLD=1;
		var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		var matchArray=emailStr.match(emailPat);
		if (matchArray==null) {
			return false;
		}
		var user=matchArray[1];
		var domain=matchArray[2];
		for (i=0; i<user.length; i++) {
			if (user.charCodeAt(i)>127) {
				return false;
			}
		}
		for (i=0; i<domain.length; i++) {
			if (domain.charCodeAt(i)>127) {
				return false;
			}
		}
		if (user.match(userPat)==null) {
			return false;
		}
		var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null) {
			for (var i=1;i<=4;i++) {
				if (IPArray[i]>255) {
					return false;
				}
			}
			return true;
		}
		var atomPat=new RegExp("^" + atom + "$");
		var domArr=domain.split(".");
		var len=domArr.length;
		for (i=0;i<len;i++) {
			if (domArr[i].search(atomPat)==-1) {
				return false;
			}
		}
		if (checkTLD && domArr[domArr.length-1].length!=2 && 
				domArr[domArr.length-1].search(knownDomsPat)==-1) {
			return false;
		}
		if (len<2) {
			return false;
		}
		return true;
	} else {
		return true;
	}
}

//------------------------------------------------------------------------------
// Funcion: validaCamposEmail
// Necesita: 
//	camposStr: string que contiene los nombres de los campos tipo email del formulario, separados por comas
//	camposDescStr: string que contiene las descripciones de los campos tipo email del formulario, separados por comas		
// Produce:
//	Cadena "" en caso de que todos los campos de tipo email esten rellenados correctamente
//	Mensaje de error indicando que campos estan mal
//------------------------------------------------------------------------------
function validarCamposEmail(camposStr, camposDescStr) {	
	msgErrValida = "";
	camposDesc = camposDescStr.split(",");
	campos = camposStr.split (",");
	
	if (camposStr == "") {
		return msgErrValida;
	}	
	
	for (var i = 0; i < campos.length; i++)  {
		if  ((document.getElementById(campos[i]).value != "") && (!validaEmail(document.getElementById(campos[i]).value))) {
			if (msgErrValida == "") {
				msgErrValida += "ErrorMail,";
			} else {
				msgErrValida += ",";
			}
			msgErrValida += camposDesc[i];
		}
	}
	
	if (msgErrValida != "") {
		msgErrValida += ";";
	}
	
	return msgErrValida;	
}

//------------------------------------------------------------------------------
// Funcion: validaNumerico
// Necesita: 
//	numStr: string que contiene el numerico a validar
// 	separador: caracter que actua como separador decimal
// Produce:
//	True si el numerico proporcionado es válido.
//	Mensaje de error (en una ventana alert) y False si el numerico no es válido
//------------------------------------------------------------------------------
	
function validaNumerico(numStr, separador) {	
	numero = numStr.split(separador);
	//un decimal como mucho tiene dos partes, la entera y la decimal, por tanto si al hacer el split salen mas de 2 partes ya hay un error
	if (numero.length > 2) {
	  return false;
	}
	//si el numero es decimal esta sera la parte entera y si es un entero este es el numero completo. validamos que sea numerico
	valor = parseInt(numero[0]);
	if (isNaN(valor)) {
		return false;
	}
	//si es un decimal validamos que la parte decimal sea numerica
	valor = parseInt(numero[1]) ;
	if ((numero.length == 2)&&(isNaN(valor))) {
		return false;
	}
	return true;
}

//------------------------------------------------------------------------------
// Funcion: validaCamposNumericos
// Necesita: 
//	camposStr: string que contiene los nombres de los campos numericos del formulario, separados por comas
//	camposDescStr: string que contiene las descripciones de los campos numericos del formulario, separados por comas		
// Produce:
//	Cadena "" en caso de que todos los campos numericos esten rellenados correctamente
//	Mensaje de error indicando que campos estan mal
//------------------------------------------------------------------------------
function validarCamposNumericos(camposStr, camposDescStr) {
	msgErrValida = "";
	camposDesc = camposDescStr.split(",");
	campos = camposStr.split (",");
	
	if (camposStr == "")
		return msgErrValida;
	
	for (var i = 0; i < campos.length; i++)  {
		if  ((document.getElementById(campos[i]).value != "") && (!validaNumerico(document.getElementById(campos[i]).value))) {
			if (msgErrValida == "") {
				msgErrValida += "ErrorNumerico,";
			} else {
				msgErrValida += ",";
			}
			msgErrValida += camposDesc[i];
		}
	}
	
	if (msgErrValida != "") {
		msgErrValida += ";";
	}
				
	return msgErrValida;
}

//------------------------------------------------------------------------------
// Funcion: validaCamposObligatorios
// Necesita: 
//	camposStr: string que contiene los nombres de los campos obligatorios del formulario, separados por comas
//	camposDescStr: string que contiene las descripciones de los campos obligatorios del formulario, separados por comas
// Produce:
//	Cadena "" en caso de que todos los campos obligatorios esten rellenados.
//	Mensaje de error indicando que campos obligatorios no están cumplimentados.
//------------------------------------------------------------------------------

function validarCamposObligatorios(camposStr, camposDescStr) {
	msgErrValida = "";
	camposDesc = camposDescStr.split(",");
	campos = camposStr.split (",");
	
	if (camposStr == "")
		return msgErrValida;
	
	for (var i = 0; i < campos.length; i++)  {
		if (document.getElementById(campos[i]).value == "") {
			if (msgErrValida == "") {
				msgErrValida += "ErrorObligatorios,";
			} else {
			    msgErrValida += ",";
			}
			msgErrValida += camposDesc[i];
		}
	}
	
	if (msgErrValida != "") {
		msgErrValida += ";";
	}
	
	return msgErrValida;
}

//------------------------------------------------------------------------------
// Funcion: validarCamposALegal
// Necesita: 
//	camposStr: string que contiene los nombres de los campos de tipo 'aviso legal' del formulario, separados por comas	
// Produce:
//	Cadena "" en caso de que todos los campos esten marcados
//	Mensaje de error indicando que campos estan mal
//------------------------------------------------------------------------------
function validarCamposALegal(camposStr) {
	msgErrValida = "";
	campos = camposStr.split (",");
	
	if (camposStr == "")
		return msgErrValida;
	
	for (var i = 0; i < campos.length; i++)  {
		if (((document.getElementById(campos[i]) != null) && (!document.getElementById(campos[i]).checked)) || ((parent.window.document.getElementById(campos[i]) != null) && (!parent.window.document.getElementById(campos[i]).checked))) {
			if (msgErrValida == "") {
				msgErrValida += "ErrorALegal,";
			} else {
				msgErrValida += ",";
			}
		}
	}
	
	if (msgErrValida != "") {
		msgErrValida += ";";
	}
				
	return msgErrValida;
}

//------------------------------------------------------------------------------
// Funcion: validarFormulario
// Necesita: 
//	camposTipoDocumento: string que contiene los nombres de los campos de 'tipo documento' del formulario, separados por comas
//	camposTipoDocumentoDesc: string que contiene las descripciones de los campos 'tipo documento' del formulario, separados por comas	
//	camposNumDocumento: string que contiene los nombres de los campos de 'numero de documento' del formulario, separados por comas
//	camposNumDocumentoDesc: string que contiene las descripciones de los campos	'numero documento' del formulario, separados por comas
//	camposMail: string que contiene los nombres de los campos de tipo mail del formulario, separados por comas
//	camposMailDesc: string que contiene las descripciones de los campos tipo mail del formulario, separados por comas		
//	camposNum: string que contiene los nombres de los campos numericos del formulario, separados por comas
//	camposNumDesc: string que contiene las descripciones de los campos numericos del formulario, separados por comas		
//	camposOblig: string que contiene los nombres de los campos obligatorios del formulario, separados por comas
//	camposObligDesc: string que contiene las descripciones de los campos obligatorios del formulario, separados por comas		
//	camposALegal: string que contiene los nombres de los campos de tipo 'aviso legal', separados por comas
// Produce:
//	Cadena "" en caso de que todos los campos esten rellenados correctamente
//	Mensaje de error indicando que campos estan mal
//------------------------------------------------------------------------------
function validarFormulario(camposTipoDocumento, camposTipoDocumentoDesc, camposNumDocumento, camposNumDocumentoDesc, camposMail, camposMailDesc, camposNum, camposNumDesc, camposOblig, camposObligDesc, camposALegal) {
	msgError = "";
	msgError = validarCamposDocumento(camposNumDocumento, camposNumDocumentoDesc, camposTipoDocumento, camposTipoDocumentoDesc);
	msgError += validarCamposEmail(camposMail, camposMailDesc);
	msgError += validarCamposNumericos(camposNum, camposNumDesc);
	msgError += validarCamposObligatorios(camposOblig, camposObligDesc);
	msgError += validarCamposALegal(camposALegal);
	return msgError;
}

