    function Gload(clat, clng, czoom) {
      if (GBrowserIsCompatible()) {
		var polys = [];
		var labels = [];
		var statenames = [];
		var statecontent = [];
		
		GPolygon.prototype.Contains = function(point) {
	        var j=0;
	        var oddNodes = false;
	        var x = point.lng();
	        var y = point.lat();
	        for (var i=0; i < this.getVertexCount(); i++) {
	          j++;
	          if (j == this.getVertexCount()) {j = 0;}
	          if (((this.getVertex(i).lat() < y) && (this.getVertex(j).lat() >= y))
	          || ((this.getVertex(j).lat() < y) && (this.getVertex(i).lat() >= y))) {
	            if ( this.getVertex(i).lng() + (y - this.getVertex(i).lat())
	            /  (this.getVertex(j).lat()-this.getVertex(i).lat())
	            *  (this.getVertex(j).lng() - this.getVertex(i).lng())<x ) {
	              oddNodes = !oddNodes
	            }
	          }
	        }
	        return oddNodes;
	      }
		
        var map = new GMap2(document.getElementById("map"));
		//24.966140159912975/-4.85595703125
        //map.setCenter(new GLatLng(5.96575367, 24.2578125), 2);
		map.setCenter(new GLatLng(clat, clng), czoom);
		map.addControl(new GLargeMapControl());
		map.addMapType(G_PHYSICAL_MAP) ; 
		map.addControl(new GMapTypeControl());
		var ada = new GLatLng(48.216151914451125, 16.36937141418457);
		var adamarker = new GMarker(ada);
		GEvent.addListener(adamarker, "click", function(overlay,point) {
			map.openInfoWindowHtml(ada,decodeURIComponent("%3Cdiv%20style%3D%22font-size%3A%200.85em%3B%22%3E%3Cimg%20src%3D%22fileadmin%2Fimages%2Fflaggen%2Foesterreich.jpg%22%20align%3D%22left%22%20hspace%3D%225%22%20vspace%3D%225%22%20alt%3D%22%22%2F%3EAustrian%20Development%20Agency%3Cbr%20%2F%3E%3Ca%20href%3D%22akteure%2Fada%2Fkontakt.html%22%3EKontakt%20ADA%20%3C%2Fa%3E%3Cbr%20%2F%3E%3Ca%20href%3D%22akteure%2Fada.html%22%3EMehr...%3C%2Fa%3E%3C%2Fdiv%3E"));
		});
		var palaestina = new GLatLng(31.898560,35.200722);
		var palaestinamarker = new GMarker(palaestina);
		GEvent.addListener(palaestinamarker, "click", function(overlay,point) {
			map.openInfoWindowHtml(palaestina,decodeURIComponent("%3Cdiv%20style%3D%22font-size%3A%200.85em%3B%22%3E%3Cimg%20src%3D%22fileadmin%2Fimages%2Fflaggen%2Fpalaestinensische_gebiete.jpg%22%20align%3D%22left%22%20hspace%3D%225%22%20vspace%3D%225%22%20alt%3D%22%22%2F%3EPal%C3%A4stinensische%20Gebiete%3Cbr%20%2F%3E%3Ca%20href%3D%22akteure%2Fada%2Fkontakt.html%23Ramallah%22%3EKoordinationsb%C3%BCro%20Ramallah%3C%2Fa%3E%3Cbr%20%2F%3E%3Ca%20href%3D%22laender-und-regionen%2Fpalaestinensische-gebiete.html%22%3EMehr...%3C%2Fa%3E%3C%2Fdiv%3E"));
		});
		var bruessel = new GLatLng(50.863611,4.384575);
		var bruesselmarker = new GMarker(bruessel);
		GEvent.addListener(bruesselmarker , "click", function(overlay,point) {
			map.openInfoWindowHtml(bruessel,decodeURIComponent("%3Cdiv%20style%3D%22font-size%3A%200.85em%3B%22%3E%3Cimg%20src%3D%22fileadmin%2Fimages%2Fflaggen%2Feu.jpg%22%20align%3D%22left%22%20hspace%3D%225%22%20vspace%3D%225%22%20alt%3D%22%22%2F%3EEU-Verbindungsstelle%3Cbr%20%2F%3E%3Ca%20href%3D%22akteure%2Fada%2Fkontakt.html%23international%22%3EKontakt%3C%2Fa%3E%3Cbr%20%2F%3E%3Ca%20href%3D%22entwicklungspolitik%2Feu.html%22%3EMehr...%3C%2Fa%3E%3C%2Fdiv%3E"));
		});
		GEvent.addListener(map, "click", function(overlay,point) {
	        if (point && map.getCurrentMapType()==G_NORMAL_MAP) {
	          for (var i = 0; i < polys.length; i++) {
	            if (polys[i].Contains(point)) {
				  var found = false;
	              for (var j = 0; j < statenames.length; j++) {
					if (statenames[j] == labels[i]) {
					  found = true;
					  map.openInfoWindowHtml(point,decodeURIComponent(statecontent[j]));
					  break;
					}
				  }
				  if (found == false) {
					map.openInfoWindowHtml(point,labels[i]);
				  }
	            }
	          }
	        }
	      });
		  GEvent.addListener(map, "maptypechanged",function() {
			if(map.getCurrentMapType()==G_NORMAL_MAP) {
				drawCountries();
				
			} else {
				deleteCountries();
			}
		  })
		  getCountries();
      }

	  function getCountries() {
		var request = GXmlHttp.create();
			request.open("GET", "fileadmin/templates/oeza/xml/states.xml", true);
			//request.open("GET", "fileadmin/templates/oeza/xml/states.xml", true);
			request.onreadystatechange = function() {
	        if (request.readyState == 4) {
	          var xmlDoc = GXml.parse(request.responseText);
	          
	          // ========= Now process the polylines ===========
	          var states = xmlDoc.documentElement.getElementsByTagName("state");

	          // read each line
	          for (var a = 0; a < states.length; a++) {
	            // get any state attributes
	            var label  = states[a].getAttribute("name");
	            var colour = states[a].getAttribute("colour");
	            // read each point on that line
	            var points = states[a].getElementsByTagName("point");
	            var pts = [];
	            for (var i = 0; i < points.length; i++) {
	               pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")),
	                                   parseFloat(points[i].getAttribute("lng")));
	            }
	            var poly = new GPolygon(pts,"#000000",1,1,colour,0.5,{clickable:false});
	            polys.push(poly);
	            labels.push(label);
	            map.addOverlay(poly);
	          }
	          // ================================================           
	        }
	      }
	      request.send(null);
		  var request2 = GXmlHttp.create();
			request2.open("GET", "fileadmin/templates/oeza/xml/statecontents.xml", true);
			//request.open("GET", "fileadmin/templates/oeza/xml/states.xml", true);
			request2.onreadystatechange = function() {
	        if (request2.readyState == 4) {
	          var xmlDoc = GXml.parse(request2.responseText);
	          
	          // ========= Now process the polylines ===========
	          var states = xmlDoc.documentElement.getElementsByTagName("state");

	          // read each line
	          for (var a = 0; a < states.length; a++) {
	            // get any state attributes
	            var label  = states[a].getAttribute("name");
	            var text = states[a].firstChild.nodeValue;
				statenames.push(label);
				statecontent.push(text);
	          }
	          // ================================================           
	        }
	      }
	      request2.send(null);
		  map.addOverlay(adamarker);
		  map.addOverlay(palaestinamarker);
		  map.addOverlay(bruesselmarker);
		}
		
		function drawCountries() {
			for (var i = 0; i < polys.length; i++) {
				map.addOverlay(polys[i]);
			}
			map.addOverlay(adamarker);
			map.addOverlay(palaestinamarker);
		  map.addOverlay(bruesselmarker);
		}
		
		function deleteCountries() {
			for (var i = 0; i < polys.length; i++) {
                map.removeOverlay(polys[i]);        			
			}
			map.removeOverlay(adamarker);
			map.removeOverlay(palaestinamarker);
			map.removeOverlay(bruesselmarker);
		}
    }