//************************************************************************************
//Fichero: funciones_formularios.php
//Descripción: Funciones para trabajar con formularios
//Autor: Antonio Binaria
//Última actualización: 4/1/2008 10:10
//Último actualizador: Manolo Bittacora
//Comentarios de la actualización: Modifico LimitAttach para que acepte solo tipos compatibles con el mediaplayer integrado
//************************************************************************************

function LimitAttach(tField,iType) {
        file=tField.value;
        if (iType==1) {
        extArray = new Array(".jpg",".gif",".png",".bmp");
        }
        if (iType==2) {
        extArray = new Array(".doc",".xls",".ppt",".pdf",".zip",".rar",".txt");
        }
        if (iType==3) {
        //extArray = new Array(".mpeg",".mpg",".avi",".flv",".swf",".mov",".wmv");
        extArray = new Array(".flv",".swf");
        }
        if (iType==4) {
        //extArray = new Array(".wma",".mp3",".wav");
        extArray = new Array(".mp3");
        }
        if (iType==5) {
        extArray = new Array(".jpg",".gif",".png",".swf");
        }
        allowSubmit = false;
        if (!file) return;
        while (file.indexOf("\\") != -1) file = file.slice(file.indexOf("\\") + 1);
        ext = file.slice(file.indexOf(".")).toLowerCase();
        for (var i = 0; i < extArray.length; i++) {
        if (extArray[i] == ext) {
        allowSubmit = true;
        break;
        }
        }
        if (allowSubmit) {
        } else {
        tField.value="";
        alert("Tipo no permitido. Se admiten ficheros de los tipos siguientes: " + (extArray.join(" ")) + "\nPor favor seleccione un nuevo fichero");
        }
}  

//**********************************************************************************************************************
// Funciones de fechas (comparación, separación (de DDMMAAAA -> DD/MM/AAAA), validación)
//**********************************************************************************************************************
function separarFecha(objFecha){
    str = objFecha.value;
    if ( (str.length==8) && (EsNumero (str,"si")) ) {
      aux = "";
      aux += str.charAt(0);
      aux += str.charAt(1);
      aux += "/";
      aux += str.charAt(2);
      aux += str.charAt(3);
      aux += "/";
      aux += str.charAt(4);
      aux += str.charAt(5);
      aux += str.charAt(6);
      aux += str.charAt(7);
  }
  else aux = str;
    
 objFecha.value = aux;
}
function separarFechaHora(objFecha){
    str = objFecha.value;
    if ( (str.length==13) && (EsNumero (str,"si")) ) {
      aux = "";
      aux += str.charAt(0);
      aux += str.charAt(1);
      aux += "/";
      aux += str.charAt(2);
      aux += str.charAt(3);
      aux += "/";
      aux += str.charAt(4);
      aux += str.charAt(5);
      aux += str.charAt(6);
      aux += str.charAt(7);
      aux += " ";
      aux += str.charAt(8);
      aux += str.charAt(9);
      aux += ":";
      aux += str.charAt(10);
      aux += str.charAt(11);
      aux += ":";
      aux += str.charAt(12);
      aux += str.charAt(13);

  }
  else aux = str;
    
 objFecha.value = aux;
}
//**********************************************************************************************************************
// Funciones de control de campos
//**********************************************************************************************************************
function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}
//**********************************************************************************************************************

function EsVacio(str) { 
    var ok = false;
    
    if ( (str+"" == "undefined") || (str+"" == "null") || (str+"" == "") || (!str) ){
      ok = true; 
    }
    else{
        for(i=0; i<str.length; )
            {
                if(str.charAt(i)==" ")
                    str=str.substring(i+1, str.length);
                else
                    break;
            }
        if (str=="")
         ok = true;
    }
    return ok;
}
//**********************************************************************************************************************

function EsNumero(n, obligatorio) { 
    var ok = false;
    if ( (obligatorio=="si") && (EsVacio(n)) ) ok = false;
    else{
          if (!EsVacio(n)){
                if (isNaN(n))
                    ok = false;
                else 
                    ok = true;
            }
            else ok = true;
        }
 return ok;
}

//**********************************************************************************************************************

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 nRes = 0;
        switch (nMes){
        case 1: nRes = 31; break;
        case 2: nRes = 29; 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;
}

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));
if (!bOk) return false;
else return true;
}
}
function valFechaHora(oTxt){
var bOk = true;
if (oTxt != ""){
bOk = bOk && (valAno(oTxt));
bOk = bOk && (valMes(oTxt));
bOk = bOk && (valDia(oTxt));
if (!bOk) return false;
else return true;
}
}
function comprobarFecha (obj){
        if (!EsVacio(obj.value)){
            separarFecha(obj);
            if (!valFecha(obj.value)){
                alert ('La fecha no es válida');
            }
        }
    }
function comprobarFechaHora (obj){
        if (!EsVacio(obj.value)){
            separarFechaHora(obj);
            if (!valFechaHora(obj.value)){
                alert ('La fecha no es válida');
            }
        }
    }
//***************************************************************************************************************************************+
// Compara dos fechas dadas si fechaDesde = fechaHasta devuelve TRUE

function compararFechas (fechaDesde,fechaHasta){  
  diaDesde = fechaDesde.substr (0,2);
  mesDesde = fechaDesde.substr (3,2);
  anoDesde = fechaDesde.substr (6,4);
  
  diaHasta = fechaHasta.substr (0,2);
  mesHasta = fechaHasta.substr (3,2);
  anoHasta = fechaHasta.substr (6,4);
  
  okFecha = true;
  if (anoDesde>anoHasta) {
    okFecha = false;
  }
  else{
    if ( (mesDesde>mesHasta) && (anoDesde==anoHasta) ){
         okFecha = false;
        }
    else{
        if ( (diaDesde>diaHasta) && (mesDesde==mesHasta) && (anoDesde==anoHasta) ){
            okFecha = false;
        }
    }
  }
  return okFecha;   
}
//**********************************************************************************************************************
// valida una dirección de correo electrónico, obligatorio es un campo string ("si" ó "no") para validar como campo obligatorio 
//**********************************************************************************************************************
function valEmail(emailStr,obligatorio) {
var ok = true;
    if (obligatorio=="si"){
        if ( (emailStr.length==0) || (emailStr.search("^([a-zA-Z0-9_'+*$%\^&!\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9:]{2,4})+$")) )
          ok = false;
    }
  else{
  if ( (emailStr.search("^([a-zA-Z0-9_'+*$%\^&!\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9:]{2,4})+$")) && (emailStr.length > 0) )
          ok = false;
    }
  return ok;
}

//**********************************************************************************************************************
// Comprueba si el navegador tiene habilitado las cookies
//**********************************************************************************************************************
function comprobarCookies() {   
   return navigator.cookieEnabled;
}
//**********************************************************************************************************************
// Convierte el atributo rel en _blank en los enlaces <a href='loquesea' rel='externo'>
//**********************************************************************************************************************
function enlacesexternos() {
 if (!document.getElementsByTagName) return;
 var enlaces = document.getElementsByTagName('a');
 for (var i=0; i<enlaces.length; i++) {
   var enlace = enlaces[i];
   if (enlace.getAttribute('href') && enlace.getAttribute('rel') == 'externo')
     enlace.target = '_blank';
 }
}