function ComprobarTexto(cadena){
	//verifica si contiene < y > ó ' ó todas las anteriores
	var v1 = "<";
	//var v2 = ">";
	var v3 = "'";
	var v4 = "&#34";
	var v5 = "&#60!--";
	
	if (cadena == ""){
		alert("No debe quedar ningún campo vacío. Revise el formulario. Gracias.");
		return false;
	}
	
	if (cadena.search("€") != -1){ 
		alert("No se permite el caracter: €");
		return false;
	}
	
	//if (( cadena.search(v1) != -1 ) ||( cadena.search(v2) != -1 ) ||
	if (( cadena.search(v1) != -1 ) ||( cadena.search(v3) != -1 )||( cadena.search(v4) != -1 )||( cadena.search(v5) != -1 )){
		alert("No se permiten los siguientes caracteres: <, >, ' o <!--");
		return false;
	}else{
		return true;
	}
}

function Comprobarbiblioteca(cadena){
	//verifica si contiene < y > ó ' ó todas las anteriores
	var v1 = "<";
	var v2 = ">";
	var v3 = "'";
	var v4 = "&#34";
	var v5 = "&#60!--";


	//if ((( cadena.search(v1) != -1 ) && ( cadena.search(v2) != -1 )) ||
	if (( cadena.search(v1) != -1 ) ||( cadena.search(v3) != -1 )||( cadena.search(v4) != -1 )||( cadena.search(v5) != -1 )){

		alert("No se permiten los siguientes caracteres: <, >, ' o <!--");
		return false;
	}else{
		return true;
	}
}


function Compruebanum(valor)
{
	var ch;
	
	if (valor == "") {
		alert("debe introducir un valor numerico");
		return false;
	} //si el usuario lo ha dejado en blanco
	if (isNaN(valor)) {
		alert("El valor introducido debe ser un número");
		return false;
	}
	return true;
}

function CompruebaFecha(valor)
{ //formato aceptado: dd/mm/aa
	if (valor == ""){
		alert("debe introducir un valor en el campo fecha, use: DD/MM/AA (ej: 01/10/00)");
		return false;
	}
	if ((valor.charAt(0)>"3")  || (valor.charAt(0)<"0") ||
	    (valor.charAt(1)>"9")  || (valor.charAt(1)<"0") ||
	    (valor.charAt(2)!="/") ||
	    (valor.charAt(3)>"1")  || (valor.charAt(3)<"0") ||
	    (valor.charAt(4)>"9")  || (valor.charAt(4)<"0") ||
	    (valor.charAt(5)!="/") ||
	    (valor.charAt(6)>"9")  || (valor.charAt(6)<"0") ||
	    (valor.charAt(7)>"9")  || (valor.charAt(7)<"0") ||
	    (parseInt(valor.substring(0,2),10)>31) ||
	    (parseInt(valor.substring(3,5),10)>12))
	{
		alert("El formato de la fecha no es válido, use: DD/MM/AA (ej: 01/10/00)");
		return false;
	}
	else {
		var mes=parseInt(valor.substring(3,5),10);
		if(mes==4||mes==6||mes==9||mes==11){
			if(parseInt(valor.substring(0,2),10)>30){
				alert("El formato de la fecha no es válido, use: DD/MM/AA (ej: 01/10/00)");
				return false;
			}else{return true;}
		}else{
			if(mes==2){
				var anno=parseInt(valor.substring(6,8),10);
				if((anno%4)==0) {
					if(parseInt(valor.substring(0,2),10)>29){
						alert("El formato de la fecha no es válido, use: DD/MM/AA (ej: 01/10/00)");
						return false;
					}else{return true;}
				}else{
					if(parseInt(valor.substring(0,2),10)>28){
						alert("El formato de la fecha no es válido, use: DD/MM/AA (ej: 01/10/00)");
						return false;
					}else{return true;}
				}
			}else{return true;}
		}
	}
}

function ComprobarUrl(cadena){

//verifica si contiene el encabezado http en las direcciones web introducidas

//var v1 = "http:";

	if (cadena.search("http:")!=0 ) {
		alert("Debe cumplimentar la dirección web con el formato: http://direccionweb");
		return false;
	}else{
		return true;
	}
}



function Search(cad, valor)
{ 	// Devuelve la posición (entre 0 y la long - 1) donde valor
	//   se encuentra en cad.
	//   Ejemplo: Search ("HOLA", "O") ==> 1
	//            Search ("HOLA", "J") ==> -1
	var i;
	
	for (i=0; i<cad.length; i++)
	{
		if (cad.charAt(i)==valor)
			return i;
	}
	
	return -1;
}
     
function ComprobarEmail(cadena){
	//verifica si contiene @ y .
	var v1 = "@";
	var v2 = ".";
	//alert("la cadena es:" + cadena);
	//alert("la funcion cadena.search(v1) devuelve:"+ cadena.search(v1));
	if (( Search(cadena,v2) == -1 )){
		return false;
	}
	if (Search(cadena,v1) == -1){
		return false;
	}
	return true;
}
//esta comprueba mas cosas q la anterior pero de momento estoy utilizando la comprobar_email
function mail(texto){ 

	var mailres = true;             
	var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-"; 
	
	var arroba = texto.indexOf("@",0); 
	if ((texto.lastIndexOf("@")) != arroba) arroba = -1; 
	
	var punto = texto.lastIndexOf("."); 
			
	for (var contador = 0 ; contador < texto.length ; contador++){ 
		if (cadena.indexOf(texto.substr(contador, 1),0) == -1){ 
			mailres = false; 
			break; 
		} 
	} 
	
	if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (texto.length)) && (mailres == true) && (texto.indexOf("..",0) == -1)) 
		mailres = true; 
	else 
		mailres = false; 
			
	return mailres; 
} 

function pasarEntero(cad){
	//Esta función pasa una cadena a número entero, teniendo en cuenta si es negativo
	var num, i, signo ;
	num = new String();
	num = cad;
			    
	while(num.length > 0 && num.charAt(0) == ' ')
		num = num.substr(1,num.length-1);
	//Ya tenemos el número, pero comprobamos que es un nùmero de verdad
			
	if (num=="")
		return "NaN";

		
	signo = '';
	if (num.charAt(0) == '-'){
		signo = '-';
		num = num.substr(1,num.length -1); 
	}
	else if (num.charAt(0) == '+'){
		signo = '+';
		num = num.substr(1,num.length -1); 
	}
	else {
		signo = '';
	}
	//Quito los espacios que haya entre el signo y la primera cifra
	while(num.length > 0 && num.charAt(0) == ' ')
		num = num.substr(1,num.length-1);
	if (isNaN(num))
		return "NaN";
	// si el número es de la forma .999 devuelvo 0
	if (num.charAt(0) == '.')
		return 0;
			
	//Ahora quitaremos los ceros que haya a la izquierda
	while(num.length > 1 && num.charAt(0) == '0' && num.charAt(1) != '.')
		num = num.substr(1,num.length-1);
							
	posComa = Search(num,'.');
	if (posComa == -1)
		num = signo + num;
	else
		num = signo + num.substr(0,posComa);
	return parseInt(num);
}
	   
	   	
function ReplaceTodo (cad, viejo, nuevo){
	// cad : string
	// viejo : char
	// nuevo : char
	
	var res;        
	var primercaracter;
	var i
	
	if (cad.length==0)
		return cad;
	
	primercaracter=cad.charAt(0);
	//         alert('REPLACE ALL (' + cad + ',<' + viejo + '>,<' + nuevo+'>)')
	
	fin=0;
	res='';
	
	
	for (i=0; i<cad.length; i++)
	{
		primercaracter=cad.charAt(i);
		if (primercaracter==viejo)
		primercaracter=nuevo;
		
		res=res+primercaracter;
		
	}
	return res;
  
}

    

function NumeroRepeticiones(cad, caracter)
{
	var i;
	var res;
	
	res=0;
	
	for (i=0;i<cad.length;i++)
	if (cad.charAt(i)==caracter)
		res++;
	
	return res;
  
}

function calcularedondeo(num)
{	// Redondea el num a lo siguiente: (num se supone son decimales)
	//   3123 ==> 3
	//   35   ==> 4
	//   345  ==> 4
	//   349  ==> 4
	//   343  ==> 3
	var i;
	var anterior;
	var siguiente;       
	
	if (num.length<1)
		return 0;
	
	if (num.length==1)
		return num;       
	
	siguiente=num.charAt(num.length-2);
	
	//       alert("ANTES DEL BUCLE:" + siguiente);
	
	for (i=num.length-2; i>=0; i--)
	{             
	
		if (siguiente>4)                 
			anterior=parseInt(num.charAt(i))+1;
		else
			anterior=num.charAt(i);
	
	siguiente=anterior; 
	//             alert("->" + siguiente);
		
	}
	
	return siguiente;
	
}

function FormatearAEuros(cad)
{ 	// cad = 999.99  o  999,99 (el punto o la coma indica los decimales)
	 var poscoma;  
	 var i;
	 var a;  // parte entera
	 var b;  // parte decimal (primeros dos decimales)
	 var c;  // parte decimal (a partir del tercer decimal)
	 var NumB;
	 var NumA;         
            
	cad=ReplaceTodo(cad, ',', '.');
	
	if (NumeroRepeticiones(cad, '.')>1)
	{
		alert('Introduzca un precio. El precio debe ser un número mayor que cero.');
		return 0;             
	}
	
	if (cad.length>0 && cad.charAt(cad.length-1)=='.')
		cad=cad.substr(0, cad.length-1);
		
	if (isNaN(cad))
	{ //alert(cad);
		alert('El precio debe ser un número mayor que cero.');
		return 0;
	}
	
	if (parseFloat(cad) <= 0){
		alert('El precio debe ser un número mayor que cero.');
		return 0;
	}
	
	cad=ReplaceTodo(cad, '.', ',');
	
	if (cad.length==0)
	{
		alert('Introduzca un precio. El precio debe ser un número mayor que cero.');
		return 0;
	}
	
	// Quitar los 0 de la izquierdas (0's irrelevantes)
		
	while( cad.length > 1 && cad.charAt(0)  == '0' && cad.charAt(1)  != ',')
		cad = cad.substr(1,cad.length-1);			
				
	poscoma=Search(cad,',');
	
	
	if (poscoma==-1) // Si no tiene comas, lo dejo tal como está
		return cad+',00';
	
	if (cad.length==poscoma) // la coma está al final
		return cad + '00';
	
	
	if (cad.length-poscoma==2) 
		return cad + '0';
	
	if (cad.length-poscoma==3) 
		return cad;          
	
	if (cad.length-poscoma>3)
	{  // Se redondea
		//   5,34499 ==> 5,35
		a = cad.substr(0,poscoma);
		b = cad.substr(poscoma+1,2);
		c = cad.substring(poscoma+3, cad.length);
		
		//alert('cad='+cad+' | a='+a+'| b='+b+'|c='+c);
		i=calcularedondeo(c);
		
		if (i>=5)
		{
			NumB = pasarEntero(b)+1;
			b=NumB;
			alert('NumB :' + NumB);
			if (b.length==1)
				b='0'+b;
		} 
		
		if (NumB>=100)
		{
			NumB=0;
			b='00';
			NumA=pasarEntero(a)+1;
		}
		else
			NumA=a;
		
		a=NumA;		        
		return a + ',' + b;
	}                     
}


function CalcularLetraDNI(Dni)
{
	var Resto
	var Letra
	var i
	var c
	      
	for (i=0; i< Dni.length; i++)
	{ 
		c = Dni.substring(i,i+1)
		if (c<'0' || c>'9')
			return ""
	}
	 
	//       alert(Dni.indexOf("a"))
	//       alert(Dni.substring(2,4))
	//       alert(Dni.charAt(0))
	
	 if (Dni.length == 8){
		Resto = (Dni % 23)+1
		if (Resto==1)
			Letra = "T"
		else if (Resto==2)
			Letra="R"
		else if (Resto==3)
			Letra="W"
		else if (Resto==4)
			Letra="A"
		else if (Resto==5)
			Letra="G"
		else if (Resto==6)
			Letra="M"
		else if (Resto==7)
			Letra="Y"
		else if (Resto==8)
			Letra="F"
		else if (Resto==9)
			Letra="P"
		else if (Resto==10)
			Letra="D"
		else if (Resto==11)
			Letra="X"
		else if (Resto==12)
			Letra="B"
		else if (Resto==13)
			Letra="N"
		else if (Resto==14)
			Letra="J"
		else if (Resto==15)
			Letra="Z"
		else if (Resto==16)
			Letra="S"
		else if (Resto==17)
			Letra="Q"
		else if (Resto==18)
			Letra="V"
		else if (Resto==19)
			Letra="H"
		else if (Resto==20)
			Letra="L"
		else if (Resto==21)
			Letra="C"
		else if (Resto==22)
			Letra="K"
		else if (Resto==23)
			Letra="E"
		else if (Resto==24)
			Letra="O"
				
		// Right(Left("TRWAGMYFPDXBNJZSQVHLCKEO", ((DNI Mod 23) + 1)), 1)
		
		return (Dni + Letra)
		
	}
	else
		return ""
}

function urlCheck (urlStr)
{ 
	var protocolo = "http[s]?://"
	var nombre = "[0123456789abcdefghijklmnopqrstuvwxyz_-]+"
	var maquina = "("+nombre+")(\\."+nombre+")*"
	var directorio = "(/"+nombre+")*"
	var archivo = "(/" + nombre + ")?"
	
	//var reg = /^http[s]?://\w[\.\w]+$/i
	//var reg = new RegExp("^http[s]?://\w[\.\w]+$", "i");
	// --> var reg = new RegExp("^http[s]?://[0-9,a-z]+(\.[0-9,a-z]+)+$", "i");
	// ---->var reg = new RegExp("^http[s]?://[0-9a-z]+(\.[0-9a-z]+)+(/[0-9a-z]+)*/?$", "i");
	//var reg = new RegExp("^http[s]?://\w+(\.\w)+(/(\w)+)*/?$", "i");
	var reg = new RegExp("^" + protocolo + maquina + directorio + archivo + "$","i");
	//    var reg = new RegExp("^\.$", "i");
		
	//   alert(reg.test(urlStr));
	
	if (urlStr.search(reg)){
		alert("La url parece incorrecta")
		return false	
	}
	
 	return true;
}

function emailCheck (emailStr, mostrarerror) {
	/* Verificar si el email tiene el formato user@dominio. */
	var emailPat=/^(.+)@(.+)$/ 
	
	/* Verificar la existencia de caracteres. ( ) < > @ , ; : \ " . [ ] */
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" 
	
	/* Verifica los caracteres que son válidos en una dirección de email */
	var validChars="\[^\\s" + specialChars + "\]" 
	
	var quotedUser="(\"[^\"]*\")" 
	
	/* Verifica si la dirección de email está representada con una dirección IP Válida */ 
	
	
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	
	
	/* Verificar caracteres inválidos */ 
	
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	/*domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	
	if(!CadenaValida(emailStr, true))
	{
		if (mostrarerror)
			alert("No introduzca comillas simples ni dobles en la dirección de Email.");
		return false;
	}

	
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		if (mostrarerror)
			alert("La dirección de Email parece incorrecta (comprueba @ y .'s)")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	
	// Si el user "user" es valido 
	if (user.match(userPat)==null) {
	// Si no
		if (mostrarerror)
			alert("El nombre de usuario del Email no es válido.")
		return false
	}
	
	/* Si la dirección IP es válida */
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				if (mostrarerror)
					alert("IP de destino inválida")
			return false
			}
		}
		return true
	}
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		if (mostrarerror)
			alert("El dominio parece no ser válido.")
		return false
	}
	
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	
	if (domArr[domArr.length-1].length<2 || 
		domArr[domArr.length-1].length>3) { 
		if (mostrarerror)
			alert("La dirección debe tener 3 letras si es .com o 2 si es de algún pais.")
		return false
	}
	
	if (len<2) {
		var errStr="La dirección es erronea"
		if (mostrarerror)
			alert(errStr)
		return false
	}
	
	// La dirección de email ingresada es Válida
	return true;
}


function CadenaValida (Cadena, PermiteAcentos)
{
	Cadena = Cadena.toUpperCase()
	
	if (Cadena.indexOf("€")>=0)
		return false;
	
	if (Cadena.indexOf('"')>=0)
		return false;
	
	if (!PermiteAcentos) {
		
		if (Cadena.indexOf("Á")>=0)
			return false;
			
		if (Cadena.indexOf("É")>=0)
			return false;
		
		if (Cadena.indexOf("Í")>=0)
			return false;
		
		if (Cadena.indexOf("Ó")>=0)
			return false;
			
		if (Cadena.indexOf("Ú")>=0)
			return false;
		
		if (Cadena.indexOf("À")>=0)
			return false;
			
		if (Cadena.indexOf("È")>=0)
			return false;
		
		if (Cadena.indexOf("Ì")>=0)
			return false;
		
		if (Cadena.indexOf("Ò")>=0)
			return false;
			
		if (Cadena.indexOf("Ù")>=0)
			return false;
		
		if (Cadena.indexOf("Ä")>=0)
			return false;
			
		if (Cadena.indexOf("Ë")>=0)
			return false;
		
		if (Cadena.indexOf("Ï")>=0)
			return false;
		
		if (Cadena.indexOf("Ö")>=0)
			return false;
			
		if (Cadena.indexOf("Ü")>=0)
			return false;
			
		if (Cadena.indexOf("Â")>=0)
			return false;
			
		if (Cadena.indexOf("Ê")>=0)
			return false;
		
		if (Cadena.indexOf("Î")>=0)
			return false;
		
		if (Cadena.indexOf("Ô")>=0)
			return false;
			
		if (Cadena.indexOf("Û")>=0)
			return false;
	}    
	//	  if (Cadena.indexOf("ñ")>=0)
	//		  return false;
	//
	//	  if (Cadena.indexOf("Ñ")>=0)
	//		  return false;          
		
	return true;
   
 }

function DNIValido(Dni)
{
	var i
	var c
	
	if (Dni.length != 8)
		return false;
		
	for (i=0; i< Dni.length; i++)
	{ 
		c = Dni.substring(i,i+1)
		if (c<'0' || c>'9')
			return false;
	}
	return true;

}
    

function EsDia (Fecha)
{
	//el formato de fecha debe ser DD/MM/YYYY  o DD/MM/YY
	var longitud
	var Mes 
	var Dia 
	var Anno 
	var Correcta
	
	Correcta=false
	
	longitud = Fecha.length
	
	if (Fecha.indexOf("-") >= 0 ||
	Fecha.indexOf("+") >= 0)
	// Contiene "-" o "+", luego la fecha no es válida
		return false
			
	if (longitud==8)
		Fecha = Fecha.substring(0,6) + '20' + Fecha.substring(6,8)           
	
	
	longitud =  Fecha.length
	
	if (longitud != 10)
		return false;            
	
	
	if (Fecha.charAt(2)!='/' || Fecha.charAt(5) != '/')
		return false;
	
	
	if (isNaN(Fecha.substring(0,2)))
		return false;
	
	
	if (isNaN(Fecha.substring(3,5)))
		return false;
		
	if (isNaN(Fecha.substring(6,10)))
		return false;
	
	
	
	Dia = pasarEntero(Fecha.substring(0,2))
	Mes = pasarEntero(Fecha.substring(3,5))
	Anno = pasarEntero(Fecha.substring(6,10))
	
	if ((Anno<1901) || (Anno>2078))
		return false;
	
	else
		if (Mes<1 || Mes>12)
			return false;
	
		else
			if (Dia < 1 || Dia > 31)
				return false;
		
			else 
				if ((Mes==1)||(Mes==3)||(Mes==5)||(Mes==7)||(Mes==8)||(Mes==10)||(Mes==12))
				{
					if (Dia>31)
						return false;
				}
	else
	
		if ((Mes==4)||(Mes==6)||(Mes==9)||(Mes==11))
		{
			if (Dia>30)
				return false;
		}
		else
	
			if (Mes==2)
			{ 
				if ((Anno % 4)==0)
				{
					if (Dia>29)
						return false;	  
				}
				else
				{
					if (Dia>28)
					{
						return false;
					}
				}
			}
			else
			{ 
				return false;
			}
	
	
	return true;

}


function FechaValida (oDia, oMes, oAnno, obligatorio)
 {
	var Dia
	var Mes
	var Anno
	var cadenaDia
	var cadenaMes
	var cadenaAnno

	cadenaDia= trim(oDia.value)
	cadenaMes= trim(oMes.value)
	cadenaAnno= trim(oAnno.value)

	if ( (Search(cadenaDia,".")>=0) || (Search(cadenaDia, ",")>=0) || (Search(cadenaDia, "+")>=0) ) {
		alert("Introduzca un día válido.");
		oDia.focus();
		oDia.select();
		return false;
	}

	if ( (Search(cadenaMes,".")>=0) || (Search(cadenaMes, ",")>=0) || (Search(cadenaMes, "+")>=0) )
	{
		alert("Introduzca un mes válido.");
		oMes.focus();
		oMes.select();
		return false;
	}

	if ( (Search(cadenaAnno,".")>=0) || (Search(cadenaAnno, ",")>=0) || (Search(cadenaAnno, "+")>=0) )	{
		alert("Introduzca un año válido.");
		oAnno.focus();
		oAnno.select();
		return false;
	}
//        if (trim(oDia.value)=="" && trim(oMes.value)=="" && trim(oAnno.value=="")) 
	if (cadenaDia=="" && cadenaMes=="" && cadenaAnno=="")
	{ 
		if (obligatorio) { 
			alert("Es necesario que indique la fecha.")
			oDia.focus();
			return false;
		}
		else
			return true;
	}
	
	if (cadenaDia.indexOf("-") >= 0 || cadenaDia.indexOf("+")>=0)
	{
		alert("No introduzca + y - en el día.")
		oDia.focus();
		oDia.select();
		return false;
	}

	if (cadenaMes.indexOf("-") >= 0 || cadenaMes.indexOf("+")>=0)
	{
		alert("No introduzca + y - en el mes.")
		oMes.focus();
		oMes.select();
		return false;
	}

	if (cadenaAnno.indexOf("-") >= 0 || cadenaAnno.indexOf("+")>=0)
	{
		alert("No introduzca + y - en el año.")
		oAnno.focus();
		oAnno.select();
		return false;
	}	   

	if (isNaN(oDia.value))
	{ 
		alert("Introduzca un día válido.");		  
		oDia.focus();
		oDia.select();	   
		return false;
	}
	
	if (isNaN(oMes.value))
	{ 
		alert("Introduzca un mes válido.");
		oMes.focus();
		oMes.select();
		return false;
	}
	
	if (isNaN(oAnno.value))
	{ 
		alert("Introduzca un año válido.");
		oAnno.focus();
		oAnno.select();
		return false;
	}
    


	Dia = oDia.value
	Mes = oMes.value
	Anno = oAnno.value
	
	if (Dia<1||Dia>31) {
		 alert("Introduzca un día entre 1 y 31.")
		 oDia.focus();
		 oDia.select();
		 return false;
	}
	else
      		if (Mes<1 || Mes>12)
		{
			alert("Introduzca un mes entre 01 y 12.")
			oMes.focus();
			oMes.select();
			return false;
		}

	 	else
	 
		if ((Anno<1901) || (Anno>2078))
		{
			alert("Introduzca un año entre 1901 y 2078.")
			oAnno.focus();
			oAnno.select();
			return false;
		}
	
		else 
			if ((Mes==1)||(Mes==3)||(Mes==5)||(Mes==7)||(Mes==8)||(Mes==10)||(Mes==12))
			{
				if (Dia>31)
				{
					alert("Introduzca un día entre 1 y 31.")
					oDia.focus();
					oDia.select();
					return false;
				}
			}
			else
	
				if ((Mes==4)||(Mes==6)||(Mes==9)||(Mes==11))
				{
					if (Dia>30)
					{
						alert("Introduzca un día entre 1 y 30.")
						oDia.focus();
						oDia.select();
						return false;
					}
				}
				else
	
					if (Mes==2)
					{ 
						if ((Anno % 4)==0)
						{
							if (Dia>29)
							{
								alert("Introduzca un día entre 1 y 29.")
								oDia.focus();
								oDia.select();
								return false;
							}
						}
						else
						{
							if (Dia>28)
							{
								alert("Introduzca un día entre 1 y 28.")
								oDia.focus();
								oDia.select();
								return false;
							}
						}
					}
					else
					{ // Esta rama nunca debe ejecutarse
						alert("Introduzca una fecha válida.")
						oDia.focus();
						oDia.select();
						return false;
					}
	
	return true;
             
}

function HoraValida (oHora, oMinutos, obligatorio)
 {
	var Hora
	var Minutos	
	var cadenaHora
	var cadenaMinutos	

	cadenaHora= trim(oHora.value)
	cadenaMinutos= trim(oMinutos.value)	
	
	if (isNaN(oHora.value))
	{ 
		alert("Introduzca una hora válida.");		  
		oHora.focus();
		oHora.select();	   
		return false;
	}

   	if (isNaN(oMinutos.value))
	{ 
		alert("Introduzca unos minutos válidos.");
		oMinutos.focus();
		oMinutos.select();
		return false;
	}
       
	Hora = oHora.value
	Minutos = oMinutos.value   
		
	if (Hora<0||Hora>23) {
		alert("Introduzca una hora entre 0 y 23.")
		oHora.focus();
		oHora.select();
		return false;
	}
	else
	{
		if (Minutos<0 || Minutos>59)
		{
			alert("Introduzca unos minutos entre 00 y 59.")
			oMinutos.focus();
			oMinutos.select();
			return false;
		}
	}
	
   	return true;             
}

function comprobarFechaNumerica(Dia,Mes,Anno) 
{	 

	if (isNaN(Dia))
	{ 
		alert("Introduzca un día válido.");		  		
		return false;
	}

	if (isNaN(Mes))
	{ 
		alert("Introduzca un mes válido.");	    
		return false;
	}
	
	if (isNaN(Anno))
	{ 
		alert("Introduzca un año válido.");	    
		return false;
	}
	
	if (Dia<1||Dia>31) 
	{
		alert("Introduzca un día entre 1 y 31.")
		return false;
	}
	else if (Mes<1 || Mes>12)
	{
		alert("Introduzca un mes entre 01 y 12.")
		return false;
	}
	else if (Anno<1901 || Anno>2078)
	{
		alert("Introduzca un año entre 1901 y 2078.")
		return false;
	}
	else if ((Mes==1)||(Mes==3)||(Mes==5)||(Mes==7)||(Mes==8)||(Mes==10)||(Mes==12))
	{
		if (Dia>31)
		{
			alert("Introduzca un día entre 1 y 31.")
			return false;
		}
	}
	else if ((Mes==4)||(Mes==6)||(Mes==9)||(Mes==11))
	{
		if (Dia>30)
		{
			alert("Introduzca un día entre 1 y 30.")
			return false;
		}
	}
	else if (Mes==2)
	{ 
		if ((Anno % 4)==0)
		{
			if (Dia>29)
			{
				alert("Introduzca un día entre 1 y 29.")
				return false;
			}
		}
		else
		{
			if (Dia>28)
			{
				alert("Introduzca un día entre 1 y 28.")
				return false;
			}
		}
	}

	
	return true;
	
}


function trim(cad)
{
	var res;
	var i;
	var IndiceInferior;
	var IndiceSuperior;
	
	res="";
	IndiceInferior=0;
	IndiceSuperior=0;
	
	if (cad.length==0) // cadena vacía
		return res;
	
	i=0;
	while (i<cad.length && cad.charAt(i)==" ")
		i++;
	
	IndiceInferior=i;
	
	if (i==cad.length) // cadena con solo espacios
		return res;
	
	i=cad.length-1;
	while (i>IndiceInferior && cad.charAt(i)==" ")
		i--;
	
	IndiceSuperior=i+1;
	
	return cad.substring(IndiceInferior, IndiceSuperior);      
}

function CodigoPostalValido(cp)
{ 
	var i;
	
	if (cp.length!=5)
		return false;
	
	for (i=0; i<5; i++)
		if (cp.charAt(i)<'0' || cp.charAt(i)>'9')
			return false;
	
	if (cp.substring(0,2)<1 || cp.substring(0,2)>52)
		return false;
		
	return true;
}
  
function TelefonoValido(tel)
{ 
	var i;
	
	if (tel.length<9)
		return false;
		
	if ((tel.charAt(0)<'0' || tel.charAt(0)>'9') && (tel.charAt(0) != '+'))
		return false;
	
	for (i=1; i<tel.length; i++)
		if (tel.charAt(i)<'0' || tel.charAt(i)>'9') 
			return false;
	
	return true;
}


///////////// FORMATEA A DECIMAL CON N DECIMALES ///////////////////////

function CaracterRepetido(car,veces)
{
	var res="";
	var i;
	
	for (i=0;i<veces;i++)
		res=res+car;
	
	return res;
}

function FormatearNDecimal(cad,numdec)
{ // cad = 999.99  o  999,99 (el punto o la coma indica los decimales)
	var poscoma;  
	var i;
	var a;  // parte entera
	var b;  // parte decimal (primeros dos decimales)
	var c;  // parte decimal (a partir del tercer decimal)
	var NumB;
	var NumA;
	var signo;
	
	if(cad.charAt(0)=='-')
	{ 
		signo='-';
		cad=cad.substr(1,cad.length-1);
	}
	else
		signo='';
	
	cad=ReplaceTodo(cad, ',', '.');
	
	if (NumeroRepeticiones(cad, '.')>1)
	{
		return NaN;
	}
	
	if (cad.length>0 && cad.charAt(cad.length-1)=='.')
		cad=cad.substr(0, cad.length-1);
	
	if (isNaN(cad))
	{ 
		return NaN;
	}
	
	cad=ReplaceTodo(cad, '.', ',');

	if (cad.length==0)
	{
		return NaN;
	}

	// Quitar los 0 de la izquierdas (0's irrelevantes)
	
	while( cad.length > 1 && cad.charAt(0)  == '0' && cad.charAt(1)  != ',')
		cad = cad.substr(1,cad.length-1);			
	
	poscoma=Search(cad,',');
	
	if (numdec<1) // Si no pide decimales, se redondea
	{
		if (poscoma==-1) // No hay comas
			return signo+cad;                
		else
		{
			a = cad.substr(0,poscoma);
			b = cad.substr(poscoma+1,cad.length);
			i=calcularedondeo(b);
			if (i>=5)
			{
				a=pasarEntero(a)+1;
			}
			return signo+a;
		}
	}
	
	if (poscoma==-1) // Si no tiene comas, lo dejo tal como está
		return signo+cad+','+CaracterRepetido('0',numdec);
	
	if (cad.length-poscoma-1<=numdec)
	{ // Si tiene entre 1 y numdec decimales
		return signo+cad+CaracterRepetido('0',numdec-cad.length+poscoma+1);
	}

	if (cad.length-poscoma>numdec+1)
	{  // Se redondea
		//   5,34499 ==> 5,35
		a = cad.substr(0,poscoma);
		b = cad.substr(poscoma+1,numdec);
		c = cad.substring(poscoma+numdec+1, cad.length);

		i=calcularedondeo(c);
	
		if (i>=5)
		{
			NumB = pasarEntero(b)+1;
			b=NumB.toString(); // pasamos a cadena
			b=CaracterRepetido('0',numdec-b.length)+b;
		} 

		if (NumB>=Math.pow(10,numdec))
		{
			NumB=0;
			b=CaracterRepetido('0',numdec);
			NumA=pasarEntero(a)+1;
		}
		else
			NumA=a;

		a=NumA;
		return signo + a + ',' + b;
	}              
}


function ComprobarSO()
{
	var i,j;
	var temp = "";
	var arrayObj;
	
	for (i=1; i<=6; i++)
	{
		var arrayObj = document.getElementsByName('sis_'+i);
	
		for (j=0;j<arrayObj.length;j++) 
		{
		
			if (arrayObj[j].checked)
			{
				if (temp.indexOf(arrayObj[j].value) >=0) { 
					return false;
				} 
				else {
					temp += arrayObj[j].value+',';
				}	
			}
		}	
	}
	if (temp.length!=0)
	{
		temp.substr(0,temp.length-1);
	}
			
	return true;
}

function CompruebaFecha2(valor)
{ //formato aceptado: dd/mm/aaaa
	if (valor == "") 
	{
		alert("Debe introducir un valor en el campo fecha, use: DD/MM/AAAA.");
		return false;
	}
	if ((valor.charAt(0)>"3")  || (valor.charAt(0)<"0") ||
		(valor.charAt(1)>"9")  || (valor.charAt(1)<"0") ||
		(valor.charAt(2)!="/") ||
		(valor.charAt(3)>"1")  || (valor.charAt(3)<"0") ||
		(valor.charAt(4)>"9")  || (valor.charAt(4)<"0") ||
		(valor.charAt(5)!="/") ||
		(valor.charAt(6)>"9")  || (valor.charAt(6)<"0") ||
		(valor.charAt(7)>"9")  || (valor.charAt(7)<"0") ||
		(valor.charAt(8)>"9")  || (valor.charAt(8)<"0") ||
		(valor.charAt(9)>"9")  || (valor.charAt(9)<"0") ||
		(parseInt(valor.substring(0,2),10)>31) ||
		(parseInt(valor.substring(3,5),10)>12))
	{
		alert("El formato de la fecha no es válido, use: DD/MM/AAAA.");
		return false;
	}
	else {
		var mes=parseInt(valor.substring(3,5),10);
		if(mes==4||mes==6||mes==9||mes==11){
			if(parseInt(valor.substring(0,2),10)>30){
				alert("El formato de la fecha no es válido, use: DD/MM/AAAA.");
				return false;
			}else{return true;}
		}else{
			if(mes==2){
				var anno=parseInt(valor.substring(6,10),10);
				if((anno%4)==0) {
					if(parseInt(valor.substring(0,2),10)>29){
						alert("El formato de la fecha no es válido, use: DD/MM/AAAA.");
						return false;
					}else{return true;}
				}else{
					if(parseInt(valor.substring(0,2),10)>28){
						alert("El formato de la fecha no es válido, use: DD/MM/AAAA.");
						return false;
					}else{return true;}
				}
			}else{return true;}
		}
	}
}

function acentos(x) {
// version 040623
	// Spanish - Español
	// Portuguese - Portugués - Português
	// Italian - Italiano
	// French - Francés - Français
	// Also accepts and converts single and double quotation marks, square and angle brackets
	// and miscelaneous symbols.
	// Also accepts and converts html entities for all the above.
//	if (navigator.appVersion.toLowerCase().indexOf("windows") != -1) {return x}
	x = x.replace(/¡/g,"\xA1");	x = x.replace(/&iexcl;/g,"\xA1");
	x = x.replace(/¿/g,"\xBF");	x = x.replace(/&iquest;/g,"\xBF");
	x = x.replace(/À/g,"\xC0");	x = x.replace(/&Agrave;/g,"\xC0");
	x = x.replace(/à/g,"\xE0");	x = x.replace(/&agrave;/g,"\xE0");
	x = x.replace(/Á/g,"\xC1");	x = x.replace(/&Aacute;/g,"\xC1");
	x = x.replace(/á/g,"\xE1");	x = x.replace(/&aacute;/g,"\xE1");
	x = x.replace(/Â/g,"\xC2");	x = x.replace(/&Acirc;/g,"\xC2");
	x = x.replace(/â/g,"\xE2");	x = x.replace(/&acirc;/g,"\xE2");
	x = x.replace(/Ã/g,"\xC3");	x = x.replace(/&Atilde;/g,"\xC3");
	x = x.replace(/ã/g,"\xE3");	x = x.replace(/&atilde;/g,"\xE3");
	x = x.replace(/Ä/g,"\xC4");	x = x.replace(/&Auml;/g,"\xC4");
	x = x.replace(/ä/g,"\xE4");	x = x.replace(/&auml;/g,"\xE4");
	x = x.replace(/Å/g,"\xC5");	x = x.replace(/&Aring;/g,"\xC5");
	x = x.replace(/å/g,"\xE5");	x = x.replace(/&aring;/g,"\xE5");
	x = x.replace(/Æ/g,"\xC6");	x = x.replace(/&AElig;/g,"\xC6");
	x = x.replace(/æ/g,"\xE6");	x = x.replace(/&aelig;/g,"\xE6");
	x = x.replace(/Ç/g,"\xC7");	x = x.replace(/&Ccedil;/g,"\xC7");
	x = x.replace(/ç/g,"\xE7");	x = x.replace(/&ccedil;/g,"\xE7");
	x = x.replace(/È/g,"\xC8");	x = x.replace(/&Egrave;/g,"\xC8");
	x = x.replace(/è/g,"\xE8");	x = x.replace(/&egrave;/g,"\xE8");
	x = x.replace(/É/g,"\xC9");	x = x.replace(/&Eacute;/g,"\xC9");
	x = x.replace(/é/g,"\xE9");	x = x.replace(/&eacute;/g,"\xE9");
	x = x.replace(/Ê/g,"\xCA");	x = x.replace(/&Ecirc;/g,"\xCA");
	x = x.replace(/ê/g,"\xEA");	x = x.replace(/&ecirc;/g,"\xEA");
	x = x.replace(/Ë/g,"\xCB");	x = x.replace(/&Euml;/g,"\xCB");
	x = x.replace(/ë/g,"\xEB");	x = x.replace(/&euml;/g,"\xEB");
	x = x.replace(/Ì/g,"\xCC");	x = x.replace(/&Igrave;/g,"\xCC");
	x = x.replace(/ì/g,"\xEC");	x = x.replace(/&igrave;/g,"\xEC");
	x = x.replace(/Í/g,"\xCD");	x = x.replace(/&Iacute;/g,"\xCD");
	x = x.replace(/í/g,"\xED");	x = x.replace(/&iacute;/g,"\xED");
	x = x.replace(/Î/g,"\xCE");	x = x.replace(/&Icirc;/g,"\xCE");
	x = x.replace(/î/g,"\xEE");	x = x.replace(/&icirc;/g,"\xEE");
	x = x.replace(/Ï/g,"\xCF");	x = x.replace(/&Iuml;/g,"\xCF");
	x = x.replace(/ï/g,"\xEF");	x = x.replace(/&iuml;/g,"\xEF");
	x = x.replace(/Ñ/g,"\xD1");	x = x.replace(/&Ntilde;/g,"\xD1");
	x = x.replace(/ñ/g,"\xF1");	x = x.replace(/&ntilde;/g,"\xF1");
	x = x.replace(/Ò/g,"\xD2");	x = x.replace(/&Ograve;/g,"\xD2");
	x = x.replace(/ò/g,"\xF2");	x = x.replace(/&ograve;/g,"\xF2");
	x = x.replace(/Ó/g,"\xD3");	x = x.replace(/&Oacute;/g,"\xD3");
	x = x.replace(/ó/g,"\xF3");	x = x.replace(/&oacute;/g,"\xF3");
	x = x.replace(/Ô/g,"\xD4");	x = x.replace(/&Ocirc;/g,"\xD4");
	x = x.replace(/ô/g,"\xF4");	x = x.replace(/&ocirc;/g,"\xF4");
	x = x.replace(/Õ/g,"\xD5");	x = x.replace(/&Otilde;/g,"\xD5");
	x = x.replace(/õ/g,"\xF5");	x = x.replace(/&otilde;/g,"\xF5");
	x = x.replace(/Ö/g,"\xD6");	x = x.replace(/&Ouml;/g,"\xD6");
	x = x.replace(/ö/g,"\xF6");	x = x.replace(/&ouml;/g,"\xF6");
	x = x.replace(/Ø/g,"\xD8");	x = x.replace(/&Oslash;/g,"\xD8");
	x = x.replace(/ø/g,"\xF8");	x = x.replace(/&oslash;/g,"\xF8");
	x = x.replace(/Ù/g,"\xD9");	x = x.replace(/&Ugrave;/g,"\xD9");
	x = x.replace(/ù/g,"\xF9");	x = x.replace(/&ugrave;/g,"\xF9");
	x = x.replace(/Ú/g,"\xDA");	x = x.replace(/&Uacute;/g,"\xDA");
	x = x.replace(/ú/g,"\xFA");	x = x.replace(/&uacute;/g,"\xFA");
	x = x.replace(/Û/g,"\xDB");	x = x.replace(/&Ucirc;/g,"\xDB");
	x = x.replace(/û/g,"\xFB");	x = x.replace(/&ucirc;/g,"\xFB");
	x = x.replace(/Ü/g,"\xDC");	x = x.replace(/&Uuml;/g,"\xDC");
	x = x.replace(/ü/g,"\xFC");	x = x.replace(/&uuml;/g,"\xFC");
	x = x.replace(/\"/g,"\x22");
	x = x.replace(/\'/g,"\x27");
	x = x.replace(/\</g,"\x3C");
	x = x.replace(/\>/g,"\x3E");
	x = x.replace(/\[/g,"\x5B");
	x = x.replace(/\]/g,"\x5D");
	x = x.replace(/¢/g,"\xA2");	x = x.replace(/&cent;/g,"\xA2");
	x = x.replace(/£/g,"\xA3");	x = x.replace(/&pound;/g,"\xA3");
//	x = x.replace(/?/g,"\u20AC");	x = x.replace(/&euro;/g,"\u20AC");
	x = x.replace(/©/g,"\xA9");	x = x.replace(/&copy;/g,"\xA9");
	x = x.replace(/®/g,"\xAE");	x = x.replace(/&reg;/g,"\xAE");
	x = x.replace(/ª/g,"\xAA");	x = x.replace(/&ordf;/g,"\xAA");
	x = x.replace(/º/g,"\xBA");	x = x.replace(/&ordm;/g,"\xBA");
	x = x.replace(/°/g,"\xB0");	x = x.replace(/&deg;/g,"\xB0");
	x = x.replace(/±/g,"\xB1");	x = x.replace(/&plusmn;/g,"\xB1");
	x = x.replace(/×/g,"\xD7");	x = x.replace(/&times;/g,"\xD7");
	return x;
}

function comprobarCCC (cuenta){
	var valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
	var controlCS=0;
	var controlCC = 0;
	for (i=0; i<=7; i++){
		controlCS += parseInt(cuenta.charAt(i)) * valores[i+2];
	}
	controlCS = 11 - (controlCS % 11);
	if (controlCS == 11) controlCS = 0;
	else if (controlCS == 10) controlCS = 1;

	for (i=10; i<=19; i++){
		controlCC += parseInt(cuenta.charAt(i)) * valores[i-10];
	}
	controlCC = 11 - (controlCC % 11);
	if (controlCC == 11) controlCC = 0;
	else if (controlCC == 10) controlCC = 1;

	if (cuenta.charAt(8)!=controlCS || cuenta.charAt(9)!=controlCC ) {
		return false;
	}else{
		return true;
	}
}

function comprobarIBAN (cuenta,iban){
	cuenta=cuenta+iban;
	cuenta2="";
	for (i=0; i<cuenta.length; i++){
		valor=cuenta.charAt(i);
		if (valor.toLowerCase()=="a"){
			valor="10";
		}else if (valor.toLowerCase()=="b"){
			valor="11";
		}else if (valor.toLowerCase()=="c"){
			valor="12";
		}else if (valor.toLowerCase()=="d"){
			valor="13";
		}else if (valor.toLowerCase()=="e"){
			valor="14";
		}else if (valor.toLowerCase()=="f"){
			valor="15";
		}else if (valor.toLowerCase()=="g"){
			valor="16";
		}else if (valor.toLowerCase()=="h"){
			valor="17";
		}else if (valor.toLowerCase()=="i"){
			valor="18";
		}else if (valor.toLowerCase()=="j"){
			valor="19";
		}else if (valor.toLowerCase()=="k"){
			valor="20";
		}else if (valor.toLowerCase()=="l"){
			valor="21";
		}else if (valor.toLowerCase()=="m"){
			valor="22";
		}else if (valor.toLowerCase()=="n"){
			valor="23";
		}else if (valor.toLowerCase()=="o"){
			valor="24";
		}else if (valor.toLowerCase()=="p"){
			valor="25";
		}else if (valor.toLowerCase()=="q"){
			valor="26";
		}else if (valor.toLowerCase()=="r"){
			valor="27";
		}else if (valor.toLowerCase()=="s"){
			valor="28";
		}else if (valor.toLowerCase()=="t"){
			valor="29";
		}else if (valor.toLowerCase()=="u"){
			valor="30";
		}else if (valor.toLowerCase()=="v"){
			valor="31";
		}else if (valor.toLowerCase()=="w"){
			valor="32";
		}else if (valor.toLowerCase()=="x"){
			valor="33";
		}else if (valor.toLowerCase()=="y"){
			valor="34";
		}else if (valor.toLowerCase()=="z"){
			valor="35";
		}
		cuenta2+=valor;
	}
	while (10<cuenta2.length){
		valor=cuenta2.substr(0,10);
		mod=parseInt(valor)%97;
		cuenta2=mod+cuenta2.substr(10);
	}
	if (cuenta2.length>0){
		mod=parseInt(cuenta2)%97;
	}
	if (mod!=1){
		return false;
	}else{
		return true;
	}
}
