window.onerror = function () {return true;}

var req;
var _globalMethod;
var _globalIntersBan = false;

/**
* Gestionar el mensaje de carga de datos con httpxmlrequest
*
*/
function handLoadingInf() {

	return;

	var varopciones = top.window.location.search.match(/opciones=([0-9]+_[0-9])/);

	//Capturar las opciones
	if (varopciones[1] == '2_1')
	{
		//Capturar la resolución de pantalla y centrar
		var anchoPant = screen.width;
		var altoPant = screen.height;
		var cargCap = document.getElementById('loadingData');

		if (arguments.length == 0) //Solo mostrar
		{
  		cargCap.style.display = 'none';
  		cargCap.style.left = anchoPant/2+'px';
  		cargCap.style.top = altoPant/2+parseInt(window.document.body.scrollTop)-40+'px';
  		cargCap.style.display = 'block';
		}
		else
		{//Se ocultan los datos
			cargCap.style.display = 'none';
		}
	}
}

/**
* Llamada al procedimiento remoto vía POST
*
* @param url string Dirección web donde se trata la página
* @param metodo string Nombre del métdo que va a tratar la respuesta del servidor
* @param array variables Matriz asociativa con las variables que se van a enviar
*/
function loadXMLDocPost(url, metodo, variables) {

		//handLoadingInf()

		_globalMethod = metodo;
    // branch for native XMLHttpRequest object
		var txt = makePostVars (variables);
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
				//req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				//Crear Capa de carga
				setLoadingPage('start');

				//Monitorizar la carga de la página
				//req.onprogress = showAlertsLoading;

				req.open("POST", url, true, null, null);
				req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        req.send(txt);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
						//Crear Capa de carga
						setLoadingPage('start');
            req.onreadystatechange = processReqChange;
						req.open("POST", url, false, null, null);
						req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
						req.setRequestHeader("Location:",url);
		        req.send(txt);
        }
    }
}

/**
* Elaborar la cadena de variables que se enciarán vía POST
* @param array lstVars Lista de variables dispuestas en forma asociativa (nombrecampo = valor)
*/
function makePostVars (lstVars) {

	var txt = "?1";
	for(var i in lstVars)
	{
		txt = txt + '&' + i + '=' + lstVars[i];
	}

	return txt;

}


//Llamar a la página remota vía método GET
function loadXMLDoc(url, metodo) {

		//handLoadingInf();

		_globalMethod = metodo;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
				//Crear Capa de carga
				setLoadingPage('start');

        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
						//Crear Capa de carga
						setLoadingPage('start');
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }

}

/**
* Ocultar mostrar los selects por el bug de explorer
*/
function showSetSelect(accion) {

    var elementos = document.getElementsByTagName('SELECT');
    for (var c = 0; c < elementos.length; c++)
    {
    	document.getElementsByTagName('SELECT')[c].style.visibility = accion;
    }

}


/**
* Definir la capa de mensaje de carga de una página
*
*/
function setLoadingPage (accion) {


	if (accion == 'start')
	{
	 	var anchoPant = screen.width;

		showSetSelect('hidden');

    var newDiv = document.createElement("DIV");
    newDiv.id = 'lyCargando';
    var bodyObj = document.getElementsByTagName("body")[0];
    bodyObj.appendChild(newDiv);
		document.getElementById('lyCargando').style.zIndex = '30';
    document.getElementById('lyCargando').style.position = 'absolute';
  	document.getElementById('lyCargando').style.backgroundColor = '#FFFFFF';
  	document.getElementById('lyCargando').style.border = '1px solid #000';
  	document.getElementById('lyCargando').style.paddingTop = '10px';
  	document.getElementById('lyCargando').className = 'error';
  	document.getElementById('lyCargando').innerHTML = '<table border="0" cellpadding="0" cellspacing="0" width="190" height="55"><tr><td valign="middle" style="color:#606060"><img src="/images/bigrotation2.gif" align="middle" hspace="10" border="0"> Cargando datos ...</td></tr></table>';

		var scrollMas = document.layers ? window.pageYOffset : document.body.scrollTop;

    document.getElementById('lyCargando').style.zIndex = '20';
    document.getElementById('lyCargando').style.top = 300+scrollMas+'px';
    document.getElementById('lyCargando').style.left = (anchoPant-300)/2+'px';
    document.getElementById('lyCargando').style.display = 'block';
	}
	else
	{
			showSetSelect('visible');
			document.getElementById('lyCargando').style.display = 'none';
	}

	return;

}

/**
* Obtiene el contenido de un elemento de XML devuelto por request
*
*/
function getElementTextNS(prefix, local, parentElem, index) {
    var result = "";
    if (prefix && isIE) {
        // IE/Windows way of handling namespaces
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    } else {
        // the namespace versions of this method
        // (getElementsByTagNameNS()) operate
        // differently in Safari and Mozilla, but both
        // return value with just local name, provided
        // there aren't conflicts with non-namespace element
        // names
        result = parentElem.getElementsByTagName(local)[index];
    }
    if (result) {
        // get text, accounting for possible
        // whitespace (carriage return) text nodes
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;
        }
    } else {
        return "n/a";
    }
}



// Maneja el cambio de página
function processReqChange() {


    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {

					setLoadingPage('stop');//Ocultar la capa de carga si se está usando

					switch (_globalMethod)
					{

						case 'clickbanners'://Para los banners de la home, no hay respuesta
							return;
						break;
						case 'getQuestion':
							getQuestion(req.responseText);
						break;

						case 'listadoTarifas':
							verTarifasCompra(req.responseText);
						break;

						case 'listadoTarifasSelect':
							verTarifasCompraSelect(req.responseText);
						break;

						case 'getWeather':
							getWeather(req.responseText);
						break;

						case 'listarRevistasNoticias':
							listarRevistasNoticias(req.responseText);
						break;

						case 'verRevistaAbordo':
							verRevistaAbordo(req.responseText);
						break;

						case 'verNoticia':
							verNoticiaReq(req.responseText);
						break;

						case 'listarNoticias':
							verListadoNoticias(req.responseText);
						break;

						case 'listarOfertasEmpleo':
							verLstOfertasEmpleo(req.responseText);
						break;

						case 'calendar'://Recarga el calendario
							changeCalendar(req.responseText);
						break;

						case 'getEventos'://Obtener la lista de eventos
							getEventos(req.responseText);
						break;

						case 'getEvento'://Obtener la lista de eventos
							getEvento(req.responseText);
						break;

						case 'getPersonalEventos':
							getPersonalEvents(req.responseText);
						break;

						case 'sendMail':
							document.getElementById('sendFriend').style.display = 'none';
							if (_globLang == 'es') {alert('Su correo ha sido enviado.');}
							if (_globLang == 'en') {alert('Your email has been sent sucessfully.');}
						break;

						case'listarPostales':
							verListadoPostales(req.responseText);
						break;

						case'enviarPostales': //Esto realmente no envia la postal, visualiza el formulario
							enviarPostales(req.responseText);
						break;

						case 'previewPostales':
							previewPostales(req.responseText);
						break;

						case 'sendPostal': //Este si envía realmente la postal
							sendPostal(req.responseText);
						break;

						case 'infoServDest':
							infoServDest(req.responseText);
						break;

						case 'tarifaConcep':
							tarifaConcep(req.responseText);
						break;

						case 'trackinginters':
							//No se espera respuesta
						break;

						case 'getDestinos':
							getDestinos(req.responseText);
						break;

						case 'genRSSNot':
								return;
						break;


					}
            //clearTopicList();
            //buildTopicList();
         } else {
            alert("No pudo acceder al servidor:\n" +
                req.statusText);
         }
    }
}

/**
* Mostrar mensaje de carga en procesos httpXMLrequest
*/
function showLoadingMessage() {

	return;

	document.getElementById('loadingData').style.display='block';

}

/**
* Obtener la pregunta para recuperar una clave
*/
function getQuestion(txt) {

	var objFrm = document.olvContr
	objFrm.elements["frmNew[pregunta]"].value = txt;

	if (txt != '')
	{
		document.getElementById('olvContrHead').style.display = 'block';
		document.getElementById('olvContrForm').style.display = 'block';
	}
	else
	{
		failedUser();
	}

}

/**
* Mostrar las tarifas de compra desde un origen dado
*
* @param string txt Contenido html de las tarifas
*/
function verTarifasCompra(txt) {

	var objLayer = document.getElementById('compraslstTarifas');
	objLayer.innerHTML = txt;

	document.getElementById('comprasttardest').style.display = 'block';

	//Habilitar las capas txtCompraa y txtComprab
	document.getElementById('txtCompraa').style.display = 'block';
	document.getElementById('txtComprab').style.display = 'block';
	document.getElementById('txtComprac').style.display = 'block';
	document.getElementById('txt1').style.display = 'none';
	document.getElementById('txt2').style.display = 'none';
	document.getElementById('txt3').style.display = 'none';
	document.getElementById('txt4').style.display = 'none';
	document.getElementById('txt5').style.display = 'none';
	document.getElementById('txt6').style.display = 'none';
	document.getElementById('datosTarifa').style.display = 'none';

}

/**
* Mostrar las tarifas de compra desde un origen dado por select
*
* @param string txt Contenido html de las tarifas
*/
function verTarifasCompraSelect(txt) {

	var objLayer = document.getElementById('compraslstTarifas');

	objLayer.innerHTML = txt;

	document.getElementById('comprasttardest').style.display = 'block';

	//Habilitar las capas txtCompraa y txtComprab
	document.getElementById('txtCompraa').style.display = 'block';
	document.getElementById('txtComprac').style.display = 'block';
	document.getElementById('txt1').style.display = 'none';
	document.getElementById('txt2').style.display = 'none';
	document.getElementById('txt3').style.display = 'none';
	document.getElementById('txt4').style.display = 'none';
	document.getElementById('txt5').style.display = 'none';
	document.getElementById('txt6').style.display = 'none';
	document.getElementById('datosTarifa').style.display = 'none';

	var lstMapas = {'maporcan':'mapa_foto_canarias.jpg',
									'maporafr':'mapa_foto_africa.jpg',
									'maporeur':'mapa_foto_europa.jpg'};

	var despCanarias = new Array();
	var despAfrica = new Array();
	var despEuropa = new Array();
	var fotoSelect = '';

	despCanarias = txt.match(/var slCanarias = '(.*)';/);
	despAfrica = txt.match(/var slAfrica = '(.*)';/);
	despEuropa = txt.match(/var slEuropa = '(.*)';/);
	fotoSelect = txt.match(/var imgTopSelect = '(.*)';/);

	var algunSelect = false;

	//Hacer visible la capa de los destinos
	document.getElementById('wrDest').style.display = 'none';

	window.location.hash = 'tarifastopfrm';

	//destinations dans les canarias
	return;
	try
	{
		if (despCanarias[1] != '')
		{
			algunSelect = true;
			document.getElementById('sltCanarias').style.visibility = 'visible';
			document.getElementById('sltCanarias').innerHTML = '<u style="font-size:11px"><b>'+_globalMsgDest['maporcan']+'</b></u><br/><br />' + despCanarias[1];
		}
		else
		{
			document.getElementById('sltCanarias').style.visibility = 'hidden';
		}

		if (despAfrica[1] != '')
		{
			algunSelect = true;
			document.getElementById('sltAfrica').style.visibility = 'visible';
			document.getElementById('sltAfrica').innerHTML = '<u style="font-size:11px"><b>'+_globalMsgDest['maporafr']+'</u><br/><br />' + despAfrica[1];
		}
		else
		{
			document.getElementById('sltAfrica').style.visibility = 'hidden';
		}

		if (despEuropa[1] != '')
		{
			algunSelect = true;
			document.getElementById('sltEuropa').style.visibility = 'visible';
			document.getElementById('sltEuropa').innerHTML = '<u style="font-size:11px"><b>'+_globalMsgDest['maporeur']+'</b></u><br/><br />' + despEuropa[1];
		}
		else
		{
			document.getElementById('sltEuropa').style.visibility = 'hidden';
		}

		//Ocultar cabeceras de tarifas si vacío
		var flagNone = false;
		if (!algunSelect)
		{
			var flagNone = true;
			objLayer.innerHTML = '';
			document.getElementById('txtCompraa').style.display = 'none';
			document.getElementById('txtComprab').style.display = 'none';
			document.getElementById('txtComprac').style.display = 'none';
			document.getElementById('publicidad').style.height = '204px';
			for (var i = 1; i < 7; i++)
			{
				document.getElementById('txt'+i).style.display = 'block';
			}

		}

  	var tmpObjImg;
  	for (var j in lstMapas)
  	{
  		tmpObjImg = document.getElementById('imgrep'+j);
  		if (j == _globalFotoMapa)
  		{
  			tmpObjImg.style.backgroundImage="url('images/"+fotoSelect[1]+"')";
				tmpObjImg.style.width = '129px';
				//Path para Milán
				if (_globalMapSelect.toLowerCase() == 'milan' || _globalMapSelect.toLowerCase() == 'milan0')
					{_globalMapSelect = _globalMapSelect + ' (Bérgamo)';}
  			tmpObjImg.innerHTML = _globalMapSelect;
  		}
  		else {tmpObjImg.style.backgroundImage='';}
  	}
	}

	catch(e) {return true;}

	//Ajustar la capa de publicidad para Mozilla
	if (!navigator.appName.match(/explorer/i) && !flagNone)
	{
		document.getElementById('publicidad').style.height = '274px';
	}

}

/**
* Mostrar el tiempo para una localización dada
*
* @param string txt Contenido html de las tarifas
*/
function getWeather(txt) {

	var data = req.responseXML.getElementsByTagName("datos");
	var htmldata = getElementTextNS("", "datatablea", data[0], 0);

	var objLayer = document.getElementById('tiempoDetail');
	objLayer.innerHTML = htmldata;

}


/**
* Mostrar una revista
*
* @param string txt Contenido html de la revista
*/
function verRevistaAbordo(txt) {

	var objLayer = document.getElementById('detalleRevista');
	objLayer.innerHTML = txt;
	window.scroll(0,360);

}

/**
* Mostrar las revista según la paginación
*
* @param string txt Contenido html de la página de revistas
*/
function listarRevistasNoticias(txt) {

	var data = req.responseXML.getElementsByTagName("datos");
	var fotosPag = getElementTextNS("", "listarevista", data[0], 0);
	var paginas = getElementTextNS("", "paginacion", data[0], 0);

	var objLayer = document.getElementById('listadoRevistas');
	objLayer.innerHTML = fotosPag;

	var objLayer2 = document.getElementById('listadoRevPag');
	objLayer2.innerHTML = paginas;

}

/**
* Mostrar el contenido de la noticia
*
* @param string txt Contenido html del calendario
*/
function verNoticiaReq(txt) {

	var objLayer = document.getElementById('contenidoNoticia');
	objLayer.innerHTML = unescape(txt);
	document.getElementById('sendFriend').style.display='none';
}

/**
* Muestra el listado de los titulares de noticias
*
* @param string txt Contenido html del calendario
*/
function verListadoNoticias(txt) {

	var objLayer = document.getElementById('lstNoticias');
	objLayer.innerHTML = unescape(txt);
	document.getElementById('sendFriend').style.display='none';
}

/**
* Muestra el listado de las ofertas de empleo
*
* @param string txt Contenido html con las ofertas
*/
function verLstOfertasEmpleo(txt) {

	var objLayer = document.getElementById('lstOfertasEmpleo');
	objLayer.innerHTML = txt;

}


/**
* Cambia el contenido de la capa del calendario tanto en la home como en la agenda
*
* @param string txt Contenido html del calendario
*/
function changeCalendar(txt) {

	var objLayer = document.getElementById('calendarSquare');
	objLayer.innerHTML = txt;

}

/**
* Muestra un listado de los eventos de acuerdo a los criterios indicados
*
* @param string txt Contenido html de los titulares
*/
function getEventos(txt) {

	var objLayer = document.getElementById('agendatitulares');
	if (txt == '')
	{
		txt="<span class='enunnoticias'>No se han encontrado eventos con estos criterios</span>"
	}
	objLayer.innerHTML = txt;

	var objLayer = document.getElementById('agendacuerpo');
	objLayer.innerHTML = '';

	window.location.hash = 'agendatits';
	//alert(txt);

}

/**
* Muestra un listado de los eventos de acuerdo a los criterios indicados
*
* @param string txt Contenido html de los titulares
*/
function getPersonalEvents(txt) {

	var objLayer = document.getElementById('agendatitulares');
	if (txt == '')
	{
		txt="<span class='enunnoticias'>No se han encontrado eventos con estos criterios</span>"
	}
	objLayer.innerHTML = txt;

	var objLayer = document.getElementById('agendacuerpo');
	objLayer.innerHTML = '';

}


/**
* Muestra el contenido HTML del evento actual
*
* @param string txt Contenido html de los titulares
*/
function getEvento (txt) {

	var objLayer = document.getElementById('agendacuerpo');
	//alert(txt)
	objLayer.innerHTML = txt;

}


/**
* Muestra el listado de las postales
*
* @param string txt Contenido html del calendario
*/
function verListadoPostales(txt) {

	var objLayer = document.getElementById('lstPostales');
	objLayer.innerHTML = txt;

}

/**
* Muestra la postal previsualizada
*
* @param string txt Contenido html del calendario
*/
function enviarPostales(txt) {

	var objLayer = document.getElementById('lstPostales');
	objLayer.innerHTML = txt;

}

/**
* Muestra la postal previsualizada
*
* @param string txt Contenido html del calendario
*/
function previewPostales(txt) {

	var objLayer = document.getElementById('lstPostales');
	objLayer.innerHTML = txt;

}

/**
* Enviar la postal efectivamente
*
* @param string txt Contenido html del calendario
*/
function sendPostal(txt) {

	var objLayer = document.getElementById('lstPostales');
	objLayer.innerHTML = txt;

}

/**
* Cargar la página con el contenido del destino seleccionado
*
* @param string txt Contenido html del calendario
*/
function infoServDest(txt) {

	var objLayer = document.getElementById('contenidoDestino');
	objLayer.innerHTML = txt;

}

/**
* Cargar la página con el contenido de las tarifas de los conceptos
*
* @param string txt Contenido html del calendario
*/
function tarifaConcep(txt) {
//alert(txt);
	var objLayer = document.getElementById('datosTarifa');
	//Parche para explorer
	document.getElementById('datosTarifa').style.display = 'block';
	if (navigator.userAgent.match(/MSIE/))
	{
		document.getElementById('datosTarifa').style.height = '500px';
	}
	objLayer.innerHTML = unescape(txt); //alert(txt);
	window.location.hash='tabla';
	//alert("EE "+window.location.hash) ;

}

/**
* Obtener la lista de destinos
*	_globalBookFrm = el formulario como objeto
*	_globalBookcampoName = Nombre del campo target como texto;
* @param string txt Contenido html del calendario
*/
function getDestinos(txt) {

	var opciones = txt.split(';');
	var detOpc
	var seleccionado = -1;
	var flag = true;
	_globalBookFrm.elements[_globalBookcampoName].options.length = 0;
	_globalBookFrm.elements[_globalBookcampoName].options[0]=new Option(_globalBookSelTxt, "");
	for (var c = 0; c < opciones.length; c++)
	{
		detOpc = opciones[c].split('|');
		/*
		if (_globalBookFSelc == detOpc[1]) {seleccionado = c;}
		*/
		_globalBookFrm.elements[_globalBookcampoName].options[c+1]=new Option(unescape(detOpc[0]), detOpc[1]);
	}

	/*
	if (seleccionado != -1)
	{
		_globalBookFrm.elements[_globalBookcampoName].options.selectedIndex = 0;
		_globalBookFrm.elements[_globalBookcampoName].options.selectedIndex = seleccionado;
	}
	*/
}
