mensaje_en_pantalla = true;

//---------- FUNCIONES PARA USARSE PRICIPALEMENTE CON AJAX ----------------

function showMensaje (mensaje, esconder) {
    if(typeof( esconder ) == 'undefined'){
    		esconder = 0;
    }
    return _showMensaje (mensaje, 'mensaje', esconder);
}

function showError (mensaje, esconder) {
    if(typeof( esconder ) == 'undefined'){
        esconder = -1;
    }
    return _showMensaje (mensaje, 'error', esconder);
}

function showAdvertencia (mensaje, esconder) {
    if(typeof( esconder ) == 'undefined'){
        esconder = -1;
    }
    return _showMensaje (mensaje, 'advertencia', esconder);
}

function _showMensaje (mensaje, clase, esconder) {
    claseCapitalizada = clase.charAt(0).toUpperCase() + clase.substr(1);
    document.getElementById ('indicador_mensaje').className = 'indicador' + claseCapitalizada;
    document.getElementById ('mensaje').className = clase;
    document.getElementById ('texto_mensaje').innerHTML = mensaje;
    muestraMensaje ('mensaje');
    switch(esconder){
        case -1:
            break;
        case 0:
            esconder = 2500;
        default:
            setTimeout("esconderMensajeAutomaticamente()", esconder);     
    }
    
    showElemento ('indicador_mensaje');
}

//-------- FIN


function getVisib(obj){
    var value = obj.style.visibility;
    if (!value) {
        if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
            try {
                if (!Calendar.is_khtml)
                value = document.defaultView.
                getComputedStyle(obj, "").getPropertyValue("visibility");
                else
                value = '';
            } catch (e) {}
        } else if (obj.currentStyle) { // IE
            value = obj.currentStyle.visibility;
        } else
        value = '';
    }
    return value;
}

function centerMensaje(){
	
    var mensaje = document.getElementById('mensaje');
    mensaje.style.position = 'absolute';
    mensaje.style.display  = 'none';
}

function relocateMensaje() {
	
    if (mensaje_en_pantalla) {
        var root = (document.compatMode == "CSS1Compat" ? document.documentElement : document.body);
        var elem = new getObj("mensaje").obj;
        if(message_pos == null){
            message_pos = getAbsolutePos(elem);
        }
        elem.style.top = root.scrollTop + message_pos.y + "px";
    }
}
   
function checkColisionesMensaje() {
    if (mensaje_en_pantalla && !es_ie7) {
        var el = document.getElementById('mensaje');
        var p = getAbsolutePos(el);

        var EX1 = p.x;
        var EX2 = el.offsetWidth + EX1;
        var EY1 = p.y;
        var EY2 = el.offsetHeight + EY1;

        var tags = new Array("iframe", "select");

	
        for (var k = tags.length; k > 0; ) {
	    
            var ar = document.getElementsByTagName(tags[--k]);
            var cc = null;

	        for (var i = ar.length; i > 0;) {
                cc = ar[--i];

                p = getAbsolutePos(cc);
	
                var CX1 = p.x;
                var CX2 = cc.offsetWidth + CX1;
                var CY1 = p.y;
                var CY2 = cc.offsetHeight + CY1;

                if (   (el.style.display == "none")
                    || (CX1 > EX2) 
                    || (CX2 < EX1) 
                    || (CY1 > EY2) 
                    || (CY2 < EY1)) {
                    
                    if (!cc.__msh_save_visibility) {
                        cc.__msh_save_visibility = getVisib(cc);
                    }
                    cc.style.visibility = cc.__msh_save_visibility;
                } else {
                    if (!cc.__msh_save_visibility) {
                        cc.__msh_save_visibility = getVisib(cc);
                    }
                    cc.style.visibility = "hidden";
                }
            } 
        }
    }

}

window.onscroll = function(){
	
    if(es_ie && !es_ie7) {
        relocateMensaje();
        checkColisionesMensaje();
    }
}

// Inicio de función para esconder mensajes del sistema
// Esta función esconde los mensajes y errores que aparecen en la pantalla.
// El tipoMensaje es el id del div que contiene el mensaje a ocultar: 'mensaje' o 'error'
function escondeMensaje(tipoMensaje){

    new getObj(tipoMensaje).style.display = 'none';
    checkColisionesMensaje();
    mensaje_en_pantalla = false;
    activateFocus(); // Reactivamos el focus en caso de contar ya con otro previamente
}

function muestraMensaje(tipoMensaje) {
    new getObj(tipoMensaje).style.display ='block';
    mensaje_en_pantalla = true;
    checkColisionesMensaje();
}

function esconderMensajeAutomaticamente() {
    new getObj('liga_mensaje_pagina').obj.onfocus();
}
