﻿var map        = null;
var tooltip    = null;
var baseIcon   = null;
var markers    = [];

var imgPath    = "images/";
var initLat    = "23.10192285589681";
var initLon    = "113.37295174598694";
var initZoom   = 12;
var initLegend = "111";
	
function load() {
	if (GBrowserIsCompatible()) {
		
		map = new GMap2(document.getElementById("map"));
		
		/*
		var mapX = ge("x").value.length==0?initLon:ge("x").value;
		var mapY = ge("y").value.length==0?initLat:ge("y").value;
		var mapZoom = ge("l").value.length==0?initZoom:ge("l").value;
		*/
		var mapX = initLon;
		var mapY = initLat;
		var mapZoom = initZoom;
		
		if(!isNaN(defaultX))
			map.setCenter(new GLatLng(defaultY,defaultX),parseInt(mapZoom));
		else
			map.setCenter(new GLatLng(mapY, mapX),parseInt(mapZoom));
		
		map.addControl(new GMapTypeControl());
		map.addControl(new GLargeMapControl());		
		map.enableDoubleClickZoom();
		
	//	Custom tooltip

		tooltip = document.createElement("div");
		tooltip.style.visibility="hidden";
		map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);

		
		map.overlays = [];
		GEvent.addListener(map, "addoverlay", function(o){
			this.overlays.push(o);
			});
		GEvent.addListener(map, "removeoverlay", function(o){
			for(var i = 0; i < this.overlays.length; i++)
				if(this.overlays[i] === o)
					return this.overlays.splice(i,1);
			});
		GEvent.addListener(map, "clearoverlays", function(){
			this.overlays = [];
			});

		loadVenues(); //	Load Markers
		venueDisplayAll(); //	Show all checked venue types
		if(!isNaN(defaultX)){
			markers[defaultHotelIndex].openInfoWindowHtml(venueList[defaultHotelIndex][4]);
			currentObj=defaultHotelIndex;
		}
	}
}


//加载数据
function loadVenues() {
	markers[markers.length] = createMarkerCC();
	for(var i = 0; i < venueList.length; i++) {
		if(undefined != venueList[i]) {  
			markers[markers.length] = createMarker(i);
		}
	}
}

var currentObj=-1;

function getInfo(hotel){
	var ret="";
	ret+= "<a href=\"/hotel/" + hotel[8] + ".htm\" target=\"_blank\">" + hotel[3] + "</a> " + hotel[4] + " &nbsp;&nbsp;<br />";
//	if(hotel[6].length>0)ret+="To Liuhua: " + hotel[6] + "<br />";
	if(hotel[7].length>0)
	ret+="To Pazhou exhibition: " + hotel[7] + "<br />";
	if(hotel[9]=="0" && hotel[10]=="0")
		ret+="Price Range: N/A";
	else if(hotel[9]=="0")
		ret+="Price Range: $" + hotel[10];
	else if(hotel[10]=="0")
		ret+="Price Range: $" + hotel[9];
	else
		ret+="Price Range: $" + hotel[9] + " - $" + hotel[10];
	return ret;
}

function createMarkerCC() {
	var markLat;
	var markLng;

	var itemName;
	var point = null;

	markLat	 = initLat;
	markLng	 = initLon;

	itemName = "Guangzhou International Convention & Exhibition Center";
	point	 = new GLatLng(markLat, markLng);
	
	var icon	= new GIcon(createIconCC());
	var marker	= new GMarker(point, {icon: icon});

	marker.tooltip = "<div style='background:#FFF4C8;color:#000000; white-space: nowrap; padding:2px; line-height:150%;'>" + itemName + "</div>";

	marker.type	= "hotel" ;

	GEvent.addListener(marker,"mouseover", function() {
		showTooltip(marker);
		});
	GEvent.addListener(marker,"mouseout", function() {
		tooltip.style.visibility="hidden";
		});
	return marker;
} 

function createMarker(i) {
	var markLat;
	var markLng;

	var itemID;
	var itemName;
	var itemInfo;
	var itemType;

	var point = null;

	markLat	 = venueList[i][1];
	markLng	 = venueList[i][0];

	itemID   = venueList[i][2];
	itemName = venueList[i][3];
	itemInfo = getInfo(venueList[i]);
	itemType = venueList[i][5];
	point	 = new GLatLng(markLat, markLng);
	
	var icon	= new GIcon(createIcon(i));
	var marker	= new GMarker(point, {icon: icon});

	marker.tooltip = "<div style='background:#FFF4C8;color:#000000; white-space: nowrap; padding:2px; line-height:150%;'>" + itemName + "</div>";

	marker.type	= itemType ;

	GEvent.addListener(marker,"mouseover", function() {
		marker.openInfoWindowHtml(itemInfo);
		//showTooltip(marker);
		});
	GEvent.addListener(marker,"mouseout", function() {
		//tooltip.style.visibility="hidden";
		});

	GEvent.addListener(marker,"click", function() {
		//marker.openInfoWindowHtml(itemInfo);
	});
	
	return marker;
} //	End function

function createIconCC() {
	baseIcon = new GIcon();
	baseIcon.image = imgPath + "zhanguan.png";

	baseIcon.shadow     = imgPath + "shadow_venue.png";
	baseIcon.shadowSize = new GSize(35, 23);

	baseIcon.iconSize   = new GSize(20, 22);
	baseIcon.iconAnchor = new GPoint(6, 22);
	baseIcon.infoWindowAnchor = new GPoint(7, 2);

	return baseIcon;
}

function createIcon(i) {
	var vType;
	var vID;

	vType = venueList[i][5];
	vID = venueList[i][2];

	baseIcon = new GIcon();
	baseIcon.image = vType;
	baseIcon.image = imgPath + baseIcon.image + ".png";

	baseIcon.shadow     = imgPath + "shadow_venue.png";
	baseIcon.shadowSize = new GSize(35, 23);

	baseIcon.iconSize   = new GSize(19, 24);
	baseIcon.iconAnchor = new GPoint(6, 24);
	baseIcon.infoWindowAnchor = new GPoint(7, 2);

	return baseIcon;
}

function venueDisplay(venueIn) {
	if(map) {
		var venueID ;
		var venueCx = true;

		venueID = venueIn.id;
		venueCx = venueIn.checked;

		for(var i = 0; i<markers.length; i++) {
			var marker = markers[i];

			if (marker.type==venueID) {
				if(venueCx) {	
					map.removeOverlay(marker);	//	In case of existing marker
					map.addOverlay(marker);					
				} else {
					map.removeOverlay(marker);
				}
			}
		}
	}	//	If Map
}

function venueDisplayAll() {
	var vTypeList = new Array("hotel", "restaurant", "shopping");
	var vElement  = null;

	for(var vt = 0; vt < vTypeList.length; vt++) {
		vElement = {id:vTypeList[vt],checked:true};
		if(vElement) {
			if (parseInt(initLegend.charAt(vt)) ) {				
				vElement.checked = true;					//	Check venue box
				venueDisplay(vElement);						//	Map venues
			}
		}
	}
}


function showTooltip(marker) {
	tooltip.innerHTML = marker.tooltip;
	var point  = map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
	var offset = map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor = marker.getIcon().iconAnchor;
	var width  = 0;//marker.getIcon().iconSize.width;
	var height = tooltip.clientHeight;
	var pos    = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y + anchor.y - (height*1.5)+10));
	pos.apply(tooltip);
	tooltip.style.visibility = "visible";
}

function ge(id){return document.getElementById(id);}

