
	/**
	 * @author Miki
	 * @name AjaxPeticiones
	 * @package ajax
	 * @version 1.0 [20/11/2008]
	 * @description: Contiene funciones de carga (para Ajax)
	 */


	// INICIALIZAMOS EL XHCONN();
	
	// CONEXIONES QUE TENEMOS
	
	var myConn = new XHConn();
	
	// VARIABLE QUE COMUNICA SI ESTA OCUPADO XHCONN SIRVIENDO PETICIONES
	
	var ocupado = false;
	var tiposession = null;
	
	// VARIABLES GLOBALES DE RESPUESTA DEL XML
	
	var xmlaux = null;
	
	// COMPROBAMOS QUE SE HAYA CREADO MYCONN
	
	if (!myConn) alert("XMLHTTP no disponible: Prueba con otro explorador");
 
 	// DECLARAMOS VARIABLES PARA ALMACENAR EL CONTENIDO
	// Y ACTUALIZARLO POSTERIORMENTE SECUENCIALMENTE
	
	var contenidoDiv1 = "";
	var contenidoDiv1Enabled = false;
	
 
 
 	/******************************************
	 FUNCIONES B�SICAS DE DISPONIBILIDAD / CARGA
	******************************************/
 
 	function dejarDisponible ()
	{
		ocupado = false;
	}
	
	function estaDisponible ()
	{
		if(ocupado == false)
		{
			ocupado = true;
			return true;
		}
		else
		{
			return false;	
		}
	}
 
 
	/******************************************
	 FUNCIONES PARA TRATAR LA INFO QUE RECIBIMOS
	******************************************/

	/*
		tratarTextoAjax realiza la operaci�n inversa del "urlencode" que ejecutamos en PHP
		para introducir el contenido dentro del XML. Con esta funci�n volvemos a recibir
		el contenido en un formato legible para el usuario.
	*/

	function tratarTextoAjax ( texto )
	{
		texto = urldecode ( texto );
	
		return texto;
	}
	
	function tratarTextoAjaxISO ( texto )
	{
		texto = unescape ( texto );	
		texto = texto.replace(/\+/gi," ");
	
		return texto;
	}
	
	/*
		Funci�n que parsea el XML que obtenemos por respuesta
		Devuelve false si el XML indica que se ha producido error, y en caso contrario
		 devuelve el contenido del XML
		 
		El formato del XML es del tipo:
		
		 <?xml version='1.0' encoding='utf-8'?>
		 <respuesta>
		  <contenido>
		   <contenido_num0>
		    <location>DIV_ID</location>
			<code>CODE</code>
		   </contenido_num0>
		   
		   ...
		   
		  </contenido>
		  <auxiliar>0</auxiliar> // Variable auxiliar
		  <valido>OK</valido>
		 </respuesta>
	*/

    function obtenerContenidoTXT ( oXMLResp )
    {
        var respuestaTXT = oXMLResp.responseText;

        return respuestaTXT;
    }
	
	function tratarContentidoXML ( oXMLResp )
	{
        if ( oXMLResp.responseXML )
        {
            var respuestaXML = oXMLResp.responseXML.documentElement;
			var contActual;
			var location;
			var code;
			var codechilds;

            // Obtenemos el contenido del primer NODO con tag VALIDO
            var valido = respuestaXML.getElementsByTagName("valido")[0].firstChild.nodeValue;

            // Si es correcto, analizamos el XML
            if ( valido == "OK" )
            {
                // Obtenemos el Contenido para comprobar si existe
                if ( respuestaXML.getElementsByTagName("contenido")[0] != null )
                {
                    // Obtenemos los hijos de CONTENIDO
                    var arrayCont	= respuestaXML.getElementsByTagName("contenido")[0].childNodes;

                    // Recorremos todos los hijos
                    for ( var actual = 0 ; actual < arrayCont.length ; actual++ )
                    {
                        // Objetemos los hijos de CONTENIDO
                        contActual	= arrayCont[actual].childNodes;

                        location	= "";
                        code		= "";

                        // Recorremos los hijos de CONTENIDO
                        for ( var actualParam = 0 ; actualParam < contActual.length ; actualParam++ )
                        {
                            // Obtenemos el Location y Code de cada hijo de CONTENIDO
                            if ( contActual[actualParam].nodeName  == "location" )	location = contActual[actualParam].firstChild.nodeValue;
                            if ( contActual[actualParam].nodeName  == "code" )
                            {
                                // El code esta disperso en varios hijos (seguramente); Así que nos encargamos de concatenarlos.
                                codechilds = contActual[actualParam].childNodes;

                                for ( var actualChild = 0 ; actualChild < codechilds.length ; actualChild++ )
                                {
                                    // El contenido es la concatenaci�n de los hijos del NODO con tag "code"
                                    code += codechilds[actualChild].nodeValue;
                                }
                            }
                        }
						
                        // Actualizamos el contenido (Si es correcto)
                        if ( ( location != "" ) && ( code != "" ) )
                        {
							if (document.getElementById(location) == null) 
							{					
								alert ( "FreeMrk ERROR: \"" + location + "\" no es una localización correcta." );
							}
							else 
							{
								document.getElementById(location).innerHTML = tratarTextoAjax(code);
							}
                        }
                    }
                }

                // Obtenemos el Mensaje para comprobar si existe
                if ( respuestaXML.getElementsByTagName("mensaje")[0] != null )
                {
                    // Obtenemos los hijos de Mensaje
                    var hijosmensaje = respuestaXML.getElementsByTagName("mensaje")[0].childNodes;
                    var mensajeTexto = "";

                    // Obtenemos el mensaje (concatenando el valor de sus hijos)
                    for ( var actualMensaje = 0 ; actualMensaje < hijosmensaje.length ; actualMensaje++ )
                    {
                        // El contenido es la concatenaci�n de los hijos del NODO
                        mensajeTexto = mensajeTexto + hijosmensaje[actualMensaje].nodeValue;
                    }

                    // Llamamos a la función que muestra el Mensaje al Administrador
                    mostrarMensajeAdministradorCall ( tratarTextoAjax ( mensajeTexto ) );
                }

                // Obtenemos la Redirección para comprobar si existe
                if ( respuestaXML.getElementsByTagName("redirect")[0] != null )
                {
                    // Obtenemos los hijos del Redirect
                    var hijosredirect = respuestaXML.getElementsByTagName("redirect")[0].childNodes;
                    var urlRedirect = "";

                    // Obtenemos la URL (concatenando el valor de sus hijos)
                    for ( var actualRedirect = 0 ; actualRedirect < hijosredirect.length ; actualRedirect++ )
                    {
                        // El contenido es la concatenaci�n de los hijos del NODO
                        urlRedirect = urlRedirect + hijosredirect[actualRedirect].nodeValue;
                    }

                    // Llamamos a la función que redirije a otra URL
                    redireccionarToURL ( tratarTextoAjax ( urlRedirect ) );
                }

				// Obtenemos el contenido del NODO auxiliar
				if ( respuestaXML.getElementsByTagName("auxiliar")[0] != null ) 
				{
					// Obtenemos los hijos del Redirect
                    var hijosrauxiliar = respuestaXML.getElementsByTagName("auxiliar")[0].childNodes;
					var contenidoAux = "";

                    // Obtenemos la URL (concatenando el valor de sus hijos)
                    for ( var actualAux = 0 ; actualAux < hijosrauxiliar.length ; actualAux++ )
                    {
                        // El contenido es la concatenaci�n de los hijos del NODO
                        contenidoAux = contenidoAux + hijosrauxiliar[actualAux].nodeValue;
                    }
					
					xmlaux = tratarTextoAjax ( contenidoAux );
				}

                return true;
            }
            else
            {
				// Obtenemos el Mensaje para comprobar si existe
                if ( respuestaXML.getElementsByTagName("mensaje")[0] != null )
                {
                    // Obtenemos los hijos de Mensaje
                    var hijosmensaje = respuestaXML.getElementsByTagName("mensaje")[0].childNodes;
                    var mensajeTexto = "";

                    // Obtenemos el mensaje (concatenando el valor de sus hijos)
                    for ( var actualMensaje = 0 ; actualMensaje < hijosmensaje.length ; actualMensaje++ )
                    {
                        // El contenido es la concatenaci�n de los hijos del NODO
                        mensajeTexto = mensajeTexto + hijosmensaje[actualMensaje].nodeValue;
                    }

                    // Llamamos a la función que muestra el Mensaje al Administrador
                    mostrarMensajeAdministradorCall ( tratarTextoAjax ( mensajeTexto ) );
                }
				
                // Llamamos a la función que muestra el Mensaje de Error
                //mostrarMensajeAdministradorCall ( "Se ha producido un error durante la operación" );

                return false;
            }
        }
        else
        {
            //mostrarMensajeAdministradorCall ( "No se ha recibido la respuesta correctamente" );

            return false;
        }
	}
	
	function mostrarMensajeAdministradorCall ( mensaje )
	{
		switch ( tiposession )
		{
			case "admin":
				mostrarMensajeAlerta ( mensaje ); break;
				
			case "user":
				mostrarAlertMensaje ( mensaje ); break;
		}
	}
	
	function redireccionarToURL ( url )
	{
		window.location = url;
	}




    
 
	

