function esVacio(s) {
    var len = s.length
    var a
    if (len == 0)
        return true;			
    for (a = 0; a < len; a++)
    {
        if(s.charAt(a) != " ")
            return false;
    }	
    return true;
}

function esComboVacio(combo){
    if(combo.value=="")
        return true;
    else 
        return false;
}

function esFecha(cadena){
    return validaExpReg(cadena,"^[0-9]{2}/[0-9]{2}/[0-9]{4}$");
}

function esFechaMayor(sFecha1, sFecha2){  
// Regresa verdadero si sFecha1 es Mayor que sFecha2
// Si al menos una fecha no es vαlida, regresa falso

    if(!esFecha(sFecha1)) {
        return false;
    }
    if(!esFecha(sFecha2)) {
        return false;
    }
    var parts1 = sFecha1.split('/');
    var anio1=parts1[2];
    var mes1=parts1[1];
    var dia1=parts1[0];
    var testDate1 = new Date(anio1,mes1-1,dia1);

    var parts2 = sFecha2.split('/');
    var anio2=parts2[2];
    var mes2=parts2[1];
    var dia2=parts2[0];
    var testDate2 = new Date(anio2,mes2-1,dia2);

    if (testDate1 > testDate2) {
        return true;
    } else {
        return false;
    }
}

function esFechaFutura(sFecha1){  
// Regresa verdadero si sFecha1 es Mayor a la fecha actual
// Si la fecha no es vαlida, regresa falso

    if(!esFecha(sFecha1)) {
        return false;
    }

    var parts1 = sFecha1.split('/');
    var anio1=parts1[2];
    var mes1=parts1[1];
    var dia1=parts1[0];
    var testDate1 = new Date(anio1,mes1-1,dia1);

    var testDate2 = new Date() 

    if (testDate1 > testDate2) {
        return true;
    } else {
        return false;
    }
}



function esFechaValida(cadena){   
    if(!esFecha(cadena)){
        return false;
    }else{
        var parts = cadena.split('/');
        var anio=parts[2];
        var mes=parts[1];
        var dia=parts[0];
        var testDate = new Date(anio,mes-1,dia);
        //alert(testDate);
        if((anio>=1 && anio <=9999) && (mes>=1 && mes<=12) && (dia>=1 && dia<=31)){
            //return true;
        }else{
            return false;
        }

        // validacion de febrero de 29 dias
        var monthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
        if(anio/4 == parseInt(anio/4)){
            monthLength[1] = 29;
        }

	if (dia > monthLength[mes-1]){
            return false;
        }
        
        return true;
    }
}

function esRfc(cadena){
    if(!validaExpReg(cadena,"^[a-zA-Z]{4}[0-9]{6}$")){
        return false;
    }else{
        //TEGC790419
        fecha=cadena.substring(8,10)+"/"+cadena.substring(6,8)+"/19"+cadena.substring(4,6);
        return esFechaValida(fecha);
    }
}


function coincideRfcCurp(sRFC, sCURP){
    cadena1 = sRFC.substring(4,10);
    cadena2 = sCURP.substring(4,10);
    if(cadena1 == cadena2) {
        return true;
    } else {
        return false;
    }
}

function coincideRfcFecNac(sRFC, sFecNac){

    fecha1=sRFC.substring(8,10)+"/"+sRFC.substring(6,8)+"/19"+sRFC.substring(4,6);
    if(fecha1 == sFecNac){
        return true;
    } else {
        return false;
    }
}


function esHomoCve(cadena){
    return validaExpReg(cadena,"^[a-zA-Z0-9]{3}$");
}

function esCurp(cadena){
    if(!validaExpReg(cadena,"^[a-zA-Z]{4}[0-9]{6}[a-zA-Z0-9]{8}$")){
        return false;
    }else{
        //TEGC79041912345678
        fecha=cadena.substring(8,10)+"/"+cadena.substring(6,8)+"/19"+cadena.substring(4,6);
        return esFechaValida(fecha);
    }
}



function esNumerico(cadena){
    return validaExpReg(cadena,"^[0-9]+$");
}

function esNumericoEspacios(cadena){
    if(!esVacio(cadena)){
        return validaExpReg(cadena,"^[0-9 ]+$");       
    }else{
        return false;
    }    
}

function esNumericoEspaciosSimbolos(cadena){              // ****  // [0-9!@#$%*()_-+*=:;',/. ]
    if(!esVacio(cadena)){
        return validaExpReg(cadena,"^[0-9. ]+$");       
    }else{
        return false;
    }    
}

function esAlfabetico(cadena){  // consideramos al caracter en blanco dentro de los alfabeticos
    if(!esVacio(cadena)){
        return validaExpReg(cadena,"^[a-zA-ZραινσϊΡΑΙΝΣΪ ]+$");         
    }else{
        return false;
    }
}

function esAlfabeticoSimbolos(cadena){  
    if(!esVacio(cadena)){
        return validaExpReg(cadena,"^[a-zA-ZραινσϊΡΑΙΝΣΪ. ]+$");        // **** 
    }else{
        return false;
    }
}

function esAlfaNumerico(cadena){
    if(!esVacio(cadena)){
        return validaExpReg(cadena,"^[a-zA-Z0-9ραινσϊΡΑΙΝΣΪ ]+$");
    }else{
        return false;
    }    
}

function esAlfaNumericoSimbolos(cadena){
    if(!esVacio(cadena)){
        return validaExpReg(cadena,"^[a-zA-Z0-9ραινσϊΡΑΙΝΣΪ. ]+$");   // ****
    }else{
        return false;
    }    
}

function esEmail(cadena){
    //return validaExpReg(cadena,"^[a-zA-Z0-9@.]+$");
    //return validaExpReg(cadena,"^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$");
    //return validaExpReg(cadena,"^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$");                   

    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    if(filter.test(cadena)){
        return true;
    }else{
        return false;
    }

}
        
//emailRe = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/
//phoneRe = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,3})|(\(?\d{2,3}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/

// -------------------------------------------------------- funciones auxiliares ----------------------------------------------------

function validaExpReg(cadena,expreg){ 
    var myRegxp = new RegExp(expreg);
    //alert(cadena +" : "+expreg);
    //alert(myRegxp.test(cadena));
    return myRegxp.test(cadena);
}

function Trim(TRIM_VALUE){
    if(TRIM_VALUE.length < 1){
        return"";
    }
    TRIM_VALUE = RTrim(TRIM_VALUE);
    TRIM_VALUE = LTrim(TRIM_VALUE);
    if(TRIM_VALUE==""){
        return "";
    }
    else{
        return TRIM_VALUE;
    }
} //End Function


function RTrim(VALUE){
    var w_space = String.fromCharCode(32);
    var v_length = VALUE.length;
    var strTemp = "";
    if(v_length < 0){
        return"";
    }
    var iTemp = v_length -1;

    while(iTemp > -1){
        if(VALUE.charAt(iTemp) == w_space){
        }
        else{
            strTemp = VALUE.substring(0,iTemp +1);
            break;
        }
        iTemp = iTemp-1;

    } //End While
    return strTemp;

} //End Function

function LTrim(VALUE){
    var w_space = String.fromCharCode(32);
    if(v_length < 1){
        return"";
    }
    var v_length = VALUE.length;
    var strTemp = "";

    var iTemp = 0;

    while(iTemp < v_length){
        if(VALUE.charAt(iTemp) == w_space){
        }
        else{
            strTemp = VALUE.substring(iTemp,v_length);
            break;
        }
        iTemp = iTemp + 1;
    } //End While
    return strTemp;
} //End Function

function toUpperCase(text){
    text.value=text.value.toUpperCase();
    text.value=text.value.replace(/Α/g,"A");
    text.value=text.value.replace(/Ι/g,"E");
    text.value=text.value.replace(/Ν/g,"I");
    text.value=text.value.replace(/Σ/g,"O");
    text.value=text.value.replace(/Ϊ/g,"U");
}


function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num%100;
    num = Math.floor(num/100).toString();
    if(cents<10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        num = num.substring(0,num.length-(4*i+3))+','+
        num.substring(num.length-(4*i+3));
    return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function LTrimCeros(VALUE1){
    var VALUE=Trim(VALUE1);
    var w_space = String.fromCharCode(48);
    if(v_length < 1){
        return"";
    }
    var v_length = VALUE.length;
    var strTemp = "";

    var iTemp = 0;

    while(iTemp < v_length){
        if(VALUE.charAt(iTemp) == w_space){
        }
        else{
            strTemp = VALUE.substring(iTemp,v_length);
            break;
        }
        iTemp = iTemp + 1;
    } //End While
    return strTemp;
} //End Function


//prueba

