//Archivo de funciones Ajax

//Function de parseo de Ajax sobre XML/XSL
//XML   indica el archivo que posee el xml o que lo genera
//XSL   indica el archivo que posee el codigo xsl para la transformación
//DONDE representa el objeto sobre el cual se va a insertar la información obtenida de la transformación
function parsearXSL(xml,xsl,donde) 
{
	var xmlDoc
	var xslDoc
	
	xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
	xmlDoc.async = false;
	
	xslDoc = new ActiveXObject('Microsoft.XMLDOM');
	xslDoc.async = false;
	
	xmlDoc.load(xml);
	xslDoc.load(xsl);
	
	donde.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);
}

//Función de creación del objeto Ajax, para la ejecución de proceso en el servidor mediante
//peticiones por parte del cliente.
function nuevoXMLHTTP()
{	
	
	var xmlhttp=false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");  		// Creación del objeto ajax para navegadores diferentes a Explorer
	} catch (e) {
		try {								// o bien
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");		// Creación del objet ajax para Explorer
		} catch (E) {
			xmlhttp = false;
		}
	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	
	return xmlhttp;
}


//**********************************************************************//
//*******************Funciones de Operación*****************************//
//**********************************************************************//

function trim(cadena)
{
	for(i=0; i<cadena.length; )
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(i+1, cadena.length);
		else
			break;
	}

	for(i=cadena.length-1; i>=0; i=cadena.length-1)
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(0,i);
		else
			break;
	}
	return cadena;
}

function resultadoContacto(resultado)
{
	document.formPesContacto.nombreCon.value = '';
	document.formPesContacto.emailCon.value  = '';
	document.formPesContacto.asuntoCon.value = '';
	
	valores = resultado.split('#');
	
	if (valores[0] == 'ok')
		f_respuesta_ok('contacto_popup',1,valores[1]);
	else
		f_respuesta_ko('contacto_popup',1,valores[1]);
	
}

function resultadoBoletin(resultado)
{
	document.formPesBoletin.nombreSus.value = '';
	document.formPesBoletin.emailSus.value  = '';
	
	valores = resultado.split('#');
	
	if (valores[0] == 'ok')
		f_respuesta_ok('boletin_popup',2,valores[1]);
	else
		f_respuesta_ko('boletin_popup',2,valores[1]);
	
}

//Función de ejecución de operaciones para la recogida de los valores por defecto y la aplicación 
//de la operación
//resultado: Se corresponde con una cadena que almacena el resultado devuelto por la petición ajax.
//operación: Inica la operación que se desea realiza
function ejecutarOperacion(resultado,operacion)
{
	
    switch (operacion)
	{
	    case 1:
	            resultadoContacto(resultado);
		        break;
		case 2:
				resultadoBoletin(resultado);
				break;
	}
}

//**********************************************************************//
//**********************************************************************//


//Funcion generica para enviar datos por ajax
//pagina    : corresponde a la página a la que se va llamar.
//metodo    : su valor puede ser 1 o 2 --> 1 representa a POST y 2 represeta a GET.
//parametros: contiene los parametros que se pasan por post, en caso de usar get contiene null.
//operacion : indica el tipo de operación a realizar, para la ejecución de los manejadores de salida.
function lanzarPagina(pagina,metodo,parametros,operacion)
{
	var navegador = false;
	var resultado = '';

    //Definimos el tipo de tranferencia comprobando el tipo de navegador a utilizar
    
    if (navigator.appName == 'Netscape')
        navegador = true;

	oAjax = nuevoXMLHTTP();
	//Lanzamos el ajax a la página indicada

	if (metodo == 1)
	{
		oAjax.open("POST",pagina,navegador);
		//Cabecera para que el navegador carge los parametros en el array de post del navegador
		oAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");		
	}
	else
		oAjax.open("GET",pagina,navegador);
	
	oAjax.onreadystatechange=function() 
	{
		if (oAjax.readyState==4) 
		{		
			//creamos un contador para matar el proceso en caso de que no responda el servidor.
			var requestTimer = setTimeout('expira()',100000);
			//Almacenamos la información de la salida de la página la que llama el objeto ajax
            ejecutarOperacion(oAjax.responseText,operacion);
			//finalizamos el contador de expiración de la petición
			clearTimeout(requestTimer);		
			//Si la salida es erronea
		}
	}
	oAjax.send(parametros);
	
	return resultado;
}


