
		  var com=new Array(19);
	 
		  com[0]="Andalucía";
		  com[1]="Aragón";
		  com[2]="Asturias";
		  com[3]="Canarias";
		  com[4]="Cantabria";
		  com[5]="Castilla y León";
		  com[6]="Castilla-La Mancha";
		  com[7]="Cataluña";
		  com[8]="Ceuta";
		  com[9]="Extremadura";
		  com[10]="Galicia";
		  com[11]="Islas Baleares";
		  com[12]="Madrid";
		  com[13]="Melilla";
		  com[14]="Murcia";
		  com[15]="Navarra";
		  com[16]="País Vasco";
		  com[17]="La Rioja";
		  com[18]="Valencia";
		  
		var provincias0=new Array('Todas','Almería','Cádiz','Córdoba','Granada','Huelva','Jaén','Málaga','Sevilla');
		var provincias1=new Array('Todas','Huesca','Teruel','Córdoba','Zaragoza');
		var provincias2=new Array('Asturias');
		var provincias3=new Array('Todas','Las Palmas','Tenerife');
		var provincias4=new Array('Cantabria');
		var provincias5=new Array('Todas','Ávila','Burgos','León','Palencia','Salamanca','Segovia','Soria','Valladolid','Zamora');
		var provincias6=new Array('Todas','Albacete','Ciudad Real','Cuenca','Guadalajara','Toledo');
		var provincias7=new Array('Todas','Barcelona','Girona','Lleida','Tarragona');
		var provincias8=new Array('Ceuta');
		var provincias9=new Array('Todas','Badajoz','Cáceres');
		var provincias10=new Array('Todas','A Coruña','Lugo','Ourense','Pontevedra');
		var provincias11=new Array('Islas Baleares');
		var provincias12=new Array('Madrid');
		var provincias13=new Array('Melilla');
		var provincias14=new Array('Murcia');
		var provincias15=new Array('Navarra');
		var provincias16=new Array('Todas','Álava','Guipúzcoa','Vizcaya');
		var provincias17=new Array('La Rioja');
		var provincias18=new Array('Todas','Alicante','Castellón','Valencia');
		
		  var pro=new Array(19); 
		  pro[0]="A Coruña";
		  pro[1]="Álava";
		  pro[2]="Albacete";
		  pro[3]="Alicante";
		  pro[4]="Almería";
		  pro[5]="Asturias";
		  pro[6]="Ávila";
		  pro[7]="Baleares";
		  pro[8]="Badajoz";
		  pro[9]="Barcelona";
		  pro[10]="Burgos"
		  pro[11]="Cáceres";
		  pro[12]="Cádiz";
		  pro[13]="Cantabria";
		  pro[14]="Castellón";
		  pro[15]="Ceuta";
		  pro[16]="Ciudad Real";
		  pro[17]="Córdoba";
		  pro[18]="Cuenca";
		  pro[19]="Girona";
		  pro[20]="Granada";
		  pro[21]="Guadalajara";
		  pro[22]="Guipúzcoa";
		  pro[23]="Huelva";
		  pro[24]="Huesca";
		  pro[25]="Jaén";
		  pro[26]="La Rioja";
		  pro[27]="Las Palmas";
		  pro[28]="León";
		  pro[29]="Lleida";
		  pro[30]="Lugo";
		  pro[31]="Madrid";
		  pro[32]="Málaga";
		  pro[33]="Melilla";
		  pro[34]="Murcia";
		  pro[35]="Navarra";
		  pro[36]="Ourense";
		  pro[37]="Palencia";
		  pro[38]="Pontevedra";
		  pro[39]="Salamanca";
		  pro[40]="Segovia";
		  pro[41]="Sevilla";
		  pro[42]="Soria";
		  pro[43]="Tarragona";
		  pro[44]="Tenerife";
		  pro[45]="Teruel";
		  pro[46]="Toledo";
		  pro[47]="Valencia";
		  pro[48]="Valladolid";
		  pro[49]="Vizcaya";
		  pro[50]="Zamora";
		  pro[51]="Zaragoza";

// ------------- FUNCIONES PARA COMPROBACIONES ----------------//
// Compara 2 fechas. 
// Si String1>String2 entonces devuelve false.
// Si tipoFecha es true las fechas vienen en formato americano.
function CompararFecha(String1,String2,tipoFecha) {
	sFecha1 = new String(String1);
	sFecha2 = new String(String2);
	if (!tipoFecha) {
		ArrayFecha1=sFecha1.split("/");
		ArrayFecha2=sFecha2.split("/");
		sFecha1=ArrayFecha1[1]+"/"+ArrayFecha1[0]+"/"+ArrayFecha1[2];
		sFecha2=ArrayFecha2[1]+"/"+ArrayFecha2[0]+"/"+ArrayFecha2[2];
	} else {
		sFecha1 = String1;
		sFecha2 = String2;
	}
	//date.parse lo que hace es devolverte un numero entero, con lo cual la comparacion es asi de simple
	numFecha1=Date.parse(sFecha1);
	numFecha2=Date.parse(sFecha2);

	if (numFecha1>numFecha2) return false 
	return true;
}

function CompararFecha2(String1,String2,tipoFecha) {
	sFecha1 = new String(String1);
	sFecha2 = new String(String2);
	if (!tipoFecha) {
		ArrayFecha1=sFecha1.split("/");
		ArrayFecha2=sFecha2.split("/");
		sFecha1=ArrayFecha1[1]+"/"+ArrayFecha1[0]+"/"+ArrayFecha1[2];
		sFecha2=ArrayFecha2[1]+"/"+ArrayFecha2[0]+"/"+ArrayFecha2[2];
	} else {
		sFecha1 = String1;
		sFecha2 = String2;
	}
	//date.parse lo que hace es devolverte un numero entero, con lo cual la comparacion es asi de simple
	numFecha1=Date.parse(sFecha1);
	numFecha2=Date.parse(sFecha2);

	if (numFecha1>numFecha2){
		return 0 
	}
	if (numFecha1<numFecha2){ 
		return 1 
	}
	if (numFecha1==numFecha2){
		return 2
	}
	return 3
}
// ------------- FIN DE FUNCIONES PARA COMPROBACIONES ----------------//

// ------------- FUNCIONES PARA FORMATOS ----------------//

/* Esta función es una función auxiliar para validarFecha que comprueba si un año es bisiesto.
 * false si no es correcto el formato(dd/mm/aaaa) o (dd/mm/aa).
 * - Parámetros:
 * @ anyo> anho a comprobar.
 */
function esBisiesto(anyo) {
	//si el año introducido es de dos cifras lo pasamos al periodo de 1900. Ejemplo: 25 > 1925
	if (anyo < 100) var fin = anyo + 1900;
    else var fin = anyo ;
    /** primera condicion: si el resto de dividir el año entre 4 no es cero > el año no es bisiesto
     * es decir, obtenemos año modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
     */
 	if (fin % 4 != 0) return false;
    else {
    	if (fin % 100 == 0) {
        	//si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
            if (fin % 400 == 0) return true;
            //si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
            else return false;
        }//si es divisible por 4 y no es divisible por 100 > el año es bisiesto
        else return true;
    }
}

/* Esta funcion valida la fecha que se pasa por parametro. Retorna true si hay éxito y
 * false si no es correcto el formato(dd/mm/aaaa) o (dd/mm/aa).
 * - Parámetros:
 * @ Cadena-> cadena que contiene la fecha a validar.
 */
function validarFecha(Cadena){
	var Fecha= new String(Cadena)	// Crea un string
	var RealFecha= new Date()	// Para sacar la fecha de hoy
	var Ano= new String(Fecha.substring(Fecha.lastIndexOf("/")+1,Fecha.length))
	var Mes= new String(Fecha.substring(Fecha.indexOf("/")+1,Fecha.lastIndexOf("/")))
	var Dia= new String(Fecha.substring(0,Fecha.indexOf("/")))
	
	if (isNaN(Ano) || Ano.length<4 || parseFloat(Ano)<1900 || Ano.length>4)	return false;
	
	//comprobamos q el año no sea inferior a 1900 ni tenga solo 3 cifras, ya q sino da problemas de formato.
	if(Ano.length==4)
		if (Ano<1900) return false;
	
	if (Ano.length==3) return false;
	
	//fin comprobar año
	if (isNaN(Mes) || Mes.length>2 || Mes.length<1 || parseFloat(Mes)<1 || parseFloat(Mes)>12) return false;
	
	if (isNaN(Dia) || Dia.length<1 || Dia.length>2 || parseFloat(Dia)<1 || parseFloat(Dia)>31) return false;
	
	var bisiesto=esBisiesto(Ano)
	if (Mes==4 || Mes==6 || Mes==9 || Mes==11 || Mes==2) 
		if ( ((Mes==2) && (Dia > 28) && !(bisiesto) ) || (Dia>30) || ((bisiesto) && (Mes==2) && (Dia>29))) return false;
	
 	return true	
}

/* Esta función valida una dirección de email.
 * false si no es correcto el formato(dd/mm/aaaa) o (dd/mm/aa).
 * - Parámetros:
 * @ email> email a comprobar.
 */
function validarEmail(email) {
	caracNoValidos = " /:,;";
	if(email == "") return false; 							// debe rellenarse
	for(i = 0; i < caracNoValidos.length; i++) {			// ¿hay algún carácter no válido?
		caracMal = caracNoValidos.charAt(i);
		if(email.indexOf(caracMal,0) > -1) return false;
	}
	posArroba = email.indexOf("@",1); 						// debe haber una @
	if(posArroba == -1) return false;
	if(email.indexOf("@",posArroba+1) != -1) return false;	// y sólo una
	posPunto = email.indexOf(".",posArroba);
	if(posPunto == -1) return false;  						// y al menos un . después de la @
	if(posPunto+3 > email.length) return false; 			// debe haber al menos 2 caracteres tras el .
	return true;
}

/* Esta funcion valida la hora que se pasa por parametro. Retorna un 0 si hay éxito y
 * -1 si no es correcto el formato(dd:dd:dd) o los rangos(24horas).
 * - Parámetros:
 * @ hora_a_validar-> cadena que contiene la hora a validar.
 */
function ComprobarFormatoHora24(hora_a_validar) {
	var ExpReg=/^\d{2}:\d{2}:\d{2}$/;//formato de la hora en Expresion Regular
	
	if (ExpReg.test(hora_a_validar)) {
		var hora_array = hora_a_validar.split(":");
		var hora = parseInt(hora_array[0]);
		var minutos = parseInt(hora_array[1]);
		var segundos = parseInt(hora_array[2]);
		
		if ( (hora<0) || (hora>23) ) return (-1);
		if ( (minutos<0) || (minutos>59) ) return(-1);
		if ( (segundos<0) || (segundos>59) ) return(-1);
	} else { return (-1); }
	
	//Todo correcto...
	return (0);
}


/* Esta funcion comprueba el formato del numero de documento que se pasa por parámetro
 * Si es un nif comprueba si son 8 dígitos y una letra y si es un cif comprueba que sea
 * una letra y ocho digitos. Luego comprueba si la letra y el numero son correctos.
 * Retorna -1 si es incorrecto y 0 si es correcto y -2 si está vacío.
 * Parámetros:
 * @ documento-> cadena que contiene el número de documento a validar.
 */
function ValidarNifCif(documento) {
	var Vacio=/\S+/;
	var resultado;
	if (!Vacio.test(documento)) return (-2);

	if (documento.length!=9) return (-1);
	documento = documento.toUpperCase(documento);
	if ( !isNaN(documento.charAt(0)) ) {//se trata de un nif.
		resultado = nifValido(documento);
		return (resultado);
	} else {//se trata de un cif o un nie.
		
		if (documento.charAt(0)=="X") {//es un nie.
			documento = "0"+ documento.substring(1);
			resultado = nifValido(documento);
			return (resultado);
		} else {// es un cif.
			resultado = cifValido(documento);
			return (resultado);
		}
	}
}

/* Esta función valida un dni. Devuelve un 0 si es correcto y un -1 en caso contrario
 */
function nifValido(num_doc) {
	//cojo la letra.
	var letraIntroducida = num_doc.toUpperCase().substring(8);
	var letras = "TRWAGMYFPDXBNJZSQVHLCKET"
	var numero = parseInt(num_doc);
	numero = numero % 23;
	
	if ( letraIntroducida == letras.charAt(numero) ) return (0);
		else return (-1);
}

/* Esta función valida un cif. Devuelve un 0 si es correcto y un -1 en caso contrario
 */
function cifValido(numero_doc) {
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
    var temp = 0;
	var num = numero_doc.toUpperCase();
	var letra="";

    for( i = 2; i <= 6; i += 2 ) 
    {
      temp = temp + v1[ parseInt(num.substr(i-1,1)) ];
      temp = temp + parseInt(num.substr(i,1));
    };

    temp = temp + v1[ parseInt(num.substr(7,1)) ];
    temp = (10 - ( temp % 10));
	
	//si es una clave de caracter
	if ( (num.charAt(0)=="P") || (num.charAt(0)=="Q") || (num.charAt(0)=="S") ){
		temp+=40;
	 	letra = unescape("%"+temp);
		if ( letra == num.charAt(8))  return (0);
		else return (-1);
	} 
	//si es una clave numerica
	if (temp ==10) temp =0;
	if ( temp == num.charAt(8))  return (0);
	else return (-1);
}
// ---------------- FIN DE FUNCIONES PARA FORMATOS ----------------//
// ------------- FUNCIONES DE PROPOSITO GENERAL ----------------//
//IMAXES (precarga de imaxes)
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//levantar ventana flotante
function ventana(URL,x,y,scroll,resize){
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars="+scroll+",location=0,statusbar=0,menubar=0,resizable="+resize+",width="+x+",height="+y+",left=0,top=0');");
	return id;
}

function ventana2(URL,x,y,scroll,resize){
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars="+scroll+",location=0,statusbar=0,menubar=0,resizable="+resize+",width="+x+",height="+y+",left=0,top=0');");
}
// ------------- FIN DE FUNCIONES DE PROPOSITO GENERAL ----------------//

