var LDMapElementCtl=function(mm){this.locInfo=new LDMapElementCtl.LocInfo(mm);this.tools=new LDMapElementCtl.Tools(mm);};LDMapElementCtl.prototype.destroy=function(){this.tools.destroy();this.locInfo.destroy();};LDMapElementCtl.LocInfo=function(mm){this.mm=mm,this.reqState=0;this.locAddress="";this.mEvents=[];this.init();};LDMapElementCtl.LocInfo.prototype=$.extend({},LDMapBase.prototype,{config:{api:"/api/geo/g2a"},domEl:{bread:$("#breadCrumbs")},init:function(){var self=this;this.updateInfo();this.mEvents.push(MEvent.addListener(this.mm,"moveend",function(){self.updateInfo();}));},updateInfo:function(){var self=this;if(this.reqState)return;this.reqState=1;var reqUrl=[this.getUrl(this.config.api),this.getCoordParams({center:1}).join("&")].join("?");$.getJSON(reqUrl,function(data){var entry=data.entry;var el=self.domEl.bread;if(entry&&/^\d+$/.test(entry.pref_id)){el.html(['<a href="/">トップ</a>',['<a href="/pref/',entry.pref_id,'.html">',entry.pref,'</a>'].join(""),[entry.city,entry.town,entry.block].join("")].join("&nbsp;&gt;&nbsp;"));document.title=[[entry.pref,entry.city,entry.town,"周辺の地図"].join(""),"livedoor 地図情報"].join(" - ");}else{el.html(['<a href="/">トップ</a>','不明な場所'].join("&nbsp;&gt;&nbsp;"));document.title=["不明な場所の地図","livedoor 地図情報"].join(" - ");}self.reqState=0;});},getLocAddress:function(lng,lat,callback){var reqUrl=[this.getUrl(this.config.api),["lng="+lng,"lat="+lat].join("&")].join("?");$.getJSON(reqUrl,function(data){var entry=data.entry;callback(!entry?"":[entry.pref,entry.city,entry.town,entry.block].join(""));});},destroy:function(){var len=this.mEvents.length;for(var i=0;i<len;i++){MEvent.removeListener(this.mEvents.pop());}}});LDMapElementCtl.Tools=function(mm){this.mm=mm;this.init();};LDMapElementCtl.Tools.prototype=$.extend({},LDMapBase.prototype,{domEl:{triggers:$("#mapTools > li")},init:function(){var self=this;var triggers=this.domEl.triggers;var interval=100;triggers.each(function(i){var el=$(this);var txt=el.html();setTimeout(makeItClickable,interval);interval+=100;function makeItClickable(){el.html("");el.append($(document.createElement("a")).attr("href","javascript:void(0);").html(txt));el.click(function(){self.toggle(this);});}});var mm=this.mm;this.myspot=new LDMapElementCtl.Tools.Myspot(mm,self);this.link=new LDMapElementCtl.Tools.Link(mm,self);this.print=new LDMapElementCtl.Tools.Print(mm,self);},toggle:function(dom){var self=this;var el=$(dom);var type=el.attr("class");var selType=self.selected?self.selected.attr("class"):null;if(selType==type){if(self[selType])self[selType].deselect();}else if(self[type]){if(selType&&self[selType])self[selType].deselect();self[type].select(el);}},isSelected:function(el){return this.selected&&(this.selected.attr("class")==el.attr("class"))?true:false;},doSelect:function(el){el.css("font-weight","bold");this.selected=el;},doDeselect:function(){this.selected.css("font-weight","normal");this.selected=null;},destroy:function(){this.print.destroy();this.link.destroy();this.myspot.destroy();this.domEl.triggers.each(function(i){$(this).unbind();$(this).empty();});}});LDMapElementCtl.Tools.Base=function(){};LDMapElementCtl.Tools.Base.prototype=$.extend({},LDMapBase.prototype,{baseUrl:function(){return this.getUrl(window.location.pathname);},select:function(el){this.parent.doSelect(el);this.show();},deselect:function(){this.parent.doDeselect();this.hide();},show:function(){},hide:function(){}});LDMapElementCtl.Tools.Myspot=function(mm,parent){this.mm=mm;this.parent=parent;this.init();};LDMapElementCtl.Tools.Myspot.prototype=$.extend({},LDMapElementCtl.Tools.Base.prototype,{domEl:{addLink:$("#toolMyspotLink"),closeLink:$("#toolMyspotClose"),pane:$("#toolItems > .toolMyspot")},init:function(){var self=this;var domEl=this.domEl;domEl.addLink.bind("click",function(){var url=[self.getUrl("/member/myspot/add/"),self.getCoordParams({center:1}).join("&")].join("?");$(this).attr("href",url);});domEl.closeLink.bind("click",function(){self.hide();self.parent.doDeselect();});},show:function(){this.domEl.pane.show();},hide:function(){this.domEl.pane.hide();},destroy:function(){this.domEl.addLink.unbind();this.domEl.closeLink.unbind();}});LDMapElementCtl.Tools.Link=function(mm,parent){this.mm=mm;this.parent=parent;this.mEvents=[];this.init();};LDMapElementCtl.Tools.Link.prototype=$.extend({},LDMapElementCtl.Tools.Base.prototype,{domEl:{pane:$("#toolItems > .toolLink"),mapUrl:$("#toolLinkMapUrl"),tbUrl:$("#toolLinkTBUrl"),closeLink:$("#toolLinkClose")},init:function(){var self=this;var domEl=this.domEl;domEl.closeLink.bind("click",function(){self.hide();self.parent.doDeselect();});domEl.mapUrl.bind("click",function(){this.select();});domEl.tbUrl.bind("click",function(){this.select();});},updateUrl:function(){var domEl=this.domEl;var params=this.getCoordParams({center:1,zoom:1});var mapUrl=[this.baseUrl(),params.join("&")].join("?");domEl.mapUrl.val(mapUrl);var cCenter=this.mm.getCenterLatLng();var tbUrl=[['http://',window.location.host,"/map/tb"].join(""),["lng",cCenter.x,"lat",cCenter.y].join("")].join("/");domEl.tbUrl.val(tbUrl);},show:function(){var self=this;var mm=this.mm;function updateUrl(){self.updateUrl();}this.mEvents.push(MEvent.addListener(mm,"moveend",updateUrl));this.mEvents.push(MEvent.addListener(mm,"zoom",updateUrl));this.updateUrl();this.domEl.pane.show();},hide:function(){this.domEl.pane.hide();while(this.mEvents.length)MEvent.removeListener(this.mEvents.pop());},destroy:function(){var domEl=this.domEl;domEl.closeLink.unbind();domEl.mapUrl.unbind();domEl.tbUrl.unbind();while(this.mEvents.length)MEvent.removeListener(this.mEvents.pop());}});LDMapElementCtl.Tools.Print=function(mm,parent){this.mm=mm;};LDMapElementCtl.Tools.Print.prototype=$.extend({},LDMapElementCtl.Tools.Base.prototype,{select:function(el){this.show();},deselect:function(){},show:function(){var self=this;var mapUrl=[self.getUrl("/map/"),[self.getCoordParams({center:1,zoom:1}).join("&"),"view=static"].join("&")].join("?");window.open(mapUrl);},destroy:function(){}});