// Create our "tiny" marker icon
var icon = new GIcon();
icon.image = "/img/gm-icon.png";
//icon.shadow = "/img/kaart/schaduw.png";
icon.iconSize = new GSize(112, 26);
//icon.shadowSize = new GSize(50, 50);
icon.iconAnchor = new GPoint(10, 37);
icon.infoWindowAnchor = new GPoint(7, 7);

var map = null;


function toggleGoogleMaps( divid ) {
	carousel = document.getElementById( 'mycarousel' );
	if( carousel )
		if ( carousel.style.visibility == '' || carousel.style.visibility == 'visible' )
			carousel.style.visibility = 'hidden';
		else
			carousel.style.visibility = 'visible';

	googlemaps = document.getElementById( 'googleMapsContainer_'+divid );
	if( googlemaps )
		googlemaps.style.visibility = ( googlemaps.style.visibility == 'hidden' || googlemaps.style.visibility == '' ) ? 'visible' : 'hidden';

	return false;
}

function initEmptyMap(strid, type, soort) {

	if (GBrowserIsCompatible()) {

        map = new GMap2(document.getElementById(strid));

		//52.352119, 5.800781 == NL
        map.setCenter(new GLatLng(52.395715, 5.800781), 4);

		if(type == "small")
			map.addControl(new GSmallZoomControl());
		else {
	        // navigatie
	        map.addControl(new GLargeMapControl());

	        // switch satteliet / straatmap
			map.addControl(new GMapTypeControl());
		}

		//map.setMapType(map.getMapTypes()[soort]);

	}

	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), 12 );

        // 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 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 = '';

		    }

		    prevlat = parseFloat(markers[i].getAttribute("lat"));
		    prevlng = parseFloat(markers[i].getAttribute("lng"));

			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 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);
		  if (zoom > 11 ) zoom = 11;

		  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,{
						icon:  icon,
				    	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,{
			 			icon:  icon,
				    	title: 'locatie op kaart'
				    });

		}

		tinymap.addOverlay(tmpMarker);

	}
}

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;

