var urlXml, idpadre, strIdNodo, id, inputNodeValue, strIdElement, nEsforzado;
idpadre="";
strIdNodo="raiz";
urlXml="doc_getAsociaciones";
function loadXml() {
	var res;
	var doc = document;
	var xmlNode = xmlisland.XMLDocument;
	
	if (urlXml=="doc_getAsociaciones") {
		res = xmlNode.transformNode( doc.all("xslarchivos").XMLDocument )

		doc.getElementById(strIdNodo).innerHTML = res;
		doc.getElementById(strIdNodo).style.display ="block"
		if (strIdNodo!="raiz") {
			doc.getElementById("img_"+strIdNodo).src = "img/directorio/directorio_abierto.gif";
		}
		doc_addListaAsociacionesAbiertas( strIdNodo.substring(5) );
	} else if (urlXml=="guardarCambiarNombre") {
		var nodo = xmlNode.documentElement;		
		if (nodo.getAttribute("valor")=="OK") {
			nuevoNombre = inputNodeValue;
		} else {
			alert('No es posible realizar el cambio.');
		}
		nodoenlace = getElement("enlacenombre_" + id);
		nodo = getElement("nombre_" + id);
		nodo.innerHTML = "";
		nodoenlace.innerHTML = nuevoNombre;	
	} else if (urlXml=="nuevoNodo") {		
		var nodo = xmlNode.documentElement;
		if (nodo.getAttribute("valor")=="OK") {
			//si no tiene hijos no tiene el div de asoc. luego expando el padre
			var idpulsado = getElement( "asoc_"+ visit.getVariable('id_pulsado') );
			if (idpulsado==null) {
				var idpulsado = getElement( "nombre_"+ visit.getVariable('id_pulsado') );
				var nodopadre = getNodoPadre( idpulsado, "DIV" );
				var idpadre = nodopadre.id.substring(5);
				doc_actualizarAsociacionesId( idpadre );
			} else {
				doc_actualizarAsociacionesId( visit.getVariable('id_pulsado') );
			}
		}
	} else if (urlXml=="eliminarNodo") {
		var nodo = xmlNode.documentElement;
		if (nodo.getAttribute("valor")=="OK") {
			var idpulsado = getElement( "nombre_"+ visit.getVariable('id_pulsado') );
			var nodopadre = getNodoPadre( idpulsado, "DIV" );
			var idpadre = nodopadre.id.substring(5);
			doc_actualizarAsociacionesId( idpadre );
		}
	} else if (urlXml=="doc_rec_getAsociaciones") {
		var nodo = xmlNode.documentElement;
		res = xmlNode.transformNode( doc.all("xslarchivos").XMLDocument )
		doc.getElementById(strIdNodo).innerHTML = res;
		doc.getElementById(strIdNodo).style.display ="block"
		if (strIdNodo!="raiz") {
			doc.getElementById("img_"+strIdNodo).src = "img/directorio/directorio_abierto.gif";
		}
		
		var nodes = xmlNode.selectNodes("//asociacion");
		var arbol_nodosAbiertos = visit.getVariable("arbol_asociacionesAbiertas");
		var i=0;
		for (i=0;i<nodes.length ;i++) {
			var nodo = nodes.item(i);        			
			var idnodo = nodo.getAttribute("id");
			var re = new RegExp(","+idnodo+"," );
            if (re.test( arbol_nodosAbiertos )) {
				doc_rec_getAsociaciones( ""+idnodo, "asoc_"+idnodo, doc, false);
			}
		}
	} else if (urlXml=="recargaUsuarios") {
			var dom = xmlNode;
			var f = document.formulario;
			var res="";
			res = res + "<OPTION VALUE=''>--- usuario sin asignar---</OPTION>\n";
			var nodes = dom.selectNodes("//usuario");			
			for (i=0;i<nodes.length ;i++) {
				var nodo = nodes.item(i);
				res = res + "<OPTION VALUE='"+nodo.getAttribute("id")+"'>"+nodo.getAttribute("id")+"|"+nodo.getAttribute("nombre")+"</OPTION>\n";
			}			
			f.idatendida.outerHTML = "<select class='inputclass' name='idatendida'>"+res+"</select>";
	}
}
	
	/*
	 * idpadre - id del nodo padre a consultar.
	 * strNodo- id del nodo en el cual vamos a reemplazar el contenido
	 */
	function doc_getAsociaciones(idpadre2, strIdNodo2, docSel) {
		var xmlNode, res;
		var doc;
		strIdNodo = strIdNodo2;
		idpadre = idpadre2;
		if (docSel==null) doc = document;
		else doc = docSel;
		//alert("doc_getArchivos('"+ strRuta + "', " + strIdNodo );
		if (doc.all[strIdNodo].innerHTML=="") {
			urlXml="doc_getAsociaciones";
			xmlNode = getXml("xml_asociaciones.asp?idpadre="+idpadre );
			/*res = xmlNode.transformNode( doc.all("xslarchivos").XMLDocument )

			doc.getElementById(strIdNodo).innerHTML = res;
			doc.getElementById(strIdNodo).style.display ="block"
			if (strIdNodo!="raiz") {
				doc.getElementById("img_"+strIdNodo).src = "img/directorio/directorio_abierto.gif";
			}
			doc_addListaAsociacionesAbiertas( idpadre );*/
		} else {
			doc.getElementById("img_"+strIdNodo).src = "img/directorio/directorio_cerrado.gif";
			doc.getElementById(strIdNodo).style.display ="none"
			if (strIdNodo!="raiz") {
				doc.getElementById(strIdNodo).innerHTML = "";
			}
			doc_delListaAsociacionesAbiertas ( idpadre );
		}
	}

    //Elimina este nodo de la lista de nodos que hay abiertos
    function doc_delListaAsociacionesAbiertas( strIdElement ) {
		var arbol_asociacionesAbiertas = visit.getVariable("arbol_asociacionesAbiertas");
	    arbol_asociacionesAbiertas = arbol_asociacionesAbiertas.replace( ","+strIdElement+",", "," );
		visit.setVariable( "arbol_asociacionesAbiertas", arbol_asociacionesAbiertas);
		debug("doc_delListaAsociacionesAbiertas: " +  strIdElement + " Queda como: "+arbol_asociacionesAbiertas);
    }

    //Aņade este nodo de la lista de nodos que hay abiertos
    function doc_addListaAsociacionesAbiertas( strIdElement ) {
		var arbol_asociacionesAbiertas = visit.getVariable("arbol_asociacionesAbiertas");
		if (arbol_asociacionesAbiertas==0) {
			arbol_asociacionesAbiertas = ",";
		}
		if (!perteneceValorLista(strIdElement, arbol_asociacionesAbiertas) ) {
			arbol_asociacionesAbiertas += strIdElement+",";
			visit.setVariable( "arbol_asociacionesAbiertas", arbol_asociacionesAbiertas);
			debug("doc_addListaAsociacionesAbiertas: " +  strIdElement + " Queda como: "+arbol_asociacionesAbiertas);
		}
    }

	function perteneceValorLista( valor, lista) {
		var res;
		res=true;
		if (lista.indexOf(","+valor+",")==-1) {
			res=false;
		}		
		return res;
	}

	/*
	 * idpadre - id del nodo padre a consultar.
	 * strNodo- id del nodo en el cual vamos a reemplazar el contenido
	 */
	function doc_rec_getAsociaciones( strIdElement2, strIdNodo2, docSel, nEsforzado2) {
		var xmlNode, res;
		var doc;
		strIdElement = strIdElement2;
		strIdNodo = strIdNodo2;
		nEsforzado = nEsforzado2;

		var url;
		if (nEsforzado) {
			url = "xml_asociaciones.asp?nodoFijado="+strIdElement;
		} else {
			url = "xml_asociaciones.asp?idpadre="+strIdElement;
		}
		urlXml="doc_rec_getAsociaciones";
		var doc = document;

		xmlNode = getXml( url );
	}

    //Cierra hijos de un determinado elemento y nodo
    function doc_actualizarAsociacionesTotal() {		
        var doc = visit.vSemLeft().document;
		doc.getElementById("raiz").innerHTML = "";
		doc_rec_getAsociaciones("","raiz", doc, true);
    }

	function doc_actualizarAsociacionesId(idpadre) {		
        var doc = document;		
		var esForzado=false;
		doc_rec_getAsociaciones(idpadre,"asoc_"+idpadre, doc, false);
	}

function getNodoPadre( nodoHijo, name ) {
	var res, marca, nivelBloque, nivelDivision;
	var nodo;
	
	res =null;
	nodo = nodoHijo;
	while ( (nodo.tagName!="BODY") && (res==null) ) {		
		if (nodo.tagName!=name) {
			nodo = nodo.parentElement;
		} else {
			res = nodo;
		}
	}	
	return res;
}

	function doc_actualizarAsociaciones() {
		
        var doc = document;
		doc.getElementById("raiz").innerHTML = "";
		var esForzado=false;
		if (visit.getVariable("asociacion_nodo_fijado")!=0) {
			esForzado=true;
		}
		doc_rec_getAsociaciones(visit.getVariable("asociacion_nodo_fijado"),"raiz", doc, esForzado);
	}


/*****************************************************
 *             Clase ClsVisitJS
 *    Abstrae el resto de objetos del sistema    
 ******************************************************/
function ClsVisitJS() {
    this.mensaje = "mensaje";
    this.m_arbolNavegacion = null;
    this.m_util = null;

    // Metodos de acceso
    this.setVariable = visitjs_setVariable;
    this.getVariable = visitjs_getVariable;    
}

var visit = top.visit;
if (visit==null) {
	top.visit = new ClsVisitJS();
	visit = top.visit;
}


//Este establecimiento de variable lo mete en el UNDO. (por el innerHTML)
function visitjs_setVariable(variable, valor) {
	var strEval, res;
	var cadena;
	strEval = "window.top."+variable;
	res = eval(strEval);
	if (res==valor) {

	} else {
			strEval = "window.top."+variable+"=valor;"//'"+valor+"';";
			eval(strEval);
	}		
}

function visitjs_getVariable(variable) {
	var strEval, res;
	strEval = "window.top."+variable;
	res = eval(strEval);
	if (res==undefined) res=0;
    return res;
}

