Array.prototype.clone=function(){var aNew=[];for(var i=0;i<this.length;i++)aNew[i]=this[i];return aNew;};var LDMapPortal=function(mm,lng,lat,z){this.mm=mm,this.lng=lng,this.lat=lat,this.z=z;this.wheelEvent=null;this.mEvents=[];this.init();};LDMapPortal.prototype=$.extend({},LDMapBase.prototype,{config:{sizeProps:{aside:$("#aside").width(),left:parseInt($("body").css("padding-left").replace("px","")),right:parseInt($("body").css("padding-right").replace("px",""))},mapHeightProps:{defaultRatio:0.75,minSize:550},cMarker:{image:"/img/map/icons/point_orange.png",width:30,height:36,aLng:10,aLat:28}},domEl:{map:$("#map"),options:{wheelZoom:$("#enableWheelZoom")},logins:[$("#ldLoginHeader")]},mapEvents:{},curSize:{w:0,h:0},init:function(){var self=this;var mm=this.mm;var cPoint=new MPoint(this.lng,this.lat);this.fitToWindow();mm.centerAndZoom(cPoint,this.z);mm.autoScroll=true;var slider=new MSliderMapionControl();mm.addControl(slider);this.mEvents.push(MEvent.addListener(mm,"moveend",function(){slider.update(mm.getCenterLatLng());}));slider.update(mm.getCenterLatLng());MEvent.clearListeners(mm,"wheel");mm.addControl(new MScaleControl(),new MControlPosition(M_ANCHOR_BOTTOM_RIGHT,"5","5"));if(!/^(?:taxi|route)$/.test(this.getUrlParam("tab")))mm.addOverlay(new MMarker(cPoint,this.genMIcon(this.config.cMarker)));$(window).resize(function(){self.fitToWindow();});this.domEl.options.wheelZoom.click(function(){if($(this).attr("checked")){self.wheelEvent=MEvent.addListener(mm,"wheel",function(direction){if(direction>0)slider.zoomIn();else slider.zoomOut();});}else{if(self.wheelEvent){MEvent.clearListeners(mm,"wheel");self.wheelEvent=null;}}});this.mEvents.push(MEvent.addListener(mm,"click",function(anon,cObj,anon){if(cObj)mm.recenterOrPanToLatLng(new MPoint(cObj.x,cObj.y));}));var loginEl=this.domEl.logins;for(var i=0,il=loginEl.length;i<il;i++)loginEl[i].bind("click",function(){var el=$(this);var c=mm.getCenterLatLng();var zoom=mm.getZoomLevel();var next=[self.getUrl("/map/"),self.getCoordParams({center:1,zoom:1}).join("&")].join("?");el.attr("href",(el.attr("href").replace(/.next=(?:[^&]+)/,".next="+encodeURIComponent(next))));});},fitToWindow:function(){var sizeProps=this.config.sizeProps;var mapHeightProps=this.config.mapHeightProps;var w=$(window);var width=w.width()-(sizeProps.aside+sizeProps.left+sizeProps.right);var height=parseInt(w.height()*mapHeightProps.defaultRatio);height=height<mapHeightProps.minSize?mapHeightProps.minSize:height;if(width!=this.curSize.w||height!=this.curSize.h){this.curSize.w=width;this.curSize.h=height;var mapEl=this.domEl.map;mapEl.width(width);mapEl.height(height);this.mm.refreshMapDivSize();}},createElements:function(){this.elementCtl=new LDMapElementCtl(this.mm);this.routeCtl=new LDMapRouteCtl(this.mm,this.elementCtl.locInfo);this.tabCtl=new LDMapPortal.TabCtl(this.mm,this);this.markerCtl=new LDMapMarkerCtl(this.mm,new LDMapMarkerCtl.Bounds(this.mm));},tabEvent:function(tab){if(/^(?:route|taxi)$/.test(tab)){this.routeCtl.draw(tab);}},destroy:function(){this.markerCtl.destroy();this.tabCtl.destroy();this.routeCtl.destroy();this.elementCtl.destroy();var len=this.mEvents.length;for(var i=0;i<len;i++){MEvent.removeListener(this.mEvents.pop());}var loginEl=this.domEl.logins;for(var i=0;i<loginEl.length;i++){loginEl[i].unbind();}}});LDMapPortal.TabCtl=function(mm,parent){this.mm=mm;this.selected=null;this.parent=parent;this.init();};LDMapPortal.TabCtl.prototype={config:{defaultTab:"route"},domEl:{tabs:$("#moduleTabs > li")},modId:function(name){return["#module",name].join("_");},init:function(){this.hideAllTabs();this.addEvents();this.initTab();},hideAllTabs:function(){var self=this;var tabs=self.domEl.tabs;tabs.each(function(i){var el=$(this);$(self.modId(el.attr("class"))).hide();});},addEvents:function(){var self=this;var tabs=this.domEl.tabs;tabs.each(function(i){$(this).bind("click",function(){self.selectTab($(this).attr("class"));});});},selectTab:function(curTab){if(curTab!=this.selected){this.doTabSelect(curTab);this.selected=curTab;}},doTabSelect:function(key){var self=this;this.parent.tabEvent(key);var tabs=this.domEl.tabs;tabs.each(function(i){var tab=$(this);if(tab.attr("class")!=key){tab.children().removeClass("on");$(self.modId(tab.attr("class"))).hide();}else{tab.children().addClass("on");$(self.modId(key)).show();}});},initTab:function(){var base=new LDMapBase();var selTab=/^(?:route|taxi|bounds)$/.exec(base.getUrlParam("tab"));return selTab?this.doTabSelect(selTab.shift()):this.doTabSelect(this.config.defaultTab);},destroy:function(){this.domEl.tabs.each(function(i){$(this).unbind();});}};