var IMG_SERVER_URL="";var DEFAULT_LOAD_MSG="数据处理中...";function ExMap(){this.DEFAULT_CITY_ZOOM_LEVEL=12;this.mapCon;this.works=false;this.map;this.cover;this.loadingWin;this.markIcon1;this.markIcon2;this.flagLoading=false;this.mapMarkers=new Hash();this.ctxPath="/platform";this.imgPath="/images/map/";this.infoUrl="/common/getEstateDia.do?estateId=";this.markUrl="/estate/getMarkers.do?para=";this.bounds;this.search=false;this.onMapChanged;this.onCreateMaker;this.onRemoveMaker;this.init=function(opts){if(!this.mapCon){this.mapCon=(opts.pan?$(opts.pan):$("mappanel"))}if(this.mapCon&&GBrowserIsCompatible()){this.map=new GMap2(this.mapCon);var point=new GLatLng(opts.lat,opts.lng);var zoom=opts.zoom;if(!zoom){zoom=this.DEFAULT_CITY_ZOOM_LEVEL}this.map.setCenter(point,zoom);this.works=true;this.creatCover();this.creatLoading();this.showLoading(true);if(opts.large){this.map.addControl(new GLargeMapControl3D())}if(opts.onMapChanged){this.onMapChanged=opts.onMapChanged;GEvent.addListener(this.map,"moveend",function(){this.timeoutHandle=window.setTimeout(function(){var func=eval(this.onMapChanged);func()}.bind(this),800)}.bind(this))}GEvent.addListener(this.map,"movestart",function(){window.clearTimeout(this.timeoutHandle);if(Map.search){this.showCover()}else{this.showLoading(true)}}.bind(this));GEvent.addListener(this.map,"zoomend",function(){window.clearTimeout(this.timeoutHandle);if(Map.search){this.showCover()}else{this.showLoading(true)}}.bind(this));if(opts.onCreateMaker){this.onCreateMaker=opts.onCreateMaker}if(opts.onRemoveMaker){this.onRemoveMaker=opts.onRemoveMaker}if(opts.onCleanMaker){this.onCleanMaker=opts.onCleanMaker}if(opts.ctxPath){this.ctxPath=opts.ctxPath}if(opts.imgPath){this.imgPath=opts.imgPath}this.infoUrl=this.ctxPath+this.infoUrl;this.markUrl=this.ctxPath+this.markUrl;if(!this.markIcon1){this.markIcon1=new GIcon();this.markIcon1.image=this.ctxPath+this.imgPath+"icon6.png";this.markIcon1.iconSize=new GSize(24,24);this.markIcon1.iconAnchor=new GPoint(6,32);this.markIcon1.infoWindowAnchor=new GPoint(8,2)}if(!this.markIcon2){this.markIcon2=new GIcon();this.markIcon2.image=this.ctxPath+this.imgPath+"tujian.png";this.markIcon2.iconSize=new GSize(24,28);this.markIcon2.iconAnchor=new GPoint(6,32);this.markIcon2.infoWindowAnchor=new GPoint(8,2)}}else{this.works=false}};this.creatCover=function(){this.cover=new Element("div",{id:"mapCover",styles:{display:"none"}});this.mapCon.appendChild(this.cover);this.resizeCover()};this.resizeCover=function(){this.cover.setStyle("width",(this.mapCon.offsetWidth)+"px");this.cover.setStyle("height",(this.mapCon.offsetHeight)+"px")};this.showCover=function(){this.resizeCover();this.cover.setStyle("display","block")};this.hideCover=function(){window.setTimeout(function(){this.cover.setStyle("display","none")}.bind(this),400)};this.creatLoading=function(){this.loadingWin=new Element("div",{id:"mapLoadingNotice","class":"rad4",styles:{display:"none"}});this.loadingWin.innerHTML=DEFAULT_LOAD_MSG;this.mapCon.appendChild(this.loadingWin);GEvent.addDomListener(this.loadingWin,"click",function(){Map.closeLoading(true)})};this.relocLoading=function(l){var w=12*l-30;if(l>45){w = w-40;}this.loadingWin.setStyle("left",((this.mapCon.offsetWidth-w)/2)+"px");this.loadingWin.setStyle("top","0px")};this.showLoading=function(show,info){this.flagLoading=true;if(this.works&&this.cover&&this.loadingWin){if(info&&info.length>0){this.loadingWin.innerHTML=info;this.relocLoading(info.length)}else{this.loadingWin.innerHTML=DEFAULT_LOAD_MSG;this.relocLoading(DEFAULT_LOAD_MSG.length)}if(show){this.showCover()}this.loadingWin.setStyle("display","block")}};this.closeLoading=function(hide){this.flagLoading=false;if($defined(this.works)&&$defined(this.cover)&&$defined(this.loadingWin)){window.setTimeout(function(){if(hide){this.hideCover()}this.loadingWin.setStyle("display","none")}.bind(this),800)}};this.moveTo=function(center){if(!center.lat||!center.lng){return}var point=new GLatLng(center.lat,center.lng);this.map.panTo(point)};this.setCenter=function(center){if(!center.lat||!center.lng){return}if(!this.works){alert("请初始化地图！");return}var point=new GLatLng(center.lat,center.lng);var zoom=zoom||this.map.getZoom();this.map.setCenter(point,zoom)};this.getBounds=function(){var E=10;var G=this.map.fromContainerPixelToLatLng(new GPoint(E,E/2));var D=this.map.fromContainerPixelToLatLng(new GPoint(this.mapCon.offsetWidth-E/2,this.mapCon.offsetHeight-E/2));return(this.bounds={swlat:D.lat().toFixed(3),nelat:G.lat().toFixed(3),swlng:G.lng().toFixed(3),nelng:D.lng().toFixed(3)})};this.buildMarkers=function(markers){if(markers.length>0){this.checkMarkers(markers);this.addMarkers(markers)}else{this.removeMarkers()}};this.addMarkers=function(markers){markers.each(function(item,index){if(!this.mapMarkers.hasKey(item.id)){var name=item.name;var latlng=new GLatLng(item.lat,item.lng);var markOpt;if(item.commend&&item.commend=="1"){markOpt={icon:this.markIcon2,text:"<div style='font-weight:bold;font-size:12px;padding-top:2px'>"+item.name+"</div><div style='color: #666666;font-size:12px;padding-top:2px'>点击此标注查看更多信息</div>",draggable:false}}else{markOpt={icon:this.markIcon1,text:"<div style='font-weight:bold;font-size:12px;padding-top:2px'>"+item.name+"</div><div style='color: #666666;font-size:12px;padding-top:2px'>点击此标注查看更多信息</div>",draggable:false}}var marker=createMaker(this.map,latlng,markOpt,item.id);this.mapMarkers.set(item.id,marker);this.map.addOverlay(marker);if(this.onCreateMaker){var func=eval(this.onCreateMaker);func(marker,item)}}}.bind(this))};function createMaker(map,latlng,opts,id){var marker=new PopupMarker(latlng,opts);GEvent.addListener(marker,"click",function(){marker.hidePopup();var info=(Map.infoUrl+id).send();marker.openExtInfoWindow(map,"ext_info_window",info,{beakOffset:3})});GEvent.addListener(marker,"mouseover",function(){marker.showPopup()});GEvent.addListener(marker,"mouseout",function(){marker.hidePopup()});return marker}function createClusterMarker(map,latlng,opt,id){var styles_=[];var gridSize_=60;var sizes=[53,56,66,78,90];for(var i=1;i<=5;++i){styles_.push({url:"",height:sizes[i-1],width:sizes[i-1]})}var clusterMarker=new ClusterMarker_(latlng,2,styles_,gridSize_);return clusterMarker}this.checkMarkers=function(markers){var tempMarkers=new Array(markers.length);markers.each(function(item,index){tempMarkers[index]=item.id});this.mapMarkers.each(function(v,k){if(!tempMarkers.contains(k)){if(this.onRemoveMaker){var func=eval(this.onRemoveMaker);func(k)}this.map.removeOverlay(v);this.mapMarkers.remove(k)}}.bind(this))};this.removeMarkers=function(){if(this.onCleanMaker){var func=eval(this.onCleanMaker);func()}this.mapMarkers.each(function(v,k){this.map.removeOverlay(v)}.bind(this));this.mapMarkers.empty()}}function ClusterMarker_(f,d,c,e){var a=0;var b=d;while(b!==0){b=parseInt(b/10,10);a++}if(c.length<a){a=c.length}this.url_=c[a-1].url;this.height_=c[a-1].height;this.width_=c[a-1].width;this.textColor_=c[a-1].opt_textColor;this.anchor_=c[a-1].opt_anchor;this.latlng_=f;this.index_=a;this.styles_=c;this.text_=d;this.padding_=e}ClusterMarker_.prototype=new GOverlay();ClusterMarker_.prototype.initialize=function(d){this.map_=d;this.container_=document.createElement("div");d.getPane(G_MAP_MARKER_PANE).appendChild(this.container_);this.container_.style.zIndex=GOverlay.getZIndex(this.latlng_.lat());this.container_.style.position="absolute";this.container_.style.visibility="hidden";this.container_.innerHTML="此处有"+this.text_+"个楼盘，点击显示楼盘";var b=d.fromLatLngToDivPixel(this.latlng_);var k=b.x;var h=b.y;this.container_.style.left=(k+10)+"px";this.container_.style.top=(h-3)+"px";this.container_.style.border="1px solid #dcdcdc";this.container_.style.background="#ffffff";this.container_.style.padding="4px";this.container_.style.whiteSpace="nowrap";if(this.width_!="auto"){this.container_.style.overflow="hidden"}this.container_.style.display="block";if(typeof(this.container_.style.filter)=="string"){this.container_.style.filter="alpha(opacity:80)"}if(typeof(this.container_.style.KHTMLOpacity)=="string"){this.container_.style.KHTMLOpacity=0.9}if(typeof(this.container_.style.MozOpacity)=="string"){this.container_.style.MozOpacity=0.9}if(typeof(this.container_.style.opacity)=="string"){this.container_.style.opacity=0.9}var f=this;var c=document.createElement("div");var e=this.latlng_;var i=d.fromLatLngToDivPixel(e);i.x-=parseInt(this.width_/2,10);i.y-=parseInt(this.height_/2,10);var g="";this.url_=Map.ctxPath+"/images/redcirclemarker.png";this.height_="20";this.width_="20";if(document.all){g='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="'+this.url_+'");'}else{g="background:url("+this.url_+");"}if(typeof this.anchor_==="object"){if(typeof this.anchor_[0]==="number"&&this.anchor_[0]>0&&this.anchor_[0]<this.height_){g+="height:"+(this.height_-this.anchor_[0])+"px;padding-top:"+this.anchor_[0]+"px;"}else{g+="height:"+this.height_+"px;line-height:"+this.height_+"px;"}if(typeof this.anchor_[1]==="number"&&this.anchor_[1]>0&&this.anchor_[1]<this.width_){g+="width:"+(this.width_-this.anchor_[1])+"px;padding-left:"+this.anchor_[1]+"px;"}else{g+="width:"+this.width_+"px;text-align:center;"}}else{g+="height:"+this.height_+"px;line-height:"+this.height_+"px;";g+="width:"+this.width_+"px;text-align:center;"}var a=this.textColor_?this.textColor_:"black";c.style.cssText=g+"cursor:pointer;top:"+i.y+"px;left:"+i.x+"px;color:"+a+";position:absolute;font-size:11px;font-family:Arial,sans-serif;font-weight:bold";c.innerHTML=this.text_;d.getPane(G_MAP_MAP_PANE).appendChild(c);var j=this.padding_;GEvent.addDomListener(c,"click",function(){f.hidePopup();var o=d.fromLatLngToDivPixel(e);var l=new GPoint(o.x-j,o.y+j);l=d.fromDivPixelToLatLng(l);var n=new GPoint(o.x+j,o.y-j);n=d.fromDivPixelToLatLng(n);var m=d.getBoundsZoomLevel(new GLatLngBounds(l,n),d.getSize());d.setCenter(e,m)});GEvent.addDomListener(c,"mouseover",function(){f.showPopup()});GEvent.addDomListener(c,"mouseout",function(){f.hidePopup()});this.div_=c};ClusterMarker_.prototype.showPopup=function(){this.container_.style.visibility="visible"};ClusterMarker_.prototype.hidePopup=function(){this.container_.style.visibility="hidden"};ClusterMarker_.prototype.remove=function(){this.div_.parentNode.removeChild(this.div_)};ClusterMarker_.prototype.copy=function(){return new ClusterMarker_(this.latlng_,this.index_,this.text_,this.styles_,this.padding_)};ClusterMarker_.prototype.redraw=function(a){if(!a){return}var b=this.map_.fromLatLngToDivPixel(this.latlng_);b.x-=parseInt(this.width_/2,10);b.y-=parseInt(this.height_/2,10);this.div_.style.top=b.y+"px";this.div_.style.left=b.x+"px"};ClusterMarker_.prototype.hide=function(){this.div_.style.display="none"};ClusterMarker_.prototype.show=function(){this.div_.style.display=""};ClusterMarker_.prototype.isHidden=function(){return this.div_.style.display==="none"};function PopupMarker(f,b,d,a){this.latlng_=f;b=b||{};this.text_=b.text||"";if(b.text){b.text=undefined}this.opts_=b;this.popupStyle_=b.style||"normal";this.chart_=b.chart||{};var c=navigator.userAgent.toLowerCase();var e=((c.indexOf("msie")!==-1)&&(c.indexOf("opera")===-1));GMarker.apply(this,arguments)}PopupMarker.prototype=new GMarker(new GLatLng(0,0));PopupMarker.prototype.initialize=function(a){GMarker.prototype.initialize.apply(this,arguments);this.map_=a;this.container_=document.createElement("div");a.getPane(G_MAP_MARKER_PANE).appendChild(this.container_);this.container_.style.zIndex=GOverlay.getZIndex(this.latlng_.lat());this.container_.style.position="absolute";this.container_.style.visibility="hidden";var b=this;GEvent.bindDom(this.container_,"mousedown",this,function(){return GEvent.trigger(b,"mousedown")});GEvent.bindDom(this.container_,"dragstart",this,function(){return GEvent.trigger(b,"dragstart")});GEvent.bindDom(this.container_,"mouseup",this,function(){return GEvent.trigger(b,"mouseup")});GEvent.bindDom(this.container_,"mouseover",this,function(){return GEvent.trigger(b,"mouseover")});GEvent.bindDom(this.container_,"mouseout",this,function(){return GEvent.trigger(b,"mouseout")});GEvent.bindDom(this.container_,"click",this,function(){this.hidePopup()})};PopupMarker.prototype.redraw=function(a){GMarker.prototype.redraw.apply(this,arguments);if(a){this.latlng_=this.getLatLng();this.container_.style.zIndex=GOverlay.getZIndex(this.latlng_.lat())}};PopupMarker.prototype.copy=function(){this.opts_.text=this.text_;return new PopupMarker(this.latlng_,this.opts_)};PopupMarker.prototype.hide=function(){GMarker.prototype.hide.apply(this,arguments);this.container_.style.visibility="hidden"};PopupMarker.prototype.show=function(){GMarker.prototype.show.apply(this,arguments)};PopupMarker.prototype.showPopup=function(b){if(b){this.hide()}this.redrawNormalPopup_(this.text_);var e=this.map_.getInfoWindow();if(!e.isHidden()||this.isNull(this.text_)){return}if(!this.container_){var f=Map.map.fromLatLngToDivPixel(this.latlng_);var a=new GPoint(f.x,f.y);a=Map.map.fromDivPixelToLatLng(a);var d=new GPoint(f.x,f.y);d=Map.map.fromDivPixelToLatLng(d);var c=Map.map.getBoundsZoomLevel(new GLatLngBounds(a,d),Map.map.getSize());Map.map.setCenter(this.latlng_,14)}this.container_.style.visibility="visible"};PopupMarker.prototype.hidePopup=function(d){if(d){this.show()}if(!this.container_){var e=Map.map.fromLatLngToDivPixel(this.latlng_);var a=new GPoint(e.x,e.y);a=Map.map.fromDivPixelToLatLng(a);var c=new GPoint(e.x,e.y);c=Map.map.fromDivPixelToLatLng(c);var b=Map.map.getBoundsZoomLevel(new GLatLngBounds(a,c),Map.map.getSize());Map.map.setCenter(this.latlng_,14)}this.container_.style.visibility="hidden"};PopupMarker.prototype.remove=function(){GEvent.clearInstanceListeners(this.container_);while(this.container_.firstChild){this.container_.removeChild(this.container_.firstChild)}this.container_.parentNode.removeChild(this.container_);GMarker.prototype.remove.apply(this,arguments);delete arguments.callee};PopupMarker.prototype.setText=function(a){this.text_=a};PopupMarker.prototype.redrawNormalPopup_=function(c){var b=this.map_.fromLatLngToDivPixel(this.latlng_);this.container_.innerHTML=this.text_;var a=b.x;var d=b.y;this.container_.style.left=(a+17)+"px";this.container_.style.top=(d-12)+"px";this.container_.style.border="1px solid #dcdcdc";this.container_.style.background="#ffffff";this.container_.style.padding="4px";this.container_.style.whiteSpace="nowrap";if(this.width_!="auto"){this.container_.style.overflow="hidden"}this.container_.style.display="block";if(typeof(this.container_.style.filter)=="string"){this.container_.style.filter="alpha(opacity:80)"}if(typeof(this.container_.style.KHTMLOpacity)=="string"){this.container_.style.KHTMLOpacity=0.9}if(typeof(this.container_.style.MozOpacity)=="string"){this.container_.style.MozOpacity=0.9}if(typeof(this.container_.style.opacity)=="string"){this.container_.style.opacity=0.9}};PopupMarker.prototype.isNull=function(a){return !a&&a!==0||a===undefined||a===""||a===null||typeof a==="undefined"};function ExtInfoWindow(d,c,b,a){this.html_=b;this.marker_=d;this.infoWindowId_=c;this.options_=a==null?{}:a;this.ajaxUrl_=this.options_.ajaxUrl==null?null:this.options_.ajaxUrl;this.callback_=this.options_.ajaxCallback==null?null:this.options_.ajaxCallback;this.borderSize_=this.options_.beakOffset==null?0:this.options_.beakOffset;this.paddingX_=this.options_.paddingX==null?0+this.borderSize_:this.options_.paddingX+this.borderSize_;this.paddingY_=this.options_.paddingY==null?0+this.borderSize_:this.options_.paddingY+this.borderSize_;this.map_=null;this.container_=document.createElement("div");this.container_.style.position="relative";this.container_.style.display="none";this.contentDiv_=document.createElement("div");this.contentDiv_.id=this.infoWindowId_+"_contents";this.contentDiv_.innerHTML=this.html_;this.contentDiv_.style.display="block";this.contentDiv_.style.visibility="hidden";this.wrapperDiv_=document.createElement("div")}ExtInfoWindow.prototype=new GOverlay();ExtInfoWindow.prototype.initialize=function(map){this.map_=map;this.defaultStyles={containerWidth:this.map_.getSize().width/2,borderSize:1};this.wrapperParts={tl:{t:0,l:0,w:0,h:0,domElement:null},t:{t:0,l:0,w:0,h:0,domElement:null},tr:{t:0,l:0,w:0,h:0,domElement:null},l:{t:0,l:0,w:0,h:0,domElement:null},r:{t:0,l:0,w:0,h:0,domElement:null},bl:{t:0,l:0,w:0,h:0,domElement:null},b:{t:0,l:0,w:0,h:0,domElement:null},br:{t:0,l:0,w:0,h:0,domElement:null},beak:{t:0,l:0,w:0,h:0,domElement:null},close:{t:0,l:0,w:0,h:0,domElement:null}};for(var i in this.wrapperParts){var tempElement=document.createElement("div");tempElement.id=this.infoWindowId_+"_"+i;tempElement.style.visibility="hidden";document.body.appendChild(tempElement);tempElement=document.getElementById(this.infoWindowId_+"_"+i);var tempWrapperPart=eval("this.wrapperParts."+i);tempWrapperPart.w=parseInt(this.getStyle_(tempElement,"width"));tempWrapperPart.h=parseInt(this.getStyle_(tempElement,"height"));document.body.removeChild(tempElement)}for(var i in this.wrapperParts){if(i=="close"){this.wrapperDiv_.appendChild(this.contentDiv_)}var wrapperPartsDiv=null;if(this.wrapperParts[i].domElement==null){wrapperPartsDiv=document.createElement("div");this.wrapperDiv_.appendChild(wrapperPartsDiv)}else{wrapperPartsDiv=this.wrapperParts[i].domElement}wrapperPartsDiv.id=this.infoWindowId_+"_"+i;wrapperPartsDiv.style.position="absolute";wrapperPartsDiv.style.width=this.wrapperParts[i].w+"px";wrapperPartsDiv.style.height=this.wrapperParts[i].h+"px";wrapperPartsDiv.style.top=this.wrapperParts[i].t+"px";wrapperPartsDiv.style.left=this.wrapperParts[i].l+"px";this.wrapperParts[i].domElement=wrapperPartsDiv}this.map_.getPane(G_MAP_FLOAT_PANE).appendChild(this.container_);this.container_.id=this.infoWindowId_;var containerWidth=this.getStyle_(document.getElementById(this.infoWindowId_),"width");this.container_.style.width=(containerWidth==null?this.defaultStyles.containerWidth:containerWidth);this.map_.getContainer().appendChild(this.contentDiv_);this.contentWidth=this.getDimensions_(this.container_).width;this.contentDiv_.style.width=this.contentWidth+"px";this.contentDiv_.style.position="absolute";this.container_.appendChild(this.wrapperDiv_);GEvent.bindDom(this.container_,"mousedown",this,this.onClick_);GEvent.bindDom(this.container_,"dblclick",this,this.onClick_);GEvent.bindDom(this.container_,"DOMMouseScroll",this,this.onClick_);GEvent.trigger(this.map_,"extinfowindowopen")};ExtInfoWindow.prototype.onClick_=function(a){if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1&&document.all){window.event.cancelBubble=true;window.event.returnValue=false}else{a.stopPropagation()}};ExtInfoWindow.prototype.remove=function(){if(this.map_.getExtInfoWindow()!=null){GEvent.trigger(this.map_,"extinfowindowbeforeclose");GEvent.clearInstanceListeners(this.container_);if(this.container_.outerHTML){this.container_.outerHTML=""}if(this.container_.parentNode){this.container_.parentNode.removeChild(this.container_)}this.container_=null;GEvent.trigger(this.map_,"extinfowindowclose");this.map_.setExtInfoWindow_(null)}};ExtInfoWindow.prototype.copy=function(){return new ExtInfoWindow(this.marker_,this.infoWindowId_,this.html_,this.options_)};ExtInfoWindow.prototype.redraw=function(i){if(!i||this.container_==null){return}var a=this.contentDiv_.offsetHeight;this.contentDiv_.style.height=a+"px";this.contentDiv_.style.left=this.wrapperParts.l.w+"px";this.contentDiv_.style.top=this.wrapperParts.tl.h+"px";this.contentDiv_.style.visibility="visible";var b=this.getPan();this.beakPositionX=15;if(b.x<0){this.beakPositionX=this.contentWidth}var d=0;this.wrapperParts.tl.l=0;if(b.y<0){d=this.wrapperParts.beak.h-this.borderSize_;this.contentDiv_.style.top=this.wrapperParts.tl.h+d+"px"}this.wrapperParts.tl.t=d;this.wrapperParts.t.t=d;this.wrapperParts.t.l=this.wrapperParts.tl.w;this.wrapperParts.t.w=(this.wrapperParts.l.w+this.contentWidth+this.wrapperParts.r.w)-this.wrapperParts.tl.w-this.wrapperParts.tr.w;this.wrapperParts.t.h=this.wrapperParts.tl.h;this.wrapperParts.tr.t=d;this.wrapperParts.tr.l=this.wrapperParts.t.w+this.wrapperParts.tl.w;this.wrapperParts.l.t=this.wrapperParts.tl.h+d;this.wrapperParts.l.h=a;this.wrapperParts.r.l=this.contentWidth+this.wrapperParts.l.w;this.wrapperParts.r.t=this.wrapperParts.tr.h+d;this.wrapperParts.r.h=a;this.wrapperParts.bl.t=a+this.wrapperParts.tl.h+d;this.wrapperParts.b.l=this.wrapperParts.bl.w;this.wrapperParts.b.t=a+this.wrapperParts.tl.h+d;this.wrapperParts.b.w=(this.wrapperParts.l.w+this.contentWidth+this.wrapperParts.r.w)-this.wrapperParts.bl.w-this.wrapperParts.br.w;this.wrapperParts.b.h=this.wrapperParts.bl.h;this.wrapperParts.br.l=this.wrapperParts.b.w+this.wrapperParts.bl.w;this.wrapperParts.br.t=a+this.wrapperParts.tr.h+d;this.wrapperParts.close.l=this.wrapperParts.tr.l+this.wrapperParts.tr.w-this.wrapperParts.close.w-this.borderSize_;this.wrapperParts.close.t=this.borderSize_+d;this.wrapperParts.beak.l=this.borderSize_+this.beakPositionX-(this.wrapperParts.beak.w/2);if(b.y<0){this.wrapperParts.beak.t=0;this.wrapperParts.beak.domElement.id=this.infoWindowId_+"_beak_b"}else{this.wrapperParts.beak.t=this.wrapperParts.bl.t+this.wrapperParts.bl.h-this.borderSize_;this.wrapperParts.beak.domElement.id=this.infoWindowId_+"_beak_t"}for(var g in this.wrapperParts){if(g=="close"){this.wrapperDiv_.insertBefore(this.contentDiv_,this.wrapperParts[g].domElement)}var e=null;if(this.wrapperParts[g].domElement==null){e=document.createElement("div");this.wrapperDiv_.appendChild(e)}else{e=this.wrapperParts[g].domElement}if(g!="beak"){e.id=this.infoWindowId_+"_"+g}e.style.position="absolute";e.style.width=this.wrapperParts[g].w+"px";e.style.height=this.wrapperParts[g].h+"px";e.style.top=this.wrapperParts[g].t+"px";e.style.left=this.wrapperParts[g].l+"px";this.wrapperParts[g].domElement=e}var c=this.marker_;var s=this.map_;GEvent.addDomListener(this.wrapperParts.close.domElement,"click",function(){s.closeExtInfoWindow()});var p=this.map_.fromLatLngToDivPixel(this.marker_.getPoint());this.container_.style.position="absolute";var f=this.marker_.getIcon();this.container_.style.left=(p.x-this.beakPositionX-f.iconAnchor.x+f.infoWindowAnchor.x)+"px";if(b.y<0){this.container_.style.top=(p.y+this.borderSize_-7)+"px"}else{this.container_.style.top=(p.y-this.wrapperParts.bl.h-a-this.wrapperParts.tl.h-this.wrapperParts.beak.h-f.iconAnchor.y+f.infoWindowAnchor.y+this.borderSize_)+"px"}this.container_.style.display="block";if(this.map_.getExtInfoWindow()!=null){this.repositionMap_()}};ExtInfoWindow.prototype.resize=function(){var e=this.contentDiv_.cloneNode(true);e.id=this.infoWindowId_+"_tempContents";e.style.visibility="hidden";e.style.height="auto";document.body.appendChild(e);e=document.getElementById(this.infoWindowId_+"_tempContents");var a=e.offsetHeight;document.body.removeChild(e);this.contentDiv_.style.height=a+"px";var d=this.contentDiv_.offsetWidth;var b=this.map_.fromLatLngToDivPixel(this.marker_.getPoint());var c=this.wrapperParts.t.domElement.offsetHeight+this.wrapperParts.l.domElement.offsetHeight+this.wrapperParts.b.domElement.offsetHeight;var f=this.wrapperParts.t.domElement.offsetTop;this.wrapperParts.l.domElement.style.height=a+"px";this.wrapperParts.r.domElement.style.height=a+"px";var g=this.wrapperParts.b.domElement.offsetTop-a;this.wrapperParts.l.domElement.style.top=g+"px";this.wrapperParts.r.domElement.style.top=g+"px";this.contentDiv_.style.top=g+"px";windowTHeight=parseInt(this.wrapperParts.t.domElement.style.height);g-=windowTHeight;this.wrapperParts.close.domElement.style.top=g+this.borderSize_+"px";this.wrapperParts.tl.domElement.style.top=g+"px";this.wrapperParts.t.domElement.style.top=g+"px";this.wrapperParts.tr.domElement.style.top=g+"px";this.repositionMap_()};ExtInfoWindow.prototype.repositionMap_=function(){var e=this.map_.fromLatLngToDivPixel(this.map_.getBounds().getNorthEast());var J=this.map_.fromLatLngToDivPixel(this.map_.getBounds().getSouthWest());var s=this.map_.fromLatLngToDivPixel(this.marker_.getPoint());var p=0;var a=0;var c=this.paddingX_;var d=this.paddingY_;var G=this.marker_.getIcon().infoWindowAnchor;var H=this.marker_.getIcon().iconAnchor;var E=this.wrapperParts.t.domElement;var i=this.wrapperParts.l.domElement;var g=this.wrapperParts.b.domElement;var y=this.wrapperParts.r.domElement;var I=this.wrapperParts.beak.domElement;var b=parseInt(this.container_.style.top);if(b<e.y){a=e.y-b}else{var f=parseInt(this.container_.style.top)+this.getDimensions_(E).height+this.getDimensions_(i).height+this.getDimensions_(g).height+this.getDimensions_(I).height;if(f>=J.y){a=-(f-J.y)}}var x=parseInt(this.container_.style.left)+this.getDimensions_(i).width+this.getDimensions_(E).width+this.getDimensions_(y).width;if(x>e.x){p=-(x-e.x)}else{var F=parseInt(this.container_.style.left);if(F<J.x){p=J.x-F}}if(p>0){p+=55}else{if(p<0){p-=60}}if(a>0){a+=45}else{if(a<0){a-=65}}if(p!=0||a!=0&&this.map_.getExtInfoWindow()!=null){this.map_.panBy(new GSize(p+5,a+5))}};ExtInfoWindow.prototype.getPan=function(){var c=1;var d=1;var a=this.map_.getSize();var b=this.map_.fromLatLngToContainerPixel(this.marker_.getPoint());if(a.height/2>b.y){d=-1}if(a.width/2<b.x){c=-1}return{x:c,y:d}};ExtInfoWindow.prototype.getDimensions_=function(c){var g=this.getStyle_(c,"display");if(g!="none"&&g!=null){return{width:c.offsetWidth,height:c.offsetHeight}}var d=c.style;var i=d.visibility;var b=d.position;var e=d.display;d.visibility="hidden";d.position="absolute";d.display="block";var f=c.clientWidth;var a=c.clientHeight;d.display=e;d.position=b;d.visibility=i;return{width:f,height:a}};ExtInfoWindow.prototype.getStyle_=function(d,c){var a=false;c=this.camelize_(c);var b=d.style[c];if(!b){if(document.defaultView&&document.defaultView.getComputedStyle){var e=document.defaultView.getComputedStyle(d,null);b=e?e[c]:null}else{if(d.currentStyle){b=d.currentStyle[c]}}}if((b=="auto")&&(c=="width"||c=="height")&&(this.getStyle_(d,"display")!="none")){if(c=="width"){b=d.offsetWidth}else{b=d.offsetHeight}}return(b=="auto")?null:b};ExtInfoWindow.prototype.camelize_=function(c){var a=c.split("-"),e=a.length;if(e==1){return a[0]}var b=c.charAt(0)=="-"?a[0].charAt(0).toUpperCase()+a[0].substring(1):a[0];for(var d=1;d<e;d++){b+=a[d].charAt(0).toUpperCase()+a[d].substring(1)}return b};GMap.prototype.ExtInfoWindowInstance_=null;GMap.prototype.ClickListener_=null;GMap.prototype.InfoWindowListener_=null;GMarker.prototype.openExtInfoWindow=function(c,a,d,b){if(c==null){throw"Error in GMarker.openExtInfoWindow: map cannot be null";return false}if(a==null||a==""){throw"Error in GMarker.openExtInfoWindow: must specify a cssId";return false}c.closeInfoWindow();if(c.getExtInfoWindow()!=null){c.closeExtInfoWindow()}if(c.getExtInfoWindow()==null){c.setExtInfoWindow_(new ExtInfoWindow(this,a,d,b));if(c.ClickListener_==null){c.ClickListener_=GEvent.addListener(c,"click",function(e){if(!e&&c.getExtInfoWindow()!=null){c.closeExtInfoWindow()}})}if(c.InfoWindowListener_==null){c.InfoWindowListener_=GEvent.addListener(c,"infowindowopen",function(e){if(c.getExtInfoWindow()!=null){c.closeExtInfoWindow()}})}c.addOverlay(c.getExtInfoWindow())}};GMarker.prototype.closeExtInfoWindow=function(a){if(a.getExtInfWindow()!=null){a.closeExtInfoWindow()}};GMap2.prototype.getExtInfoWindow=function(){return this.ExtInfoWindowInstance_};GMap2.prototype.setExtInfoWindow_=function(a){this.ExtInfoWindowInstance_=a};GMap2.prototype.closeExtInfoWindow=function(){if(this.getExtInfoWindow()!=null){this.ExtInfoWindowInstance_.remove()}};
