<!--

	// Esta función activará textos parpadeantes en el documento.
	
	function activa_blinks(color_texto,color_fondo,tiempo_fuente,tiempo_fondo,alternar,transparente) {
		var objeto=new Array();
		for (i=0,x=0;i<document.all.length;i++) {
			temp=document.all[i].id;
			if (temp.substr(0,5) == "blink") {
				objeto[x]=eval(temp);
				x++;
			}
		}
		if (!alternar) {
			for (i=0;i<x;i++) {
				objeto[i].style.color=color_fondo;
				if (!transparente)
					objeto[i].style.backgroundColor=color_fondo;
			}
			timer=setTimeout("activa_blinks('" + color_texto + "','" + color_fondo + "'," + tiempo_fuente + "," + tiempo_fondo + ",1," + transparente + ")",tiempo_fondo);
		}
		else {
			for (i=0;i<x;i++) {
				objeto[i].style.color=color_texto;
				if (!transparente)
					objeto[i].style.backgroundColor=color_fondo;
			}
			timer=setTimeout("activa_blinks('" + color_texto + "','" + color_fondo + "'," + tiempo_fuente + "," + tiempo_fondo + ",0," + transparente + ")",tiempo_fuente);
		}
	}
	function mail_valido(dircorreo) {
	
		// Función que comprueba si una dirección de e-mail es válida.
		// Primero declaramos algunas variables a 0.

		var conarroba=0,conpunto=0,posarroba=0,cuentarrobas=0,primarroba,x,car;

		// Las direcciones de correo son todas en minúscula.
		
		dircorreo=dircorreo.toLowerCase();
		
		// Si no contiene nada $dircorreo, no es válida

		if (dircorreo == '') return false;

		// Debe tener una y sólo una arroba.

		primarroba=dircorreo.indexOf('@');
		if (primarroba != -1) {
			cuentarrobas++;
			if (dircorreo.indexOf('@',primarroba + 1) != -1)
				cuentarrobas++;
		}
		if (cuentarrobas != 1) return false;
		
		// Al menos un punto, correspondiente como mínimo a la extensión del dominio.
		
		if (dircorreo.indexOf('.') == -1) return false;
		
		// No puede tener dos puntos seguidos.
		
		if (dircorreo.indexOf('..') != -1) return false;
		
		// Empezamos a comprobar cada carácter por separado.
		
		for (x=0;x<dircorreo.length;x++) {
		
			// No puede tener otro carácter no alfanumérico diferente de punto, arroba o guión medio o bajo.
			
			car=dircorreo.charCodeAt(x);
			
			if (car < 45 || car == 47 || (car > 57 && car < 64) || (car > 64 && car < 95) || (car > 95 && car < 97) || car > 122) return false;
		
			// Si es el carácter arroba, y se encuentra el primero en la dirección, o en una posición que no deja
			// espacio para un mínimo dominio (...@x.xx), no es válida la dirección.
			
			if (dircorreo.substr(x,1) == "@" && (x == 0 || x > (dircorreo.length - 5))) return false;
			
			// En caso contrario al anterior, cuando se encuentre la arroba empieza a buscarse al menos un punto,
			// para lo cual, activamos dos variables: $conarroba a true (encontrada) y $posarroba con la posición
			// de la arroba en la dirección.
			
			if (dircorreo.substr(x,1) == "@") {
				conarroba=1;
				posarroba=x;
			}
			
			// Si se encuentra un punto después de la arroba ($conarroba=true) y está inmediatamente después
			// de dicha arroba (p.e.: usuario@.com), no es correcta.
			
			if (dircorreo.substr(x,1) == "." && conarroba == 1 && x < (posarroba + 2)) return false;
			
			// En caso contrario, si la dirección termina con un punto y menos de dos caracteres como extensión
			// (usuario@dominio. o usuario@dominio.x), tampoco es válida, ya que lo mínimo es extensión .es, por ejemplo
			
			if (dircorreo.substr(x,1) == "." && x > (dircorreo.length - 3)) return false;
			
			// Y por último, si se encuentra el último punto, después de la arroba, con una extensión de 2 a 4 caracteres,
			// $conpunto se pone a true
			
			if (dircorreo.substr(x,1) == "." && conarroba == 1 && x >= (dircorreo.length - 5)) conpunto=1;
		}
		
		// Si la dirección tiene arroba y punto, con las verificaciones ya realizadas,
		// la dirección es correcta.
		
		if (conpunto && conarroba) return true;
		
		// En cualquier otro caso, no será válida.
		
		else return false;
	}
	function crypt(cadena) {
	
	// Esta función encriptará los códigos y claves de acceso (nuevo algoritmo). Requiere un usuario o clave entre 4 y 6 caracteres.
	
		var x,res="",charcod;
		var hora,minutos,dia,mes,anno,fecha;
		if (cadena.length < 2 || cadena.length > 6)
			return false;
			
		fecha=new Date();
		dia=fecha.getDate();
		mes=fecha.getMonth() + 1;
		anno=fecha.getYear();
		hora=fecha.getHours();
		minutos=fecha.getMinutes();
		
		for (x=0;x<cadena.length;x++) {
			charcod=cadena.charCodeAt(x);
			charcod=charcod * 2;
			charcod=Math.pow(charcod,x + 2);
			charcod=charcod * (dia + mes + anno + hora + minutos);
			if (x>0)
				res=res + String.fromCharCode(x+34);
			res=res + charcod.toString();
		}
		res = res + '·' + Math.pow(dia * 2, 4) + '®' + Math.pow(mes * 3, 2) + '®' + (anno * 2) + '®' + (hora * 4) + '®' + (minutos * 3);

		return res;
	}
	function comprueba_datos(nom,tfno,movil,email) {
		if (nom == '') return false;
		if (tfno == '' && movil == '') return false;
		if (tfno != '' && (tfno.length < 9 || isNaN(tfno))) return false;
		if (movil != '' && (movil.length < 9 || isNaN(movil))) return false;
		if (email != '' && !mail_valido(email)) return false;
		return true;
	}

	function enviardatos(ref, adm, adminpag, sid) {
		window.open('capturadatos.php?PHPSESSID=' + sid + '&ref=' + ref + '&adm=' + adm + '&adminpag=' + adminpag,'EnviaDatos','toolbar=no, location=no, status=no, menubar=no, scrollbars=no, width=400, height=240, left=' + (parseInt(window.screen.width/2) - 200) + ', top=' + (parseInt(window.screen.height/2) - 120));
	}
	function SQLnum(cadena) {

	// Función que convertirá un número introducido por el usuario a formato numérico (nnnnnnn.nn).
		
		var resultado="";
		var decimal=0;
		for (count=(cadena.length - 1);count >= 0;count--) {
			if (cadena.substr(count,1) == ",") {
				if (!decimal) {
					decimal=1;
					resultado="." + resultado;
				}
			}
			else if (cadena.substr(count,1) != ".")
				resultado=cadena.substr(count,1) + resultado;
		}
		return resultado;
	}
	function filactiva(activar, objeto) {
		if (activar) {
			objeto.style.cursor='pointer';
			objeto.style.backgroundColor='#F8E7B1';
		}
		else {
			objeto.style.cursor='default';
			objeto.style.backgroundColor='#FDFEE0';
		}
	}
	function filactivaizq(activar, objeto) {
		if (activar) {
			objeto.style.backgroundColor='#760000';
			objeto.style.color='#FFFFFF';
		}
		else {
			objeto.style.backgroundColor='#FFFFFF';
			objeto.style.color='#000000';
		}
	}
	function filactivaintra(activar, objeto, mano) {
		if (activar) {
			objeto.style.backgroundColor='#760000';
			objeto.style.color='#FFFFFF';
		}
		else {
			objeto.style.backgroundColor='#FCF1C7';
			objeto.style.color='#000000';
		}
		if (mano)
			objeto.style.cursor='hand';
		else
			objeto.style.cursor='default';
	}
	function filactivaefincas(activar, objeto, rollover, idimg) {
		if (activar) {
			objeto.style.backgroundColor='#760000';
			objeto.style.color='#FFFFFF';
		}
		else {
			objeto.style.backgroundColor='#FFFFFF';
			objeto.style.color='#760000';
		}
		idimg.src=rollover;
	}
	function mailjava(usuario, dominio, extension) {
	
	// Esta función servirá para evitar los programas recolectores de e-mail (SPAM)
	
		correo="mailto";
		location.href = correo + ':' + usuario + '@' + dominio + '.' + extension;
	}
	function escribemail(usuario, dominio, extension) {

	// Esta otra función es para escribirlo directamente en la página
	
		document.write(usuario + '@' + dominio + '.' + extension);
	}
	function idunico() {
		var num;
		var x;
		num = "";
		for (x=0;x < 20;x++)
			num=num + String.fromCharCode((Math.random()*9) + 48);
		return num;
	}
	function parseDoble(cadena) {
	
	// Función que convertirá un string a Doble
	
		var numres;
		var cadnueva;
		var decimal;
		var x;
		var indice;
		numres=0;
		decimal=0;
		cadnueva='';
		for (x=(cadena.length - 1);x >= 0;x--) {
			if (cadena.substr(x,1) == ',' && decimal)
				return 0;
			else if (cadena.substr(x,1) == ',') {
				decimal=1;
				cadnueva='.' + cadnueva;
			}
			else if ((cadena.charCodeAt(x) - 48) >= 0 && (cadena.charCodeAt(x) - 48) <= 9)
				cadnueva=cadena.substr(x,1) + cadnueva;
		}
		if (cadnueva == '' && decimal == 0) {
			for (x=(cadena.length - 1);x >= 0;x--) {
				if ((cadena.charCodeAt(x) - 48) >= 0 && (cadena.charCodeAt(x) - 48) <= 9)
					cadnueva=cadena.substr(x,1) + cadnueva;
			}
		}
		for (x=(cadnueva.length - 1),indice=0;x >= 0;x--,indice++) {
			if (cadnueva.substr(x,1) == '.') {
				numres=numres / Math.pow(10,cadnueva.length - x - 1);
				indice=-1;
			}
			else
				numres=numres + ((cadnueva.charCodeAt(x) - 48) * Math.pow(10, indice));
		}
		return numres;
	}
	function calculadora_hipoteca(idioma) {
	
	// Esta función se utilizará para calcular cualquier valor necesario para la hipoteca, en base a 3 factores.
	
		var interes=char_replace(document.forms.frmPrincipal.Interes.options[document.forms.frmPrincipal.Interes.selectedIndex].value,',','.') / 1200;
		var cuota=char_replace(document.forms.frmPrincipal.Cuota.value,',','.') * 1;
		var tiempo=char_replace(document.forms.frmPrincipal.Tiempo.options[document.forms.frmPrincipal.Tiempo.selectedIndex].value,',','.') * 12;
		var capital=char_replace(document.forms.frmPrincipal.Importe.value,',','.') * 1;
		if ((cuota == '' && capital == '') || (cuota != '' && capital != '')) {
			if (idioma == 'sp')
				alert('Debe indicar el importe a solicitar o la cuota mensual, dejando un campo libre a calcular');
			else if (idioma == 'en')
				alert('You must fill up amount to request or monthly quota, leaving a free field to carry out the operation.');
			else if (idioma == 'de')
				alert('Sie müssen oben füllen betragen den Antrag oder Monatsquote und ein freies Feld lassen, um den Betrieb durchzuführen.');
			return 0;
		}
		if (capital == '') {
			var factor=Math.pow((1+interes),tiempo);
			capital=cuota / ((factor*interes) / (factor-1));
			capital=parseLong(capital);
			document.forms.frmPrincipal.Importe.value=localnum(capital);
		}
		if (cuota == '') {
			var factor=Math.pow((1+interes),tiempo);
			cuota = capital * ((factor*interes) / (factor-1));
			cuota=parseLong(cuota + 0.5);	// Al calcular la cuota, se redondea
			document.forms.frmPrincipal.Cuota.value=localnum(cuota);
		}
		return 1;
	}
	function calculahipoteca(frmentrada,frmcuota,frminteres,frmtiempo) {
	
	// Esta función se utilizará para calcular el precio posible de la hipoteca, en base al capital, interés y tiempo.
	
		var interes=char_replace(frminteres.toString(),',','.') / 1200;
		var cuota=char_replace(frmcuota.toString(),',','.') * 1;
		var tiempo=char_replace(frmtiempo.toString(),',','.') * 12;
		var entrada=char_replace(frmentrada.toString(),',','.') * 1;
		if (interes == 0 || cuota == 0 || tiempo == 0) {
			if (entrada == 0)
				return 0;
			else
				return entrada;
		}
		var factor=Math.pow((1+interes),tiempo);
		var capital=cuota / ((factor*interes) / (factor-1));
		capital=capital + entrada;
		capital=parseLong(capital);
		return localnum(capital);
	}
	function char_replace(cadena,buscar,sustituir) {
	
	// Esta función sustituirá en la cadena <cadena>, todos los caracteres <buscar> por <sustituir>,
	// y quita todos los puntos de millar.
	
		var resultado="";
		for (x=0;x<cadena.length;x++) {
			if (cadena.substr(x,1) == buscar)
				resultado=resultado + sustituir;
			else if (cadena.substr(x,1) != '.')
				resultado=resultado + cadena.substr(x,1);
		}
		return resultado;
	}
	function parseLong(cadena) {
	
	// Función que convertirá un string a Long
	
		var numres;
		var cadnueva;
		var decimal;
		var x;
		var indice;
		numres=0;
		decimal=0;
		cadnueva='';
		cadena=cadena.toString();
		for (x=(cadena.length - 1);x >= 0;x--) {
			if (cadena.substr(x,1) == '.' && decimal)
				return 0;
			else if (cadena.substr(x,1) == '.')
				decimal=1;
			else if (decimal && (cadena.charCodeAt(x) - 48) >= 0 && (cadena.charCodeAt(x) - 48) <= 9)
				cadnueva=cadena.substr(x,1) + cadnueva;
		}
		if (cadnueva == '' && decimal == 0) {
			for (x=(cadena.length - 1);x >= 0;x--) {
				if ((cadena.charCodeAt(x) - 48) >= 0 && (cadena.charCodeAt(x) - 48) <= 9)
					cadnueva=cadena.substr(x,1) + cadnueva;
			}
		}
		for (x=(cadnueva.length - 1),indice=0;x >= 0;x--,indice++)
			numres=numres + ((cadnueva.charCodeAt(x) - 48) * Math.pow(10, indice));
		return numres;
	}
	function localnum(cadena) {

	// Función que convertirá un número cualquiera a formato local.
		
		var decimal;
		var grupo;
		var resultado;
		var count;
		cadena=cadena.toString();
		decimal=0;
		grupo=0;
		resultado='';
		for (count=(cadena.length - 1);count >= 0;count--) {
			if (cadena.substr(count,1) == '.') {
				decimal=1;
				resultado=',' + resultado;
			}
			else if (decimal && grupo == 3) {
				grupo=1;
				resultado=cadena.substr(count,1) + '.' + resultado;
			}
			else if (decimal) {
				grupo++;
				resultado=cadena.substr(count,1) + resultado;
			}
			else
				resultado=cadena.substr(count,1) + resultado;
		}
		if (!decimal) { // No tiene decimales, ponerle los puntos
			resultado='';
			grupo=0;
			for (count=(cadena.length - 1);count >= 0;count--) {
				if (grupo == 3) {
					grupo=1;
					resultado=cadena.substr(count,1) + '.' + resultado;
				}
				else {
					grupo++;
					resultado=cadena.substr(count,1) + resultado;
				}
			}
		}
		return resultado;
	}
	function strtoname(frase,apellidos) {
	
	// Esta función convertirá un texto introducido por el usuario, correspondiente
	// a nombres propios, en minúsculas con iniciales en mayúscula.
	
		var x, sw, result, aux, aux2;
		var car, cad, cod, enc, enc2, enc3, enc4;
		sw=1;
		result="";
		cad=frase.toUpperCase();
		enc=cad.indexOf("S.L.");
		enc2=cad.indexOf("S.A.");
		enc3=cad.indexOf("S.C.");
		enc4=cad.indexOf("C.B.");
		if (!apellidos) {
			if (enc != -1 || enc2 != -1 || enc3 != -1 || enc4 != -1) {
				alert('Los nombres de sociedad deben ir en el campo apellidos, dejando el nombre en blanco.');
				return "";
			}
		}
		else {
			if (enc != -1 || enc2 != -1 || enc3 != -1 || enc4 != -1)
				return cad;
		}
		for(x=0;x < frase.length;x++) {
			aux=frase.substr(x,4);
			aux2=frase.substr(x,5);
			aux=aux.toLowerCase();
			aux2=aux2.toLowerCase();
			car=frase.substr(x,1);
			cod=frase.charCodeAt(x);
			if ((car == " " && aux != " de " && aux != " la " && aux2 != " del ") || car == "-") sw=1;
			if (sw && car != " " && car != "-") {
				if (cod > 96 && cod < 123)
					result = result + String.fromCharCode(cod - 32);
				else
					result = result + car;
				sw=0;
			}
			else {
				if (frase.charCodeAt(x) > 64 && frase.charCodeAt(x) < 91)
					result = result + String.fromCharCode(cod + 32);
				else
					result = result + car;
			}
		}
		return result;
	}
	function urlencode(cadena) {
	
	// Esta función hará las veces del urlencode de PHP en Javascript.
	
		var resultado;
		resultado="";
		for (x=0;x<cadena.length;x++) {
			if (cadena.substr(x,1) == String.fromCharCode(13))
				resultado = resultado + "%0D";
			if (cadena.substr(x,1) == String.fromCharCode(10))
				resultado = resultado + "%0A";
			else if (cadena.substr(x,1) == String.fromCharCode(32))
				resultado = resultado + "%20";
			else
				resultado = resultado + cadena.substr(x,1);
		}
		return resultado;
	}
-->
