if(typeof(MBL)=="undefined"){MBL={}}MBL.Mapper=function(f,b,c,d,a,e){this.window=f;this.centLat=b;this.centLon=c;this.width=d;this.height=a;this.mapSize=e;this.clickable=false;this.siteDomain=null;this.editable=false;this.zoom=11;this.fullPopup=false;this.smallPopup=false;this.standalone=false;this.frame=null;this.gmap=null;this.data=null;this.pendData=null};MBL.Mapper.prototype.getData=function(){return this.data};MBL.Mapper.prototype.getCentLat=function(){return this.centLat};MBL.Mapper.prototype.getCentLon=function(){return this.centLon};MBL.Mapper.prototype.getZoom=function(){return this.zoom};MBL.Mapper.prototype.getEditable=function(){return this.editable};MBL.Mapper.prototype.getFullPopup=function(){return this.fullPopup};MBL.Mapper.prototype.getSmallPopup=function(){return this.smallPopup};MBL.Mapper.prototype.getClickable=function(){return this.clickable};MBL.Mapper.prototype.getSiteDomain=function(){return this.siteDomain};MBL.Mapper.prototype.getGMap=function(){return this.gmap};MBL.Mapper.prototype.setData=function(a){this.data=a};MBL.Mapper.prototype.setZoom=function(a){this.zoom=a};MBL.Mapper.prototype.setEditable=function(a){this.editable=a};MBL.Mapper.prototype.setFullPopup=function(a){this.fullPopup=a};MBL.Mapper.prototype.setSmallPopup=function(a){this.smallPopup=a};MBL.Mapper.prototype.setClickable=function(a){this.clickable=a};MBL.Mapper.prototype.setSiteDomain=function(a){this.siteDomain=a};MBL.Mapper.prototype.setStandalone=function(a){this.standalone=a};MBL.Mapper.prototype.insertMap=function(a){var b='<iframe name="mapFrame" frameborder="0" scrolling="no" id="mapFrame" style="width: 100%;'+(this.width>0?"width: expression('"+this.width+"px');":"")+"height: "+this.height+'px" src="http://www.'+this.siteDomain+"/home/map_frame?lat="+this.centLat+"&lon="+this.centLon+"&zoom=11"+(this.width>0?"&width="+this.width:"")+"&height="+this.height;if(this.mapSize==0){b+="&smallMap=1"}else{if(this.mapSize==1){b+="&medMap=1"}}if(this.standalone){b+="&standalone=1"}b+='"></iframe>';a.innerHTML=b};MBL.Mapper.prototype.setGMap=function(a){this.gmap=a;if(this.pendData){this.plotPoints(this.pendData);this.pendData=null}};MBL.Mapper.prototype.plotPoints=function(a){if(this.gmap){if(a.length<=0){return}if(!this.frame){this.frame=this.window.frames.mapFrame}this.data=a;this.frame.plotWrapper(this)}else{this.pendData=a}};MBL.Mapper.prototype.clearMap=function(){this.map.clearOverlays()};MBL.Mapper.drawMap=function(c){var d=c.getGMap();d.checkResize();var g=c.getData();var i=c.getZoom();var b=c.getSiteDomain();var j=0;if(g.size){j=g.size}if(j>0){var a=MBL.Mapper.getBounds(g);var i=d.getBoundsZoomLevel(a);if(i>16){i=16}i++;d.setCenter(a.getCenter(),i,G_NORMAL_MAP)}else{d.setCenter(new GLatLng(c.getCentLat(),c.getCentLon()),i,G_NORMAL_MAP)}if(j>0){var e=new GIcon();e.shadow="http://img."+b+"/markers/icon_shadow.png";e.iconSize=new GSize(13,18);e.shadowSize=new GSize(22,20);e.iconAnchor=new GPoint(6,20);e.infoWindowAnchor=new GPoint(5,1);e.infoShadowAnchor=new GPoint(11,15);for(var f in g){if(f=="size"){continue}var h=g[f];if(h.length==1){d.addOverlay(MBL.Mapper.makeMarker(h[0],e,c))}else{if(h.length>1){d.addOverlay(MBL.Mapper.makeMarkerMulti(h,e,c))}}}}};MBL.Mapper.getBounds=function(b){var c=new GLatLngBounds();for(var a in b){if(a=="size"){continue}var d=a.split(":");c.extend(new GLatLng(parseFloat(d[0]),parseFloat(d[1])))}return c};MBL.Mapper.makeMarkerMulti=function(j,d,a){var e=new GIcon(d);e.image="http://img."+a.getSiteDomain()+"/markers/small.gif";var c=new GMarker(new GLatLng(j[0].lat,j[0].lon),e);if(a.getSmallPopup()||a.getFullPopup()){var f=new Array;var g=(j.length>4)?4:j.length;for(var b=0;b<g;b++){var h=j[b];var k="";if(a.getFullPopup()){k=MBL.Mapper.getMarkup(h)}else{if(a.getSmallPopup()){k=MBL.Mapper.getSmallMarkup(h)}else{k=h.title}}f.push(new GInfoWindowTab("#"+(b+1),k))}GEvent.addListener(c,"click",function(){c.openInfoWindowTabsHtml(f)})}return c};MBL.Mapper.makeMarker=function(b,e,f){var d=f.getSiteDomain();var c=new GIcon(e);if(b.agency_id&&b.agency_id>0){c.image="http://img."+d+"/markers/"+b.agency_id+".gif"}else{c.image="http://img."+d+"/markers/small.gif"}if(f.getEditable()){var a=new GMarker(new GLatLng(b.lat,b.lon),{icon:c,draggable:true});GEvent.addListener(a,"dragend",function(){MBL.Mapper.reportNewCoords(d,b,a.getPoint())});return a}else{var a=new GMarker(new GLatLng(b.lat,b.lon),c);if(f.getSmallPopup()){GEvent.addListener(a,"click",function(){a.openInfoWindowHtml(MBL.Mapper.getSmallMarkup(b))})}else{if(f.getFullPopup()){GEvent.addListener(a,"click",function(){a.openInfoWindowHtml(MBL.Mapper.getMarkup(b))})}else{if(f.getClickable()){GEvent.addListener(a,"click",function(){top.location.href=b.url})}}}return a}};MBL.Mapper.getSmallMarkup=function(b){var a='<div class="mapSmallPopup">';a+='<h4><a href="'+b.url+'" target="_top">'+b.title+"</a></h4>";a+='<a href="'+b.url+'" target="_top"><img src="'+b.photo+'"/></a>';a+="<p>"+b.occurred_at+"</p>";if(b.agency_id>0){a+="<p><label>Agency: </label><span>"+b.agency+"</span></p>"}a+="</div><!-- end .mapSmallPopup -->";return a};MBL.Mapper.getMarkup=function(b){var a='<div class="mapPopup">';a+='<table cellpadding="4" cellspacing="0" border="0"><tr><td colspan="2">';a+='<h2><a href="'+b.url+'" target="_top">'+b.title+"</a></h2>";a+='</td></tr><tr><td class="mapPopupPhoto">';a+='<div class="photo">';a+='<a href="'+b.url+'" target="_top"><img src="'+b.photo+'"/></a>';a+="</div> <!-- end .photo -->";if(document.domain=="mybikelane.com"){a+='<div class="plate" style="background-image: url(http://img.'+document.domain+"/plates/"+b.state+'.png);">';a+=((b.state!="")?b.state+" ":"")+MBL.Mapper.fixPlate(b.plate);if(b.violations&&b.violations>0){a+='<span class="violationsCount">'+b.violations+" violations</span>"}a+="</div><!-- end .plate -->"}a+="</td><td>";a+="<p>"+b.occurred_at+"</p>";a+="<p>"+b.location+"</p>";if(b.permit_type_id>0){a+="<p><label>Permit type: </label><span>"+b.permit_type+"</span></p>"}if(b.agency_id>0){a+="<p><label>Agency: </label><span>"+b.agency+"</span></p>"}else{if(b.tags&&b.tags!=""){a+="<p><label>Tags: </label><span>"+b.tags+"</span></p>"}}if(b.violation_id>0){a+="<p><label>Violation: </label><span>"+b.violation+"</span></p>"}if(b.sign_id>0){a+="<p><label>Signage: </label><span>"+b.sign+"</span></p>"}var c="comments";if(b.comments==1){c="comment"}a+='<p class="comments">';a+='<a href="'+b.url+'#comments" target="_top">';a+=b.comments+" "+c+"</a></p>";a+="</td></tr></table>";a+="<hr />";a+="</div><!-- end .mapPopup -->";return a};MBL.Mapper.reportNewCoords=function(e,b,d){var a="http://www."+e+"/post/editGeo/"+b.id;var f="lat="+d.lat()+"&lon="+d.lng();var c=new Ajax.Request(a,{method:"get",parameters:f,asynchronous:true})};MBL.Mapper.fixPlate=function(b){if(b=="Not specified"){return b}var e=new Array();var a=true;for(var d=0;d<b.length;d++){if(a){if((b.charAt(d).match(/\d/)&&b.charAt(d+1).match(/\D/))||(b.charAt(d).match(/\D/)&&b.charAt(d+1).match(/\d/))){e.push(b.charAt(d));e.push(" ");a=false}else{e.push(b.charAt(d))}}else{e.push(b.charAt(d))}}var c=e.join("");return c.toUpperCase()};