var baseIcon = new GIcon();
baseIcon.iconSize = new GSize(32, 32);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);

var map = null;

function initEmptyMap(strid) {

    if (GBrowserIsCompatible()) {

        map = new GMap2(document.getElementById(strid));

		// Groningen, Laan Corpus den Hoorn
        map.setCenter(new GLatLng(53.195274,6.545084), 16);

        // nivigatie
        map.addControl(new GLargeMapControl());

        // switch satteliet / straatmap
        map.addControl(new GMapTypeControl());

        map.setMapType(map.getMapTypes()[2]);

    }

    return false;

}

function initSmallMap(strid) {

    if (GBrowserIsCompatible()) {

        map = new GMap2(document.getElementById(strid));

		// Groningen, Laan Corpus den Hoorn
        map.setCenter(new GLatLng(53.195274,6.545084), 16);

        // navigatie
        map.addControl(new GSmallMapControl());

        // switch satteliet / straatmap
        map.addControl(new GMapTypeControl());

        map.setMapType(map.getMapTypes()[2]);

    }

    return false;

}

function loadMarkersByXML(xmlUrl,strid) {
    if (GBrowserIsCompatible()) {

        map.clearOverlays(); // bestaande puntjes wissen

//        map = new GMap2(document.getElementById(strid));

        var bounds = new GLatLngBounds;

        map.enableDoubleClickZoom();
        map.enableContinuousZoom();

//        map.setCenter(new GLatLng(0, 0), 2);

        // nivigatie
//        map.addControl(new GLargeMapControl());

        // switch satteliet / straatmap
//		map.addControl(new GMapTypeControl());

        GDownloadUrl(xmlUrl, function(data, responseCode) {
          var xml = GXml.parse(data);
          var markers = xml.documentElement.getElementsByTagName("marker");

          var prevlat = -99999.00;
          var prevlng = -99999.00;

          var title = '';
          var html = '';

          var point = false;

          for (var i = 0; i < markers.length; i++) {

            if (prevlat!= -99999.00 && (prevlat != parseFloat(markers[i].getAttribute("lat")) || prevlng != parseFloat(markers[i].getAttribute("lng")))) {

                var point = new GLatLng(prevlat,prevlng);

                bounds.extend(point);

				var icon = new GIcon(baseIcon);
				icon.image = image;

                var tmpMarker = new GMarker(point,{
                	icon: icon,
                    title: title
                });

                tmpMarker.htmlInfo = html;

                GEvent.bind(tmpMarker, "click", tmpMarker, function() {
                        this.openInfoWindowHtml(this.htmlInfo);
                    }
                );

                 map.addOverlay(tmpMarker);

                 var title = '';
                 var html = '';
                 var image = '';

            }

            prevlat = parseFloat(markers[i].getAttribute("lat"));
            prevlng = parseFloat(markers[i].getAttribute("lng"));
            image = markers[i].getAttribute("image");

            if (title>'') {
                title += ", " + markers[i].getAttribute("title");
            } else {
                title = markers[i].getAttribute("title");
            }

            if (html>'') {
                html += GXml.value(markers[i]);
            } else {
                html = GXml.value(markers[i]);
            }

          }

          if (prevlat!= -99999.00) {

            var point = new GLatLng(prevlat,prevlng);

            bounds.extend(point);

			var icon = new GIcon(baseIcon);
			icon.image = image;

            var tmpMarker = new GMarker(point,{
            	icon: icon,
                title: title
            });

            tmpMarker.htmlInfo = html;

            GEvent.bind(tmpMarker, "click", tmpMarker, function() {
                    this.openInfoWindowHtml(this.htmlInfo);
                }
            );

             map.addOverlay(tmpMarker);

          }

          var zoom = map.getBoundsZoomLevel(bounds);

          zoom = (zoom < 3 ? 3 : zoom);

          map.setCenter(bounds.getCenter(), zoom);

        });

        return false;

    }

}

function initTinyMap(mapid,lat,lng,draggable, fld1,fld2,fld3) {
    if (GBrowserIsCompatible()) {

		var point = new GLatLng(parseFloat(lat),
                                parseFloat(lng));

        tinymap = new GMap2(document.getElementById(mapid));
        tinymap.setCenter(point, 10, G_HYBRID_MAP);
        tinymap.addControl(new GOverviewMapControl());

        tinymap.enableDoubleClickZoom();
        tinymap.enableContinuousZoom();

        // nivigatie
        tinymap.addControl(new GLargeMapControl());

        // switch satteliet / straatmap
        tinymap.addControl(new GMapTypeControl());

        if (draggable) {

            var tmpMarker = new GMarker(point,{
                        draggable: true,
                        title: 'locatie op kaart'
                    });

            GEvent.addListener(tmpMarker, "dragstart", function() {tinymap.closeInfoWindow();});
            GEvent.addListener(tmpMarker, "dragend", function() {
             point = tmpMarker.getPoint();
             $(fld1).value = '200';
             $(fld2).value = point.y;
             $(fld3).value = point.x;
               });

        } else {

             var tmpMarker = new GMarker(point,{
                        title: 'locatie op kaart'
                    });
        }

        tinymap.addOverlay(tmpMarker);

        tinymap.setZoom(12);

    }
}

function doGeoCode(mapid,address, fld1,fld2,fld3) {

    var geocoder = new GClientGeocoder();

    var match = /^http.*ll\=([^&]+)&/i.exec(address);
    if(match) {
        address = match[1];
    }

    if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " niet gevonden");
            } else {

              tinymap.setCenter(point, 16);
                tinymap.clearOverlays();

                initTinyMap(mapid,point.lat(),point.lng(),true, fld1,fld2,fld3);


                $(fld1).value = '200';
                $(fld2).value = point.lat();
                $(fld3).value = point.lng();


            }
          }
        );
      }

}

//Event.observe(window,'unload',GUnload);
window.onunload = GUnload;


