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 )){
			//alert("El campo en el que se indica el E-mail no es correcto");
			return false;
		}
		if (Search(cadena,v1) == -1){
			//alert("El campo en el que se indica el E-mail no es correcto");
			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)||(tel.length>12))
        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;
	}
