var map;
var geocoder = new GClientGeocoder();
var mgr;
var icons = {};
var mgrOptions = { borderPadding: 0, maxZoom: 17, trackMarkers: true };

if(country == null){
	var country = 'spain';
}
if(homePoint == null){
	var homePoint = new GLatLng(40.3, -2.6);
}
if(homeLat == null){
	var homeLat = 40.3;
}
if(homeLng == null){
	var homeLng = -2.6;
}
if(homeZoom == null){
	var homeZoom = 6;
}


var movableMarker;

var markerArray = Array();
var typeArray = Array();
var mapdir = 'img/map_icons/';
var iconArray = Array();
iconArray['Huizen'] = mapdir+'huizen.png';
iconArray['Koop'] = mapdir+'huiskoop.png';
iconArray['Huur'] = mapdir+'huishuur.png';
iconArray['Nieuwbouw'] = mapdir+'huisnieuwbouw.png';
iconArray['Selector'] = mapdir+'selector.png';
iconArray['Houselocation'] = mapdir+'huis_locatie.png';
iconArray['Foto'] = mapdir+'camera.png';
iconArray['Foto_selector'] = mapdir+'selector_camera.png';


function load() {
	movableMarker = false;
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GOverviewMapControl());

		map.setCenter(new GLatLng(homeLat, homeLng), homeZoom);
		map.enableDoubleClickZoom();
		/*
		map.enableScrollWheelZoom();
		GEvent.addDomListener(map.getContainer(), "DOMMouseScroll",
		function(oEvent) { if (oEvent.preventDefault)
		oEvent.preventDefault(); });
		*/

		if(!google_map)
			google_map = 'home';

		switch (google_map){
			case 'contact':
				var type;
				var icon = new GIcon();
				icon.image = iconArray['Houselocation'];
				icon.iconSize = new GSize(21, 24);
				icon.iconAnchor = new GPoint(21, 24);
				icon.infoWindowAnchor = new GPoint(15, 10);
				var point = new GLatLng(51.64984,3.92215);
				var window_html = "<b>Fine Doll Bv.</b><br />Vrijpoortje 2<br />4301 JE Zierikzee<br /><br />P.O. Box 155<br />4300 AD Zierikzee<br /><br />The Netherlands<br />";

				map.setCenter(point, 17);

				var marker = new GMarker(point,icon);
				map.addOverlay(marker);
				GEvent.addListener(marker, "click", function() {
					marker.openInfoWindowHtml(window_html);
					setTimeout( "changeCloseButton()", 10);
				});
				marker.openInfoWindowHtml(window_html);
				test();

			break;
			case 'selector':
				movableMarker = true;
				var geocoder = new GClientGeocoder();
				var center;
				geocoder.getLatLng(
					address,
					function() {
						var point;
						
		  				LatField = document.getElementById("lat");
						LngField = document.getElementById("lng");
						
						LatField.value = window.opener.document.getElementById(latf).value;
						LngField.value = window.opener.document.getElementById(longf).value;
						
						if((LatField.value != 0) && (LngField.value != 0) && (LatField.value != undefined) && (LngField.value != undefined)){
							var point = new GLatLng(LatField.value,LngField.value);
							selectorSetVars(point);
						} else {
							if(regionText.value != "-1"){
								if(regionText.text != ''){
									var address = regionText.text + ", " + country;
								}
								if(provinceText.text != ''){
									var address = provinceText.text + ", " + country;
								}
								if(plaatsText.text != ''){
									var address = plaatsText.text + ", " + country;
								}

								geocoder.getLatLng(
									address,
									function(point) {
										if (point){
											selectorSetVars(point);
											
											LatField.value = point.lat();
											LngField.value = point.lng();

										} else {
											selectorSetVars2(homePoint,homeZoom);
										}
									}
								);
								
							} else {
								selectorSetVars2(homePoint,homeZoom);
								LatField.value = homeLat;
								LngField.value = homeLng;
							}
						}
					}
				);

			break;
			case 'foto_selector':
				GDownloadUrl("/?page=Files.Marker&property="+property, function(data, responseCode) {
					var xml = GXml.parse(data);
					var markers = xml.documentElement.getElementsByTagName("marker");

					for (var i = 0; i < markers.length; i++) {
						var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
						parseFloat(markers[i].getAttribute("lng")));
						var type = markers[i].getAttribute("type");

						var icon = new GIcon();
						icon.image = iconArray[type];
						icon.iconSize = new GSize(16, 16);
						icon.iconAnchor = new GPoint(8, 16);
						icon.infoWindowAnchor = new GPoint(16, 0);

						housemarker = new GMarker(point,icon);
						map.addOverlay(housemarker);
					}
				});



				var icon = new GIcon();

				icon.image = iconArray['Foto_selector'];
				icon.iconSize = new GSize(16, 26);
				icon.iconAnchor = new GPoint(8, 26);
				icon.infoWindowAnchor = new GPoint(16, 0);

  				var gradePat = new RegExp("^-{0,1}[0-9]+\.[0-9]*$");
  				if(!startLat.match(gradePat) || !startLng.match(gradePat)) {
  				  center = homePoint;
  				} else {
  				  center = new GLatLng(startLat, startLng);
  				}

  				LatField = document.getElementById("lat");
				LngField = document.getElementById("lng");
				LatField.value = center.lat();
				LngField.value = center.lng();

				geocoder = new GClientGeocoder();

				marker = new GMarker(center,{icon:icon, draggable: true});

				GEvent.addListener(marker, "dragend", function() {
					var LatLng = marker.getPoint();
					LatField = document.getElementById("lat");
					LngField = document.getElementById("lng");
					LatField.value = LatLng.lat();
					LngField.value = LatLng.lng();

				});

				GEvent.addListener(map, "click", function(marker, point) {
					LatField = document.getElementById("lat");
					LngField = document.getElementById("lng");
					LatField.value = point.lat();
					LngField.value = point.lng();
					setPosition();
				});

				map.addOverlay(marker);
			break;

			default:
				var bounds = map.getBounds();
				GDownloadUrl("/?page=Files.Marker", function(data, responseCode) {
					var xml = GXml.parse(data);
					var markers = xml.documentElement.getElementsByTagName("marker");
					for (var i = 0; i < markers.length; i++) {
						var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
						parseFloat(markers[i].getAttribute("lng")));
						var image = markers[i].getAttribute("image");
						var status = markers[i].getAttribute("status");
						var aanbieder = markers[i].getAttribute("aanbieder");
						var woonoppervlakte = markers[i].getAttribute("woonoppervlakte");
						var perceel = markers[i].getAttribute("perceel");
						var prijs = markers[i].getAttribute("prijs");
						var id = markers[i].getAttribute("id");
						var type = markers[i].getAttribute("type");
						var typetext = markers[i].getAttribute("typetext");
						var regio = markers[i].getAttribute("regio");
						var plaats = markers[i].getAttribute("plaats");
						var code = markers[i].getAttribute("code");
						/*map.addOverlay(new GMarker(point));*/

						markerArray[i] = createMarker(point,image,status,aanbieder,woonoppervlakte,perceel,prijs,id,type,typetext,regio,plaats,code);
						map.addOverlay(markerArray[i]);
						typeArray[i] = type;
						bounds.extend(point);

						map.setZoom(map.getBoundsZoomLevel(bounds));
						map.setCenter(bounds.getCenter());
					}
				});
			break;
		}
	}
}

function selectorSetVars2(point,zoom){
	map.setCenter(point, zoom);
	center = point;

	var icon = new GIcon();

	icon.image = iconArray['Selector'];
	icon.iconSize = new GSize(21, 35);
	icon.iconAnchor = new GPoint(10, 35);
	icon.infoWindowAnchor = new GPoint(21, 35);

	marker = new GMarker(center,{icon:icon, draggable: true});

	GEvent.addListener(marker, "dragend", function() {
		var LatLng = marker.getPoint();
		LatField = document.getElementById("lat");
		LngField = document.getElementById("lng");
		LatField.value = LatLng.lat();
		LngField.value = LatLng.lng();

	});

	GEvent.addListener(map, "click", function(marker, point) {
		LatField = document.getElementById("lat");
		LngField = document.getElementById("lng");
		LatField.value = point.lat();
		LngField.value = point.lng();
		setPosition();
	});

	map.addOverlay(marker);
}

function selectorSetVars(point){
	selectorSetVars2(point,13);
}

function detectBrowser(){
	var browser=navigator.appName;
	var b_version=navigator.appVersion;
	if (browser=="Microsoft Internet Explorer"){
		if(b_version.indexOf("MSIE 6") > 0){
			return 'ie6';
		} else {
			return 'ie7';
		}
	} else {
		return 'ff';
	}
}

var closeButton;

function test(){
	arr_nodes = document.getElementsByTagName('img');
	for (i = 0; i < arr_nodes.length; i++) {
		obj_node = arr_nodes[i];
		var tempVar = obj_node.getAttribute('src');
		if (tempVar.indexOf('mapfiles/iw1.png') > 0) {
			obj_node.src = 'img/iw1.png';
		}
		if (tempVar.indexOf('mapfiles/close.gif') > 0){
			closeButton = obj_node;
			setTimeout( "changeCloseButton()", 10);
		}
	}
}

function changeCloseButton(){
	switch (detectBrowser()){
		case 'ff':
			closeButton.src = 'img/close.png';
			closeButton.style.top = "1px;";
			closeButton.style.width = "20px";
		break;
		case 'ie7':
			closeButton.src = 'img/close.png';
			closeButton.style.position = "absolute";
			closeButton.style.margin = "-9px 0px 0px 0px";
			closeButton.style.width = "20px";
		break;
		case 'ie6':
			closeButton.src = 'img/blank.gif';
			closeButton.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/close.png', sizingMethod='scale')";
			closeButton.style.position = "absolute";
			closeButton.style.margin = "-9px 0px 0px 0px";
			closeButton.style.width = "20px";
		break;
	}
}

function createMarker(point,image,status,aanbieder,woonoppervlakte,perceel,prijs,id,type,typetext,regio,plaats,code) {
	var htmlContent = "&nbsp;";
	
	switch (langVar){
		case 82:
			htmlContent +="<div id=\"balloontitle\">Huiscode "+code+"</div>";
			htmlContent +="<table cellpadding=\"0\" cellspacing=\"0\">";
			htmlContent +="		<tr>";
			htmlContent +="			<td valign=\"top\">";
			htmlContent +="				<a href=\"/Object/Main?property="+id+"\"><img src=\""+image+"\" width=\"120\" height=\"80\"/></a>";
			htmlContent +="				<br />";
			htmlContent +="				Status: "+status;
			htmlContent +="			</td>";
			htmlContent +="			<td valign=\"top\">";
			htmlContent +="				<table cellpadding=\"2\" cellspacing=\"0\">";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Type</b></td>";
			htmlContent +="						<td>"+typetext+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Regio</b></td>";
			htmlContent +="						<td>"+regio+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Plaats</b></td>";
			htmlContent +="						<td>"+plaats+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Woon m&sup2;</b></td>";
			htmlContent +="						<td>"+woonoppervlakte+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Perceel m&sup2;</b></td>";
			htmlContent +="						<td>"+perceel+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Prijs</b></td>";
			htmlContent +="						<td>&euro;"+prijs+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="				</table>";
			htmlContent +="			</td>";
			htmlContent +="		</tr>";
			htmlContent +="</table>";
		break;
		case 25:
			htmlContent +="<div id=\"balloontitle\">Objectcode "+code+"</div>";
			htmlContent +="<table cellpadding=\"0\" cellspacing=\"0\">";
			htmlContent +="		<tr>";
			htmlContent +="			<td valign=\"top\">";
			htmlContent +="				<a href=\"/Object/Main?property="+id+"\"><img src=\""+image+"\" width=\"120\" height=\"80\"/></a>";
			htmlContent +="				<br />";
			htmlContent +="				Status: "+status;
			htmlContent +="			</td>";
			htmlContent +="			<td valign=\"top\">";
			htmlContent +="				<table cellpadding=\"2\" cellspacing=\"0\">";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Type</b></td>";
			htmlContent +="						<td>"+typetext+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Region</b></td>";
			htmlContent +="						<td>"+regio+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>City</b></td>";
			htmlContent +="						<td>"+plaats+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Living m&sup2;</b></td>";
			htmlContent +="						<td>"+woonoppervlakte+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Plot m&sup2;</b></td>";
			htmlContent +="						<td>"+perceel+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="					<tr>";
			htmlContent +="						<td align=\"right\"><b>Price</b></td>";
			htmlContent +="						<td>&euro;"+prijs+"</td>";
			htmlContent +="					</tr>";
			htmlContent +="				</table>";
			htmlContent +="			</td>";
			htmlContent +="		</tr>";
			htmlContent +="</table>";
		break;
	}


	var icon = new GIcon();
	icon.image = iconArray[type];
	icon.iconSize = new GSize(16, 16);
	icon.iconAnchor = new GPoint(8, 16);
	icon.infoWindowAnchor = new GPoint(8, 8);

	var marker = new GMarker(point,icon);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(htmlContent);
		test();
		setTimeout( "changeCloseButton()", 10);
	});

	return marker;
}

function createBuurtfoto(point,image,title,id) {

	var htmlContent = "&nbsp;";
	htmlContent +="<div id=\"balloontitle\">"+title+"</div>";
	htmlContent +="<table cellpadding=\"0\" cellspacing=\"0\">";
	htmlContent +="		<tr>";
	htmlContent +="			<td>";
	htmlContent +="				<img src=\""+image+"\" width=\"255\" height=\"170\"/>";
	htmlContent +="			</td>";
	htmlContent +="		</tr>";
	htmlContent +="</table>";

	var icon = new GIcon();
	icon.image = 'img/map_icons/camera.png';
	icon.iconSize = new GSize(16, 16);
	icon.iconAnchor = new GPoint(8, 16);
	icon.infoWindowAnchor = new GPoint(16, 0);

	var marker = new GMarker(point,icon);

	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(htmlContent);
		test();
		setTimeout( "changeCloseButton()", 10);
	});


	return marker;
}

function changeMapType(mapType){
	map.setMapType(eval(mapType));
}

function panMap(direction){
	switch(direction){
		case 'up':
			map.panDirection('0','+1')
		break;
		case 'left':
			map.panDirection('+1','0')
		break;
		case 'right':
			map.panDirection('-1','0')
		break;
		case 'down':
			map.panDirection('0','-1')
		break;
	}
}

function zoomMap(direction){
	switch(direction){
		case 'in':
			map.zoomIn();
		break;
		case 'out':
			map.zoomOut();
		break;
	}
}


function filterMap(){
	var koop = document.getElementById('koop').checked;
	var huur = document.getElementById('huur').checked;
	var nieuwbouw = document.getElementById('nieuwbouw').checked;

	for (var i = 0; i < markerArray.length; i++) {
		switch (typeArray[i]){
			case 'Koop':
				if(koop == true){
					markerArray[i].show();
				} else {
					markerArray[i].hide();
				}
			break;
			case 'Huur':
				if(huur == true){
					markerArray[i].show();
				} else {
					markerArray[i].hide();
				}
			break;
			case 'Nieuwbouw':
				if(nieuwbouw == true){
					markerArray[i].show();
				} else {
					markerArray[i].hide();
				}
			break;
		}
	}
}


function showAddress() {
	var address = document.getElementById('address').value;
	geocoder.getLatLng(
		address,
		function(point) {
			if (!point) {
				address += ", " + country;
				geocoder.getLatLng(
					address,
					function(point) {
						if (!point) {
							alert(address + " not found");
						} else {
							map.setCenter(point);
							if(movableMarker){
								marker.setPoint(point);
							}
							/*
							var marker = new GMarker(point);
							map.addOverlay(marker);
							marker.openInfoWindowHtml(address);
							*/
						}
					}
				);
			} else {
				map.setCenter(point, 12);
				if(movableMarker){
					marker.setPoint(point);
				}
				/*
				var marker = new GMarker(point);
				map.addOverlay(marker);
				marker.openInfoWindowHtml(address);
				*/
			}
		}
	);
}

function setPosition(center){
	LatField = document.getElementById("lat").value;
	LngField = document.getElementById("lng").value;
	point = new GLatLng(LatField, LngField);
	marker.setPoint(point);
	if(center){
		map.panTo(point);
	}
}

function save(){
	LatField = document.getElementById("lat").value;
	LngField = document.getElementById("lng").value;
	window.opener.document.getElementById(latf).value = LatField;
	window.opener.document.getElementById(longf).value = LngField;
	window.close();
}