/**
 * Archivo      : funciones.inc.js
 * Descripcion  : funciones genoricas en javascript
 * Fecha        : 14/02/2008
 * Cambios      :
 * [xx/xx/xxxx] - xxxxx
 */
 
/**
* function funcionesInc__removeChar(input) 
* elimina carocteres de intro, \r \n, y otros de una cadena para dejarla limpita.
*/
function removeChar(input) 
{   return input.replace(/[^a-zA-Z 0-9]+/g,'');
    var output = "";
    for (var i = 0; i < input.length; i++) 
    {
        if ((input.charCodeAt(i) == 13) && (input.charCodeAt(i + 1) == 10)) 
        {
            i++;
            output += " ";
        }
        else
        {
            output += input.charAt(i);
        }
    }    
    return output.replace(/\s+/g," ").replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,"$1");         
}


/**
 * function abrirVentana()
 * abre una ventana de popup
 */
function vAbrirVentana(surl, starget, scrollbars, iWidth, iHeight)
{	
    win = window.open(surl, starget, "width="+iWidth+", height="+iHeight+", location=no, titlebar=no, status=no, scrollbars="+scrollbars);
    if (window.focus) {win.focus()}
}

/**
 * function formData2QueryString()
 * thirparty function
 * recoje todos los controles de un form y te devuelve un string
 * docForm          -> objeto del formulario
 */
function formData2QueryString(docForm)
{     
    var submitContent = '';
    var formElem;
    var lastElemName = '';

    for (i = 0; i < docForm.elements.length; i++) 
    {
        formElem = docForm.elements[i];                
        switch (formElem.type) 
        {
            // Text fields, hidden form elements
            case 'text':
            case 'hidden':
            case 'password':
            case 'textarea':
            case 'select-one':
                submitContent += formElem.name + '=' + formElem.value + '|'     // Anteriormente : submitContent += formElem.name + '=' + escape(formElem.value) + '|'                
                break;
            
            // Radio buttons
            case 'radio':
                if (formElem.checked) 
                {
                    submitContent += formElem.name + '=' + formElem.value + '|' // Anteriormente : submitContent += formElem.name + '=' + escape(formElem.value) + '|'
                }
                break;

            // Checkboxes
            case 'checkbox':                
                if (formElem.checked) 
                {
                    // Continuing multiple, same-name checkboxes
                    if (formElem.name == lastElemName) 
                    {
                        // Strip of end ampersand if there is one
                        if (submitContent.lastIndexOf('|') == submitContent.length-1) 
                        {
                            submitContent = submitContent.substr(0, submitContent.length - 1);
                        }
                        // Append value as comma-delimited string
                        submitContent += ',' + formElem.value; // Anteriormente : submitContent += formElem.name + '=' + escape(formElem.value) + '|'
                    }
                    else 
                    {
                        submitContent += formElem.name + '=' + formElem.value;  // Anteriormente : submitContent += formElem.name + '=' + escape(formElem.value) + '|'
                    }
                    submitContent += '|';
                    lastElemName = formElem.name;
                }
                break;
        }
    }
    // Remove trailing separator
    
    //Anulo o quito el ultimo "|" (mediante la longitud de la cadena) para enviarlo limpio para poder procesarlo en la otra funcion
    submitContent = submitContent.substr(0, submitContent.length - 1);
    return submitContent;

}

/**
 *
 */
function sBuscarEnFormData2QueryString(sElementosFormulario, sElemento)
{    
    iPos = sElementosFormulario.indexOf(sElemento+'=');
    sValor = '';

    while((sElementosFormulario.substr(iPos + sElemento.length + 1, 1) != '|') && (iPos < sElementosFormulario.length))
    {
        sValor += sElementosFormulario.substr(iPos + sElemento.length + 1, 1); 
        iPos++;
    }    
    return(sValor);
}

/**
 * Oculta las SELECTS que estan por debajo de un DIV
 * se guarda el estado en el que estaban, les cambia 
 * el nombre y compone un nombre que indica que se 
 * modifico su estado y el estado en que estaba
 *  luego se pueden volver a recuperar llamanado a la misma funcion
 * Implementado por : Dani
 */
function toggleSelect(sObj)
{
    var obj = document.getElementById(sObj);
    var appVer = navigator.appVersion.toLowerCase();
    var iePos = appVer.indexOf('msie');
    if (iePos !=-1)
    {
        var is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)));
        var is_major = parseInt(is_minor);
    }

    if (navigator.appName.substring(0,9) == "Microsoft")
    { // Check if IE version is 6 or older
        if (is_major <= 6)
        {
            var selx,sely,selw,selh,i, objx, objy, objh, objw, visibility
            var sel=document.getElementsByTagName("SELECT")
            var hidden = false;
            for(i=0;i<sel.length;i++)
            {
                selx=docjslib_getRealLeft(sel[i]);
                sely=docjslib_getRealTop(sel[i]);
                selw=sel[i].offsetWidth;
                selh=sel[i].offsetHeight;
                selxoff=(selx + selw);
                selyoff=(sely + selh);
                objx=docjslib_getRealLeft(obj);
                objy=docjslib_getRealTop(obj);
                objw=obj.offsetWidth;
                objh=obj.offsetHeight;
                // alert(sel[i].name + " VISIBILITY : " + sel[i].style.visibility);
                if((objx < selx) && (selx < (objx + objw)) && (objy < sely) && (sely < (objy + objh)))
                {
                    if(sel[i].style.visibility!="hidden")
                    {
                        // alert(sel[i].name + " Esta visible, le cambio el nombre y la oculto");
                        sel[i].name = "tooggle"+"|"+sel[i].style.visibility+"|"+sel[i].name;
                        sel[i].style.visibility="hidden";                        
                        // alert(sel[i].name);
                    }
                    else
                    {
                        // alert(sel[i].name+ " No esto visible, lo muestro si es necesario");
                        var aParametros = sel[i].name.split('|');
                        if(aParametros[0] == "tooggle")
                        {
                            sel[i].style.visibility= aParametros[1];
                            sel[i].name = aParametros[2];
                        }
                    }
                }
                else if((objx < selxoff) && (selxoff < (objx + objw)) && (objy < selyoff) && (selyoff < (objy + objh)))
                {   
                    if(sel[i].style.visibility!="hidden")
                    {
                        // alert(sel[i].name + " Esta visible, le cambio el nombre y la oculto");
                        sel[i].name = "tooggle"+"|"+sel[i].style.visibility+"|"+sel[i].name;
                        sel[i].style.visibility="hidden";                        
                        sel[i].style.visibility="hidden";
                        // alert(sel[i].name);
                    }
                    else
                    {
                        // alert(sel[i].name+ " No esto visible, lo muestro si es necesario");
                        var aParametros = sel[i].name.split('|');
                        if(aParametros[0] == "tooggle")
                        {
                            sel[i].style.visibility= aParametros[1];
                            sel[i].name = aParametros[2];
                        }                    
                    }
                }
                else
                {
                    if(sel[i].style.visibility=="hidden")
                    {
                        // alert(sel[i].name+ "No esto visible, lo muestro si es necesario");
                        var aParametros = sel[i].name.split('|');
                        if(aParametros[0] == "tooggle")
                        {
                            sel[i].style.visibility= aParametros[1];
                            sel[i].name = aParametros[2];
                        }                    
                    }
                }
                visibility = sel[i].style.visibility;
            }
        }
    }
} 

//gets the X position of the element in question
function docjslib_getRealLeft(imgElem) 
{
    xPos = eval(imgElem).offsetLeft;
    tempEl = eval(imgElem).offsetParent;
    while (tempEl != null)
    {
        xPos += tempEl.offsetLeft;
        tempEl = tempEl.offsetParent;
    }
    return xPos;
}

//gets the Y position of the element in question
function docjslib_getRealTop(imgElem)
{
    yPos = eval(imgElem).offsetTop;
    tempEl = eval(imgElem).offsetParent;
    while (tempEl != null)
    {
        yPos += tempEl.offsetTop;
        tempEl = tempEl.offsetParent;
    }
    return yPos;
}