	//OFFICE ICON SETTINGS; requires imagePath
	var image_office_marker				= imagePath+"/images/gmap_mrk-office.png";
	var image_office_markerSize			= new GSize(20, 19);
	var image_office_markerAnchor		= new GPoint(0, 22);
	var image_office_makerInfowindow	= new GPoint(10, 1);
	
	var image_office_marker_shadow		= imagePath+"/images/gmap_mrk-shadow.png";	
	var image_office_marker_shadowSize	= new GSize(30, 19);


	var map;
	var bounds;
	var gMarkers = new Array();

	function initGmap(){
		map = new GMap2(document.getElementById("map_canvas"));
		
		bounds = new GLatLngBounds();
        map.setCenter(new GLatLng(51.229459, 3.195219), 13); //standaard coworks office in het midden. Zou nooit mogen gebeuren, maar staat er in voor de veiligheid.	
	}
	function makeMarkers(){
		if (GBrowserIsCompatible()) {
	        for(i=0;i<str_js.length;i++){
	        
				//var point = new GLatLng(latpos[i],longpos[i]);
				var point = getPointFrom_str_js(i);
				var htmlinfo = getHTMLFrom_str_js(i);
				var id = getIDFrom_str_js(i);
				marker=createMarker(point, i,htmlinfo, id);
				
				gMarkers[i] = marker;
				map.addOverlay(marker);		
			    bounds.extend(point); //zodat het centrum van alle beschikbare panden automatisch gezocht wordt.
			 }			 
			bestFit(map, bounds); //map goed centreren.
      	}
      	
      	//hide loader
		setTimeout("loader_hide()",2000);
	}

	function createMarker(point, index, infowindow, id) {
		//pointer customizen
		var logo = new GIcon();
		
		logo.image = image_pin_marker;
		logo.iconSize = image_pin_markerSize;
		
		logo.shadow = image_pin_marker_shadow;
		logo.shadowSize = image_pin_marker_shadowSize;

		logo.iconAnchor = image_pin_markerAnchor;
		logo.infoWindowAnchor = image_pin_markerInfowindow;
		
         var marker = new GMarker(point,logo);

         GEvent.addListener(marker, "mouseover", function(){ handleEvent_mouseover(index,"pandmarker",id); } );        
         GEvent.addListener(marker, "mouseout", function(){ handleEvent_mouseout(index,"pandmarker",id); } );        
         GEvent.addListener(marker, "click", function(){ handleEvent_click(index,"pandmarker",id); } );        
         
         return marker;
	}

	/*OFFICE*/
	function setOffices(arrOffices,setCenter){
		for(i=0;i<arrOffices.length;i++){
			var office = arrOffices[i];
			placeOffice(office[0],office[1],setCenter);
			//alert(office[0]);
		}
	}

	/*PLACE OFFICE*/
	function placeOffice(adres,infowindow,setCenter) {
		var geocoder = new GClientGeocoder(); 
 		geocoder.getLatLng(
			adres,
			function(latlng) {
				if (!latlng) {
					//adres niet gevonden. niet op kaart plaatsen.	
				}
				else {
					map.addOverlay(createOfficeMarker(latlng,URLDecode(infowindow)));
					bounds.extend(latlng);
					if(setCenter){
						map.setCenter(latlng, 15);
					}
				}
			}
		); 	
	}	
	
	/* OFFICE MARKER*/
	function createOfficeMarker(point,infowindow) {
    	var contactlogo = new GIcon();
    	
		contactlogo.image 		= image_office_marker;
		contactlogo.iconSize 	= image_office_markerSize;
		
		contactlogo.shadow 		= image_office_marker_shadow;
		contactlogo.shadowSize 	= image_office_marker_shadowSize;
				
		contactlogo.iconAnchor 			= image_office_markerAnchor;
		contactlogo.infoWindowAnchor 	= image_office_makerInfowindow;
    	
    	var marker = new GMarker(point,contactlogo);    	
    	    	
    	index = new Array(marker,infowindow);
        GEvent.addListener(marker, "mouseover", function(){ handleOfficeEvent_mouseover(index,"officemarker"); } );        
        GEvent.addListener(marker, "mouseout", function(){ handleOfficeEvent_mouseout(index,"officemarker"); } );        
        GEvent.addListener(marker, "click", function(){ handleOfficeEvent_click(index,"officemarker"); } );        
                  	
        return marker;
	}
	
	
    /* OFFICE EVENT HANDlERS */
	function handleOfficeEvent_click(gmapPosition_in_array,caller){	
	}

	function handleOfficeEvent_mouseover(markerInfo,caller){
			showOfficeItem(markerInfo);
	}

	function handleOfficeEvent_mouseout(gmapPosition_in_array,caller){	
	}
	
	
	function showOfficeItem(markerInfo){
			//show infoWindow
			var marker = markerInfo[0];
			var htmlInfo = markerInfo[1];//getHTMLFrom_str_js(gmapPosition_in_array);			
						
			marker.openExtInfoWindow(
		    	map,
    	    	"tiny_officewindow",
        		htmlInfo,
		        {beakOffset: 3}
			);			 	
	}
		
	
//Zoomniveau van de kaart aanpassen zodat al het aanbod zichtbaar is.	
function bestFit(map, bounds) {
	map.setZoom(map.getBoundsZoomLevel(bounds));
    map.setCenter(bounds.getCenter());
}

function loader_hide(){
	nodeLoading = document.getElementById("gmap_loading");
	if(nodeLoading){
		nodeLoading.style.display='none';
	}
	
	//show map
	nodeCanvas = document.getElementById("map_canvas");
	nodeCanvas.style.position="";
	nodeCanvas.style.left="0";	
	
}

/*Extra Functie's*/
function getPointFrom_str_js(gmapPosition_in_array){

	str_pand = str_js[gmapPosition_in_array];
	arr_pand = str_pand.split("#");
			
	latpos = arr_pand[0];
	longpos = arr_pand[1];
	
	var point = new GLatLng(latpos,longpos);
	
	return point;
}

function getHTMLFrom_str_js(gmapPosition_in_array){
	str_pand = str_js[gmapPosition_in_array];
	arr_pand = str_pand.split("#");
			
	var str_html = URLDecode(arr_pand[2]);
	
	return str_html;
			
}

function getIDFrom_str_js(gmapPosition_in_array){
	str_pand = str_js[gmapPosition_in_array];
	arr_pand = str_pand.split("#");
			
	var str_id = arr_pand[3];
	
	return str_id;
			
}

function URLDecode (encodedString) {
	var output = encodedString;
	var binVal, thisString;
	var myregexp = /(%[^%]{2})/;
	while ((match = myregexp.exec(output)) != null
            && match.length > 1
            && match[1] != '') {
		binVal = parseInt(match[1].substr(1),16);
		thisString = String.fromCharCode(binVal);
		output = output.replace(match[1], thisString);
	}
	
	output = output.replaceAll('+',' '); 
	return output;
}
    
if( ! String.prototype.replaceAll ) {
	String.prototype.replaceAll = function( oldvalue , newvalue )
	{
    	var tmp         = this;
        var result         = '';
        var index         = tmp.indexOf( oldvalue );

        if( index == -1 ) {
        	return tmp;
       	}

        while( index != -1 ) {
        	result += tmp.substr( 0 , index );
            result += newvalue;
            tmp = tmp.substr( index + oldvalue.length );
            index = tmp.indexOf( oldvalue );
        }
        return result + tmp;
   };
}
