function debuginfo(aa,ba){try{if($("debug")){if(aa>=debuglevel)$("debug").innerHTML+=ba+"<br>";}}
catch(e){}}
gridmap_version=1.3;function grid_TabWidget(ca,da,ea,fa,ga,sp){this.slaveList=new Array();this.master=ca;this.current=null;this.dir=ea;this.height="22px";this.xOffset=fa;this.yOffset=ga;this.look=da;this.space=sp;this.initialize();};grid_TabWidget.prototype.getTag=function(){return this.master;};grid_TabWidget.prototype.addTab=function(ha,ia,ja){var ka=new grid_TabButton(this,this.slaveList.length,ha,ia,ja,this.look);this.slaveList.push(ka);};grid_TabWidget.prototype.getCurrent=function(){return this.current;};grid_TabWidget.prototype.setCurrent=function(i){for(var j=0;j<this.slaveList.length;++j){if(j==i){if(this.look=='img'){this.slaveList[j].setActiveImg();}
else if(this.look=='default'){this.slaveList[j].setActiveDefault();}}
else{if(this.look=='img'){this.slaveList[j].setDefaultImg();}
else if(this.look=='default'){this.slaveList[j].setDefaultDefault();}}}};grid_TabWidget.prototype.initialize=function(){this.master.style.position="relative";this.master.style.overflow="hidden";this.master.style.background="#E0ECF3";};grid_TabWidget.prototype.setBackgroundColor=function(c){this.master.style.background=c;};grid_TabWidget.prototype.getHeightTillIndex=function(i){var la=0;if(this.look=='img'){if(i==0)return this.yOffset+5;for(var j=0;j<i;++j){if(j==0){la+=(25+this.space+this.xOffset+15);}
else{la+=(25+this.space+10);}}}
else if(this.look=='default'){if(i==0)return this.xOffset;for(var j=0;j<i;++j){if(j==0){la+=(25+this.space+this.yOffset);}
else{la+=(25+this.space);}}}
return la;};grid_TabWidget.prototype.getWidthTillIndex=function(i){var ma=0;if(this.look=='img'){if(i==0)return this.xOffset+5;for(var j=0;j<i;++j){if(j==0){ma+=(this.slaveList[j].getWidth()+this.space+this.xOffset+15);}
else{ma+=(this.slaveList[j].getWidth()+this.space+10);}}}
else if(this.look=='default'){if(i==0)return this.xOffset;for(var j=0;j<i;++j){if(j==0){ma+=(this.slaveList[j].getWidth()+this.space+this.xOffset);}
else{ma+=(this.slaveList[j].getWidth()+this.space);}}}
return ma;};function grid_TabButton(na,i,oa,w,pa,l){this.slave=document.createElement('div');this.masterObj=na;this.masterTag=this.masterObj.getTag();this.index=i;this.value=oa;this.valueTag=document.createTextNode(this.value);this.id=oa;this.width=w;this.height=parseInt(this.masterObj.height);this.execFunc=pa;this.imgPath="";this.look=l;this.initialize();if(this.look=='img'){this.initializeImg();}
else if(this.look=='default'){this.initializeDefault();}};grid_TabButton.prototype.handleClick=function(qa){this.masterObj.setCurrent(this.index);this.execFunc();}
grid_TabButton.prototype.getTag=function(){return this.slave;};grid_TabButton.prototype.getWidth=function(){return this.width;};grid_TabButton.prototype.setDefaultImg=function(){this.slave.style.backgroundImage="url("+this.imgPath+"bg_w.png)";this.slave.style.color="#ffffff";this.imgL.src=this.imgPath+"bg_w_left.png";this.imgR.src=this.imgPath+"bg_w_right.png";};grid_TabButton.prototype.setDefaultDefault=function(){this.slave.style.background="#E0ECF3";this.slave.style.color="#2F507A";};grid_TabButton.prototype.setActiveImg=function(){this.slave.style.backgroundImage="url("+this.imgPath+"bg_c.png)";this.slave.style.color="#ffffff";this.imgL.src=this.imgPath+"bg_c_left.png";this.imgR.src=this.imgPath+"bg_c_right.png";};grid_TabButton.prototype.setActiveDefault=function(){this.slave.style.background="#E0ECF3";this.slave.style.color="#FF0000";};grid_TabButton.prototype.handleOver=function(){this.slave.style.background="#DCB9C0";};grid_TabButton.prototype.handleOut=function(){this.slave.style.background="#E0ECF3";};grid_TabButton.prototype.initialize=function(){this.slave.onclick=this.handleClick.bindAsEventListener(this);this.slave.onmouseover=this.handleOver.bind(this);this.slave.onmouseout=this.handleOut.bind(this);this.slave.style.position="absolute";this.slave.style.overflow="hidden";this.slave.style.cursor="pointer";this.slave.align="left";this.slave.style.paddingLeft="4px";this.slave.style.paddingTop="2px";this.slave.style.fontFamily="Arial";this.slave.style.fontSize="14";this.slave.style.fontWeight="bold";this.slave.style.color="#2F507A";this.slave.style.width=this.width+'px';this.slave.style.height=this.height+'px';if(this.masterObj.dir=="h"){this.slave.style.top=this.masterObj.yOffset+'px';this.slave.style.left=this.masterObj.getWidthTillIndex(this.index)+'px';}
else{this.slave.style.top=this.masterObj.getHeightTillIndex(this.index)+"px";this.slave.style.left=this.masterObj.xOffset+"px";}
this.slave.appendChild(this.valueTag);this.masterTag.appendChild(this.slave);};grid_TabButton.prototype.initializeImg=function(){this.slave.style.backgroundImage="url("+this.imgPath+"bg_w.png)";this.slave.style.backgroundRepeat="repeat-x";this.slave.style.borderTop="1px solid black";this.slave.style.borderBottom="1px solid black";this.imgL=document.createElement('img');this.imgR=document.createElement('img');this.imgL.src=this.imgPath+"bg_w_left.png";this.imgL.style.position="absolute";this.imgL.style.top=this.masterObj.yOffset+'px';this.imgL.style.width="5px";this.imgL.style.height=this.height+'px';this.imgL.style.left=(this.masterObj.getWidthTillIndex(this.index)-5)+'px';this.imgR.src=this.imgPath+"bg_w_right.png";this.imgR.style.position="absolute";this.imgR.style.top=this.masterObj.yOffset+'px';this.imgR.style.width="5px";this.imgR.style.height=this.height+'px';this.imgR.style.left=(this.masterObj.getWidthTillIndex(this.index)+this.width)+'px';this.masterTag.appendChild(this.imgL);this.masterTag.appendChild(this.imgR);};grid_TabButton.prototype.initializeDefault=function(){this.slave.style.background="#E0ECF3";};var Subject={register:function(ra){if(!this.observers.include(ra)){this.observers.push(ra);}},unregister:function(sa){if(this.observers.include(sa))this.observers.without(sa);},notify:function(){this.observers.invoke('update');}};var Observer={update:function(){this._update.call(this);}};var grid_StatusBar=Class.create();grid_StatusBar.prototype={initialize:function(ta){this.mapO=$(ta);var sb=document.createElement("div");this.sbTag=$(sb);var c=new Image();this.closeTag=$(c);this.closeTag.id="close";var o=new Image();this.openTag=$(o);this.openTag.id="open";this.initCSS();},setBgHexColor:function(ua){this.sbTag.setStyle({background:ua});},setBgRGBColor:function(r,g,b){this.sbTag.setStyle({background:'#'+$A(arguments).invoke('toColorPart').join('')});},setOpacity:function(o){this.sbTag.setStyle({opacity:o})},initCSS:function(){this.openTag.src="img/open.png";this.sbTag.style.positon="absolute";this.sbTag.onmousedown=function(){return false;};this.sbTag.onmousemove=function(){return false;};this.sbTag.onmouseup=function(){return false;};this.sbTag.setStyle({zIndex:"20",background:"#ffffaa",opacity:"0.8",left:"0px",top:this.mapO.getHeight()-25+"px",width:this.mapO.getWidth()+"px",height:"25px"});this.sbTag.makePositioned();this.openTag.onmousedown=this._open.bindAsEventListener(this);this.openTag.onmousemove=function(){return false;}
this.openTag.onmouseup=function(){return false;}
this.openTag.style.position="absolute";this.openTag.setStyle({zIndex:"21",left:this.mapO.containerTag.getWidth()-22+"px",top:this.mapO.containerTag.getHeight()-22+"px",width:"16px",height:"16px",cursor:"pointer"});this.openTag.makePositioned();this.openTag.hide();this.closeTag.src="img/close.png";this.closeTag.style.position="absolute";this.closeTag.onmousedown=this._close.bindAsEventListener(this);this.closeTag.onmousemove=function(){return false;}
this.closeTag.onmouseup=function(){return false;}
this.closeTag.setStyle({zIndex:"21",cursor:"pointer",left:this.mapO.containerTag.getWidth()-22+"px",top:"3px",width:"16px",height:"16px"});this.closeTag.makePositioned();this.sbTag.appendChild(this.closeTag);this.mapO.containerTag.appendChild(this.openTag);this.mapO.containerTag.appendChild(this.sbTag);},_close:function(va){Event.stop(va);this.sbTag.hide();this.openTag.show();},_open:function(wa){Event.stop(wa);this.sbTag.show();this.openTag.hide();}};var grid_MapButton=Class.create();grid_MapButton.prototype={initialize:function(xa,ya,za,sO){this.mapO=$(xa);var bt=document.createElement("div");this.buttonTag=$(bt);this.title=document.createTextNode(ya);this.funcP=za;this._initCSS(sO);},_initCSS:function(sO){this.buttonTag.oncontextmenu=function(){return false;};this.buttonTag.onmousedown=this._action.bindAsEventListener(this);this.buttonTag.onmousemove=function(){return false;};this.buttonTag.onmouseup=function(){return false;};this.buttonTag.style.position="absolute";this.buttonTag.setStyle({zIndex:sO.zIndex||"40",border:sO.border||"1px solid gray",background:sO.background||"#ff00ff",cursor:sO.cursor||"pointer",left:sO.left||"100px",top:sO.top||"5px",width:sO.width||"80px",height:sO.height||"20px",padding:sO.padding||"5px",float:sO.float||"left",fontFamily:sO.fontFamily||"Arial",fontSize:sO.fontSize||"12px",fontWeight:sO.fontWeigth||"bold"});this.buttonTag.makePositioned();this.buttonTag.appendChild(this.title);this.mapO.containerTag.appendChild(this.buttonTag);},_action:function(Aa){Event.stop(Aa);new Effect.Highlight(this.buttonTag,{});this.funcP();}};var grid_Envelope=Class.create();grid_Envelope.prototype={initialize:function(Ba,Ca,Da,Ea){this.bbox=$A(arguments);this._checkBounds();},isValid:function(){if(this.bbox.all())return true;return false;},_checkBounds:function(){if(this.bbox.size()!=4||(this.bbox[0]>this.bbox[2]||this.bbox[1]>this.bbox[3]))throw "EnvelopeBoundsException";},clear:function(){this.bbox.clear();},getXmin:function(){return this.bbox[0];},getYmin:function(){return this.bbox[1];},getXmax:function(){return this.bbox[2];},getYmax:function(){return this.bbox[3];},getWidth:function(){return this.bbox[2]-this.bbox[0];},getHeight:function(){return this.bbox[3]-this.bbox[1];},getCenter:function(){return new grid_Point(this.bbox[0]+this.getWidth()/2,this.bbox[1]+this.getHeight()/2);},setXmin:function(x){this.bbox[0]=x;this._checkBounds();},setYmin:function(y){this.bbox[1]=y;this._checkBounds();},setXmax:function(x){this.bbox[2]=x;this._checkBounds();},setYmax:function(y){this.bbox[3]=y;this._checkBounds();},setWidth:function(w){var Fa=this.bbox[0];var Ga=this.getWidth();this.bbox[0]=Fa+Ga/2 - w/2;this.bbox[2]=Fa+Ga/2 + w/2;},setHeight:function(h){var Ha=this.bbox[1];var Ia=this.getHeight();this.bbox[1]=Ha+Ia/2 - h/2;this.bbox[3]=Ha+Ia/2 + h/2;},setBox:function(Ja,Ka,La,Ma){this.bbox=$A(arguments);this._checkBounds();},copyEnvelope:function(Na){if(Na instanceof grid_Envelope){this.setBox(Na.getXmin(),Na.getYmin(),Na.getXmax(),Na.getYmax());}
else{throw "NoValidEnvelopeException";}},unionEnvelope:function(Oa){if(Oa instanceof grid_Envelope){this.setBox(Math.min(this.getXmin(),Oa.getXmin()),Math.min(this.getYmin(),Oa.getYmin()),Math.max(this.getXmax(),Oa.getXmax()),Math.max(this.getYmax(),Oa.getYmax()));}
else{throw "NoValidEnvelopeException";}},union:function(Pa){if(Pa instanceof grid_Geometry){this.bbox[0]=(Pa.bbox.getXmin()<this.bbox[0])?Pa.bbox.getXmin():this.bbox[0];this.bbox[1]=(Pa.bbox.getYmin()<this.bbox[1])?Pa.bbox.getYmin():this.bbox[1];this.bbox[2]=(Pa.bbox.getXmax()>this.bbox[2])?Pa.bbox.getXmax():this.bbox[2];this.bbox[3]=(Pa.bbox.getYmax()>this.bbox[3])?Pa.bbox.getYmax():this.bbox[3];}
else throw "NoValidGeometryException";},force2Envelope:function(Qa){if(Qa instanceof grid_Envelope){this.bbox[0]=(this.bbox[0]<Qa.bbox[0])?Qa.bbox[0]:this.bbox[0];this.bbox[1]=(this.bbox[1]<Qa.bbox[1])?Qa.bbox[1]:this.bbox[1];this.bbox[2]=(this.bbox[2]>Qa.bbox[2])?Qa.bbox[2]:this.bbox[2];this.bbox[3]=(this.bbox[3]>Qa.bbox[3])?Qa.bbox[3]:this.bbox[3];}},shift:function(dx,dy){this.bbox[0]-=dx;this.bbox[1]-=dy;this.bbox[2]-=dx;this.bbox[3]-=dy;},expand:function(l,b,r,t){this.bbox[0]-=l;this.bbox[1]-=b;this.bbox[2]+=r;this.bbox[3]+=t;},setBuffer:function(b){this.setWidth(this.getWidth()+2*b);this.setHeight(this.getHeight()+2*b);},setBufferFactor:function(a,b){this.setWidth(this.getWidth()*a+2*b);this.setHeight(this.getHeight()*a+2*b);},contains:function(Ra){if(Ra instanceof grid_Geometry){return((Ra.bbox.getXmin()>=this.bbox[0]&&Ra.bbox.getXmin()<=this.bbox[2])&&(Ra.bbox.getXmax()>=this.bbox[0]&&Ra.bbox.getXmax()<=this.bbox[2])&&(Ra.bbox.getYmin()>=this.bbox[1]&&Ra.bbox.getYmin()<=this.bbox[3])&&(Ra.bbox.getYmax()>=this.bbox[1]&&Ra.bbox.getYmax()<=this.bbox[3]));}
else throw "NoValidGeometryException";},intersects:function(Sa){if(Sa instanceof grid_Geometry){return((Sa.bbox.getXmin()<=this.bbox[0]&&Sa.bbox.getXmax()<=this.bbox[2])||(Sa.bbox.getXmin()>=this.bbox[0]&&Sa.bbox.getXmax()>=this.bbox[2]))&&((Sa.bbox.getYmin()<=this.bbox[1]&&Sa.bbox.getYmax()<=this.bbox[3])||(Sa.bbox.getYmin()>=this.bbox[1]&&Sa.bbox.getYmax()>=this.bbox[3]));}
else throw "NoValidGeometryException";},toArray:function(){return this.bbox.toArray();},toString:function(){return this.bbox.join("+");}};var grid_Geometry=Class.create();grid_Geometry.prototype={initialize:function(){this.bbox=new grid_Envelope(0,0,0,0);}};var grid_Point=Class.create();grid_Point.prototype=Object.extend(new grid_Geometry(),{initialize:function(x,y,z){this.setPoint(x,y,z);},setPoint:function(x,y,z){this.x=(x==null)?0:x;this.y=(y==null)?0:y;this.z=(z==null)?0:z;this.bbox.setBox(this.x,this.y,this.x,this.y);this.bbox.setBuffer(1);},toString:function(){return "POINT("+this.x+" "+this.y+" "+this.z+")";}});var grid_Line=Class.create();grid_Line.prototype=Object.extend(new grid_Geometry(),{initialize:function(){this.bbox.setBox(1,1,2,2);}});var grid_Map=Class.create();grid_Map.prototype={initialize:function(Ta,Ua){this.containerTag=$(Ta);this.mapTag=$(new Image());var Va=document.createElement("div");this.canvasTag=$(Va);this.canvasTag.id="canv";this.loadTag=$(new Image());this.loaded=false;this.observers=$A([]);Object.extend(this,Subject);this.pixDim={width:0,height:0};this.limitScale={min:undefined,max:undefined};this.curExtent=new grid_Envelope(null,null,null,null);this.fullExtent=new grid_Envelope(null,null,null,null);this.borderExtent=new grid_Envelope(null,null,null,null);if(Ua.mapext)this.setFullExtent(Ua.mapext[0],Ua.mapext[1],Ua.mapext[2]);(Ua.layers)?this.setLayers(Ua.layers):this.layers=[];this.cgi=Ua.cgi||undefined;this.mapFile=Ua.map||undefined;this.mode=Ua.mode||"map";this.args=Ua.args||"";this.parentMap=Ua.parentMap||undefined;this.lang="de";this.curState=undefined;this.states=$H({pan:new grid_PanState(this),zoombox:new grid_ZoomBoxState(this),sel:new grid_SelState(this),ref:new grid_ReferenceState(this)});this.showScalebar=false;this.zoomEffect=false;this.initCSS();this.setState("pan");debuginfo(3,"map initialised");},initCSS:function(){this.containerTag.makePositioned();this.containerTag.makeClipping();this.containerTag.oncontextmenu=function(){return false;};this.containerTag.onmousedown=function(){return false;};this.mapTag.onmousedown=function(){return false;};this.mapTag.oncontextmenu=function(){return false;};this.mapTag.galleryImg="no";this.mapTag.onselectstart=function(){return false;};this.mapTag.ondrag=function(){return false;};Position.clone(this.containerTag,this.mapTag);this.mapTag.setStyle({zIndex:"1"});this.mapTag.onload=this.mapLoaded.bind(this);this.canvasTag.style.position="absolute";this.canvasTag.setStyle({zIndex:"2",left:"0px",top:"0px",width:this.containerTag.getWidth()+"px",height:this.containerTag.getHeight()+"px"});this.containerTag.makePositioned();this.loadTag.src="img/processing.gif";this.loadTag.oncontextmenu=function(){return false;};this.loadTag.style.position="absolute";this.loadTag.setStyle({zIndex:"10",left:this.containerTag.getWidth()/2 - 100/2+"px",top:this.containerTag.getHeight()/2 - 75/2+"px"});this.loadTag.makePositioned();this.loadTag.hide();this.containerTag.appendChild(this.mapTag);this.containerTag.appendChild(this.canvasTag);this.containerTag.appendChild(this.loadTag);Position.absolutize(this.mapTag);},setZoomEffect:function(Wa){this.zoomEffect=Wa;},setScalebar:function(b){this.showScalebar=b;},getParentMap:function(){return this.parentMap;},setParentMap:function(pm){this.parentMap=pm;},setWidth:function(w){this.containerTag.setStyle({width:w+"px"});},getWidth:function(){return this.containerTag.getWidth();},setHeight:function(h){this.containerTag.setStyle({height:h+"px"});},getHeight:function(){return this.containerTag.getHeight();},setCgi:function(Xa){this.cgi=Xa;},setMapFile:function(Ya){this.mapFile=Ya;},setMode:function(m){this.mode=m;},setArgs:function(a){this.args=a;},setBgHexColor:function(Za){this.containerTag.setStyle({background:Za});},setBgRGBColor:function(r,g,b){this.containerTag.setStyle({background:'#'+$A(arguments).invoke('toColorPart').join('')});},setState:function(s){if(this.states.get(s)==null){alert("Unknown state '"+s+"'");}
else{this.curState=s;this.states.get(s).activate();}},getState:function(){return this.states.get(this.curState).getName(this.lang);},getStateByCode:function($a){return this.states.get($a);},addState:function(ab,bb){eval("this.states."+ab+" = "+bb);},setSelectFunc:function(cb){this.getStateByCode("sel").setAction(cb);},setLayers:function(db){this.layers=db.split(',').invoke('strip');},addLayer:function(eb){if(!this.layers.include(eb)){this.layers=this.layers.concat(eb).invoke('strip');}},addLayers:function(fb){fb.split(',').invoke('strip').each(function(gb,hb){this.addLayer(gb);}.bind(this));},removeLayer:function(ib){if(this.layers.include(ib))this.layers=this.layers.without(ib);},removeLayers:function(jb){jb.split(',').invoke('strip').each(function(kb,lb){this.removeLayer(kb);}.bind(this));},toggleLayer:function(mb){if(this.layers.include(mb))this.removeLayer(mb);else this.addLayers(mb);},toggleLayers:function(nb){nb.split(',').invoke('strip').each(function(ob,pb){this.toggleLayer(ob);}.bind(this));},getLayers:function(){return this.layers;},zoom:function(qb){this.curExtent.setWidth(this.curExtent.getWidth()/qb);this.curExtent.setHeight(this.curExtent.getHeight()/qb);this.redraw(new Effect.Scale(this.mapTag,qb*100,{scaleFromCenter:true}));},zoomToFullExtent:function(){this.curExtent.copyEnvelope(this.fullExtent);this.redraw();},getMinScale:function(){return this.limitScale.min;},setMinScale:function(rb){this.limitScale.min=rb;},getMaxScale:function(){return this.limitScale.max;},setMaxScale:function(tb){this.limitScale.max=tb;},getScale:function(){return(this.curExtent.getWidth()/(0.0254*this.containerTag.getWidth()/81));},setScale:function(s){var c=this.getMapCentroid();var ww=s*(0.0254*this.containerTag.getWidth()/81);var hh=s*(0.0254*this.containerTag.getHeight()/81);this.curExtent.setBox(c.x-ww / 2, c.y - hh / 2,c.x+ww / 2, c.y + hh / 2);this._fixAspectRatio();},x2Real:function(x){return x*this.pixDim.width+this.curExtent.getXmin();},y2Real:function(y){return this.curExtent.getYmax()-y*this.pixDim.height;},real2X:function(x){if(this.pixDim.width==0)return -1;return parseInt((x-this.curExtent.getXmin())/this.pixDim.width);},real2Y:function(y){if(this.pixDim.height==0)return -1;return parseInt((this.curExtent.getYmax()-y)/this.pixDim.height);},_fixAspectRatio:function(){var ub=Math.abs(this.fullExtent.getWidth()/this.fullExtent.getHeight());var vb=Math.abs(this.curExtent.getWidth()/this.curExtent.getHeight());var wb=this.getMapCentroid();if(vb>ub){var xb=Math.abs(this.curExtent.getWidth()/ub);this.curExtent.setYmin(wb.y-xb/2);this.curExtent.setYmax(wb.y+xb/2);}
else if(vb<ub){var yb=Math.abs(this.curExtent.getHeight()*ub);this.curExtent.setXmin(wb.x-yb/2);this.curExtent.setXmax(wb.x+yb/2);}},_checkScale:function(){var s=this.getScale();if(this.limitScale.min&&(s<this.limitScale.min))this.setScale(this.limitScale.min);if(this.limitScale.max&&(s>this.limitScale.max))this.setScale(this.limitScale.max);},_checkBorder:function(){if(this.borderExtent.isValid()){this.curExtent.force2Envelope(this.borderExtent);this._fixAspectRatio();}},getMapCentroid:function(){return this.curExtent.getCenter();},setMapCentroid:function(x,y){var c=this.getMapCentroid();dx=c.x-x;dy=c.y-y;this.curExtent.shift(dx,dy);},getExtent:function(){return this.curExtent.bbox;},setExtent:function(zb,Ab,Bb,Cb){this.curExtent.setBox(zb,Ab,Bb,Cb);this._fixAspectRatio();},getFullExtent:function(){return this.fullExtent.bbox;},setFullExtent:function(Db,Eb,Fb){var Gb=((this.containerTag.getHeight()/this.containerTag.getWidth())*(Fb-Db))+Eb;this.fullExtent.setBox(Db,Eb,Fb,Gb);this._fixAspectRatio();this.curExtent.copyEnvelope(this.fullExtent);},setFullExtentRatio:function(){var Hb=this.fullExtent.getXmin();var Ib=this.fullExtent.getXmax();var Jb=this.fullExtent.getYmin();var Kb=((this.containerTag.getHeight()/this.containerTag.getWidth())*(Ib-Hb))+Jb;this.fullExtent.setBox(Hb,Jb,Ib,Kb);this._fixAspectRatio();},getBorderExtent:function(){return this.borderExtent.bbox;},setBorderExtent:function(Lb,Mb,Nb,Ob){this.borderExtent.setBox(Lb,Mb,Nb,Ob);},recalcPixelSize:function(){this.pixDim.width=this.curExtent.getWidth()/this.containerTag.getWidth();this.pixDim.height=this.curExtent.getHeight()/this.containerTag.getHeight();},resetMapsize:function(){var Pb=this.fullExtent.getXmin();var Qb=this.fullExtent.getXmax();var Rb=this.fullExtent.getYmin();var Sb=((this.containerTag.getHeight()/this.containerTag.getWidth())*(Qb-Pb))+Rb;this.fullExtent.setBox(Pb,Rb,Qb,Sb);this._fixAspectRatio();this.recalcPixelSize();},toQueryString:function(){var Tb=this.cgi;if(Tb.indexOf("?")<0){Tb+="?";}
else{Tb+="&";};var l="layers="+this.layers.join(' ');var Ub="mapext="+this.curExtent.bbox.join('+');var s="mapsize="+this.containerTag.getWidth()+'+'+this.containerTag.getHeight();Tb=Tb+"&"+Ub+"&"+s+"&"+l;if(this.showScalebar){Tb=Tb+"&scalebar=embed";}
return Tb+"&"+this.args;},redraw:function(Vb){this.loadTag.show();this.recalcPixelSize();this._checkScale();this._checkBorder();this.recalcPixelSize();this.loaded=false;this.mapTag.src=this.toQueryString();this.effect=Vb;this.notify();},mapLoaded:function(){this.loaded=true;if(this.effect){this.effect.cancel();}
Position.clone(this.containerTag,this.mapTag);this.loadTag.hide();this.canvasTag.show();},effectFinished:function(){if(!this.loaded){this.loadTag.show();}}};var grid_ZoomCmd=Class.create();grid_ZoomCmd.prototype={initialize:function(Wb,Xb,Yb){this.mapO=Wb;this.type=Xb;this.effect=Yb||false;this.zRatio=1.5;},getName:function(){if(this.mapO.lang=="de"&&this.type=="in")return "Vergr�ssern";else if(this.mapO.lang=="en"&&this.type=="in")return "zoom in";else if(this.mapO.lang=="de"&&this.type!="in")return "Verkleinern";else if(this.mapO.lang=="en"&&this.type!="in")return "zoom out";else return "zoom";},getInRatio:function(){return this.zRatio;},getOutRatio:function(){return 1/this.zRatio;},setRatio:function(i){this.zRatio=i;},execute:function(){if(this.type=='in'){this.mapO.zoom(this.getInRatio());}
else{this.mapO.zoom(this.getOutRatio());}}};var grid_ScaleCmd=Class.create();grid_ScaleCmd.prototype={initialize:function(Zb,$b,ac){this.mapO=Zb;this.scale=$b;this.scaleO=ac;},getName:function(){if(this.mapO.lang=="de")return "Ma?stab setzen 1:"+this.scale;else if(this.mapO.lang=="en")return "set scale to 1:"+this.scale;else return "set scale to 1:"+this.scale;},execute:function(bc){var cc=1;if(this.scale=="plus"){cc=this.scaleO.getScaleButton(this.scaleO.currentScale).nextScale;}
else if(this.scale=="minus"){cc=this.scaleO.getScaleButton(this.scaleO.currentScale).prevScale;}
else{cc=this.scale;}
debuginfo(1,"Scale set to "+cc);if(cc){var dc=this.mapO.getScale()/cc;this.mapO.zoom(dc,this.mapO);new Effect.Highlight(this.scaleO.getScaleButton(cc).buttonTag,{});this.scaleO.setScale(cc);}
if(bc)Event.stop(bc);}};var grid_FullExtentCmd=Class.create();grid_FullExtentCmd.prototype={initialize:function(ec){this.mapO=ec;},getName:function(){if(this.mapO.lang=="de")return "Gesamtansicht";else if(this.mapO.lang=="en")return "full extent";else return "full extent";},execute:function(){this.mapO.curExtent.copyEnvelope(this.mapO.fullExtent);this.mapO.redraw();}};var grid_PanCmd=Class.create();grid_PanCmd.prototype={initialize:function(fc){this.mapO=fc;},getName:function(){if(this.mapO.lang=="de")return "Verschieben";else if(this.mapO.lang=="en")return "pan";else return "pan";},execute:function(){this.mapO.setState('pan');}};var grid_ZoomBoxCmd=Class.create();grid_ZoomBoxCmd.prototype={initialize:function(gc){this.mapO=gc;},getName:function(){if(this.mapO.lang=="de")return "Rechteckauswahl";else if(this.mapO.lang=="en")return "zoombox";else return "zoombox";},execute:function(){this.mapO.setState('zoombox');}};var grid_SelCmd=Class.create();grid_SelCmd.prototype={initialize:function(hc,ic){this.mapO=hc;this.func=ic;},getName:function(){if(this.mapO.lang=="de")return "Auswahl";else if(this.mapO.lang=="en")return "selection";else return "Selection";},execute:function(){this.mapO.setSelectFunc(this.func);this.mapO.setState('sel');}};var grid_BaseState=Class.create();grid_BaseState.prototype={initialize:function(){this._init.apply(this,arguments);},_init:function(jc){this.mapO=$(jc);},_resetMapState:function(){this.mapO.containerTag.onclick=function(){return false;};this.mapO.containerTag.onmousedown=function(){return false;};this.mapO.containerTag.onmousemove=function(){return false;};this.mapO.containerTag.onmouseup=function(){return false;};this.mapO.containerTag.onmouseout=function(){return false;};},_addWheelEvent:function(){if(this.mapO){if(Prototype.Browser.IE||Prototype.Browser.Opera){this.mapO.containerTag.onmousewheel=this._mWheel.bindAsEventListener(this);}
else{this.mapO.containerTag.addEventListener("DOMMouseScroll",this._mWheel.bindAsEventListener(this),false);}}},_mWheel:function(kc){}};var grid_PanState=Class.create();grid_PanState.prototype=Object.extend(new grid_BaseState(),{initialize:function(lc){this._init(lc);this.startPos={x:0,y:0};this.elPos={left:0,top:0};this._addWheelEvent();},getName:function(mc){if(mc=="de")return "Verschieben";else if(mc=="en")return "pan";else return "Pan";},activate:function(){this._resetMapState();this.mapO.containerTag.setStyle({cursor:"move"});this.mapO.containerTag.onmousedown=this._panStart.bindAsEventListener(this);},disable:function(){this._resetMapState();},_panStart:function(nc){this.mapO.canvasTag.hide();Position.absolutize(this.mapO.mapTag);var cO=Position.cumulativeOffset(this.mapO.containerTag);var rO=Position.realOffset(this.mapO.mapTag);this.startPos.x=Event.pointerX(nc)-cO[0];this.startPos.y=Event.pointerY(nc)-cO[1];this.elPos.left=0;this.elPos.top=0;this.mapO.containerTag.onmousemove=this._panMove.bindAsEventListener(this);this.mapO.containerTag.onmouseup=this._panStop.bindAsEventListener(this);this.mapO.containerTag.onclick=this._panStop.bindAsEventListener(this);this.mapO.containerTag.onmouseout=this._panStopForced.bindAsEventListener(this);},_panStopTest:function(oc){alert("out of box");},_panMove:function(pc){var cO=Position.cumulativeOffset(this.mapO.containerTag);var x=Event.pointerX(pc)-cO[0];var y=Event.pointerY(pc)-cO[1];this.mapO.mapTag.setStyle({left:this.elPos.left+x-this.startPos.x+"px",top:this.elPos.top+y-this.startPos.y+"px",width:this.mapO.containerTag.getWidth()+"px",height:this.mapO.containerTag.getHeight()+"px"});},_panStop:function(qc){this.mapO.canvasTag.show();var cO=Position.cumulativeOffset(this.mapO.containerTag);var x=Event.pointerX(qc)-cO[0];var y=Event.pointerY(qc)-cO[1];var xx=this.elPos.left+x-this.startPos.x;var yy=this.elPos.top+y-this.startPos.y;if((xx!=0)||(yy!=0)){this._doPan(xx,yy);}
this.activate();},_panStopForced:function(rc){var cO=Position.cumulativeOffset(this.mapO.containerTag);var x=Event.pointerX(rc)-cO[0];var y=Event.pointerY(rc)-cO[1];if(x>1&&x<this.mapO.getWidth()-1&&y>1&&y<this.mapO.getHeight()-1){return};this._panStop(rc);var xx=this.elPos.left+x-this.startPos.x;var yy=this.elPos.top+y-this.startPos.y;if((xx!=0)||(yy!=0)){this._doPan(xx,yy);}
this.activate();},_doPan:function(x,y){var sc=x*this.mapO.pixDim.width;var tc=y*this.mapO.pixDim.height;var uc=this.mapO.curExtent.getXmin()-sc;var vc=this.mapO.curExtent.getYmin()+tc;var wc=this.mapO.curExtent.getXmax()-sc;var xc=this.mapO.curExtent.getYmax()+tc;this.mapO.setExtent(uc,vc,wc,xc);this.mapO.redraw();}});var grid_ZoomBoxState=Class.create();grid_ZoomBoxState.prototype=Object.extend(new grid_BaseState(),{initialize:function(yc){this.mapO=yc;var zc=document.createElement('div');this.zoomBTag=$(zc);this._initCSS();this.zoomPosX=$H({start:0,stop:0});this.zoomPosY=$H({start:0,stop:0});},_initCSS:function(){this.zoomBTag.hide();this.zoomBTag.setStyle({zIndex:"5",border:"2px dashed #ffffff",background:"red",opacity:"0.5"});this.mapO.containerTag.appendChild(this.zoomBTag);},getName:function(Ac){if(Ac=="de")return "Rechteckzoom";else if(Ac=="en")return "zoombox";else return "ZoomBox";},activate:function(){this._resetMapState();Position.absolutize(this.zoomBTag);this.mapO.containerTag.setStyle({cursor:"crosshair"});this.mapO.containerTag.onclick=function(){return false;};this.mapO.containerTag.onmousedown=this._zoomStart.bindAsEventListener(this);},disable:function(){},_zoomStart:function(Bc){var cO=Position.cumulativeOffset(this.mapO.containerTag);var x=Event.pointerX(Bc)-cO[0];var y=Event.pointerY(Bc)-cO[1];this.mapO.containerTag.onmousedown=function(){return false;}
this.mapO.containerTag.onmousemove=this._zoomMove.bindAsEventListener(this);this.mapO.containerTag.onmouseup=this._zoomStop.bindAsEventListener(this);this._zoomBoxBegin(x,y);},_zoomMove:function(Cc){var cO=Position.cumulativeOffset(this.mapO.containerTag);var x=Event.pointerX(Cc)-cO[0];var y=Event.pointerY(Cc)-cO[1];this._zoomBoxMotion(x,y);},_zoomStop:function(Dc){this._zoomBoxEnd();this.activate();},_zoomBoxBegin:function(x,y){this.zoomPosX.set('start',x);this.zoomPosY.set('start',y);},_zoomBoxMotion:function(x,y){this.zoomPosX.set('stop',x);this.zoomPosY.set('stop',y);this.zoomBTag.show();this.zoomBTag.setStyle({left:this.zoomPosX.values().min()+"px",top:this.zoomPosY.values().min()+"px",width:this.zoomPosX.values().max()-this.zoomPosX.values().min()+"px",height:this.zoomPosY.values().max()-this.zoomPosY.values().min()+"px"});},_zoomBoxEnd:function(x,y){this.zoomBTag.hide();if(Math.abs(this.zoomPosX.get('stop')-this.zoomPosX.get('start'))>3||Math.abs(this.zoomPosY.get('stop')-this.zoomPosY.get('start'))>3){var Ec=this.mapO.curExtent.getXmin()+this.zoomPosX.values().min()*this.mapO.pixDim.width;var Fc=this.mapO.curExtent.getYmin()+(this.mapO.getHeight()-this.zoomPosY.values().max())*this.mapO.pixDim.height;var Gc=this.mapO.curExtent.getXmax()-(this.mapO.getWidth()-this.zoomPosX.values().max())*this.mapO.pixDim.width;var Hc=this.mapO.curExtent.getYmax()-this.zoomPosY.values().min()*this.mapO.pixDim.height;this.zoomPosX.set('start',0);this.zoomPosX.set('stop',0);this.zoomPosY.set('start',0);this.zoomPosY.set('stop',0);this.mapO.setExtent(Ec,Fc,Gc,Hc);this.mapO.redraw();}}});var grid_ReferenceState=Class.create();grid_ReferenceState.prototype=Object.extend(new grid_BaseState(),{initialize:function(Ic){this._init(Ic);Object.extend(this,Observer);this.startPos={x:0,y:0};this.elPos={left:0,top:0};var rt=document.createElement("div");this.refTag=$(rt);this._initCSS();},_initCSS:function(){this.refTag.style.position="absolute";this.refTag.setStyle({cursor:"move",left:"0px",top:"0px",width:"0px",height:"0px",zIndex:"51",border:"2px solid #000000",background:"#cccccc",opacity:"0.7"});this.refTag.hide();this.refTag.onmousedown=this._shiftStart.bindAsEventListener(this);this.mapO.containerTag.appendChild(this.refTag);},getName:function(Jc){if(Jc=="de")return "?berblick";else if(Jc=="en")return "reference";else return "Reference";},activate:function(){this._resetMapState();this.refTag.show();if(this.mapO.parentMap){this.mapO.parentMap.register(this);}
this.mapO.containerTag.setStyle({cursor:"auto"});},disable:function(){this._resetMapState();},_shiftStart:function(Kc){var cO=Position.cumulativeOffset(this.mapO.containerTag);this.startPos.x=Event.pointerX(Kc)-cO[0];this.startPos.y=Event.pointerY(Kc)-cO[1];this.elPos.left=parseInt(this.refTag.getStyle("left"))||0;this.elPos.top=parseInt(this.refTag.getStyle("top"))||0;this.refTag.onmousemove=this._shiftMove.bindAsEventListener(this);this.refTag.onmouseup=this._shiftStop.bindAsEventListener(this);},_shiftMove:function(Lc){var cO=Position.cumulativeOffset(this.mapO.containerTag);var x=Event.pointerX(Lc)-cO[0];var y=Event.pointerY(Lc)-cO[1];this.refTag.setStyle({left:this.elPos.left+x-this.startPos.x+"px",top:this.elPos.top+y-this.startPos.y+"px"});},_shiftStop:function(Mc){var cO=Position.cumulativeOffset(this.mapO.containerTag);var x=Event.pointerX(Mc)-cO[0];var y=Event.pointerY(Mc)-cO[1];var xx=this.elPos.left+x-this.startPos.x;var yy=this.elPos.top+y-this.startPos.y;this.refTag.setStyle({left:xx+"px",top:yy+"px"});if((xx!=0)||(yy!=0)){this._doShift(xx,yy);}
this.refTag.onmousemove=function(){return false;};this.refTag.onmouseup=function(){return false;};},_doShift:function(x,y){var Nc=this.mapO.x2Real(x);var Oc=this.mapO.y2Real(y);var Pc=Nc+this.mapO.parentMap.curExtent.getWidth();var Qc=Oc-this.mapO.parentMap.curExtent.getHeight();this.mapO.parentMap.setExtent(Nc,Qc,Pc,Oc);this.mapO.parentMap.redraw();},_update:function(){this._setPos();},_setPos:function(){var Rc=this.mapO.real2X(this.mapO.parentMap.curExtent.getXmin());var Sc=this.mapO.real2Y(this.mapO.parentMap.curExtent.getYmin());var Tc=this.mapO.real2X(this.mapO.parentMap.curExtent.getXmax());var Uc=this.mapO.real2Y(this.mapO.parentMap.curExtent.getYmax());this.refTag.setStyle({left:Rc+"px",top:Uc+"px",width:Math.abs(Tc-Rc)+"px",height:Math.abs(Uc-Sc)+"px"});}});var grid_SelState=Class.create();grid_SelState.prototype=Object.extend(new grid_BaseState(),{initialize:function(Vc){this._init(Vc);this._addWheelEvent();this.action=null;},getName:function(Wc){if(Wc=="de")return "Auswahl";else if(Wc=="en")return "select";else return "Select";},activate:function(){this._resetMapState();this.mapO.containerTag.setStyle({cursor:"help"});this.mapO.containerTag.onmousedown=this._selStart.bindAsEventListener(this);},disable:function(){this._resetMapState();},setAction:function(Xc){this.action=Xc;},_selStart:function(Yc){Position.absolutize(this.mapO.mapTag);var cO=Position.cumulativeOffset(this.mapO.containerTag);var x=this.mapO.x2Real(Event.pointerX(Yc)-cO[0]);var y=this.mapO.y2Real(Event.pointerY(Yc)-cO[1]);this.mapO.mapselect=x+" "+y;if(this.action!=null){this.action();}}});var grid_Button=Class.create();grid_Button.prototype={initialize:function(Zc,$c,ad,bd){this.imageTag=$(new Image());this.imageTag.src=$c;this.cmd=Zc;this.state=ad||false;this.title=bd;this._initCSS();},_initCSS:function(){this.imageTag.title=this.title||this.cmd.getName();this.imageTag.setStyle({cursor:"pointer",margin:"5px",background:this.tbO.tbTag.getStyle("background")});if(this.tbO.align=="horizontal"){this.imageTag.setStyle({float:"left"});}
this.imageTag.onclick=this._click.bindAsEventListener(this);this.imageTag.onmouseover=this.showInfo.bindAsEventListener(this);this.imageTag.onmouseout=this.hideInfo.bindAsEventListener(this);this.tbO.tbTag.appendChild(this.imageTag);},showInfo:function(cd){if(this.title){overlib(this.title,FGCOLOR,'#FFFF80',LEFT);}
Event.stop(cd);},hideInfo:function(dd){try{nd();}
catch(e){}
Event.stop(dd);},_click:function(ed){this.cmd.execute();new Effect.Highlight(this.imageTag,{});Event.stop(ed);if(this.state==true){this.tbO.actions.each(function(fd){fd._clearState();});this._setState();}},_setState:function(){this.imageTag.setStyle({background:"#FFFFFF",border:"1px solid black"});},_clearState:function(){this.imageTag.setStyle({background:"",border:"0px none"});}};var grid_ToolbarButton=Class.create();grid_ToolbarButton.prototype={initialize:function(gd,hd,jd,kd,ld){this.tbO=$(gd);this.imageTag=$(new Image());this.imageTag.src=jd;this.cmd=hd;this.state=kd||false;this.title=ld;this.isOn=false;this._initCSS();if(this.cmd instanceof grid_PanCmd){this._setState();this.isOn=true;}},_initCSS:function(){this.imageTag.title=this.title||this.cmd.getName();this.imageTag.setStyle({cursor:"pointer",margin:"5px",background:this.tbO.tbTag.getStyle("background")});if(this.tbO.align=="horizontal"){this.imageTag.setStyle({float:"left"});}
this.imageTag.onclick=this._click.bindAsEventListener(this);this.imageTag.onmouseover=this.showInfo.bindAsEventListener(this);this.imageTag.onmouseout=this.hideInfo.bindAsEventListener(this);this.tbO.tbTag.appendChild(this.imageTag);},showInfo:function(md){if(this.title){overlib(this.title,FGCOLOR,'#FFFF80',LEFT);}
Event.stop(md);},hideInfo:function(od){try{nd();}
catch(e){}
Event.stop(od);},_click:function(pd){this.cmd.execute();new Effect.Highlight(this.imageTag,{});Event.stop(pd);if(this.state==true){if(this.tbO.isSingleState()){this.tbO.actions.each(function(qd){qd._clearState();});this._setState();}
else{if(this.isOn){this.isOn=false;this._clearState();}
else{this.isOn=true;this._setState();}}}},_setState:function(){this.imageTag.setStyle({background:"#FFFFFF",border:"1px solid black"});},_clearState:function(){this.imageTag.setStyle({background:"",border:"0px none"});}};var grid_ScaleSetter=Class.create();grid_ScaleSetter.prototype={initialize:function(rd,sd){this.tbO=$(rd);this.mapO=sd;this.scales=new Hash();this.currentScale=undefined;this.container=$(document.createElement("div"));this.container.setStyle({textAlign:"center"});Object.extend(this,Observer);this.mapO.register(this);this._initCSS();},_initCSS:function(){this.tbO.tbTag.appendChild(this.container);},setStyle:function(td){this.container.setStyle(td);},addScale:function(ud){var vd={iconon:ud.iconon,iconoff:ud.iconoff,scale:ud.scale,prevScale:this.currentScale};this.currentScale=vd.scale;if(vd.prevScale)this.getScaleButton(vd.prevScale).nextScale=vd.scale;vd.cmd=new grid_ScaleCmd(this.mapO,vd.scale,this);var wd=$(document.createElement("div"));var xd=$(new Image());xd.src=vd.iconoff;wd.title=ud.title||vd.cmd.getName();wd.setStyle({cursor:"pointer",margin:"1px",opacity:1.0});if(this.tbO.align=="horizontal"){wd.setStyle({float:"left"});}
wd.onclick=vd.cmd.execute.bindAsEventListener(vd.cmd);if(ud.title){wd.onmouseover=this.showInfo.bindAsEventListener(this);wd.onmouseout=this.hideInfo.bindAsEventListener(this);}
wd.appendChild(xd);vd.buttonTag=wd;vd.imageTag=xd;this.container.appendChild(wd);this.scales.set("scale"+vd.scale,vd)},addScalePlus:function(yd){var zd={icon:yd.icon};zd.cmd=new grid_ScaleCmd(this.mapO,"plus",this);var Ad=$(document.createElement("div"));var Bd=$(new Image());Bd.src=zd.icon;Ad.title=yd.title||zd.cmd.getName();Ad.setStyle({cursor:"pointer",margin:"1px 1px 20px 1px"});if(this.tbO.align=="horizontal"){Ad.setStyle({float:"left"});}
Ad.onclick=zd.cmd.execute.bindAsEventListener(zd.cmd);if(yd.title){Ad.onmouseover=this.showInfo.bindAsEventListener(this);Ad.onmouseout=this.hideInfo.bindAsEventListener(this);}
Ad.appendChild(Bd);zd.buttonTag=Ad;zd.imageTag=Bd;this.container.appendChild(Ad);},addScaleMinus:function(Cd){var Dd={icon:Cd.icon};Dd.cmd=new grid_ScaleCmd(this.mapO,"minus",this);var Ed=$(document.createElement("div"));var Fd=$(new Image());Fd.src=Dd.icon;Ed.title=Cd.title||Dd.cmd.getName();Ed.setStyle({cursor:"pointer",margin:"20px 1px 1px 1px"});if(this.tbO.tbTag.getStyle("background")){Ed.setStyle({background:this.tbO.tbTag.getStyle("background")});}
if(this.tbO.align=="horizontal"){Ed.setStyle({float:"left"});}
Ed.onclick=Dd.cmd.execute.bindAsEventListener(Dd.cmd);if(Cd.title){Ed.onmouseover=this.showInfo.bindAsEventListener(this);Ed.onmouseout=this.hideInfo.bindAsEventListener(this);}
Ed.appendChild(Fd);Dd.buttonTag=Ed;Dd.imageTag=Fd;this.container.appendChild(Ed);},showInfo:function(Gd){Event.stop(Gd);},hideInfo:function(Hd){try{nd();}
catch(e){}
Event.stop(Hd);},getScaleButton:function(Id){return this.scales.get("scale"+Id);},setScale:function(Jd){this.currentScale=Jd;this.scales.each(function(Kd){if(Kd.key=="scale"+Jd){Kd.value.imageTag.src=Kd.value.iconon;}
else{Kd.value.imageTag.src=Kd.value.iconoff;}});},_clearState:function(){},_update:function(){var Ld=this.mapO.getScale();var Md=0;var Nd=0;var Od=0;var Pd=0;this.scales.values().each(function(k){Md=k.scale-Ld;if(Md<0)Md=-Md;Nd=Md+1;Od=Md+1;if(k.nextScale)Nd=k.nextScale-k.scale;if(Nd<0)Nd=-Nd;if(k.prevScale)Od=k.prevScale-k.scale;if(Od<0)Od=-Od;if(Md<=Nd&&Md<=Od){this.setScale(k.scale);Pd=k.scale;}}.bind(this));debuginfo(2,"ScaleSetter updated, mapscale="+Ld+", setterscale="+Pd);}};var grid_ToolbarSeparator=Class.create();grid_ToolbarSeparator.prototype={initialize:function(Qd){this.tbO=$(Qd);var Rd=document.createElement("div");this.sepTag=$(Rd);this.tbO.tbTag.appendChild(this.sepTag);this._initCSS();},_initCSS:function(){if(this.tbO.align=="horizontal"){this.sepTag.setStyle({float:"left",width:"0",height:"30px",marginTop:"4px",marginLeft:"8px",marginRight:"8px",marginBottom:"0",border:"1px solid black"});}
else if(this.tbO.align=="vertical"){this.sepTag.setStyle({float:"none",width:"30px",height:"0px",marginTop:"8px",marginBottom:"8px",marginLeft:"4px",marginRight:"0",border:"1px solid black"});}}};var grid_Toolbar=Class.create();grid_Toolbar.prototype={initialize:function(Sd,Td,Ud){this.tbTag=$(Sd);this.align=Td;this.drag=Ud||false;this.actions=$A([]);this.separators=$A([]);this.highlightColor="#000000";this.singleState=true;this._initCSS();},_initCSS:function(){if(this.drag){new Draggable(this.tbTag,{zIndex:"50"});}
this.tbTag.setStyle({padding:"0px"});},addButton:function(Vd,Wd,Xd,Yd){this.actions.push(new grid_ToolbarButton(this,Vd,Wd,Xd,Yd));},addSeparator:function(){this.separators.push(new grid_ToolbarSeparator(this));},setSingleState:function(Zd){this.singleState=Zd;},isSingleState:function(){return this.singleState;},setAlign:function(a){this.align=a;if(a=="horizontal"){this.actions.each(function($d){$d.buttonTag.setStyle({float:"left"});});}
else if(a=="vertical"){this.actions.each(function(ae){ae.buttonTag.setStyle({float:"none"});});}
this.separators.invoke('_initCSS');},setBorder:function(be,ce){switch(ce){case "left":this.tbTag.setStyle({borderLeft:be});break;case "right":this.tbTag.setStyle({borderRight:be});break;case "top":this.tbTag.setStyle({borderTop:be});break;case "bottom":this.tbTag.setStyle({borderBottom:be});break;default:this.tbTag.setStyle({border:be});break;}},setBgHexColor:function(de){this.tbTag.setStyle({background:de});},setBgRGBColor:function(r,g,b){this.tbTag.setStyle({background:'#'+$A(arguments).invoke('toColorPart').join('')});},setHighlightHexColor:function(ee){this.highlightColor=ee;},setHighlightRGBColor:function(r,g,b){this.highlightColor='#'+$A(arguments).invoke('toColorPart').join('');},getHighlightColor:function(){return this.highlightColor;},_rotate:function(fe){Event.stop(fe);this.tbTag.setStyle({width:this.tbTag.getHeight()+"px",height:this.tbTag.getWidth()+"px"});var a=(this.align=="vertical")?"horizontal":"vertical";this.setAlign(a);}};grid_OverlayInfobox=Class.create();grid_OverlayInfobox.prototype={initialize:function(ge){this.osO=ge;this.width=ge.styleO.boxwidth||200;this.height=ge.styleO.boxheight||200;this.bgcolorBox="#DDDD66";this.infoBox=$(document.createElement("div"));new Draggable(this.infoBox,{});this.infoBoxShadow1=$(document.createElement("div"));this.infoBoxShadow2=$(document.createElement("div"));this.titleTag=$(document.createElement("div"));this.closeTag=$(new Image());this.contentTag=$(document.createElement("div"));this._initCSS();},_initCSS:function(){this.infoBox.setStyle({position:"absolute",cursor:"auto",zIndex:"500",left:"50px",top:"50px",width:this.width+"px",height:this.height+"px",lineHeight:"1.3em",fontSize:"0.8em",background:this.bgcolorBox,fontFamily:"Arial",border:"1px solid #000000"});this.infoBox.makePositioned();this.infoBox.hide();this.infoBoxShadow1.setStyle({position:"absolute",cursor:"auto",zIndex:"500",left:this.width+"px",top:"5px",width:"5px",height:this.height+"px",background:"#666666"});this.infoBoxShadow1.makePositioned();this.infoBoxShadow2.setStyle({position:"absolute",cursor:"auto",zIndex:"500",left:"5px",top:this.height+"px",width:this.width+"px",height:"5px",background:"#666666"});this.infoBoxShadow2.makePositioned();this.titleTag.setStyle({position:"absolute",margin:"0px",width:(this.width-3)+"px",height:"15px",left:"0px",top:"0px",paddingTop:"3px",paddingLeft:"3px",fontWeight:"bold",borderBottom:"1px solid #000000"});this.titleTag.makePositioned();this.closeTag.src="img/icons/close.png",this.closeTag.setStyle({position:"absolute",cursor:"pointer",zIndex:"501",width:"15px",height:"15px",left:parseInt(this.infoBox.getStyle("width"))-18+"px",top:"1px"});this.closeTag.makePositioned();this.closeTag.onclick=function(he){Event.stop(he);this.infoBox.hide();}.bindAsEventListener(this);this.contentTag.setStyle({position:"absolute",backgroundColor:"transparent",margin:"5px",width:(this.width-10)+"px",height:(this.height-23)+"px",left:"0px",top:"20px"});this.contentTag.makePositioned();this.infoBox.appendChild(this.titleTag);this.infoBox.appendChild(this.closeTag);this.infoBox.appendChild(this.contentTag);this.infoBox.appendChild(this.infoBoxShadow1);this.infoBox.appendChild(this.infoBoxShadow2);this.osO.mapO.containerTag.appendChild(this.infoBox);},show:function(ie){this._setPos(ie.get('x'),ie.get('y'));this.contentTag.innerHTML="loading ...";this.infoBox.show();new Ajax.Request(this.osO.url+"?service="+this.osO.serviceid+"&item="+ie.get('id'),{method:"get",onComplete:function(je){var ke=$A(je.responseXML.getElementsByTagName("item"));if(ke.length>0){var le=$A(ke[0].attributes);var me=new Hash();for(var jj=0,jjl=le.length;jj<jjl;jj=jj+1){var ne=le[jj];me.set(ne.nodeName,ne.nodeValue);}
this.titleTag.innerHTML=me.get('title')||'No title';this.width=me.get('width')||this.width;this.height=me.get('height')||this.height;this.contentTag.innerHTML=ke[0].childNodes[0].data;this.resize();}
else{this.contentTag.innerHTML="no information available";}}.bind(this)});},hide:function(){this.infoBox.hide();},resize:function(){this.infoBox.setStyle({width:this.width+"px",height:this.height+"px"});this.infoBoxShadow1.setStyle({left:this.width+"px",height:this.height+"px"});this.infoBoxShadow2.setStyle({top:this.height+"px",width:this.width+"px"});this.titleTag.setStyle({width:(this.width-3)+"px"});this.closeTag.setStyle({left:(this.width-18)+"px"});},setWidth:function(w){this.width=w;this.resize();},setHeight:function(h){this.height=h;this.resize();},setBgRGBColor:function(r,g,b){this.infoBox.setStyle({background:'#'+$A(arguments).invoke('toColorPart').join('')});},setBgHexColor:function(oe){this.infoBox.setStyle({background:oe});},setContentRGBColor:function(r,g,b){hex='#'+$A(arguments).invoke('toColorPart').join('');this.contentTag.setStyle({background:hex});this.infoBox.setStyle({borderTop:"4px solid "+hex,borderRight:"4px solid "+hex});},setContentHexColor:function(pe){this.contentTag.setStyle({background:pe});this.infoBox.setStyle({borderTop:"4px solid "+pe,borderRight:"4px solid "+pe});},setBoxSize:function(w,h){this.infoBox.setStyle({width:w+"px",height:h+"px"});this.closeTag.setStyle({left:parseInt(this.infoBox.getStyle("width"))-18+"px"});},_setPos:function(x,y){var l=this.osO.mapO.real2X(x);var t=this.osO.mapO.real2Y(y);var w=parseInt(this.infoBox.getStyle("width"));var h=parseInt(this.infoBox.getStyle("height"));var qe=0;var re=0;var se="_";(this.osO.mapO.getWidth()-l)<w?se+="l":se+="r";(t<h)?se+="u":se+="o";switch(se){case "_lo":qe=l-w+"px";re=t-h-15+"px";break;case "_lu":qe=l-w+"px";re=t+24-35+"px";break;case "_ro":qe=l+15+"px";re=t-h-15+"px";break;case "_ru":qe=l+15+"px";re=t+24-35+"px";break;default:qe=l-w+"px";re=t-h+"px";break;}
this.infoBox.setStyle({left:qe,top:re});}};grid_OverlayPopup=Class.create();grid_OverlayPopup.prototype={initialize:function(te,ue,ve){this.urlbase=te;this.width=ue||800;this.heigt=ve||550;this.toolbar=true;this.location=true;this.status=true;this.menubar=true;this.scrollbars=true;this.resizable=true;},_initCSS:function(){},show:function(we){var xe=we.get("width")||this.width;var ye=we.get("height")||this.height;var ze="width="+xe+",height="+ye;if(this.scrollbars)ze+=",scrollbars=yes";if(this.toolbar)ze+=",toolbar=yes";if(this.location)ze+=",location=yes";if(this.status)ze+=",status=yes";if(this.menubar)ze+=",menubar=yes";if(this.resizable)ze+=",resizable=yes";var Ae=we.get('url');if(this.urlbase)Ae=this.urlbase+Ae;var w=window.open(Ae,"",ze);w.focus();},hide:function(){}};grid_OverlayItem=Class.create();grid_OverlayItem.prototype={initialize:function(Be,Ce,De){this.osO=Be;this.iconO=De||{};this.contentO=$H(Ce);this.id=this.contentO.get("id");debuginfo(3,"  title -> "+this.contentO.get('title'));debuginfo(3,"  x/y -> "+this.contentO.get('x')+"/"+this.contentO.get('y'));debuginfo(3,"  icon  -> "+this.contentO.get('icon'));if(this.osO.box.isValid()){this.osO.box.union(new grid_Point(parseFloat(this.contentO.get('x')),parseFloat(this.contentO.get('y'))));}
else{try{this.osO.box.setBox(parseFloat(this.contentO.get('x'))-1,parseFloat(this.contentO.get('y'))-1,parseFloat(this.contentO.get('x'))+1,parseFloat(this.contentO.get('y'))+1);}
catch(e){alert(e);}}
debuginfo(3,"  service extent defined "+this.osO.box.toString()+" (item location)");if(Ce.get('xmin')&&Ce.get('ymin')){try{this.osO.box.union(new grid_Point(parseFloat(this.contentO.get('xmin')),parseFloat(this.contentO.get('ymin'))));}
catch(e){alert(e);}}
if(Ce.get('xmax')&&Ce.get('ymax')){try{this.osO.box.union(new grid_Point(parseFloat(this.contentO.get('xmax')),parseFloat(this.contentO.get('ymax'))));}
catch(e){alert(e);}}
debuginfo(3,"  service extent defined "+this.osO.box.toString()+" (add. extent)");this._initCSS();},_initCSS:function(){if(this.contentO.get('icon')||this.iconO.icon){var Ee=(this.iconO.iconBase?this.iconO.iconBase:"");var Fe=Ee+(this.contentO.get('icon')||this.iconO.icon);this.iconTag=$(new Image());this.iconTag.id=this.osO.serviceid;this.iconTag.src=Fe;var Ge=this.contentO.get('offsetx')||-this.iconTag.width/2;var He=this.contentO.get('offsety')||-this.iconTag.width/2;if(this.iconO.iconOffset){Ge=this.iconO.iconOffset.x;He=this.iconO.iconOffset.y;}
var Ie=this.osO.mapO.real2X(this.contentO.get('x'))+parseInt(Ge);var Je=this.osO.mapO.real2Y(this.contentO.get('y'))+parseInt(He);this.iconTag.style.position="absolute";this.iconTag.title=this.contentO.get('title');this.iconTag.onmouseup=function(){return false;};this.iconTag.onmousemove=function(){return false;};this.iconTag.onmousedown=this.show.bindAsEventListener(this);var Ke="400";if(this.contentO.get('zindex'))Ke=this.contentO.get('zindex');this.iconTag.setStyle({cursor:"pointer",zIndex:Ke,left:Ie+"px",top:Je+"px"});if(this.osO.hasMaplabel()&&this.contentO.get('maplabel')){this.labelTag=$(document.createElement("div"));this.labelTag.id=this.osO.serviceid;this.labelTag.innerHTML=this.contentO.get('maplabel');this.labelTag.setStyle({color:"#000000",fontSize:"9px",padding:"1px",background:"#FFFFFF",opacity:"0.8",position:"absolute",zIndex:Ke,left:Ie+"px",top:(Je-12)+"px"});this.osO.mapO.canvasTag.appendChild(this.labelTag);}
this.osO.mapO.canvasTag.appendChild(this.iconTag);}
else{var im=document.createElement("div");this.imTag=$(im);this.imTag.onmouseup=function(){return false;};this.imTag.onmousemove=function(){return false;};this.imTag.onmousedown=this.show.bindAsEventListener(this);this.imTag.style.position="absolute";this.imTag.title=this.contentO.get('title');this.imTag.setStyle({cursor:"pointer",zIndex:"25",left:this.osO.mapO.real2X(this.contentO.get('x'))+this.iconO.iconOffset.x+"px",top:this.osO.mapO.real2Y(this.contentO.get('y'))+this.iconO.iconOffset.y+"px",width:this.iconO.iconDim.width+"px",height:this.iconO.iconDim.height+"px"});this.osO.mapO.canvasTag.appendChild(this.imTag);}},showIcon:function(){var Le=this.contentO.get('offsetx')||-this.iconTag.width/2;var Me=this.contentO.get('offsety')||-this.iconTag.width/2;var Ne=this.osO.mapO.real2X(this.contentO.get('x'))+parseInt(Le);var Oe=this.osO.mapO.real2Y(this.contentO.get('y'))+parseInt(Me);this.iconTag.setStyle({left:Ne+"px",top:Oe+"px"});},show:function(Pe){Event.stop(Pe);new Effect.Pulsate(this.iconTag);var Qe=this.iconO.boxwidth;var Re=this.iconO.boxheight;if(this.contentO.get('url')){var Se=new grid_OverlayPopup(this.osO.styleO.urlbase,Qe,Re);Se.show(this.contentO);}
else{this.osO.showItem(this.contentO);}},remove:function(){this.iconTag.remove();if(this.labelTag)this.labelTag.remove();},getContent:function(){return this.contentO;}};var grid_OverlayService=Class.create();grid_OverlayService.prototype={initialize:function(Te,Ue,Ve,We,Xe){this.serviceid=Te||"no_id";this.url=Ve;this.params=$H(We);this.mapO=Ue;this.styleO=Xe;this.zoomBuffer=Xe.zoomBuffer||{factor:1.5,buffer:500};this.scaleLimits=$H({min:0,max:1000000000000});this.box=new grid_Envelope(null,null,null,null);this.overlays=$A([]);this.itemInfo=null;this.visible=true;this.maplabel=Xe.maplabel||false;Object.extend(this,Observer);this.mapO.register(this);this.action=undefined;this.noItemMessage="No items found";this._initCSS();},_initCSS:function(){if(Object.keys(this.styleO).indexOf("selIcon")>-1){var h=new Image();this.highlightTag=$(h);this.highlightTag.src=this.styleO.selIcon;this.highlightTag.onmouseup=function(){return false;};this.highlightTag.onmousemove=function(){return false;};this.highlightTag.onmousedown=function(){return false;};this.highlightTag.style.position="absolute";this.highlightTag.setStyle({zIndex:"24",left:"0px",top:"0px",width:this.styleO.selIconDim.width+"px",height:this.styleO.selIconDim.height+"px"});this.highlightTag.hide();this.mapO.canvasTag.appendChild(this.highlightTag);}},setNoItemMessage:function(s){this.noItemMessage=s;},setParam:function(k,y){this.params.set(k,y);},setParams:function(Ye){this.params.update(Ye);},clearParams:function(){this.params=new Hash();},setStyle:function(Ze){this.styleO=$H(this.styleO).merge(Ze);},setZoomBuffer:function($e){this.zoomBuffer=$e;},getMinScale:function(){return this.scaleLimits.get('min');},getMaxScale:function(){return this.scaleLimits.get('max');},setMinScale:function(af){this.scaleLimits.set('min',af);},setMaxScale:function(bf){this.scaleLimits.set('max',bf);},setScaleRange:function(cf,df){this.setMinScale(cf);this.setMaxScale(df);},setVisible:function(ef){this.visible=ef;if(!ef)this._clear();},isVisible:function(){if(this.visible)return true;return false;},show:function(ff){this.setVisible(true);this.execute(ff);},hide:function(gf){this.setVisible(false);this._clear();},hasMaplabel:function(){if(this.maplabel)return true;return false;},size:function(){return this.overlays.size();},addItem:function(hf,jf){this.overlays.push(new grid_OverlayItem(this,hf,{icon:jf.icon,iconDim:jf.iconDim,iconOffset:jf.iconOffset,iconBase:jf.iconBase}));},ping:function(){alert("HALLO");},toQueryString:function(){if(this.url==null)return "";if(this.url.indexOf("?")>-1){return this.url+"&"+this.params.toQueryString();}
return this.url+"?"+this.params.toQueryString();},execute:function(kf,lf){if(this.visible&&this._checkScale()){if(!kf){this.setParam('xmin',this.mapO.curExtent.getXmin());this.setParam('xmax',this.mapO.curExtent.getXmax());this.setParam('ymin',this.mapO.curExtent.getYmin());this.setParam('ymax',this.mapO.curExtent.getYmax());this.setParam('scale',this.mapO.getScale());}
debuginfo(2,this.toQueryString());debuginfo(2,"iconBase = "+this.styleO.iconBase);if(this.url!=null){this._clear();new Ajax.Request(this.url,{method:"post",requestHeaders:["Pragma","no-cache","Cache-Control","must-revalidate","If-Modified-Since",document.lastModified],parameters:this.params.toQueryString(),onComplete:function(mf){debuginfo(3,mf.responseXML);var nf=$A(mf.responseXML.getElementsByTagName("item"));debuginfo(2,"overlay size = "+nf.length);for(var ii=0,iil=nf.length;ii<iil;++ii){var of=new Hash();var pf=$A(nf[ii].attributes);for(var jj=0,jjl=pf.length;jj<jjl;jj=jj+1){var qf=pf[jj];of.set(qf.nodeName,qf.nodeValue);}
of.set('title',nf[ii].childNodes[0].data);this.overlays.push(new grid_OverlayItem(this,of,{icon:this.styleO.icon,iconDim:this.styleO.iconDim,iconOffset:this.styleO.iconOffset,iconBase:this.styleO.iconBase,boxwidth:this.styleO.boxwidth,boxheight:this.styleO.boxheight}));}
if(kf){if(this.overlays.size()>0){this.mapO.curExtent.copyEnvelope(this.box);this.mapO.curExtent.setBufferFactor(this.zoomBuffer.factor,this.zoomBuffer.buffer);this.mapO._fixAspectRatio();}
else{if(this.noItemMessage!=""){alert(this.noItemMessage);}}
this.mapO.redraw();debuginfo(2,"zoomto done -> "+this.mapO.curExtent.toString());}}.bind(this)});}
else{for(var ii=0,iil=this.overlays.length;ii<iil;++ii){this.overlays[ii].showIcon();}}}
else{this._clear();}},showItem:function(rf){if(this.itemInfo==null){this.itemInfo=new grid_OverlayInfobox(this);}
if(this.styleO.showtype=="yahoo"){debuginfo(1,"display overlay item details for ID="+$H(rf).get("id"));showDialog(this.styleO.showtypespec,$H(rf).get("id"));}
else if(this.styleO.showtype=="none"){return;}
else{this.itemInfo.show(rf);}},_checkScale:function(){var cS=this.mapO.getScale();if(cS>=this.getMinScale()&&cS<=this.getMaxScale())return true;else return false;},_clear:function(){this.box=new grid_Envelope(null,null,null,null);if(this.action)this.action.hide();if(this.overlays){this.overlays.each(function(sf){sf.remove();});this.overlays.clear();}},_update:function(){this.execute(false);},setBgHexColor:function(tf){if(this.action instanceof grid_OverlayInfobox){this.action.setBgHexColor(tf);}},setBgRGBColor:function(r,g,b){if(this.action instanceof grid_OverlayInfobox){this.action.setBgRGBColor(r,g,b);}},setContentRGBColor:function(r,g,b){if(this.action instanceof grid_OverlayInfobox){this.action.setContentRGBColor(r,g,b);}},setContentHexColor:function(uf){if(this.action instanceof grid_OverlayInfobox){this.action.setContentHexColor(uf);}},setBoxSize:function(w,h){if(this.action instanceof grid_OverlayInfobox){this.action.setBoxSize(w,h);}}};