


// AJAX MAP Functions

var ajaxMapURL = '/nh/Map.Controller?event=1';
var gis_zoom_step_on = '/nh/_css/gfx/icons/gis_zoom_step_on.gif';
var gis_zoom_step_off = '/nh/_css/gfx/icons/gis_zoom_step_off.gif';
var MP_MAPIMAGE_WIDTH = 458;

var AJAXRequestExecuting = false;
var hotelLayersGroup = new HotelLayersGroup("map_gis_container", 158, 290, "hotelLayersGroup");
var mapImageWidth = 224;

function finishMapAjaxLoading() {
	// Finish Ajax loading
	document.getElementById("imageMapLoader").style.display = "none";

	AJAXRequestExecuting = false;
}

function getAjaxMap(command, zoomControlEstate, zoomLevelSelected) {
	document.getElementById("imageNoMap").style.display = "none";
	if (AJAXRequestExecuting || zoomControlEstate == "disabled") { return; }
	AJAXRequestExecuting = true;

	var queryString = "";
	var f = document.gis_parameters;
	var date = new Date();

	// Command
	queryString+= (command != null)?"&command=" + command:"";

	// Actual Map Paramateres
	queryString+= "&latitude=" + f.latitude.value;
	queryString+= "&longitude=" + f.longitude.value;
	queryString+= "&dataSource=" + f.dataSource.value;
	queryString+= "&pins=" + f.pins.value;
	queryString+= "&cityCode=" + f.cityCode.value;

	queryString+= "&zoomLevel=" + ((zoomLevelSelected == null)?f.zoomLevel.value:zoomLevelSelected);

	queryString+= "&TS=" + date.getTime();

	// Ajax loading
	document.getElementById("mapScale").innerHTML = "";
	document.getElementById("mapScaleZero").innerHTML = "";

	document.getElementById("imageMapLoader").style.display = "block";

	// Ajax request
	sendXMLRequest(ajaxMapURL + queryString, processAjaxMap);
}

function processAjaxMap(xmlObject) {
	if (xmlObject == null) {
		finishMapAjaxLoading();
		return;
	}
	var mapa = xmlObject.getElementsByTagName("mapa")[0];
	// Check the MP result, searching for problems
	if (mapa.getElementsByTagName("url")[0].firstChild == null) {
		finishMapAjaxLoading();
		document.getElementById("imageNoMap").style.display = "block";
	}

	var url = mapa.getElementsByTagName("url")[0];
	var f = document.gis_parameters;

	document.getElementById("imageMap").src = url.firstChild.nodeValue;

	// Update Image Map Form Parameters
	f.zoomLevel.value = mapa.getElementsByTagName("zoomLevel")[0].firstChild.nodeValue;
	f.latitude.value = mapa.getElementsByTagName("latitude")[0].firstChild.nodeValue;
	f.longitude.value = mapa.getElementsByTagName("longitude")[0].firstChild.nodeValue;

	// Update Scale
	var mapWidth = mapa.getElementsByTagName("width")[0].firstChild.nodeValue;
	setMapScale(mapWidth);

	// Hot Areas
	var hotAreasList = mapa.getElementsByTagName("hotAreas")[0];
	var newHotAreas = hotAreasList.getElementsByTagName("hotArea");
	hotAreas = new Array(newHotAreas.length);
	for (var i = 0; i < newHotAreas.length; i++) {
		hotAreas[i] = new Array(newHotAreas[i].firstChild.nodeValue, newHotAreas[i].getAttribute("top"), newHotAreas[i].getAttribute("left"));
	}

	var poisData = mapa.getElementsByTagName("pois")[0];
	var pois = poisData.getElementsByTagName("poi");
	if (pois.length != 0) {
		poiToolTipData = new Array();
		for (var i = 0; i < pois.length; i++) {
			poiToolTipData.push(new Array(
									pois[i].getElementsByTagName("id")[0].firstChild.nodeValue,
									pois[i].getElementsByTagName("name")[0].firstChild.nodeValue,
									pois[i].getElementsByTagName("desc")[0].firstChild.nodeValue,
									pois[i].getElementsByTagName("category")[0].firstChild.nodeValue,
									pois[i].getElementsByTagName("type")[0].firstChild.nodeValue
									)
								);
		}
	}

	// Update ZoomLevels
	var zoomLevels = document.getElementById("zoomLevels");
	for (var i = 0; i < zoomLevels.childNodes.length; i++) {
		if (zoomLevels.childNodes[i].nodeName == 'A') {
			for (var j = 0; j < zoomLevels.childNodes[i].childNodes.length; j++) {
				if (zoomLevels.childNodes[i].childNodes[j].nodeName == 'IMG') {
					if (zoomLevels.childNodes[i].childNodes[j].id == f.zoomLevel.value) {
						zoomLevels.childNodes[i].id = "disabled";
						zoomLevels.childNodes[i].childNodes[j].src = gis_zoom_step_on;
					} else {
						zoomLevels.childNodes[i].id = "enabled";
						zoomLevels.childNodes[i].childNodes[j].src = gis_zoom_step_off;
					}
				}
			}
		}
	}
	// EL fin del proces visual de espera se ejecuta en loadLayers
}

function setMapScale(mapWidth) {
	var scale = (mapImageWidth*(mapWidth/MP_MAPIMAGE_WIDTH)).toFixed(2);
	if (scale < 1) {
		document.getElementById("mapScale").innerHTML = (Math.floor(scale * 1000)) + ' ' + 'm ';
		document.getElementById("mapScaleZero").innerHTML = '0' + ' ' + 'm ';
	} else {
		document.getElementById("mapScale").innerHTML = scale + ' ' + 'km ';
		document.getElementById("mapScaleZero").innerHTML = '0' + ' ' + 'km ';
	}
}

function loadLayers() {
	hotelLayersGroup.eraseHotelLayersDivs();
	for (var i = 0; i < hotAreas.length; i++) {
		if (hotAreas[i][0].indexOf('poi_') != -1) { // POI
			hotelLayersGroup.createNewToolTip(hotAreas[i][0], hotAreas[i][1], hotAreas[i][2], toolTipTypePOI);
		} else if (hotAreas[i][0].indexOf('center') != -1) { // POI
			hotelLayersGroup.createNewToolTip(hotAreas[i][0], hotAreas[i][1], hotAreas[i][2], toolTipTypeHotelDetail);
		} else if (hotAreas[i][0].indexOf('location') != -1) { // POI
			hotelLayersGroup.createNewToolTip(hotAreas[i][0], hotAreas[i][1], hotAreas[i][2], toolTipTypeLocation);
		} else { // POI { // Hotel
			hotelLayersGroup.createNewToolTip(hotAreas[i][0], hotAreas[i][1], hotAreas[i][2], toolTipTypeHotel);
		}
	}
	finishMapAjaxLoading();
}