﻿var isMapEnabled = true;

var wasHotelMapVisible = false;
var arHotelsData, arMarkers = new Array();
var mapCity, mapHotels;

function initCityMap(lat, lng, zoom) {
	if (!GBrowserIsCompatible())
		return;
	setControlVisibility("divMapCityContainer", isMapEnabled);//mapa musi byt videt nez je vytvorena !!!
	mapCity = new google.maps.Map2(document.getElementById("divMapCity"));
	mapCity.setCenter(new GLatLng(lat, lng), zoom);
	
//	var icon = new GIcon();
//	icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
//	icon.iconSize = new GSize(12, 20);
//	icon.shadowSize = new GSize(16, 12);
//	icon.iconAnchor = new GPoint(4, 12);
//	icon.infoWindowAnchor = new GPoint(4, 1);
//	icon.infoShadowAnchor = new GPoint(8, 13);
//	icon.image = "http://www.google.com/mapfiles/marker.png";
//	markerOptions = { icon:icon };  
//	var marker = new GMarker(mapCity.getCenter(), markerOptions);  
//	mapCity.addOverlay(marker);
	mapCity.addOverlay(new GMarker(mapCity.getCenter()));
}
function setupHotelMap(hotelsData){
	arHotelsData = hotelsData;
	mapHotels = null;
	showControl("pLinkMapOfHotelsShow");
	if(wasHotelMapVisible)
		toggleHotelMap(true);
}
function createHotelMap(){
	if( !isMapEnabled || !arHotelsData || !GBrowserIsCompatible())
		return

	setControlVisibility("divMapHotelsContainer", true);//mapa musi byt videt nez je vytvorena !!!
	mapHotels = new google.maps.Map2(document.getElementById("divMapHotels"));
	mapHotels.setCenter(mapCity.getCenter(), 15);
	mapHotels.addControl(new GLargeMapControl());
	mapHotels.addControl(new GScaleControl());
	mapHotels.addControl(new GMapTypeControl());
	mapHotels.clearOverlays();
	
	var tbl = document.getElementById("tableMapHotelsLegend");
	if(arHotelsData.length>0)
		while(tbl.rows.length > 0)
			tbl.deleteRow(0);

	var baseIcon = new GIcon();
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(14, 24);
	baseIcon.shadowSize = new GSize(32, 24);
	baseIcon.iconAnchor = new GPoint(9, 24);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);
	
	var bounds = new GLatLngBounds();

	for(i=0;i<arHotelsData.length;i++)
		if(arHotelsData[i])
			addHotel(tbl, i, arHotelsData[i], bounds, baseIcon);
	if(arHotelsData.length == 1)
		mapHotels.setCenter(new GLatLng(arHotelsData[0].latitude, arHotelsData[0].longitude),13)
	else
		mapHotels.setZoom(mapCity.getBoundsZoomLevel(bounds)+1);
}
function addHotel(tbl, index, hotel, bounds, baseIcon){
	var lastRow = tbl.rows.length;
	var iteration = lastRow;
	var row = tbl.insertRow(lastRow);

	// left cell
	var cellLeft = row.insertCell(0);
	var el = document.createElement('img');
	el.src = 'http://www.google.com/mapfiles/marker' + String.fromCharCode("A".charCodeAt(0) + index) + '.png';
	el.className = 'icon';
	el.onclick = mapHotelMarkerOnClick;
	el.hotel = hotel;
	cellLeft.appendChild(el);
	// right cell
	row.insertCell(1).innerHTML = '<a href="#' + hotel.hotelID + '">' + hotel.name + '</a><br />' + hotel.address + '<br />';
	// mapa
	mapHotels.addOverlay(createMarker(baseIcon, hotel, index, bounds));
}
function createMarker(baseIcon, hotel, index, bounds) {
	var letter = String.fromCharCode("A".charCodeAt(0) + index);  
	var letteredIcon = new GIcon(baseIcon);  
	letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
	markerOptions = { icon:letteredIcon };  
	var point = new GLatLng(hotel.latitude, hotel.longitude);
	var marker = new GMarker(point, markerOptions);  
	GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(getInfoWindowHTML(hotel));  });  
	if(bounds) bounds.extend(point);
	arMarkers[hotel.index] = marker;
	return marker;
}
function mapHotelMarkerOnClick(e, obj){
	if(!mapHotels)
		toggleHotelMap(true, true);
	hotel = event && event.srcElement.hotel ? event.srcElement.hotel : obj;
	mapHotels.panTo(new GLatLng(hotel.latitude, hotel.longitude));
	arMarkers[hotel.index].openInfoWindowHtml(getInfoWindowHTML(hotel));
	window.scrollTo(0,0);
}
function getInfoWindowHTML(hotel)
{
	return "(" + String.fromCharCode("A".charCodeAt(0) + hotel.index) + ") <b>" + hotel.name + "</b><br/>" + hotel.address +"<br/>lat : " + hotel.latitude + ", lng : " + hotel.longitude
}


function toggleHotelMap(s, isInnerCall){
	if(!isMapEnabled || !window.createHotelMap) return
	if(s && !mapHotels)createHotelMap();
	setControlVisibility("divMapHotelsContainer", s);
	setControlVisibility("pLinkMapOfHotelsShow", !s);
	setControlVisibility("pLinkMapOfHotelsHide", s);
	if(isInnerCall) wasHotelMapVisible = s;
}


google.load("maps", "2", {"locale" : "<%=LanguageCode %>"});
if(window.initCityMap)
	google.setOnLoadCallback(initCityMap_Client)
else
	alert('"initCityMap_Client" neni definovane, google mapy disabled!');
