//declaro variables globales...
var mapZones;
var mapLabels = 1;
var numOfImgs = 0;
var mouseX = 0;
var mouseY = 0;
imgURL = new Array();
preloadImg = new Image();
//FUNCIÓN PARA UTILIZAR EN LOS ONLOAD()
function loader(){
	//------>>>añado el onmousemove para detectar la posición del mouse y el onclick para ver si tengo que cerrar mapDIV
	document.body.onclick=check;
	document.onmousemove=getMouseXY;
	//------>>>preload de imägenes de hoteles para ficha de establecimiento
	for (x=0; x<document.images.length; x++){
		if (document.images[x].id.indexOf('hotelIMG_')==0){
			imgURL[numOfImgs] = document.images[x].src.replace("S.jpg", ".jpg");
			numOfImgs++;
		}
	}
	for (x=0; x<imgURL.length; x++){
        preloadImg.src = imgURL[x];
	}
}
//FUNCIÓN PARA ABRIR EL MAPA DE ZONAS AL CARGAR LA PÁGINA SI EL USUARIO LO HABÍA DEJADO HABIERTO EN ÚLTIMO USO
function gZonesMapOnLoad(languaje) {
	if (document.cookie.length>0) {
		if (document.cookie.indexOf('mapZonesSettings')!=-1){
			var mapZonesCookie = readCookie("mapZonesSettings");
			var bits = mapZonesCookie.split("&");
			for (var i = 0; i < bits.length; i++) {
				bits[i]=bits[i].substr(bits[i].indexOf("=")+1);
			}
			var mapType = parseInt(bits[0]);
			if (mapType==1) gZonesMap(languaje);
		}
	}
}
//FUNCIÓN PARA CREAR EL COOKIE CON LAS PREFERENCIAS DEL MAPA
function writeMapZonesCookie(evt) {
	if (!evt) var evt = window.event;
	var mapOpened = 0;
	var mapType;
	var cookieText = new String();
	var cookieText = new String();
	var expDate = new Date();
	//si mapZonesDIV es visible procedo. 
	if (document.getElementById('mapZonesDIV').style.visibility=='visible'){
		//si el evento es click mapa cerrado. Si es onload, mapa abierto
		if (evt.type.toUpperCase().indexOf("CLICK")!=-1){
			mapOpened = 0;
		}
		else{
			mapOpened = 1;
		}
		for (var i=0;i<mapZones.getMapTypes().length;i++) {
			if (mapZones.getCurrentMapType() == mapZones.getMapTypes()[i]) {
				mapType = i;
			}
		}
		cookieText = "mapZonesSettings=mapOpened=" + mapOpened + "&lat=" + mapZones.getCenter().lat() + "&lng=" + mapZones.getCenter().lng() + "&zoom=" + mapZones.getZoom() + "&mapType=" + mapType + "&mapLabels=" + mapLabels;
		expDate.setDate(expDate.getDate() + 30);
		cookieText += ";expires=" + expDate.toGMTString();
		document.cookie = cookieText;
	}
}
//FUNCION PARA POSICIONAR LOS POLYS Y AÑADIRLES EL TOOLTIP. LA USO DESDE gZonesMap
function polyEvents(poly, toolTipDIV) {
	GEvent.addListener(poly, "mouseover", function(){
		//añado y posiciono el tooltip
		toolTipDIV.innerHTML = '<div class="marcoToolTip"><nobr>' + poly.nombreZona + ' <\/nobr><\/div>';
		var point=mapZones.getCurrentMapType().getProjection().fromLatLngToPixel(mapZones.fromDivPixelToLatLng(new GPoint(0,0),true),mapZones.getZoom());
		var offset=mapZones.getCurrentMapType().getProjection().fromLatLngToPixel(poly.getBounds().getCenter(),mapZones.getZoom());
		var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x, offset.y - point.y)); 
		pos.apply(toolTipDIV);
		toolTipDIV.style.visibility="visible";
		//y el poly
		poly.opacity = poly.opacity + 0.2;
		poly.redraw(true);
		//GLog.write("event 'mouseover' detected. imprimiendo ... " + toolTipDIV.clientHeight + "  mmm  " + toolTipDIV.clientWidth);
	});
	GEvent.addListener(poly, "mouseout", function(){
		toolTipDIV.style.visibility="hidden";
		poly.opacity = poly.opacity - 0.2;
		poly.redraw(true);
		//GLog.write("event 'mouseout' detected. imprimo... ...");
	});
}

//FUNCIÓN PARA MOVER AL POLY EN CUEATIÓN. LA USO DESDE gZonesMap
function moveToPoly(lat, lng) {
	mapZones.panTo(new GLatLng(lat, lng));
}
//función para mostrar el plano con las zonas del mapa de Madrid
function gZonesMap(languaje) {
	if (GBrowserIsCompatible()) {
		showLayerFixScrollBar(document.getElementById('mapZonesDIV'));
		
		//valores por defecto por si no hay cookie
		var latitude = 40.418569904183;
		var longitude = -3.70224897120523;
		var zoomFactor = 14;
		var mapType = 0;
		var showPolys = 1;

		var polys = [];
		var labels = [];
		//leo valores del cookie mapZonesSettings
		if (document.cookie.length>0) {
			if (document.cookie.indexOf('mapZonesSettings')!=-1){
				var mapZonesCookie = readCookie("mapZonesSettings");
				var bits = mapZonesCookie.split("&");
				for (var i = 0; i < bits.length; i++) {
					bits[i]=bits[i].substr(bits[i].indexOf("=")+1);
				}
				latitude = parseFloat(bits[1]);
				longitude = parseFloat(bits[2]);
				zoomFactor = parseInt(bits[3]);
				mapType = parseInt(bits[4]);
				mapLabels = parseInt(bits[5]);
			}
		}
		
		// === Creo los custom controles ===
		var labelContainer;
		var side_bar_html = new String();
		var openlabelContainerTitle = new String();
		var openlabelContainerName = new String();
		if (languaje=='sp'){
			openlabelContainerTitle = "Mostrar/ocultar listado de zonas";
			openlabelContainerName = "Zonas";
		}
		else{
			openlabelContainerTitle = "Show/hide Madrid zones list";
			openlabelContainerName = "Zones";
		}

		var openlabelContainer;
		function OpenlabelControl() {  }
		OpenlabelControl.prototype = new GControl(false, true);

		OpenlabelControl.prototype.initialize = function(mapZones) {
			openlabelContainer = document.createElement("div");
			openlabelContainer.id = "mapZonesBarOpenerDIV";
			openlabelContainer.title = openlabelContainerTitle;
			openlabelContainer.style.backgroundColor = "white";
			openlabelContainer.style.border = "1px solid black";
			openlabelContainer.style.height="17px";
			openlabelContainer.style.width="70px";
			openlabelContainer.style.fontSize = '12px';
			openlabelContainer.style.cursor = "pointer";
			openlabelContainer.innerHTML = "<TABLE border='0' width='100%' height='17' cellSpacing='0' cellPadding='0' align='center'><TR><TD style='padding-left:5px;'><b>" + openlabelContainerName + "</b></TD><TD align='right' valign='middle' style='padding-right:5px;'><IMG SRC='/images/mapZonesArrow.gif' WIDTH='11' HEIGHT='6' BORDER='0'></TD></TR></TABLE>";
			mapZones.getContainer().appendChild(openlabelContainer);
			GEvent.addDomListener(openlabelContainer, "click", function() {
				showLayer(document.getElementById('mapZonesBarDIV'));
				if (document.getElementById('mapZonesBarDIV').style.display=="block"){
					mapLabels=1;
				}
				else{
					mapLabels=0;
				}
			});
			return openlabelContainer;
		}
		OpenlabelControl.prototype.getDefaultPosition = function() {
			return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 33));
		}

		function LabelControl() {  }
		LabelControl.prototype = new GControl(false, true);

		LabelControl.prototype.initialize = function(mapZones) {
			labelContainer = document.createElement("div");
			labelContainer.id = "mapZonesBarDIV";
			labelContainer.style.overflow="auto";
			labelContainer.style.backgroundColor = "white";
			labelContainer.style.border = "1px solid black";
			labelContainer.style.height="240px";
			labelContainer.style.width="100px";
			labelContainer.style.paddingLeft="5px";
			if (mapLabels==1){
				labelContainer.style.display = "block";
			}
			else{
				labelContainer.style.display = "none";
			}
			mapZones.getContainer().appendChild(labelContainer);
			return labelContainer;
		}

		LabelControl.prototype.getDefaultPosition = function() {
			return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 51));
		}
		//=====================

		//Inicializar el mapa y los controles
		mapZones = new GMap2(document.getElementById("mapZonesDIV"));
		mapZones.addControl(new OpenlabelControl());
		mapZones.addControl(new LabelControl());
		mapZones.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7)));
		mapZones.addControl(new GMapTypeControl());
		//centro el mapa
		mapZones.setCenter(new GLatLng(latitude, longitude), zoomFactor);
		mapZones.setMapType(mapZones.getMapTypes()[mapType]);

		// leo polys de markersZones
		var request = GXmlHttp.create();
		//request.open("GET", "http://localhost/markersZones.xml", true);
		request.open("GET", "/markersZones.xml", true);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var xmlDoc = GXml.parse(request.responseText);
				//creo el tooltip y lo escondo hasta que lo necesite
				var toolTipDIV = document.createElement("div");
				mapZones.getPane(G_MAP_FLOAT_PANE).appendChild(toolTipDIV);
				toolTipDIV.style.visibility="hidden";

				// ========= proceso los polígonos ===========
				var zonas = xmlDoc.documentElement.getElementsByTagName("zona");

				// leo todas las zonas
				for (var a = 0; a < zonas.length; a++) {
				// y los atributos de cada zona
				var label  = zonas[a].getAttribute("name");
				var color = zonas[a].getAttribute("color");
				// leo cada punto del poly
				var points = zonas[a].getElementsByTagName("point");
				var pts = [];
				for (var i = 0; i < points.length; i++) {
				   pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")), parseFloat(points[i].getAttribute("lng")));
					//muestra los marcadores de los polys
					//var marker = createMarker(pts[i],points[i].getAttribute("lat") + ',' + points[i].getAttribute("lng"),"iconRed");
					//mapZones.addOverlay(marker);
				}
				var poly = new GPolygon(pts, "#000000", 2, 0.2, color, 0.2 );
				poly.nombreZona = label;
				polys.push(poly);
				labels.push(label);
				//posiciono los polys y les añado los eventos rollover con tooltip
				polyEvents(poly, toolTipDIV);
				mapZones.addOverlay(poly);
				side_bar_html += '<a href="javascript:moveToPoly(' + poly.getBounds().getCenter().lat() + ',' + poly.getBounds().getCenter().lng() + ')" class="grayDarkToRed">' + label + '<\/a><br>';
				}
				labelContainer.innerHTML = side_bar_html;
				// ================================================           
			}
		}		
		request.send(null);

		GDownloadUrl("/public/2009/markersHotels.xml", function(data) {
			var sEstabsConDispo = document.getElementById('ctlMenu_hddnEstabsConDispo').value;
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			var URL = '';
			for (var i = 0; i < markers.length; i++) {
				var IDonlyNumber = markers[i].getAttribute("ID").substring(4);
				if (sEstabsConDispo.indexOf(IDonlyNumber)!=-1){//muestra sólo los marcadores para los establecimientos con disponibilidad...
					var set = markers[i].getAttribute("set");
					if (set == 'hotel' || set == 'hostal' || set == 'apartahotel' || set == 'apartamento') {
						var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),	parseFloat(markers[i].getAttribute("lng")));
						var address = markers[i].getAttribute("address");
						if (languaje == 'sp') {
							URL = "<a href=" + markers[i].getAttribute("URL_sp") + ">" + markers[i].getAttribute("placeName_sp") + "</a>";
						}
						else{
							URL = "<a href=" + markers[i].getAttribute("URL_en") + ">" + markers[i].getAttribute("placeName_en") + "</a>";
						}
						var markerTitle = "<p align=left class=parrafoSaltoCeroPx><b>" + URL + "</b><br>" + address + "</p>";
						switch (set){
							case "hotel":
								var marker = createMarker(point,markerTitle,"iconRed");
								break;
							case "hostal":
								var marker = createMarker(point,markerTitle,"iconGreen");
								break;
							case "apartahotel":
								var marker = createMarker(point,markerTitle,"iconYellow");
								break;
							case "apartamento":
								var marker = createMarker(point,markerTitle,"iconBlue");
								break;
						}
						mapZones.addOverlay(marker);
					}
				}
			}
		});
		mapZones.panTo(new GLatLng(latitude, longitude));
		toggleVisibility(document.getElementById('mapZonesDIV'));
		showLayer(document.getElementById('ctlCalendar_imgMapZonesClosed'));
		showLayer(document.getElementById('ctlCalendar_imgMapZonesOpened'));
	}
}
//función para obtener la posición del mouse. Las guardamos en mouseX y mouseY
function getMouseXY(e) {
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		mouseX = e.pageX;
		mouseY = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		mouseX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		mouseY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
}
//funcion para cerrar la ventana del mapDIV si el div está visible y pinchamos fuera de él
function check(e){
	var target = (e && e.target) || (event && event.srcElement);
	var objMapDIV = document.getElementById('mapDIV');
	if (objMapDIV.style.visibility=='visible'){
		var parent = checkParent(target);
		if (parent==true){
			if (target.title==undefined){
				target.title = "";
			}
			if (!(target.title.toUpperCase().indexOf('VER MAPA') == 0 || target.title.toUpperCase().indexOf('VIEW MAP') == 0 || target.title.toUpperCase().indexOf('VOIR CARTE') == 0)){
				document.getElementById(objMapDIV.id).style.visibility='hidden';
			}
		}
	}
}
//funcion que nos dice si el objeto mandado en t es child del mapDIV
function checkParent(t){
	while(t.parentNode){
		if(t==document.getElementById('mapDIV')){
			return false
		}
		t=t.parentNode
	}
	return true
}
//Función que resetea los combo select para el número de habitaciones. Necesario xq en FF al hacer reload o volver a la página conserva el último valor seleccionado. Lo uso en la ficha del establecimiento
function reseteaDrpNumHabit(){
	var elem = document.getElementById('Form1').elements;
	for(var i = 0; i < elem.length; i++)
	{
		if (elem[i].type=='select-one'){
			var elemID = elem[i].id;
			if (elemID.indexOf('dgrdTipoOcup__ctl')!=-1){
				document.getElementById(elemID).selectedIndex=0;
			}
		}
	} 
}
//Función para formatear los números de JS con coma o punto. La uso desde el JS que está dentro de dethotel.aspx
Number.prototype.formatMoney = function(c, d, t){
	var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};
//Función que cambia la altura del scroll bar y la modifica para IE
function fixScrollBarPromo(){
	document.getElementById('scrollBarPromoDIV').style.display = 'block';
	sniffBrowsers();
	if (ie){
		document.getElementById('scrollBarPromoDIV').style.overflow='auto';
		document.getElementById('scrollBarPromoDIV').style.overflowX='hidden';
		document.getElementById('scrollBarPromoDIV').style.scrollbar3dlightColor='#B9B9B9';
		document.getElementById('scrollBarPromoDIV').style.scrollbarArrowColor='#B9B9B9';
		document.getElementById('scrollBarPromoDIV').style.scrollbarShadowColor='#F3F3F3';
		document.getElementById('scrollBarPromoDIV').style.scrollbarTrackColor='#F3F3F3';//la parte de atras
		document.getElementById('scrollBarPromoDIV').style.scrollbarFaceColor='#EAEAEA';//la barra que movemos
		document.getElementById('scrollBarPromoDIV').style.scrollbarHighlightColor='#EAEAEA';
		document.getElementById('scrollBarPromoDIV').style.scrollbarDarkShadowColor='#B9B9B9';
	}
	else{
		document.getElementById('scrollBarPromoDIV').style.overflow='hidden';
	}
	document.getElementById('scrollBarPromoDIV').style.height = ((getTopPosition(document.getElementById('tableFooter')) + document.getElementById('tableFooter').offsetHeight) -24 - getTopPosition(document.getElementById('scrollBarPromoDIV'))) + 'px';
	document.getElementById('scrollBarPromoDIV').style.visibility = 'visible';
}
//Función que cambia la altura del scroll bar
function updateSizeScrollBarPromo(operacion, variacion){
	if (operacion=='suma'){
		document.getElementById('scrollBarPromoDIV').style.height = (document.getElementById('scrollBarPromoDIV').offsetHeight + variacion) + 'px';
	}
	else{
		document.getElementById('scrollBarPromoDIV').style.height = (document.getElementById('scrollBarPromoDIV').offsetHeight - variacion) + 'px';
	}
}
//FUNCIÓN PARA MOSTRAR/OCULTAR LAYERS. Cuando utilizo esta función cambio además el tamaño del scrollBarPromoDIV. La uso mayormente en la ficha de establecimiento
function showLayerFixScrollBar(obj){
	//document.getElementById('mapDIV').style.visibility='hidden';
	if (document.getElementById(obj.id).style.display=='none'){
		document.getElementById(obj.id).style.display='block';
		updateSizeScrollBarPromo('suma', document.getElementById(obj.id).offsetHeight);
	}
	else{
		updateSizeScrollBarPromo('resta', document.getElementById(obj.id).offsetHeight);
		document.getElementById(obj.id).style.display='none';
	}
}
//función para leer el valor de una cookie
function readCookie(name){
	var cookieValue = "";
	var search = name + "=";
	if(document.cookie.length > 0){ 
		offset = document.cookie.indexOf(search);
		if (offset != -1){ 
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			if (end == -1) end = document.cookie.length;
			cookieValue = unescape(document.cookie.substring(offset, end))
		}
	}
	return cookieValue;
}
//Función que utilizo para habilitar o deshabilitar categorías al pinchar en el checkbox del tipo de establecimiento
function disableCats(obj, chkToHide, num){
	var status = true;
	if (document.getElementById(obj).checked==true){
		status = false;
	}
	else{
		status = true;
	}
	for (i=0;i<=num;i++){
		document.getElementById(chkToHide + i).disabled=status;
	}	
}
//Esta función la creo para eliminar el disable de los checkboxes antes de enviar el formulario. Sino ASP.net no considera los valores de selección...
function disableCatsFix(chkToHide, num){
	document.getElementById('calCats_optionsDIV').style.display='none';
	for (i=0;i<=num;i++){
		document.getElementById(chkToHide + i).disabled=false;
	}
}
//Función que utilizo para ocultalr o mostrar cada uno de los menús con las categorías de cada tipo de establecimiento
function openCalCatHoriz(categoria, imgOpener, altura, anchura) {
	document.getElementById('calCats_optionsDIV').style.top=getTopPosition(document.getElementById(imgOpener)) + 'px';
	document.getElementById('calCats_optionsDIV').style.left=(getLeftPosition(document.getElementById(imgOpener)) + document.getElementById(imgOpener).offsetWidth) + 'px';
	document.getElementById('calCats_optionsDIV').style.height=altura + 'px';
	document.getElementById('calCats_optionsDIV').style.width=anchura + 'px';
	document.getElementById('calCats_optionsDIV').style.display='block';

	switch(categoria)
	{
	case 'apartamento':
		document.getElementById('divCats_ApartH').style.display='none';
		document.getElementById('divCats_Hot').style.display='none';
		document.getElementById('divCats_Host').style.display='none';
		document.getElementById('divCats_Apart').style.display='inline';
		break;
	case 'apartahotel':
		document.getElementById('divCats_Apart').style.display='none';
		document.getElementById('divCats_Hot').style.display='none';
		document.getElementById('divCats_Host').style.display='none';
		document.getElementById('divCats_ApartH').style.display='inline';
		break;
	case 'hotel':
		document.getElementById('divCats_Apart').style.display='none';
		document.getElementById('divCats_ApartH').style.display='none';
		document.getElementById('divCats_Host').style.display='none';
		document.getElementById('divCats_Hot').style.display='inline';
		break;
	case 'hostal':
		document.getElementById('divCats_Apart').style.display='none';
		document.getElementById('divCats_ApartH').style.display='none';
		document.getElementById('divCats_Hot').style.display='none';
		document.getElementById('divCats_Host').style.display='inline';
		break;
	}
}
//Función que utilizo para validar el valor introducido en los campos del calendario de tarifas
function checkPrecio(obj) {
	var validValues = "0123456789";
	num = obj.value.toString();
	
	for (i=0;i<num.length;i++){
		ch = num.charAt(i);
		if (validValues.indexOf(ch)<0){
			document.getElementById(obj.id).value=document.getElementById(obj.id).defaultValue;
		}
	}
	if (parseInt(num)<=0){
		document.getElementById(obj.id).value=document.getElementById(obj.id).defaultValue;
	}
	if (document.getElementById(obj.id).value==''){
		document.getElementById(obj.id).value=document.getElementById(obj.id).defaultValue;
	}
	if (document.getElementById(obj.id).value!=document.getElementById(obj.id).defaultValue){
		if (document.getElementById('admin_dispoTarif_guardar').disabled==true){
			document.getElementById('lblError_DIV').style.display="none";
			blinkButton = setInterval("doBlink(document.getElementById('admin_dispoTarif_guardar'))",700);
			document.getElementById('admin_dispoTarif_guardar').disabled=false;
		}
	}
}
//Función que utilizo para validar el valor introducido en los campos del calendario de disponibilidad
function checkDisponibilidad(obj) {
	var validValues = "0123456789";
	num = obj.value.toString();
	
	for (i=0;i<num.length;i++){
		ch = num.charAt(i);
		if (validValues.indexOf(ch)<0){
			document.getElementById(obj.id).value=0;
		}
	}
	if (parseInt(num)>0){
		document.getElementById(obj.id).className='cal_available';
	}
	else {
		if (document.getElementById(obj.id).value=='00') document.getElementById(obj.id).value=0;
		document.getElementById(obj.id).className='cal_nonAvailable';
	}
	if (document.getElementById(obj.id).value==''){
		document.getElementById(obj.id).value=0;
	}
	if (document.getElementById('admin_dispoTarif_guardar').disabled==true){
		document.getElementById('lblError_DIV').style.display="none";
		document.getElementById('admin_dispoTarif_guardar').disabled=false;		
		blinkButton = setInterval("doBlink(document.getElementById('admin_dispoTarif_guardar'))",700);
	}
}
function doBlink(obj) {
	if (document.getElementById(obj.id).style.color!='red'){
		document.getElementById(obj.id).style.color='red';
	}
	else{
		document.getElementById(obj.id).style.color='black';
	}
}
//Función que utilizo en varios campos de texto para asegurar que el valor introducido es un número entero positivo
function onlyNumbersField(obj) {
	var doAlert = false;
	var validValues = "0123456789";
	num = obj.value.toString();
	
	for (i=0;i<num.length;i++){
		ch = num.charAt(i);
		if (validValues.indexOf(ch)<0){
			doAlert = true;
		}
	}
	if (doAlert==true || document.getElementById(obj.id).value==''){
		setTimeout("document.getElementById('" + obj.id + "').focus();", 10);
		alert("Introduzca un numero entero");
		document.getElementById(obj.id).value=document.getElementById(obj.id).defaultValue;
	}
}
//Función que utilizo en varios campos de texto para asegurar que el valor introducido es un número entero positivo. NO adminte 0
function onlyNumbersFieldNoCero(obj) {
	var doAlert = false;
	var validValues = "0123456789";
	num = obj.value.toString();
	
	for (i=0;i<num.length;i++){
		ch = num.charAt(i);
		if (validValues.indexOf(ch)<0){
			doAlert = true;
		}
	}
	if (doAlert==true || document.getElementById(obj.id).value=='' || document.getElementById(obj.id).value<=0){
		setTimeout("document.getElementById('" + obj.id + "').focus();", 10);
		alert("Introduzca un numero entero superior a cero");
		document.getElementById(obj.id).value=document.getElementById(obj.id).defaultValue;
	}
}
function disableButton(obj_01,stopBlink) {
	if (!stopBlink) var stopBlink = false;
	if (stopBlink==true){
		clearInterval(blinkButton);	
	}
	document.getElementById(obj_01.id).disabled=true;
}
function openMenu(el, positionLeft) {
	sniffBrowsers();
	if (ie){
		positionLeft = positionLeft + document.getElementById('tableFlags').offsetLeft;
		if (!el.contains(event.fromElement)){
			if (document.getElementById('menuRapidoDIV').style.visibility == 'hidden' && document.getElementById('menuRapidoShadowDIV').style.visibility == 'hidden'){		
				document.getElementById('menuRapidoTD').className='barBlackToWhiteOver';
				document.getElementById('menuRapidoDIV').style.top=(document.getElementById("menuRapidoTD").offsetTop + document.getElementById("menuRapidoTD").offsetHeight + 8) + 'px';
				document.getElementById('menuRapidoDIV').style.left=(positionLeft) + 'px';
				document.getElementById('menuRapidoShadowDIV').style.top=document.getElementById('menuRapidoDIV').style.top;
				document.getElementById('menuRapidoShadowDIV').style.width='1px';
				document.getElementById('menuRapidoShadowDIV').style.height='1px';
				document.getElementById('menuRapidoShadowDIV').style.left=getMiddlePointX(document.getElementById('menuRapidoTD')) + 'px';
				document.getElementById('menuRapidoShadowDIV').style.border=document.getElementById('menuRapidoDIV').style.border;
				doZoomOpen();
			}
		}
	}
	else{
		document.getElementById('menuRapidoTD').className='barBlackToWhiteOver';
	}
}
function closeMenu(el) {
	if (!el.contains(event.toElement)){
		if (document.getElementById('menuRapidoShadowDIV').style.visibility == "hidden" && document.getElementById('menuRapidoDIV').style.visibility == "visible" && event.toElement.id != 'menuRapidoTD' && event.toElement.id != 'menuRapidoLINK'){
			document.getElementById('menuRapidoTD').className='barBlackToWhite';
			document.getElementById('menuRapidoDIV').style.visibility = "hidden";
			document.getElementById('menuRapidoIFRAME').style.visibility='hidden';
			document.getElementById('menuRapidoIFRAME').style.top='0px';
			document.getElementById('menuRapidoIFRAME').style.width='0px';
			document.getElementById('menuRapidoIFRAME').style.height='0px';
			document.getElementById('menuRapidoIFRAME').style.left='0px';
			document.getElementById('menuRapidoShadowDIV').style.top=document.getElementById('menuRapidoDIV').style.top;
			document.getElementById('menuRapidoShadowDIV').style.width=document.getElementById('menuRapidoDIV').offsetWidth;
			document.getElementById('menuRapidoShadowDIV').style.height=document.getElementById('menuRapidoDIV').offsetHeight;
			document.getElementById('menuRapidoShadowDIV').style.left=(getMiddlePointX(document.getElementById('menuRapidoDIV'))) + 'px';
			document.getElementById('menuRapidoShadowDIV').style.border=document.getElementById('menuRapidoDIV').style.border;
			doZoomClose();
		}
	}
}
function closeMenuOnClick() {
	if (document.getElementById('menuRapidoShadowDIV').style.visibility == "hidden"){
		document.getElementById('menuRapidoTD').className='barBlackToWhite';
		document.getElementById('menuRapidoDIV').style.visibility = "hidden";
		document.getElementById('menuRapidoDIV').style.visibility='hidden';
		document.getElementById('menuRapidoIFRAME').style.visibility='hidden';
		document.getElementById('menuRapidoIFRAME').style.top='0px';
		document.getElementById('menuRapidoIFRAME').style.width='0px';
		document.getElementById('menuRapidoIFRAME').style.height='0px';
		document.getElementById('menuRapidoIFRAME').style.left='0px';
		document.getElementById('menuRapidoShadowDIV').style.top=document.getElementById('menuRapidoDIV').style.top;
		document.getElementById('menuRapidoShadowDIV').style.width=document.getElementById('menuRapidoDIV').offsetWidth;
		document.getElementById('menuRapidoShadowDIV').style.height=document.getElementById('menuRapidoDIV').offsetHeight;
		document.getElementById('menuRapidoShadowDIV').style.left=(getMiddlePointX(document.getElementById('menuRapidoDIV'))) + 'px';
		document.getElementById('menuRapidoShadowDIV').style.border=document.getElementById('menuRapidoDIV').style.border;
		doZoomClose();
	}
}
function closeMenuOnMouseOut() {
	if (!ie){
		document.getElementById('menuRapidoTD').className='barBlackToWhite';
	}
}
function doZoomOpen(step) {
	if (!step) var step = 0;
	step+=1
	var fromX = getMiddlePointX(document.getElementById('menuRapidoTD'));
	var toX = getMiddlePointX(document.getElementById('menuRapidoDIV'));
	var moveFactorX = ((getMiddlePointX(document.getElementById('menuRapidoTD')) - getMiddlePointX(document.getElementById('menuRapidoDIV')))/10);
	if (step < 10) {
		document.getElementById('menuRapidoShadowDIV').style.width=((document.getElementById('menuRapidoDIV').offsetWidth/10)+document.getElementById('menuRapidoShadowDIV').offsetWidth) + 'px';
		document.getElementById('menuRapidoShadowDIV').style.height=((document.getElementById('menuRapidoDIV').offsetHeight/10)+document.getElementById('menuRapidoShadowDIV').offsetHeight) + 'px';
		document.getElementById('menuRapidoShadowDIV').style.left = ((fromX - moveFactorX*step) - (document.getElementById('menuRapidoShadowDIV').offsetWidth/2)) + 'px';
		document.getElementById('menuRapidoShadowDIV').style.visibility='visible';
		setTimeout("doZoomOpen(" + step + ")",20);
	}
	if (step == 10) {
		document.getElementById('menuRapidoShadowDIV').style.width=document.getElementById('menuRapidoDIV').style.width;
		document.getElementById('menuRapidoShadowDIV').style.height=document.getElementById('menuRapidoDIV').style.height;
		document.getElementById('menuRapidoShadowDIV').style.left = document.getElementById('menuRapidoDIV').style.left;
		document.getElementById('menuRapidoShadowDIV').style.visibility='hidden';
		document.getElementById('menuRapidoIFRAME').style.top=document.getElementById('menuRapidoDIV').style.top;
		document.getElementById('menuRapidoIFRAME').style.width=document.getElementById('menuRapidoDIV').offsetWidth;
		document.getElementById('menuRapidoIFRAME').style.height=document.getElementById('menuRapidoDIV').offsetHeight;
		document.getElementById('menuRapidoIFRAME').style.left = document.getElementById('menuRapidoDIV').style.left;
		document.getElementById('menuRapidoIFRAME').style.visibility='visible';
		document.getElementById('menuRapidoDIV').style.visibility='visible';
	}
}
function doZoomClose(step) {
	if (!step) var step = 0;
	step+=1
	var fromX = getMiddlePointX(document.getElementById('menuRapidoDIV'));
	var to = getMiddlePointX(document.getElementById('menuRapidoTD'));
	var moveFactorX = ((getMiddlePointX(document.getElementById('menuRapidoTD')) - getMiddlePointX(document.getElementById('menuRapidoDIV')))/10);
	if (step < 10) {
		document.getElementById('menuRapidoShadowDIV').style.width=(document.getElementById('menuRapidoShadowDIV').offsetWidth-(document.getElementById('menuRapidoDIV').offsetWidth/10)) + 'px';
		document.getElementById('menuRapidoShadowDIV').style.height=(document.getElementById('menuRapidoShadowDIV').offsetHeight-(document.getElementById('menuRapidoDIV').offsetHeight/10)) + 'px';
		document.getElementById('menuRapidoShadowDIV').style.left = ((fromX + moveFactorX*step) - (document.getElementById('menuRapidoShadowDIV').offsetWidth/2)) + 'px';
		document.getElementById('menuRapidoShadowDIV').style.visibility='visible';
		setTimeout("doZoomClose(" + step + ")",30);
	}
	if (step == 10) {
		document.getElementById('menuRapidoShadowDIV').style.width='1px';
		document.getElementById('menuRapidoShadowDIV').style.height='1px';
		document.getElementById('menuRapidoShadowDIV').style.left = (getMiddlePointX(document.getElementById('menuRapidoTD'))) + 'px';
		document.getElementById('menuRapidoShadowDIV').style.visibility='hidden';
	}
}
//********************************************************************
// Credit Card Number Validator Written By: Lokesh
//                                   Date : 04/08/2004
// Uses Linh mod-10 formula to determine the validity and then
// calls different functions to check what category the number belongs
// to.
//********************************************************************
var invalid = "Invalid";
//********************************************************************
// Check the Linh Mod-10 validity
function CheckCreditCardNum(num)
{
var len=num.length;
var first;
var sum=0;
var mul=1;
var i;
var numAtI;
var tempSum;
var theway;
var txtcard;
theway = "";
for(i=(len-1); i >= 0 ;--i)
{
numAtI = parseInt(num.charAt(i));
tempSum = numAtI * mul;
theway += numAtI +" x " + mul +"=" + tempSum;
if(tempSum > 9)
{
	first = tempSum % 10;
	theway += " => "+ 1 +" + " + first +"=";
	tempSum =  1 +  first;
	theway += tempSum +" ";
}
theway += "\n";
sum += tempSum;

if (mul == 1)
	mul++;
else
	mul--;
}
theway += "----------\nSum:   "+ sum +"\n";
//*********************************************************
// Comment this line if you want to see the calculation
theway = "";
if(sum % 10)
{
if (len == 15)
{
	txtcard = CheckFor15(num,0);
	if ( txtcard == invalid )
	{
	//alert("The number: "+ num +" is not valid!! ");
		return false;
		}
}
else
{
	//alert("The number: "+ num +" is not valid!! ");
	return false;
}

}

{
	switch(len)
	{
	case 13:
	txtcard = CheckFor13(num);
	break;
	case 14:
	txtcard = CheckFor14(num);
	break;
	case 15:
	txtcard = CheckFor15(num,1);
	break;
	case 16:
	txtcard = CheckFor16(num);
	break;
	default:
	txtcard = invalid;
	}
	if(txtcard == invalid)
	{
	//alert("The number: "+ num +" is not valid!! ");
	return false;
	}
	else
	theway+= "The number: "+ num +" is valid!! \nand it looks like it is: "+ txtcard;
}
//alert(theway);
return true;
}

//***********************************************************************************
// Checks for Visa..
function CheckFor13(number)
{
if(parseInt(number.charAt(0)) == 4 )
	return "Visa";
return invalid;
}
//************************************************************************************
// Check for Diners Club
function CheckFor14(number)
{
if( parseInt(number.charAt(0)) != 3 )
	return invalid;
if( (parseInt(number.charAt(1)) == 6) || (parseInt(number.charAt(1)) == 8) )
	return "Diners Club/Carte Blanche"
if( !(parseInt(number.charAt(1)) ))
	if( (parseInt(number.charAt(2)) >= 0) && (parseInt(number.charAt(2)) <= 5))
		return "Diners Club/Carte Blanche"
return invalid;
}
//************************************************************************************
// Check for American Express, enRoute, JCB
function CheckFor15(number, chec)
{
	if ( (number.charAt(0) == 3) && ( (number.charAt(1) == 4)||(number.charAt(1) == 7) ) && chec)
	return "American Express";
	var FirstFour =  parseInt(number.charAt(0))*1000;
	FirstFour += parseInt(number.charAt(1))*100;
	FirstFour += parseInt(number.charAt(2))*10;
	FirstFour += parseInt(number.charAt(3));
	//alert(FirstFour);
	if( (FirstFour == 2014) || (FirstFour == 2149) )
	return "enRoute";

	if( ((FirstFour == 2131) || (FirstFour == 1800)) && chec )
	return "JCB";

	return invalid;
}
//************************************************************************************
// Check for Visa, MasterCard, Discover or JCB
function CheckFor16(number)
{
var a = parseInt(number.charAt(0));
var b = parseInt(number.charAt(1));
//alert (a);
switch (a)
{
	case 5:
		if((b > 0)&& (b < 6))
		return "MasterCard";
	else
		return invalid;
	break;
case 4:
	return "Visa";
	break;
case 6:
	if ( (b == 0) && ( parseInt(number.charAt(2)) == 1) && ( parseInt(number.charAt(3)) == 1))
		return "Discover";
	else
		return invalid;
	break;
case 3:
	return "JCB";
	break;
default:
	return invalid;
	break;
}
}

function getMiddlePointX(obj) {
	var curleft = 0;
	var half = obj.offsetWidth/2;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	curleft = curleft + half;	
	return curleft;
}
function getLeftPosition(obj){
	var curleft = 0;
	if(obj.offsetParent)
		while(1) 
		{
		  curleft += obj.offsetLeft;
		  if(!obj.offsetParent)
			break;
		  obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;
	return curleft;
}
function getTopPosition(obj){
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
		  curtop += obj.offsetTop;
		  if(!obj.offsetParent)
			break;
		  obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}

//FUNCIÓN QUE CAMBIA LAS IMÁGENES Y EL COLOR DEL BORDE
function imgChange(obj, doChange) {
	for (x=0; x<document.images.length; x++){
		if (document.images[x].id.indexOf('hotelIMG_')==0){
			document.images[x].className='imgBorder';
		}
	}
	document.images[obj.id].className='imgBorderRed';
	if (doChange == true){
		for (x=0; x<imgURL.length; x++){
			if (imgURL[x]==document.images[obj.id].src.replace("S.jpg", ".jpg")){
				document.images['hotelIMG'].src=imgURL[x];
			}
		}
	}
}
//FUNCIÓN PARA MOSTRAR/OCULTAR LAYERS
function showLayer(obj){
	if (document.getElementById(obj.id).style.display=='none'){
		document.getElementById(obj.id).style.display='block';
	}
	else{
		document.getElementById(obj.id).style.display='none';
	}
}
//FUNCIÓN PARA MOSTRAR/OCULTAR LAYERS
function toggleVisibility(obj){
	if (document.getElementById(obj.id).style.visibility=='hidden'){
		document.getElementById(obj.id).style.visibility='visible';
	}
	else{
		document.getElementById(obj.id).style.visibility='hidden';
	}
}
//FUNCIÓN PARA CAMBIAR class
function changeStyle(obj, fromClass, toClass){
	if (document.getElementById(obj.id).className==fromClass){
		document.getElementById(obj.id).className=toClass;
	}
	else{
		document.getElementById(obj.id).className=fromClass;
	}
}
//FUNCIÓN PARA CAMBIAR visibilidad
function changeVisibility(obj, fromVisibility, toVisibility){
	if (document.getElementById(obj.id).style.visibility==fromVisibility){
		document.getElementById(obj.id).style.visibility=toVisibility;
	}
	else{
		document.getElementById(obj.id).style.visibility=fromVisibility;
	}
}
//FUNCIÓN PARA CREAR LOS MARCADORES
function createMarker(point,markerTitle, iconColor) {
	if (!iconColor){
		var marker = new GMarker(point);
	}
	else{
		//creo iconos de distintos colores
		switch (iconColor){
			case "iconRed":
				var iconColor = new GIcon();
					iconColor.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
					iconColor.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
					iconColor.iconSize = new GSize(12, 20);
					iconColor.shadowSize = new GSize(22, 20);
					iconColor.iconAnchor = new GPoint(6, 20);
					iconColor.infoWindowAnchor = new GPoint(5, 1);
				break;
			case "iconGreen":
				var iconColor = new GIcon();
					iconColor.image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
					iconColor.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
					iconColor.iconSize = new GSize(12, 20);
					iconColor.shadowSize = new GSize(22, 20);
					iconColor.iconAnchor = new GPoint(6, 20);
					iconColor.infoWindowAnchor = new GPoint(5, 1);
				break;
			case "iconYellow":
				var iconColor = new GIcon();
					iconColor.image = "http://labs.google.com/ridefinder/images/mm_20_orange.png";
					iconColor.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
					iconColor.iconSize = new GSize(12, 20);
					iconColor.shadowSize = new GSize(22, 20);
					iconColor.iconAnchor = new GPoint(6, 20);
					iconColor.infoWindowAnchor = new GPoint(5, 1);
				break;
			case "iconBlue":
				var iconColor = new GIcon();
					iconColor.image = "http://labs.google.com/ridefinder/images/mm_20_blue.png";
					iconColor.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
					iconColor.iconSize = new GSize(12, 20);
					iconColor.shadowSize = new GSize(22, 20);
					iconColor.iconAnchor = new GPoint(6, 20);
					iconColor.infoWindowAnchor = new GPoint(5, 1);
				break;
			case "iconBase":
				var iconColor = new GIcon();
					iconColor.image = "/images/mm_20_base.png";
					iconColor.iconSize = new GSize(14, 8);
					iconColor.iconAnchor = new GPoint(7, 4);
				break;
		}
		var marker = new GMarker(point, iconColor);
	}
GEvent.addListener(marker, "click", function() {
	if (markerTitle != null) {
		marker.openInfoWindowHtml(markerTitle);
	}
});
return marker;
}
//función para mostrar planos de como llegar en los viajes de dia
function gDayTripsMap() {
	if (GBrowserIsCompatible()) {
		var map;
		var directions;
		
		map = new GMap2(document.getElementById("mapDaytripsDIV"));
		map.addControl(new GSmallMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7)));
		map.setCenter(new GLatLng(40.416730809425594, -3.7035512924194336), 8);
		directions = new GDirections(map);
		directions.load(dayTripsDirections);
	}
}
//función para mostrar planos de establecimientos de alojamiento
//aquí utilizo el markersHotels.xml que tiene los hoteles
function gHotelMap(obj, ID, languaje, popUp, zoomFactor) {
	if (GBrowserIsCompatible()) {
		if (popUp==true){
			//Creamos "closeDIVControl", un control para cerrar la ventana
			function closeDIVControl() {}
			closeDIVControl.prototype = new GControl();
			closeDIVControl.prototype.initialize = function(map) {
				var container = document.createElement("div");
				var img=new Image();
				img.src="/images/cross.gif";
				img.style.width = "17px";
				img.style.height = "17px";
				
				var closeDIV = document.createElement("div");
				this.setButtonStyle_(closeDIV);
				container.appendChild(closeDIV);
				closeDIV.appendChild(img);
				GEvent.addDomListener(closeDIV, "click", function() {
					document.getElementById('mapDIV').style.visibility='hidden';
				});
				map.getContainer().appendChild(container);
				return container;
			}
			closeDIVControl.prototype.getDefaultPosition = function() {
			  return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 7));
			}
			closeDIVControl.prototype.setButtonStyle_ = function(button) {
			  button.style.backgroundColor = "white";
			  button.style.border = "1px solid black";
			  button.style.width = "17px";
			  button.style.height = "17px";
			  button.style.cursor = "pointer";
			}

			//Inicializar el mapa y los controles
			var map = new GMap2(document.getElementById('mapDIV'));
			map.addControl(new GSmallMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7)));
			map.addControl(new GMenuMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(33, 7)));
			map.addControl(new closeDIVControl());
		}
		else{
			var map = new GMap2(document.getElementById("hotelMapDIV"));
			map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7)));
			map.addControl(new GMenuMapTypeControl());
			//ajusta el tamaño del mapa y pon encima de todo el layer del mapa popUp
			document.getElementById('hotelMapDIV').style.height = ((getTopPosition(document.getElementById('pagEnd')) + document.getElementById('pagEnd').offsetHeight) -15 - getTopPosition(document.getElementById('hotelMapDIV'))) + 'px';
		}
		//Leo los marcadores de markers.xml
		GDownloadUrl("/public/2009/markersHotels.xml", function(data) {
			var sEstabsConDispo = document.getElementById('ctlMenu_hddnEstabsConDispo').value + ID.substring(4) + ';';//añado el establecimiento actual a la lista de disponibles por si no lo estaba (xa asegurarme de q crea marcador...)
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			var URL = '';
			//centro el mapa
			for (var i = 0; i < markers.length; i++) {
				var set = markers[i].getAttribute("set");
				if (markers[i].getAttribute("ID") == ID) {
					map.setCenter(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))), zoomFactor);
					//crea la sombra gris para el marker centrado del establecimiento en cuestión
					map.addOverlay(createMarker(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))),null,"iconBase"));
				}
			}
			for (var i = 0; i < markers.length; i++) {
				var IDonlyNumber = markers[i].getAttribute("ID").substring(4);
				if (sEstabsConDispo.indexOf(IDonlyNumber)!=-1){//muestra sólo los marcadores para los establecimientos con disponibilidad...
					var set = markers[i].getAttribute("set");
					if (set == 'hotel' || set == 'hostal' || set == 'apartahotel' || set == 'apartamento') {
						var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),	parseFloat(markers[i].getAttribute("lng")));
						var address = markers[i].getAttribute("address");
						if (languaje == 'sp') {
							URL = "<a href=" + markers[i].getAttribute("URL_sp") + ">" + markers[i].getAttribute("placeName_sp") + "</a>";
						}
						else{
							URL = "<a href=" + markers[i].getAttribute("URL_en") + ">" + markers[i].getAttribute("placeName_en") + "</a>";
						}
						var markerTitle = "<p align=left class=parrafoSaltoCeroPx><b>" + URL + "</b><br>" + address + "</p>";
						switch (set){
							case "hotel":
								var marker = createMarker(point,markerTitle,"iconRed");
								break;
							case "hostal":
								var marker = createMarker(point,markerTitle,"iconGreen");
								break;
							case "apartahotel":
								var marker = createMarker(point,markerTitle,"iconYellow");
								break;
							case "apartamento":
								var marker = createMarker(point,markerTitle,"iconBlue");
								break;
						}
						map.addOverlay(marker);
					}
				}
			}
		});
		if (popUp==true){
			//posicionar de mapDIV dentro de la página
			//var mapDIV_positionX = getMiddlePointX(obj);
			//var mapDIV_positionY = getTopPosition(obj);
			var minWidth = getLeftPosition(document.getElementById('tableContent'))+(document.getElementById('mapDIV').offsetWidth/2);
			var maxWidth = (getLeftPosition(document.getElementById('tableContent'))+document.getElementById('tableContent').offsetWidth)-(document.getElementById('mapDIV').offsetWidth/2);
			if (mouseX > maxWidth){
				document.getElementById('mapDIV').style.left = ((getLeftPosition(document.getElementById('tableContent'))+document.getElementById('tableContent').offsetWidth)-document.getElementById('mapDIV').offsetWidth) + 'px';
			}
			//else if (mouseX < minWidth){
			//	document.getElementById('mapDIV').style.left = mouseX + 'px';
			//}
			else{
				document.getElementById('mapDIV').style.left = (mouseX-(document.getElementById('mapDIV').offsetWidth/2)) + 'px';
			}
			if (mouseY+document.getElementById('mapDIV').offsetHeight > getTopPosition(document.getElementById('tableFooter'))){
				document.getElementById('mapDIV').style.top = (mouseY-document.getElementById('mapDIV').offsetHeight-8) + 'px';
			}
			else{
				document.getElementById('mapDIV').style.top = (mouseY+obj.offsetHeight) + 'px';
			}
			document.getElementById('mapDIV').style.visibility='visible';
		}
	}
}
//función que abre popup con plano de ubicación para direcciones
//aquí utilizo el markersGuia.xml que tiene los marcadores usados en la guía
function gMap(obj, languaje, markerTitle, latitude, longitude, zoomFactor, markerSet) {
	if (GBrowserIsCompatible()) {
		if (latitude == null || longitude == null){
			latitude = "40.418569904183";
			longitude = "-3.70224897120523";
		}
		//almaceno el contenido del texto pinchado en variable. Compatible con todos los browsers
		if(document.all){
			var clickedText = obj.innerText;
		} else{
			var clickedText = obj.textContent;
		}
		
		//Creamos "closeDIVControl", un control para cerrar la ventana
		function closeDIVControl() {}
		closeDIVControl.prototype = new GControl();
		closeDIVControl.prototype.initialize = function(map) {
			var container = document.createElement("div");
			var img=new Image();
			img.src="/images/cross.gif";
			img.style.width = "17px";
			img.style.height = "17px";
			
			var closeDIV = document.createElement("div");
			this.setButtonStyle_(closeDIV);
			container.appendChild(closeDIV);
			closeDIV.appendChild(img);
			GEvent.addDomListener(closeDIV, "click", function() {
				document.getElementById('mapDIV').style.visibility='hidden';
			});
			map.getContainer().appendChild(container);
			return container;
		}
		closeDIVControl.prototype.getDefaultPosition = function() {
		  return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 7));
		}
		closeDIVControl.prototype.setButtonStyle_ = function(button) {
		  button.style.backgroundColor = "white";
		  button.style.border = "1px solid black";
		  button.style.width = "17px";
		  button.style.height = "17px";
		  button.style.cursor = "pointer";
		}
		
		//Inicializar el mapa y los controles       
		var map = new GMap2(document.getElementById('mapDIV'));
		map.addControl(new GSmallMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7)));
		map.addControl(new GMenuMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(33, 7)));
		map.addControl(new closeDIVControl());
		map.setCenter(new GLatLng(latitude, longitude), zoomFactor);
		
		//Leo los marcadores de markers.xml
		if (markerSet != null) {
			GDownloadUrl("/markersGuia.xml", function(data) {
				var xml = GXml.parse(data);
				var markers = xml.documentElement.getElementsByTagName("marker");
				var inURL = '';
				var outURL = '';				
				for (var i = 0; i < markers.length; i++) {
					var set = markers[i].getAttribute("set");
					if (set == markerSet) {
						var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),	parseFloat(markers[i].getAttribute("lng")));
						var address = markers[i].getAttribute("address");
						if (languaje == 'sp') {
							var placeName = markers[i].getAttribute("placeName_sp");
							if (markers[i].getAttribute("URL_sp") != '') {
								var inURL = "<a href=" + markers[i].getAttribute("URL_sp") + ">";
								var outURL = "</a>";
							}
						}
						else {
							var placeName = markers[i].getAttribute("placeName_en");
							if (markers[i].getAttribute("URL_en") != '') {
								var inURL = "<a href=" + markers[i].getAttribute("URL_en") + ">";
								var outURL = "</a>";
							}
						}
						var markerTitle = "<b>" + inURL + placeName + outURL + "</b><br>" + address;
						var marker = createMarker(point,markerTitle);
						map.addOverlay(marker);
						if (clickedText == address) {
							latitude = parseFloat(markers[i].getAttribute("lat"));
							longitude = parseFloat(markers[i].getAttribute("lng"));								
						}
					}
				}
			});
		}
		else{
			if (markerTitle != null) {
				if (markerTitle.toUpperCase() == clickedText.toUpperCase()) {
					var markerTitle = "<b>" + markerTitle + "</b>";
				}
				else {
					var markerTitle = "<b>" + markerTitle + "</b><br>" + clickedText;
				}
			}
			var marker = createMarker(new GLatLng(latitude, longitude),markerTitle);
			map.addOverlay(marker);
		}
		map.panTo(new GLatLng(latitude, longitude));
		//posicionar de mapDIV dentro de la página
		var minWidth = getLeftPosition(document.getElementById('tableContent'))+(document.getElementById('mapDIV').offsetWidth/2);
		var maxWidth = (getLeftPosition(document.getElementById('tableContent'))+document.getElementById('tableContent').offsetWidth)-(document.getElementById('mapDIV').offsetWidth/2);
		if (mouseX > maxWidth){
			document.getElementById('mapDIV').style.left = ((getLeftPosition(document.getElementById('tableContent'))+document.getElementById('tableContent').offsetWidth)-document.getElementById('mapDIV').offsetWidth) + 'px';
		}
		//else if (mouseX < minWidth){
		//	document.getElementById('mapDIV').style.left = mouseX + 'px';
		//}
		else{
			document.getElementById('mapDIV').style.left = (mouseX-(document.getElementById('mapDIV').offsetWidth/2)) + 'px';
		}
		if (mouseY+document.getElementById('mapDIV').offsetHeight > getTopPosition(document.getElementById('tableFooter'))){
			document.getElementById('mapDIV').style.top = (mouseY-document.getElementById('mapDIV').offsetHeight-8) + 'px';
		}
		else{
			//document.getElementById('mapDIV').style.top = (mouseY+obj.offsetHeight) + 'px';
			document.getElementById('mapDIV').style.top = (mouseY+8) + 'px';
		}
		document.getElementById('mapDIV').style.visibility='visible';
	}
}




/*
#########################################################################################333
#########################################################################################333
DESDE AQUÍ HASTA EL FINAL ESTÁ EL CÓDIGO NECESARIO PARA EL MENÚ LATERAL
http://www.aspandjavascript.co.uk/javascript/
#########################################################################################333
#########################################################################################333
*/
var ns4;
var op5;
var op6;
var agt;
var mac;
var ie;
var saf;
var mac_ie;


function sniffBrowsers() {
	ns4 = document.layers;
	op5 = (navigator.userAgent.indexOf("Opera 5")!=-1) ||(navigator.userAgent.indexOf("Opera/5")!=-1);
	op6 = (navigator.userAgent.indexOf("Opera 6")!=-1) ||(navigator.userAgent.indexOf("Opera/6")!=-1);
	agt=navigator.userAgent.toLowerCase();
	mac = (agt.indexOf("mac")!=-1);
	ie = (agt.indexOf("msie") != -1);
	saf = (agt.indexOf("safari") != -1);
	mac_ie = mac && ie;
}
function getStyleObject(objectId, doc) {
    if(document.getElementById && document.getElementById(objectId)) {
	return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
	return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
		return getObjNN4(document,objectId);
    } else {
	return false;
    }
}
function changeObjectVisibility(objectId, newVisibility) {
    var styleObject = getStyleObject(objectId, document);
    if(styleObject) {
	styleObject.visibility = newVisibility;
	return true;
    } else {
	return false;
    }
}
function findImage(name, doc) {
	var i, img;
	for (i = 0; i < doc.images.length; i++) {
    	if (doc.images[i].name == name) {
			return doc.images[i];
		}
	}
	for (i = 0; i < doc.layers.length; i++) {
    	if ((img = findImage(name, doc.layers[i].document)) != null) {
			img.container = doc.layers[i];
			return img;
    	}
	}
	return null;
}
function getImage(name) {
	if (document.layers) {
    	return findImage(name, document);
	}
	return null;
}
function getObjNN4(obj,name)
{
	var x = obj.layers;
	var foundLayer;
	for (var i=0;i<x.length;i++)
	{
		if (x[i].id == name)
		 	foundLayer = x[i];
		else if (x[i].layers.length)
			var tmp = getObjNN4(x[i],name);
		if (tmp) foundLayer = tmp;
	}
	return foundLayer;
}
function getElementHeight(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.height;
	} else {
		var elem;
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (op5) {
			xPos = elem.style.pixelHeight;
		} else {
			xPos = elem.offsetHeight;
		}
		return xPos;
	} 
}
function getElementWidth(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.width;
	} else {
		var elem;
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (op5) {
			xPos = elem.style.pixelWidth;
		} else {
			xPos = elem.offsetWidth;
		}
		return xPos;
	}
}
function getElementLeft(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.pageX;
	} else {
		var elem;
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		xPos = elem.offsetLeft;
		tempEl = elem.offsetParent;
  		while (tempEl != null) {
  			xPos += tempEl.offsetLeft;
	  		tempEl = tempEl.offsetParent;
  		}
		return xPos;
	}
}
function getElementTop(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.pageY;
	} else {
		if(document.getElementById) {	
			var elem = document.getElementById(Elem);
		} else if (document.all) {
			var elem = document.all[Elem];
		}
		yPos = elem.offsetTop;
		tempEl = elem.offsetParent;
		while (tempEl != null) {
  			yPos += tempEl.offsetTop;
	  		tempEl = tempEl.offsetParent;
  		}
		return yPos;
	}
}
function getImageLeft(myImage) {
	var x, obj;
	if (document.layers) {
		var img = getImage(myImage);
    	if (img.container != null)
			return img.container.pageX + img.x;
		else
			return img.x;
  	} else {
		return getElementLeft(myImage);
	}
	return -1;
}
function getImageTop(myImage) {
	var y, obj;
	if (document.layers) {
		var img = getImage(myImage);
		if (img.container != null)
			return img.container.pageY + img.y;
		else
			return img.y;
	} else {
		return getElementTop(myImage);
	}
	return -1;
}
function getImageWidth(myImage) {
	var x, obj;
	if (document.layers) {
		var img = getImage(myImage);
		return img.width;
	} else {
		return getElementWidth(myImage);
	}
	return -1;
}
function getImageHeight(myImage) {
	var y, obj;
	if (document.layers) {
		var img = getImage(myImage);
		return img.height;
	} else {
		return getElementHeight(myImage);
	}
	return -1;
}
function moveXY(myObject, x, y) {
	obj = getStyleObject(myObject)
	if (ns4) {
		obj.top = y;
 		obj.left = x;
	} else {
		if (op5) {
			obj.pixelTop = y;
 			obj.pixelLeft = x;
		} else {
			obj.top = y + 'px';
 			obj.left = x + 'px';
		}	
	}
}
function changeClass(Elem, myClass) {
	var elem;
	if(document.getElementById) {
		var elem = document.getElementById(Elem);
	} else if (document.all){
		var elem = document.all[Elem];
	}
	if (op5 || op6) elem.style.className = myClass;
	else elem.className = myClass;
}
function changeBGColour(myObject, colour) {
	if (ns4) {
		var obj = getObjNN4(document, myObject);
		obj.bgColor=colour;
	} else {
		var obj = getStyleObject(myObject);
		if (op5) {
			obj.background = colour;	
		} else {
			obj.backgroundColor = colour;
		}	
	}
}
function changeImage(target, source) {
	var imageObj;
	
	if (ns4) {
		imageObj = getImage(target);
		if (imageObj) imageObj.src = eval(source).src; 
	} else {
		imageObj = eval('document.images.' + target);
		if (imageObj) imageObj.src = eval(source).src; 
	}
}

var timeOn = null;

var numMenus = 50;

var currentMenuNo = 0;
var menuActive = new Array(numMenus);
var tier = new Array(numMenus);
var borderMod = new Array(numMenus);
var offClass = new Array(numMenus);
var onClass = new Array(numMenus);
var offColours = new Array(numMenus);
var onColours = new Array(numMenus);
var labelBulletName = new Array(numMenus);
var menuType = new Array(numMenus);
var menus = new Array(numMenus);

function bulletPoint(offURL, onURL) {	
	this.offImage = new Image();
	this.offImage.src = offURL;
	this.onImage = new Image();
	this.onImage.src = onURL;
	this.URL = String(offURL);
}
function openMe(newin) {
        flyout=window.open(newin,"flyout","")
}
function borderCell(B) {
	return '<td width="1" bgcolor="' + B + '" style="width:1px;height:1px;"></td>';
}
function borderRow(B, C) {
	return '<tr><td height="1" colspan="' + C + '" bgcolor="' + B + '" style="width:1px;height:1px;"></td></tr>';
}
function menuOver() {
	clearTimeout(timeOn);
}
function menuOut() {
	timeOn = setTimeout("hideAllMenus()", 1000);
}
function showMenu(m_No, eventObj) {
	hideAllMenusTier(tier[m_No]-1);
	var borderModSize = borderMod[m_No];
	if (ns4) {
		changeBGColour('menuLabel' + m_No, onColours[m_No]);
	} else {
		changeBGColour('labelCell' + m_No, onColours[m_No]);
		changeClass('menuLink' + m_No, onClass[m_No]);
	}
	if (labelBulletName[m_No] != null){
		changeImage('menuBullet' + m_No, labelBulletName[m_No] + '.onImage');
	}
	menuActive[m_No] = true;
	if (menuType[m_No] != 'blank') {
		if (ns4) labelObj = 'menuLabel'+m_No;
		else labelObj = 'labelCell'+m_No;
		
		x = getElementLeft(labelObj)-borderModSize;
		y = getElementTop(labelObj) + getElementHeight(labelObj);

		if (menus[m_No].align == 'center')  x = x + ((getElementWidth(labelObj)-getElementWidth('menu'+m_No))/2);
		if (menus[m_No].align == 'right') x = x + ((getElementWidth(labelObj)-getElementWidth('menu'+m_No))) + (borderModSize*2);

		moveXY('menu' + m_No, x, y);

		if(changeObjectVisibility('menu' + m_No, 'visible')) return true;
    	else return false;
	}
}
function showMenuSide(m_No, eventObj, myTier) {
	hideAllMenusTier(tier[m_No]-1);
	var borderModSize = borderMod[m_No];
	if (ns4) {
		changeBGColour('menuLabel' + m_No, onColours[m_No]);
	} else {
		changeBGColour('labelCell' + m_No, onColours[m_No]);
		changeClass('menuLink' + m_No, onClass[m_No]);
	}
	if (labelBulletName[m_No] != null) changeImage('menuBullet' + m_No, labelBulletName[m_No] + '.onImage');
	menuActive[m_No] = true;
	if (menuType[m_No] != 'blank') {
		if (ns4) {
			labelObj = 'menuLabel'+m_No;
		} else {
			labelObj = 'labelCell'+m_No;
			if (mac_ie) labelObj = 'labelRow'+m_No;
		}
		x = getElementLeft(labelObj);
		y = getElementTop(labelObj) - borderModSize;

		if (menus[m_No].align=='right') x = x + getElementWidth(labelObj);
		else x = x - getElementWidth('menu'+m_No);

		moveXY('menu' + m_No, x, y);
	
		if(changeObjectVisibility('menu' + m_No, 'visible')) return true;
	    else return false;
	}
}
function hideAllMenus() {
	for (var i = 1; i < (currentMenuNo+1); i++) {
		if(menuActive[i] == true) hideMenu(i);
	}
}
function hideAllMenusTier(myTier) {
	for (var i = 1; i < (currentMenuNo+1); i++) {
		if( tier[i] > myTier && menuActive[i] == true) hideMenu(i);
	}
}
function hideMenu(m_No) {
	if (ns4) {
		changeBGColour('menuLabel' + m_No, offColours[m_No]);
	} else {
		changeBGColour('labelCell' + m_No, offColours[m_No]);
		changeClass('menuLink' + m_No, offClass[m_No]);
	}
	if (labelBulletName[m_No] != null){
		changeImage('menuBullet' + m_No, labelBulletName[m_No] + '.offImage');
	}
	menuActive[m_No] = false;
	
	if(changeObjectVisibility('menu' + m_No, 'hidden'))  return true;
    else return false;
}
function menuBar(barName, barWidth, orientation, i_Bor, o_Bor) {
	this.numLabels = 0;
	this.i_Bor = i_Bor;	
	this.o_Bor = o_Bor;	
	this.height = 16;
	this.orientation = orientation;
	this.labelText = new Array();
	this.rowText = new Array();
	this.offClass = 'MenuLabelLink';
	this.onClass = 'MenuLabelLinkOn';
	this.bulletAlign = 'right';
	this.targetType = 'self'; // self, iframe, frame, new
	this.targetFrame = '_self'; // _self, _blank or (i)frame name
	
	
	this.addLabel = function(bullet, labelText, menuNo, labelWidth, offColour, onColour, labelURL, align) {
		this.numLabels += 1;
		tier[menuNo] = 0;		
		if (this.o_Bor != null) borderMod[menuNo] = 1;	
		else borderMod[menuNo] = 0;	
		if (menuNo != null) {
			onColours[menuNo] = onColour;
			offColours[menuNo] = offColour;
			onClass[menuNo] = this.onClass;
			offClass[menuNo] = this.offClass;
			labelBulletName[menuNo] = bullet;
		}
		
		temp = new String('');
		this.rowText[this.numLabels] = new String('');
		if (this.orientation == 'vertical') this.rowText[this.numLabels] += '<tr id="labelRow'+ menuNo + '">';

		temp += '<td style="cursor:pointer;" id="labelCell' + menuNo + '" width="'+ labelWidth + '" bgcolor="' + offColour + '" valign="middle" height="' + this.height + '" ';
		
		if (!ns4) {
			temp += ' onmouseout="menuOut(); "onmouseover="menuOver(); ';
			if (this.orientation == 'vertical') temp += 'return !showMenuSide(' + menuNo + ', event, tier[' + menuNo + ']);" ';
			else temp += 'return !showMenu(' + menuNo + ', event);" ';
		} 		
		temp +='>';
		
		if (ns4) {
			temp +='<ilayer><layer onmouseout="menuOut();" onmouseover="menuOver(); ';
			if (this.orientation == 'vertical') temp +='return !showMenuSide(' + menuNo + ', event, tier[' + menuNo + ']);" ';
			else temp +='return !showMenu(' + menuNo + ', event);" ';
		} else {
			temp +='<div ';
		}
		
		//temp += ' class="myMenuLabel' + align + '" width="' + labelWidth + '"  id="menuLabel' + menuNo +'"><a href="' + labelURL +'" target="' + this.targetFrame + '" class="' + this.offClass + '" id="menuLink' + menuNo +'">';
		if (labelURL != null){
			temp += ' class="myMenuLabel' + align + '" width="' + labelWidth + '"  id="menuLabel' + menuNo +'"><a href="' + labelURL +'" target="' + this.targetFrame + '" class="' + this.offClass + '" id="menuLink' + menuNo +'">';
			if (bullet != null) temp += '<img src="' + eval(bullet + ".URL") + '" border="0" align="' + this.bulletAlign + '" class="labelBulletClass" id="menuBullet' + menuNo + '" name="menuBullet' + menuNo + '">';
			temp += labelText + '</a>';
		}
		else{
			temp += ' class="myMenuLabel' + align + '" width="' + labelWidth + '"  id="menuLabel' + menuNo +'"><a class="' + this.offClass + '" id="menuLink' + menuNo +'">';
			if (bullet != null) temp += '<img src="' + eval(bullet + ".URL") + '" border="0" align="' + this.bulletAlign + '" class="labelBulletClass" id="menuBullet' + menuNo + '" name="menuBullet' + menuNo + '">';
			temp += labelText + '</a>';
		}
		
		if (ns4) temp += '</layer></ilayer>';
		else temp += '</div>';
		
		temp += '</td>';		
		this.labelText[this.numLabels] = new String(temp);

	}
	
	this.writeMenuBar = function() {
		o_Bor = this.o_Bor;
		i_Bor = this.i_Bor;
		menuBarStr = new String();
		menuBarStr += '<div id="' + barName + '"><table border="0" cellpadding="0" cellspacing="0" >';
		if (this.orientation == 'vertical') {
			if (o_Bor != null) menuBarStr += borderRow(o_Bor, 3);
			for (var count = 0; count < this.numLabels; count++) {		
				menuBarStr += this.rowText[count+1];
				if (o_Bor != null) menuBarStr += borderCell(o_Bor);
				menuBarStr += this.labelText[count+1];
				if (o_Bor != null) menuBarStr += borderCell(o_Bor);				
				menuBarStr += '</tr>';
				if (i_Bor != null && count < (this.numLabels-1)) {
					if (o_Bor != null) menuBarStr += '<tr>' + borderCell(o_Bor) + borderCell(i_Bor) + borderCell(o_Bor) + '</tr>';
					else menuBarStr += borderRow(i_Bor, 1);
				}
			}
			if (o_Bor != null) menuBarStr += borderRow(o_Bor, 3);
		} else {
			if (o_Bor != null) {
				if (i_Bor != null) menuBarStr += borderRow(o_Bor, ((this.numLabels*2)+1));
				else menuBarStr += borderRow(o_Bor, (this.numLabels+2));
			}
			menuBarStr += '<tr>';
			if (o_Bor != null) menuBarStr += borderCell(o_Bor); 
			for (var count = 0; count < this.numLabels; count++) {		
				menuBarStr += this.rowText[count+1];			
				menuBarStr += this.labelText[count+1];
				if (i_Bor != null && count < (this.numLabels-1)) {
					menuBarStr += borderCell(i_Bor);
				}
			}
			if (o_Bor != null) {
				menuBarStr += borderCell(o_Bor);
				if (i_Bor != null) menuBarStr += borderRow(o_Bor, ((this.numLabels*2)+1));
				else menuBarStr += borderRow(o_Bor, (this.numLabels+2)); 
			}
			menuBarStr +=  '</tr>';
		}
		menuBarStr += '</table></div>';
		document.write(menuBarStr);
	}
}
function menu(menuWidth, orientation, i_Bor, o_Bor) {
	currentMenuNo += 1;
	this.numItems = 0;
	this.i_Bor = i_Bor;	
	this.o_Bor = o_Bor;	
	this.height = 16;
	this.itemText = new Array();
	this.rowText = new Array();
	this.align = 'left';
	this.offClass = 'MenuItemLink';
	this.onClass = 'MenuItemLinkOn';
	this.orientation = orientation;
	this.bulletAlign = 'right';
	this.targetType = 'self'; // self, iframe, frame, new
	this.targetFrame = '_self'; // _self, _blank or (i)frame name

	this.addItem = function(bullet, itemText, menuNo, itemWidth, offColour, onColour, itemURL, align) {
		this.numItems += 1;
		
		var tempId = currentMenuNo + '_' + this.numItems;
	
		if (menuNo != null) {
			tier[menuNo] = tier[currentMenuNo] + 1;
			onColours[menuNo] = onColour;
			offColours[menuNo] = offColour;
			onClass[menuNo] = this.onClass;
			offClass[menuNo] = this.offClass;
			labelBulletName[menuNo] = bullet;
			if (this.o_Bor != null) borderMod[menuNo] = 1;	
			else borderMod[menuNo] = 0;	
		}
		
		temp = new String('');
		this.rowText[this.numItems] = new String('');
		
		if (menuNo != null) {
			if (this.orientation =='vertical') this.rowText[this.numItems] += '<tr id="labelRow'+ menuNo + '">';
			temp += '<td id="labelCell'+ menuNo + '" width="'+ itemWidth + '" bgcolor="' + offColour + '" valign="middle" height="' + this.height + '" ';
		} else {
			if (this.orientation =='vertical') this.rowText[this.numItems] += '<tr>';
			temp += '<td id="itemCell' + tempId + '" width="'+ itemWidth + '" bgcolor="' + offColour + '" valign="middle" height="' + this.height + '" class="' + align + 'Menu"';
		}		
		if (!ns4) {
			if (menuNo != null) {			
				if (this.orientation =='vertical') temp += ' onmouseover="menuOver(); return !showMenuSide(' + menuNo + ', event, tier[' + menuNo + ']); " onmouseout=" menuOut(); "';
				else temp += ' onmouseover="menuOver(); return !showMenu(' + menuNo + ', event); " onmouseout=" menuOut(); "';
			} else {
				temp += ' onmouseover="changeClass(\'menuLink' + tempId + '\',\'' + this.onClass + '\'); hideAllMenusTier(tier[' + currentMenuNo + ']); menuOver();  changeBGColour(\'itemCell' + tempId + '\', \'' + onColour + '\'); changeImage(\'menuItemBullet' + tempId + '\', \'' + bullet + '.onImage\'); " onmouseout="menuOut(); changeClass(\'menuLink' + tempId + '\',\'' + this.offClass + '\'); changeBGColour(\'itemCell' + tempId + '\', \'' + offColour + '\'); changeImage(\'menuItemBullet' + tempId + '\', \'' + bullet + '.offImage\'); "';
			}
		} 
		temp += '>';
				
		if (ns4) {
			temp += '<ilayer><layer ';
			if(menuNo != null) { 
				if (this.orientation == 'vertical') temp += 'onmouseover="menuOver(); return !showMenuSide(' + menuNo + ', event, tier[' + menuNo + ']);" onmouseout="menuOut();"';
				else temp += 'onmouseover="menuOver(); return !showMenu(' + menuNo + ', event);" onmouseout="menuOut();"';
			} else {
				temp += 'onmouseover="hideAllMenusTier(tier[' + currentMenuNo + ']); menuOver(); changeBGColour(\'menuItem' + tempId + '\', \'' + onColour + '\'); changeImage(\'menuItemBullet' + tempId + '\', \'' + bullet + '.onImage\'); " onmouseout="menuOut(); changeBGColour(\'menuItem' + tempId + '\', \'' + offColour + '\'); changeImage(\'menuItemBullet' + tempId + '\', \'' + bullet + '.offImage\'); "';
			}
		} else {
			temp +='<div ';
		}
		temp += ' class="myMenuItem' + align + '" width="' + itemWidth + '"';
	
		if (menuNo != null) temp += ' id="menuLabel' + menuNo +'"';
		else temp += ' id="menuItem' + tempId +'"';
		
		temp += '><a href="' + itemURL +'" target="' + this.targetFrame + '" class="' + this.offClass + '"';
		if (menuNo != null) temp += 'id="menuLink' + menuNo +'"';
		else temp += 'id="menuLink' + tempId +'"';
		temp +='>';
		
		if (bullet != null) {
			if (menuNo != null) temp += '<img src="' + eval(bullet + ".URL") + '" border="0" align="' + this.bulletAlign + '" class="labelBulletClass" id="menuBullet' + menuNo + '" name="menuBullet' + menuNo + '">';
			else temp += '<img src="' + eval(bullet + ".URL") + '" border="0" align="' + this.bulletAlign + '" class="labelBulletClass" id="menuItemBullet' + tempId + '" name="menuItemBullet' + tempId + '">';
		}
			
		temp += itemText + '</a>';
		
		if (ns4) temp += '</layer></ilayer>';
		else temp += '</div>';

		temp += '</td>';	
		this.itemText[this.numItems] = new String(temp);
	}
	
	this.writeMenu = function() {
		var menuStr = new String();
		o_Bor = this.o_Bor;
		i_Bor = this.i_Bor;
		if (this.numItems == 0) menuType[currentMenuNo] = 'blank';
		else menuType[currentMenuNo] = 'default';
		menuStr += '<div id="menu' + currentMenuNo + '" name="menu' + currentMenuNo + '" class="myMenu" width="' + menuWidth + '"';
		if (!ns4) menuStr += ' style="width:' + menuWidth + 'px;"';
		menuStr+= '><table border="0" cellpadding="0" cellspacing="0" width="' + menuWidth + '">';
		if (this.orientation == 'vertical') {
			if (o_Bor != null) menuStr += borderRow(this.o_Bor, 3);
			for (var count = 0; count < this.numItems; count++) {
				menuStr += this.rowText[count+1];
				if (o_Bor != null) menuStr += borderCell(o_Bor);
				menuStr += this.itemText[count+1];
				if (o_Bor != null) menuStr += borderCell(o_Bor);
				menuStr += '</tr>';
				if (i_Bor != null && count < (this.numItems-1)) {
					if (o_Bor != null) menuStr += '<tr>' + borderCell(o_Bor) + borderCell(i_Bor) + borderCell(o_Bor) + '</tr>';
					else menuStr += borderRow(i_Bor, 1);
				}
			}
			if (o_Bor != null) menuStr += borderRow(o_Bor, 3);
		} else {
			if (o_Bor != null) {
				if (i_Bor != null) menuStr += borderRow(o_Bor, ((this.numItems*2)+1));
				else menuStr += borderRow(o_Bor, (this.numItems+2));
			}
			menuStr += '<tr>';
			if (o_Bor != null) menuStr += borderCell(o_Bor); 
			for (var count = 0; count < this.numItems; count++) {		
				menuStr += this.rowText[count+1];			
				menuStr += this.itemText[count+1];
				if (i_Bor != null && count < (this.numItems-1)) {
					menuStr += borderCell(i_Bor);
				}
			}
			if (o_Bor != null) {
				menuStr += borderCell(o_Bor);
				if (i_Bor != null) menuStr += borderRow(o_Bor, ((this.numItems*2)+1));
				else menuStr += borderRow(o_Bor, (this.numItems+2)); 
			}
			menuStr +=  '</tr>';
		}
		menuStr += '</table></div>';
		document.write(menuStr);
	}
}
function doMenu(){
	sniffBrowsers();
	
	menuItemBullet = new bulletPoint("/images/arrowBlack.gif","/images/arrowRed.gif");
	labelBullet = new bulletPoint("/images/arrowBlack.gif","/images/arrowRed.gif");
	subMenuBullet = new bulletPoint("/images/arrowBlack.gif","/images/arrowRed.gif");
	
	menu_SP = new menuBar(null,135, 'vertical', '#ffffff', null);
	menu_SP.addLabel('labelBullet', 'Informaci&oacute;n b&aacute;sica', 1, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_SP.addLabel('labelBullet', 'Alojamiento', 2, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_SP.addLabel('labelBullet', 'Transporte', 3, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_SP.addLabel('labelBullet', 'Entretenimiento', 4, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_SP.addLabel('labelBullet', 'Museos', 5, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_SP.addLabel('labelBullet', 'Gays y lesbianas', 6, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_SP.addLabel('labelBullet', 'Viajes de d&iacute;a', 8, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_SP.addLabel('labelBullet', 'Comercio', 9, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_SP.height = 16;
	
	menu_EN = new menuBar(null,135, 'vertical', '#ffffff', null);
	menu_EN.addLabel('labelBullet', 'Basic information', 11, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_EN.addLabel('labelBullet', 'Accommodation', 12, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_EN.addLabel('labelBullet', 'Transport', 13, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_EN.addLabel('labelBullet', 'Entertainment', 14, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_EN.addLabel('labelBullet', 'Museums', 15, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_EN.addLabel('labelBullet', 'Gay & lesbian', 16, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_EN.addLabel('labelBullet', 'Day trips', 18, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_EN.addLabel('labelBullet', 'Shopping', 19, 133, '#ffffff', '#EAEAEA', null, 'left');
	menu_EN.height = 16;
			
	menus[1] = new menu(152, 'vertical', '#CCCCCC', '#999999');
	menus[1].height = 16;
	menus[1].addItem(null, 'Historia', null, 150, '#ffffff', '#EAEAEA', '/sp/informacion/madrid-historia.aspx', 'left');
	menus[1].addItem(null, 'Clima', null, 150, '#ffffff', '#EAEAEA', '/sp/informacion/madrid-clima.aspx', 'left');
	menus[1].addItem(null, 'Seguridad', null, 150, '#ffffff', '#EAEAEA', '/sp/informacion/madrid-seguridad.aspx', 'left');
	menus[1].addItem(null, 'Tel&eacute;fonos de inter&eacute;s', null, 150, '#ffffff', '#EAEAEA', '/sp/informacion/madrid-telefonos.aspx', 'left');
	menus[1].addItem(null, 'Informaci&oacute;n tur&iacute;stica', null, 150, '#ffffff', '#EAEAEA', '/sp/informacion/madrid-info-turismo.aspx', 'left');
	menus[1].writeMenu();
	
	menus[2] = new menu(132, 'vertical', '#CCCCCC', '#999999');
	menus[2].height = 16;
	menus[2].addItem(null, 'Hoteles', null, 130, '#ffffff', '#EAEAEA', '/sp/alojamiento/madrid-hoteles.aspx', 'left');
	menus[2].addItem(null, 'Hostales', null, 130, '#ffffff', '#EAEAEA', '/sp/alojamiento/madrid-hostales.aspx', 'left');
	menus[2].addItem(null, 'Apartamentos', null, 130, '#ffffff', '#EAEAEA', '/sp/alojamiento/madrid-apartamentos.aspx', 'left');
	menus[2].addItem(null, 'Apartahoteles', null, 130, '#ffffff', '#EAEAEA', '/sp/alojamiento/madrid-apartahoteles.aspx', 'left');
	menus[2].addItem(null, 'Alojamiento - Todo', null, 130, '#ffffff', '#EAEAEA', '/sp/alojamiento/madrid-hoteles-info.aspx', 'left');
	menus[2].writeMenu();
	
	menus[3] = new menu(192, 'vertical', '#CCCCCC', '#999999');
	menus[3].height = 16;
	menus[3].addItem('labelBullet', 'Llegar y salir de Madrid', 10, 190, '#ffffff', '#EAEAEA', '/sp/transporte/madrid-llegar.aspx', 'left');
	menus[3].addItem(null, 'Moverse por Madrid', null, 190, '#ffffff', '#EAEAEA', '/sp/transporte/madrid-moverse.aspx', 'left');
	menus[3].addItem(null, 'Plano del Metro', null, 190, '#ffffff', '#EAEAEA', '/sp/transporte/madrid-plano-metro.aspx', 'left');
	menus[3].addItem(null, 'Plano de trenes de cercan&iacute;as', null, 190, '#ffffff', '#EAEAEA', '/sp/transporte/madrid-plano-cercanias.aspx', 'left');
	menus[3].writeMenu();
	
	menus[4] = new menu(192, 'vertical', '#CCCCCC', '#999999');
	menus[4].height = 16;
	menus[4].addItem(null, 'Restaurantes con espect&aacute;culo', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-restaurantes-espectaculo.aspx', 'left');
	menus[4].addItem(null, 'Flamenco', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-flamenco.aspx', 'left');
	menus[4].addItem(null, 'Corridas de toros', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-toros.aspx', 'left');
	menus[4].addItem(null, 'F&uacute;tbol', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-futbol.aspx', 'left');
	menus[4].addItem(null, 'M&uacute;sica', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-musica.aspx', 'left');
	menus[4].addItem(null, 'Opera, teatro y espect&aacute;culos', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-espectaculos.aspx', 'left');
	menus[4].addItem(null, 'Cine', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-cine.aspx', 'left');
	menus[4].addItem(null, 'Vida nocturna', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-noche.aspx', 'left');
	menus[4].addItem(null, 'Terrazas', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-terrazas.aspx', 'left');
	menus[4].addItem(null, 'Entretenimiento infantil', null, 190, '#ffffff', '#EAEAEA', '/sp/entretenimiento/madrid-infantil.aspx', 'left');
	menus[4].writeMenu();
	
	menus[5] = new menu(152, 'vertical', '#CCCCCC', '#999999');
	menus[5].height = 16;
	menus[5].addItem(null, 'Museo del Prado', null, 150, '#ffffff', '#EAEAEA', '/sp/museos/madrid-museo-prado.aspx', 'left');
	menus[5].addItem(null, 'Museo Thyssen', null, 150, '#ffffff', '#EAEAEA', '/sp/museos/madrid-museo-thyssen.aspx', 'left');
	menus[5].addItem(null, 'Museo Reina Sof&iacute;a', null, 150, '#ffffff', '#EAEAEA', '/sp/museos/madrid-museo-reina-sofia.aspx', 'left');
	menus[5].addItem(null, 'Otros museos', null, 150, '#ffffff', '#EAEAEA', '/sp/museos/madrid-museos.aspx', 'left');
	menus[5].addItem(null, 'Galer&iacute;as y fundaciones', null, 150, '#ffffff', '#EAEAEA', '/sp/museos/madrid-galerias-fundaciones-arte.aspx', 'left');
	menus[5].writeMenu();
	
	menus[6] = new menu(142, 'vertical', '#CCCCCC', '#999999');
	menus[6].height = 16;
	menus[6].addItem(null, 'Chueca', null, 140, '#ffffff', '#EAEAEA', '/sp/gays-lesbianas/madrid-chueca-gay.aspx', 'left');
	menus[6].addItem(null, 'Bares y restaurantes', null, 140, '#ffffff', '#EAEAEA', '/sp/gays-lesbianas/madrid-bares-restaurantes-gay.aspx', 'left');
	menus[6].addItem(null, 'Comercios', null, 140, '#ffffff', '#EAEAEA', '/sp/gays-lesbianas/madrid-comercios-gay.aspx', 'left');
	menus[6].writeMenu();
	
	menus[7] = new menu(162, 'vertical', '#CCCCCC', '#999999');
	menus[7].height = 16;
	menus[7].addItem(null, 'Madrid de los Austrias', null, 160, '#ffffff', '#EAEAEA', '/sp/paseos/madrid-austrias.aspx', 'left');
	menus[7].addItem(null, 'Salamanca y Retiro', null, 160, '#ffffff', '#EAEAEA', '/sp/paseos/madrid-salamanca-retiro.aspx', 'left');
	menus[7].addItem(null, 'Paseo de la Castellana', null, 160, '#ffffff', '#EAEAEA', '/sp/paseos/madrid-castellana.aspx', 'left');
	menus[7].writeMenu();
	
	menus[8] = new menu(162, 'vertical', '#CCCCCC', '#999999');
	menus[8].height = 16;
	menus[8].addItem(null, 'Toledo', null, 160, '#ffffff', '#EAEAEA', '/sp/viajes/madrid-toledo.aspx', 'left');
	menus[8].addItem(null, 'Segovia', null, 160, '#ffffff', '#EAEAEA', '/sp/viajes/madrid-segovia.aspx', 'left');
	menus[8].addItem(null, 'San Lorenzo del Escorial', null, 160, '#ffffff', '#EAEAEA', '/sp/viajes/madrid-escorial.aspx', 'left');
	menus[8].addItem(null, 'Aranjuez', null, 160, '#ffffff', '#EAEAEA', '/sp/viajes/madrid-aranjuez.aspx', 'left');
	menus[8].addItem(null, 'Chinch&oacute;n', null, 160, '#ffffff', '#EAEAEA', '/sp/viajes/madrid-chinchon.aspx', 'left');
	menus[8].writeMenu();
	
	menus[9] = new menu(142, 'vertical', '#CCCCCC', '#999999');
	menus[9].height = 16;
	menus[9].addItem(null, 'Tiendas y mercados', null, 140, '#ffffff', '#EAEAEA', '/sp/comercio/madrid-tiendas.aspx', 'left');
	menus[9].addItem(null, 'Centros comerciales', null, 140, '#ffffff', '#EAEAEA', '/sp/comercio/madrid-centros-comerciales.aspx', 'left');
	menus[9].addItem(null, 'Rastro', null, 140, '#ffffff', '#EAEAEA', '/sp/comercio/madrid-rastro.aspx', 'left');
	menus[9].writeMenu();
	
	menus[10] = new menu(82, 'vertical', '#CCCCCC', '#999999');
	menus[10].height = 16;
	menus[10].addItem(null, 'Avi&oacute;n', null, 80, '#ffffff', '#EAEAEA', '/sp/transporte/madrid-llegar/avion.aspx', 'left');
	menus[10].addItem(null, 'Tren', null, 80, '#ffffff', '#EAEAEA', '/sp/transporte/madrid-llegar/tren.aspx', 'left');
	menus[10].addItem(null, 'Autob&uacute;s', null, 80, '#ffffff', '#EAEAEA', '/sp/transporte/madrid-llegar/autobus.aspx', 'left');
	menus[10].addItem(null, 'Carretera', null, 80, '#ffffff', '#EAEAEA', '/sp/transporte/madrid-llegar/carretera.aspx', 'left');
	menus[10].writeMenu();
	
	menus[11] = new menu(152, 'vertical', '#CCCCCC', '#999999');
	menus[11].height = 16;
	menus[11].addItem(null, 'History', null, 150, '#ffffff', '#EAEAEA', '/en/information/madrid-history.aspx', 'left');
	menus[11].addItem(null, 'Weather', null, 150, '#ffffff', '#EAEAEA', '/en/information/madrid-weather.aspx', 'left');
	menus[11].addItem(null, 'Safety', null, 150, '#ffffff', '#EAEAEA', '/en/information/madrid-safety.aspx', 'left');
	menus[11].addItem(null, 'Useful numbers', null, 150, '#ffffff', '#EAEAEA', '/en/information/madrid-telephones.aspx', 'left');
	menus[11].addItem(null, 'Tourist information', null, 150, '#ffffff', '#EAEAEA', '/en/information/madrid-tourist-info.aspx', 'left');
	menus[11].writeMenu();
	
	menus[12] = new menu(142, 'vertical', '#CCCCCC', '#999999');
	menus[12].height = 16;
	menus[12].addItem(null, 'Hotels', null, 140, '#ffffff', '#EAEAEA', '/en/accommodation/madrid-hotels.aspx', 'left');
	menus[12].addItem(null, 'Hostels', null, 140, '#ffffff', '#EAEAEA', '/en/accommodation/madrid-hostels.aspx', 'left');
	menus[12].addItem(null, 'Apartments', null, 140, '#ffffff', '#EAEAEA', '/en/accommodation/madrid-apartments.aspx', 'left');
	menus[12].addItem(null, 'Aparthotels', null, 140, '#ffffff', '#EAEAEA', '/en/accommodation/madrid-aparthotels.aspx', 'left');
	menus[12].addItem(null, 'Accommodation - All', null, 140, '#ffffff', '#EAEAEA', '/en/accommodation/madrid-hotels-info.aspx', 'left');
	menus[12].writeMenu();
	
	menus[13] = new menu(202, 'vertical', '#CCCCCC', '#999999');
	menus[13].height = 16;
	menus[13].addItem('labelBullet', 'Arriving & departing', 20, 200, '#ffffff', '#EAEAEA', '/en/transport/madrid-arriving.aspx', 'left');
	menus[13].addItem(null, 'Moving around', null, 200, '#ffffff', '#EAEAEA', '/en/transport/madrid-moving-around.aspx', 'left');
	menus[13].addItem(null, 'Madrid Subway (Metro) map', null, 200, '#ffffff', '#EAEAEA', '/en/transport/madrid-subway-map.aspx', 'left');
	menus[13].addItem(null, 'Madrid trains (Cercan&iacute;as) map', null, 200, '#ffffff', '#EAEAEA', '/en/transport/madrid-trains-map.aspx', 'left');
	menus[13].writeMenu();
	
	menus[14] = new menu(172, 'vertical', '#CCCCCC', '#999999');
	menus[14].height = 16;
	menus[14].addItem(null, 'Dinner with show', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-dinner-show.aspx', 'left');
	menus[14].addItem(null, 'Flamenco', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-flamenco.aspx', 'left');
	menus[14].addItem(null, 'Bullfighting  	', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-bullfighting.aspx', 'left');
	menus[14].addItem(null, 'Soccer', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-soccer.aspx', 'left');
	menus[14].addItem(null, 'Music', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-music.aspx', 'left');
	menus[14].addItem(null, 'Opera, theatre & shows', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-shows.aspx', 'left');
	menus[14].addItem(null, 'Cinema', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-cinema.aspx', 'left');
	menus[14].addItem(null, 'Nightlife', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-nightlife.aspx', 'left');
	menus[14].addItem(null, 'Terraces', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-terraces.aspx', 'left');
	menus[14].addItem(null, 'Children&#39;s entertainment', null, 170, '#ffffff', '#EAEAEA', '/en/entertainment/madrid-children.aspx', 'left');
	menus[14].writeMenu();
	
	menus[15] = new menu(162, 'vertical', '#CCCCCC', '#999999');
	menus[15].height = 16;
	menus[15].addItem(null, 'Prado Museum', null, 160, '#ffffff', '#EAEAEA', '/en/museums/madrid-prado-museum.aspx', 'left');
	menus[15].addItem(null, 'Thyssen Museum', null, 160, '#ffffff', '#EAEAEA', '/en/museums/madrid-thyssen-museum.aspx', 'left');
	menus[15].addItem(null, 'Reina Sof&iacute;a Museum', null, 160, '#ffffff', '#EAEAEA', '/en/museums/madrid-reina-sofia-museum.aspx', 'left');
	menus[15].addItem(null, 'Other museums', null, 160, '#ffffff', '#EAEAEA', '/en/museums/madrid-museums.aspx', 'left');
	menus[15].addItem(null, 'Galleries & foundations', null, 160, '#ffffff', '#EAEAEA', '/en/museums/madrid-art-galleries-foundations.aspx', 'left');
	menus[15].writeMenu();
	
	menus[16] = new menu(142, 'vertical', '#CCCCCC', '#999999');
	menus[16].height = 16;
	menus[16].addItem(null, 'Chueca', null, 140, '#ffffff', '#EAEAEA', '/en/gay-lesbian/madrid-gay-chueca.aspx', 'left');
	menus[16].addItem(null, 'Bars & restaurants', null, 140, '#ffffff', '#EAEAEA', '/en/gay-lesbian/madrid-gay-bars-restaurants.aspx', 'left');
	menus[16].addItem(null, 'Shopping', null, 140, '#ffffff', '#EAEAEA', '/en/gay-lesbian/madrid-gay-shopping.aspx', 'left');
	menus[16].writeMenu();
	
	menus[17] = new menu(142, 'vertical', '#CCCCCC', '#999999');
	menus[17].height = 16;
	menus[17].addItem(null, 'The old city', null, 140, '#ffffff', '#EAEAEA', '/en/walking-tours/madrid-old-city.aspx', 'left');
	menus[17].addItem(null, 'Salamanca & Retiro', null, 140, '#ffffff', '#EAEAEA', '/en/walking-tours/madrid-salamanca-retiro.aspx', 'left');
	menus[17].addItem(null, 'Castellana Avenue', null, 140, '#ffffff', '#EAEAEA', '/en/walking-tours/madrid-castellana.aspx', 'left');
	menus[17].writeMenu();
	
	menus[18] = new menu(162, 'vertical', '#CCCCCC', '#999999');
	menus[18].height = 16;
	menus[18].addItem(null, 'Toledo', null, 160, '#ffffff', '#EAEAEA', '/en/day-trips/madrid-toledo.aspx', 'left');
	menus[18].addItem(null, 'Segovia', null, 160, '#ffffff', '#EAEAEA', '/en/day-trips/madrid-segovia.aspx', 'left');
	menus[18].addItem(null, 'San Lorenzo del Escorial', null, 160, '#ffffff', '#EAEAEA', '/en/day-trips/madrid-escorial.aspx', 'left');
	menus[18].addItem(null, 'Aranjuez', null, 160, '#ffffff', '#EAEAEA', '/en/day-trips/madrid-aranjuez.aspx', 'left');
	menus[18].addItem(null, 'Chinch&oacute;n', null, 160, '#ffffff', '#EAEAEA', '/en/day-trips/madrid-chinchon.aspx', 'left');
	menus[18].writeMenu();
	
	menus[19] = new menu(142, 'vertical', '#CCCCCC', '#999999');
	menus[19].height = 16;
	menus[19].addItem(null, 'Local stores', null, 140, '#ffffff', '#EAEAEA', '/en/shopping/madrid-stores.aspx', 'left');
	menus[19].addItem(null, 'Shopping malls', null, 140, '#ffffff', '#EAEAEA', '/en/shopping/madrid-malls.aspx', 'left');
	menus[19].addItem(null, 'Rastro flea market', null, 140, '#ffffff', '#EAEAEA', '/en/shopping/madrid-rastro-flea-market.aspx', 'left');
	menus[19].writeMenu();
	
	menus[20] = new menu(62, 'vertical', '#CCCCCC', '#999999');
	menus[20].height = 16;
	menus[20].addItem(null, 'Airplane', null, 60, '#ffffff', '#EAEAEA', '/en/transport/madrid-arriving/airplane.aspx', 'left');
	menus[20].addItem(null, 'Train', null, 60, '#ffffff', '#EAEAEA', '/en/transport/madrid-arriving/train.aspx', 'left');
	menus[20].addItem(null, 'Bus', null, 60, '#ffffff', '#EAEAEA', '/en/transport/madrid-arriving/bus.aspx', 'left');
	menus[20].addItem(null, 'Road', null, 60, '#ffffff', '#EAEAEA', '/en/transport/madrid-arriving/road.aspx', 'left');
	menus[20].writeMenu();
	
	menus[1].align='right';
	menus[2].align='right';
	menus[3].align='right';
	menus[4].align='right';
	menus[5].align='right';
	menus[6].align='right';
	menus[7].align='right';
	menus[8].align='right';
	menus[9].align='right';
	menus[10].align='right';
	menus[11].align='right';
	menus[12].align='right';
	menus[13].align='right';
	menus[14].align='right';
	menus[15].align='right';
	menus[16].align='right';
	menus[17].align='right';
	menus[18].align='right';
	menus[19].align='right';
	menus[20].align='right';
	
}


