// JavaScript Document
<!-- ocultar a navegadores antíguos
/**************************************************************
Máscara de entrada. Script creado por Tunait! (21/12/2004)
Si quieres usar este script en tu sitio eres libre de hacerlo con la condición de que permanezcan los créditos.
http://javascript.tunait.com/ 

Para llamar al script pasar como parámetros: a sí mismo, el separador, el patrón (array) a utilizar y si queremos que sólo acepte números o no.
(true=sólo números, false=cualquier caracter)

<input type="text" name = "fecha" onkeyup="mascara(this,'/',patron,true)" maxlength="10" />
<input type="text" name = "telefono" onkeyup="mascara(this,'-',patron2,true)" maxlength="12" /> 
<input type="text" name = "nif" onkeyup="mascara(this,'-',patron3,false)" maxlength="11" />
****************************************************************/
var patron = new Array(2,2,4)
var patron2 = new Array(1,3,3,3,3)
function mascara(d,sep,pat,nums)
{
	if(d.valant != d.value)
	{
		val = d.value
		largo = val.length
		val = val.split(sep)
		val2 = ''
		for(r=0;r<val.length;r++)
		{
			val2 += val[r]	
		}
		if(nums){
		for(z=0;z<val2.length;z++)
		{
			if(isNaN(val2.charAt(z)))
			{
				letra = new RegExp(val2.charAt(z),"g")
				val2 = val2.replace(letra,"")
			}
		}
	}
	val = ''
	val3 = new Array()
	for(s=0; s<pat.length; s++)
	{
		val3[s] = val2.substring(0,pat[s])
		val2 = val2.substr(pat[s])
	}
	for(q=0;q<val3.length; q++)
	{
		if(q ==0)
		{
			val = val3[q]
		}
		else
		{
			if(val3[q] != "")
			{
				val += sep + val3[q]
			}
		}
	}
	d.value = val
	d.valant = val
	}
}

/* Otro grupo de funciones sólo para formatear fechas, además comprueba que la fecha sea real, es decir no escribir 33-01-2012 */
function IsNumeric(valor) //Compruebo si es un valor numérico 
{ 
	var log=valor.length; var sw="S"; 
	for (x=0; x<log; x++) 
	{
		v1=valor.substr(x,1); 
		v2 = parseInt(v1); 
		if (isNaN(v2)) { sw= "N";} 
	} 
	if (sw=="S") {return true;} else {return false; } 
} 
var primerslap=false; 
var segundoslap=false; 

// ejemplo <input type="text" name="fecha" onchange="formateafecha(this.value)" />
function formateafecha(fecha) 
{ 
	var long = fecha.length; 
	var dia; 
	var mes; 
	var ano; 
	if ((long>=2) && (primerslap==false))
	{
		dia=fecha.substr(0,2); 
		if ((IsNumeric(dia)==true) && (dia<=31) && (dia!="00")) { fecha=fecha.substr(0,2)+"/"+fecha.substr(3,7); primerslap=true; } 
		else { fecha=""; primerslap=false;} 
	} 
else 
{
	dia=fecha.substr(0,1); 
	if (IsNumeric(dia)==false) 
	{fecha="";} 
	if ((long<=2) && (primerslap=true)) {fecha=fecha.substr(0,1); primerslap=false; } 
} 
if ((long>=5) && (segundoslap==false)) 
{
	mes=fecha.substr(3,2); 
	if ((IsNumeric(mes)==true) &&(mes<=12) && (mes!="00")) { fecha=fecha.substr(0,5)+"/"+fecha.substr(6,4); segundoslap=true; } 
	else { fecha=fecha.substr(0,3);; segundoslap=false;} 
} 
else { if ((long<=5) && (segundoslap=true)) { fecha=fecha.substr(0,4); segundoslap=false; } } 
if (long>=7) 
{ 
	ano=fecha.substr(6,4); 
	if (IsNumeric(ano)==false) { fecha=fecha.substr(0,6); } 
	else { if (long==10){ if ((ano==0) || (ano<1900) || (ano>2100)) { fecha=fecha.substr(0,6); } } } 
} 
if (long>=10) 
{ 
	fecha=fecha.substr(0,10); 
	dia=fecha.substr(0,2); 
	mes=fecha.substr(3,2); 
	ano=fecha.substr(6,4); 
	// Año no bisiesto y es febrero y el dia es mayor a 28 
	if ( (ano%4 != 0) && (mes ==02) && (dia > 28) ) { fecha=fecha.substr(0,2)+"/"; } 
} 
return (fecha); 
}


//****************************

 // LIBARDO DÍAZ FLÓREZ Bucaramanga(Colombia)



// Esta función permitirá validar la fecha

// En el objeto text hacemos lo Siguiente

/*

   <input type='text' name=cajaFecha onChange='fechas(this.value); this.value=borrar'>

*/

function fechas(caja)

{ 

   if (caja)

   {  

      borrar = caja;

      if ((caja.substr(2,1) == "/") && (caja.substr(5,1) == "/"))

      {      

         for (i=0; i<10; i++)

             {  

            if (((caja.substr(i,1)<"0") || (caja.substr(i,1)>"9")) && (i != 2) && (i != 5))

                        {

               borrar = '';

               break;  

                        }  

         }

             if (borrar)

             { 

                a = caja.substr(6,4);

                    m = caja.substr(3,2);

                    d = caja.substr(0,2);

                    if((a < 1900) || (a > 2050) || (m < 1) || (m > 12) || (d < 1) || (d > 31))

                       borrar = '';

                    else

                    {

                       if((a%4 != 0) && (m == 2) && (d > 28))      

                          borrar = ''; // Año no viciesto y es febrero y el dia es mayor a 28

                           else 

                           {

                          if ((((m == 4) || (m == 6) || (m == 9) || (m==11)) && (d>30)) || ((m==2) && (d>29)))

                                 borrar = '';                                            

                           }  // else

                    } // fin else

         } // if (error)

      } // if ((caja.substr(2,1) == "/") && (caja.substr(5,1) == "/"))                                          

          else

             borrar = '';

          if (borrar == '')

             alert('Fecha erronea');

   } // if (caja)   

} // FUNCION
//-->
