﻿/*********************************  CUGenerales.js ********************************/

var InicioDenominacionFormulario = "MasterPagina_CPHContenidoGestor_"


/***********************************Empieza Javascript para Buscador*********************************************/

    function MostrarCalendarioHistorico(txtboxID, textbox)
    {
               
        var DenInicio = textbox.id.substring(0, textbox.id.lastIndexOf("_")+1)  
        
        XCalendario = event.clientX - event.offsetX
        YCalendario = event.clientY - event.offsetY + textbox.offsetHeight
      
        document.getElementById(DenInicio + "pnlCalendarioBuscador").style.left = XCalendario
        document.getElementById(DenInicio + "pnlCalendarioBuscador").style.top = YCalendario
        document.getElementById(DenInicio + "pnlCalendarioBuscador").style.position ='absolute'
        
        calendario = document.getElementById(DenInicio + "pnlCalendarioBuscador")
       
        if ((calendario.style.display=='none'))
        {
            calendario.style.display ='block'
        }
        else if (calendario.style.display=='block')
        {
            calendario.style.display ='none'
        }

        document.getElementById(DenInicio + "cTxtCalendario").value = txtboxID
        document.getElementById(DenInicio + "cPosicionAbsolutaCalendario").value = XCalendario + "#" + YCalendario
    }
    
/***********************************Finaliza Javascript para Buscador*********************************************/

/***********************************Empieza Javascript para PopUp *********************************************/

    var DenInicialInformacion = "MasterPagina_CPHContenidoGestor_Informacion_"
    var DenInicialDocumentos = "MasterPagina_CPHContenidoGestor_Documentos_"
    var DenInicialEnlaces = "MasterPagina_CPHContenidoGestor_Enlaces_"
    
    // IDcTeclaPulsadaASCII: identificador del atributo hidden que se empleara para conocer el codigo ASCII de la tecla pulsada por el usuario.
    //                       (Se empleara para que el popUp asociado a la carga de la img1 no se muestre cuando se pulse la tecla "Enter").
    var IDcTeclaPulsadaASCII = DenInicialInformacion + "cTeclaPulsadaASCII"
    
    // IDcAlturaExcesoScroll: identificador del atributo hidden que se empleara para conocer la diferencia la altura del scroll y la de la pagina.
    //                       (Se empleara para que el panel 'PanelInformacionDeshabilitado' se vea a pesar de que el usuario use el scroll).
    var IDcAlturaExcesoScroll = DenInicialInformacion + "cAlturaExcesoScroll"


    /*
     * Funcion que muestra el popUp asociado a la imagen sobre la que el usuario
     * ha pinchado (para poder cargar una imagen o borrar la que hubiera).
     * Parametros:
     *      - IDPanelPopUp: identificador del panel en el que se encuentra el popUp que hay que mostrar.
     *      - Orden: para saber si se trata del popUp asociado a la imagen1(1) o a la imagen2(2).
     */
    function MostrarPopUpImg(IDPanelPopUp, Orden)
    {
        var IDcImgPulsada = DenInicialInformacion + "cImgPulsada"        
        var imgPulsada
        var Popup        
        
        // --- Lo comentado en esta funcion se debe a que ahora se controla toda tecla pulsada por el usuario gracias
        // --- a la linea 'document.onkeypress = TeclaPulsada' (ver funcion 'TeclaPulsada').
        // --- Ademas, para los navegadores como Firefox, la propiedad 'document.activeElement' no es valida.
        
////        imgPulsada = document.getElementById(IDcImgPulsada).value
        Popup = document.getElementById(InicioDenominacionFormulario + IDPanelPopUp)
////        if ((imgPulsada == 1) 
////            || 
////            (imgPulsada == 2)
////            || 
////            (((imgPulsada == "") ||(imgPulsada == 0)) && ((document.activeElement.id.indexOf("Img") != -1))))
////        {
////            // El usuario ha pinchado en una de las 2 imagenes.
////            // (El ultimo OR (el formado por un AND) es por si lo primero que hace el usuario es pinchar sobre una de las imagenes,
////            //  con lo que saltaria antes esta funcion que el evento asociado a dicha imagen, con el que se modifica el valor del hidden).
            
            Popup.style.display='block'            
            // Se guarda en el hidden correspondiente la altura del scroll.
            document.getElementById(IDcAlturaExcesoScroll).value = (document.body.scrollHeight - window.screen.availHeight)
////        }
        return true
    }


    /*
     * Funcion que muestra el popUp asociado al documento/enlace que el usuario pretende eliminar.
     * Parametros:
     *      - IDPanelPopUp: identificador del panel en el que se encuentra el popUp que hay que mostrar.
     *      - Origen: para saber si se trata de un popUp asociado a un documento(1) o a un enlace(2).
     */
    function MostrarPopUpElimDocEnlace(IDPanelPopUp, Origen)
    {
        var Popup
        if (Origen == 1)
        {
            Popup = document.getElementById(DenInicialDocumentos + IDPanelPopUp)
        }
        else if (Origen == 2)
        {
            Popup = document.getElementById(DenInicialEnlaces + IDPanelPopUp)
        }
        Popup.style.display='block'            
        // Se guarda en el hidden correspondiente la altura del scroll.
        document.getElementById(IDcAlturaExcesoScroll).value = (document.body.scrollHeight - window.screen.availHeight)
        return true
    }


    /*
     * Funcion que oculta el popUp cuyo identificador (el del panel en el que se encuentra) que se pasa como parametro.
     */
    function OcultarPopUp(PopUp)
    {
        PopUp.style.display='none' 
        return true
    }
    

    /* Para conocer el código asignado a cada tecla. */
    //Se asocia al evento 'onkeypress' la funcion que se quiere ejecutar cada vez que se pulse una tecla del teclado.
    //document.onkeypress = TeclaPulsada
    /*
     * Funcion que almacena en el atributo hidden 'cTeclaPulsadaASCII' de 'Informacion.ascx'
     * el codigo ASCII de la ultima tecla pulsada por el usuario.
     */
    function TeclaPulsada() 
    {
        var txtBoxEdicion
        
        if ((document.activeElement.id != "MasterContenedorGestor")
            && 
            (document.activeElement.id.indexOf("MenuPrincipal") == -1) 
            &&
            (document.activeElement.id.indexOf("EncabezadoPublico") == -1))
        {            
            txtBoxEdicion = BuscarTxtBoxVisible() 
         
            // Almacenar en el hidden 'cTeclaPulsadaASCII' el codigo ASCII de la ultima tecla pulsada por el usuario.
            document.getElementById(IDcTeclaPulsadaASCII).value = event.keyCode //codigo ASCII de la tecla pulsada.   
        }
        else if ((document.activeElement.id.indexOf("MenuPrincipal") != -1) 
            ||
            (document.activeElement.id.indexOf("EncabezadoPublico") != -1))
        {
            // Se esta editando un txtBox de la parte publica (o en el
            // buscador o en la zona de busqueda de la pagina principal).
            txtBoxEdicion = document.getElementById(document.activeElement.id)
            txtBoxEdicion.value = txtBoxEdicion.value + String.fromCharCode(event.keyCode)
        }
        
                   
        if (txtBoxEdicion != false)
        {
            if ((txtBoxEdicion.type == "text") && (event.keyCode == 13)) //event.keyCode == 13 ==> tecla return.
            {
                // El usuario ha pulsado la tecla 'return' en un campo de texto SingleLine.
                return false
            }
            
            // Recuperar la posicion en la que se encuentra el cursor para poder escribir
            // el caracter cuya tecla ha pulsado el usuario en la posicion correcta.
            // (Visto en http://blog.vishalon.net/Post/57.aspx)
            var posicionCursor = -1 
            var posicionCursorAux = -1 
            var subTexto1 = ""
            var subTexto2 = ""
            var Sel, Sel2
            
            if (txtBoxEdicion.type == "text") // textbox
            {
                posicionCursor = Math.abs(document.selection.createRange().moveStart("character", -1000000))
            }
            else if(txtBoxEdicion.type == "textarea") // textarea
            {                
                Sel = document.selection.createRange ()
                Sel2 = Sel.duplicate()
                Sel2.moveToElementText(txtBoxEdicion)
                while(Sel2.inRange(Sel))
                {
                    Sel2.moveStart("character")
                    posicionCursor++
                }
            }              
            
            // Hay que tener cuidado con los saltos de linea en IE (son 2 caracteres). 
            // Aumentar 'pocicionCursor' en 1 por cada salto de linea que aparezca hasta ella misma.
	        posicionCursorAux = posicionCursor
	        if (document.selection) //IE support
	        {
	            var i
		        for (i=2; i<=posicionCursor; i++)
		        {
		            if ((txtBoxEdicion.value.substring(i-2, i-1) == "\r") && (txtBoxEdicion.value.substring(i-1, i) == "\n"))
		            {
		                posicionCursorAux++
		            }
		        }
	        }      
	        

            // Para evitar problemas cuando no se este en la parte gestora.
            if ((document.activeElement.id.indexOf("MenuPrincipal") == -1) 
                &&
                (document.activeElement.id.indexOf("EncabezadoPublico") == -1))
            {
                subTexto1 = (txtBoxEdicion.value).substring(0, posicionCursorAux)
                subTexto2 = (txtBoxEdicion.value).substring(posicionCursorAux, txtBoxEdicion.value.length)
                txtBoxEdicion.value = subTexto1 + String.fromCharCode(event.keyCode) + subTexto2         
                // Colocar el cursor tras el ultimo caracter escrito.
                PosicionarCursor(txtBoxEdicion, posicionCursor+1)
                
                document.getElementById(IDcTeclaPulsadaASCII).value = -1
            }
        } 
        return false
    } 
       
    
    /*
     * Funcion comprueba si hay algun txtBox visible; en ese caso se devuelve dicho txtBox, en caso contrario devuelve false.
     * (El usuario ha pulsado la tecla 'Enter' y por eso ha saltado esta funcion.).
     */
    function BuscarTxtBoxVisible()
    {
        var elemsInput = document.getElementsByTagName("input")
        var elemsTextArea = document.getElementsByTagName("textarea")
        var i
        
        // Se recorren los txtBox de tipo SingleLine.
        for (i=0; i<elemsInput.length-1; i++)
        {
            if ((elemsInput(i).type == "text") && (elemsInput(i).style.display == "block"))
            {
                return elemsInput(i)
            }
        }
        
        // Se recorren los txtBox de tipo MultiLine.
        for (i=0; i<elemsTextArea.length-1; i++)
        {
            if ((elemsTextArea(i).type == "textarea") && (elemsTextArea(i).style.display == "block"))
            {
                return elemsTextArea(i)
            }
        }    
                  
        return false   
    }
    

     /* 
     * Funcion que lleva posiciona el cursor de un txtBox en la posicion pasada como parametro.
     * Parametros:
     *      - TxtFoco: txtBox en el que hay que posicionar el cursor.
     *      - PosicionCursor: posicion en la que hay que colocar el cursor.
     * Funcion asociada al evento "onfocus" de los lnkBtn's de la pagina.
     *                             -------
     */
    function PosicionarCursor(TxtFoco, PosicionCursor)
    {
        if(TxtFoco.createTextRange)
        {
            /*
             * Create a TextRange, set the internal pointer to a
             * specified position and show the cursor at this position.
             */
            var range = TxtFoco.createTextRange()
            range.move("character", PosicionCursor)
            range.select()
        }
        return false
    }    
    
    
    
/***********************************Finaliza Javascript para PopUp*********************************************/
    
    
    



