var mmapcenter = new GLatLng(47.713203,13.349975);
var mzoom = 7;
var mmaptype = G_HYBRID_MAP;
var jData = getJson();

function load() {
	var map = document.getElementById("map");
	
	if (GBrowserIsCompatible()) {
		var gmap = new GMap2(map);

		function getFileViaHttp(url, input, info, openInfo) {
			var xmlHttp = false;
			// Mozilla, Opera, Safari sowie Internet Explorer 7
			if (typeof XMLHttpRequest != 'undefined') {
    			xmlHttp = new XMLHttpRequest();
			}
   			// Internet Explorer 6 und älter
			if (!xmlHttp) {
			    try {
        			xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
        			try {
            			xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
        			} catch(e) {
            			xmlHttp  = false;
        			}
    			}
			}
			if (xmlHttp) {
    			xmlHttp.open('GET', url, true);
    			xmlHttp.onreadystatechange = function () {
        			if (xmlHttp.readyState == 4) {
	        			var resptext = xmlHttp.responseText;
	        			coordinates = resptext.split(',');
	        			input.point = new GLatLng(coordinates[0], coordinates[1]);
            			createMarker(input, info, openInfo);
        			}
    			};
    			xmlHttp.send(null);
			}
		}
		
		function createMarker(input, info, openInfo) {
			var marker = new GMarker(input.point);
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml( input.html );
			});
			gmap.addOverlay(marker);
			if (openInfo) { marker.openInfoWindowHtml( info ); }
		}
		
		function createLine(input) {
			var mPolyline = new GPolyline(input.poly, input.color, input.width, input.alpha);
			gmap.addOverlay(mPolyline);
		}
		
		function parseJson(doc) {
			var jsonData = eval("(" + doc + ")");
			mmapcenter = jsonData.mapcenter;
			mzoom = jsonData.zoom;
			mmaptype = jsonData.maptype;
			gmap.setCenter(mmapcenter, mzoom, mmaptype);
			for (var i = 0; i < jsonData.markers.length; i++) {
				createMarker(jsonData.markers[i], jsonData.markers[i].html, (i == 0));
			}
			for (var i = 0; i < jsonData.plines.length; i++) {
				createLine(jsonData.plines[i]);
			}
		}
		
		gmap.addControl( new GLargeMapControl() );
		gmap.addControl( new GMapTypeControl() );
		gmap.addControl( new GOverviewMapControl(new GSize(100,100)) );
		gmap.enableContinuousZoom();
		gmap.enableDoubleClickZoom();

		gmap.setCenter(mmapcenter, mzoom, mmaptype);
		parseJson(jData);
		
	} else {
		alert("Sorry, your Browser cannot handle Google Maps");
	}
}
window.onload = load;
window.unload = GUnload;