   function esDigito(sChr){  
    var sCod = sChr.charCodeAt(0);  
    return ((sCod > 47) && (sCod < 58));  
   }  

   function valSep(oTxt){  
    var bOk = false;  
    bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));  
    bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));  
    return bOk;  
   }  

   function finMes(oTxt){  
    var nMes = parseInt(oTxt.value.substr(3, 2), 10);  
    var nAno = parseInt(oTxt.value.substr(6), 10);  
    var nRes = 0;  
    switch (nMes){  
     case 1: nRes = 31; break;  
     case 2: nRes = 28; break;  
     case 3: nRes = 31; break;  
     case 4: nRes = 30; break;  
     case 5: nRes = 31; break;  
     case 6: nRes = 30; break;  
     case 7: nRes = 31; break;  
     case 8: nRes = 31; break;  
     case 9: nRes = 30; break;  
     case 10: nRes = 31; break;  
     case 11: nRes = 30; break;  
     case 12: nRes = 31; break;  
    }  
    return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);  
   }  

   function valDia(oTxt){  
    var bOk = false;  
    var nDia = parseInt(oTxt.value.substr(0, 2), 10);  
    bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));  
    return bOk;  
   }  

   function valMes(oTxt){  
    var bOk = false;  
    var nMes = parseInt(oTxt.value.substr(3, 2), 10);  
    bOk = bOk || ((nMes >= 1) && (nMes <= 12));  
    return bOk;  
   }  

   function valAno(oTxt){  
    var bOk = true;  
    var nAno = oTxt.value.substr(6);  
    bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));  
    if (bOk){  
     for (var i = 0; i < nAno.length; i++){  
      bOk = bOk && esDigito(nAno.charAt(i));  
     }  
    }  
    return bOk;  
   }  

   function valFecha(oTxt){
    var bOk = true;  
    if (oTxt.value != ""){  
     bOk = bOk && (valAno(oTxt));  
     bOk = bOk && (valMes(oTxt));  
     bOk = bOk && (valDia(oTxt));  
     bOk = bOk && (valSep(oTxt));  
     return bOk;  
    }  
   }  

   function fechaMayorOIgualQue(fec0, fec1){  
    var bRes = false;  
    var sDia0 = fec0.value.substr(0, 2);  
    var sMes0 = fec0.value.substr(3, 2);  
    var sAno0 = fec0.value.substr(6, 4);  
    var sDia1 = fec1.value.substr(0, 2);  
    var sMes1 = fec1.value.substr(3, 2);  
    var sAno1 = fec1.value.substr(6, 4);  
    if (sAno0 > sAno1) bRes = true;  
    else {  
     if (sAno0 == sAno1){  
      if (sMes0 > sMes1) bRes = true;  
      else {  
       if (sMes0 == sMes1)  
        if (sDia0 >= sDia1) bRes = true;  
      }  
     }  
    }  
    return bRes;  
   }  

   function valFechas(objFecini, objFecfin, obfForm){  
    var bOk = false;  
    if (valFecha(objFecini)){  
     if (valFecha(objFecfin)){  
      if (fechaMayorOIgualQue(objFecini, objFecfin)){  
       bOk = true;  
       alert("Ok");  
      } else {  
       alert("Rango inválido");  
       objFecini.focus();  
      }  
     } else {  
      alert("Fecha inválida");  
      objFecfin.focus();  
     }  
    } else {  
     alert("Fecha inválida");  
     objFecini.focus();  
    }  
   }  

function diferenciaFechas (objFecini, objFecfin) {   

   //Obtiene dia, mes y ańo   
   var fecha1 = new fecha( objFecini.value )      
   var fecha2 = new fecha( objFecfin.value )   
      
   //Obtiene objetos Date   
   var miFecha1 = new Date( fecha1.anio, fecha1.mes-1, fecha1.dia )   
   var miFecha2 = new Date( fecha2.anio, fecha2.mes-1, fecha2.dia )   
   
   var dia1 = miFecha1.getDate()
   var dia2 = miFecha2.getDate()
   
   var seg1 = Math.floor(miFecha1.getTime()/86400000)
   var seg2 = Math.floor(miFecha2.getTime()/86400000)
   
   var mes1 = miFecha1.getMonth()
   var mes2 = miFecha2.getMonth()
  
   //Resta fechas y redondea 
   
 
   var diferencia = miFecha1.getTime() - miFecha2.getTime(); 
   var dias = Math.round(diferencia / (1000 * 60 * 60 * 24))   
   var segundos = Math.round(diferencia / 1000) 
 
	   
   //alert ('Fechas ' + mes1 + ' ' + mes2 + '') 
   //alert ('La diferencia es de ' + dias + ' dias,\no ' + segundos + ' segundos.')   
       
   //return false
   return dias;   
}   
  
function fecha( cadena ) {   
  
   //Separador para la introduccion de las fechas   
   var separador = "/";
  
   //Separa por dia, mes y ańo   
   if ( cadena.indexOf( separador ) != -1 ) {   
        var posi1 = 0   
        var posi2 = cadena.indexOf( separador, posi1 + 1 )   
        var posi3 = cadena.indexOf( separador, posi2 + 1 )   
        this.dia = cadena.substring( posi1, posi2 )   
        this.mes = cadena.substring( posi2 + 1, posi3 )   
        this.anio = cadena.substring( posi3 + 1, cadena.length )   
   } else {   
        this.dia = 0   
        this.mes = 0   
        this.anio = 0      
   }   
}   

function fechaMayorQueHoy(objFecini){
	 fechaHoy=new Date();

     //Obtiene objetos Date   
 	 var fecha1 = new fecha( objFecini.value )      
     var miFecha1 = new Date( fecha1.anio, fecha1.mes-1, fecha1.dia )   

	// Se compara
	if (miFecha1<=fechaHoy)
		return false;
	else
		return true;
}
