var RoadWorksMap=new Class({Implements:[Options,Events],options:{mapWrapper:null,mapContainer:null,infoContainer:null,dropDown:null,indicator:null,onLoaded:$empty,pointerIcons:null,defaultCenterLat:51.126416,defaultCenterLng:12.500584,defaultZoom:10},initialize:function(B,A){this.setOptions(A);this.form=B;if(!this.checkBase()&&GBrowserIsCompatible()){return false}this.setup()},checkBase:function(){if(!this.form||this.form.get("action").clean()==""){alert("Required formular action is null or the formular can not be found");return false}if(!this.options.mapWrapper){alert("Required option 'mapWrapper' is null or the relevant element can not be found");return false}if(!this.options.mapContainer){alert("Required option 'mapContainer' is null or the relevant element can not be found");return false}if(!this.options.infoContainer){alert("Required option 'infoContainer' is null or the relevant element can not be found");return false}if(!this.options.dropDown){alert("Required option 'dropDown' is null or the relevant element can not be found");return false}return true},setup:function(){var A=this;this.pointerIcons={};this.markerData=new Array();this.googleMap=new GMap2(this.options.mapContainer);this.googleMap.setCenter(new GLatLng(A.options.defaultCenterLat,A.options.defaultCenterLng),A.options.defaultZoom);window.addEvent("unload",function(){GUnload()});this.options.pointerIcons.each(function(B){A.pointerIcons[B.type]=new GIcon();A.pointerIcons[B.type].image=B.icon;A.pointerIcons[B.type].iconSize=new GSize(B.width,B.height);A.pointerIcons[B.type].iconAnchor=new GPoint(B.width/2,B.height/2);A.pointerIcons[B.type].infoWindowAnchor=new GPoint(B.width/2,B.height)});this.url=this.form.getProperty("action").clean();this.form.addEvent("submit",function(B){B.stop()});this.options.dropDown.addEvents({"change":this.load.bind(this),"reset":function(){this.selectedIndex=0}});this.request_flag=false;this.load()},load:function(){if(!this.request_flag){this.setGuiStatus(false);this.id=this.options.dropDown.getSelectedValue();if(this.id=="-1"){this.options.dropDown.fireEvent("reset")}this.request_flag=true;var B=this;var A=new Request.JSON({url:B.url+"&id="+B.id,secure:false,onFailure:function(){B.loadFailure()},onComplete:function(C){B.updateGui(C.result)}}).send()}},updateGui:function(F){this.request_flag=false;this.options.mapWrapper.removeClass("rw_map-wrapper-failure");this.googleMap.clearOverlays();this.markerData=new Array();this.options.infoContainer.setStyle("display","none").innerHTML="";var E=this;F.markers.each(function(H,G){E.markerData[G]={};E.markerData[G].id=H.id;E.markerData[G].point=new GLatLng(H.lat,H.lng);E.markerData[G].marker=new GMarker(E.markerData[G].point,E.pointerIcons[H.symbol]);E.googleMap.addOverlay(E.markerData[G].marker)});var A=new GLatLng(F.bounds.lat_sw,F.bounds.lng_sw);var D=new GLatLng(F.bounds.lat_ne,F.bounds.lng_ne);var C=new GLatLngBounds(A,D);var B=E.googleMap.getBoundsZoomLevel(C);if(B>15){B=15}this.googleMap.setCenter(new GLatLng(F.center.lat,F.center.lng),B);if(F.desc.clean()!=""){this.options.infoContainer.setStyle("display","block").innerHTML=F.desc.clean()}if(this.id<=0){GEvent.addListener(E.googleMap,"click",function(H,G){if(H){var J=H.getPoint();var I=0;$each(E.markerData,function(K,L){if(K["point"]==J){I=E.markerData[L].id}});if(I>0){E._markerIsClicked(I)}}})}this.setGuiStatus(true);this.fireEvent("onLoaded")},setGuiStatus:function(A){if(A){this.options.dropDown.setStyle("visibility","visible");this.options.indicator.setStyles("display","none");this._enableMap()}else{this.options.dropDown.setStyle("visibility","hidden");this.options.indicator.setStyles("display","block");this._disableMap()}},loadFailure:function(){this.setGuiStatus(true);this.options.mapWrapper.addClass("rw_map-wrapper-failure")},_markerIsClicked:function(A){this.options.dropDown.getElements("option").each(function(C,B){C.set("selected",(C.value==A)?"selected":"")});this.options.dropDown.fireEvent("change")},_enableMap:function(){this.googleMap.enableDragging();this.googleMap.enableDoubleClickZoom();this.googleMap.enableContinuousZoom();this.googleMap.enableScrollWheelZoom();this.googleMap.addControl(new GSmallMapControl())},_disableMap:function(){this.googleMap.disableDragging();this.googleMap.disableDoubleClickZoom();this.googleMap.disableContinuousZoom();this.googleMap.disableScrollWheelZoom();this.googleMap.removeControl()}})