var DOM = (typeof document.getElementById=="undefined")?false:true;
var map = false;

var locations = new Hashtable();

function gmap_init(w, h) {
 if (typeof GBrowserIsCompatible!='function') {return false;}
 map = new GMap2(document.getElementById("map"), {size:new GSize(w, h)});
}

function gmap_load(w, h, lat, long) {
 gmap_init(w, h);
 if (!map) { return false; }
 if (GBrowserIsCompatible()) {
	map.setCenter(new GLatLng(parseFloat(lat), parseFloat(long)), 14);
	map.addControl(new GLargeMapControl());
	//map.addControl(new GMapTypeControl(),new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(80, 10)));
	map.addControl(new GMapTypeControl());
 }
}

// id : [tooltip, lat, long, DUNNO?, mapicon, location_id]

function setMarkers() {
 locations.moveFirst();
 if (locations.hasNext()) {
 do {
	var pid = locations.getKey();
	var val = locations.getValue();

val['tooltip'] = 'TODO';

	var gPoint = new GLatLng(parseFloat(val['lat']), parseFloat(val['long']));
	var marker = createMarker(gPoint, pid, Url.decode(val['name']), val['mapicon']);
	if (marker != null) { map.addOverlay(marker); }

 } while(locations.hasNext());
 }
//alert(locations)
}

function createMarker(gPoint, pid, tooltip, mapicon) {
 var url = '/images/';
 var gIcon = new GIcon();

 var a = {
	'RED':'marker_standard_red.png',
	'RED_V':'marker_red_v.png',
	'GRAY':'marker_standard_gray.png',
	'SHOPPING':'marker_shopping.png',
	'GREEN':'marker_standard_green.png',
	'GREEN_B':'marker_green_b.png',
	'GREEN_M':'marker_green_m.png',
	'GREEN_N':'marker_green_n.png',
	'GREEN_G':'marker_green_g.png',
	'GREEN_D':'marker_green_d.png',
	'GREEN_P':'marker_green_p.png',
	'GREEN_S':'marker_green_s.png',
	'BLUE':'marker_standard_blue.png',
	'BLUE_A':'marker_blue_a.png',
	'BLUE_F':'marker_blue_f.png',
	'BLUE_S':'marker_blue_s.png',
	'BLUE_U':'marker_blue_u.png',
	'YELLOW':'marker_standard_yellow.png',
	'YELLOW_M':'marker_yellow_m.png',
	'HOTEL':'hotel_m.png',
	'SHOP':'marker_shop.png',
	'SHOP_RED':'marker_shop_rot.png'
 };

 var w, h;
 for (i in a) {
	if (i==mapicon) {
		gIcon.image = url+a[i];
		w = 20; h = 20;
		if (i=='SHOP' || i=='SHOP_RED') {
			w=15; h=15;
		}
		break;
	}
 }

 if (!gIcon.image) {
       gIcon.image = url+mapicon;
       w = 80; h = 50;
 }

 gIcon.iconSize = new GSize(w,h);
 gIcon.iconAnchor = new GPoint(w/2, h);

 var marker = new GMarker(gPoint, { icon:gIcon, title:tooltip, draggable:false } );

 GEvent.addListener(marker, "mouseover", function() {
	//showTooltip(tooltip);
 });

 GEvent.addListener(marker, "mouseout", function() {
	//hideTooltip();
 });

 GEvent.addListener(marker, "click", function() {
	_min_max_Map(1);
	// must add param to ldpano, so it will be counted
//	if (window.ldpano) {
//		ldpano(pid,1);
//	} else {
		document.location = '/start/'+pid;
//	}
//	document.pano.vcdPanoExecute('pano.leash=lock;loadPano(/pano.swf?xml_file=/bin/pano.fast?pano=1-208-1-1,100,fade);');

	//alert(pid);
 });

 return marker;
}

function _min_max_Map(w) {
	if (!window.ldpano) {
		document.location = '/start?mo=y';
		return;
	}
	if (w) {
			$E('map').style.display = 'none';
			$E('map').style.zIndex = '0';
	} else {
		if ($E('map').style.display == 'none') {
			$E('map').style.display = 'block';
			$E('map').style.zIndex = '999';
		} else {
			$E('map').style.display = 'none';
			$E('map').style.zIndex = '0';
		}
	}
}

function mkMap(w, h, lat, long) {

 var par = $E('cpane');
 if (!par) { return; }

 var mblock = $0.createElement('DIV');
 mblock.setAttribute('id', 'map');

 par.appendChild(mblock);

//<div id="map" class="dr5" style="left: 30px; width: 797px; height: 437px; position: absolute; z-index: 0;"></div>

 mblock.className = 'classname';
 mblock.style.visibility = 'hidden';
 mblock.style.zIndex = '0';
 mblock.style.width = '797px';
 mblock.style.height = '437px';
 mblock.style.position = 'absolute';

 var cb = function(success) {
	if (success.getAttribute('status')==1) {
		var location_nodes = success.getElementsByTagName('location');
		for (var i=0; i<location_nodes.length; i++) {

			var pid = location_nodes[i].getAttribute('pid');
			var o = new Object;
			for (var k=0; k<location_nodes[i].attributes.length; k++) {
				var att = location_nodes[i].attributes[k].nodeName;
				var val = location_nodes[i].attributes[k].nodeValue;
				if (att == 'pid') { continue; }
				o[att] = val;
			}
			locations.put(pid, o);
		}

		gmap_load(w, h, lat, long);
		setMarkers();

		mblock.style.visibility = 'visible';
		mblock.style.display = 'none';
		if (location.search.substr(1,location.search.length).indexOf('mo')>-1) {
			mblock.style.display = 'block';
		}

//		__test()

	} else {
//		alert("Fehler: "+success.firstChild.nodeValue);
	}
 };
 var asr_ro = new $0.asr();
 var param = 'do=getlocations';
 asr_ro.req('/bin/data.fast', param, cb);
 return true;
}

function __test()
{
 var str = '';
 locations.moveFirst();
 if (locations.hasNext()) {
 do {
	var pid = locations.getKey();
	var val = locations.getValue();

	str += "<p>"+pid+"<br />";

	val['tooltip'] = 'TODO';

	str += 'lat=' + parseFloat(val['lat']) + "</br>";
	str += 'long=' + parseFloat(val['long']) + "</br>";
	str += 'tooltip=' + val['tooltip'] + "</br>";
	str += 'mapicon=' + val['mapicon'] + "</br>";

	str += "</p>";

 } while(locations.hasNext());
 }

 $E('debug').innerHTML = str;
}
