	var map; //ge-map
	var marker;  //array with markers
	var info;  //array with infos
	var icons;  //array with icons
	var sidebar_html=""; // <-- don't remove the "" ! html for sidebar
	var train_size = 44;
	var train_icon='zug.png';

	//Fills an array with icon-urls. Icons are arrows
	//Direction like keys on numeric keypad (8=north,6=east, 3=southeast)
	//5 is anchor-symbol
	function prepareIcons() {
		var point = new GPoint(10, 10);
		var size = new GSize(20, 20);
		var icons = new Array(10);
		for(var i = 1; i < 10; i++) {
			icons[i] = new GIcon();
			icons[i].image = "http://www.vesseltracker.com/images/googlemaps/icon"+i+".png";
			icons[i].iconAnchor = point;
			icons[i].iconSize = size;
			icons[i].infoWindowAnchor = point;
			}
		icons[10] = new GIcon();
		icons[10].image = train_icon;
		icons[10].iconAnchor = new GPoint(train_size/2, train_size/2);
		icons[10].iconSize = new GSize(train_size, train_size);
		icons[10].infoWindowAnchor = point;
		
		return icons;
	}



	function onLoad()
	{
		if (GBrowserIsCompatible())
		{
			var params = getUrlParams();
			var lat = params['lat'];
			var lon = params['lon'];
			if (params['size'] != null) train_size = params['size'];
			if (params['icon'] != null)
			{
				if (params['icon'] == 1) train_icon = 'zug.png';
				if (params['icon'] == 2) train_icon = 'zug3.png';
				
			}

			icons = prepareIcons();
			var z = parseInt(params['z']);
			marker = new Array();
			info = new Array();
			//map = new GMap2(document.getElementById("map"),{mapTypes: [G_MAP_TYPE,G_SATELLITE_TYPE]});
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.setCenter(new GLatLng(lat, lon), z);
			window.setTimeout("reloadMap()",90000);
			loadVessels(icons);
			loadTrains(icons);
		}
		else
		{
			alert("Your browser is not compatible with Google Maps. Please use the Internet Explorer 7 or Mozilla Firefox.");
		}
	}


	function reloadMap()
	{
		map.clearOverlays(),
		marker = new Array();
		info = new Array();
		loadVessels(icons);
		loadTrains(icons);
		window.setTimeout("reloadMap()",90000);

	}



	//Opens description on map
	function opener(i) {
		marker[i].openInfoWindowHtml(info[i]);
		}

	//returns function to open description
	function makeOpenerCaller(i) {
		return function() {
			opener(i);
			}
	}


	//creates a marker, adds marker to map
	function createMarker(point, icon, i) {
		marker[i] = new GMarker(point, icon);
		GEvent.addListener(marker[i], 'click', makeOpenerCaller(i));
		map.addOverlay(marker[i]);
	}
	
	//Encodes Shipname to url to vesseltracker
	//replace all " " with "-"
	function encodeShipnameForUrl(name)
	{
    		tokens = name.split(" ");
    		size = tokens.length;
    		if(size>0) ret = tokens[0];
    		for(i=1; i<size; i++)
    		{
        		ret += "-";
        		ret += tokens[i];
    		}
    		return ret;
	}	
		
	//QUEEN MARY 2 => Queen Mary 2		
	function encodeShipname(name)
	{
		var parts = name.split(" ");
		var ret = "";
		for (part in parts)
		{
			if (parts[part] == "MV")
			{
				ret += parts[part];
			}
			else
			{
				var namepart = parts[part];
				var head = namepart.substring(0,1);
				var tail = namepart.substring(1);
				ret += " " +  head.toUpperCase() + tail.toLowerCase();
			}
		}
		if (ret ==" Schleswig-holstein") ret = "Schleswig-Holstein";
		return ret;
	}

		
		
	//Reads parameters from url
	function getUrlParams()
	{
		var strVars = window.location.search;
		strVars = strVars.replace("?","");
		var splitVars = new Array();
		var vars = new Array();
		splitVars = strVars.split("&");
		for(i=0;i<splitVars.length;i++)
		{
			var tmp = splitVars[i].split("=");
			var nname = tmp[0];
			vars[nname] = tmp[1];
		}
		return vars;
	}
	
	function loadTrains(icons)
	{
		var request = GXmlHttp.create();
		var params = getUrlParams();
		var jetzt = new Date();
		var ts = jetzt.getTime();
		request.open("GET","zug.xml?ts="+ts,true); 
		request.onreadystatechange = function()
		{
			if (request.readyState == 4) //success
			{
				var xmlDoc = request.responseXML;
				var placemarkElements = xmlDoc.documentElement.getElementsByTagName("Placemark");
				for(var i = 0; i < placemarkElements.length; i++) {

					
					var icon = parseInt("5");
					var name_array = placemarkElements[i].getElementsByTagName("name")[0].firstChild.data.split(" ");
					var t_name = name_array[0];
					if (t_name == "GPSD805009") t_name = "NEG T4";
					if (t_name == "GPSD067016") t_name = "NEG 629 / DL2";
					if (t_name == "GPSD430766") continue;
					var date_seen_array = name_array[1].split("/");
					var date_seen = date_seen_array[1] + "." + date_seen_array[0] + "." + date_seen_array[2];
					var time_seen = name_array[2] + " " + name_array[3];

					var position_array = placemarkElements[i].getElementsByTagName("coordinates")[0].firstChild.data.split(",");
					var t_lat = position_array[1];
					var t_lon = position_array[0];
					var pt = new GLatLng(parseFloat(t_lat),parseFloat(t_lon));
					var info_text = "";

					var description_array = placemarkElements[i].getElementsByTagName("description")[0].firstChild.data.split(" ");
					info_text = "<b>" + t_name + "</b><br/>";
					info_text += "<small>";
					info_text += date_seen + "<br/>" + time_seen  + "<br/>";
					//info_text += description_array[0].replace("Speed=","") + " km/h";
					info_text += "</small>";
					info[i+100] = info_text;
					createMarker(pt, icons[10], i+100);
				}
			}
		}
		request.send(null);
	}
	
	//Loads shipdata from xml file and shows ships on map
	function loadVessels(icons) 
	{
		var request = GXmlHttp.create();
		var params = getUrlParams();
		var jetzt = new Date();
		var ts = jetzt.getTime();

		
		if (params['file'] == null)
		{
		  return;
		}
		
		
		request.open("GET", "http://www.vesseltracker.com/aisserver/googleMapsNew/" + params["file"] + "_default.xml?id=" + ts, true);
		//request.open("GET","schiffe.xml",true); 


		request.onreadystatechange = function()
		{
			if (request.readyState == 4) //success
			{
				var xmlDoc = request.responseXML;
				var markerElements = xmlDoc.documentElement.getElementsByTagName("marker");

				sidebar_html = "- ";

				for(var i = 0; i < markerElements.length; i++) {
					var pt = new GLatLng(parseFloat(markerElements[i].getAttribute("lat")), parseFloat(markerElements[i].getAttribute("lng")));
					var icon = parseInt(markerElements[i].getAttribute("icon"));
					var name = markerElements[i].getAttribute("name");
					
					//Create URL to vessel
					if (markerElements[i].getAttribute("imo") != null)
					{
					shipURL = "http://www.vesseltracker.com/de/Ships/" + encodeShipnameForUrl(name) + "-" + markerElements[i].getAttribute("imo") + ".html";
					}
					else
					{
					shipURL = "http://www.vesseltracker.com/de/Ships/" + encodeShipnameForUrl(name) + "-I" + markerElements[i].getAttribute("id") + ".html";
					}
				
					if (markerElements[i].getAttribute("imo") != null && markerElements[i].getAttribute("imo") == "7909619")
					{
						name += " 4";
					}
					//Create Info-Box for vessel
					var info1 = "<strong><a href=\"" + shipURL + "\" target=\"_blank\">" + name + "</a></strong><br>";
						if (markerElements[i].getAttribute("last") != null) { info1 += "letzte Sichtung: " + markerElements[i].getAttribute("last") + " "; }
						
					var info2 = "";
					var name_extension = "";

					if (markerElements[i].getAttribute("v") != null) { info2 += "Geschwindigkeit: " +	markerElements[i].getAttribute("v") + "  " ; }
					if (markerElements[i].getAttribute("call") != null) { info2 += "Rufzeichen: " +	markerElements[i].getAttribute("call") + "<br/>" ; }

					if (markerElements[i].getAttribute("imo") != null)
					{ 
						var imo = markerElements[i].getAttribute("imo");
						info2 += "IMO-Nr.: " +	imo + "<br/>" ; 
						
						//There are two vessels with same name
						if (imo == "8802105")
						{
							name_extension = " (NPDG)";
						}
						if (imo == "9102758")
						{
							name_extension = " (WDR)";
						}
					}
					
					if (markerElements[i].getAttribute("length") != null) { info2 += "L&auml;nge: " +	markerElements[i].getAttribute("length") + "<br/>" ; }
					if (markerElements[i].getAttribute("width") != null) { info2 += "Breite: " +	markerElements[i].getAttribute("width") + "<br/>" ; }
					info[i] = info1 + "<br>" + info2;
					
					//create marker
					createMarker(pt, icons[icon], i);

					//Add vessel to sidebar
					sidebar_html += "<a style='color:#555555' href='javascript:opener(" + i + ")'>" + encodeShipname(name) + name_extension + "</a> - ";
				
					
				}
				var elemSidebar = document.getElementById("sidebar");
				elemSidebar.innerHTML = sidebar_html;
			}
		}
		request.send(null);
	}
		
	

