Festmap={};Festmap.Util={};Festmap.Constants={markerWidth:21,markerHeight:28,offsetH:11,offsetW:0,maxResolution:156543.0339,minZoomLevel:11,maxZoomLevel:19,defaultZoomLevel:12};OpenLayers.Util.alphaHack=function(){return false};Festmap.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoomBar,{buttonDown:function(d){if(!OpenLayers.Event.isLeftClick(d)){return}var c=0;switch(this.action){case"panup":this.map.pan(0,-this.getSlideFactor("h"));break;case"pandown":this.map.pan(0,this.getSlideFactor("h"));break;case"panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case"panright":this.map.pan(this.getSlideFactor("w"),0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":c=this.map.getZoom()-1;if(c>=Festmap.Constants.minZoomLevel){this.map.zoomOut()}break;case"zoomworld":this.map.zoomToMaxExtent();break}OpenLayers.Event.stop(d)},draw:function(g){OpenLayers.Control.prototype.draw.apply(this,arguments);g=this.position.clone();this.buttons=[];var e=new OpenLayers.Size(18,18);var h=new OpenLayers.Pixel(g.x+e.w/2,g.y);var f=e.w;if(this.zoomWorldIcon){h=new OpenLayers.Pixel(g.x+e.w,g.y)}this._addButton("panup","north-mini.png",h,e);g.y=h.y+e.h;this._addButton("panleft","west-mini.png",g,e);if(this.zoomWorldIcon){this._addButton("zoomworld","zoom-world-mini.png",g.add(e.w,0),e);f*=2}this._addButton("panright","east-mini.png",g.add(f,0),e);this._addButton("pandown","south-mini.png",h.add(0,e.h*2),e);this._addButton("zoomin","zoom-plus-mini.png",h.add(0,e.h*3+5),e);h=this._addZoomBar(h.add(0,e.h*4+5));this._addButton("zoomout","zoom-minus-mini.png",h,e);return this.div},_addZoomBar:function(l){var h=OpenLayers.Util.getImagesLocation();var m=this.id+"_"+this.map.id;var k=(Festmap.Constants.maxZoomLevel)-1-this.map.getZoom();var j=OpenLayers.Util.createAlphaImageDiv(m,l.add(-1,k*this.zoomStopHeight),new OpenLayers.Size(20,9),h+"slider.png","absolute");this.slider=j;this.sliderEvents=new OpenLayers.Events(this,j,null,true,{includeXY:true});this.sliderEvents.on({mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp,dblclick:this.doubleClick,click:this.doubleClick});var i=new OpenLayers.Size();i.h=this.zoomStopHeight*(Festmap.Constants.maxZoomLevel-Festmap.Constants.minZoomLevel);i.w=this.zoomStopWidth;var n=null;if(OpenLayers.Util.alphaHack()){var m=this.id+"_"+this.map.id;n=OpenLayers.Util.createAlphaImageDiv(m,l,new OpenLayers.Size(i.w,this.zoomStopHeight),h+"zoombar.png","absolute",null,"crop");n.style.height=i.h+"px"}else{n=OpenLayers.Util.createDiv("OpenLayers_Control_PanZoomBar_Zoombar"+this.map.id,l,i,h+"zoombar.png")}this.zoombarDiv=n;this.divEvents=new OpenLayers.Events(this,n,null,true,{includeXY:true});this.divEvents.on({mousedown:this.divClick,mousemove:this.passEventToSlider,dblclick:this.doubleClick,click:this.doubleClick});this.div.appendChild(n);this.startTop=parseInt(n.style.top);this.div.appendChild(j);this.map.events.register("zoomend",this,this.moveZoomBar);l=l.add(0,this.zoomStopHeight*(Festmap.Constants.maxZoomLevel-Festmap.Constants.minZoomLevel));return l},CLASS_NAME:"Festmap.PanZoomBar"});Festmap.PermalinkHash=OpenLayers.Class(OpenLayers.Control.Permalink,{draw:function(){OpenLayers.Control.Permalink.prototype.draw.apply(this,arguments);$(this.element).hide();var c=$(this.map.div);c.bind("mousedown",d);function d(){Festmap.PermalinkHash.hashEnabled=true;c.unbind("mousedown",d)}},updateLink:function(d){if(!Festmap.PermalinkHash.hashEnabled||(d&&d.type!="moveend")){return}var c=this.createParams();if(parseFloat(c.lon)&&parseFloat(c.lat)&&parseFloat(c.zoom)){Festmap.Util.updateLocationHash({lon:c.lon,lat:c.lat,zoom:c.zoom})}},CLASS_NAME:"Festmap.PermalinkHash"});Festmap.PermalinkHash.hashEnabled=false;Festmap.Util.updateLocationHash=function(g){var f=Festmap.Util.getHashParameters();for(var h in g){f[h]=g[h]}var e=OpenLayers.Util.getParameterString(f);if(e&&document.location.hash!="#"+e){document.location.hash=e}};Festmap.Util.getHashParameters=function(){return OpenLayers.Util.getParameters("?"+document.location.hash.substring(1))};Festmap.Navigation=OpenLayers.Class(OpenLayers.Control.Navigation,{wheelDown:function(d){var c=this.map.getZoom()-1;if(c>=Festmap.Constants.minZoomLevel){this.wheelChange(d,-1)}},draw:function(){if(this.handleRightClicks){this.map.viewPortDiv.oncontextmenu=function(){return false}}var d={dblclick:this.defaultDblClick,dblrightclick:this.defaultDblRightClick,click:this.festMouseDown};var f={"double":true,stopDouble:true};this.handlers.click=new OpenLayers.Handler.Click(this,d,f);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{up:this.wheelUp,down:this.wheelDown});this.activate();this.disableZoomWheel();var e=this;$(this.map.div).bind("mousedown",function(){e.festMouseDown()});$(this.map.div).bind("mouseleave",function(){e.festMouseLeave()});this.mouseIsOut=true},festMouseDown:function(){if(!this.zoomWheelEnabled){this.enableZoomWheel()}},festMouseLeave:function(){if(this.zoomWheelEnabled){this.disableZoomWheel()}},CLASS_NAME:"Festmap.Navigation"});Festmap.Map=OpenLayers.Class(OpenLayers.Map,{initialize:function(e,f){var g=[new OpenLayers.Control.ArgParser(),new OpenLayers.Control.Attribution(),new OpenLayers.Control.ScaleLine({bottomOutUnits:"km",bottomInUnits:"m"}),new Festmap.Navigation(e),new Festmap.PanZoomBar()];if(f.permalinkHash){g.push(new Festmap.PermalinkHash())}f=OpenLayers.Util.extend(f,{projection:new OpenLayers.Projection("EPSG:900913"),displayProjection:new OpenLayers.Projection("EPSG:4326"),units:"m",maxExtent:new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),maxResolution:156543.0339,numZoomLevels:Festmap.Constants.maxZoomLevel,controls:g});var h=[e,f];OpenLayers.Map.prototype.initialize.apply(this,h);this.mapOptions=f},jumpTo:function(d,c){this.setCenter(OpenLayers.Layer.SphericalMercator.forwardMercator(d.lon,d.lat),c);return false},zoomTo:function(b){if(this.isValidZoomLevel(b)){if(b<this.minZoomLevel){b=this.minZoomLevel}this.setCenter(null,b)}},createVectorLayer:function(){var c;var d="vector";c=new OpenLayers.Layer.Vector(d);global_map.addLayers([c]);global_layers[d]=c;c.setVisibility(true);c.setZIndex(300);return c},getVectorLayer:function(){var c;var d="vector";if(typeof global_layers[d]!="undefined"){c=global_layers[d]}if(!c){c=this.createVectorLayer()}return c},getStreetFeatures:function(i){var j=[];var f=this.getVectorLayer();for(var g in f.features){var h=f.features[g];if(h.streetId==i){j.push(h)}}return j},addStreetFeatures:function(v,r){var q={strokeColor:"#2260C2",strokeOpacity:0.4,strokeWidth:6};var w=this.getVectorLayer();var C=[];var A=null;var x=r.split(";");for(var t=0;t<x.length;t++){if(!x[t]){continue}var s=x[t].split(")");var i=[];for(var z=0;z<s.length;z++){s[z]=s[z].replace(/,?\(/,"");s[z]=s[z].replace(/[ ]+/,"");var u=s[z].split(",");if(!parseFloat(u[0])||!parseFloat(u[1])){continue}var y=new OpenLayers.LonLat(parseFloat(u[0]),parseFloat(u[1]));if(!A){A=y}var B=OpenLayers.Layer.SphericalMercator.forwardMercator(y.lon,y.lat);i.push(new OpenLayers.Geometry.Point(B.lon,B.lat))}var D=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(i),null,q);D.streetId=v;w.addFeatures([D]);C.push(D)}return C},centerToStreetFeatures:function(j){this.zoomTo(16);var g=this.getStreetFeatures(j);if(g.length==0){return}var k=false;for(var h in g){var i=g[h];if(i.onScreen()){k=true;break}}if(!k){i=g[0];var l=i.geometry.bounds;global_map.zoomToExtent(l)}},centerToMarker:function(e,f){if(typeof f=="number"){this.zoomTo(f)}var d=document.getElementById(e);if(d!=null&&!d.onScreen()){this.setCenter(d.lonlat)}},CLASS_NAME:"Festmap.Map"});Festmap.Util.createDiv=function(d,c){};Festmap.Marker=function(ac,aF,aA,aN,aw,aG){var ae;var ay;var ag="collapsed";var aJ=false;var aD=100;var az;var av;var ad;var Z;var U=ac;var al={animation:true,expandable:true,sticky:false};var ai,au,aO,ao,aq,an,aI,ap,aM;var ax,ah,aE;Festmap.Marker.prototype={collapse:function(a){aj(a)},expand:function(){aH()},CLASSNAME:"Festmap.Marker"};return at(aF,aA,aN,aw,aG);function at(b,a,d,e,c){ae=document.createElement("div");if(typeof e!="string"||e==""){e="marker-"+e+"-"+Math.floor(Math.random()*1000000)}ae.id=e;ay=$(ae);X();$.extend(ae,Festmap.Marker.prototype);ab(b,a,d);if(c){if(c.expandable===false){al.expandable=false}if(c.sticky===true){al.sticky=true}if(c.animation===false){al.animation=false}}if(browser.isIE6down){al.animation=false}return ae}function X(){$.extend(ae,OpenLayers.Marker.prototype);ae.lonlat=U;var a=new Festmap.Icon();a.imageDiv=ae;ae.icon=a;this.events=new OpenLayers.Events(ae,ae.icon.imageDiv,null)}function ab(b,f,h){if(!f){f="1"}if(!h){h="colored"}var e="/images/markers/";var a="url("+e+"marker-"+f+".png)";var d="url("+e+"marker-"+f+"-center.png)";var c="url("+e+"marker-"+f+"-hor.png)";var g="url("+e+"marker-"+f+"-vert.png)";if(browser.isIE6down){var a="url("+e+"ie/marker-"+f+".gif)";var c="url("+e+"ie/marker-"+f+"-hor.gif)";var g="url("+e+"ie/marker-"+f+"-vert.gif)"}aE=document.createElement("div");aE.className="visible-content";ax=document.createElement("div");ax.className="content";ax.innerHTML=b;ah=$(ax);aE.appendChild(ax);var i=document.createElement("div");i.className="close ";i.style.backgroundImage=a;aE.appendChild(i);az=document.createElement("div");az.className="marker "+h;ae.appendChild(az);ai=document.createElement("div");ai.className="tl";az.appendChild(ai);ai.style.backgroundImage=a;au=document.createElement("div");au.className="t";az.appendChild(au);au.style.backgroundImage=g;aO=document.createElement("div");aO.className="tr";az.appendChild(aO);aO.style.backgroundImage=a;ao=document.createElement("div");ao.className="l";az.appendChild(ao);ao.style.backgroundImage=c;aq=document.createElement("div");aq.className="r";az.appendChild(aq);aq.style.backgroundImage=c;an=document.createElement("div");an.className="bl";az.appendChild(an);an.style.backgroundImage=a;aI=document.createElement("div");aI.className="b";az.appendChild(aI);aI.style.backgroundImage=g;ap=document.createElement("div");ap.className="br";az.appendChild(ap);ap.style.backgroundImage=a;aM=document.createElement("div");aM.className="c";az.appendChild(aM);aM.style.backgroundImage=d;aM.appendChild(aE);av=$(az);aE.onmouseover=ak;aE.onclick=ak;aE.onmouseout=ar;if(browser.isIE6down){ai.onmouseover=ak;ai.onclick=ak}i.onclick=aj;ag="collapsed";aJ=false}function ak(){aJ=true;var a=100;if(ag=="collapsed"){setTimeout(function(){am()},a)}}function ar(){aJ=false;if(al.sticky===true){return}var a=100;if(ag=="expanded_right"){setTimeout(function(){am()},a)}}function am(){switch(ag){case"animating":break;case"expanded_up":break;case"expanded_right":if(aJ===false){aj()}break;case"collapsed":if(aJ===true){aH()}break}}function aH(){aL();if(typeof ad=="undefined"){ad=ae.parentNode;Z=$(ad)}aJ=true;if(ag!="collapsed"||ag=="animating"){return}aa();ag="animating";av.addClass("animating");var a=ah.width();if(al.animation){av.animate({width:a+40},aD,Y)}else{az.style.width=(a+40)+"px";setTimeout(Y,aD)}aK()}function Y(){av.removeClass("animating").addClass("expanded-right");setTimeout(function(){ag="expanded_right";ah.bind("click",aC)},100);Z.addClass("selected")}function aC(){if(al.expandable===false){return}if(ag!="expanded_right"||ag=="animating"){return}ag="animating";av.removeClass("expanded-right").addClass("animating");var a=ah.height();if(al.animation){av.animate({height:a+Festmap.Constants.markerHeight},aD,af)}else{az.style.height=(a+Festmap.Constants.markerHeight)+"px";setTimeout(af,aD)}aK()}function af(){av.removeClass("animating").addClass("expanded-up");setTimeout(function(){ag="expanded_up";aK();ah.unbind("click")},1000)}function aj(a){switch(ag){case"animating":if(!a){return}break;case"collapsed":return;case"expanded_up":case"expanded_right":break}ag="animating";if(al.animation&&!(a===true)){av.removeClass("expanded-up").removeClass("expanded-right").addClass("animating");av.animate({height:Festmap.Constants.markerHeight},aD,function(){av.animate({width:Festmap.Constants.markerWidth},aD,V)})}else{av.removeClass("expanded-up").removeClass("expanded-right").addClass("animating");az.style.height=Festmap.Constants.markerHeight+"px";setTimeout(function(){az.style.width=Festmap.Constants.markerWidth+"px";setTimeout(V,aD)},aD)}}function aa(){if(al.sticky===true){return}if(typeof global_map._expanded_markers!="object"){return}for(var b in global_map._expanded_markers){var a=global_map._expanded_markers[b];if(typeof a=="object"&&ae.id!=a.id){a.collapse(true)}}}function V(){aJ=false;ag="collapsed";Z.removeClass("selected");av.removeClass("animating").removeClass("expanded-up").removeClass("expanded-right");aK();W()}function aK(){if(browser.isIE6down){aB(au,"t");aB(ao,"l");aB(aM,"c");aB(aq,"r");aB(aI,"b");aB(aE,"visible-content")}}function aB(b,a){var c=null;var d=null;switch(a){case"t":c=b.parentNode.scrollWidth-21;break;case"l":d=b.parentNode.scrollHeight-28;break;case"c":d=b.parentNode.scrollHeight-28;c=b.parentNode.scrollWidth-11;break;case"r":d=b.parentNode.scrollHeight-28;break;case"b":c=b.parentNode.scrollWidth-22;break;case"visible-content":c=b.parentNode.scrollWidth+2;d=b.parentNode.scrollHeight+18;break}if(d!==null){d=(d>0)?d:"0";b.style.height=d+"px"}if(c!==null){c=(c>0)?c:"0";b.style.width=c+"px"}}function W(){if(typeof global_map._expanded_markers!="object"||typeof global_map._expanded_markers.length=="undefined"){global_map._expanded_markers=new Array()}global_map._expanded_markers[ae.id+""]=undefined}function aL(){if(typeof global_map._expanded_markers!="object"||typeof global_map._expanded_markers.length=="undefined"){global_map._expanded_markers=new Array()}global_map._expanded_markers[ae.id+""]=ae}};Festmap.Icon=OpenLayers.Class(OpenLayers.Icon,{initialize:function(){this.url="";this.size=new OpenLayers.Size(Festmap.Constants.markerWidth,Festmap.Constants.markerHeight);this.offset=new OpenLayers.Pixel(0,-(this.size.h+Festmap.Constants.offsetH));this.calculateOffset=function(b){return new OpenLayers.Pixel(0,-(b.h+Festmap.Constants.offsetH))}}});Festmap.Mapnik=OpenLayers.Class(OpenLayers.Layer.OSM,{initialize:function(e,f){var g=["http://a.tile.openstreetmap.org/${z}/${x}/${y}.png","http://b.tile.openstreetmap.org/${z}/${x}/${y}.png","http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"];f=OpenLayers.Util.extend({numZoomLevels:Festmap.Constants.maxZoomLevel,maxResolution:Festmap.Constants.maxResolution,minZoomLevel:Festmap.Constants.minZoomLevel,maxZoomLevel:Festmap.Constants.maxZoomLevel,units:"m",projection:new OpenLayers.Projection("EPSG:900913"),displayProjection:new OpenLayers.Projection("EPSG:4326")},f);var h=[e,g,f];OpenLayers.Layer.OSM.prototype.initialize.apply(this,h)},name:"Festmap",CLASS_NAME:"Festmap.Mapnik"});
