/*

  VicreaAddons.js -- Vicrea OpenLayers Map Viewer extension Library 

  PLEASE LOAD OPENLAYERS.JS JAVASCRIPT FILE IN YOUR WEB APPLICATION BEFORE THIS FILE.

  Copyright 2008 Vicrea Solutions B.V. 
  Nothing in this file may be copied or used outside Vicrea Applications 
  and without a usage license agreement from Vicrea Solutions B.V.

  Includes compressed code for Vicrea sources.
  
  
*/

/* Contains portions of Prototype.js:
 *
 * Prototype JavaScript framework, version 1.4.0
 *  (c) 2005 Sam Stephenson <sam@conio.net>
 *
 *  Prototype is freely distributable under the terms of an MIT-style license.
 *  For details, see the Prototype web site: http://prototype.conio.net/
 *
 *--------------------------------------------------------------------------*/

/**
 * Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>
 * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 */
var Vicrea={singleFile:true};(function(){var singleFile=(typeof Vicrea=="object"&&Vicrea.singleFile);window.Vicrea={_scriptName:(!singleFile)?"lib/vicreaaddons.js":"vicreaaddons.js",_getScriptLocation:function(){var scriptLocation="";var scriptName=Vicrea._scriptName;var scripts=document.getElementsByTagName('script');for(var i=0;i<scripts.length;i++){var src=scripts[i].getAttribute('src');if(src){src=src.toLowerCase();var index=src.lastIndexOf(scriptName);var pathLength=src.lastIndexOf('?');if(pathLength<0){pathLength=src.length;}
if((index>-1)&&(index+scriptName.length==pathLength)){scriptLocation=src.slice(0,pathLength-scriptName.length);break;}}}
return scriptLocation;}};if(!singleFile)
{var jsfiles=new Array("Vicrea/OpenLayers.js","Vicrea/OpenLayers/Util.js","Vicrea/OpenLayers/Marker.js","Vicrea/OpenLayers/Marker/Label.js","Vicrea/OpenLayers/Control.js","Vicrea/OpenLayers/Control/ScaleLine.js","Vicrea/OpenLayers/Control/PanZoom.js","Vicrea/OpenLayers/Control/PanZoomBar.js","Vicrea/OpenLayers/Control/LayerSwitcher.js","Vicrea/OpenLayers/Control/OverviewMap.js","Vicrea/OpenLayers/Control/ClearFeatures.js","Vicrea/OpenLayers/Control/VicreaToolbar.js","Vicrea/OpenLayers/Control/ZoomToInitialExtent.js","Vicrea/OpenLayers/Control/SelectFeature.js","Vicrea/OpenLayers/Control/SelectFeatureWMS.js","Vicrea/OpenLayers/Control/Legenda.js","Vicrea/OpenLayers/Format.js","Vicrea/OpenLayers/Format/Maploader.js","Vicrea/OpenLayers/Format/MapDef.js","Vicrea/OpenLayers/Layer.js","Vicrea/OpenLayers/Layer/Maploader.js","Vicrea/OpenLayers/Layer/Rijksdriehoek.js","Vicrea/OpenLayers/Strategy.js","Vicrea/OpenLayers/Strategy/Filter.js","Vicrea/OpenLayers/Strategy/ClusterByGeometryAndAttribute.js","Vicrea/Rico/Color.js");var agent=navigator.userAgent;var docWrite=(agent.match("MSIE")||agent.match("Safari"));if(docWrite)
{var allScriptTags=new Array(jsfiles.length);}
var host=Vicrea._getScriptLocation()+"lib/";for(var i=0;i<jsfiles.length;i++)
{if(docWrite)
{allScriptTags[i]="<script src='"+host+jsfiles[i]+"'></script>";}
else
{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}}
if(docWrite)
{document.write(allScriptTags.join(""));}}})();Vicrea.VERSION_NUMBER="2.0.34";Vicrea.OpenLayers={CLASS_NAME:"Vicrea.OpenLayers"};Vicrea.OpenLayers.Control=OpenLayers.Class(OpenLayers.Control,{setMap:function(map){if(Vicrea.OpenLayers.Util.themeImgUrl==null)
{Vicrea.OpenLayers.Util.loadTheme(map.theme);}
OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"Vicrea.OpenLayers.Control"});Vicrea.OpenLayers.Format={CLASS_NAME:"Vicrea.OpenLayers.Format"};Vicrea.OpenLayers.Layer={CLASS_NAME:"Vicrea.OpenLayers.Layer"};Vicrea.OpenLayers.Marker={CLASS_NAME:"Vicrea.OpenLayers.Marker"};Vicrea.OpenLayers.Strategy={CLASS_NAME:"Vicrea.OpenLayers.Strategy"};Vicrea.OpenLayers.ImgPath='';Vicrea.OpenLayers.Util={themeImgPath:null,loadTheme:function(map_theme)
{var relative_theme=map_theme.slice(OpenLayers._getScriptLocation().length);var theme=Vicrea._getScriptLocation()+relative_theme;var addNode=true;var nodes=document.getElementsByTagName('link');for(var i=0,len=nodes.length;i<len;++i){if(OpenLayers.Util.isEquivalentUrl(nodes.item(i).href,theme)){addNode=false;break;}}
if(addNode){var cssNode=document.createElement('link');cssNode.setAttribute('rel','stylesheet');cssNode.setAttribute('type','text/css');cssNode.setAttribute('href',theme);document.getElementsByTagName('head')[0].appendChild(cssNode);}
Vicrea.OpenLayers.Util.themeImgPath=theme.slice(0,theme.lastIndexOf('/'))+'/img/';},CLASS_NAME:"Vicrea.OpenLayers.Util"};Vicrea.OpenLayers.Util.getImagesLocation=function(){if(!Vicrea.OpenLayers.ImgPath)
{Vicrea.OpenLayers.ImgPath=Vicrea._getScriptLocation()+"img/";}
return Vicrea.OpenLayers.ImgPath;};Vicrea.OpenLayers.Util.getThemeImagesLocation=function(){if(!Vicrea.OpenLayers.Util.themeImgPath)
{alert("theme images path not yet set. Please do not call getThemeImagesLocation before controls are drawn.");}
return Vicrea.OpenLayers.Util.themeImgPath;};Vicrea.OpenLayers.Control.ClearFeatures=OpenLayers.Class(Vicrea.OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,layer:null,initialize:function(layer,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layer=layer;},trigger:function(){if(this.layer){this.layer.destroyFeatures();}},CLASS_NAME:"Vicrea.OpenLayers.Control.ClearFeatures"});Vicrea.OpenLayers.Control.LayerSwitcher=OpenLayers.Class(Vicrea.OpenLayers.Control,{ascending:false,hideBaseLayers:false,activeLayer:null,enableLayerSelection:false,EVENT_TYPES:["selectedlayerchanged"],roundCorner:true,activeColor:"darkblue",layersDiv:null,baseLayersDiv:null,dataLbl:null,dataLayersDiv:null,minimizeDiv:null,maximizeDiv:null,delayRedraw:false,enforcedLayerOrder:[],showMinimizeButton:true,initialize:function(options){this.EVENT_TYPES=Vicrea.OpenLayers.Control.LayerSwitcher.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){OpenLayers.Event.stopObservingElement(this.div);if(this.showMinimizeButton){OpenLayers.Event.stopObservingElement(this.minimizeDiv);OpenLayers.Event.stopObservingElement(this.maximizeDiv);}
for(var i=0;i<this.map.layers.length;i++){this.removeLayerDiv(this.map.layers[i]);}
this.removeGroupDivs();this.map.events.unregister("addlayer",this,this.onAddLayer);this.map.events.unregister("changelayer",this,this.onLayerChanged);this.map.events.unregister("removelayer",this,this.onRemoveLayer);this.map.events.unregister("changebaselayer",this,this.redraw);for(var i=0;i<this.map.layers.length;i++){this.map.layers[i].events.unregister('loadstart',this,this.onLayerLoadStart)
this.map.layers[i].events.unregister('loadcancel',this,this.onLayerLoadEnd)
this.map.layers[i].events.unregister('loadend',this,this.onLayerLoadEnd)}
OpenLayers.Control.prototype.destroy.apply(this,arguments);},setMap:function(map){Vicrea.OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register("addlayer",this,this.onAddLayer);this.map.events.register("changelayer",this,this.onLayerChanged);this.map.events.register("removelayer",this,this.onRemoveLayer);this.map.events.register("changebaselayer",this,this.redraw);for(var i=0;i<this.map.layers.length;i++){this.map.layers[i].events.register('loadstart',this,this.onLayerLoadStart);this.map.layers[i].events.register('loadcancel',this,this.onLayerLoadEnd);this.map.layers[i].events.register('loadend',this,this.onLayerLoadEnd);this.map.layers[i].vicrea_addon_layer_is_loading=false;}
if(this.map.MapCustomSettings!=null){var mes=this.map.MapCustomSettings;if(mes.LayerSwitcherActiveColor!=undefined)this.activeColor=mes.LayerSwitcherActiveColor;if(mes.LayerSwitcherRoundCorner!=undefined)this.roundCorner=mes.LayerSwitcherRoundCorner;if(mes.LayerSwitcherShowMinimizeButton!=undefined)this.showMinimizeButton=mes.LayerSwitcherShowMinimizeButton;}},draw:function(){OpenLayers.Control.prototype.draw.apply(this);this.div.className+=" viNoPrint";this.loadContents();if(!this.outsideViewport){this.minimizeControl();}
this.redraw();this.div.style.right="0px";return this.div;},enforceGroupOrder:function(){var startchanging=false;if(this.enforcedLayerOrder.length!=this.map.layers.length){startchanging=true;}
else{for(var i=0;i<this.enforcedLayerOrder.length;i++){if(this.enforcedLayerOrder[i].name!=this.map.layers[i].name){startchanging=true;}}}
if(startchanging==false){return;}
this.delayRedraw=true;var baselayers=[];var groupedlayers=[];var unselectablelayers=[];for(var li=0;li<this.map.layers.length;li++){layer=this.map.layers[li];if(layer.isBaseLayer){baselayers.push({name:layer.name,group:layer.group});}
else if(layer.displayInLayerSwitcher==false){unselectablelayers.push({name:layer.name,group:layer.group});}
else{var gname=layer.group;var name=layer.name;var found=false;for(var gi=0;gi<groupedlayers.length;gi++){if(groupedlayers[gi].group){if(groupedlayers[gi].group==gname){found=true;groupedlayers[gi].layers.push({name:layer.name,group:layer.group});break;}}}
if(found==false){var newgroup={group:gname,layers:[]}
newgroup.layers.push({name:layer.name,group:layer.group});groupedlayers.push(newgroup)}}}
this.enforcedLayerOrder=[];for(var b1=0;b1<baselayers.length;b1++){this.enforcedLayerOrder.push({name:baselayers[b1].name,group:baselayers[b1].group});}
for(var g1=0;g1<groupedlayers.length;g1++){var mygroup=groupedlayers[g1];for(g2=0;g2<mygroup.layers.length;g2++){this.enforcedLayerOrder.push({name:mygroup.layers[g2].name,group:mygroup.layers[g2].group});}}
for(var u1=0;u1<unselectablelayers.length;u1++){this.enforcedLayerOrder.push({name:unselectablelayers[u1].name,group:unselectablelayers[u1].group});}
for(var n=0;n<this.enforcedLayerOrder.length;n++){var curidx=0;for(curidx=0;curidx<this.map.layers.length;curidx++){if(this.map.layers[curidx].name==this.enforcedLayerOrder[n].name&&this.map.layers[curidx].group==this.enforcedLayerOrder[n].group){break;}}
if(curidx!=n){this.map.raiseLayer(this.map.layers[curidx],n-curidx);}}
this.delayRedraw=false;},redraw:function(){if(this.delayRedraw==true){return this.div;}
this.enforceGroupOrder();for(var i=0;i<this.map.layers.length;i++){var layerdiv=this.removeLayerDiv(this.map.layers[i]);if(layerdiv){layerdiv.parentNode.removeChild(layerdiv);}}
this.removeGroupDivs();while(this.dataLayersDiv.firstChild!=null){this.dataLayersDiv.removeChild(this.dataLayersDiv.firstChild);}
while(this.baseLayersDiv.firstChild!=null){this.baseLayersDiv.removeChild(this.baseLayersDiv.firstChild);}
var containsOverlays=false;var containsBaseLayers=false;var i;var layer;for(i=0;i<this.map.layers.length;i++){layer=this.map.layers[i];if(!this.ascending){layer=this.map.layers[this.map.layers.length-i-1];}
var baseLayer=layer.isBaseLayer;var layersDiv=null;if(layer.displayInLayerSwitcher){if(baseLayer){containsBaseLayers=true;}
else{containsOverlays=true;}
layerDiv=this.createDivForLayer(layer);if(!baseLayer){if(!layer.group){layersDiv=this.dataLayersDiv;}
else{layersDiv=this.createDivForGroup(layer.group,layer.showExpandedInLayerSwitcher);}}
else{layersDiv=this.baseLayersDiv;}
layersDiv.appendChild(layerDiv);}
else{}}
this.verifyGroupCheckedStates();this.dataLbl.style.display=(containsOverlays)?"":"none";this.baseLbl.style.display=(containsBaseLayers)?"":"none";return this.div;},createDivForLayer:function(layer){var checked=(layer.isBaseLayer)?(layer==this.map.baseLayer):layer.getVisibility();var layerDiv=document.createElement("div");layerDiv.id=this.id+"_layer_"+layer.group+"_"+layer.name;var layerDivClass="olLayerDivInactive";if(layer==this.activeLayer){var layerDivClass="olLayerDivActive";}
var inputElem=document.createElement("input");inputElem.id=this.id+"_input_"+layer.group+"_"+layer.name;inputElem.name=(layer.isBaseLayer)?"baseLayers":layer.name;inputElem.type=(layer.isBaseLayer)?"radio":"checkbox";inputElem.value=layer.name;inputElem.checked=checked;inputElem.defaultChecked=checked;if(!layer.isBaseLayer&&!layer.inRange){inputElem.disabled=true;}
var context={'inputElem':inputElem,'layer':layer,'layerSwitcher':this};OpenLayers.Event.observe(inputElem,"mouseup",OpenLayers.Function.bindAsEventListener(this.onLayerInputClick,context));var loadingImg=document.createElement("img");loadingImg.id=this.id+"_loading_"+layer.group+"_"+layer.name;loadingImg.src=Vicrea.OpenLayers.Util.getImagesLocation()+"loading.gif";loadingImg.style.display=layer.vicrea_addon_layer_is_loading?'inline':'none';loadingImg.style.margin='2px';var labelSpan=document.createElement("span");labelSpan.id=this.id+'_span_'+layer.group+"_"+layer.name;if(!layer.isBaseLayer&&!layer.inRange){labelSpan.style.color="gray";labelSpan.title='This layer is out of range';layerDivClass="olLayerDiv"+"OutOfRange";}
labelSpan.innerHTML=layer.name;labelSpan.style.verticalAlign=(layer.isBaseLayer)?"bottom":"baseline";if(this.enableLayerSelection==true&&!layer.isBaseLayer&&layer.inRange){OpenLayers.Event.observe(labelSpan,"click",OpenLayers.Function.bindAsEventListener(this.onLayerLabelClick,context));}
else{labelSpan.style.cursor="auto";}
layerDiv.className=layerDivClass;if(!layer.isBaseLayer){buttonsGroupDiv=document.createElement("div");buttonsGroupDiv.id=this.id+"_btngrp_"+layer.group+"_"+layer.name;buttonsGroupDiv.className="olLayerSwitcherLayerBns viNoPrint";if(layer.buttonDropLayer===true){this.addDropLayerButton(layer,buttonsGroupDiv);}
if(layer.buttonMoveLayer===true){this.addMoveLayerButton(layer,buttonsGroupDiv);}
if(layer.buttonOpacity===true){this.addOpacityLayerButton(layer,buttonsGroupDiv);}
if(layer.buttonZoomToExtent===true){this.addZoomToLayerExtentButton(layer,buttonsGroupDiv);}
layerDiv.appendChild(buttonsGroupDiv);}
layerDiv.appendChild(inputElem);layerDiv.appendChild(loadingImg);layerDiv.appendChild(labelSpan);return layerDiv;},removeLayerDiv:function(layer){if(layer.displayInLayerSwitcher==true){var layerDiv=document.getElementById(this.id+"_layer_"+layer.group+"_"+layer.name);var inputDiv=document.getElementById(this.id+"_input_"+layer.group+"_"+layer.name);var labelDiv=document.getElementById(this.id+"_span_"+layer.group+"_"+layer.name);var moveUpDiv=document.getElementById(this.id+"_lyr_up_img_"+layer.group+"_"+layer.name);var moveDownDiv=document.getElementById(this.id+"_lyr_dn_img_"+layer.group+"_"+layer.name);var OpaPlusDiv=document.getElementById(this.id+"_opa_up_"+layer.group+"_"+layer.name);var OpaMinDiv=document.getElementById(this.id+"_opa_dn_"+layer.group+"_"+layer.name);var RemLayerDiv=document.getElementById(this.id+"_droplyr_"+layer.group+"_"+layer.name);var ZmLayerDiv=document.getElementById(this.id+"_zm_"+layer.group+"_"+layer.name);if(inputDiv){OpenLayers.Event.stopObservingElement(inputDiv);}
if(labelDiv){OpenLayers.Event.stopObservingElement(labelDiv);}
if(moveUpDiv){OpenLayers.Event.stopObservingElement(moveUpDiv);}
if(moveDownDiv){OpenLayers.Event.stopObservingElement(moveDownDiv);}
if(OpaPlusDiv){OpenLayers.Event.stopObservingElement(OpaPlusDiv);}
if(OpaMinDiv){OpenLayers.Event.stopObservingElement(OpaMinDiv);}
if(RemLayerDiv){OpenLayers.Event.stopObservingElement(RemLayerDiv);}
if(ZmLayerDiv){OpenLayers.Event.stopObservingElement(ZmLayerDiv);}
return layerDiv;}
else{return null;}},loadContents:function(){OpenLayers.Event.observe(this.div,"mouseup",OpenLayers.Function.bindAsEventListener(this.mouseUp,this));OpenLayers.Event.observe(this.div,"click",this.ignoreEvent);OpenLayers.Event.observe(this.div,"mousedown",OpenLayers.Function.bindAsEventListener(this.mouseDown,this));OpenLayers.Event.observe(this.div,"dblclick",this.ignoreEvent);this.layersDiv=document.createElement("div");this.layersDiv.id=this.id+"_olLayersDiv";this.layersDiv.className="olLayersDiv";this.baseLbl=document.createElement("div");this.baseLbl.className="olLayersLabel";this.baseLbl.id=this.id+"_olBaseLayerLabel";this.baseLbl.innerHTML="Achtergrond";this.baseLayersDiv=document.createElement("div");this.baseLayersDiv.id=this.id+"_olBaseLayersDiv";this.baseLayersDiv.className="olDataOrBaseLayersDiv";this.dataLbl=document.createElement("div");this.dataLbl.className="olLayersLabel";this.dataLbl.id=this.id+"_olDataLayerLabel";this.dataLbl.innerHTML="Overlays";this.dataLayersDiv=document.createElement("div");this.dataLayersDiv.id=this.id+"_olDataLayersDiv";this.dataLayersDiv.className="olDataOrBaseLayersDiv";if(this.ascending){if(this.hideBaseLayers==false){this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);}
this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);}else{this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);if(this.hideBaseLayers==false){this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);}}
this.div.appendChild(this.layersDiv);if(this.roundCorner===true){OpenLayers.Rico.Corner.round(this.div,{corners:"tl bl",bgColor:"transparent",color:this.activeColor,blend:false});}
if(this.showMinimizeButton){var imgLocation=Vicrea.OpenLayers.Util.getThemeImagesLocation();var sz=new OpenLayers.Size(18,18);var img=imgLocation+'layer-switcher-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_VicLS_MaximizeDiv",null,sz,img,"absolute");this.maximizeDiv.style.top="5px";this.maximizeDiv.style.right="0px";this.maximizeDiv.style.left="";this.maximizeDiv.style.display="none";this.maximizeDiv.style.opacity=1;OpenLayers.Event.observe(this.maximizeDiv,"click",OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);img=imgLocation+'layer-switcher-minimize.png';sz=new OpenLayers.Size(18,18);this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_VicLS_MinimizeDiv",null,sz,img,"absolute");this.minimizeDiv.style.top="5px";this.minimizeDiv.style.right="0px";this.minimizeDiv.style.left="";this.minimizeDiv.style.display="none";this.minimizeDiv.style.opacity=1;OpenLayers.Event.observe(this.minimizeDiv,"click",OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));this.div.appendChild(this.minimizeDiv);}},createDivForGroup:function(groupname,showExpanded){if(groupname==null||groupname.length==0){return this.dataLayersDiv;}
var group_content=this.getGroupDivById(this.id+"_group_"+groupname);if(!group_content){var my_subname=groupname;var prev_index=0;while(my_subname.indexOf("/",prev_index)!=-1){my_subname=my_group_name.slice(0,my_subname.indexOf("/",prev_index));prev_index=my_subname.indexOf("/",prev_index);group_content=this.getGroupDivById(this.id+"_group_"+my_subname);if(group_content==null){this.buildGroupDiv(my_subname,showExpanded);}
else{if(showExpanded==true){group_content.style.display='block';}}}
group_content=this.buildGroupDiv(groupname,showExpanded);}
else{if(showExpanded==true){group_content.style.display='block';}}
return group_content;},getGroupDivById:function(id){var retval=null;var elements=this.dataLayersDiv.getElementsByTagName('div');for(var i=0;i<elements.length;i++){if(elements[i].id==id){retval=elements[i];break;}}
return retval;},buildGroupDiv:function(groupid,showExpanded){var parentDiv;var thisgroupname=groupid;if(groupid.lastIndexOf("/")==-1){parentDiv=this.dataLayersDiv;}
else{parentDiv=document.getElementById(this.id+"_group_"+groupid.slice(0,groupid.lastIndexOf("/")));thisgroupname=groupid.slice(groupid.lastIndexOf("/"));}
var groupNameDiv=document.createElement("div");groupNameDiv.id=this.id+"_groupName_"+groupid;groupNameDiv.className="olGroupName";groupDiv=document.createElement("div");groupDiv.id=this.id+"_group_"+groupid;groupDiv.className="olLayerGroup";groupDiv.style.display=(showExpanded?'block':'none');var groupLbl=document.createElement("span");groupLbl.id=this.id+"_groupLabel_"+groupid;groupLbl.className="olGroupLabel";groupLbl.innerHTML=thisgroupname;OpenLayers.Event.observe(groupLbl,"mouseup",OpenLayers.Function.bindAsEventListener(this.onGroupLabelClick,{group:groupid,layerswitcher:this}));var groupInput=document.createElement("input");groupInput.id=this.id+"_groupInput_"+groupid;groupInput.type="checkbox";groupInput.checked=false;groupInput.defaultChecked=false;OpenLayers.Event.observe(groupInput,"mouseup",OpenLayers.Function.bindAsEventListener(this.onGroupInputClick,{group:groupid,layerswitcher:this}));groupNameDiv.appendChild(groupInput);groupNameDiv.appendChild(groupLbl);parentDiv.appendChild(groupNameDiv);parentDiv.appendChild(groupDiv);return groupDiv;},verifyGroupCheckedStates:function(){var group_inputs=this.dataLayersDiv.getElementsByTagName('input');var groupInputName=this.id+"_groupInput_";var layerInputName=this.id+"_input_";for(var i=0;i<group_inputs.length;i++){var group_input=group_inputs[i];if(group_input.id.indexOf(groupInputName)==0){var group_sub_elems=group_input.parentNode.parentNode.getElementsByTagName('input');var myLayerInputName=layerInputName+group_input.id.slice(groupInputName.length);var checked=true;for(var j=0;j<group_sub_elems.length;j++){var sub_elem=group_sub_elems[j];if(sub_elem.id.indexOf(myLayerInputName)==0&&sub_elem.checked==false){checked=false;}}
group_input.checked=checked;}}},removeGroupDivs:function(){for(var i=0;i<this.map.layers.length;i++){var groupid=this.map.layers[i].group;done=false;if(!groupid){done=true;}
while(done==false){var groupName_div=document.getElementById(this.id+'_groupName_'+groupid);if(groupName_div){var input_div=document.getElementById(this.id+'_groupInput_'+groupid);OpenLayers.Event.stopObservingElement(input_div);input_div.parentNode.removeChild(input_div);var span_div=document.getElementById(this.id+'_groupLabel_'+groupid);OpenLayers.Event.stopObservingElement(span_div);span_div.parentNode.removeChild(span_div);groupName_div.parentNode.removeChild(groupName_div);if(groupName_div.childNodes.length!=0){done=true;}
var group_div=document.getElementById(this.id+'_group_'+groupid);if(group_div.childNodes.length==0){if(document.getElementById(this.id+"_layer_"+this.map.layers[i].group+"_"+this.map.layers[i].name)!=null){alert('please fix: there are still layers in this group div.');}
group_div.parentNode.removeChild(group_div);}}
else{done=true;}
if(groupid.lastIndexOf("/")==-1){done=true;}
else{groupid=groupid.slice(0,groupid.lastIndexOf("/"));}}}},addDropLayerButton:function(layer,div){var button=document.createElement("img");button.id=this.id+"_droplyr_"+layer.group+"_"+layer.name;button.src=Vicrea.OpenLayers.Util.getThemeImagesLocation()+"remove_layer.png";button.alt="Remove layer";button.title="Remove layer";button.className="olLayerSwitcherCtlBn";div.appendChild(button);OpenLayers.Event.observe(button,"mouseup",OpenLayers.Function.bindAsEventListener(this.onRemoveLayerClick,{"layer":layer}));},addMoveLayerButton:function(layer,div){var buttonDiv=document.createElement("div");buttonDiv.id=this.id+"_movelyrbn_"+layer.group+"_"+layer.name;buttonDiv.className="olLayerSwitcherBns";var buttonUp=document.createElement("img");buttonUp.id=this.id+"_lyr_up_img_"+layer.group+"_"+layer.name;buttonUp.src=Vicrea.OpenLayers.Util.getThemeImagesLocation()+"move_layer_up.png";buttonUp.alt="Move layer up";buttonUp.title="Move layer up";buttonUp.className="olLayerSwitcherCtlBn";buttonDiv.appendChild(buttonUp);var buttonDown=document.createElement("img");buttonDown.id=this.id+"_lyr_dn_img_"+layer.group+"_"+layer.name;buttonDown.src=Vicrea.OpenLayers.Util.getThemeImagesLocation()+"move_layer_down.png";buttonDown.alt="Move layer down";buttonDown.title="Move layer down";buttonDown.className="olLayerSwitcherCtlBn";buttonDiv.appendChild(buttonDown);div.appendChild(buttonDiv);OpenLayers.Event.observe(buttonUp,"mouseup",OpenLayers.Function.bindAsEventListener(this.onMoveLayerClick,{"layer":layer,"up":(this.ascending==true)?true:false,layerSwitcher:this}));OpenLayers.Event.observe(buttonDown,"mouseup",OpenLayers.Function.bindAsEventListener(this.onMoveLayerClick,{"layer":layer,"up":(this.ascending==true)?false:true,layerSwitcher:this}));},addOpacityLayerButton:function(layer,div){var imgLoc=Vicrea.OpenLayers.Util.getThemeImagesLocation();var buttonDiv=document.createElement("div");buttonDiv.id=this.id+"_opa_bns_"+layer.group+"_"+layer.name;buttonDiv.className="olLayerSwitcherBns";var buttonDown=document.createElement("img");buttonDown.id=this.id+"_opa_dn_"+layer.group+"_"+layer.name;buttonDown.src=imgLoc+"set_layer_opacity_down.png";buttonDown.alt="Make layer transparent";buttonDown.title="Make layer transparent";buttonDown.className="olLayerSwitcherCtlBn";buttonDiv.appendChild(buttonDown);var opacity_bg=document.createElement('span');opacity_bg.style.width='20px';opacity_bg.style.display='inline-block';opacity_bg.style.marginLeft='2px';var opacity_img=document.createElement('img');opacity_img.src=imgLoc+"opacity.png";opacity_img.id=this.id+"_opa_img_"+layer.group+"_"+layer.name;opacity_img.style.width=((layer.opacity==null?1:layer.opacity)*20).toFixed(0)+'px';opacity_img.style.height='12px';opacity_img.style.cursor='auto';opacity_bg.appendChild(opacity_img);buttonDiv.appendChild(opacity_bg);var buttonUp=document.createElement("img");buttonUp.id=this.id+"_opa_up_"+layer.group+"_"+layer.name;buttonUp.src=imgLoc+"set_layer_opacity_up.png";buttonUp.alt="Make layer visible";buttonUp.title="Make layer visible";buttonUp.className="olLayerSwitcherCtlBn";buttonDiv.appendChild(buttonUp);div.appendChild(buttonDiv);OpenLayers.Event.observe(buttonUp,"mouseup",OpenLayers.Function.bindAsEventListener(this.onOpacityLayerClick,{"layer":layer,"up":true,layerswitcher:this}));OpenLayers.Event.observe(buttonDown,"mouseup",OpenLayers.Function.bindAsEventListener(this.onOpacityLayerClick,{"layer":layer,"up":false,layerswitcher:this}));},addZoomToLayerExtentButton:function(layer,div){var button=document.createElement("img");button.id=this.id+"_zm_"+layer.group+"_"+layer.name;button.src=Vicrea.OpenLayers.Util.getThemeImagesLocation()+"set_zoom_to_layer_extent.png";button.alt="Zoom to layer exntent";button.title="Zoom to layer exntent";button.className="olLayerSwitcherCtlBn";div.appendChild(button);OpenLayers.Event.observe(button,"mouseup",OpenLayers.Function.bindAsEventListener(this.onZoomToLayer,{"layer":layer,layerSwitcher:this}));},setSelectedLayer:function(layer){this.activeLayer=layer;var activeDivId=this.id+"_layer_"+layer.group+"_"+layer.name;for(var i=0;i<this.map.layers.length;i++){var testDiv=document.getElementById(this.id+"_layer_"+this.map.layers[i].group+"_"+this.map.layers[i].name);if(testDiv){testDiv.className="olLayerDivInactive";if(this.map.layers[i]==this.activeLayer){testDiv.className="olLayerDivActive";}}}
this.events.triggerEvent("selectedlayerchanged",{layer:layer,layerSwitcher:this});},expandGroup:function(layergroup,expand_it){var div=document.getElementById(this.id+"_group_"+layergroup);if(div){div.style.display=(expand_it===true?"block":"none");}
for(var i=0;i<this.map.layers.length;i++){if(this.map.layers[i].group==layergroup){this.map.layers[i].showExpandedInLayerSwitcher=expand_it;}}},onAddLayer:function(evt){evt.layer.events.register('loadstart',this,this.onLayerLoadStart);evt.layer.events.register('loadcancel',this,this.onLayerLoadEnd);evt.layer.events.register('loadend',this,this.onLayerLoadEnd);evt.layer.vicrea_addon_layer_is_loading=false;this.redraw();},onRemoveLayer:function(evt){evt.layer.vicrea_addon_layer_is_loading=false;evt.layer.events.unregister('loadstart',this,this.onLayerLoadStart)
evt.layer.events.unregister('loadcancel',this,this.onLayerLoadEnd)
evt.layer.events.unregister('loadend',this,this.onLayerLoadEnd)
var layerdiv=this.removeLayerDiv(evt.layer);if(layerdiv){layerdiv.parentNode.removeChild(layerdiv);}
this.redraw();},onLayerChanged:function(evt){var change_applied=false;if(evt.property=="name"||evt.property=="visibility"){var new_elem=this.createDivForLayer(evt.layer);var old_elem=this.removeLayerDiv(evt.layer);if(old_elem){change_applied=true;old_elem.parentNode.replaceChild(new_elem,old_elem);var input_changed=(old_elem.getElementsByTagName('input')[0].checked!=evt.layer.visibility)
if(input_changed){this.verifyGroupCheckedStates();}}}
if(change_applied==false){this.redraw();}},onLayerLoadStart:function(evt){evt.object.vicrea_addon_layer_is_loading=true;var loadingImg=document.getElementById(this.id+"_loading_"+evt.object.group+"_"+evt.object.name);if(loadingImg){loadingImg.style.display='inline';}},onLayerLoadEnd:function(evt){evt.object.vicrea_addon_layer_is_loading=false;var loadingImg=document.getElementById(this.id+"_loading_"+evt.object.group+"_"+evt.object.name);if(loadingImg){loadingImg.style.display='none';}},onLayerInputClick:function(e){if(!this.inputElem.disabled){if(this.inputElem.type=="radio"){this.layer.map.setBaseLayer(this.layer);}else{this.layer.setVisibility(!this.inputElem.checked);}}
if(e){OpenLayers.Event.stop(e);}},onLayerLabelClick:function(e){this.layerSwitcher.setSelectedLayer(this.layer);if(e){OpenLayers.Event.stop(e);}},onGroupInputClick:function(e){var groupDiv=document.getElementById(this.layerswitcher.id+"_groupInput_"+this.group);groupDiv.checked=!groupDiv.checked;var check=groupDiv.checked;for(var j=0;j<this.layerswitcher.map.layers.length;j++){if(this.layerswitcher.map.layers[j].group&&this.layerswitcher.map.layers[j].group.indexOf(this.group)==0)
{this.layerswitcher.map.layers[j].setVisibility(check);}}
if(e){OpenLayers.Event.stop(e);}},onGroupLabelClick:function(e){var layergroup=this.group;var div=document.getElementById(this.layerswitcher.id+"_group_"+layergroup);if(div){var expand=(div.style.display!="block"?true:false);this.layerswitcher.expandGroup(layergroup,expand);}},onRemoveLayerClick:function(e){var map=this.layer.map;map.removeLayer(this.layer,true);OpenLayers.Event.stop(e);},onMoveLayerClick:function(e){var map=this.layer.map;var idx=null;var newidx=null;var layers=map.layers;var tmplayer=null;for(var i=0;i<map.layers.length;i++){if(this.layer==map.layers[i]){idx=i;break;}}
if(this.up===false){if(layers.length>idx+1){if(layers[idx+1].group==this.layer.group){newidx=idx+1;}
else{newidx=idx;this.layer=layers[idx+1];idx=idx+1;this.up=true;}}
else{newidx=idx;}}
if(this.up===true){var prevgroupname=null;for(var i1=idx-1;i1>0;i1--){if(layers[i1].group==this.layer.group){newidx=i1;break;}
if(prevgroupname==null){prevgroupname=layers[i1].group;}
else{if(prevgroupname!=layers[i1].group||layers[i1].isBaseLayer==true){newidx=i1;break;}}}}
if(newidx!=idx){map.raiseLayer(map.layers[idx],newidx-idx);}
if(e){OpenLayers.Event.stop(e);}},onOpacityLayerClick:function(e){if(this.layer.opacity==null){this.layer.opacity=1;}
var opacity=this.layer.opacity;opacity=this.up===true?opacity+0.1:opacity-0.1;if(opacity<0){opacity=0;}
if(opacity>1){opacity=1;}
this.layer.setOpacity(opacity);document.getElementById(this.layerswitcher.id+"_opa_img_"+this.layer.group+"_"+this.layer.name).style.width=(opacity*20).toFixed(0)+'px';if(e){OpenLayers.Event.stop(e);}},onZoomToLayer:function(e){var map=this.layer.map;map.zoomToExtent(this.layer.maxExtent);OpenLayers.Event.stop(e);},maximizeControl:function(e){this.div.style.width="";this.div.style.height="";this.showControls(false);if(e){OpenLayers.Event.stop(e);}},minimizeControl:function(e){this.div.style.width="0px";this.div.style.height="0px";this.showControls(true);if(e){OpenLayers.Event.stop(e);}},ignoreEvent:function(evt){OpenLayers.Event.stop(evt);},mouseDown:function(evt){this.isMouseDown=true;this.ignoreEvent(evt);},mouseUp:function(evt){if(this.isMouseDown){this.isMouseDown=false;this.ignoreEvent(evt);}},showControls:function(minimize){if(this.showMinimizeButton){this.maximizeDiv.style.display=minimize?"":"none";this.minimizeDiv.style.display=minimize?"none":"block";}
this.layersDiv.style.display=minimize?"none":"";},CLASS_NAME:"Vicrea.OpenLayers.Control.LayerSwitcher"});Vicrea.OpenLayers.Control.Legenda=OpenLayers.Class(Vicrea.OpenLayers.Control,{roundCorner:true,activeColor:"white",dataDiv:null,contentDiv:null,minimizeDiv:null,maximizeDiv:null,currentLegendas:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.currentLegendas=[];},destroy:function(){OpenLayers.Event.stopObservingElement(this.div);OpenLayers.Event.stopObservingElement(this.minimizeDiv);OpenLayers.Event.stopObservingElement(this.maximizeDiv);if(this.dataDiv.hasChildNodes()){while(this.dataDiv.childNodes.length>=1){this.dataDiv.removeChild(this.dataDiv.firstChild);}}
currentLegendas=[];this.map.events.unregister("addlayer",this,this.onAddLayer);this.map.events.unregister("changelayer",this,this.onLayerChanged);this.map.events.unregister("removelayer",this,this.onRemoveLayer);this.map.events.unregister("changebaselayer",this,this.redraw);OpenLayers.Control.prototype.destroy.apply(this,arguments);},setMap:function(map){Vicrea.OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register("addlayer",this,this.onAddLayer);this.map.events.register("changelayer",this,this.onLayerChanged);this.map.events.register("removelayer",this,this.onRemoveLayer);this.map.events.register("changebaselayer",this,this.redraw);},draw:function(){OpenLayers.Control.prototype.draw.apply(this);this.loadContents();if(!this.outsideViewport){this.minimizeControl();}
this.redraw();return this.div;},redraw:function(){var current_legenda_idx=0;var something_visible=false;for(var i=this.map.layers.length-1;i>=0;i--){var layer=this.map.layers[i];if(layer.visibility==true&&layer.inRange==true&&layer.isBaseLayer==false&&layer.displayInLayerSwitcher==true)
{if(this.currentLegendas.length<=current_legenda_idx||layer.name!=this.currentLegendas[current_legenda_idx].layer.name||layer.group!=this.currentLegendas[current_legenda_idx].layer.group){var newLegenda={layer:layer,elems:[],loadcounter:0,loadingimg:null};if(layer.params){var mywmslayers=layer.params.LAYERS.split(',');var span_title=document.createElement('span');span_title.id=OpenLayers.Util.createUniqueID(this.div.id);var span_content=document.createElement('span');span_content.innerHTML=layer.name+"&nbsp;";span_content.style.clear='left';span_title.appendChild(span_content);newLegenda.loadingimg=document.createElement('img');newLegenda.loadingimg.style.paddingTop='3px';newLegenda.loadingimg.style.clear='right';newLegenda.loadingimg.src=Vicrea.OpenLayers.Util.getImagesLocation()+'loading.gif';span_title.appendChild(newLegenda.loadingimg);newLegenda.elems.push(span_title);if(this.currentLegendas.length<=current_legenda_idx){this.dataDiv.appendChild(span_title);}
else{var elemList=this.currentLegendas[current_legenda_idx].elems;this.dataDiv.insertBefore(span_title,elemList[0]);}
for(var wmslayeridx=0;wmslayeridx<mywmslayers.length;wmslayeridx++){var img_elem=document.createElement('img');img_elem.id=OpenLayers.Util.createUniqueID(this.div.id);var legendGraphicURL=layer.getFullRequestString({REQUEST:"GetLegendGraphic",LAYER:mywmslayers[wmslayeridx],FORMAT:"image/png"});img_elem.style.display='none';if(this.currentLegendas.length<=current_legenda_idx){this.dataDiv.appendChild(img_elem);}
else{var elemList=this.currentLegendas[current_legenda_idx].elems;this.dataDiv.insertBefore(img_elem,elemList[0]);}
newLegenda.loadcounter++;newLegenda.elems.push(img_elem);OpenLayers.Event.observe(img_elem,"load",OpenLayers.Function.bind(this.onLegendaLoadOk,{image:img_elem,currentLegendaItem:newLegenda}));OpenLayers.Event.observe(img_elem,"error",OpenLayers.Function.bind(this.onLegendaLoadError,{image:img_elem,currentLegendaItem:newLegenda}));img_elem.src=legendGraphicURL;}}
else{var span_content=document.createElement('span');span_content.className='olLegendaNotAvailable';span_content.innerHTML='n/a     '+layer.name;span_content.id=OpenLayers.Util.createUniqueID(this.div.id);this.dataDiv.appendChild(span_content);newLegenda.elems.push(span_content);}
this.currentLegendas.splice(current_legenda_idx,0,newLegenda);}
else{}
current_legenda_idx++;}
else{if(this.currentLegendas.length>current_legenda_idx){if(layer.name==this.currentLegendas[current_legenda_idx].layer.name&&layer.group==this.currentLegendas[current_legenda_idx].layer.group){for(var elemidx=0;elemidx<this.currentLegendas[current_legenda_idx].elems.length;elemidx++){var elem=this.currentLegendas[current_legenda_idx].elems[elemidx];elem.parentNode.removeChild(elem);}
this.currentLegendas.splice(current_legenda_idx,1);}}}}
while(this.currentLegendas.length>current_legenda_idx){var elemslist=this.currentLegendas[current_legenda_idx].elems;while(elemslist.length>0){var elem=elemslist.pop();elem.parentNode.removeChild(elem);}
this.currentLegendas.splice(current_legenda_idx,1);}
var elem=document.getElementById(this.id+"NOLAYERS");if(this.currentLegendas.length==0){if(!elem){var title_elem=document.createElement('span');title_elem.id=this.id+"NOLAYERS";title_elem.innerHTML='Geen lagen geselecteerd';this.dataDiv.appendChild(title_elem);}}
else{if(elem){this.dataDiv.removeChild(elem);}}},onLegendaLoadOk:function(){if(this.image.height>10||(this.image.fileSize&&(this.image.fileSize>300||this.image.fileSize<0))){this.image.style.display='block';this.currentLegendaItem.loadcounter--;if(this.currentLegendaItem.loadcounter<=0){this.currentLegendaItem.loadingimg.style.display='none';}
OpenLayers.Event.stopObservingElement(this.image);}
else{var fn=OpenLayers.Function.bind(Vicrea.OpenLayers.Control.Legenda.prototype.onLegendaLoadError,{image:this.image,currentLegendaItem:this.currentLegendaItem});fn();}},onLegendaLoadError:function(){var found=false;var idx=0;while(!found){var currentElem=this.currentLegendaItem.elems[idx];if(currentElem.id==this.image.id){this.currentLegendaItem.elems.splice(idx,1);found=true;}
else{idx++;}}
if(found&&this.currentLegendaItem.elems.length==1)
{var span_content=document.createElement('span');span_content.id=OpenLayers.Util.createUniqueID('VicreaLegendaControl_NoData');span_content.className='olLegendaNotAvailable';span_content.innerHTML='[ x ]&nbsp;&nbsp;geen&nbsp;legenda&nbsp;beschikbaar';this.image.parentNode.replaceChild(span_content,this.image);this.currentLegendaItem.elems.push(span_content);}
else{this.image.parentNode.removeChild(this.image);}
OpenLayers.Event.stopObservingElement(this.image);this.currentLegendaItem.loadcounter--;if(this.currentLegendaItem.loadcounter<=0){this.currentLegendaItem.loadingimg.style.display='none';}},loadContents:function(){OpenLayers.Event.observe(this.div,"mouseup",OpenLayers.Function.bindAsEventListener(this.mouseUp,this));OpenLayers.Event.observe(this.div,"click",this.ignoreEvent);OpenLayers.Event.observe(this.div,"mousedown",OpenLayers.Function.bindAsEventListener(this.mouseDown,this));OpenLayers.Event.observe(this.div,"dblclick",this.ignoreEvent);var imgLocation=Vicrea.OpenLayers.Util.getThemeImagesLocation();var sz=new OpenLayers.Size(18,18);var img=imgLocation+'legenda-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_VicLS_MaximizeDiv",null,sz,img,"absolute");this.maximizeDiv.style.top="5px";this.maximizeDiv.style.right="";this.maximizeDiv.style.left="0px";this.maximizeDiv.style.display="none";OpenLayers.Event.observe(this.maximizeDiv,"click",OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);this.contentDiv=document.createElement("div");this.contentDiv.className='olLegendaInner';this.div.appendChild(this.contentDiv);this.titleDiv=document.createElement('span');this.titleDiv.className="olLegendaTitle";this.titleDiv.innerHTML="Legenda";this.contentDiv.appendChild(this.titleDiv);this.dataDiv=document.createElement("div");this.dataDiv.className='olLegendaContent';this.contentDiv.appendChild(this.dataDiv);img=imgLocation+'legenda-minimize.png';sz=new OpenLayers.Size(18,18);this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_VicLS_MinimizeDiv",null,sz,img,"absolute");this.minimizeDiv.style.top="5px";this.minimizeDiv.style.right="";this.minimizeDiv.style.left="0px";this.minimizeDiv.style.display="none";OpenLayers.Event.observe(this.minimizeDiv,"click",OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));if(this.roundCorner===true){OpenLayers.Rico.Corner.round(this.div,{corners:"tr br",bgColor:"transparent",color:this.activeColor,blend:false});}
this.div.appendChild(this.minimizeDiv);},onAddLayer:function(evt){this.redraw();},onRemoveLayer:function(evt){this.redraw();},onLayerChanged:function(evt){this.redraw();},maximizeControl:function(e){this.div.style.width="";this.div.style.height="";this.showControls(false);if(e){OpenLayers.Event.stop(e);}},minimizeControl:function(e){this.div.style.width="0px";this.div.style.height="0px";this.showControls(true);if(e){OpenLayers.Event.stop(e);}},ignoreEvent:function(evt){OpenLayers.Event.stop(evt);},mouseDown:function(evt){this.isMouseDown=true;this.ignoreEvent(evt);},mouseUp:function(evt){if(this.isMouseDown){this.isMouseDown=false;this.ignoreEvent(evt);}},showControls:function(minimize){this.maximizeDiv.style.display=minimize?"":"none";this.minimizeDiv.style.display=minimize?"none":"block";this.contentDiv.style.display=minimize?"none":"";},CLASS_NAME:"Vicrea.OpenLayers.Control.Legenda"});Vicrea.OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control.OverviewMap,{fixedZoomlevel:null,initialize:function(options){OpenLayers.Control.OverviewMap.prototype.initialize.apply(this,[options]);this.displayClass="olControlOverviewMap";},setMap:function(map){Vicrea.OpenLayers.Control.prototype.setMap.apply(this,arguments);OpenLayers.Control.OverviewMap.prototype.setMap.apply(this,arguments);},draw:function(){OpenLayers.Control.OverviewMap.prototype.draw.apply(this,arguments);this.minimizeDiv.className+=" viNoPrint";this.maximizeDiv.className+=" viNoPrint";var bgDiv=document.createElement('div');bgDiv.style.position='absolute';bgDiv.style.left='0px';bgDiv.style.top='0px';bgDiv.style.zIndex=0;var whiteImg=document.createElement('img');whiteImg.src=Vicrea.OpenLayers.Util.getImagesLocation()+"background_tile.png";bgDiv.appendChild(whiteImg);this.mapDiv.insertBefore(bgDiv,this.mapDiv.firstChild);return this.div;},isSuitableOverview:function(){var mapExtent=this.map.getExtent();var maxExtent=this.map.maxExtent;var testExtent=new OpenLayers.Bounds(Math.max(mapExtent.left,maxExtent.left),Math.max(mapExtent.bottom,maxExtent.bottom),Math.min(mapExtent.right,maxExtent.right),Math.min(mapExtent.top,maxExtent.top));if(this.ovmap.getProjection()!=this.map.getProjection()){testExtent=testExtent.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject());}
var myPadding=12;var lefttop=this.getLonLatFromOverviewPx(new OpenLayers.Pixel(myPadding,myPadding));var rightbot=this.getLonLatFromOverviewPx(new OpenLayers.Pixel(this.ovmap.size.w-myPadding,this.ovmap.size.h-myPadding));var ovExtent=new OpenLayers.Bounds(lefttop.lon,rightbot.lat,rightbot.lon,lefttop.lat);var resRatio=this.ovmap.getResolution()/this.map.getResolution();return((resRatio>this.minRatio)&&(resRatio<=this.maxRatio)&&(ovExtent.containsBounds(testExtent)));},updateOverview:function(){var mapRes=this.map.getResolution();var targetRes=this.ovmap.getResolution();var resRatio=targetRes/mapRes;if(resRatio>this.maxRatio){targetRes=this.minRatio*mapRes;}else if(resRatio<=this.minRatio){targetRes=this.maxRatio*mapRes;}
var center;if(this.ovmap.getProjection()!=this.map.getProjection()){center=this.map.center.clone();center.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject());}else{center=this.map.center;}
if(this.fixedZoomlevel!=null)
{this.ovmap.setCenter(center,this.fixedZoomlevel);}
else
{this.ovmap.setCenter(center,this.ovmap.getZoomForResolution(targetRes*this.resolutionFactor));}
this.updateRectToMap();},CLASS_NAME:'Vicrea.OpenLayers.Control.OverviewMap'});Vicrea.OpenLayers.Control.PanZoom=OpenLayers.Class(Vicrea.OpenLayers.Control,{slideFactor:50,buttons:null,align:"left",UNIQUE_CONTROL_TAG:"OpenLayers__Vicrea_Control_PanZoom_",initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){while(this.buttons.length){var btn=this.buttons.shift();btn.map=null;OpenLayers.Event.stopObservingElement(btn);}
this.buttons=null;this.map.events.unregister('moveend',this,this.onMoveend);OpenLayers.Control.prototype.destroy.apply(this,arguments);},getPosition:function()
{var retval;if(this.align=="right")
{var size=this.map.getSize();retval=new OpenLayers.Pixel(size.w-40-OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);}
else
{retval=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);}
return retval;},onMoveend:function(){if(this.align=="right")
{this.updateButtonPositions();}},updateButtonPositions:function()
{var rootpx=this.getPosition();var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(rootpx.x+sz.w/2,rootpx.y);var secpx=new OpenLayers.Pixel(rootpx.x,centered.y+sz.h);for(var i=0;i<this.buttons.length;i++)
{var btn=this.buttons[i];var px;switch(btn.id)
{case this.UNIQUE_CONTROL_TAG+"panup":px=centered;break;case this.UNIQUE_CONTROL_TAG+"panleft":px=secpx;break;case this.UNIQUE_CONTROL_TAG+"panright":px=secpx.add(sz.w,0);break;case this.UNIQUE_CONTROL_TAG+"pandown":px=centered.add(0,sz.h*2);break;case this.UNIQUE_CONTROL_TAG+"zoomin":px=centered.add(0,sz.h*3+5);break;case this.UNIQUE_CONTROL_TAG+"zoomworld":px=centered.add(0,sz.h*4+5);break;case this.UNIQUE_CONTROL_TAG+"zoomout":px=centered.add(0,sz.h*5+5);break;default:px=null;}
if(px)
{OpenLayers.Util.modifyAlphaImageDiv(btn,null,px);}}},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!px)
{px=this.getPosition();}
this.div.className+=' viNoPrint';this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);this._addButton("zoomworld","zoom-world-mini.png",centered.add(0,sz.h*4+5),sz);this._addButton("zoomout","zoom-minus-mini.png",centered.add(0,sz.h*5+5),sz);this.map.events.register('moveend',this,this.onMoveend);return this.div;},_addButton:function(id,img,xy,sz){var imgLocation=Vicrea.OpenLayers.Util.getThemeImagesLocation()+img;var btn=OpenLayers.Util.createAlphaImageDiv(this.UNIQUE_CONTROL_TAG+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);OpenLayers.Event.observe(btn,"mousedown",OpenLayers.Function.bindAsEventListener(this.buttonDown,btn));OpenLayers.Event.observe(btn,"dblclick",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));OpenLayers.Event.observe(btn,"click",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));btn.action=id;btn.map=this.map;btn.slideFactor=this.slideFactor;this.buttons.push(btn);return btn;},doubleClick:function(evt){OpenLayers.Event.stop(evt);return false;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
switch(this.action){case"panup":this.map.pan(0,-this.slideFactor);break;case"pandown":this.map.pan(0,this.slideFactor);break;case"panleft":this.map.pan(-this.slideFactor,0);break;case"panright":this.map.pan(this.slideFactor,0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;}
OpenLayers.Event.stop(evt);},CLASS_NAME:"Vicrea.OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;Vicrea.OpenLayers.Control.PanZoomBar=OpenLayers.Class(Vicrea.OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoomBarDiv:null,divEvents:null,zoomWorldIcon:false,initialize:function(){Vicrea.OpenLayers.Control.PanZoom.prototype.initialize.apply(this,arguments);},destroy:function(){this.div.removeChild(this.slider);this.slider=null;this.sliderEvents.destroy();this.sliderEvents=null;this.div.removeChild(this.zoombarDiv);this.zoomBarDiv=null;this.divEvents.destroy();this.divEvents=null;this.map.events.un({"zoomend":this.moveZoomBar,"changebaselayer":this.redraw,scope:this});Vicrea.OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);},onMoveend:function(){if(this.align=="right")
{this.updateButtonPositions();}},updateButtonPositions:function()
{var rootpx=this.getPosition();var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(rootpx.x+sz.w/2,rootpx.y);var secpx=new OpenLayers.Pixel(rootpx.x,centered.y+sz.h);for(var i=0;i<this.buttons.length;i++)
{var btn=this.buttons[i];var px;switch(btn.id)
{case this.UNIQUE_CONTROL_TAG+"panup":px=centered;break;case this.UNIQUE_CONTROL_TAG+"panleft":px=secpx;break;case this.UNIQUE_CONTROL_TAG+"panright":px=secpx.add(sz.w,0);break;case this.UNIQUE_CONTROL_TAG+"pandown":px=centered.add(0,sz.h*2);break;case this.UNIQUE_CONTROL_TAG+"zoomin":px=centered.add(0,sz.h*3+5);break;case this.UNIQUE_CONTROL_TAG+"zoomout":px=centered.add(0,this.zoomStopHeight*this.map.getNumZoomLevels()+sz.h*4+5);break;default:px=null;}
if(px)
{OpenLayers.Util.modifyAlphaImageDiv(btn,null,px);}}
this.slider.style.left=centered.x-1+'px';this.zoombarDiv.style.left=centered.x+'px';},setMap:function(map){Vicrea.OpenLayers.Control.PanZoom.prototype.setMap.apply(this,arguments);this.map.events.register("changebaselayer",this,this.redraw);this.map.events.register('moveend',this,this.onMoveend);},redraw:function(){if(this.div!=null){this.div.innerHTML="";}
this.draw();},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!px)
{px=this.getPosition();this.div.style.left='4px';this.div.style.top='4px';}
this.div.className+=' viNoPrint';this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);var wposition=sz.w;if(this.zoomWorldIcon){centered=new OpenLayers.Pixel(px.x+sz.w,px.y);}
this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);if(this.zoomWorldIcon){this._addButton("zoomworld","zoom-world-mini.png",px.add(sz.w,0),sz);wposition*=2;}
this._addButton("panright","east-mini.png",px.add(wposition,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);centered=this._addZoomBar(centered.add(0,sz.h*4+5));this._addButton("zoomout","zoom-minus-mini.png",centered,sz);return this.div;},_addZoomBar:function(centered){var imgLocation=Vicrea.OpenLayers.Util.getThemeImagesLocation();var id="OpenLayers_Control_PanZoomBar_Slider"+this.map.id;var zoomsToEnd=this.map.getNumZoomLevels()-1-this.map.getZoom();var slider=OpenLayers.Util.createAlphaImageDiv(id,centered.add(-1,zoomsToEnd*this.zoomStopHeight),new OpenLayers.Size(20,9),imgLocation+"slider.png","absolute");this.slider=slider;this.sliderEvents=new OpenLayers.Events(this,slider,null,true);this.sliderEvents.on({"mousedown":this.zoomBarDown,"mousemove":this.zoomBarDrag,"mouseup":this.zoomBarUp,"dblclick":this.doubleClick,"click":this.doubleClick});var sz=new OpenLayers.Size();sz.h=this.zoomStopHeight*this.map.getNumZoomLevels();sz.w=this.zoomStopWidth;var div=null;if(OpenLayers.Util.alphaHack()){var id="OpenLayers_Control_PanZoomBar"+this.map.id;div=OpenLayers.Util.createAlphaImageDiv(id,centered,new OpenLayers.Size(sz.w,this.zoomStopHeight),imgLocation+"zoombar.png","absolute",null,"crop");div.style.height=sz.h;}else{div=OpenLayers.Util.createDiv('OpenLayers_Control_PanZoomBar_Zoombar'+this.map.id,centered,sz,imgLocation+"zoombar.png");}
this.zoombarDiv=div;this.divEvents=new OpenLayers.Events(this,div,null,true);this.divEvents.on({"mousedown":this.divClick,"mousemove":this.passEventToSlider,"dblclick":this.doubleClick,"click":this.doubleClick});this.div.appendChild(div);this.startTop=parseInt(div.style.top);this.div.appendChild(slider);this.map.events.register("zoomend",this,this.moveZoomBar);centered=centered.add(0,this.zoomStopHeight*this.map.getNumZoomLevels());return centered;},passEventToSlider:function(evt){this.sliderEvents.handleBrowserEvent(evt);},divClick:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
var y=this.divEvents.getMousePosition(evt).y;if(evt.xy)
{y=evt.xy.y;}
var top=OpenLayers.Util.pagePosition(evt.object)[1];var levels=(y-top)/this.zoomStopHeight;if(!this.map.fractionalZoom){levels=Math.floor(levels);}
var zoom=(this.map.getNumZoomLevels()-1)-levels;zoom=Math.min(Math.max(zoom,0),this.map.getNumZoomLevels()-1);this.map.zoomTo(zoom);OpenLayers.Event.stop(evt);},zoomBarDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
this.map.events.on({"mousemove":this.passEventToSlider,"mouseup":this.passEventToSlider,scope:this});this.mouseDragStart=this.divEvents.getMousePosition(evt).clone();this.zoomStart=this.divEvents.getMousePosition(evt);this.div.style.cursor="move";this.zoombarDiv.offsets=null;OpenLayers.Event.stop(evt);},zoomBarDrag:function(evt){if(this.mouseDragStart!=null){var deltaY=this.mouseDragStart.y-this.divEvents.getMousePosition(evt).y;var offsets=OpenLayers.Util.pagePosition(this.zoombarDiv);if((evt.clientY-offsets[1])>0&&(evt.clientY-offsets[1])<parseInt(this.zoombarDiv.style.height)-2){var newTop=parseInt(this.slider.style.top)-deltaY;this.slider.style.top=newTop+"px";}
this.mouseDragStart=this.divEvents.getMousePosition(evt).clone();OpenLayers.Event.stop(evt);}},zoomBarUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
if(this.zoomStart){this.div.style.cursor="";this.map.events.un({"mouseup":this.passEventToSlider,"mousemove":this.passEventToSlider,scope:this});var deltaY=this.zoomStart.y-this.divEvents.getMousePosition(evt).y;var zoomLevel=this.map.zoom;if(this.map.fractionalZoom){zoomLevel+=deltaY/this.zoomStopHeight;zoomLevel=Math.min(Math.max(zoomLevel,0),this.map.getNumZoomLevels()-1);}else{zoomLevel+=Math.round(deltaY/this.zoomStopHeight);}
this.map.zoomTo(zoomLevel);this.moveZoomBar();this.mouseDragStart=null;OpenLayers.Event.stop(evt);}},moveZoomBar:function(){var newTop=((this.map.getNumZoomLevels()-1)-this.map.getZoom())*this.zoomStopHeight+this.startTop+1;this.slider.style.top=newTop+"px";},CLASS_NAME:"Vicrea.OpenLayers.Control.PanZoomBar"});Vicrea.OpenLayers.Control.ScaleLine=OpenLayers.Class(Vicrea.OpenLayers.Control,{maxWidth:150,bottomOutUnits:"km",bottomInUnits:"m",eBottom:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.displayClass='olControlScaleLine';},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.eBottom){this.div.style.display="block";this.div.style.position="absolute";this.eBottom=document.createElement("div");this.eBottom.className=this.displayClass+"Bottom";this.div.appendChild(this.eBottom);if((this.bottomOutUnits=="")||(this.bottomInUnits=="")){this.eBottom.style.visibility="hidden";}else{this.eBottom.style.visibility="visible";}}
this.map.events.register('moveend',this,this.update);this.update();return this.div;},getBarLen:function(maxLen){var digits=parseInt(Math.log(maxLen)/Math.log(10));var pow10=Math.pow(10,digits);var firstChar=parseInt(maxLen/pow10);var barLen;if(firstChar>5){barLen=5;}else if(firstChar>2){barLen=2;}else{barLen=1;}
return barLen*pow10;},update:function(){var res=this.map.getResolution();if(!res){return;}
var curMapUnits=this.map.getUnits();var inches=OpenLayers.INCHES_PER_UNIT;var maxSizeData=this.maxWidth*res*inches[curMapUnits];var bottomUnits;if(maxSizeData>100000){bottomUnits=this.bottomOutUnits;}else{bottomUnits=this.bottomInUnits;}
var bottomMax=maxSizeData/inches[bottomUnits];var bottomRounded=this.getBarLen(bottomMax);bottomMax=bottomRounded/inches[curMapUnits]*inches[bottomUnits];var bottomPx=bottomMax/res;this.eBottom.style.width=Math.round(bottomPx)+"px";this.eBottom.innerHTML=bottomRounded+" "+bottomUnits;},CLASS_NAME:"Vicrea.OpenLayers.Control.ScaleLine"});Vicrea.OpenLayers.Control.SelectFeature=OpenLayers.Class(Vicrea.OpenLayers.Control,{layerSwitcher:null,EVENT_TYPES:["featureselected"],wms_handler:null,navigation:null,wfs_selectcontrol:null,initialize:function(LayerSwitcher,options){this.EVENT_TYPES=Vicrea.OpenLayers.Control.SelectFeatureWMS.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layerSwitcher=LayerSwitcher;this.layer=layer;var callbacks={click:this.onClickWmsLayer};this.wms_handler=new OpenLayers.Handler.Click(this,callbacks,{pixelTolerance:2,stopSingle:true});this.navigation=new OpenLayers.Control.Navigation();this.layerSwitcher.events.register("selectedlayerchanged",this,this.onSelectedLayerChanged);this.onSelectedLayerChanged();},destroy:function(){this.layerSwitcher.events.unregister("selectedlayerchanged",this,this.onSelectedLayerChanged);OpenLayers.Control.prototype.destroy.apply(this,arguments);if(this.wfs_selectcontrol){this.wfs_selectcontrol.destroy();this.wfs_selectcontrol.layer.events.unregister("featureselected",this,this.onVectorFeatureSelected);this.wfs_selectcontrol=null;}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.navigation.draw();},onSelectedLayerChanged:function(){this.wms_handler.deactivate();if(this.wfs_selectcontrol&&this.wfs_selectcontrol.layer!=this.layerSwitcher.activeLayer){this.wfs_selectcontrol.deactivate();this.wfs_selectcontrol.destroy();this.wfs_selectcontrol.layer.events.unregister("featureselected",this,this.onVectorFeatureSelected);this.wfs_selectcontrol=null;}
if(this.layerSwitcher.activeLayer!=null){if(this.layerSwitcher.activeLayer.CLASS_NAME=="OpenLayers.Layer.WMS"&&this.active==true){this.wms_handler.activate();}
if(this.layerSwitcher.activeLayer.features){this.wfs_selectcontrol=new OpenLayers.Control.SelectFeature(this.layerSwitcher.activeLayer);this.wfs_selectcontrol.layer.events.register("featureselected",this,this.onVectorFeatureSelected);this.wfs_selectcontrol.setMap(this.map);if(this.active==true){this.wfs_selectcontrol.activate();}}}},activate:function(){if(!this.active){if(!this.layerSwitcher.activeLayer){return false;}
if(this.wfs_selectcontrol){this.wfs_selectcontrol.activate();}
if(this.layerSwitcher.activeLayer.CLASS_NAME=="OpenLayers.Layer.WMS"){this.wms_handler.activate();}
this.navigation.activate();}
return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.active){this.wms_handler.deactivate();if(this.wfs_selectcontrol){this.wfs_selectcontrol.deactivate();}
this.navigation.deactivate();}
return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},setMap:function(map){this.wms_handler.setMap(map);this.navigation.setMap(map);Vicrea.OpenLayers.Control.prototype.setMap.apply(this,arguments);},onVectorFeatureSelected:function(evt){if(!this.active){return;}
if(evt&&evt.feature){this.events.triggerEvent("featureselected",{responseText:null,layer:this.layerSwitcher.activeLayer,feature:evt.feature});}
else{OpenLayers.Console.userError("Vicrea.SelectFeature: a feature select was given, but no feature was selected... huh?")}},onClickWmsLayer:function(evt){if(this.layerSwitcher.activeLayer!=null&&this.layerSwitcher.activeLayer.CLASS_NAME=="OpenLayers.Layer.WMS"){xy=evt.xy;var url=this.getFullRequestString(xy.x,xy.y);this.map.div.style.cursor='wait';OpenLayers.loadURL(url,null,this,this.onGetFeatureInfoResponse);}
else{OpenLayers.Console.userError("Sorry, i don't know how to select a feature on layer:"+this.layerSwitcher.activeLayer.name);}},getFullRequestString:function(x,y){var url=this.layerSwitcher.activeLayer.getFullRequestString({REQUEST:"GetFeatureInfo",EXCEPTIONS:"application/vnd.ogc.se_xml",BBOX:this.map.getExtent().toBBOX(),X:x,Y:y,INFO_FORMAT:"application/vnd.ogc.gml",QUERY_LAYERS:this.layerSwitcher.activeLayer.params.LAYERS,WIDTH:this.map.size.w,HEIGHT:this.map.size.h});return url;},onGetFeatureInfoResponse:function(xmlobj){this.map.div.style.cursor='auto';this.events.triggerEvent("featureselected",{responseText:xmlobj.responseText,layer:this.layerSwitcher.activeLayer,feature:null});},UnselectAll:function(){var features=this.layerSwitcher.activeLayer.features;if(features!=undefined){for(var l=0;l<features.length;++l){var feature=features[l];this.wfs_selectcontrol.unselect(feature);}}},CLASS_NAME:"Vicrea.OpenLayers.Control.SelectFeature"});Vicrea.OpenLayers.Control.SelectFeatureWMS=OpenLayers.Class(Vicrea.OpenLayers.Control.SelectFeature,{initialize:function(LayerSwitcher,options){Vicrea.OpenLayers.Control.SelectFeature.prototype.initialize.apply(this,arguments);},CLASS_NAME:"Vicrea.OpenLayers.Control.SelectFeatureWMS"});Vicrea.OpenLayers.Control.VicreaToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{EVENT_TYPES:["featureselected","geometrychanged","geometryinit"],Pan:true,Zoomin:true,Zoomout:true,ZoomtoInitialExtent:true,Select:false,DrawGeometry:false,ZoomGeometry:false,EraseGeometry:false,SelectedButton:'Pan',initialize:function(vectorLayer,layerSwitcher,options){this.EVENT_TYPES=Vicrea.OpenLayers.Control.VicreaToolbar.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);this.displayClass="vicreaToolbar viNoPrint";if(this.Pan){var control=new OpenLayers.Control.Navigation();control.displayClass="vicreaToolbarNavigation";control.title='Navigeren';this.addControls(control);this.defaultControl=control;}
if(this.Zoomin){control=new OpenLayers.Control.ZoomBox();control.displayClass="vicreaToolbarZoomin";control.title='Zoom in';this.addControls(control);if(this.SelectedButton=='Zoomin'){this.defaultControl=control;}}
if(this.Zoomout){control=new OpenLayers.Control.ZoomBox({out:true});control.displayClass="vicreaToolbarZoomout";control.title='Zoom uit';this.addControls(control);if(this.SelectedButton=='Zoomout'){this.defaultControl=control;}}
if(this.ZoomtoInitialExtent){control=new Vicrea.OpenLayers.Control.ZoomToInitialExtent();control.displayClass="vicreaToolbarZoomInitial";control.title='Zet kaart op beginpositie';this.addControls(control);if(this.SelectedButton=='ZoomtoInitialExtent'){this.defaultControl=control;}}
if(vectorLayer){if(this.DrawGeometry){control=new OpenLayers.Control.DrawFeature(vectorLayer,OpenLayers.Handler.Polygon);control.displayClass="vicreaToolbarDrawGeometry";control.title='Teken nieuwe geometrie';control.events.on({"featureadded":this.afternewfeaturedrawn,scope:this});control.events.on({"geometryinit":this.geometryInit,scope:this});this.addControls(control);if(this.SelectedButton=='DrawGeometry'){this.defaultControl=control;}
control=new OpenLayers.Control.ModifyFeature(vectorLayer);control.displayClass="vicreaToolbarModifyGeometry";control.mode=OpenLayers.Control.ModifyFeature.RESHAPE;control.title='Bewerk getekende geometrie';control.layer.events.on({'featuremodified':this.geometryChanged,scope:this})
this.addControls(control);}
if(this.EraseGeometry){control=new Vicrea.OpenLayers.Control.ClearFeatures(vectorLayer);control.displayClass="vicreaToolbarClearSelected";control.title='Verwijder geometrie';control.events.on({"geometryinit":this.geometryInit,scope:this});this.addControls(control);if(this.SelectedButton=='EraseGeometry'){this.defaultControl=control;}}
if(this.Select&&layerSwitcher){control=new Vicrea.OpenLayers.Control.SelectFeature(layerSwitcher);control.displayClass='vicreaToolbarSelect';control.title='Selecteer object uit kaart';this.addControls(control);control.events.on({'featureselected':this.featureSelected,scope:this})
if(this.SelectedButton=='Select'){this.defaultControl=control;}}}
else{alert('VicreaToolbar: no vector layer is given at initialisation!');}},setMap:function(map){Vicrea.OpenLayers.Control.prototype.setMap.apply(this,arguments);OpenLayers.Control.Panel.prototype.setMap.apply(this,arguments);},destroy:function(){var drawcontrol=this.getControlsByClass('OpenLayers.Control.DrawFeature')[0];if(drawcontrol&&drawcontrol.events){drawcontrol.events.un('featureadded',this,this.afternewfeaturedrawn);drawcontrol.events.un('geometryinit',this,this.geometryInit);}
var modcontrol=this.getControlsByClass('OpenLayers.Control.ModifyFeature')[0];if(modcontrol&&modcontrol.layer&&modcontrol.layer.events){modcontrol.layer.events.un('featuremodified',this,this.geometryChanged);}
var delcontrol=this.getControlsByClass('Vicrea.OpenLayers.Control.ClearFeatures')[0];if(delcontrol&&delcontrol.layer&&delcontrol.layer.events){delcontrol.layer.events.un('geometryinit',this,this.geometryInit);}
OpenLayers.Control.Panel.prototype.destroy.apply(this,arguments);},activateControl:function(control){var prevcontrol=null;for(var i=0,len=this.controls.length;i<len;i++){if(this.controls[i].active){if(control.type==OpenLayers.Control.TYPE_BUTTON){prevcontrol=this.controls[i];}
this.controls[i].deactivate();}}
if(control.CLASS_NAME=='OpenLayers.Control.DrawFeature'){if(control.layer.features.length>0){this.events.triggerEvent("geometryinit",{layer:control.layer});}
control.layer.destroyFeatures();}
if(control.CLASS_NAME=='OpenLayers.Control.ModifyFeature'&&control.layer.features.length>0){control.selectControl.select(control.layer.features[0]);}
if(control.CLASS_NAME=='Vicrea.OpenLayers.Control.ClearFeatures'&&control.layer.features.length>0){this.events.triggerEvent("geometryinit",{layer:control.layer});}
if(!this.active){return false;}
if(control.type==OpenLayers.Control.TYPE_BUTTON){control.trigger();if(prevcontrol){prevcontrol.activate();}
this.redraw();return;}
if(control.type==OpenLayers.Control.TYPE_TOGGLE){if(control.active){control.deactivate();}else{control.activate();}
this.redraw();return;}
for(var i=0,len=this.controls.length;i<len;i++){if(this.controls[i]!=control){if(this.controls[i].type!=OpenLayers.Control.TYPE_TOGGLE){this.controls[i].deactivate();}}}
control.activate();},afternewfeaturedrawn:function(evt){var modcontrol=this.getControlsByClass('OpenLayers.Control.ModifyFeature')[0];this.activateControl(modcontrol);modcontrol.selectControl.select(evt.feature);this.events.triggerEvent("geometrychanged",{feature:evt.feature});},geometryChanged:function(evt){this.events.triggerEvent("geometrychanged",{feature:evt.feature});},geometryInit:function(evt){this.events.triggerEvent("geometryinit",{layer:evt.layer});},featureSelected:function(evt){for(var i=0,len=this.controls.length;i<len;i++){if(this.controls[i].CLASS_NAME=="OpenLayers.Control.ModifyFeature"){this.controls[i].unselectFeature({feature:evt.feature});}}
this.events.triggerEvent("featureselected",{responseText:evt.responseText,layer:evt.layer,feature:evt.feature});},CLASS_NAME:"Vicrea.OpenLayers.Control.VicreaToolbar"});Vicrea.OpenLayers.Control.ZoomToInitialExtent=OpenLayers.Class(Vicrea.OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,initialCenter:null,initialZoom:null,moveend:function(){this.initialCenter=this.map.getCenter();this.initialZoom=this.map.getZoom();this.map.events.un({"moveend":this.moveend,scope:this});},setMap:function(map){Vicrea.OpenLayers.Control.prototype.setMap.apply(this,arguments);this.initialCenter=this.map.getCenter();this.initialZoom=this.map.getZoom();if(!this.initialCenter)
{this.map.events.on({"moveend":this.moveend,scope:this});}},trigger:function(){if(this.map){this.map.moveTo(this.initialCenter,this.initialZoom);}},CLASS_NAME:"Vicrea.OpenLayers.Control.ZoomToInitialExtent"});Vicrea.OpenLayers.Format.MapDef=OpenLayers.Class(OpenLayers.Format,{MapProjection:new OpenLayers.Projection('EPSG:900913'),enableBaseLayers:true,SiteRoot:"",ServerSideTiled:false,MapTheme:null,initialize:function(options){if(options){if(options.MapProjection!=null){this.MapProjection=options.MapProjection;}
if(options.enableBaseLayers!=null){this.enableBaseLayers=options.enableBaseLayers;}
if(options.SiteRoot!=null){this.SiteRoot=options.SiteRoot;}
if(options.MapTheme!=null){this.MapTheme=options.MapTheme;}}},read:function(data,div_id){if(data&&data.Layers){this.ServerSideTiled=data.Tiled;var options;if(this.MapProjection.projCode=='EPSG:900913'){if(this.ServerSideTiled){alert('The given MapDef has UseTiling set to true while EPSG:900913 is selected. This will mutilate the openlayers map tiles! Set UseTiling=false in mapdef to fix this.');}
options={controls:[],maxResolution:156543.0339,maxExtent:new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),projection:this.MapProjection,displayProjection:new OpenLayers.Projection('EPSG:900913'),minZoomLevel:1,numZoomLevels:19,units:'m'};}
if(this.MapProjection.projCode=='EPSG:28992'){var mybounds=new OpenLayers.Bounds(0,300000,300000,600000);var myextendedbounds=mybounds;options={controls:[],maxResolution:mybounds.getWidth()/512,maxExtent:myextendedbounds,projection:this.MapProjection,displayProjection:new OpenLayers.Projection('EPSG:28992'),minZoomLevel:1,numZoomLevels:14,units:'m'};}
var map=new OpenLayers.Map(div_id,options);if(this.MapTheme){map.theme=OpenLayers._getScriptLocation()+"theme/"+this.MapTheme+"/style.css";}
var layers=[];for(var idx1=0;idx1<data.Layers.length;idx1++){mylayers=this.loadLayer(data.Layers[idx1],'',options.units);for(var idx_to_mylayers=0;idx_to_mylayers<mylayers.length;idx_to_mylayers++){layers.push(mylayers[idx_to_mylayers]);}}
layers.reverse();var blank=new OpenLayers.Layer.WMS('Blank',Vicrea.OpenLayers.Util.getImagesLocation()+"background_tile.png",{layers:'Geen',format:'image/png'},{isBaseLayer:true,displayOutsideMaxExtent:true,singleTile:true,layername:"Blank"});map.addLayers([blank]);map.addLayers(layers);return map;}
else{alert('Error building geographic map. the given MapDef configuration is not of mapdef type...')
return null;}},getInitialExtent:function(data){if(data&&data.InitialExtent){var bounds=new OpenLayers.Bounds(data.InitialExtent.XLow,data.InitialExtent.YLow,data.InitialExtent.XHigh,data.InitialExtent.YHigh);bounds.transform(new OpenLayers.Projection('EPSG:28992'),this.MapProjection);return bounds;}
else{return null;}},loadLayer:function(layerObj,groupID,unit){if(layerObj&&layerObj.Title){var retval=[];if(layerObj.SubLayers){subgroupid=layerObj.Title;if(groupID!=null&&groupID.length>0){subgroupid=groupID+"/"+subgroupid;}
for(var idx1=0;idx1<layerObj.SubLayers.length;idx1++){var mylayers=this.loadLayer(layerObj.SubLayers[idx1],subgroupid,unit);if(mylayers&&mylayers.length){for(var idx_to_mylayers=0;idx_to_mylayers<mylayers.length;idx_to_mylayers++){retval.push(mylayers[idx_to_mylayers]);}}}}
else{var options=this.getOptions(layerObj,groupID,unit);var name=layerObj.Title;if(layerObj.TypeName=='RasterLayer'){var params=[];if(layerObj.ImageType){params.FORMAT=layerObj.ImageType;params.SRS=this.MapProjection.projCode;if(this.MapProjection.projCode=='EPSG:28992'){params.coordSystem="RD";}
params.map=options.mapname;params.layers=options.layername;}
params.TRANSPARENT=true;retval.push(new OpenLayers.Layer.WMS(name,this.SiteRoot+'MapLoaderWMS.aspx',params,options));}
if(layerObj.TypeName=='VectorLayer'||layerObj.TypeName=='PointLayer'||layerObj.TypeName=='FeatureLayer'){if(layerObj.CoordSystem){options.coordSystem=layerObj.CoordSystem;}
var stDefault=this.getStyleDefault(layerObj);var stSelect=this.getStyleSelect(layerObj);options.styleMap=new OpenLayers.StyleMap({"default":new OpenLayers.Style(stDefault),"select":new OpenLayers.Style(stSelect)});options.showHoverLabels=false;retval.push(new Vicrea.OpenLayers.Layer.Maploader(name,options));}}
return retval;}
else{alert('null result from layer definition');return null;}},getOptions:function(layerObj,groupID,unit){var options=[];options.group=groupID;options.isBaseLayer=false;options.buttonMoveLayer=true;options.buttonOpacity=true;options.buttonDropLayer=false;options.showExpandedInLayerSwitcher=false;options.buffer=0;if(layerObj.ShowExpanded&&layerObj.ShowExpanded==true){options.showExpandedInLayerSwitcher=true;}
options.projection=new OpenLayers.Projection('EPSG:900913');options.coordSystem="WGS84PASSTROUGH";if(this.MapProjection.projCode=='EPSG:28992'){options.projection=new OpenLayers.Projection('EPSG:28992');options.coordSystem="RD";}
if(layerObj.CoordSystem=='WGS84'){options.projection=new OpenLayers.Projection('EPSG:4326');options.coordSystem="WGS84";}
if(layerObj.Opacity!=null){options.opacity=layerObj.Opacity;}
if(layerObj.Cache==false||this.ServerSideTiled){options.singleTile=true;}
if(layerObj.MaxScale!=null){options.maxResolution=OpenLayers.Util.getResolutionFromScale(layerObj.MaxScale,unit);}
if(layerObj.MinScale!=null){options.minResolution=OpenLayers.Util.getResolutionFromScale(layerObj.MinScale,unit);}
if(layerObj.MinScale==null&&layerObj.MaxScale==null){options.alwaysInRange=true;}
options.units=unit;options.mapname=layerObj.MapName;options.layername=layerObj.Name;options.selectable=layerObj.IsSelectable;options.selected=false;options.visibility=layerObj.ShowAtStartup;options.displayInLayerSwitcher=layerObj.IsShowedInLegend;return options;},getStyleDefault:function(layerObj){var style=new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]);if(layerObj.BorderColor){style.strokeColor=layerObj.BorderColor;}
if(layerObj.Color){style.fillColor=layerObj.Color;}
if(layerObj.Width){style.strokeWidth=1;}
style.strokeOpacity=layerObj.Opacity;style.fillOpacity=layerObj.Opacity;if(layerObj.SymbolURL){style.externalGraphic=layerObj.SymbolURL;style.pointRadius=3;}
if(layerObj.GraphicName){style.graphicName=layerObj.GraphicName;style.pointRadius=1;}
if(layerObj.PointRadius){style.pointRadius=parseInt(layerObj.PointRadius);}
if(layerObj.StrokeColor){var c=new Vicrea.OpenLayers.Rico.Color.createColorFromString(layerObj.StrokeColor);style.strokeColor=c.asHex();}
if(layerObj.FillColor){var c=Vicrea.OpenLayers.Rico.Color.createColorFromString(layerObj.FillColor);style.fillColor=c.asHex();}
if(layerObj.StrokeOpacity){style.strokeOpacity=parseFloat(layerObj.StrokeOpacity);}
if(layerObj.FillOpacity){style.fillOpacity=parseFloat(layerObj.FillOpacity);}
if(layerObj.StrokeWidth){style.strokeWidth=parseInt(layerObj.StrokeWidth);}
if(layerObj.HighlightFillColor){var c=Vicrea.OpenLayers.Rico.Color.createColorFromString(layerObj.HighlightFillColor);style.highlightFillColor=c.asHex();}
if(layerObj.HighlightPointRadius){style.highlightPointRadius=parseFloat(layerObj.HighlightPointRadius);}
return style;},getStyleSelect:function(layerObj){var style=new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]);if(layerObj.HighlightFillColor){var c=Vicrea.OpenLayers.Rico.Color.createColorFromString(layerObj.HighlightFillColor);style.fillColor=c.asHex();}
if(layerObj.HighlightPointRadius){style.pointRadius=parseFloat(layerObj.HighlightPointRadius);}
return style;},CLASS_NAME:"Vicrea.OpenLayers.Format.MapDef"});Vicrea.OpenLayers.Format.Maploader=OpenLayers.Class(OpenLayers.Format,{initialize:function(options)
{},read:function(data)
{if(data&&data.length)
{var features=[];for(var i=0;i<data.length;i++)
{var feature=this.parseFeature(data[i]);if(feature){features.push(feature);}}
return features;}
else
{return null;}},parseFeature:function(dispobj){var geometry,parser;parser=this.parseGeometry[dispobj.Geom.TypeName];if(parser){geometry=parser.apply(this,[dispobj.Geom]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.internalProjection,this.externalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));}
var feature=new OpenLayers.Feature.Vector(geometry)
if(dispobj.Info&&dispobj.Info[0])
{feature.fid=dispobj.Info[0].Id;if(dispobj.Info[0].AttributeData)
{attributes=this.parseAttributes(dispobj.Info[0].AttributeData);feature.attributes=attributes;feature.data=attributes;}
if(dispobj.Info[0].ToolTip)
{var lonlat=feature.geometry.getBounds().getCenterLonLat();var marker=new Vicrea.OpenLayers.Marker.Label(lonlat,null,dispobj.Info[0].ToolTip,null);feature.marker=marker;}}
else
{feature.fid="Unspecified feature";}
return feature;},parseGeometry:{PPoint:function(Geom)
{return new OpenLayers.Geometry.Point(Geom.X,Geom.Y,null);},PLineStr:function(Geom)
{var coords=[];var points=[];if(Geom.Points&&Geom.Points.length>0)
{for(var i=0;i<Geom.Points;i++)
{points.push(new OpenLayers.Geometry.Point(Geom.Points[i].X,Geom.Points[i].Y,null));}}
if(points.length!=0)
{line=new OpenLayers.Geometry.LineString(points);}
return line;},PMLineStr:function(Geom)
{var components=[];if(Geom.LineStrings.length>0)
{var line;for(var i=0;i<Geom.LineStrings.length;++i)
{line=this.parseGeometry.linestring.apply(this,[Geom.LineStrings[i]]);if(line)
{components.push(line);}}}
return new OpenLayers.Geometry.MultiLineString(components);},PPolygon:function(Geom)
{var points=[];var components=[];if(Geom.Outer.length>0)
{var i;for(i=0;i<Geom.Outer.length;++i)
{points.push(new OpenLayers.Geometry.Point(Geom.Outer[i].X,Geom.Outer[i].Y,null));}
var outerRing=new OpenLayers.Geometry.LinearRing(points);components.push(outerRing);if(Geom.Inner&&Geom.Inner.length>0)
{for(var j=0;j<Geom.Inner.length;++j)
{points=[];for(i=0;i<Geom.Inner[j].length;++i)
{points.push(new OpenLayers.Geometry.Point(Geom.Inner[j][i].X,Geom.Inner[j][i].Y,null));}
if(points.length>0)
{var innerRing=new OpenLayers.Geometry.LinearRing(points);components.push(innerRing);}}}}
return new OpenLayers.Geometry.Polygon(components);},PMPolygon:function(Geom){var components=[];if(Geom.Polygons.length>0){var polygon;for(var i=0;i<Geom.Polygons.length;++i){polygon=this.parseGeometry.polygon.apply(this,[Geom.Polygons[i]]);if(polygon){components.push(polygon);}}}
return new OpenLayers.Geometry.MultiPolygon(components);},PMGeometry:function(Geom){var components=[];if(Geom.Geometries.length>0){var geomobj;for(var i=0;i<Geom.Geometries.length;++i)
{var parser,geometry;parser=this.parseGeometry[Geom.Geometries[i].TypeName];if(parser)
{geometry=parser.apply(this,[Geom.Geometries[i]]);}
else
{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));}
if(geometry){components.push(geometry);}}}
return new OpenLayers.Geometry.Collection(components);}},parseAttributes:function(AttributeData)
{var attributes={};var arr_attribs=AttributeData.split("|");for(var i=0;i<arr_attribs.length;i++)
{elems=arr_attribs[i].split("=");if(elems.length==2)
{attributes[elems[0]]=elems[1];}
else
{OpenLayers.Console.error(OpenLayers.i18n("badAttributeFormat",{'AttributeData':arr_attribs[i]}));}}
return attributes;},CLASS_NAME:"Vicrea.OpenLayers.Format.Maploader"});Vicrea.OpenLayers.Layer.Maploader=OpenLayers.Class(OpenLayers.Layer.Vector,{mapname:null,layername:null,highlightedFeatures:null,coordSystem:"RD",showHoverLabels:true,initialize:function(name,options){var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);this.highlightedFeatures=[];},destroy:function(){if(this.map)
{this.map.events.unregister("mousemove",this,this.onMouseMove);}
OpenLayers.Layer.Vector.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);if(this.showHoverLabels==true)
{this.map.events.register("mousemove",this,this.onMouseMove);}},getMyExtent:function(){var retval;retval=this.map.getExtent();if(this.map.projection&&this.map.projection!='EPSG:28992')
{var leftbot=new OpenLayers.Geometry.Point(retval.left,retval.bottom);var righttop=new OpenLayers.Geometry.Point(retval.right,retval.top);var maploaderprojection=this.getMaploaderProjection();leftbot=OpenLayers.Projection.transform(leftbot,this.map.projection,maploaderprojection);righttop=OpenLayers.Projection.transform(righttop,this.map.projection,maploaderprojection);retval.left=leftbot.x;retval.bottom=leftbot.y;retval.right=righttop.x;retval.top=righttop.y;}
return retval;},onMouseMove:function(evt){if(this.showHoverLabels)
{this.removePopups()
var mousePosition=this.map.events.getMousePosition(evt).clone();var markerPosition=mousePosition.clone();markerPosition.x=markerPosition.x+15;var lonlat=this.getLonLatFromViewPortPx(mousePosition);for(var i=0;i<this.features.length;i++)
{var feature=this.features[i];if(feature.atPoint(lonlat))
{if(feature.marker)
{this.highlightedFeatures.push(feature);var height=this.drawMarker(feature.marker,markerPosition);markerPosition.y=markerPosition.y+height+3;}}}}},removePopups:function()
{if(this.highlightedFeatures&&this.highlightedFeatures.length>0)
{while(this.highlightedFeatures.length>0)
{var marker=this.highlightedFeatures.pop().marker;this.removeMarker(marker);}}},drawMarker:function(marker,px){var retval=0;if(px==null){marker.display(false);}else{var markerDiv=marker.draw(px);if(!marker.drawn){this.div.appendChild(markerDiv);marker.drawn=true;retval=markerDiv.style.pixelHeight;}}
return retval;},removeMarker:function(marker){if((marker!=null&&marker.domLabel!=null)&&(marker.domLabel.parentNode==this.div)){this.div.removeChild(marker.domLabel);marker.drawn=false;}},setVisibility:function(visibility,noEvent){OpenLayers.Layer.Vector.prototype.setVisibility.apply(this,arguments);if(this.visibility){this.requestMaploader();}},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);if(this.visibility&&!dragging)
{this.events.triggerEvent("loadstart");this.requestMaploader();}},requestMaploader:function()
{extent=this.getMyExtent()
size=this.map.getSize();Vicrea.Maps.Presentation.ClientServices.GetLayerContentsByExtentSize(this.mapname,this.layername,this.coordSystem,extent.left,extent.bottom,extent.right,extent.top,size.w,size.h,null,null,this.requestOKCallback,this.requestBADCallback,this);},getMaploaderProjection:function()
{var retval;switch(this.coordSystem)
{case'RD':retval=new OpenLayers.Projection('EPSG:28992');break;case'WGS84':case'WGS84PASSTROUGH':retval=new OpenLayers.Projection('EPSG:4326');break;default:retval=null;}
return retval;},requestOKCallback:function(WebServiceResult,ctx,methodName){var DispObjArray=WebServiceResult.Contents;if(ctx.map&&!ctx.projection.equals(ctx.map.getProjectionObject())){ctx.options.externalProjection=ctx.projection;ctx.options.internalProjection=ctx.map.getProjectionObject();}
var reader=new Vicrea.OpenLayers.Format.Maploader(DispObjArray);var externalProjection=ctx.map.getProjection();reader.externalProjection=new OpenLayers.Projection(externalProjection);reader.internalProjection=ctx.getMaploaderProjection();var newFeatureList=reader.read(DispObjArray);ctx.removePopups();var deletetheseobjects=ctx.features.slice(0);if(ctx.selectedFeatures)
{for(var i=0;i<ctx.selectedFeatures.length;i++)
{var selectedfeature=ctx.selectedFeatures[i];OpenLayers.Util.removeItem(deletetheseobjects,selectedfeature);if(newFeatureList)
{for(var i2=newFeatureList.length-1;i2>=0;i2--)
{if(newFeatureList[i2].fid==selectedfeature.fid)
{newFeatureList.splice(i2,1);}}}}}
ctx.destroyFeatures(deletetheseobjects);if(newFeatureList&&newFeatureList.length>0)
{ctx.addFeatures(newFeatureList);}
ctx.events.triggerEvent("loadend");},requestBadCallback:function(WebServiceResult,ctx,methodName){alert("error loading objects from maploader layer");ctx.events.triggerEvent("loadend");},CLASS_NAME:"Vicrea.OpenLayers.Layer.Maploader"});Vicrea.OpenLayers.Layer.Rijksdriehoek={rd_to_wgs84:function(inp)
{var retval=new OpenLayers.Geometry.Point(0,0);x=inp.x;y=inp.y;x0=155000.000;y0=463000.000;f0=52.156160556;l0=5.387638889;a01=3236.0331637;b10=5261.3028966;a20=-32.5915821;b11=105.9780241;a02=-0.2472814;b12=2.4576469;a21=-0.8501341;b30=-0.8192156;a03=-0.0655238;b31=-0.0560092;a22=-0.0171137;b13=0.0560089;a40=0.0052771;b32=-0.0025614;a23=-0.0003859;b14=0.0012770;a41=0.0003314;b50=0.0002574;a04=0.0000371;b33=-0.0000973;a42=0.0000143;b51=0.0000293;a24=-0.0000090;b15=0.0000291;with(Math)
{dx=(x-x0)*pow(10,-5);dy=(y-y0)*pow(10,-5);df=a01*dy+a20*pow(dx,2)+a02*pow(dy,2)+a21*pow(dx,2)*dy+a03*pow(dy,3)
df+=a40*pow(dx,4)+a22*pow(dx,2)*pow(dy,2)+a04*pow(dy,4)+a41*pow(dx,4)*dy
df+=a23*pow(dx,2)*pow(dy,3)+a42*pow(dx,4)*pow(dy,2)+a24*pow(dx,2)*pow(dy,4);f=f0+df/3600;dl=b10*dx+b11*dx*dy+b30*pow(dx,3)+b12*dx*pow(dy,2)+b31*pow(dx,3)*dy;dl+=b13*dx*pow(dy,3)+b50*pow(dx,5)+b32*pow(dx,3)*pow(dy,2)+b14*dx*pow(dy,4);dl+=b51*pow(dx,5)*dy+b33*pow(dx,3)*pow(dy,3)+b15*dx*pow(dy,5);l=l0+dl/3600;}
fWgs=f+(-96.862-11.714*(f-52)-0.125*(l-5))/100000;lWgs=l+(-37.902+0.329*(f-52)-14.667*(l-5))/100000;retval.y=Math.round(fWgs*10000000)/10000000;retval.x=Math.round(lWgs*10000000)/10000000;inp.y=retval.y;inp.x=retval.x;return retval;},wgs84_to_rd:function(inp)
{var retval=new OpenLayers.Geometry.Point(0,0);f=inp.y;l=inp.x;f=f-(-96.862-11.714*(f-52)-0.125*(l-5))/100000;l=l-(-37.902+0.329*(f-52)-14.667*(l-5))/100000;x0=155000.00;y0=463000.00;f0=52.15616056;l0=5.38763889;c01=190066.98903;d10=309020.31810;c11=-11830.85831;d02=3638.36193;c21=-114.19754;d12=-157.95222;c03=-32.38360;d20=72.97141;c31=-2.34078;d30=59.79734;c13=-0.60639;d22=-6.43481;c23=0.15774;d04=0.09351;c41=-0.04158;d32=-0.07379;c05=-0.00661;d14=-0.05419;d40=-0.03444;df=(f-f0)*0.36;dl=(l-l0)*0.36;with(Math)
{dx=c01*dl+c11*df*dl+c21*pow(df,2)*dl+c03*pow(dl,3);dx+=c31*pow(df,3)*dl+c13*df*pow(dl,3)+c23*pow(df,2)*pow(dl,3);dx+=c41*pow(df,4)*dl+c05*pow(dl,5);x=x0+dx;x=round(100*x)/100;dy=d10*df+d20*pow(df,2)+d02*pow(dl,2)+d12*df*pow(dl,2);dy+=d30*pow(df,3)+d22*pow(df,2)*pow(dl,2)+d40*pow(df,4);dy+=d04*pow(dl,4)+d32*pow(df,3)*pow(dl,2)+d14*df*pow(dl,4);y=y0+dy;y=round(100*y)/100;}
retval.x=x;retval.y=y;inp.y=retval.y;inp.x=retval.x;return retval;},rd_to_sphermerc:function(inp)
{var inp1=Vicrea.OpenLayers.Layer.Rijksdriehoek.rd_to_wgs84(inp);var inp2=OpenLayers.Layer.SphericalMercator.projectForward(inp1);inp.x=inp2.x;inp.y=inp2.y;return inp;},sphermerc_to_rd:function(inp)
{var inp1=OpenLayers.Layer.SphericalMercator.projectInverse(inp);var inp2=Vicrea.OpenLayers.Layer.Rijksdriehoek.wgs84_to_rd(inp1);inp.x=inp2.x;inp.y=inp2.y;return inp;},CLASS_NAME:"Vicrea.OpenLayers.Layer.Rijksdriehoek"};OpenLayers.Projection.addTransform("EPSG:28992","EPSG:4326",Vicrea.OpenLayers.Layer.Rijksdriehoek.wgs84_to_rd);OpenLayers.Projection.addTransform("EPSG:4326","EPSG:28992",Vicrea.OpenLayers.Layer.Rijksdriehoek.rd_to_wgs84);OpenLayers.Projection.addTransform("EPSG:900913","EPSG:28992",Vicrea.OpenLayers.Layer.Rijksdriehoek.sphermerc_to_rd);OpenLayers.Projection.addTransform("EPSG:28992","EPSG:900913",Vicrea.OpenLayers.Layer.Rijksdriehoek.rd_to_sphermerc);OpenLayers.Projection.addTransform("OSGEO:41001","EPSG:28992",Vicrea.OpenLayers.Layer.Rijksdriehoek.sphermerc_to_rd);OpenLayers.Projection.addTransform("EPSG:28992","OSGEO:41001",Vicrea.OpenLayers.Layer.Rijksdriehoek.rd_to_sphermerc);OpenLayers.Projection.addTransform("EPSG:3785","EPSG:28992",Vicrea.OpenLayers.Layer.Rijksdriehoek.sphermerc_to_rd);OpenLayers.Projection.addTransform("EPSG:28992","EPSG:3785",Vicrea.OpenLayers.Layer.Rijksdriehoek.rd_to_sphermerc);Vicrea.OpenLayers.Marker.Label=OpenLayers.Class.create();Vicrea.OpenLayers.Marker.Label.prototype=OpenLayers.Class.inherit(OpenLayers.Marker,{domLabel:null,initialize:function(lonlat,icon,label,aclass){OpenLayers.Marker.prototype.initialize.apply(this,arguments);this.domLabel=OpenLayers.Util.createDiv(null,null,null,null,null,'2px solid #1BA8D0',null,1.0)
if(aclass)
{this.domLabel.className=aclass;}
else
{this.domLabel.style.color='#999999';this.domLabel.style.backgroundColor='#FFFFFF';this.domLabel.style.padding='2px';}
this.domLabel.innerHTML=label;},destroy:function(){this.label=null;this.domLabel=null;OpenLayers.Marker.prototype.destroy.apply(this,arguments);},draw:function(px){OpenLayers.Util.modifyDOMElement(this.domLabel,null,px);return this.domLabel;},CLASS_NAME:"Vicrea.OpenLayers.Marker.Label"});Vicrea.OpenLayers.Strategy.ClusterByGeometryAndAttribute=OpenLayers.Class(OpenLayers.Strategy,{features:null,clusters:null,clustering:false,attributeName:null,clusterAttributes:null,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"beforefeaturesadded":this.cacheFeatures,scope:this});}
return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.clearCache();this.layer.events.un({"beforefeaturesadded":this.cacheFeatures,scope:this});}
return deactivated;},cacheFeatures:function(event){var propagate=true;if(!this.clustering){this.clearCache();this.features=event.features;this.cluster();propagate=false;}
return propagate;},clearCache:function(){if(this.features){for(var i=0;i<this.features.length;++i){this.features[i].destroy();}}
this.features=null;},cluster:function(){if(this.features){if(!this.clustersExist()){var clusters=[];var feature,clustered,cluster;for(var i=0;i<this.features.length;++i){feature=this.features[i];if(feature.geometry){clustered=false;for(var j=0;j<clusters.length;++j){cluster=clusters[j];if(this.shouldCluster(cluster,feature)){this.addToCluster(cluster,feature);clustered=true;break;}}
if(!clustered){clusters.push(this.createCluster(this.features[i]));}}}
this.layer.destroyFeatures();if(clusters.length>0){this.clustering=true;this.layer.addFeatures(clusters);this.clustering=false;}
this.clusters=clusters;}}},clustersExist:function(){var exist=false;if(this.clusters&&this.clusters.length>0&&this.clusters.length==this.layer.features.length){exist=true;for(var i=0;i<this.clusters.length;++i){if(this.clusters[i]!=this.layer.features[i]){exist=false;break;}}}
return exist;},shouldCluster:function(cluster,feature){if(cluster.geometry.equals==null)
{return false;}
return(cluster.geometry.equals(feature.geometry));},addToCluster:function(cluster,feature){cluster.cluster.push(feature);cluster.attributes.count+=1;if(this.attributeName!=null)
{var at_name=null;var eval_code='at_name = this.attributeName+"_"+feature.attributes.'+this.attributeName
eval(eval_code);if(at_name!=null)
{eval_code='if (cluster.attributes.'+at_name+' == null) {cluster.attributes.'+at_name+' = 1; } else {cluster.attributes.'+at_name+' += 1; }';eval(eval_code);}
else
{}}},createCluster:function(feature){var my_geometry=feature.geometry.clone();var my_attributes={count:1};if(this.clusterAttributes!=null)
{var my_attributes=this.clusterAttributes;my_attributes.count=1;}
var cluster=new OpenLayers.Feature.Vector(my_geometry,my_attributes);if(this.attributeName!=null)
{var eval_code='var at_value = feature.attributes.'+this.attributeName;eval(eval_code);eval_code='cluster.attributes.'+this.attributeName+"_"+at_value+'=1;'
eval(eval_code);}
cluster.cluster=[feature];return cluster;},CLASS_NAME:"Vicrea.OpenLayers.Strategy.ClusterByGeometryAndAttribute"});Vicrea.OpenLayers.Strategy.Filter=OpenLayers.Class(OpenLayers.Strategy,{response:null,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"refresh":this.update,scope:this});this.update();}
return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"refresh":this.update,scope:this});}
return deactivated;},update:function(options){this.layer.protocol.abort(this.response);this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read({filter:this.layer.filter,callback:this.load,scope:this});},load:function(resp){this.layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){var remote=this.layer.projection;var local=this.layer.map.getProjectionObject();if(!local.equals(remote)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(remote,local);}}}
this.layer.addFeatures(features);}
this.layer.events.triggerEvent("loadend");},CLASS_NAME:"Vicrea.OpenLayers.Strategy.Filter"});
