// Función que recorta una cadena a la longitud indicada, y si en el tercer parámetro se recibe "true" se añaden puntos suspensivos
 // si la longitud final excede el tamaño original
 
 
 function recorta(cad, lon, puntos)
 {
	var l=cad.length;
	if(l>lon)
	{
		cad=cad.substring(0,lon);
		if(puntos)
		{
			cad=cad+'...';
		}
	}
	return cad;
 }
 
 // Función que limpia una cadena de caracteres no deseados, dejando solo letras y numeros
 
 function limpia_cadena(cad)
 {
 	cad=cad.replace(/[^a-zA-Z0-9]/gi, ''); 
 	return cad;
 }

 // Función que comprueba si un CIF es correcto

 function CompruebaDatos(elCIF)
 {

                  var resul = false;
                  // pasar a mayúsculas
                  var temp = elCIF.toUpperCase();
                  if (!/^[A-Za-z0-9]{9}$/.test(temp)) // Son 9 dígitos?
                   resul=false;
                  else if (!/^[ABCDEFGHJKLMNPQRSUVW]/.test(temp))
                   // Es una    letra de las admitidas ?
                           resul=false;
                  else
                   resul = true;
                   return resul;
  }

  // La función recibe el CIF completo: A58818501
  function ValidaCIF(cif,mensaje)
  {
                   var resul=false;

                   var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
                   var v2 = new Array('J','A','B','C','D','E','F','G','H','I');

                   var msj='';
				   
                   if(!CompruebaDatos(cif))
                   {
                                msj='Longitud incorrecta o primer caracter no es una letra.';
                   }
                   else
                   {
                                   var temp = 0;

                                   for( i = 2; i <= 6; i += 2 )
                                   {
                                    temp = temp + v1[ parseInt(cif.substr(i-1,1))];
                                    temp = temp + parseInt(cif.substr(i,1));
                                   };

                                   temp = temp + v1[ parseInt(cif.substr(7,1))];
                                   temp = (10 - ( temp % 10));

                                   if( temp == 10 )
                                                   temp=0;
                                   var letra=v2[temp];
                                   var ultimodigito=cif.substr(8,1);
                                           if(parseInt(ultimodigito)==temp || ultimodigito==letra)
                                   {
                                                resul=true;
                                   }
                                   else
                                   {
                                                resul=false;
                                                msj='CIF incorrecto';
                                   }

                         }
                         if(mensaje && msj!='')
                         {
                                alert(msj);
                         }
                         return resul;
  }




// funcion que comprueba que una fecha este dentro de un rango permitido
// f1 y f2 corresponden al rango y fecha a la fecha a validar
// todas las fechas se pasan en formato php, dd-mm-aaaa
function fecha_en_rango(f1,f2,fecha)
{
    if(f1=='00-00-0000' || f1=='')   f1='31-12-9999';
    if(f2=='00-00-0000' || f2=='')   f2='31-12-9999';
    if(fecha=='00-00-0000' || fecha=='')fecha='31-12-9999';
    var correcto=true;
    // primero validamos las 3 fechas
    var resul=fechavalidavalor(f1,'-',false)
    if(!resul)
        correcto=false;
    var resul=fechavalidavalor(f2,'-',false)
    if(!resul)
        correcto=false;
    var resul=fechavalidavalor(fecha,'-',false)
    if(!resul)
        correcto=false;


    if(correcto==true)
    {

        var fechainiciointervalo=fecha_a_numero(f1);
        var fechafinintervalo=fecha_a_numero(f2);
        var fechavalidar=fecha_a_numero(fecha);

        if(fechavalidar<fechainiciointervalo || fechavalidar>fechafinintervalo)
        {
            correcto=false;
        }
    }
    return correcto;
}

function fecha_a_numero(fecha)
{
    if(fecha=='' || fecha=='00-00-0000')
        fecha='31-12-9999'
    var matrizfecha=fecha.split('-');
    var fecha=matrizfecha[2]+matrizfecha[1]+matrizfecha[0];
    fecha=fecha*1;
    return fecha;
}

function fechavalidavalor(fecha,sep,mensaje)
{
    var resul=true;
    if (fecha.length != 0)
    {
        fecha=normalizafecha(fecha,sep);
        if (fecha.length == 10)
        {
             if (fecha.substring(2,3) == sep && fecha.substring(5,6) == sep)
             {
                 var date = fecha.substring(0,2);
                 var month = fecha.substring(3,5);
                 var year = fecha.substring(6,10);
                 if(year<'9999')
                 {
                     var test = new Date(year,month-1,date);
                     if ((month-1 == test.getMonth()) && (date == test.getDate()))
                         resul=true;
                     else
                     {
                         msj = 'Fecha Incorrecta!';
                         resul=false;
                     }
                 }
           }
           else
            {
                msj = 'Separador Incorrecto. Use '+sep;
                resul=false;
            }
         }
         else
         {
               msj = 'Longitud de fecha incorrecta';
               resul=false;
         }

       if(resul==false && mensaje)
       {
          alert(msj);
       }
    }
    return resul;
}


function CalculoCC(cc1,cc2)
{

     if (!(cc1.match(/^\d{8}$/) && cc2.match(/^\d{10}$/)))
           return false;

    var arrWeights = new Array(1,2,4,8,5,10,9,7,3,6);
    var dc1=0, dc2=0;

    for (i=7;i>=0;i--)
         dc1 += arrWeights[i+2] * cc1.charAt(i);
    dc1 = 11 - (dc1 % 11);
    if (11 == dc1)
        dc1 = 0;
    if (10 == dc1)
        dc1 = 1;

    for (i=9;i>=0;i--)
         dc2 += arrWeights[i] * cc2.charAt(i);
    dc2 = 11 - (dc2 % 11);
    if (11 == dc2)
        dc2 = 0;
    if (10 == dc2)
        dc2 = 1;


    var dc=10*dc1+dc2;
    return (dc);
}



function cuentabancariavalida(cc1,cc2,cc3,cc4,mensaje)
{
    var resul=true;
    var parte1=cc1+''+cc2;
    var parte2=cc4;

    if ((cc1=='' && cc2=='') && (cc3=='' && cc4==''))
    {

    }
    else
    {
        if ((cc1=='' || cc2=='') || (cc3=='' || cc4==''))
        {
            resul=false;
        }
        else
        {
            var cc='';
            if ((cc1!='') && (cc2!='') && (cc3!='') && (cc4!='') )
            {
                var resultado=CalculoCC(parte1,parte2);
                if (resultado!=cc3)
                {
                    resul=false;
                }

            }
            if(!resul && mensaje)
            {
                alert('No son correctos los Datos Bancarios');
            }
        }
    }
    return(resul);
}



function horavalida(hora,sep,mensaje)
{
    var resul=true;
    if (hora.value.length != 0)
    {
         var horanormalizada=normalizahora(hora.value,sep);
         if (horanormalizada.length == 5)
         {
             if (horanormalizada.indexOf(sep)==-1)
             {
                 msj = 'Separador Incorrecto. Use '+sep;
                 resul=false;
             }
             else
             {
                 var valores=true;
                 var sep=horanormalizada.split(':');
                 if((sep[0]>=00 && sep[0]<=23))
                 {

                 }
                 else
                 {
                     var valores=false;
                 }
                 if(sep[1]>=00 && sep[1]<=59)
                 {

                 }
                 else
                 {
                    var valores=false;
                 }
                 if(valores==false)
                 {
                    msj = 'Valor de la Hora erroneo';
                    resul=false;
                 }
             }
         }
         else
         {
             msj = 'Longitud de hora incorrecta';
             resul=false;
         }
         if(resul==false && mensaje)
         {
            alert(msj);
            hora.value='';
         }
         else
         {
             hora.value=horanormalizada;
         }
    }
    return resul;
}

function horavalidavalor(hora,sep,mensaje)
{
    var resul=true;
    if (hora.length != 0)
    {
         var horanormalizada=normalizahora(hora,sep);
         if (horanormalizada.length == 5)
         {
             if (horanormalizada.indexOf(sep)==-1)
             {
                 msj = 'Separador Incorrecto. Use '+sep;
                 resul=false;
             }
             else
             {
                 var valores=true;
                 var sep=horanormalizada.split(':');
                 if((sep[0]>=00 && sep[0]<=23))
                 {

                 }
                 else
                 {
                     var valores=false;
                 }
                 if(sep[1]>=00 && sep[1]<=59)
                 {

                 }
                 else
                 {
                    var valores=false;
                 }
                 if(valores==false)
                 {
                    msj = 'Valor de la Hora erroneo';
                    resul=false;
                 }
             }
         }
         else
         {
             msj = 'Longitud de hora incorrecta';
             resul=false;
         }
         if(resul==false && mensaje)
         {
            alert(msj);
            hora='';
         }
         else
         {
             hora=horanormalizada;
         }
    }
    return resul;
}


/*funcion que valida una imagen*/
function validaimagen(ficheromandado,mensaje)
{
        // si esta vacio permitimos enviar el formulario
         if(ficheromandado.search(/\S/g) == -1)
         {
            return true
         }
         var msg="";
         // extraemos el nombre del archivo y la extension
         var foto = ficheromandado.match("[^\.]+\.(gif|jpeg|jpg|bmp|GIF|JPEG|JPG|BMP)$");
         // var foto=true;
         // la extension de archivo son validas
         if(foto == null)
         {
             msg+="Solo son validos los archivos con la extension jpeg, jpg, bmp o gif.\t\n"
        }
         //Si el mensaje no esta vacio
         if(msg!="")
         {
            var result=false
         }
         else
         {
             // esta todo bien
             var result=true;
         }
         if(result==false && mensaje)
         {
            alert(msg);
         }
         return result;
}



function cadenanv(cadena,mensaje)
{
    var resul=true;
    if (cadena.length == 0)
    {
       resul=false;
    }
    if (mensaje && !resul)
    {
       alert("Debe cumplimentar este campo--");
    }
    return resul;
}



/* Función que valida un NIF. Si es correcto, devuelve el DNI sin letra */

function nifvalido(nif,mensaje)
{
    var primercaracter=nif.substr(0,1);
    if(primercaracter=='X')
    {
     nif=nif.substr(1,nif.length);
    }

    var resto,lon,dni,letra,letra2,resul=false;
    var cad="TRWAGMYFPDXBNJZSQVHLCKE";
    lon=nif.length;
    if(lon<=9)
    {
        dni=nif.substr(0,lon-1);
        letra=nif.substr(lon-1,1);
        letra=letra.toUpperCase();

        if(numerovalido(dni,false))
        {
            resto=dni%23;
            letra2=cad.substr(resto,1);
            if(letra==letra2)
            {
                resul=dni;
            }
        }
        if(!resul && mensaje)
        {
            alert('NIF incorrecto');
        }
    }
    else
    {
       if(!resul && mensaje)
       {
            alert('NIF incorrecto');
       }
    }
    return(resul);
}

/* Función que valida un número de teléfono, restringiendo la cantidad a 15 dígitos y que sean todos números
   Si mensaje es true, muestra el mensaje de error */
function tlfvalido(tlf,mensaje)
{
        var result=false;
        if(tlf.length != 0) {
                if ((tlf.length >= 9) && (tlf.length <= 15)) {
                        if(numerovalido(tlf,false)) {
                                result=true;
                        }
                }
        }
        if (!result && mensaje) {
                alert('Teléfono incorrecto');
        }
        return result;
}
function tlfvalidonv(tlf,mensaje)
{
         var resul;
    if (hora.value.length==0)
       resul=false;
    else
        resul=tlfvalidonv(tlf,mensaje);
    return resul;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//Normaliza las fechas introducidas, para poder meterlas en un formato mas comodo
function normalizahora(hora,sep)
 {
     //Introduce en la hora el separador elegido por defecto
     if(hora.indexOf('/')!=-1) hora=hora.replace(/\//gi,sep);
     if(hora.indexOf('.')!=-1) hora=hora.replace(/\./gi,sep);
     if(hora.indexOf('-')!=-1) hora=hora.replace(/\-/gi,sep);

     if(hora.length<5 && hora.indexOf(sep)!=-1)
     {

        var sep=hora.split(':');
        if(sep[0].length==1)
           var h='0'+sep[0];
        else
           var h=sep[0];
        if(sep[1].length==1)
           var m='0'+sep[1];
        else
           var m=sep[1];
        hora=h+':'+m;
     }

     //En el caso de que se introduzca una fecha sin separadores, de la forma 02032003 se pasará a 02-03-2003
     if (hora.indexOf(sep)==-1 && hora.length==4)
     {
        hora=hora.substring(0,2)+sep+hora.substring(2,4);
     }
     else
         if (hora.indexOf(sep)==-1 && hora.length==2)
         {
             hora=hora.substring(0,2)+sep+'00';
         }
         else
             if (hora.indexOf(sep)==-1 && hora.length==1)
             {
                 hora='0'+hora.substring(0,2)+sep+'00';
             }

     if(hora.indexOf(sep)!=-1)
     {
         var sep=hora.split(':');
         if(sep[0]==24)
            sep[0]='00';
         hora=sep[0]+':'+sep[1];
     }
     return(hora);
 }

function horavalidanv(hora,sep,mensaje)
{
    var resul;
    if (hora.value.length==0)
       resul=false;
    else
        resul=horavalida(hora,sep,mensaje);
    return resul;
}








































/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*Funcion que valida una fecha, para validar campos de formulario */
/*Se le manda la texto con la fecha, y el caracter que se considera
válido como separador*/

function fechavalida(fecha,sep,mensaje)
{
    var resul=true;
    if (fecha.value.length != 0)
    {
        fecha.value=normalizafecha(fecha.value,sep);
        if (fecha.value.length == 10)
        {
             if (fecha.value.substring(2,3) == sep && fecha.value.substring(5,6) == sep)
             {
                 var date = fecha.value.substring(0,2);
                 var month = fecha.value.substring(3,5);
                 var year = fecha.value.substring(6,10);
                 if(year<'2050')
                 {
                                var test = new Date(year,month-1,date);
                                if ((month-1 == test.getMonth()) && (date == test.getDate()))
                                     resul=true;
                                else
                                {
                                      msj = 'Fecha Incorrecta!';
                                    resul=false;
                                }
                 }
                 else
                 {
                     resul=false;
                     msj = 'Año demasiado grande';
                 }
           }
           else
            {
                msj = 'Separador Incorrecto. Use '+sep;
                resul=false;
            }
         }
         else
         {
               msj = 'Longitud de fecha incorrecta';
               resul=false;
         }

       if(resul==false && mensaje)
       {
          alert(msj);
       }
    }
    return resul;
}

 /* igual que la anterior, pero devuelve falso en caso de que la fecha esté vacia.
 Se usará para los campos donde la fecha sea un valor obligatorio */

function fechavalidanv(fecha,sep,mensaje)
{
         var resul;
         if (fecha.value.length==0)
             resul=false;
         else
             resul=fechavalida(fecha,sep,mensaje);
         return resul;
}


//Normaliza las fechas introducidas, para poder meterlas en un formato mas comodo
function normalizafecha(fecha,sep)
 {
     //Introduce en la fecha el separador elegido por defecto
     if(fecha.indexOf('/')!=-1) fecha=fecha.replace(/\//gi,sep);
     if(fecha.indexOf('.')!=-1) fecha=fecha.replace(/\./gi,sep);
     if(fecha.indexOf('-')!=-1) fecha=fecha.replace(/\-/gi,sep);

     //en el caso de que la fecha tenga un formato de 1-2-03 rellenara los espacios vacios de la forma 01-02-2003
     var posicion1,posicion2=0;
     var day, month, year='';
     if (fecha.indexOf(sep) != -1 )
     {
         day=fecha.substring(0,posicion1=fecha.indexOf(sep));
         if (day.length==1) day='0'+day;
         fecha_aux=day+sep;
     }
     if (fecha.substring(posicion1+1).indexOf(sep) != -1 )
     {
         month=fecha.substring(posicion1+1).substring(0,posicion2=fecha.substring(posicion1+1).indexOf(sep));
         if (month.length==1) month='0'+month;
         fecha_aux+=month+sep;
     }
     if (posicion1!=0 && posicion2!=0 )
     {
         year=fecha.substring(posicion1+posicion2+2);
         if (year.length==2) year='20'+year;
         fecha=fecha_aux+year;
     }

     //En el caso de que se introduzca una fecha sin separadores, de la forma 02032003 se pasará a 02-03-2003
     if (fecha.indexOf(sep)==-1 && fecha.length==8)
     {
         fecha=fecha.substring(0,2)+sep+fecha.substring(2,4)+sep+fecha.substring(4);
     }
     else if (fecha.indexOf(sep)==-1 && fecha.length==6)
     {
         fecha=fecha.substring(0,2)+sep+fecha.substring(2,4)+sep+'20'+fecha.substring(4);
     }

     return(fecha);
 }

/* Función que valida un código postal, comprobando si tiene 5 dígitos y si son todo números.
   Si mensaje es true, muestra el mensaje de error */

function cpvalido(cp,mensaje)
{
        var result=false;
        if(cp.length != 0) {
                if (cp.length == 5) {
                        if(numerovalido(cp,false)) {
                                result=true;
                        }
                }
        }
        if (!result && mensaje) {
                alert('Código postal incorrecto');
        }
        return result;
}

 /*Valida una dirección de email*/

function emailvalidonv(email,mensaje)
{
    email=new String(email);
    with (email)
    {
         apos=email.indexOf("@");
         dotpos=email.lastIndexOf(".");
         lastpos=email.length-1;
         if (apos<1 || dotpos-apos<2 || lastpos-dotpos>4 || lastpos-dotpos<2)
         {
             if(mensaje) alert('Dirección de correo no válida');
             return false;
         }
         else
         {
            return true;
        }
    }
}

function emailvalido(email,mensaje)
{
         var resul;
         email=new String(email);
         if (email.length==0)
             resul=true;
         else
             resul=emailvalidonv(email,mensaje);

        return resul;
}

/*Validación de un número. Comprueba que una texto contiene únicamente
caracteres numericos. El parámetro 'mensaje' es lógico. Si vale 'true', la
función imprime un mensaje de error en caso de que el número no sea correcto.
Si vale 'false', no imprime nada.
Devuelve 'true' o 'false' dependiendo de que el número sea valido o no.
El parámetro 'mensaje' se utiliza para llamar directamente a la función desde
el control que sea y que imprima el mensaje, o para llamar a la función para
comprobación de todos los controles de un formulario, y asi evitar que se impriman
muchos mensajes.
No considera un error que la texto esté vacia, por tanto en ese caso devuelve 'true' */

function numerovalido(numero,mensaje)
{
  res = true;
  var salir=false;
   for (var i=0; i<numero.length && !salir; i++)
   {
          if ((numero.charAt(i) != "0") && (!parseFloat(numero.charAt(i))))
       {
                 res = false;
             salir=true;
        }
    }
  if(mensaje && !res)
  {
     alert("Número incorrecto.");
   }
  return res;
}

/* Función que detecta si un número real es válido o no   */



function numerorealvalido(numero,mensaje)
{
 res = true;
  var salir=false;
  
  /*
  var numpuntos=0;
  for (var i=0; i<numero.length && !salir; i++)
  {
       if ((numero.charAt(i) != "0") && (!parseFloat(numero.charAt(i))) && numero.charAt(i)!= '.')
       {
           res = false;
           salir=true;
       }
       else
       {
			if(numero.charAt(i)== '.')
			{
				numpuntos++;
				if(numpuntos>1)
				{
					res = false;
					salir=true;
				}	
			}
		}
  }
  if(mensaje && !res)
  {
     alert("Número incorrecto.");
  }
  return res;  */
 
  longitud=numero.length;
      var numerovalido='';
      if(numero.charAt(0)=='-')
      {
          for (var i=1;i<longitud; i++)
          {
              numerovalido=numerovalido+numero.charAt(i);
          }
          numero=numerovalido;
          longitud=longitud-1;
      }

      for (var i=0; i<longitud && !salir; i++)
      {
           if ((numero.charAt(i) != "0") && (!parseFloat(numero.charAt(i))) && numero.charAt(i)!= '.')
           {
               res = false;
               salir=true;
           }
      }
      
  
  if(mensaje && !res)
  {
     alert("Número incorrecto.");
  }
  return res;
}



/* Función que detecta si un número real es válido o no, y que no está vacio   */

function numerorealvalidonv(numero,mensaje)
{
  res = true;
  var salir=false;
  longitud=numero.length;
  if(longitud>0)
  {
      var numerovalido='';
      if(numero.charAt(0)=='-')
      {
          for (var i=1;i<longitud; i++)
          {
              numerovalido=numerovalido+numero.charAt(i);
          }
          numero=numerovalido;
          longitud=longitud-1;
      }

      for (var i=0; i<longitud && !salir; i++)
      {
           if ((numero.charAt(i) != "0") && (!parseFloat(numero.charAt(i))) && numero.charAt(i)!= '.')
           {
               res = false;
               salir=true;
           }
      }
  }
  if(longitud==0) res=false;
  if(mensaje && !res)
  {
     alert("Número incorrecto o vacío.");
  }
  return res;
}


/* Comprueba que el campo es un dni válido. De momento no comprueba la letra del nif, solo que es
un número y que no está vacío. */

function dnivalidonv(numero,mensaje)
{
    var resul;

    longitud=numero.length;
    resul=numerovalido(numero,false);
    if(resul && longitud==0)
    {
        resul=false;
    }
    if (mensaje && !resul)
    {
       alert('Debe introducir un dni correcto, sin letra de NIF');
    }
    return resul;
}


/* Igual que numerovalido, de hecho la llama, pero en este caso se considera error
que la texto esté vacía. Se usa para verificar los campos numéricos de introducción
obligatoria*/

function numerovalidonv(numero,mensaje)
{
    var resul;

    longitud=numero.length;
    resul=numerovalido(numero,false);
    if(resul && longitud==0)
    {
        resul=false;
    }
    if (mensaje && !resul)
    {
       alert("Debe introducir un valor válido");
    }
    return resul;
}



function textonv(texto,mensaje)
{
    var resul=true;
    if (texto.length == 0)
    {
       resul=false;
    }
    if (mensaje && !resul)
    {
       alert("Debe cumplimentar este campo");
    }
    return resul;
}
/* función que muestra una pagina en una ventana nueva. No tiene nada que ver con formularios
pero la incluimos aqui para que este disponible para todas las paginas */

function mostrar(pagina,ancho,alto)
{
    var v=window.open(pagina,'','status=yes,scrollbars=yes,width='+ancho+',height='+alto+',top=0,left=0,resizable=yes,status=no');
    return v;
}

/* función que muestra una pagina en una ventana nueva. No tiene nada que ver con formularios
pero la incluimos aqui para que este disponible para todas las paginas. Se difefencia de la anterior en que se indica un nombre de ventana */

function mostrar2(pagina,ancho,alto, ventana)
{
    var v=window.open(pagina,ventana,'status=yes,scrollbars=yes,width='+ancho+',height='+alto+',top=0,left=0,resizable=yes,status=no');
    return v;
}

/* Función que imprime un mensaje de error en el frame destinado a ello */
 function mensaje(texto,color)
 {
      var frame=null;
      var loc=null;
      if(parent.titulo1)
      {
         frame=parent.titulo1;
         loc='parent.titulo1.location.href';
      }
      else
      {
          if(parent.parent.titulo1)
          {
             frame=parent.parent.titulo1;
             loc='parent.parent.titulo1.location.href';
          }
          else
          {
             if(parent.parent.parent.titulo1)
             {
                frame=parent.parent.parent.titulo1;
                loc='parent.parent.parent.titulo1.location.href';
             }
          }
      }
      frame.document.write('<META http-equiv="Refresh" CONTENT="10;URL=titulo1.php"><meta HTTP-EQUIV="pragma" CONTENT="no-cache"><meta HTTP-EQUIV="expires" CONTENT="0"><html><head></head><body><font size=4 color='+color+' align=center><center>'+texto+'</center></font></body></html>');
      setTimeout("top.titulo1.document.location.href='titulo1.php'",5000);

 }



 function nombreprograma(nombre)
 {
      var frame=null;
      if(parent.titulo2)
         frame=parent.titulo2;
      else
      {
          if(parent.parent.titulo2)
             frame=parent.parent.titulo2;
      }
      if(frame)
         frame.document.titulo.opcion.value=nombre;
 }

 function anovalidonv(numero,mensaje)
{

  var res = true;
  var salir=false;
  longitud=numero.length;
  if(longitud>0)
  {
      for (var i=0; i<numero.length && !salir; i++)
      {
           if ((numero.charAt(i) != "0") && (!parseFloat(numero.charAt(i))) && numero.charAt(i)!= '.')
           {
               res = false;
               salir=true;
           }
      }
  }
  if(!(longitud==4))
       res=false;
  return res;
}

function cambiofecha(campo,fecha1,fecha2,mensaje)
 {
        if(fechavalida(fecha1,'-',true)==false) campo.value='';
        if(fecha2)
        {

            var f1=new Array();
            var f2=new Array();
            f1=fecha1.value.split("-");
            f2=fecha2.split("-");
            var a=f1[2]+f1[1]+f1[0];
            var b=f2[2]+f2[1]+f2[0];
               if(a<=b)
               {
                   alert(mensaje);
                   campo.value='';
                   return true;
               }
        }
 }


 function compararfechas(campo,fecha1,fecha2,estado) //el estado se refiere a si estamos comparando una fecha de inicio o una fecha de fin(valdrá inicio o fin)
 {
        if(fechavalida(fecha1,'-',true)==false) campo.value='';
        if(fecha2!=null)
        {

            var f1=new Array();
            var f2=new Array();
            f1=fecha1.value.split("-");
            f2=fecha2.split("-");
            var a=f1[2]+f1[1]+f1[0];
            var b=f2[2]+f2[1]+f2[0];
               if(a>b && estado=='inicio') //si la primera fecha es mayor que la segunda da el mensaje y pone el campo en blanco
               {
                   alert('La fecha de inicio no puede ser mayor que la de fin');
                   campo.value='';
                   return true;
               }
               if(b>a && estado=='fin') //si la segunda fecha es mayor que la segunda da el mensaje y pone el campo en blanco
               {
                   alert('La fecha de fin no puede ser menor que la de inicio');
                   campo.value='';
                   return true;
               }
        }
 }
 function compararfechas_sin_mensaje(fecha1,fecha2,estado) //el estado se refiere a si estamos comparando una fecha de inicio o una fecha de fin(valdrá inicio o fin)
 {
          if(fecha2)
        {

            var f1=new Array();
            var f2=new Array();
            f1=fecha1.value.split("-");
            f2=fecha2.split("-");
            var a=f1[2]+f1[1]+f1[0];
            var b=f2[2]+f2[1]+f2[0];
               if(a>b && estado=='inicio') //si la primera fecha es mayor que la segunda
               {
                   return true;
               }
               if(b>a && estado=='fin') //si la primera fecha es menor que la segunda
               {
                   return true;
               }
        }

 }
 function compararfechas_con_igualdad(fecha1,fecha2,estado) //el estado se refiere a si estamos comparando una fecha de inicio o una fecha de fin(valdrá inicio o fin)
 {

        if(fecha2!=null)
        {

            var f1=new Array();
            var f2=new Array();
            f1=fecha1.value.split("-");
            f2=fecha2.split("-");
            var a=f1[2]+f1[1]+f1[0];
            var b=f2[2]+f2[1]+f2[0];
               if(a>=b && estado=='inicio') //si la primera fecha es mayor que la segunda
               {
                   return true;
               }
               if(b>=a && estado=='fin') //si la primera fecha es menor que la segunda
               {
                   return true;
               }
        }
 }


//restringira la diferencia entre 2 fechas a un maximo de meses del numero pasado en intervalo.
//devuelve un bool que sera true si la diferencia entre las fechas entra en el intervalo y un false en caso contrario.
function restringir(campo1, campo2, intervalo)
{
    resultado=false;
    if(fechavalida(campo1,'-',true) && fechavalida(campo2,'-',true))
    {
        var f1=new Array();
        var f2=new Array();
        f1=campo1.value.split("-");
        f2=campo2.value.split("-");

        //Quita los ceros en el caso de que el mes aparezca como 05
        if(f1[1].substring(0,1)==0)
            f1[1]=f1[1].substring(1,2);
        if(f2[1].substring(0,1)==0)
            f2[1]=f2[1].substring(1,2);

        //se obtiene la diferencia de meses y se compara con el intervalo
        var a=12*parseInt(f1[2])+parseInt(f1[1]);
        var b=12*parseInt(f2[2])+parseInt(f2[1]);
        if (b-a<intervalo)
            resultado=true;
    }
    return resultado;
}
function restringir_vacio(campo1, campo2, intervalo)
{
    resultado=false;
    if(fechavalidanv(campo1,'-',true) && fechavalidanv(campo2,'-',true))
    {
        var f1=new Array();
        var f2=new Array();
        f1=campo1.value.split("-");
        f2=campo2.value.split("-");

        //Quita los ceros en el caso de que el mes aparezca como 05
        if(f1[1].substring(0,1)==0)
            f1[1]=f1[1].substring(1,2);
        if(f2[1].substring(0,1)==0)
            f2[1]=f2[1].substring(1,2);

        //se obtiene la diferencia de meses y se compara con el intervalo
        var a=12*parseInt(f1[2])+parseInt(f1[1]);
        var b=12*parseInt(f2[2])+parseInt(f2[1]);

        if (b-a<intervalo)
            resultado=true;
    }
    else
    {
       resutado=true;
    }
    return resultado;
}

function fr(f,nivel)
{
       var i=0;
       var cad='';
       nivel++;
       while(f.frames[i])
       {
           for(j=0;j<nivel;j++)
               cad+='    ';
           cad+=f.frames[i].name+'\n'+fr(f.frames[i],nivel);
           i++;
       }
       return(cad);
}
var encontrado;
var intentos=0;
var ff;
function buscarmenu()
{

     var i=0;
     encontrado=false;
      /* while(f.frames[i] && encontrado==false)
       {
         if(f.frames[i].name=='menu')
         {
           encontrado=true;
         }
         i++;
       }


       if(encontrado==false)
       {

        intentos++;

         if(intentos==1) f=window.top.opener.top;
         if(intentos==2) f=window.top.opener.window.top.opener.top;
         if(intentos==3) f=window.top.opener.window.top.opener.window.top.opener.top;
         if(intentos==4) f=window.top.opener.window.top.opener.window.top.opener.window.top.opener.top;

             buscarmenu(f);
       }
       else
       {
          return(f);
       } */

      while(top.frames[i] && encontrado==false)
      {
         if(top.frames[i].name=='menu')
         {
           encontrado=true;
           return(top);
         }

         i++;
      }

      if(encontrado==false)
      {
         i=0;

         while(window.top.opener.top.frames[i] && encontrado==false)
         {
            if(window.top.opener.top.frames[i].name=='menu')
            {
              encontrado=true;
              return(window.top.opener.top);
            }

            i++;
         }
         if(encontrado==false)
         {

             i=0;
             while(window.top.opener.window.top.opener.top.frames[i] && encontrado==false)
             {
                 if(window.top.opener.window.top.opener.top.frames[i].name=='menu')
                 {
                   encontrado=true;
                   return(window.top.opener.window.top.opener.top);
                 }

                 i++;
             }
                if(encontrado==false)
                {

                   i=0;
                   while(window.top.opener.window.top.opener.window.top.opener.top.frames[i] && encontrado==false)
                   {
                       if(window.top.opener.window.top.opener.window.top.opener.top.frames[i].name=='menu')
                       {
                         encontrado=true;
                         return(window.top.opener.window.top.opener.window.top.opener.top);
                       }

                       i++;
                   }


                }


         }

       }


}

function addDays(myDate,days)
{
    return new Date(myDate.getTime() + days*24*60*60*1000);
}

function hora_valida(texto)
{

  var error=true;
  if(texto!='')
  {
               var horas=new Array('08','09','10','11','12','13','14','15','16','17','18','19','20','21','22');
               var minutos=new Array('00','30');

               hora=new Array();
               var separador=texto.substring(2,3);
               hora=texto.split(':');
               if(separador!=":")
               {
                  error=false;
                 // alert('1');
               }
              if(texto.length!=5)
              {
                 error=false;
                // alert('2');
              }

              var encontradahora=false;
              for(var x=0;x<horas.length && encontradahora==false;x++)
              {
                   if(hora[0]==horas[x])
                   {
                      encontradahora=true;
                   }

              }

              var encontradominuto=false;
              for(var x=0;x<minutos.length && encontradominuto==false;x++)
              {
                   if(hora[1]==minutos[x])
                   {
                      encontradominuto=true;
                   }

              }

              if(encontradominuto==false || encontradahora==false)
              {
                error=false;
                //alert('3');
              }
   }

   return error;
}
/*
function hora(texto)
{
         var tm=texto.length;
         if(tm==5)
         {
             var error=true;
             var hora=new Array();
             hora=texto.split(':');
             if(hora[0]>='00' && hora[0]<='23')
             {
                 if(hora[1]>='00' && hora[1]<='59')
                 {
                    error=true;
                 }
                 else
                 {
                    error=false;
                 }
             }
             else
             {
                 error=false;
             }
         }
         else
         {
             var error=false;
         }
         return error;
}

function horanv(texto)
{
         var resul;
         if (texto.length==0)
         {
             resul=false;
         }
         else
         {
             resul=hora(texto);
         }
         return resul;
}  */


function compararfechas_contratos(fecha1,fecha2,estado) //el estado se refiere a si estamos comparando una fecha de inicio o una fecha de fin(valdrá inicio o fin)
{

       if(fecha1==fecha2)
        {
             return true;
        }
        else
        {
              if(fecha2.value)
              {
                  var f1=new Array();
                  var f2=new Array();
                  f1=fecha1.value.split("-");
                  f2=fecha2.value.split("-");
                 var a=f1[2]+f1[1]+f1[0];
                  var b=f2[2]+f2[1]+f2[0];
                    if(a>b && estado=='inicio') //si la primera fecha es mayor que la segunda
                     {
                        return true;
                     }
                     if(b>a && estado=='fin') //si la primera fecha es menor que la segunda
                     {
                         return true;
                     }
              }
        }
}
function numerorvnonegativo(numero,mensaje)
{
  var numeroo=numero;
  res = true;
  var salir=false;
  longitud=numero.length;
      var numerovalido='';
      if(numero.charAt(0)=='-')
      {
          for (var i=1;i<longitud; i++)
          {
              numerovalido=numerovalido+numero.charAt(i);
          }
          numero=numerovalido;
          longitud=longitud-1;
      }

      for (var i=0; i<longitud && !salir; i++)
      {
           if ((numero.charAt(i) != "0") && (!parseFloat(numero.charAt(i))) && numero.charAt(i)!= '.')
           {
               res = false;
               salir=true;
           }
      }
      if((numeroo.substring(0,1)=='-'))
         res = false;


  if(mensaje && !res)
  {
     alert("Número incorrecto.");
  }
  return res;
}


/*****************************************************************************/
/*****************************************************************************/
/**																			**/
/** 				MODIFICACION CODIFICACION LLAMADAS AJAX					**/
/**								16-09-2009									**/
/**																			**/
/*****************************************************************************/	
/*****************************************************************************/	
function encodeUrl(cadena){

	var valores = null;
	var cadenaFin = "";
	var aux = null;
	
	if ((cadena == null) || (cadena == ""))
		return "";

	//cadena.split("&").join("&div&");
	valores = cadena.split("&");
	for (var i=0; i< valores.length; i++){
		//alert(valores[i]);
		aux = valores[i].split("=");
		//alert(aux[1]);
		if (i==0) 
			cadenaFin += aux[0] + "=" + 	escape(aux[1]);
		else if (aux[1] != undefined)
			cadenaFin += "&" + aux[0] + "=" + 	escape(aux[1]);
	}
	
	return cadenaFin;	
}

function obtener_fechas(categoria)
{
	var array_fechas=Array();
	var fecha=new Date(); 
	var day   = fecha.getDate();
	var month = fecha.getMonth();
	var year  = fecha.getYear();
	
	array_dias_mes=Array();
	array_dias_mes["1"]="31";
	array_dias_mes["2"]="28";
	array_dias_mes["3"]="31";
	array_dias_mes["4"]="30";
	array_dias_mes["5"]="31";
	array_dias_mes["6"]="30";
	array_dias_mes["7"]="31";
	array_dias_mes["8"]="31";
	array_dias_mes["9"]="30";
	array_dias_mes["10"]="31";
	array_dias_mes["11"]="30";
	array_dias_mes["12"]="31";
	
	switch(categoria)
	{
		case'este_mes':
		{
			array_fechas[0]=normalizafecha('01-'+(month*1+1)+'-'+year,'-');
			array_fechas[1]=normalizafecha(array_dias_mes[(month*1+1)] +'-'+(month*1+1)+'-'+year,'-');
		}
		break;
		
		case'este_ano':
		{
			array_fechas[0]=normalizafecha('01-01-'+year,'-');
			array_fechas[1]=normalizafecha('31-12-'+year,'-');
		}
		break;
		case'ano_pasado':
		{
			array_fechas[0]=normalizafecha('01-01-'+(year*1-1),'-');
			array_fechas[1]=normalizafecha('31-12-'+(year*1-1),'-');
		}
		break;
		case'dia_actual':
		{
			array_fechas[0]=normalizafecha(day+'-'+(month*1+1)+'-'+year,'-');
			array_fechas[1]=normalizafecha(day+'-'+(month*1+1)+'-'+year,'-');
		}
		break;
		case'dia_anterior':
		{
			if(day == 1)
			{
				if((month*1+1) == 1)
				{
					array_fechas[0]=normalizafecha('31-12-'+(year*1-1),'-');
					array_fechas[1]=normalizafecha('31-12-'+(year*1-1),'-');
				}
				else
				{
					array_fechas[0]=normalizafecha(array_dias_mes[(month*1-1)]+'-'+(month*1-1)+'-'+year,'-');
					array_fechas[1]=normalizafecha(array_dias_mes[(month*1-1)]+'-'+(month*1-1)+'-'+year,'-');
				}
			}
			else
			{
				array_fechas[0]=normalizafecha((day*1-1)+'-'+(month*1+1)+'-'+year,'-');
				array_fechas[1]=normalizafecha((day*1-1)+'-'+(month*1+1)+'-'+year,'-');
			}
			
		}
		break;
		case'mes_anterior':
		{
			if((month*1+1) == 1)
			{
				array_fechas[0]=normalizafecha('01-12-'+(year*1-1),'-');
				array_fechas[1]=normalizafecha('31-12-'+(year*1-1),'-');
			}
			else
			{
				array_fechas[0]=normalizafecha('01-'+(month*1-1)+'-'+year,'-');
				array_fechas[1]=normalizafecha(array_dias_mes[(month*1-1)]+'-'+(month*1-1)+'-'+year,'-');
			}
		}
		break;
	}
	return array_fechas;
}

function fechavalidajq(fecha,sep,mensaje)
{
    var resul=true;
    if (fecha.attr('value').length != 0)
    {
		fechab=normalizafecha(fecha.attr('value'),sep);
        fecha.val(fechab);
	
        if (fechab.length == 10)
        {
            
        	if (fechab.substring(2,3) == sep && fechab.substring(5,6) == sep)
             {
                 var date = fechab.substring(0,2);
                 var month = fechab.substring(3,5);
                 var year = fechab.substring(6,10);
                 if(year<'2050')
                 {
                                var test = new Date(year,month-1,date);
                                if ((month-1 == test.getMonth()) && (date == test.getDate()))
                                     resul=true;
                                else
                                {
                                      msj = 'Fecha Incorrecta!';
                                    resul=false;
                                }
                 }
                 else
                 {
                     resul=false;
                     msj = 'Año demasiado grande';
                 }
           }
           else
            {
                msj = 'Separador Incorrecto. Use '+sep;
                resul=false;
            }
         }
         else
         {
               msj = 'Longitud de fecha incorrecta';
               resul=false;
         }

        if(resul==false && mensaje)
        {
          alert(msj);
        }
    }
    return resul;
}

function fechahoravalida(valor,sepfecha,sephora,mensaje)
{
	correcto=true;
	sep=valor.split(' ');
	if(sep.length==2)
	{
		var resul=fechavalidavalor(sep[0],sepfecha,false)
	    if(!resul)
	    	correcto=false;

		var resul=horavalidavalor(sep[1],sephora,false)
		if(!resul)
			correcto=false;
	}
	if(mensaje==true && correcto==false)
	{
		alert('Fecha erronea');
	}
	return correcto;
}

function fechahoravalidanv(valor,sepfecha,sephora,mensaje)
{
    var resul=true;
    if(valor!='')
    {
    	resul=fechahoravalida(valor,sepfecha,sephora,mensaje);
    }
    else
    {
    	resul=false;
    }
    if (mensaje && !resul)
    {
       alert("Debe introducir un valor válido");
    }
    return resul;
}

