// JavaScript Document
	function afecha(fecha) //convierte una fecha dada que debe tener como separador /, - o espacio, en formato dd/mm/aaaa,
	{
		//las posibilidades que contemplo son: d y dd, m y mm y aa y aaaa
		//los separadores que pueden usar son espacio, - y /
		//para trabajar de forma más facil internamente son /.
		fecha=fecha.replace(/-/gi, '/');
		fecha=fecha.replace(/ /gi, '/');
		
		//al segmentarlo por los espacios deben quedar 3 bloques.
		vector=fecha.split('/');
		if (vector.length==3)
		{
			dia=vector[0];
			mes=vector[1];
			ano=vector[2];
			
			//miro que el día no tenga 4 digitos
			if (dia.length==4)
			{
				aux=dia;
				dia=ano;
				ano=aux;
			}
			else
			{//en este caso todo está como debe, lo formateo.
				if (dia.length==1)
				{dia='0'+dia;}
				if (mes.length==1)
				{mes='0'+mes;}
				if (ano.length==2)
				{ano='20'+ano;}
			}
			fechas(dia+'/'+mes+'/'+ano);
		}
		else
		{
			if (fecha != '')
			{fechas('error');}
			else
			{borrar='';}
		}
	}

	function fechas(caja) //comprueba una fecha en formato dd/mm/aaaa
	{
	   caja=caja.substring(0,10);
	   if (caja)
	   {  
		  borrar = caja;
		  if ((caja.substr(2,1) == "/") && (caja.substr(5,1) == "/"))
		  {      
			 for (i=0; i<10; i++)
			 {	
				if (((caja.substr(i,1)<"0") || (caja.substr(i,1)>"9")) && (i != 2) && (i != 5))
				{
				   borrar = '';
				   break;  
				}  
			 }
			 if (borrar)
			 { 
				a = caja.substr(6,4);
				m = caja.substr(3,2);
				d = caja.substr(0,2);
				if((a < 1900) || (a > 2050) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
				   borrar = '';
				else
				{
				   if((a%4 != 0) && (m == 2) && (d > 28))	   
					  borrar = ''; // Año no bisiesto y es febrero y el dia es mayor a 28
				   else	
				   {
					  if ((((m == 4) || (m == 6) || (m == 9) || (m==11)) && (d>30)) || ((m==2) && (d>29)))
						 borrar = '';	      				  	 
				   }  // else
				} // fin else
			 } // if (error)
		  } // if ((caja.substr(2,1) == \"/\") && (caja.substr(5,1) == \"/\"))			    			
		  else
			 borrar = '';
		  if (borrar == '')
		  {alert('Fecha erronea');}
	   } // if (caja)   
	}

 	function ahora(v)//convierte una hora dada que debe tener como separador :, - o espacio, en formato hh:mm,
	{
	 	//alert(v);
		v=v.replace(/-/gi, ':');
		v=v.replace(/ /gi, ':');
		vector=v.split(':');
		if (vector.length==2)
		{
			hora=vector[0];
			minuto=vector[1];
			
			if (hora.length==1)
			{hora='0'+hora;}
			if (minuto.length==1)
			{minuto='0'+minuto;}
			
			horas(hora+':'+minuto);
		}
		else if(v!='')
		{
			if (v.length==1)
			{hora='0'+v;}
			else
			{hora=v;}
			
			horas(hora+':00');
		}
		else
		{
			if (horas != '')
			{horas('error');}
			else
			{borrar='';}
		}
	 }
	 
	function horas(caja) //comprueba una hora en formato hh:mm
	{
	   caja=caja.substring(0,5);
	   if (caja)
	   {  
		  borrar = caja;
		  if ((caja.substr(2,1) == ":"))
		  {      
			 for (i=0; i<5; i++)
			 {	
				if (((caja.substr(i,1)<"0") || (caja.substr(i,1)>"9")) && (i != 2))
				{
				   borrar = '';
				   break;  
				}  
			 }
			 
			 if (borrar)
			 { 
				h = caja.substr(0,2);
				m = caja.substr(3,2);
				if((h < 0) || (h > 24) || (m < 0) || (m > 59))
				{   borrar = '';}
			 } // if (error)
		  } // if ((caja.substr(2,1) == \"/\") && (caja.substr(5,1) == \"/\"))			    			
		  else
		  { borrar = '';}
		  
		  if (borrar == '')
		  {alert('Hora erronea');}
	   } // if (caja)   
	}
	
	function comprobar(formulario) //devuelve false si alguno de los controles de un formulario se encuentra vacio
	{
		for (i=0; i<formulario.elements.length; i++)
		{
			if(formulario.elements[i].value=='')
			{
				formulario.elements[i].focus();
				alert ("Alguno de los datos requeridos no se ha insertado correctamente");
				return false;
			}
		}
		return true;
	}
	
	function convertir_fecha(fecha, separador, cambio) //convierte una fecha dd/mm/aaaa en aaaa/mm/dd o viceversa
	{
		vector=fecha.split(separador);
		return vector[2]+cambio+vector[1]+cambio+vector[0];
	}
	
	var ultimo='';
	
	function expansion(cod, texto, tot, eti) //requiere la variable global ultimo, sirve para contraer o expandir texto etiquetado 'eti'
	{
		for (i=1; i<=tot; i++)
		{
			document.getElementById(eti+i).innerHTML = "";
		}
		
		//primero miro si estoy tratando con la misma eti.
		
		if(ultimo!=(eti+cod))
		{document.getElementById(eti+cod).innerHTML = texto;}
		
		if (ultimo==(eti+cod))
		{ultimo='';}
		else
		{ultimo=eti+cod;}
	}
	
	function ayuda(cod)
	{
		switch(cod)
		{
			//alert (cod);
			case "U":
			{alert ('Nombre de usuario.'); break;}
			case "P":
			{alert ('Contraseña.'); break;}
		}
	}
	
	function fecha()
	{
		days = new Array(7)
		days[1] = "Domingo";
		days[2] = "Lunes";
		days[3] = "Martes"; 
		days[4] = "Miercoles";
		days[5] = "Jueves";
		days[6] = "Viernes";
		days[7] = "Sabado";
		months = new Array(12)
		months[1] = "Enero";
		months[2] = "Febrero";
		months[3] = "Marzo";
		months[4] = "Abril";
		months[5] = "Mayo";
		months[6] = "Junio";
		months[7] = "Julio";
		months[8] = "Agosto";
		months[9] = "Septiembre";
		months[10] = "Octubre"; 
		months[11] = "Noviembre";
		months[12] = "Diciembre";
		
		var today = new Date();
		day = days[today.getDay() + 1]
		month = months[today.getMonth() + 1]
		date = today.getDate()
		year=today.getFullYear();
		var hours=today.getHours() 
		var minutes=today.getMinutes() 
		var seconds=today.getSeconds() 
		if (hours<=9) 
		hours="0"+hours 
		if (minutes<=9) 
		minutes="0"+minutes 
		if (seconds<=9) 
		seconds="0"+seconds 
		document.write(day + ", " + date + " de " +  month + " del " + year);//+ " " + hours + ":" + minutes + ":" + seconds
		document.write("<br><br>Copyright Acobur Asesores S.L. Prohibida su reproducci&oacute;n total o parcial.<br>P&aacute;gina web optimizada para Mozilla Firefox. Puede descargarlo gratuitamente haciendo <a href='http://mozilla-europe.org/es/firefox/' title='Descargar Mozilla Firefox' target='_blank'>clic aqu&iacute;<img src='firefox_icon.gif' border='0' /></a>");
	}

//Retorna: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF error, -2 = CIF error, -3 = NIE error, 0 = ??? error
	function valida_nif_cif_nie(a) 
	{
		var temp=a.toUpperCase();
		var cadenadni="TRWAGMYFPDXBNJZSQVHLCKE";
	 
		if (temp!==''){
			//si no tiene un formato valido devuelve error
			if ((!/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(temp) && !/^[T]{1}[A-Z0-9]{8}$/.test(temp)) && !/^[0-9]{8}[A-Z]{1}$/.test(temp))
			{
				return 0;
			}
	 
			//comprobacion de NIFs estandar
			if (/^[0-9]{8}[A-Z]{1}$/.test(temp))
			{
				posicion = a.substring(8,0) % 23;
				letra = cadenadni.charAt(posicion);
				var letradni=temp.charAt(8);
				if (letra == letradni)
				{
					return 1;
				}
				else
				{
					return -1;
				}
			}
	 
			//algoritmo para comprobacion de codigos tipo CIF
			suma = parseInt(a[2])+parseInt(a[4])+parseInt(a[6]);
			for (i = 1; i < 8; i += 2)
			{
				temp1 = 2 * parseInt(a[i]);
				temp1 += '';
				temp1 = temp1.substring(0,1);
				temp2 = 2 * parseInt(a[i]);
				temp2 += '';
				temp2 = temp2.substring(1,2);
				if (temp2 == '')
				{
					temp2 = '0';
				}
	 
				suma += (parseInt(temp1) + parseInt(temp2));
			}
			suma += '';
			n = 10 - parseInt(suma.substring(suma.length-1, suma.length));
	 
			//comprobacion de NIFs especiales (se calculan como CIFs)
			if (/^[KLM]{1}/.test(temp))
			{
				if (a[8] == String.fromCharCode(64 + n))
				{
					return 1;
				}
				else
				{
					return -1;
				}
			}
	 
			//comprobacion de CIFs
			if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp))
			{
				temp = n + '';
				if (a[8] == String.fromCharCode(64 + n) || a[8] == parseInt(temp.substring(temp.length-1, temp.length)))
				{
					return 2;
				}
				else
				{
					return -2;
				}
			}
	 
			//comprobacion de NIEs
			//T
			if (/^[T]{1}/.test(temp))
			{
				if (a[8] == /^[T]{1}[A-Z0-9]{8}$/.test(temp))
				{
					return 3;
				}
				else
				{
					return -3;
				}
			}
	 
			//XYZ
			if (/^[XYZ]{1}/.test(temp))
			{
				pos = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp).substring(0, 8) % 23;
				if (a[8] == cadenadni.substring(pos, pos + 1))
				{
					return 3;
				}
				else
				{
					return -3;
				}
			}
		}
	 
		return 0;
	}	
/*******************************
 Validación del nif/nif. Por Carlitos. carlosbernad@teleline.es
 Si usas este script, deja intactas estas líneas (créditos). Vale?
 También te agradecería un e-mail con tus comentarios.
 Idea original de validación de cif de KarlanKas
*******************************/

	function vcif(cif)
	{
		par = 0;
		non = 0;
		letras="ABCDEFGHKLMNPQS";
		let=cif.charAt(0);
		
		if (!isNaN(let))
		{
			nif=cif;
			
			return(validar(nif));
		}
		
		if (cif.length!=9)
		{
			return('El Cif debe tener 9 dígitos');
		}
		
		if (letras.indexOf(let.toUpperCase())==-1)
		{
			return ('El comienzo del Cif no es válido');
		}
		
		for (zz=2;zz<8;zz+=2)
		{
			par = par+parseInt(cif.charAt(zz));
		}
		
		for (zz=1;zz<9;zz+=2)
		{
			nn = 2*parseInt(cif.charAt(zz));
			if (nn > 9) 
			{
				nn = 1+(nn-10);
			}
			
			non = non+nn;
		}
		
		parcial = par + non;
		
		control = (10 - ( parcial % 10));

		if (control==10)
		{
			control=0;
		}

		if (control!=cif.charAt(8))
		{
			return ('El Cif no es válido');
		}
		return(true);
	}
		
	function validar(abc)
	{
		dni=abc.substring(0,abc.length-1);
		let=abc.charAt(abc.length-1);
		if (!isNaN(let))
		{
			return ('Falta la letra');
		}
		else
		{
			cadena="TRWAGMYFPDXBNJZSQVHLCKET";
			posicion = dni % 23;
			letra = cadena.substring(posicion,posicion+1);
			if (letra!=let.toUpperCase())
			{
				return('Nif no válido');
			}
		}
		return(true);
	}

/*	
	function CIFoDNI(t)
	{
		t=document.getElementById(t).value;
		t=t.toUpperCase();
		//miro si es X99999999 o 99999999X en otro caso está mal
		if(!/^[A-Za-z0-9]{9}$/.test(t))//longitud NO es 9
		{
			return('DNI o CIF no válidos, longitud incorrecta.');
		}
		else
		{
			if ((/^[A-Z]{1}/.test(t)) && (/[0-9]{8}$/.test(t))) //la primera es una de esas letras y el resto son números.
			{
				if (/^[ABCDEFGHKLMNPQS]/.test(t))
				{//por ahora correcto
					var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
					var temp = 0;
					
					for( i = 2; i <= 6; i += 2 ) 
					{
						temp = temp + v1[ parseInt(t.substr(i-1,1))];
						temp = temp + parseInt(t.substr(i,1));
					}
					
					temp = temp + v1[ parseInt(t.substr(7,1))];
					temp = (10 - ( temp % 10));
					alert (temp);
					if( temp == 10 )
					{
						return(true);//correcto
					}
					else
					{
						return('Dígito de control del CIF incorrecto.');
					}
				}
				else
				{
					return('El CIF introducido tiene una letra inválida.');
				}
			}
			else
			{
				if ((/[A-Z]{1}$/.test(t)) && (/^[0-9]{8}/.test(t)))//la ultima es una de esas letras y el resto números
				{
					var letrafin = t.substr(8,1);
					
					var cadena = 'TRWAGMYFPDXBNJZSQVHLCKE' ;
					var nifnum = parseInt(nif, 10) ;
					var posicion = nifnum % 23 ;
					
					var letraobtenida=cadena.charAt(posicion);
					if (letraobtenida==letrafin)
					{
						return(true);
					}
					else
					{
						return('La letra del DNI es incorrecta.');
					}
				}
				else
				{
					return('El dato introducido no tiene un formato de DNI o CIF válido.');
				}
			}
		}
	}
	
/*	function CompruebaDatos(caja) 
	{
		var resul = false;
		// pasar a mayúsculas
		var temp = document.getElementById(caja).value.toUpperCase(); 
		// not encuentra en la primera posición
		//si ( no encontramos una cadena que contenga letras o números , 9 seguidos entre las posiciones 1 y 9 .
		if (!/^[A-Za-z0-9]{9}$/.test(temp))
		{
			alert ("Longitud incorrecta, un CIF consta de 9 dígitos");
		}
		else if (!/^[ABCDEFGHKLMNPQS]/.test(temp)) //tenemos 9 seguidos, numeros o letras... la primera es una letra de la lista??
		{
			//otra opcion es que meta un dni con la letra al final
			if (!/[A-Z]{1}$/.test(temp))
			{
				alert("Formato incorrecto: X99999999 o 999999999X");
			}
			else
			{
				resul = true;
			}
		}
		else
		{
			resul = true;
		}
		return(resul);
	}

	// La función recibe el CIF completo: A58818501 en la caja
	function ValidaCIF(caja) 
	{	
		var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
		var temp = 0;
		
		for( i = 2; i <= 6; i += 2 ) 
		{
			temp = temp + v1[ parseInt(document.getElementById(caja).value.substr(i-1,1))];
			temp = temp + parseInt(document.getElementById(caja).value.substr(i,1));
		}
		
		temp = temp + v1[ parseInt(document.getElementById(caja).value.substr(7,1))];
		temp = (10 - ( temp % 10));
		
		if( temp == 10 )
		{
			alert( "El dígito de control es incorrecto." );
			return true;
		}
		else
		{
			//alert( "El dígito de control    es: "+temp );
			return false;
		}	
	}
	
	function ValidarNIF(caja)
	{
		var temp = document.getElementById(caja).value.toUpperCase(); 
		
		if (!/^[0-9]{8}/.test(temp))
		{
			//los primeros no son números.
		}
		else if (!/[A-Z]{1}$/.test(temp))//son números pero el último no es una letra.... aquí no debería entrar nunca
		{
		}
	}

	function letraNIF(nif) 
	{
		var cadena = 'TRWAGMYFPDXBNJZSQVHLCKE' ;
		var nifnum = parseInt(nif, 10) ;
		var posicion = nifnum % 23 ;
		return cadena.charAt(posicion) ;
	}
*/

	function php_urlencode (str) 
	{
		str = escape(str);
		return str.replace(/[*+\/@]|%20/g,
			function (s) 
			{
				switch (s) 
				{
					case "*": s = "%2A"; break;
					case "+": s = "%2B"; break;
					case "/": s = "%2F"; break;
					case "@": s = "%40"; break;
					case "%20": s = "+"; break;
				}
				return s;
			}
		);
	}
	
	function urlencode (str)
	{
    	str = (str+'').toString();
      return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
   }

	
	function comunidad(c)
	{
		var encendido=false;
		sel=document.getElementById('pr');
		for(i=0; i<sel.options.length; i++)
		{
			if(sel.options[i].value==c)
			{
				if(sel.options[i].selected==true)
				{
					encendido=true;
				}
			}
			else
			{
				if(encendido==true)
				{
					if(sel.options[i].value.substring(0,c.length)==c)
					{
						sel.options[i].selected=true;
					}
				}
			}
		}
	}
	
	function comunidad_usu(c)
	{
		var encendido=false;
		sel=document.getElementById('pr');
		for(i=0; i<sel.options.length; i++)
		{
			if(sel.options[i].value==c)
			{
				if(sel.options[i].selected==true)
				{
					encendido=true;
				}
			}
			else
			{
				if(encendido==true)
				{
					if(sel.options[i].value.substring(0,c.length)==c)
					{
						sel.options[i].selected=true;
					}
				}
			}
		}
	}