var map;
var mgr;
resize();
window.onresize = resize;
window.onunload = GUnload;
window.onload = loadMap;

function resize(){
	var windowSize = getInnerWidth();
	$('left').setStyle({
	  width: 198+"px",
	  height: windowSize[1]-191-30+"px",
	  left: 0+"px",
	  right: windowSize[0]-198+"px",
	  top: 191+"px",
	  bottom: 30+"px"
	});
	$('map').setStyle({
	  width: windowSize[0]-396+"px",
	  height: windowSize[1]-191-30+"px",
	  left: 198+"px",
	  right: 198+"px",
	  top: 191+"px",
	  bottom: 30+"px"
	});
	$('right').setStyle({
	  width: 198+"px",
	  height: windowSize[1]-191-30+"px",
	  left: windowSize[0]-198+"px",
	  right: 0+"px",
	  top: 191+"px",
	  bottom: 30+"px"
	});
}

function getInnerWidth(){
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}
	return new Array(x, y);
}

function showCoordinates() {
	$('mapInfo').update("Breitengrad: "+Math.round(map.getCenter().lat()*1000000)/1000000+"<br />L&auml;ngengrad: "+Math.round(map.getCenter().lng()*1000000)/1000000+"<br />Zoomfaktor: "+map.getZoom());
}

function loadMap() {
	if (GBrowserIsCompatible()) {
        map = new GMap2($('map'));
        map.enableScrollWheelZoom();
        map.enableDoubleClickZoom();
        map.checkResize();
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
        map.setCenter(new GLatLng(45.706179, -35.859375), 3);
		map.setMapType(G_HYBRID_MAP);
		map.addControl(new GOverviewMapControl(new GSize(100,100)));
		showCoordinates();
        GEvent.addListener(map, "move", showCoordinates);
        mgr = new GMarkerManager(map);
        window.setTimeout(setupMarkers, 0);
	} else {
		alert("Fehler, die Google Maps API ist nicht mit Ihrem Browser kompatibel!");
	}
}

function setupMarkers() {
	GDownloadUrl("php/googleMarkers.php", function(data) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("marker");
		for (var i = 0; i < markers.length; i++) {
			var id = markers[i].getAttribute("id");
			var name = markers[i].getAttribute("name");
			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
			var zoomFactor = markers[i].getAttribute("zoomFactor");
			var clicks = markers[i].getAttribute("clicks");
			var type = "countries";
			var zoomMin = 0;
			var zoomMax = zoomFactor;
			if(markers[i].getAttribute("countryId")){
				if(zoomFactor <= 8) {
					zoomMin = zoomFactor;
				}else{
					zoomMin = 8;
				}
				zoomMax = 8;
				type = "regions";
			}
			if(markers[i].getAttribute("link")){
				var link = markers[i].getAttribute("link");
				var pdf = markers[i].getAttribute("pdf");
				var sponsor = markers[i].getAttribute("sponsor");
				zoomMin = 9;
				zoomMax = 17;
				type = "cities";
			}
			var marker = createMarker(id, name, point, zoomFactor, clicks, type, link, pdf, sponsor);
			mgr.addMarker(marker, zoomMin, zoomMax);
		}
		mgr.refresh();
	});
}

function createMarker(id, name, point, zoomFactor, clicks, type, link, pdf, sponsor) {

	var blueIcon = new GIcon(G_DEFAULT_ICON);
	blueIcon.image = "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
	blueIcon.iconSize = new GSize(32, 32);


	var marker = new GMarker(point, {title: name, icon:blueIcon});
	marker.myId = id;
	marker.myZoomFactor = zoomFactor;
	marker.myClicks = clicks;
	marker.myType = type;
	if(link != "undefined") {
	    marker.myLink = link;
	    marker.myPDF = pdf;
	    marker.mySponsor = sponsor;
	}
	GEvent.addListener(marker, 'mouseover', function() {
		if(marker.myLink){
			$html = "<strong>"+marker.getTitle()+"</strong><br />"+"Link: <a href='http://"+marker.myLink+"' target='_blank'>Website</a><br />Clicks: "+marker.myClicks;
		}else{
			$html = "<strong>"+marker.getTitle()+"</strong><br />"+"Clicks: "+marker.myClicks;
		}
		if(marker.myPDF == '1') {
		    $html += "<br /><a href='pdf/"+marker.myId+".pdf' target='_blank'>Eventprogramm herunterladen</a><br /><br />";
		}
		if(marker.mySponsor != "") {
		    var sponsors = marker.mySponsor.split(",");
		    $html += "<br /><br />";
		    for(var i=0; i < sponsors.length; i++) {
		        $html += "<a href='link.php?id="+sponsors[i]+"' target='_blank'><img src='images/sponsors/"+sponsors[i]+"_s.jpg' ></a><br />";
		    }
		}
		marker.openInfoWindowHtml($html);
	});
	GEvent.addListener(marker, 'click', function() {
		map.setZoom(parseInt(marker.myZoomFactor) + 1);
		map.panTo(marker.getPoint());
		Ext.Ajax.request({
			url : 'php/updateCounter.php',
			params : { id : marker.myId, kind : marker.myType },
			method: 'POST',
			success: function ( result, request ) {},
			failure: function ( result, request) {}
		});
	});
	return marker;
}

