﻿/* LOSSE MEUK */
var dd = document.domain;
if (dd == "jaime.local.nl") var sApiKey = "ABQIAAAAvGs3N91soDVqIRcVSdvkGRSMq4v_8U5q3UQNh1w_o8cV6IEJoRQXNyrU8n9GA4nz0SmDOFV09cIHRw"; //jaime.local.nl
else if (dd == "bezoekmijntuin.local.nl") var sApiKey = "ABQIAAAAvGs3N91soDVqIRcVSdvkGRQFB7EOYRVyfsYLOURKqVtp_mRIeRQxyGiKOkJQcJ1zUxdmJvUu_g74og"; //bmt.local.nl
else if (dd == "85.255.216.131") var sApiKey = "ABQIAAAAHtjLWr5Xhvf5UI0he-tC8hT3i1zEEZGaZ13BrowqhXCVQue29BQWY8O2DTDTArPK-km9D7pdKWThoQ"; //bmt.local.nl
else if (dd == "staging.bezoekmijntuin.nl") var sApiKey = "ABQIAAAAHtjLWr5Xhvf5UI0he-tC8hTFmJjNsROIqNH6kpfTTBA48sRARRS_GrSAkzy84F4oKjjEG58FUwb0lw"; //bmt.local.nl
else if (dd == "www.bezoekmijntuin.nl") var sApiKey = "ABQIAAAA5yqFM1b8B3WtBowLS6VoexSctixPdjl8FSlpgElMGBtDDUKRVxQMgIeIy5gPQQ8XXOVCBM_HRdNCJw"; //bmt.local.nl

var geocoder = null;
var scrollerWindow;
var _QueryString = "";
var urlSearch = "/tuintripplanner/search.aspx?";
var _urlTuinTripPlanner = "/tuintripplanner/service.aspx";
var _urlDetailGarden = "/garden.aspx?id=";

var markerGroups = { "google-filter-1": [], "google-filter-3": []};
//infowindow preformance setup
var _infoBoxWrapper = new Element('div', {id:'infoboxwrapper',style:'display:none'});


//messages
var page = $("gardenroutes");
var sTitle = "";
if(page != null){
	sNoItems = "Er zijn geen tuinroutes geselecteerd.";
} else {
	sNoItems = "Uw heeft nog geen tuin toegevoegd aan de Tuintripplanner.";
}
var _message = {
	"no-adverts":"<p>Geen bezoekwaardigheden in de buurt beschikbaar.</p>",
	"no-gardens":"<p>" + sNoItems + "</p>",
	"garden-located-here":"De tuin bevindt zich hier.",
	"garden-remove-from-planner":"Verwijder deze tuin van de Tuintripplanner",
	"garden-cant-removed-from-planner" : "Sorry, de tuin kon niet verwijderd worden van de Tuintripplanner"
	 };
//eo messages


function setMarkersOnMap(sIds, sType){
	sIcons = "single";
	var sQueryString = "ids=" + sIds +"&search=" + sType;
	var internSearchUrl = urlSearch + sQueryString;
	loadMarkersOnMap(internSearchUrl);
}

function tuinTripPlanner(sIds, sType, sRadius){
//alert(map.isLoaded());
//alert("s");
	sIcons = "incremental";
	var sQueryString = "ids=" + sIds +"&search=" + sType + "&radius="+sRadius;
	var internSearchUrl = urlSearch + sQueryString;
	loadMarkersOnMap(internSearchUrl);
}

function searchLocations() {
	var elAddress = document.getElementById('addressInput');	
	var address = (elAddress.value != "") ? elAddress.value : "Noordkade 34, 3201 DD Spijkenisse, NL";
	elAddress.display = 'none';
	geocoder.getLatLng(address, function(point) {
		if (!point) { alert(address + ' not found'); }
		else { searchLocationsNear(point); }
	});
}

function searchLocationsNear(point) {
	sIcons = "incremental";
	var elRadius = document.getElementById('radiusSelect');
	var sRadius = (elRadius.value != "") ? elRadius.value : "";
	var sQueryString = ""
	sQueryString = 'lat=' + point.lat() + '&lng=' + point.lng() + '&radius=' + sRadius + "&search=near";
	_QueryString = sQueryString;
	
	setPrintURL();
	var internSearchUrl = urlSearch + sQueryString;
	loadMarkersOnMap(internSearchUrl);
}

function loadMarkersOnMap(urlSearch){
	GDownloadUrl(urlSearch, function(data) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
		allMarkers = allMarkers;
		map = map;
		mgr = mgr;

		
		if(map != null) {
			map.clearOverlays();
		}

		//sidebar setup
		var elGardens = $('google-results-1');
		var elAdverts = $('google-results-3');
		

		if (markers.length == 0) {
			if (elGardens != null) elGardens.innerHTML = _message["no-gardens"];
			if (elAdverts != null) elAdverts.innerHTML = _message["no-adverts"];
			return;
		}	

		var bounds = new GLatLngBounds();

		//var tmpPoint = new GLatLng(parseFloat(51.854717),parseFloat(4.306812));
		//var tmpGoogleMarker = new GMarker(tmpPoint);
		//mgr.addMarker(tmpGoogleMarker,0,17);

		for (var i = 0; i < markers.length; i++) {
			var name = GXml.value(markers[i].getElementsByTagName('gardenname')[0]); 
			var address = GXml.value(markers[i].getElementsByTagName('address')[0]);
			var description = GXml.value(markers[i].getElementsByTagName('description')[0]);

			var distance = parseFloat(markers[i].getAttribute('distance'));
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
						parseFloat(markers[i].getAttribute('lng')));
			var thumbnail = markers[i].getAttribute('thumbnail');
			var id = markers[i].getAttribute('id');
			var type = markers[i].getAttribute('type');
			var features = GXml.value(markers[i].getElementsByTagName('features')[0]);	
			var index = (sIcons == "incremental") ? i : "" ;

			var arrParameters = new Array();		
			arrParameters = {"i": index, "id":id ,"point":point,"name":name,"address":address,"thumbnail":thumbnail, "type": type, "distance": distance, "description": description, "features":features};

			var marker = createMarker(arrParameters);
			//var marker = new GMarker(point);
			allMarkers.push(marker);

			//map.addOverlay(marker);
			//mgr.addMarker(marker, 0, 17);


			if(elGardens != null){
				if(sIcons == "incremental"){
					var sidebarEntry = createSidebarEntry(marker, arrParameters);
					if(type == '1' || type == '2') { elGardens.appendChild(sidebarEntry); } 
					if(type == '3') { elAdverts.appendChild(sidebarEntry); }
				}
			}
			bounds.extend(point);
		}
		
		if(markerGroups["google-filter-1"].length == 0 && elGardens!=null) { elGardens.set('html',_message["no-gardens"]); }
		if(markerGroups["google-filter-3"].length == 0 && elAdverts!=null) { elAdverts.set('html',_message["no-adverts"]); }		
		_infoBoxWrapper.inject('gbl-wrapper', 'bottom'); //global
		var iZoom = (map.getBoundsZoomLevel(bounds) > 11) ? 11 : map.getBoundsZoomLevel(bounds);

		map.setCenter(bounds.getCenter(), iZoom);
		mgr.addMarkers(allMarkers,6,17);
		mgr.refresh();
	});
}

function createMarker(arrParameters) {
	var i = arrParameters["i"];
	var id = arrParameters["id"];
	var point = arrParameters["point"];
	var name = arrParameters["name"];
	var address = arrParameters["address"];
	var thumbnail = arrParameters["thumbnail"];
	var type = arrParameters["type"];
	var description = arrParameters["description"];
	var features = arrParameters["features"];
	
	var icon = setIcon(arrParameters["type"], i);
	
	
	var marker = new GMarker(point,icon);
	/*var marker = new GMarker(point,{icon:icon, draggable: true});
	GEvent.addListener(marker, "dragend", function() {
		alert(marker.getLatLng());
	});*/

	//toggle markers meuk
	markerGroups = markerGroups;
	if(type=="2") { markerGroups["google-filter-"+(type-1)].push(marker); }
	else { markerGroups["google-filter-"+type].push(marker); }
	
	var sHtml ;
	
	if($$("body.profiel")[0] != null){
		sHtml = '<table class="window-content" cellspacing="0" cellpadding="0">';
		sHtml += '<tr class="title"><td colspan="2"><h3><strong>'+_message["garden-located-here"]+'</strong></h3></td></tr></table>';
	} else {
		var sPrefixIndex = getIncrementalPrefix(i);
		//garden specific elements
		var sInfo = "";
		var detailLink = "";
		var detailRow = "";
		if(type != 3){
			detailLink = (type != 3) ? '<a class="to-profile" " href="'+_urlDetailGarden + id+'" title="Bekijk profiel van deze pagina">profiel</a>' : '';
		
			sInfo = '<div class="info">'+features+'</div>';
			detailRow = '<tr><td colspan="2" class="profile">' + detailLink + '</td></tr>';
		}

		var sHtml = '<table class="window-content" cellspacing="0" cellpadding="0">';
		sHtml += '<tr class="title"><td colspan="2"><h3><strong>'+sPrefixIndex+name+'</strong></h3></td></tr>';
		sHtml += '<tr><td class="thumb" style="padding-right:5px;"><div style="width:73px;height:73px;overflow:hidden;"><img src="' + thumbnail + '" alt="" /></div></td><td class="desc">' + description.substring(0,60) + '...'+ sInfo +'</td></tr>';
		if(type != 3){ sHtml += detailRow; }
			
		sHtml += '</table>';
	}

	var infoBox = new Element('div');
	infoBox.set('html', sHtml);
	infoBox.inject(_infoBoxWrapper, 'bottom');

	GEvent.addListener(marker, 'click', function(){ 
		marker.openExtInfoWindow(map, "infowindow-"+type, infoBox.get('html'), {beakOffset: 3, paddingX: 0, paddingY: 0});
		map.getExtInfoWindow().resize();			
	});

	/*GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});*/
	return marker;
}

function setIcon(iType, i){
	var icon = new GIcon();
	
	/*if wont work because of different types... couter for each type of point */
	i = parseInt(i);
	i = (i < 26) ? i : "";
	if(iType == 1) { icon.image = "/assets/project/img/gmm/purple_Marker"+i+".png"; } //opentuin
	else if(iType == 2) { icon.image = "/assets/project/img/gmm/purple_Marker"+i+".png"; } //geslotentuin
	else if(iType == 3) { icon.image = "/assets/project/img/gmm/orange_Marker"+i+".png"; } //bezienswaardigheid	
	
	

	//icon.shadow = "";
	//icon.shadowSize = new GSize(0, 0);
	icon.iconSize = new GSize(20, 34);
	//icon.iconAnchor = new GPoint(36,47); //working on tuintrip planner
	icon.iconAnchor = new GPoint(9,33); 
	//icon.iconAnchor = new GPoint(9,33); //strange
	icon.infoWindowAnchor = new GPoint(7,0);

	return icon;
}

function createSidebarEntry(marker, arrParameters) {

	var i = arrParameters["i"];
	var id = arrParameters["id"];
	var type = arrParameters["type"];
	var point = arrParameters["point"];
	var name = arrParameters["name"];
	var address = arrParameters["address"];
	var thumbnail = arrParameters["thumbnail"];
	var distance = arrParameters["distance"];
	var description = arrParameters["description"];
	var features = arrParameters["features"];

	mgr = mgr;
	allMarkers = allMarkers;
	
	

	var div = new Element('div', {id:'garden'+id, title:'Ga naar tuinprofiel'});
	
	name = (name.length <= 23 || $("print") != null) ? name : name.substring(0,21)+'&#0133;';
	var sPrefixIndex = getIncrementalPrefix(i);
	var h3 = '<h3><strong>' + sPrefixIndex + name + '</strong></h3>';

	description = ($("print")) ? description : description.substring(0,60) + '...' ;
	description = ($("print")) ? description+'<br /><strong>Adres</strong>:'+address : description;


	
	var elRemove = new Element('div',{ 
		'title': _message["garden-remove-from-planner"],
		'class': 'remove'
	});
	
	var info = '<a class="info clearfix" href="'+ _urlDetailGarden + id+ '">'+'<img src="'+thumbnail+'" alt="" /><span class="desc">'+description+'</span><div class="info">'+features+'</div></a>';

	if(type =='1' || type =='2') { 
		div.addClass('gbl-tuin-article');
		elRemove.addEvent("click",function(e) {
			e = new Event(e).stop();

			//alert(mgr.getMarkerCount(0) + ' | ' +  allMarkers[i] + mgr.removeMarker);
			//mgr = mgr;
			//mgr.removeMarker(allMarkers[i]);

			
			removeFromPlanner(id,i,type);

		});
	}
	else if (type == '3'){ div.addClass('gbl-adv-article'); }
	
	var showOnMap = new Element('a', {'class':'to-map', 'title':'toon op kaart'}).set('html', 'toon op kaart');
	showOnMap.addEvent("click",function(e) {
		e = new Event(e).stop();
		GEvent.trigger(marker, 'click');
		scrollerWindow.toTop();
	});
	
	div.addEvent("click", function(){
		//window.location.href = this.getElement("a.info");
	});

	div.set('html', h3+info);
	if (showOnMap != null) { showOnMap.inject(div,'bottom'); }
	if (elRemove != null && ($$("body.tuinroutes, body.tuinroute").length == 0)) { elRemove.inject(div,'bottom'); }

	return div;
}

function removeFromPlanner(sId, i, type){
	var myRequest = new Request({
		url: _urlTuinTripPlanner,
		method: 'get',
		onSuccess: function(responseText){
				$('garden'+sId).destroy();
				markerGroups['google-filter-'+type][i].hide();
				map.closeExtInfoWindow();
				adjustPlannerCount("remove");
			},
		onFailure: function(){
				alert(_message['garden-cant-removed-from-planner']);
			}
	}).send('action=remove&id='+sId);
	
}

//general bezoekmijntuin googlemaps functions

function hideGmap(){
/*	var elLeft = $$(".gbl-lc-content")[0];
	var oldHeight = elLeft.getSize().y;
	elLeft.setStyle("height",oldHeight);*/
	$$("#map_canvas, #google-results-1, #google-results-3, .hidegmap").setStyle("display","none");
	//$$(".gbl-lc-content")[0].setStyle("height", ($$(".gbl-right-coll")[0].getSize().y)-80);

}
function mdc_toggleGroup(type) {
	markerGroups = markerGroups;
	for (var i = 0; i < markerGroups[type].length; i++) {
		var marker = markerGroups[type][i];
		if (marker.isHidden()) {marker.show(); }
		else { marker.hide(); map.closeExtInfoWindow(); }
	}
}

function getIncrementalPrefix(i){
	var sPrefix = (sIcons == "incremental") ? (getLetterByIndex(i) != "") ? getLetterByIndex(i) + ". " : "" : "";
	return sPrefix;
}

function addExtraGoogleMapsEvents(){
	$$(".google-filter").each(function(el){
		el.addEvent("click", function(){
			mdc_toggleGroup(this.getProperty("id"));
			if(el.getStyle("background-position") == "0px -50px") { el.setStyle("background-position", "0px 0px"); }
			else { el.setStyle("background-position", "0px -50px"); }
		});
	});
	//$$(".gmnoprint").setStyle("display","none");
}

function getGoogleMapsSearchUrl(address, output) {
	var sRequestUrl = new String("http://maps.google.com/maps/geo?");
	var sAddress = address;
	var sOutput = output;
	var sOutputEncoding = "utf8";
	var bSensor = "false"; 
	
	sRequestUrl = sRequestUrl + "q=" + sAddress + "&output=" + sOutput + "&oe=utf8"+ sOutputEncoding + "&sensor=" + bSensor + "&key=" + sApiKey;
	
	document.getElementById("info").innerHTML = '<a href="'+sRequestUrl+'" target="_blank">link</a>';
	return sRequestUrl;
	
}

function getMarkerCoordinatesByAddress(address){
	var sUrl = getGoogleMapsSearchUrl(address, "json");
	var jsonRequest = new Json.Remote({url: sUrl, onComplete: function(JSON){
		alert(JSON);
	}});
}
function showAddress(address) {

  if (geocoder) {
	geocoder.getLatLng(
	  address,
	  function(point) {
		if (!point) {
		  alert(address + " not found");
		} else {
		  map.setCenter(point, 13);
		  var marker = new GMarker(point);
		  map.addOverlay(marker);
		  marker.openInfoWindowHtml(address);
		}
	  }
	);
  }
}

function setPrintURL(){
	//$$(".btn-print-tuintrip").each(function(el){
	var el = $("print");
	if(el != null) el.setProperty("href", (getURL(el.getProperty("href")) + "?" + _QueryString));
	//});	
}

/* Add to project scripts? */
function getLetterByIndex(i){
	var ret = "";
	alphabet = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
	ret = (alphabet[i] != null ) ? alphabet[i] : "";
	return 	ret;
}

function openNewWindow(sTargetUrl){
	window.open(sTargetUrl);
}

function sendTuintripplannerEvents(){
	var aEl = $$('.btn-send-tuintrip');
	if(aEl.length > 0){
		aEl.each(function(el){
			el.addEvent("click", function(e){
				e = new Event(e).stop();
				openNewWindow(this);
			});
		});
	}
}
function addPrintEvents(){
	var aEl = $$('.btn-print-tuintrip');
	if(aEl.length > 0){
		aEl.each(function(el){
			el.addEvent("click", function(e){
				e = new Event(e).stop();
				openNewWindow(this);
			});
		});
	}

	if($('print') != null){
		$$("#print-overview .gbl-tuin-article").each(function(el){
			el.setStyle('cursor','default');
			el.removeEvent('click');
		});
		$$("#print-overview .gbl-tuin-article a").each(function(el){
			el.setStyle('cursor','default');
			el.removeEvent('mouseenter');
			el.removeEvent('click');
			el.removeProperty('href');			
		});
	}
}

function getURL(parURL) {
//take in mind when using a #hash

	var sURL = "";
	if(parURL == null){
		sURL = window.document.URL.toString();
		return sURL;
	} else {
		sURL = parURL;
		sURL = (sURL.indexOf("?") > 0) ? sURL.split("?")[0] : sURL;
		return sURL;
	}
}

function getURLParameter(paramName) {
	var sURL = getURL();
	if (sURL.indexOf("?") > 0)
	{
		var arrParams = sURL.split("?");                  
		var arrURLParams = arrParams[1].split("&");
		for (var i=0;i<arrURLParams.length;i++)
		{
			var sParam =  arrURLParams[i].split("=");
			if (paramName.toLowerCase()==sParam[0].toLowerCase()){
				return unescape(sParam[1]);
			}
		}
	} else {
		return "";
	}
}
function getURLParameters(paramName) {
	var sURL = getURL();
	if (sURL.indexOf("?") > 0)
	{
		var arrParams = sURL.split("?");                  
		return arrParams[1];
	} else {
		return "";
	}
}

function initDomReady(){
	scrollerWindow = new SmoothScroll({ duration:700 }, window);
}
function initLoad(){
}

window.addEvent("domready", initDomReady);
