	// Declaracion de variables, si no estan declaradas ya
	if (typeof(gg_VariablesDeclaradas) == 'undefined') {
		var gg_VariablesDeclaradas = true;
		
		// Variables utilizadas por el componente, las claves seran el IdTabComp por si hay m?s de uno en pantalla
		var gg_AltoVisor 									= new Array();
		var gg_FoldersParametrosEstaticos 			= new Array();
		var gg_CarpetasFinalesParametrosEstaticos = new Array();
		var gg_NodoActivo 								= new Array();
		var gg_CarpetaActiva 							= new Array();
		var gg_IdentificadorGed 						= new Array();
		var gg_CarpetaInicial 							= new Array();
		var gg_ConfiguracionCambiada 					= new Array();
		var gg_HiloAriadna 								= new Array();
		var gg_Nivel 										= new Array();
		var gg_TipoCarpetaFinalDespliegue 			= new Array();
		var gg_UbicacionCarpeta 						= new Array();
		var gg_nPagActual 								= new Array();
		var gg_verPrimerNivel 							= new Array();
		var gg_peticionAjax 								= new Array();
		
		var CARPETA_NO_FINAL = 0;
		var CARPETA_FINAL    = 1;
	
		var CARPETA_IZQUIERDA = 0;
		var CARPETA_DERECHA   = 1;
	}

	/**
	 * Inicializacion del componente
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 */
	function NP_g_ged_Init(anIdTabComp) {
		// Existe configuracion ?
		if (gg_IdentificadorGed[anIdTabComp] == '') {
			// no config
			return;
		}

		if (gg_HiloAriadna[anIdTabComp] != "") {
			setHiloAriadna(gg_HiloAriadna[anIdTabComp].substring(gg_HiloAriadna[anIdTabComp].substring(1).indexOf("/")+2));
		}

		// Este id se actualizara cada vez que se recargue compedit por haber
		// sido editado en el administrador con la carpeta inicial
		var gNuevaCarpetaInicial = document.getElementById('CarpetaInicial'+anIdTabComp).innerHTML;
		
		if (gNuevaCarpetaInicial != gg_CarpetaInicial[anIdTabComp]) {
			// Actualizamos la carpeta inicial con la nueva recibida
			gg_CarpetaInicial[anIdTabComp] = gNuevaCarpetaInicial;
		}
	
		// Mostrar el arbol de carpetas
		g_GEDDesplegarCarpeta(gNuevaCarpetaInicial, anIdTabComp, "", 0, CARPETA_NO_FINAL);
		
	}

	/**
	 * Funcion que se activa pulsar sobre una carpeta raiz
	 * @param idParent Carpeta padre
	 * @param obj Objeto sobre el que realizar la descarga del buffer
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 */
	function g_GEDDesplegarRaiz(aCarpetaPadre, anIdTabComp) {
		var vNodoActivo = document.getElementById('CargandoRaiz' + gg_IdentificadorGed[anIdTabComp]);
		
		if (vNodoActivo != null) {
			if (vNodoActivo.style.display == 'block') {
				vNodoActivo.style.display = 'none';
			} else {
				// Y se monta la URL
				var sURLCarpetas = gg_PathComponente + "folders.jsp?IdFolderParent=" + aCarpetaPadre + "&nivel=0&verPrimerNivel=ON" + gg_FoldersParametrosEstaticos[anIdTabComp];
		
				// Llamada de carga
				if (testSession() == true) {
					_ajax.cargarUrl(new AjaxPeticion(sURLCarpetas, 'CargandoRaiz' + gg_IdentificadorGed[anIdTabComp], "g_GEDDesplegarRaizTerminado(" + anIdTabComp + ")", true, "GET", ""), _ajax.PRIORIDAD_NORMAL);
				}
			}
		}
	}	

	/**
	 * Cuando el iframe del arbol de carpetas se encuentra completamente
	 * cargado se llama a esta funcion
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 */
	function g_GEDDesplegarRaizTerminado(anIdTabComp) {
		var vNodoActivo = document.getElementById('CargandoRaiz' + gg_IdentificadorGed[anIdTabComp]);
		vNodoActivo.style.display = 'block';
		
		// Si hay datos de despliegue del arbol, se aplican
		var gArbolDeDespliegue = eval('gg_ArbolDeDespliegue'+anIdTabComp);
		if (gArbolDeDespliegue.length > 0) {
			var sUbicacionCarpeta = CARPETA_IZQUIERDA;
			if (gArbolDeDespliegue.length == 1) {
				sUbicacionCarpeta = gg_UbicacionCarpeta[anIdTabComp];
			}
			
			if (sUbicacionCarpeta == CARPETA_IZQUIERDA) {
				var sSiguienteCarpeta = gArbolDeDespliegue.pop();
				g_GEDDesplegarCarpeta(sSiguienteCarpeta, anIdTabComp, "", gg_Nivel[anIdTabComp] + 1, gg_TipoCarpetaFinalDespliegue[anIdTabComp]);
			} else {
				var sSiguienteCarpeta = gArbolDeDespliegue.pop();

				// Para la misma carpeta padre, mostrar las carpetas finales
				// en el visor asociado
				g_GEDMostrarCarpetasFinales(gg_NodoActivo[anIdTabComp], sSiguienteCarpeta, anIdTabComp, 1);
			}
		}
	}

	/**
	 * Funcion que se activa pulsar sobre una carpeta del arbol de carpetas
	 * @param idParent Carpeta padre
	 * @param obj Objeto sobre el que realizar la descarga del buffer
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 */
	function g_GEDDesplegarCarpeta(aCarpetaPadre, anIdTabComp, anUrlExtra, aNivelActual, aTipoCarpeta) {
		var aDiv = document.getElementById('Cargando'+aCarpetaPadre);
		
		// Actualizamos el hilo de Ariadna
		var vRuta = document.getElementById('Ruta'+aCarpetaPadre);	
		if (vRuta != null) {
			setHiloAriadna(vRuta.innerHTML.substring(vRuta.innerHTML.substring(1).indexOf("/")+2));
		}

		// Repliegue de carpetas que no estan en la rama del arbol seleccionada
		gg_Nivel[anIdTabComp] = aNivelActual;
		
		var gCarpetasNivel = eval('gg_CarpetasNivel'+anIdTabComp);
		if (typeof(gCarpetasNivel[aNivelActual]) != 'undefined' && gCarpetasNivel[aNivelActual] != -1) {
			gCarpetasNivel[aNivelActual].style.display = 'none';
			
			// Repliegue de la carpeta actual
			if (gCarpetasNivel[aNivelActual] == aDiv) {
				gCarpetasNivel[aNivelActual] = -1;
				return;
			}
		}
		
		gCarpetasNivel[aNivelActual] = aDiv;
				
		// se marca la nueva carpeta activa
		gg_NodoActivo[anIdTabComp] = aCarpetaPadre;

		// Y se monta la URL
		var sURLCarpetas = gg_PathComponente + "folders.jsp" 
			+ "?IdFolderParent=" + aCarpetaPadre 
			+ "&nivel=" + aNivelActual
			+ "&verPrimerNivel=" + gg_verPrimerNivel[anIdTabComp]
			+ gg_FoldersParametrosEstaticos[anIdTabComp]
			+ anUrlExtra;

		// Llamada de carga
		if (testSession() == true) {
			_ajax.cargarUrl(new AjaxPeticion(sURLCarpetas, 'Cargando' + aCarpetaPadre, "g_GEDDesplegarCarpetaTerminado(" + anIdTabComp + ")", true, "GET", ""), _ajax.PRIORIDAD_NORMAL);
	
			var gArbolDeDespliegue = eval('gg_ArbolDeDespliegue'+anIdTabComp);
			var aCarpeta = document.getElementById('ArbolCarpetas'+aCarpetaPadre);
						
			// Si el despliegue no es desde la ventana de administracion y no hay mas datos de despliegue
			if (anIdTabComp != 0 && gArbolDeDespliegue.length == 0 && aNivelActual != 0) {	
				var vUrl = aCarpeta.getAttribute("url");
				// Si la carpeta es de tipo enlace, cargamos el enlace
				if (vUrl != null && vUrl != "") {		
					g_CargarEnlace(vUrl, anIdTabComp);
				} else {
					// Para la misma carpeta padre, mostrar las carpetas finales
					// en el visor asociado
					g_GEDMostrarCarpetasFinales(aCarpetaPadre, aCarpetaPadre, anIdTabComp, 1);
				}
			}
		}
	}	

	/**
	 * Cuando el iframe del arbol de carpetas se encuentra completamente
	 * cargado se llama a esta funcion
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 */
	function g_GEDDesplegarCarpetaTerminado(anIdTabComp) {
		var vNodoActivo = document.getElementById('Cargando' + gg_NodoActivo[anIdTabComp]);
		
		if (vNodoActivo != null) {
			if (vNodoActivo.innerHTML.indexOf("ArbolCarpetas") > -1) {
				vNodoActivo.style.display = 'block';
			} else {
				vNodoActivo.style.display = 'none';
			}
			
			var gArbolDeDespliegue = eval('gg_ArbolDeDespliegue'+anIdTabComp);
					
			// Si hay datos de despliegue del arbol, se aplican
			if (gArbolDeDespliegue.length > 0) {
				var vRaiz = document.getElementById('CargandoRaiz' + gg_IdentificadorGed[anIdTabComp]);
				if (vRaiz != null && vRaiz.style.display == "none") {
					g_GEDDesplegarRaiz(gg_CarpetaInicial[anIdTabComp], anIdTabComp);
				} else {
					var sUbicacionCarpeta = CARPETA_IZQUIERDA;
					if (gArbolDeDespliegue.length == 1) {
						sUbicacionCarpeta = gg_UbicacionCarpeta[anIdTabComp];
					}
					
					if (sUbicacionCarpeta == CARPETA_IZQUIERDA) {
						var sSiguienteCarpeta = gArbolDeDespliegue.pop();
						eval(document.getElementById('ArbolCarpetas'+sSiguienteCarpeta).href.substr(11));
					} else {
						var sSiguienteCarpeta = gArbolDeDespliegue.pop();
	
						// Para la misma carpeta padre, mostrar las carpetas finales
						// en el visor asociado
						g_GEDMostrarCarpetasFinales(gg_NodoActivo[anIdTabComp], sSiguienteCarpeta, anIdTabComp, 1);
					}
				}
			}
		}
	}

	/**
	 * Carga el enlace en el visor
	 * @param url El visor
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 */
	function g_CargarEnlace(aUrl, anIdTabComp) {
		if (aUrl.indexOf("javascript:") > -1) {
			// Enlace con c?digo JavaScript
			eval(aUrl.substring(11, aUrl.length));
			
		} else if (aUrl.indexOf("iframe:") > -1) {
			// Enlace a mostrar dentro de un iframe		
			vvIncrustarUrlEnVisor(aUrl.substring(7, aUrl.length), gg_AltoVisor[anIdTabComp], "698px", anIdTabComp);
		} else {
			// Enlace incrustado
			vvCargarUrlEnVisor(aUrl, anIdTabComp);
		}
	}

	/**
	 * Carga el enlace en el visor
	 * @param url El visor
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 */
	function g_CargarEnlaceEnAreaDocumentos(aUrl, anIdTabComp) {
		if (aUrl.indexOf("javascript:") > -1) {
			// Enlace con c?digo JavaScript
			eval(aUrl.substring(11, aUrl.length));
			
		} else if (aUrl.indexOf("iframe:") > -1) {
			// Enlace a mostrar dentro de un iframe
			var vIFrame = document.getElementById("documentos_" + anIdTabComp);
			if (vIFrame != null) {
				vIFrame.innerHTML = "<iframe src='" + aUrl.substring(7, aUrl.length) + "' frameborder='0' width='698px' height='" + gg_AltoVisor[anIdTabComp] + "'></iframe>";
			}
		} else {
			// Enlace incrustado
			if (testSession() == true) {
				_ajax.cargarUrl(new AjaxPeticion(aUrl, 'documentos_' + anIdTabComp, null, true, "GET", ""), _ajax.PRIORIDAD_NORMAL);
			}
		}
	}

	/**
	 * Muestra las carpetas finales en la parte superior del visor
	 * @param idParent Carpeta padre
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 */
	function g_GEDMostrarCarpetasFinales(aCarpetaPadre, aCarpetaDestino, anIdTabComp, aNumPag) {
		var aCarpeta = document.getElementById('CarpetaFinal' + aCarpetaDestino);

		var vUrl = null;		
		if (aCarpeta != null) {
			var vUrl = aCarpeta.getAttribute("url");
		}
		
		// Si la carpeta es de tipo enlace, cargamos el enlace
		if (vUrl != null && vUrl != "") {		
			g_CargarEnlaceEnAreaDocumentos(vUrl, anIdTabComp);
		} else {
			// Y se monta la URL
			var sURLCarpetas = gg_PathComponente + "documentos.jsp"
				+ "?IdFolderParent=" + aCarpetaPadre 
				+ "&IdFolder=" + aCarpetaDestino
				+ "&NumPagina=" + aNumPag
				+ gg_CarpetasFinalesParametrosEstaticos[anIdTabComp];

			// Llamada de carga
			if (testSession() == true) {
				gg_peticionAjax[anIdTabComp] = new AjaxPeticion(sURLCarpetas, "", "g_GEDMostrarCarpetasFinalesTerminado(" + anIdTabComp + ")", true, "GET", "");
				_ajax.cargarUrl(gg_peticionAjax[anIdTabComp], _ajax.PRIORIDAD_NORMAL);
			}
		}
	}

	/**
	 * Cuando el iframe del carpetas finales se encuentra completamente
	 * cargado se llama a esta funcion
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 */
	function g_GEDMostrarCarpetasFinalesTerminado(anIdTabComp) {
		// Actualizamos la p?gina actual, la primera vez ser? la 1
		gg_nPagActual[anIdTabComp] = 1;

		// Si no estamos en columnas y pesta?as, aplicamos el resultado a toda la pantalla
		if (anIdTabComp == 0) {
			document.body.innerHTML = gg_peticionAjax[anIdTabComp].resultado;
		} else {
			// Si el resultado tiene contenido
			if (gg_peticionAjax[anIdTabComp].resultado.indexOf("TablaCarpeta") >= 0
			||  gg_peticionAjax[anIdTabComp].resultado.indexOf("documentosGestorTr") >= 0
			||  vvEsVisorVisible(anIdTabComp)) {
			
				if (gg_peticionAjax[anIdTabComp].resultado.indexOf("TablaCarpeta") >= 0
				||  gg_peticionAjax[anIdTabComp].resultado.indexOf("documentosGestorTr") >= 0) {
					document.body.scrollTop = 1;
				}
			
				vvIncrustarTextoEnVisor(gg_peticionAjax[anIdTabComp].resultado, anIdTabComp);
	
				// Actualizamos el hilo de Ariadna
				var vRuta = document.getElementById('RutaCarpetaActiva');	
				if (vRuta != null) {
					setHiloAriadna(vRuta.innerHTML.substring(vRuta.innerHTML.substring(1).indexOf("/")+2));
				}
			}
		}
	}

	/**
	 * Cuando se pulse sobre un documento, se ejecutara esta funcion para abrirlo
	 * @param anIdTabComp Identificador del componente (Comp) en la pestanya (Tab)
	 * @param aIdDocumento Identificador interno del documento
	 * @param aVersionDocumento Versi?n interna del documento (intversion)
	 * @param aTipoDocumento Tipo de documento a abrir: documento o art?culo
	 */
	function g_GEDAbrirDocumento(anIdTabComp, aIdDocumento, aVersionDocumento, aTipoDocumento)
	{
		if (testSession() == true) {
			var sUrl = new String();
				
			if (aTipoDocumento == 'com.mediapps.netportal.components.ged.newsDocument.NewsDocument') {
				sUrl = gg_PathComponente + "tools/dlg/dlg_opennewsDocument.jsp?IdTab=" + gg_IdentificadorTab;
			} else {
				sUrl = gg_PathComponente + "tools/dlg/dlg_opendocument.jsp?IdTab=" + gg_IdentificadorTab;
			}
	
			sUrl += "&IdTabComp=" + anIdTabComp 
			     +  "&IdDoc=" + aIdDocumento 
			     +  "&Download=False" 
			     +  "&IdGed=" + gg_IdentificadorGed[anIdTabComp] 
			     +  "&IntVersion=" + aVersionDocumento
			     +  "&origen=g_ged";
	
			if (aTipoDocumento == 'com.mediapps.netportal.components.ged.newsDocument.NewsDocument') {
				var sPropiedades = "width=800,height=600,left=" + (screen.width-800)/2
				        + ",top=" + (screen.height-600)/2
				        + ",resizable=yes,scrollbars=yes,menubar=no,status=no,toolbar=no";
			
				// Abrimos el documento
				window.open(sUrl,"GEDWindowOpenDocument",sPropiedades);
			} else {
				window.location.href=sUrl;
			}
		}
	}
	
	
	function cambiaPagina(aNumPagina, anIdTabComp) {
		var pagAnterior = document.getElementById("pag" + gg_nPagActual[anIdTabComp] + "_" + anIdTabComp);
		pagAnterior.style.display = "none";
		pagAnterior.style.visibility = "hidden";

		gg_nPagActual[anIdTabComp] = aNumPagina;
		var pagActual = document.getElementById("pag" + gg_nPagActual[anIdTabComp] + "_" + anIdTabComp);
		pagActual.style.display = "block";
		pagActual.style.visibility = "visible";
	}

	function g_gedheadLineViewAll(anIdTabComp) {
		var vUrlViewAllArticles = eval('vUrlViewAllArticles' + anIdTabComp);
		var sWindowOptions = eval('windowOptions'+anIdTabComp);
		
		// Abrimos el documento
		if (testSession() == true) {
			window.open(vUrlViewAllArticles, "articulos", sWindowOptions);
		}
	}