function GestorIconoAyuda(deContextoRaizEstatico, deLiteralMUI)
{
	// JMP
	//Nombre del contexto raiz de los recursos est?ticos para acceder a las imagenes
	this.deContextoRaizEstatico = deContextoRaizEstatico;
	//Texto de ayuda traducido
	this.deLiteralMUI = deLiteralMUI;
	
	//Atributos
	this.posicionX = 0;
	this.posicionY = 0;
	this.ventana = null;
	
	// JMP: Optimizacion codigo JS
	this.dePrefijoSpanAyudaCampo = 'spanAyudaCampo';
	this.dePrefijoSpanTextoAyudaCampo = 'spanTextoAyudaCampo';
	this.dePrefijoImagenAyuda = 'imagenAyuda';
	this.deFuncionCargarImagen = 'gestorIconoAyuda.cargarImagen';
	this.deFuncionAbrirAyudaCampo = 'gestorIconoAyuda.abrirVentanaAyudaCampo';

	//Metodos
	/**
	 * M?tod que crea una ventana de ayuda cuyo contenido es el titulo y mensaje recibido como par?metro 
	 * y cuyas dimensiones son las recibidas en caAncho y caAlto. Se instancia un objeto Window de una clase 
	 * Javascript externa 
	 */
	this.abrirVentana = function (deTitulo, deMensaje, caAncho, caAlto)
	{
		// En IE, al abrir una ventana de ayuda, se ejecuta el evento onbeforeunload, por lo
		// que pregunta si se desea abandonar la p?gina. Por eso, aqu? cancelamos dicho evento.
		if (document.all)
			window.document.body.onbeforeunload=null;
		
		
        //Incidencia 778725. Parece que este metodo no elimina correctamente la ventana quizas por duplicidad del id (titulo)
		//Como el requisito es tener una unica ventana, vamos a eliminarla mas adelante, en el metodo registrar del window.js
		//Windows.closeAll();
		
        deMensaje = deMensaje.replace(/<br>/ig, "<br/>");
        deMensaje = deMensaje + "<br/><br/>";

        this.ventana = new Window(deTitulo, {className: "dialog", title: deTitulo, width:caAncho, height:0, maxHeight:150});
	    this.ventana.setDestroyOnClose();
        this.ventana.setHTMLContent(deMensaje);
        this.ventana.getContent().style.fontSize = "0.71em";
        this.ventana.showCenter();

        this.posicionX = this.posicionX - caAncho - 15;
        this.ventana.setLocation(this.posicionY, this.posicionX);

        var identificador = this.ventana.getId();
        var identificadorCerrar = identificador + "_close";
        document.getElementById(identificadorCerrar).style.left = (caAncho - 20) + "px";

        this.ventana.setConstraint(false, {left:0, right:0});

        this.ventana.getSize();
        var valorAlto = this.ventana.height;
        var valorCorreccion = this.ventana.height * 0.71;
        this.ventana.setSize(caAncho, valorCorreccion);

        if (valorAlto < 150) {
        	this.ventana.getContent().setStyle({overflow: "visible"});
	    }
	}
	
	this.posicionarCursor = function (evento)
	{
		if (!document.all)
		{
			this.posicionY = evento.pageY;
			this.posicionX = evento.pageX;
		}
		else
		{
			var caDesplazamientoScrollVertical = 0;
			var caDesplazamientoScrollHorizontal = 0;
			
			//Obtenemos el desplazamiento de IE 6 o posteriores
			if (document.documentElement.scrollTop != null)
				caDesplazamientoScrollVertical = document.documentElement.scrollTop;
			if (document.documentElement.scrollLeft != null)
				caDesplazamientoScrollHorizontal = document.documentElement.scrollLeft;
				
			//Buscamos para versiones anteriores al IE6
			if ((document.body.scrollTop != null) && (document.body.scrollTop > 0) && (caDesplazamientoScrollVertical == 0))
				caDesplazamientoScrollVertical = document.body.scrollTop;

			if ((document.body.scrollLeft != null) && (document.body.scrollLeft > 0) && (caDesplazamientoScrollHorizontal == 0))
				caDesplazamientoScrollHorizontal = document.body.scrollLeft;
				 
				
			this.posicionY = evento.clientY + caDesplazamientoScrollVertical;
			this.posicionX = evento.clientX + caDesplazamientoScrollHorizontal;
		}
	}

	/**
	 * Establece en el atributo src de un elemento 'img' que se identifica por 'idImagen', la ruta del fichero imagen
	 */
	this.cargarImagen = function (deRutaImagen, idImagen)
	{
		var imagen = document.getElementById(idImagen);
		imagen.src = deRutaImagen;
	}

	// JMP: Eliminar codigo repetitivo
	this.abrirVentanaAyudaCampo = function (evento, deTitulo, texto)
	{
		gestorIconoAyuda.posicionarCursor(evento);
		gestorIconoAyuda.abrirVentana(deTitulo, texto, '300', '150');
		return false;
	}
	
	this.crearBotonJS = function (NumeroSecuencia, SufijoActual, DeLiteral)
	{
		var coIdentificador = this.dePrefijoSpanAyudaCampo + NumeroSecuencia;
		var deLiteralMUIAyudaCampo = document.getElementById(this.dePrefijoSpanTextoAyudaCampo + NumeroSecuencia).innerHTML;
		
		
		var teHTML = '<a href="javascript:void(0);" class="flotadoIzquierda" title="' + this.deLiteralMUI + '" ';
		teHTML = teHTML + 'onmouseover="' + this.deFuncionCargarImagen + '(\'' + this.deContextoRaizEstatico + '/img/botonInterrogacionActivo.gif\',\'' + this.dePrefijoImagenAyuda + NumeroSecuencia + SufijoActual + '\');" ';
		teHTML = teHTML + 'onmouseout="' + this.deFuncionCargarImagen + '(\'' + this.deContextoRaizEstatico + '/img/botonInterrogacion.gif\',\'' + this.dePrefijoImagenAyuda + NumeroSecuencia + SufijoActual + '\');" ';
		teHTML = teHTML + 'onclick="' + this.deFuncionAbrirAyudaCampo + '(event,\'' + DeLiteral + '\',\'' + deLiteralMUIAyudaCampo + '\');"> ';
		teHTML = teHTML + '<img src="' + this.deContextoRaizEstatico + '/img/botonInterrogacion.gif" alt="' + this.deLiteralMUI + '" title="' + this.deLiteralMUI + '" name="' + NumeroSecuencia + '" id="' + this.dePrefijoImagenAyuda + NumeroSecuencia + SufijoActual + '" /></a>';
		
		document.getElementById(coIdentificador).style.width='5%';
		document.getElementById(coIdentificador).innerHTML = teHTML;
		document.getElementById(coIdentificador).className = 'auto';
	}
}

