
//<![CDATA[
var map;
var baseImage = '/images/google_maps_pin.png';
var baseImgW  = 35;
var baseImgH  = 35;
var g_point;


function load(elementNaam, elemWidth, elemHeight, pointLat, pointLong, strSearch, mapZoom, titleColumn, kmlFile, messageType, blnLargeMapControl, blnMapTypeControl, blnOverviewMapControl) {
	map = new GMap2(document.getElementById(elementNaam), { size: new GSize(elemWidth, elemHeight) } );	
	map.setCenter( new GLatLng(pointLat, pointLong), mapZoom);
	map.setMapType(G_NORMAL_MAP);
	
	if (pointLong != '' && pointLat != '' && kmlFile == ''){
		//strAktie=winkel-info&strLat=53.13881617605296&strlong=6.43000602722168
		$.getJSON("/ajax/request-handler.asp", {strAktie: "winkel-info", strLat: pointLat, strLong: pointLong },
			function(data){ 
				map.addOverlay(createWinkelMarker(map,new GLatLng(pointLat, pointLong), data.naam, "" , data.adres, ""));
			}
		);
	}
		
	/* Zoeken op adres? of centreren op longitude / latitude */
	if (strSearch != '') {	
		var geocoder = new GClientGeocoder();
		geocoder.setBaseCountryCode('nl');
		geocoder.getLatLng(
			unescape(strSearch),
			function(point) {
				if (!point) {
					alert(unescape(strSearch) + " niet gevonden!");
				} else {
					map.setCenter(point, mapZoom);
					/* Scapino icon tonen */
					addSimpleMarker(map, point, baseImage, baseImgW, baseImgH);
				}
			}
		);
	}

	/* Control types tonen? */
	if (blnLargeMapControl == true)
		map.addControl(new GLargeMapControl());
	if (blnOverviewMapControl == true)
		map.addControl(new GOverviewMapControl());

	GEvent.addListener(map, "moveend", function() {
		var center = map.getCenter();
		var zoom = map.getZoom();
		if (messageType == "select") {
			document.getElementById('strLatitude').value = center.lat().toString();
			document.getElementById('strLongitude').value = center.lng().toString();
		} else {
			//document.getElementById("message").innerHTML = center.toString();
		}
	});
		
	/* Download and parse the XML input file (also accepts local files) */
	if (kmlFile != '' ) {
		GDownloadUrl(kmlFile, function(data){
			var xmlDoc = GXml.parse(data);
			var xmlRows = xmlDoc.documentElement.getElementsByTagName("Placemark");
			
			var row
			
			for(var i = 0; i < xmlRows.length; i++){
				var coords = xmlRows[i].getElementsByTagName("coordinates");
				coords = coords[0].firstChild.data.split(",");
				
				var marker = createWinkelMarker(map, new GLatLng(coords[1], coords[0], true), xmlRows[i].getElementsByTagName("name")[0].firstChild.data, "", xmlRows[i].getElementsByTagName("description")[0].firstChild.data, xmlRows[i].getElementsByTagName("ExtendedData")[0].firstChild.data);
				map.addOverlay(marker);				
			}
		});
	}

	var defaultUI = map.getDefaultUI();
	defaultUI.controls.scalecontrol = false;
	
	map.setUI(defaultUI);	
}

/* Kijk of de variabele strPostcode is meegegeven*/
function isPostcodeMeegegeven(strUrl){

	var pattern = /strpostcode=[0-9]{4}/i;
	var matches = strUrl.match(pattern);
	if (matches) {
		var match = matches[0];
		return match.replace(/strpostcode=/i, "");
	}
	return false;
}


function addSimpleMarker(map, point, image, img_w, img_h) {
	/* Icon aanmaken */
	var iconValues = new Object();
	var infoWindow = new Object();

	iconValues.iconImage = image;
	iconValues.iconImageWidth = img_w;
	iconValues.iconImageHeight = img_h;
	iconValues.iconAnchorX = parseInt(0);
	iconValues.iconAnchorY = parseInt(0);
	
	/* Marker opmaken, toevoegen aan overlay */
	var marker = new GMarker(point, createIcon(iconValues, infoWindow));
	map.addOverlay(marker);
}


function createMarker(point, title, foto, details, iconValues, infoWindow) {
	var marker = new GMarker(point, createIcon(iconValues, infoWindow));

	// Show this marker's infowindow
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(title+' <br/> '+details );
	});

	return marker;
}

function map_zoom(){
	map.setCenter(g_point, 16)
}

function show_zidb(){
	var window = map.getInfoWindow();
	var html = window.getContentContainers();
	
	var maxHtml = html[0].innerHTML + '<div style="font-family: arial, sans-serif;font-size:small; padding-left: 1px;padding-top: 1px;padding-right: 4px; display:block;" id="zidb">'
							+ 'Zoek in de buurt: b.v. "bloemist"<br>'
							+ '<form action="http://maps.google.com/maps" method="get"" target="_blank">'
							+ '<input type="text" SIZE=35 MAXLENGTH=80 name="q" id="q" value=""/>'
							+ '<input value="Zoek" TYPE="SUBMIT">'
							+ '<input type="hidden" name="near" value="' + name
							+ ' @' + g_point.lat() + ',' + g_point.lng() + '"/>'
							+ '</div>';
	window.reset(g_point, [new GInfoWindowTab('info',maxHtml)], new GSize(240,145),null,null);						
	
}

//Geavanceerde marker voor een winkel.
function createWinkelMarker(map, point, title, foto, details, link){
	
	var iconValues = new Object();
	var infoWindow = new Object();

	iconValues.iconImage = baseImage;
	iconValues.iconImageWidth = baseImgW;
	iconValues.iconImageHeight = baseImgH;
	iconValues.iconAnchorX = parseInt(9);
	iconValues.iconAnchorY = parseInt(29);
	
	
	infoWindow.infoWindowAnchorX = parseInt(7);
	infoWindow.infoWindowAnchorY = parseInt(7);

	var marker = new GMarker(point, createIcon(iconValues, infoWindow));

	var arr = details.split('<br/>');
	var adr= arr[arr.length-2] + ' '+ arr[arr.length-1];
	
	var normalHtml = '<div style="display:block;">'+title+' <br/><strong>Adres:</strong><br/>'+details + '<br/>' 
	if( link!="" ){ normalHtml += '<a href="'+link+'">Ga naar winkel</a><br/>' }
	normalHtml += '<br/><a href="http://maps.google.nl/maps?f=d&source=s_q&hl=nl&geocode=&q='+ title +'&sll='+ point.lat() +','+ point.lng() +'&sspn=6.018199,16.907959&ie=UTF8&hq=&hnear='+ adr +'&ll='+ point.lat() +','+ point.lng() +'&spn=0.035759,0.087204&z=13&iwloc=A&daddr='+ adr +'"	target="_blank">Routebeschrijving</a> - <a href="#" onclick="map_zoom();">Zoom</a> - <a href="#" onclick="show_zidb();">Zoek in de buurt</a></div>';
	
	
	// Show this marker's infowindow
	GEvent.addListener(marker, 'click', function() {
		g_point = point;
		marker.openInfoWindowHtml(normalHtml);
	});
	
	return marker;
}

function gotoAddressOnTheMap(pointLat, pointLong) {
	map.panTo(new GLatLng(pointLat, pointLong));
}

function createIcon(iconValues, infoWindow) {
	var icon              = new GIcon();
	icon.image            = iconValues.iconImage;
	icon.iconSize         = new GSize(iconValues.iconImageWidth, iconValues.iconImageHeight);

	if (iconValues.iconShadowImage != '') {
		icon.shadow           = iconValues.iconShadowImage;
		icon.shadowSize       = new GSize(iconValues.iconShadowImageWidth, iconValues.iconShadowImageHeight);
	}

	icon.iconAnchor       = new GPoint(iconValues.iconAnchorX, iconValues.iconAnchorY);
	icon.infoWindowAnchor = new GPoint(infoWindow.infoWindowAnchorX, infoWindow.infoWindowAnchorY);

	return icon;
}


function showAddress(elementName, strAdres, mapZoom) {
	var geocoder = new GClientGeocoder();

	geocoder.getLatLng(
		unescape(strAdres),
		function(point) {
			if (!point) {
				alert(unescape(strAdres) + " niet gevonden!");
			} else {
				map.panTo(point, mapZoom);
				addSimpleMarker(map, point, baseImage, baseImgW, baseImgH);
			}
		}
	);
	

	return false;
}
//]]>
