/*
 * Funciones de validaciones para los datos de los formularios
 * son funciones genoricas, se utilizaron para controlar
 * los submits de los formularios.
 */

function ltrim(s) {
        return s.replace(/^\s+/, "");
}
 
function rtrim(s) {
        return s.replace(/\s+$/, "");
}
 
function trim(s) {
        return rtrim(ltrim(s));
}


 
 
/**
* DEBUG : FUNCTION
* function mostrarControlesFormulario()
* sirve para mostrar todos los elementos que eston dentro de un form
*/
function mostrarControlesFormulario(sForm)
{    
    with(document.forms[sForm])
    {
        for (i=0;i<elements.length;i++)
        { 
            alert(elements[i].name + " = " + elements[i].value);
        } 
        return(elements);
    }    
}
  
/**
* function getRadioButtonSelectedValue()
* permite obtener el valor seleccionado de un radio button
*/
function iGetRadioButtonSelectedValue(ctrl) 
{    
     
    for(i=0;i<ctrl.length;i++)
    {        
        if(ctrl[i].checked)
        {            
            return ctrl[i].value;
        }
    }        
    return(false);
}

/**
 * function validarCampoVacoo()
 * Comprueba que un campo no esto vacoo
 */
function bCampoVacio(sCampo, sDesc)
{
    var miCampo = document.getElementById(sCampo);
    if (miCampo) {
        if(trim(miCampo.value)=="")
        {
                alert(sDesc);
                miCampo.focus();
                miCampo.style.background="#FFF0F0";
                return(false);
        }
        return(true);
    }
    else {
        return(true);
    }
}

/**
 * function validarLongitudMinima() 
 * valida la longitud minima de un campo
 */
function bLongitudMinima(sCampo, sDesc, iMinim)
{
    var miCampo = document.getElementById(sCampo);
    if(miCampo.value.length < iMinim)
    {
        alert(sDesc);
        miCampo.focus(); 
        miCampo.style.background="#FFEAEA"; 
        return(false);
    }
    return(true);
}
 
 /**
  * function longitudMaxima()
  * valida la longitud maxima de un campo
  */
function bLongitudMaxima(sCampo, sDesc, iMax)
{
    var miCampo = document.getElementById(sCampo);
    if(miCampo.value.length > iMax)
    {
        alert(sDesc);
        miCampo.focus(); 
        miCampo.style.background="#FFEAEA"; 
        return(false);
    }
    return(true);
}

/**
 * function sonIguales()
 * comprueba 
 */
function bSonIguales(sCampo1, sCampo2, sDesc)
{
    var miCampo1 = document.getElementById(sCampo1);
    var miCampo2 = document.getElementById(sCampo2);
    
    if(miCampo1.value!=miCampo2.value)
    {
        alert(sDesc);
        miCampo1.focus(); 
        miCampo1.style.background="#FFEAEA"; 
        return(false);
    }
    return(true);    
}
 
 /**
  * function validarMail()
  * comprueba si un email os volido
  */
function bEmailValido(sCampo, sDesc)
{
    var miCampo = document.getElementById(sCampo);
    if(!bCampoVacio(sCampo, sDesc))
    {
        return(false);
    }
    else
    {
        if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(miCampo.value))
        {
        } 
        else 
        {    
            alert ('La direcci\xF3n de email es incorrecta.');
            miCampo.focus(); 
            miCampo.style.background="#FFEAEA"; 
            return(false); 
        }
    }
    return(true);
}
  
  /**
   * function esNumerico()
   * comprueba si el valor de un campo es todo nomeros
   */
function esNumerico(sCampo, sDesc)
{  
    var miCampo = document.getElementById(sCampo);
    var valor   = miCampo.value.toString();
    for (var i=0; i<valor.length; i++)
    { 
        var caracter = valor.charAt(i); 
        if (caracter<"0" || caracter>"9") 
        {
            alert(sDesc);
            return false; 
        }
    } 
    return true;
}
  
/**
 * function comprobarFecha(f)
 */
function bComprobarFecha(f)
{    
    var validformat = /^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
    var returnval   = false;
    if (!validformat.test(f.value))
    {
        returnval = false; 
    }
    else
    {
        //Detailed check for valid date ranges
        var dayfield    = f.value.split("/")[0];
        var monthfield  = f.value.split("/")[1];    
        var yearfield   = f.value.split("/")[2];
        var dayobj = new Date(yearfield, monthfield-1, dayfield);
        
        if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
        {
            returnval = false;
        }
        else
        {
            returnval = true
        }
    }    
    return(returnval);
}
       

/**
 * function comprobarFechas()
 * comprueba las dos fechas
 */
function bComprobarFechas(sFechaI, sFechaF) 
{

    var miFechaI = document.getElementById(sFechaI);
    var miFechaF = document.getElementById(sFechaF);
    if (miFechaI.value != "" && miFechaF.value != "")
    {
        if(bComprobarFecha(miFechaI)==false)
        {                            
            alert("La fecha inicial no es v\xE1lida");
            return(false);
        }
        if(bComprobarFecha(miFechaF)==false)
        {                            
            alert("La fecha final no es v\xE1lida");
            return(false);
        }
        var dayfieldI    = miFechaI.value.split("/")[0];
        var monthfieldI  = miFechaI.value.split("/")[1];
        var yearfieldI   = miFechaI.value.split("/")[2];
        var dayfieldF    = miFechaF.value.split("/")[0];
        var monthfieldF  = miFechaF.value.split("/")[1];
        var yearfieldF   = miFechaF.value.split("/")[2];
        var dayobjI = new Date(yearfieldI, monthfieldI-1, dayfieldI);
        var dayobjF = new Date(yearfieldF, monthfieldF-1, dayfieldF);
        if (dayobjF< dayobjI)
        {
            alert("La fecha de final debe ser posterior a la inicial.");
            return(false);
        }

    }
    else
    {
        alert("Ambas fechas deben ser introducidas.");
        return(false);
    }
    return(true);    
}

/**
 * function bCheckBoxSeleccionada
 * funcion que comprueba si una checkbox esto
 * seleccionada, se debe comprobar pues se requiere
 */
function bCheckBoxSeleccionada(sCampo, sDesc)
{
    var miCampo = document.getElementById(sCampo);
    if(miCampo.checked==false)
    {
        alert(sDesc);
        miCampo.focus();
        miCampo.style.background="#FFF0F0";
        return(false);
    }
    return(true);
}

/**
 * function vIgualarCampos()
 * iguala el valor de dos campos text
 */
 function vIgualarCampos(sCampo1, sCampo2)
 {
    var miCampo1 = document.getElementById(sCampo1);
    var miCampo2 = document.getElementById(sCampo2);
    
    miCampo1.value = miCampo2.value;
 }

/**
* function bSoloNumeros(obj,e)
*/
function bSoloNumeros(obj,e)
{        
    tecla = (document.all) ? e.keyCode : e.which;
    return(true);      
}


/**
 * function ActivarDesactivar()
 * NOTA : creo que no se utiliza, pero el codigo esto bien
 */
function ActivarDesactivar(sForm)
{ 
    docForm = document.getElementById(sForm);
    var submitContent = '';
    var formElem;
    var lastElemName = '';

    for (i = 0; i < docForm.elements.length; i++) 
    {
        formElem = docForm.elements[i];
            
        if(formElem.disabled==true)
        {
            formElem.disabled=false;
            formElem.style.backgroundColor = "#FFFFFF";
        }
        else
        {
            formElem.disabled=true;
            formElem.style.backgroundColor = "#FFFFFF";
        }        
                
        if( (formElem.style.borderWidth=="1pt 1pt 1pt 1pt") || (formElem.style.borderWidth=="") )
        {
            formElem.style.borderWidth       = "0pt 0pt 0pt 0pt";
        }
        else
        {
            formElem.style.borderWidth       = "1pt 1pt 1pt 1pt";
        }
                
        if (formElem.type == 'select-one')
        {
            formElem.style.arrowColor = '#ffffff';
           // alert(formElem.style.arrowColor); 
        }
        
    }
}

/**
*   function validar_campo(evento,patron)
*   Funcion que permite verificar la pulsacion de la tecla, capturado por el evento onkeypress(evento) y recoge el patron de la 
*   expresion regular que enviamos
*/
function validar_campo(evento,patron) {

    tecla = (document.all) ? evento.keyCode : evento.which;
    //comprobar si CTRL esto pulsado
    hay_ctrl = evento.ctrlKey;

    //tecla =  8 => retroceso (para borrar) 
    //tecla =  9 y 0 =>  (para tabulador) 
    if (tecla==8 || tecla==9 || tecla==0 || tecla==13 || tecla==27 || hay_ctrl) return true;

    te = String.fromCharCode(tecla);
    if ((patron.test(te)) || (tecla>= 192 && tecla <= 255))
    {
        return  true;
    }
	else
	{
		alert("\nEl dato introducido "+te+"  NO es v\xE11lido.\n\n\tIntente de nuevo");
		return false;
	}
} 