﻿window.onload = kaart;
window.onunload = bewaar;
var markers=[];
var markers2=[];

function kaart(){
		var zl  = parseInt(getCookie('map_zoom',9));
		var lat = parseFloat(getCookie('map_lat',52.0840557));
		var lng = parseFloat(getCookie('map_lng',5.6209821));

		map = new GMap2(document.getElementById("kaart"),{ mapTypes : [G_PHYSICAL_MAP] });	       
        map.addControl(new GLargeMapControl());
		map.addControl(new GScaleControl());
        map.setCenter(new GLatLng(lat,lng), zl);
		var ovcontrol = new GOverviewMapControl(new GSize(130,130)); 
      	map.addControl(ovcontrol);
		map.enableScrollWheelZoom()

		icon = new GIcon();
		icon.image = "/grafiek/mm_20_red.png";
		icon.shadow = "/grafiek/mm_20_shadow.png";
		icon.iconAnchor = new GPoint(6, 10);
		icon.iconSize = new GSize(12, 20);	
		icon.shadowSize = new GSize(22, 20);	
		icon.infoWindowAnchor = new GPoint(6, 10);
		
		icon2 = new GIcon();
		icon2.image = "/grafiek/m.png";
		icon2.iconAnchor = new GPoint(6, 10);
		icon2.iconSize = new GSize(15, 15);
		icon2.infoWindowAnchor = new GPoint(8, 8);		
		
		icon3 = new GIcon();
		icon3.image = "/grafiek/zoom2.png";
		icon3.iconAnchor = new GPoint(15, 15);
		icon3.iconSize = new GSize(32, 32);
		icon3.infoWindowAnchor = new GPoint(15, 15);			

		//provinciegrenzen laden
		var polygon1 = new GPolygon.fromEncoded({
		  polylines: [
			{points: "glu{Hsua^rDg^kCeT{@mRzJq{@{@iE_D{E{JoFct@gJwV}WcQeLcj@c`@kMsNvGk\\w[{@sIrDsSyTcLiJce@{m@{EjCwGRoAaG?aI_oAahAkk@y`@oqAwcAsD_DrSco@xLod@lF_l@bB}a@_Dy`@cLgYeJcQyGwG{w@em@sS}YsDwV{@uVrDyVnKsXzOwVfO_XvLkWzEaQfOir@nFka@rD_l@|@{^PsXrDwj@z^gkAbGsSnA_SQc`@}Ek\\{EgY_IsSoPcV{^we@_Nc[gEgTkCkWSw[zJsyA?gYoAw`@{Ec[_N_q@_DmU{Eul@_DgToFw[eOod@mM_XsDcG{EgJkHyYkCmMbB{J?yTbGqd@jHkbBg@o_@_Dgw@g@gTz@uQvBqP~R_v@zJ_]bVgh@fOkz@fO{uAvLsv@jk@}k@zTal@bLuo@rD{m@nPm}AnAsSzE{TbVgm@~HwVvBwL_D{Ek\\gw@nKsb@c[tDwBeB{@kHRsNg@{EcB_D_D{@o_@f@sg@pZ{Od@sNgOwGwBoPcBwLrXoKnP_S~RoKfEsIoAgEvG{Tf@sXzYwBbQg@hToF|MgT~a@{OrX_g@rDsIrIcLjR~H~Mgh@f|@Ska@gOkCc|AwBoZvuBsI{@gJkCoKoAwGRoKnn@yc@yTaSqAwV_Dco@aGwGxEgm@cQwLz@gJnFwVRSnP_NrSkRSkMfEgJS_IvVoP{JsSbB_NnFvBni@zJcBz@bL{JfOxGtv@dOmCvBwQvGSbGsN~WnPrDw`@fObBnKlCkHrq@zT|RrIgh@zJ~WrNzTzJbLwBvVcBb[nArv@fJhJnU|CbBvj@oAj\\fJbt@kf@njB{JvBwB~WcGzJgJcLgOoUsX{^kM_]cGq]oKm\\_`AbGo_@ku@{JcBkHfOcGnZRif@h@}^dEcy@wG?wGhYgTi@eEr]}Tv[z@kM_b@wGoAwj@wBkWgc@q]sXhsAkHjCgc@yJg@h_AqIla@eBdO{h@wGwBnPcLwBsDdV_DlPkHbB{@be@kHvuBwGzpA{TjbBoU_Dod@~HoKrScL{YnFgTh@sXeLsXsX{JoUkC{c@z@gOr]crA`iDw[|u@okD{|@oP}H{To{Acj@uyF{^{eDkHcy@gOwwAcL_~AcG_b@_ScV_eA{h@w~@{^s~Act@od@uQ_v@_]wt@e[sg@oUsl@oUwQ_Nk\\_b@gTcVkHsNiCwVqFyaAz@iTzTw[oFmFwL_b@cj@iqC{@wGRcLvBkHjR_]od@ogA_b@_`A{Oc`@g@kCz@{TRwLSaQg@cLkCmH{@kHg@kM{@oKoAkHgEkHkH{J{E_IgE{JwBgJcLox@_S_l@qDkHaIsDcBsDkHsScBsDcB?wGrIkCf@oAg@{@wBy@gE?{ElAwG~CkCvBqDz@aDRoF?wG_DsIaQw[uDoKaLc`@iEoKwGoF{@sD{@{Os]_v@kMwVgOw[wLsX{@sDg@gJkC{JsIsSsDkHkM_SwL{TcG{OcQ_]_DyEwByGkCcGkCwB_SkH_NgOgJwLc[g^{EoFcBoAwBjC_Xv`@{E{@cwA_jAwLoKcBmFg@aDS_DRcGnAkHz@_IbBiHR}Eg@cBgEwGkCSoFf@wB{@aGkHqA{@wGg@{EoAcL_IkHgEwLgEce@kHyJkCaIoAsDiCgE}E{E{JsDcG_IoFoFoAoUsIiz@oUmRcGcGRwB{JsNwy@?kMvBwLnFeJ~W}m@fO_XdLoP|\\sg@~R}W~\\e[rNsNrg@o_@vj@o_@fTgJfOsDf@cBwBsNkH{^f@wBzJkMf@oAQwBeQgh@cQce@cBoK{@cLSgJbBcGrD_DjRsSjMwL~CgE{@_DwGsIoKsSoi@w~@gYsg@_N{Y{m@whAcQg^cG_XSkMoAwLaBkMeLgYsDoFoFwBwBoA{@wBjHaVvBuNz@kWrDwLrNoZnFgTfJ_XnPm_@vBuD~a@_XrSkHfJkHbGiH~HeLnPg^nFwQbBkMnAkMzEcQbBcLvBoKjC{Jz@_I~CcGnFsI|EgJ|RcV~H{ErS_Ija@oAzOcBzO{@fJ?jHf@zJvBzEbBnFRzJoAzEgEnKcQnF{Oz@kHrDgJpF{JxEcGnFoFjHoFnFoFfTwVfEsInK_NnKoKnKkHbQoFjH{EnU{JjMwBvG?fJrDzY~Mv`@vGrIrDnZvVfEvBbGz@bVg@jM?bLf@nPvLfJfOvGr]fEzc@zJzm@nAjMvGzuAbBnUfEfJvBjCfErD~CvBbGz@fERbGg@zEuBnFqFnFkMRgTz@sIjCcQfEwLvBsDbLwGjCrDz@vBbBjC`DjM`BfEjHja@f@zTf@|EbB|CrDrDnF`DrNi@rb@sDzJg@rIf@~RbGr]StNjCt[rDrDvBvB`DvBpDz@zEvBvBnAf@~CR~Cg@z@kCz@_IR_ISyJRqKSwGf@kCjC{@nF{@~CwBR{EfJ{EjH?jWbBzJSnKoA~HwBRsSjCwGbBmK?ug@RwG?qNfEaDbGaGrDmCzEwBpK{@|HoFnKuLfEaIjC_D~CwBrD{@rIS|TnAxE?bG{@nFcBnFgEfTk\\fJkR~C_DnF_DnFcB~Ry@nFyB~CwBbG_IbBgEpFwQhCvBbGvGjHbL~HrIfEbBfEf@zEQ~CyBnAsDfE{m@f@wQ~CkMzEoKvBcG?wGqDgh@i@cVnAkCrDoAzESrDz@fOvGjH~RjCvLvB~H~C~CfEvBrDjCvB?nKoFvLgExLcBlKgTfEeT~CaSf@{Oz@gOjH_IvG{EvLz@fE?nFwLcBgEkC_DcBjCiCkCyBg@gOnUoFfE{EbBgEnA{@uBRwBnFqK?kCsD_DcBhE{@|Cg@z@cL{JcBoA~RkWg@kCgJoAsXaB{EeB_NsDoAwGz@_X?aBcBuDwB_Sf@{OfEuVRsNmAmk@?wGx@oAfTgm@vQoi@f@qIzEutArDk\\nA{Ez@{E?gJoAoKz@iRbBeG~CuGf@sN?aNSeO{@sN{@yGg@gJrI_q@?qI_N}@cBg@RsDz@yEjCaIz@uQcByGkHqDoAeLwBsX?aG{@aIwB_I?sD~H_Df@_D?cGf@sDbB{@nFoAbBkHjCwBbBgE?mbAR}|@{@oFwB{JcBq]g@ag@?_NsDuBoF}@_I?oFf@oFnAgEf@_DSwBmAy@yBU{E_DsDcB{E{@oFkCsIoAiHSqFRaG{@qAsIcBcB{@g@_Df@{Eg@oKRsl@}Cct@eB{O_DiR_Ie`@RoFvBwLfEkMf@sq@{@_IoA_Sz@od@z@gOvBco@dB{@dEQbGPnAdBrDd@rDSjHoFbG{JbGwGfEwGfE{ErIsDnKkCzTsNnPsSnFgJ|E}MdTma@fEwGnF{JxBsIpIwLn_@{^~HwB~CSfEkC~HsIvBwGbBwLz@kMf@gh@nFoKvBg@~W?rD{@hEwBpI{EzTsNvGcGnA_InFcGzEoA~Mwo@bB{JbBcGjHoKbBgJf@_IoAoK_Is]{@cGoAkR{@kHcBsIoA{Jy@{OPcVrI{uAfEsv@nAsIz@{TbB_q@g@oPcGsjAcBcLcBoUkCoUcBsS_Dct@kCoAy@{@d@gErDoK~H{@f@gEbB_IfEoPS_D~Cg@~HgJSaGnKkRfJxEjMbL~HiCnKmMvB{EnFgOfE_N?kCwB{EcLw`@kCwBaBwB}@cGg@yJoAiE{EkCoFcBsDcBwBsDwBkHRkHnAkMbBkH~CwGfT{T?sD{E_DwGoFwLcGwBkC?gEf@_SnPwy@rNgh@fEgJnA_I?mFvBqFfE_IvGsDzJqDzEi@bGnAbQ~Rz@sNvB{@fTf@bL?fEmA`DaDdESrXvBjMjCnFzErI~MjHzJnPfOrSfOzEc[jRw~@RoPbBwVbBod@vGox@fE_XvG{TfEsXjHka@RkMS{r@Rg^g@o_@RcmAg@qX?co@nAx@~Hz@f|@zEbGxBjCnAzEd@vL?rIbB~CnAzEbBvBnAbBjCzE~CvBlCvBpD{@nA{EbBwB~H?rDbB|EbBdEf@|EbBfEjClAnArDvBz@bGSbG_DbGwL`DsIhC_DfEoArDSrDz@bG~HbQ~\\b`@nd@nAfJ|@dj@jHdnBtGnx@~Cni@z@z@fJkMbBg@zE?zJvBzTpPv[xTjCnFf@vLjCR~CcB~M~ClCwGlASfaAnA~CSz@g@?_NTqq@}@yt@?{h@f@kHbG{^tSkdAhMkk@jMsq@jM{m@nFuLvGsNjCmHfEgJhEsI`BwBvGsDvG{E~CkCf@cBpA{TtBsIbB{Erb@ccAja@obAv[wy@vGcQnFSrN?bGgJrIcpB~f@}Rvj@dE~R{E~\\wLzYzJ~RdQz@`rAzJnKfEbQjMr`A~nAnPdt@g@pIfJzJ~WvQj\\~HkMzh@~u@b`@lk@~CpSrDr]zJ~k@zEbQzTf@bGnKvG~WfJnbAja@~\\fJzc@fEzTsq@vfBwL~RgJ|@_IUcBdB~CrNcBlKw`@zTSf^gJ~\\rDr]v`@rmBjf@diCnFtLjH`NvGdJf@zT{Ef^be@`iDzThvBz^~iAjMzTbLjWRbQcGnF_N~RzJnn@nPrSbLrX~M~k@~HzO~Mjp@bB|T~HhWrNja@rIdQbQd@bVfYfEjp@~MnlAbL|c@hExOPfJcGnUwQj\\w`@v`@kMnZzOv`@fEb[zEvVrI~W_I~RwVrDgJrD_DnZwG~f@_NfOSnKf@~HRbB?~HoAtS?hRkCzO?tIsDdEoKrXvBxLfOaDr]jRzJ~CvGkCnn@q~AnAg^~CaN~HcBjH~HjHbLvLzJvGnKrInAbL{@nPwLvQkMjCbBwBvVbj@sS~HrDjC~R_X~z@cQ~k@{@fc@?f|@gJjf@{OwG{c@vV_X~k@cGr~A{EryA~Cr{@z@~u@gh@nPc`@jH_N~CgEfOwGcBwB_DgER_DhY_Npg@oAf^cLzTkCj\\?bQzEnZjMrSbGzEjCnK~Cnd@QnZeBbo@nArXsDpZnAte@xBb`@lAni@kC~\\c[nlAc[bo@oZjf@_XlCcB}h@oAeEgJrNgJeB{@f@cG~Wgh@nlAwLf^rDbBfE~CsDpPSnAkH`QcLfc@z@vVbLvuB~Rni@oUfm@nZnUoF~RnFnK~C?rDoArD?jCrDbGpZbB}@f@kMwB{T?{^vBw[zOgh@nK_XnKwj@~RgOjf@cQja@wBvLcVfJoUvQgh@zO_b@fEmAf^|CvQ{@ja@gJbQRbB?zJg@gErXwVbkBoKv|AnAnjBgJroAsNfr@_]fw@kWzh@oZffAb`@f^fEbBrIrg@fJgEjHcGrDg@bGzErXjiA~\\ns@cLtSvB|WvGx`@jC|MjHrI~\\fTbVvhAbBfOoAvQjCve@f@zOoAbL{EvQkCzYoA~\\?nP_Szr@rSb[fTzYzYjf@vGzE~f@crAbBjCbLrNkCjHrDxG{EhMvBnFsD~HbGfJvB_DvGf@vBcLjCS~CcQrDc`@zOgh@zJmKbLuI~Roi@fJ{TvGoAvGnUjHkMfJzEnP|OjHmH~Hg@fEkHcBgOnAcVzJc[wBwQfE{EfEnFjRv`@b`@zEzO_]vLaLbQ`BrSzm@bQ~\\rIn_@nZz|@fJjRvBfTrIbLbQg@bLz@?vVzJfEjCvLRrXvBfOg@~\\{EbL_InKgJh@kMdYcGvQsDrX?zYcV~CkWnFoUbG{Yrb@wo@ju@cQb[kCjf@~ClbBrD|\\jMnAzkAu`@rSp]nAlCwGbo@{@rl@fExsBbL~cD`SrwBhCr]f@vo@{@ni@sDbj@sNfr@kRzc@{OvQsNvLwB{EcQzOcQfY{JfT_Ib[gEni@SrX{@l\\wBlU_DjHaLrSyVrXwVvQgOnU{J~WkC~RqDnn@Uv`@{@rNcBfJcVrv@kf@bj@gh@fT{YrNeOzO}JjWsDz^nAzm@g@f^wBnP_DdQwQte@cL~a@sIf^uGzc@eBni@fEjk@bBf^?n_@Rv[f@j\\bB~RfErNvGnKzc@r]rIrNfErSf@jRcGzc@sDj\\oAzc@wBzYwGfTgJnP_NfOcLnPgJvVoFbQ_DtS?`Vz@bQrDbVvGjRzYnUrb@jHvVzY~Mja@nFve@jCjf@vBrg@g@nn@wBjf@gOn}@gYr]kW|YcG|RcBnZvBvV~HjRbQzOzOjMrX~\\b`@vj@bQvQ~a@v`@jf@jf@zTzOjWzOnZzJb[~HvV~CfTRvQ{@bQz@zJ|EjMlPjMf^pKvj@t[fiB~Mnn@jRbj@ja@nqAf@j\\{Ez^oFnZkCjWg@zOoAzO?rb@jHjk@nFrInPnd@rDjRnArS{@hOwGh\\gc@~_A{J~k@mArb@tBbe@fJxt@bBr]z@hWwQvzBz@fpA~a@t{Eo_@dEcLuB{JsNsIm\\_NoZcLkRcGgEkC{@{ErIwGvQgOhJ_XoAc`@yQcQjCwGjRgEv[gJfh@{Odt@sg@`~@_If^wBbe@~Hfc@fTb[vLrS~CzJnAtNf@`L?rNsDnU{T~a@sN~R{JzEoKfE{JjMcG~M_DfOcGvBkHkCkHjMgEjR{EbQka@`aCgY`o@gT~RgTvBcG`IsDlKsIjWg@_q@nAwj@kHkCsN{EgOwBsoAsX_Dbj@gEfzAgObQoUlRwGmCoFsDcQwB_NfEs]zOsIgOz@iCjMs]nUgc@wBi_Bf@{|@~Mq{@kMuSoFgT_Iip@oFqPgEsD{@vGsD~RwGjMgTrN{J{@kHcGkCaG{EyQkCkW?we@S{c@kC_SsIwV{E_Ig^e^s]}EuGoPd@gE",
			 levels: "PECEECIDGDADGGEGCDFDFCFDC@ICGCEICFCFEKDFDBCFBGCDADFAFCJADFBFDHDEECHBDCDAGDBAEAHDDDFBAJCEEDFDCGGEHCCFDDCHCGMDGCCECGFEGECICEGEEEFGCFBGFEGFFIGDHGBCDGIFBBEFHDEGEGDDGGFDKFFFFIFEEGFFIFGGHDCIBEGEGDEHEFEKBBFDDIHEHDIADIEFFEIFFCGKHEHECHGFEAEIBCFKEFHFDFHDEIBCJMFGCCBDCKEFCCCBACGDBJECGEGDEBGCEIBAGCACECCCAGDAACFBGEDEAAGDEDCGBEDCBEAGCDABEEBEBABEBDCKBBDCBCAGCEAB?HDAEHBHBAEBABBEBHBECBDBDACEBBGBDADFBBBDHANCECFC?BHADFDCDJBFCDBGBECBHDBABICCBADCCFDC@FECACJCDFCDCCGDDECAHCEADCABBFAADLCFCBEBDBDCICECDBFACBDCCCGCCCECKAEDFCFCCBFIECCFBBFDBAJACECGEDAFBEIAADBEDBFBCIBAFCEGBFD@CCEBCKBDBBACHAEDDFBCEBHDCEAAFBIBDDFCCBGBDBDBGDCCGBDDBFDAHACCFBECICBECAFBDDICEBGCAFBADIBDGDECAGBFBLFBEECGEC@HCDCGEAAF@GDGBDAHD@DCICECAFBBGAECAECDEBHCADBAECGBGACDFDFACCBCGEBBEBECCGAIADDAHCECAADCHBCDBBECBFCBDICCDFBCGBCFDAEBAKCDCCCGDCBBFBDHCDCBACDGEBECHCBDEGCCF@BCHEDEAECJBEBBDCAACGCACDAGBDBBADEAIBEEABCEDEDGCFGDABICBDAEBCFBAEBHBCFCGEACEDHEDCDCLAEBGCEGDFAECDEHECAECJCFBBDECCAHBBCBBBLCCEADBDB?HBBCAFCECF@BBECCHDEBCFBDHCDJCCEBCICFCGAFDGCDECECBK@CCCGCBBBI?BA@FBB@FBDAFAC?GAEHIFFCPEHFDEIEHDCFGAIBDCGEGDFFAKGFCDFDGGEJDCFACGDFDGECGFCGHDFDEDEBGEFGCE@JDFEEHEBDHFCGBFFC@BCCFCECEKFCEHFDEIBCCHDF@GEGGELAGCEHFGHAFCIDAFFDDHDEEICFECFCGBDEEBBEIFDHGCGFCHDCIBF@CCGBFGLFFFCBFDDICDDGCDIEFHBDAHDEDE?CKAEFEHECEJCFGCFDHEGFCAGDGICDAGCCEBEKBCDIHAFEEEEGEDJDDCEFCFBIFFGCHDDGDEEEICFHDFKDDDCEGFCGEFDDMFCEECFDHCBGDDJEDIEHAIDFCFBFCDKEGCEEFCHECBCGBEDEDHCDCFCHFBFDJECGBDDBFDIBDBADHCEDFDIADCGDCCDFCELCDGEFGECIECGFBEGDJEBECFBADHEBGDCCFDIEACFBKEBCEBCHECECHCFFDHDDAGFGLEHDDEDBHCEHEFJDBCFEIEGBDGACEICFAEFCFEFGBDGFEEF?LCH@DCJCICGBDGCJF@DGDFIEDEDIADGFDHBDFADHCEFFDP",
			 color: "#000000",
			 opacity: 0.3,
			 weight: 3,
			 numLevels: 18,
			 zoomFactor: 2}],
		  fill: true,
		  color: "#000000",
		  opacity: 0.3,
		  outline: true
		});
		map.addOverlay(polygon1);
		
		//musea
		for (i=0; i < data.musea.length; i++){
			pnt = new GLatLng(data.musea[i].lat, data.musea[i].lon);
			var marker = createMarker2(pnt, data.musea[i].m)
			marker.url = data.musea[i].url + '/kort';
			markers2.push(marker);
			//map.addOverlay(marker);
		}
		
		  mgr = new GMarkerManager(map);
		  mgr.addMarkers(markers2, 8);
		  mgr.refresh();		
		
		//punten
		for (i=0; i < data.punten.length; i++){
			pnt = new GLatLng(data.punten[i].lat, data.punten[i].lon);
			var marker = createMarker(pnt, data.punten[i].p);
			markers.push(marker);
			//map.addOverlay(marker);
		}
		
		var cluster=new ClusterMarker(map, { markers:markers } );
		cluster.clusterMarkerTitle='Zoom in op %count locaties';
		cluster.clusterMarkerIcon = icon3;
		cluster.intersectPadding=10;
		cluster.fitMapMaxZoom=12;
		cluster.refresh();

}

function createMarker2(ll, title) {
		var marker = new GMarker(ll,{zIndexProcess:haalz, title:title, icon: icon2});
		GEvent.addListener(marker, "click", function(){markerKlik2(marker)} );
		return marker;
}
function createMarker(ll, title) {
		var marker = new GMarker(ll,{title:title, icon: icon});
		GEvent.addListener(marker, "click", function(){markerKlik(marker)} );
		return marker;
}
 
function haalz(){return 10000}
 
function markerKlik(mar){
	mar.openInfoWindowHtml(maakIframe("/zoeken/ballon.aspx?vervaardigingsplaats=" + encode(mar.getTitle())),{maxWidth: 250, buttons:{close:{show:8}}});
} 

function markerKlik2(mar){
	mar.openInfoWindowHtml(maakIframe(mar.url),{maxWidth: 250, buttons:{close:{show:8}}});
} 


function maakIframe(url){
	return "<iframe src='" + url + "' name='ballon'  id='ballon' width='250' height=80' marginwidth='0' marginheight='0' frameborder='0' scrolling='no'></iframe>"
}

function bewaar(){
	document.cookie = "map_zoom=" + map.getZoom() + "; path=/";
	document.cookie = "map_lat="  + map.getCenter().lat() + "; path=/";
	document.cookie = "map_lng="  + map.getCenter().lng() + "; path=/";
}
function getCookie(name, defval) {
	var nameEQ = name + "="; var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) {
			ck = '' + c.substring(nameEQ.length,c.length); if (ck != '') return ck;}
	}
	return defval;
}


//er gaat iets mismet escape() en utf-8 ?! daarom workaround
var unreserved = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.~";
var reserved = "!*'();:@&=+$,/?%#[]";
var hexchars = "0123456789ABCDEFabcdef";

function gethex(decimal) {
  return "%" + hexchars.charAt(decimal >> 4) + hexchars.charAt(decimal & 0xF);
  }

function encode(decoded) {
  var encoded = "";
    for (var i = 0; i < decoded.length; i++ ) {
      var ch = decoded.charAt(i);
      if (unreserved.indexOf(ch) != -1) {
        encoded = encoded + ch;
      } else {
		var charcode = decoded.charCodeAt(i);
        if (charcode < 128) {
          encoded = encoded + gethex(charcode);
        }
        if (charcode > 127 && charcode < 2048) {
          encoded = encoded + gethex((charcode >> 6) | 0xC0);
          encoded = encoded + gethex((charcode & 0x3F) | 0x80);
        }
        if (charcode > 2047 && charcode < 65536) {
          encoded = encoded + gethex((charcode >> 12) | 0xE0);
          encoded = encoded + gethex(((charcode >> 6) & 0x3F) | 0x80);
          encoded = encoded + gethex((charcode & 0x3F) | 0x80);
        }
        if (charcode > 65535) {
          encoded = encoded + gethex((charcode >> 18) | 0xF0);
          encoded = encoded + gethex(((charcode >> 12) & 0x3F) | 0x80);
          encoded = encoded + gethex(((charcode >> 6) & 0x3F) | 0x80);
          encoded = encoded + gethex((charcode & 0x3F) | 0x80);
        }
      }
    } 
   return encoded;
}



/*
	http://googlemapsapi.martinpearman.co.uk/clustermarker
*/
function ClusterMarker(_1,_2){this._map=_1;this._mapMarkers=[];this._iconBounds=[];this._clusterMarkers=[];this._eventListeners=[];if(typeof (_2)==="undefined"){_2={};}this.borderPadding=(_2.borderPadding)?_2.borderPadding:256;this.clusteringEnabled=(_2.clusteringEnabled===false)?false:true;if(_2.clusterMarkerClick){this.clusterMarkerClick=_2.clusterMarkerClick;}if(_2.clusterMarkerIcon){this.clusterMarkerIcon=_2.clusterMarkerIcon;}else{this.clusterMarkerIcon=new GIcon();this.clusterMarkerIcon.image="http://maps.google.com/mapfiles/arrow.png";this.clusterMarkerIcon.iconSize=new GSize(39,34);this.clusterMarkerIcon.iconAnchor=new GPoint(9,31);this.clusterMarkerIcon.infoWindowAnchor=new GPoint(9,31);this.clusterMarkerIcon.shadow="http://www.google.com/intl/en_us/mapfiles/arrowshadow.png";this.clusterMarkerIcon.shadowSize=new GSize(39,34);}this.clusterMarkerTitle=(_2.clusterMarkerTitle)?_2.clusterMarkerTitle:"Click to zoom in and see %count markers";if(_2.fitMapMaxZoom){this.fitMapMaxZoom=_2.fitMapMaxZoom;}this.intersectPadding=(_2.intersectPadding)?_2.intersectPadding:0;if(_2.markers){this.addMarkers(_2.markers);}GEvent.bind(this._map,"moveend",this,this._moveEnd);GEvent.bind(this._map,"zoomend",this,this._zoomEnd);GEvent.bind(this._map,"maptypechanged",this,this._mapTypeChanged);};ClusterMarker.prototype.addMarkers=function(_3){var i;if(!_3[0]){var _5=[];for(i in _3){_5.push(_3[i]);}_3=_5;}for(i=_3.length-1;i>=0;i--){_3[i]._isVisible=false;_3[i]._isActive=false;_3[i]._makeVisible=false;}this._mapMarkers=this._mapMarkers.concat(_3);};ClusterMarker.prototype._clusterMarker=function(_6){function $newClusterMarker(_7,_8,_9){return new GMarker(_7,{icon:_8,title:_9});};var _a=new GLatLngBounds(),i,_c,_d=[],_e,_f=this,_10=this._mapMarkers;for(i=_6.length-1;i>=0;i--){_e=_10[_6[i]];_e.index=_6[i];_a.extend(_e.getLatLng());_d.push(_e);}_c=$newClusterMarker(_a.getCenter(),this.clusterMarkerIcon,this.clusterMarkerTitle.replace(/%count/gi,_6.length));_c.clusterGroupBounds=_a;this._eventListeners.push(GEvent.addListener(_c,"click",function(){_f.clusterMarkerClick({clusterMarker:_c,clusteredMarkers:_d});}));_c._childIndexes=_6;for(i=_6.length-1;i>=0;i--){_10[_6[i]]._parentCluster=_c;}return _c;};ClusterMarker.prototype.clusterMarkerClick=function(_11){this._map.setCenter(_11.clusterMarker.getLatLng(),this._map.getBoundsZoomLevel(_11.clusterMarker.clusterGroupBounds));};ClusterMarker.prototype._filterActiveMapMarkers=function(){var _12=this.borderPadding,_13=this._map.getZoom(),_14=this._map.getCurrentMapType().getProjection(),_15,_16,_17,_18,_19,_1a,_1b=this._map.getBounds(),i,_1d,_1e=[],_1f,_20=this._mapMarkers,_21=this._iconBounds;if(_12){_15=_14.fromLatLngToPixel(_1b.getSouthWest(),_13);_16=new GPoint(_15.x-_12,_15.y+_12);_17=_14.fromPixelToLatLng(_16,_13);_18=_14.fromLatLngToPixel(_1b.getNorthEast(),_13);_19=new GPoint(_18.x+_12,_18.y-_12);_1a=_14.fromPixelToLatLng(_19,_13);_1b.extend(_17);_1b.extend(_1a);}this._activeMarkersChanged=false;if(typeof (_21[_13])==="undefined"){this._iconBounds[_13]=[];this._activeMarkersChanged=true;for(i=_20.length-1;i>=0;i--){_1d=_20[i];_1d._isActive=_1b.containsLatLng(_1d.getLatLng())?true:false;_1d._makeVisible=_1d._isActive;if(_1d._isActive){_1e.push(i);}}}else{for(i=_20.length-1;i>=0;i--){_1d=_20[i];_1f=_1d._isActive;_1d._isActive=_1b.containsLatLng(_1d.getLatLng())?true:false;_1d._makeVisible=_1d._isActive;if(!this._activeMarkersChanged&&_1f!==_1d._isActive){this._activeMarkersChanged=true;}if(_1d._isActive&&typeof (_21[_13][i])==="undefined"){_1e.push(i);}}}return _1e;};ClusterMarker.prototype._filterIntersectingMapMarkers=function(){var _22,i,j,_25=this._map.getZoom(),_26=this._mapMarkers,_27=this._iconBounds;for(i=_26.length-1;i>0;i--){if(_26[i]._makeVisible){_22=[];for(j=i-1;j>=0;j--){if(_26[j]._makeVisible&&_27[_25][i].intersects(_27[_25][j])){_22.push(j);}}if(_22.length!==0){_22.push(i);for(j=_22.length-1;j>=0;j--){_26[_22[j]]._makeVisible=false;}this._clusterMarkers.push(this._clusterMarker(_22));}}}};ClusterMarker.prototype.fitMapToMarkers=function(){var _28=this._mapMarkers,_29=new GLatLngBounds(),i;for(i=_28.length-1;i>=0;i--){_29.extend(_28[i].getLatLng());}var _2b=this._map.getBoundsZoomLevel(_29);if(this.fitMapMaxZoom&&_2b>this.fitMapMaxZoom){_2b=this.fitMapMaxZoom;}this._map.setCenter(_29.getCenter(),_2b);this.refresh();};ClusterMarker.prototype._mapTypeChanged=function(){this.refresh(true);};ClusterMarker.prototype._moveEnd=function(){if(!this._cancelMoveEnd){this.refresh();}else{this._cancelMoveEnd=false;}};ClusterMarker.prototype._preCacheIconBounds=function(_2c,_2d){var _2e=this._map.getCurrentMapType().getProjection(),i,_30,_31,_32,_33,_34,_35,_36,_37,_38=this.intersectPadding,_39=this._mapMarkers;for(i=_2c.length-1;i>=0;i--){_30=_39[_2c[i]];_31=_30.getIcon().iconSize;_32=_2e.fromLatLngToPixel(_30.getLatLng(),_2d);_33=_30.getIcon().iconAnchor;_34=new GPoint(_32.x-_33.x-_38,_32.y-_33.y+_31.height+_38);_35=new GPoint(_32.x-_33.x+_31.width+_38,_32.y-_33.y-_38);_36=_2e.fromPixelToLatLng(_34,_2d);_37=_2e.fromPixelToLatLng(_35,_2d);this._iconBounds[_2d][_2c[i]]=new GLatLngBounds(_36,_37);}};ClusterMarker.prototype.refresh=function(_3a){var i,_3c,_3d=this._map.getZoom(),_3e=this._filterActiveMapMarkers();if(this._activeMarkersChanged||_3a){this._removeClusterMarkers();if(this.clusteringEnabled&&_3d<this._map.getCurrentMapType().getMaximumResolution()){if(_3e.length>0){this._preCacheIconBounds(_3e,_3d);}this._filterIntersectingMapMarkers();}for(i=this._clusterMarkers.length-1;i>=0;i--){this._map.addOverlay(this._clusterMarkers[i]);}for(i=this._mapMarkers.length-1;i>=0;i--){_3c=this._mapMarkers[i];if(!_3c._isVisible&&_3c._makeVisible){this._map.addOverlay(_3c);_3c._isVisible=true;}if(_3c._isVisible&&!_3c._makeVisible){this._map.removeOverlay(_3c);_3c._isVisible=false;}}}};ClusterMarker.prototype._removeClusterMarkers=function(){var i,j,_41=this._map,_42=this._eventListeners,_43=this._clusterMarkers,_44,_45=this._mapMarkers;for(i=_43.length-1;i>=0;i--){_44=_43[i]._childIndexes;for(j=_44.length-1;j>=0;j--){delete _45[_44[j]]._parentCluster;}_41.removeOverlay(_43[i]);}for(i=_42.length-1;i>=0;i--){GEvent.removeListener(_42[i]);}this._clusterMarkers=[];this._eventListeners=[];};ClusterMarker.prototype.removeMarkers=function(){var i,_47=this._mapMarkers,_48=this._map;for(i=_47.length-1;i>=0;i--){if(_47[i]._isVisible){_48.removeOverlay(_47[i]);}delete _47[i]._isVisible;delete _47[i]._isActive;delete _47[i]._makeVisible;}this._removeClusterMarkers();this._mapMarkers=[];this._iconBounds=[];};ClusterMarker.prototype.triggerClick=function(_49){var _4a=this._mapMarkers[_49];if(_4a._isVisible){GEvent.trigger(_4a,"click");}else{if(_4a._isActive){var _4b=_4a._parentCluster._childIndexes,_4c=true,_4d,i,_4f=this._map.getZoom(),_50,_51=this._iconBounds,_52=this._map.getCurrentMapType().getMaximumResolution();while(_4c&&_4f<_52){_4c=false;_4f++;if(typeof (_51[_4f])==="undefined"){_51[_4f]=[];this._preCacheIconBounds(_4b,_4f);}else{_4d=[];for(i=_4b.length-1;i>=0;i--){if(typeof (_51[_4f][_4b[i]])==="undefined"){_4d.push(_4b[i]);}}if(_4d.length>=1){this._preCacheIconBounds(_4d,_4f);}}for(i=_4b.length-1;i>=0;i--){_50=_4b[i];if(_50!==_49&&_51[_4f][_50].intersects(_51[_4f][_49])){_4c=true;break;}}}this._map.setCenter(_4a.getLatLng(),_4f);this.triggerClick(_49);}else{this._map.setCenter(_4a.getLatLng());this.triggerClick(_49);}}};ClusterMarker.prototype._zoomEnd=function(){this._cancelMoveEnd=true;this.refresh(true);};