   function esDigito(sChr){
    var sCod = sChr.charCodeAt(0);
    return ((sCod > 47) && (sCod < 58));
   }

   function valSep(oTxt){
    var bOk = false;
    bOk = bOk || ((oTxt.charAt(2) == "-") && (oTxt.charAt(5) == "-"));
    bOk = bOk || ((oTxt.charAt(2) == "/") && (oTxt.charAt(5) == "/"));
    return bOk;
   }

   function finMes(oTxt){
    var nMes = parseInt(oTxt.substr(3, 2), 10);
    var nAno = parseInt(oTxt.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.substr(0, 2), 10);
    bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
    return bOk;
   }

   function valMes(oTxt){
    var bOk = false;
    var nMes = parseInt(oTxt.substr(3, 2), 10);
    bOk = bOk || ((nMes >= 1) && (nMes <= 12));
    return bOk;
   }

   function valAno(oTxt){
    var bOk = true;
    var nAno = oTxt.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 != ""){
     bOk = bOk && (valAno(oTxt));
     bOk = bOk && (valMes(oTxt));
     bOk = bOk && (valDia(oTxt));
     bOk = bOk && (valSep(oTxt));
     return bOk;
    }
   }

   function fechaMayorQue(inicio, fin){
    var bRes = false;
    var sDia0 = inicio.substr(0, 2);
    var sMes0 = inicio.substr(3, 2);
    var sAno0 = inicio.substr(6, 4);
    var sDia1 = fin.substr(0, 2);
    var sMes1 = fin.substr(3, 2);
    var sAno1 = fin.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(idia, imes, iany, fdia, fmes, fany){
    var bOk = false;
    
    var inicio 	= idia+"/"+imes+"/"+iany;
    var fin		= fdia+"/"+fmes+"/"+fany;

    if (valFecha(inicio)){
     if (valFecha(fin)){
      if (fechaMayorQue(fin, inicio)){
       bOk = true;
       return true;
      } else {
       alert(traducciones.textErrorRangoInvalido);
       return false;
      }
     } else {
      alert(traducciones.textErrorSalidaInvalida);
      return false;
     }
    } else {
     alert(traducciones.textErrorLlegadaInvalida);
     return false;
    }
   } 