pointoo.PoiManager=function(){var m=null;var g=null;var n=null;var i=[];var o={};var p={};var w={};var j={};var q=null;var s={};var x={};var h={};var y={};var z=false;var A=0;var B=false;var H=function(a){q=new GLatLngBounds();y={maxZoom:12,styles:[{url:pointoo.themePrefix+"/images/icons/supertags/btn_x_m.png",height:30,width:34,opt_textColor:'transparent'}]};i=a.supertags;$.each(i,function(){h[this]=false});$.each(a.toggled,function(){h[this]=true})};this.setMap=function(a){if(m)throw("map is already set!");m=a;g=m.getMap();n=new MarkerClusterer(g,[],y);GEvent.addListener(g,'zoomend',C);GEvent.addListener(g,'moveend',C);GEvent.addListener(g,'dragend',t)};var I=function(a){u(false);D.addPois(a.pois,a.supertag)};var C=function(){A++;if(A>2)t()};var u=function(a){B=a};var t=function(){if(B)return false;u(true);var b=false;$.each(i,function(){var a=this;var c=g.getBounds();if(!j[a]||!j[a].containsBounds(c)){b=true;$.post('/pois/more_city_pois.js',{'supertag_id':this,'geo_sw':c.getSouthWest().toUrlValue(),'geo_ne':c.getNorthEast().toUrlValue()},I,'json')}else{E(this,c)}});u(b)};this.setToggle=function(a,c){x[c]=$(a);GEvent.addDomListener(a,'click',function(){D.toggleSupertag(c)})};this.toggleSupertag=function(a){var c=arguments[1]||false;var b=x[a];var d=b.attr('src');var e=null;if(h[a]&&(!c||c=='off')){h[a]=false;var f=[];$.each(i,function(){if(this!=a)f.push(this)});$.each(p[a]||[],function(){n.removeMarker(this)});i=f;e=d.replace(/\/supertags\/btn_/,'/supertags/da/btn_');$('#top-'+a).slideUp()}else if(!h[a]&&(!c||c=='on')){h[a]=true;i.push(a);n.addMarkers(p[a]||[]);e=d.replace(/\/da\/btn_/,'/btn_');if(!t())v(a)}if(e)b.attr('src',e)};var J=function(a,c){if(a.length==0){v(c);return}var b=new GLatLngBounds();$.each(a,function(){b.extend(this.latlng)});q.extend(b.getSouthWest());q.extend(b.getNorthEast());var d;if(!z){d=g.getBoundsZoomLevel(q);if(d>13)d=13;g.setCenter(b.getCenter(),d);z=true}var e=c;if(j[e]){j[e].extend(b.getSouthWest());j[e].extend(b.getNorthEast())}else{j[e]=b}E(c,b)};var E=function(a,c){var b=o[a]||[];var d=[];var e=s[a]||[];for(var f=0;f<b.length;f++){var l=b[f];if(c.containsLatLng(l.latlng)){d.push(l);if(d.length==3)break}}var k=d.length;if(k<3)for(f=0;f<(3-k);f++)if(b[f]&&$.inArray(b[f],d)==-1)d.push(b[f]);if(d.length!=e.length||$.map(e,function(){return this.id}).sort().join(',')!=$.map(d,function(){return this.id}).sort().join(',')){$.each(e,function(){F(this,false)});$.each(d,function(){F(this,true)})}s[a]=d;K(a)};var F=function(a,c){if(!a)return;var b=w[a.id];if(!b)return;try{var d=b.getIcon().image;d=c?d.replace(/map\/pin_/,'map/hl/pin_'):d.replace(/map\/hl\/pin_/,'map/pin_');b.setImage(d)}catch(err){}};var K=function(a){for(var c=0;c<3;c++){var b=$('#top-'+a+' .top-poi:eq('+c+')');var d=s[a][c];if(d){$('h4 a',b).html(d.getName());$('a',b).attr('href',d.getUrl());$('img',b).attr('src',d.thumb);$('.info-text',b).html(L(d));b.show()}else{b.hide()}}v(a)};var L=function(a){var c="";var b=a.getDescription();if(b)c+='<p class="desc">'+b+"</p>";c+='<p class="address">'+a.getAddress()+'</p>';return c};var v=function(a){if(h[a]&&o[a].length>0&&$('#top-'+a+':hidden').length>0){$('#top-'+a).slideDown()}};var M=function(a,c){return c.poi_rank-a.poi_rank};this.addPois=function(a,c){var b=o[c]||[];var d=[];var e=null;var f=a.length,l=b.length;for(var k=0;k<f;k++){e=a[k];for(var r=0;r<l;r++)if(e.id==b[r].id)break;if(r==l)d.push(e)}var G=N(d);p[c]=$.merge(p[c]||[],G);n.addMarkers(G);o[c]=$.merge(b,d).sort(M);J(d,c)};var N=function(a){var c=[];for(var b=0;b<a.length;b++){var d=m.createMarker(a[b],true,0);c.push(d);w[a[b].id]=d}return c};var D=this;H(arguments[0])};
