function ExtInfoWindow(marker,windowId,html,opt_opts){this.html_=html;this.marker_=marker;this.infoWindowId_=windowId;this.options_=opt_opts==null?{}:opt_opts;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.maxWidth=432;this.isMaximised=false;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:"400px",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},maximize:{t:0,l:0,w:0,h:0,domElement:null},minimize:{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"||i=="maximize"||i=="minimize"){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.wrapperParts.minimize.domElement.style.visibility="hidden";this.wrapperParts.maximize.domElement.style.visibility="hidden";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||containerWidth=="0px")?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");if(this.ajaxUrl_!=null){this.ajaxRequest_(this.ajaxUrl_);}var thisMap=this.map_;GEvent.addDomListener(this.wrapperParts.close.domElement,"click",function(){thisMap.closeExtInfoWindow();});GEvent.addDomListener(this.wrapperParts.maximize.domElement,"click",function(){thisMap.maximizeExtInfoWindow();});GEvent.addDomListener(this.wrapperParts.minimize.domElement,"click",function(){thisMap.minimizeExtInfoWindow();});};ExtInfoWindow.prototype.onClick_=function(e){if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1&&document.all){window.event.cancelBubble=true;window.event.returnValue=false;}else{e.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(force){if(!force||this.container_==null){return ;}var contentHeight=this.contentDiv_.offsetHeight;var contentWidth=this.contentDiv_.offsetWidth;this.contentDiv_.style.left=this.wrapperParts.l.w+"px";this.contentDiv_.style.top=this.wrapperParts.tl.h+"px";this.contentDiv_.style.visibility="visible";this.wrapperParts.tl.t=0;this.wrapperParts.tl.l=0;this.wrapperParts.t.l=this.wrapperParts.tl.w;this.wrapperParts.t.w=contentWidth-6;this.wrapperParts.t.h=this.wrapperParts.tl.h;this.wrapperParts.tr.l=this.wrapperParts.t.w+this.wrapperParts.tl.w;this.wrapperParts.l.t=this.wrapperParts.tl.h;this.wrapperParts.l.h=contentHeight;this.wrapperParts.r.l=contentWidth+this.wrapperParts.l.w;this.wrapperParts.r.t=this.wrapperParts.tr.h;this.wrapperParts.r.h=contentHeight;this.wrapperParts.bl.t=contentHeight+this.wrapperParts.tl.h;this.wrapperParts.b.l=this.wrapperParts.bl.w;this.wrapperParts.b.t=contentHeight+this.wrapperParts.tl.h;this.wrapperParts.b.w=contentWidth-6;this.wrapperParts.b.h=this.wrapperParts.bl.h;this.wrapperParts.br.l=this.wrapperParts.b.w+this.wrapperParts.bl.w;this.wrapperParts.br.t=contentHeight+this.wrapperParts.tr.h;this.wrapperParts.close.l=this.wrapperParts.tr.l+this.wrapperParts.tr.w-this.wrapperParts.close.w-this.borderSize_-4;this.wrapperParts.close.t=this.borderSize_+2;this.wrapperParts.maximize.l=this.wrapperParts.tr.l+this.wrapperParts.tr.w-this.wrapperParts.maximize.w-this.borderSize_-28;this.wrapperParts.maximize.t=this.borderSize_+2;this.wrapperParts.minimize.l=this.wrapperParts.tr.l+this.wrapperParts.tr.w-this.wrapperParts.minimize.w-this.borderSize_-28;this.wrapperParts.minimize.t=this.borderSize_+2;this.wrapperParts.beak.l=this.borderSize_+(this.contentWidth/2)-(this.wrapperParts.beak.w/2);this.wrapperParts.beak.t=this.wrapperParts.bl.t+this.wrapperParts.bl.h-this.borderSize_;for(var i in this.wrapperParts){if(i=="close"||i=="maximize"||i=="minimize"){this.wrapperDiv_.insertBefore(this.contentDiv_,this.wrapperParts[i].domElement);}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;}var currentMarker=this.marker_;var thisMap=this.map_;var pixelLocation=this.map_.fromLatLngToDivPixel(this.marker_.getPoint());this.container_.style.position="absolute";var markerIcon=this.marker_.getIcon();this.container_.style.left=(pixelLocation.x-(this.contentWidth/2)-markerIcon.iconAnchor.x+markerIcon.infoWindowAnchor.x)+"px";this.container_.style.top=(pixelLocation.y-this.wrapperParts.bl.h-contentHeight-this.wrapperParts.tl.h-this.wrapperParts.beak.h-markerIcon.iconAnchor.y+markerIcon.infoWindowAnchor.y+this.borderSize_)+"px";this.container_.style.display="block";if(this.map_.getExtInfoWindow()!=null){this.repositionMap_();}};ExtInfoWindow.prototype.resize=function(){var tempElement=this.contentDiv_.cloneNode(true);tempElement.id=this.infoWindowId_+"_tempContents";tempElement.style.visibility="hidden";tempElement.style.height="auto";document.body.appendChild(tempElement);tempElement=document.getElementById(this.infoWindowId_+"_tempContents");var contentHeight=tempElement.offsetHeight;document.body.removeChild(tempElement);this.contentDiv_.style.height=contentHeight+"px";var contentWidth=this.contentDiv_.offsetWidth;var pixelLocation=this.map_.fromLatLngToDivPixel(this.marker_.getPoint());var oldWindowHeight=this.wrapperParts.t.domElement.offsetHeight+this.wrapperParts.l.domElement.offsetHeight+this.wrapperParts.b.domElement.offsetHeight;var oldWindowPosTop=this.wrapperParts.t.domElement.offsetTop;this.wrapperParts.l.domElement.style.height=contentHeight+"px";this.wrapperParts.r.domElement.style.height=contentHeight+"px";var newPosTop=this.wrapperParts.b.domElement.offsetTop-contentHeight;this.wrapperParts.l.domElement.style.top=newPosTop+"px";this.wrapperParts.r.domElement.style.top=newPosTop+"px";this.contentDiv_.style.top=newPosTop+"px";windowTHeight=parseInt(this.wrapperParts.t.domElement.style.height);newPosTop-=windowTHeight;this.wrapperParts.close.domElement.style.top=newPosTop+this.borderSize_+"px";this.wrapperParts.maximize.domElement.style.top=newPosTop+this.borderSize_+"px";this.wrapperParts.minimize.domElement.style.top=newPosTop+this.borderSize_+"px";this.wrapperParts.tl.domElement.style.top=newPosTop+"px";this.wrapperParts.t.domElement.style.top=newPosTop+"px";this.wrapperParts.tr.domElement.style.top=newPosTop+"px";this.repositionMap_();};ExtInfoWindow.prototype.repositionMap_=function(){var mapNE=this.map_.fromLatLngToDivPixel(this.map_.getBounds().getNorthEast());var mapSW=this.map_.fromLatLngToDivPixel(this.map_.getBounds().getSouthWest());var markerPosition=this.map_.fromLatLngToDivPixel(this.marker_.getPoint());var panX=0;var panY=0;var paddingX=this.paddingX_;var paddingY=this.paddingY_;var infoWindowAnchor=this.marker_.getIcon().infoWindowAnchor;var iconAnchor=this.marker_.getIcon().iconAnchor;var windowT=this.wrapperParts.t.domElement;var windowL=this.wrapperParts.l.domElement;var windowB=this.wrapperParts.b.domElement;var windowR=this.wrapperParts.r.domElement;var windowBeak=this.wrapperParts.beak.domElement;var offsetTop=markerPosition.y-(-infoWindowAnchor.y+iconAnchor.y+this.getDimensions_(windowBeak).height+this.getDimensions_(windowB).height+this.getDimensions_(windowL).height+this.getDimensions_(windowT).height+this.paddingY_);if(offsetTop<mapNE.y){panY=mapNE.y-offsetTop;}else{var offsetBottom=markerPosition.y+this.paddingY_;if(offsetBottom>=mapSW.y){panY=-(offsetBottom-mapSW.y);}}ExtIWPositionConst=(this.isMaximised)?this.maxWidth/1.25:this.getDimensions_(this.container_).width/2;var offsetRight=Math.round(markerPosition.x+ExtIWPositionConst+this.getDimensions_(windowR).width+this.paddingX_+infoWindowAnchor.x-iconAnchor.x);if(offsetRight>mapNE.x){panX=-(offsetRight-mapNE.x);}else{var offsetLeft=-(Math.round((this.getDimensions_(this.container_).width/2-this.marker_.getIcon().iconSize.width/2)+this.getDimensions_(windowL).width+this.borderSize_+this.paddingX_)-markerPosition.x-infoWindowAnchor.x+iconAnchor.x);if(offsetLeft<mapSW.x){panX=mapSW.x-offsetLeft;}}if(panX<0){panX-=16;}if(panX>0){panX+=16;if(this.isMaximised){panX=0;}}if(panY<0){panY-=16;}if(panY>0){panY+=16;}if(panX!=0||panY!=0&&this.map_.getExtInfoWindow()!=null){this.map_.panBy(new GSize(panX,panY));}};ExtInfoWindow.prototype.ajaxRequest_=function(url){var thisMap=this.map_;var thisCallback=this.callback_;GDownloadUrl(url,function(response,status){var infoWindow=document.getElementById(thisMap.getExtInfoWindow().infoWindowId_+"_contents");if(response==null||status==-1){infoWindow.innerHTML='<span class="error">ERROR: The Ajax request failed to get HTML content from "'+url+'"</span>';}else{infoWindow.innerHTML=response;}if(thisCallback!=null){thisCallback();}thisMap.getExtInfoWindow().resize();GEvent.trigger(thisMap,"extinfowindowupdate");});};ExtInfoWindow.prototype.getDimensions_=function(element){var display=this.getStyle_(element,"display");if(display!="none"&&display!=null){return{width:element.offsetWidth,height:element.offsetHeight};}var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility="hidden";els.position="absolute";els.display="block";var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};};ExtInfoWindow.prototype.getStyle_=function(element,style){var found=false;style=this.camelize_(style);var value=element.style[style];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}else{if(element.currentStyle){value=element.currentStyle[style];}}}if((value=="auto")&&(style=="width"||style=="height")&&(this.getStyle_(element,"display")!="none")){if(style=="width"){value=element.offsetWidth;}else{value=element.offsetHeight;}}return(value=="auto")?null:value;};ExtInfoWindow.prototype.camelize_=function(element){var parts=element.split("-"),len=parts.length;if(len==1){return parts[0];}var camelized=element.charAt(0)=="-"?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++){camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);}return camelized;};GMap.prototype.ExtInfoWindowInstance_=null;GMap.prototype.ClickListener_=null;GMap.prototype.InfoWindowListener_=null;GMarker.prototype.openExtInfoWindow=function(map,cssId,pLocation,opt_opts){this.map=map;this.cssId=cssId;this.pLocation=pLocation;this.opt_opts=opt_opts;if(map==null){throw"Error in GMarker.openExtInfoWindow: map cannot be null";return false;}if(cssId==null||cssId==""){throw"Error in GMarker.openExtInfoWindow: must specify a cssId";return false;}map.closeInfoWindow();if(map.getExtInfoWindow()!=null){map.closeExtInfoWindow();}var html=pLocation.getMaxContent();if(map.getExtInfoWindow()==null){map.setExtInfoWindow_(new ExtInfoWindow(this,cssId,html,opt_opts));if(map.ClickListener_==null){map.ClickListener_=GEvent.addListener(map,"click",function(event){if(!event&&map.getExtInfoWindow()!=null){map.closeExtInfoWindow();}});}if(map.InfoWindowListener_==null){map.InfoWindowListener_=GEvent.addListener(map,"infowindowopen",function(event){if(map.getExtInfoWindow()!=null){map.closeExtInfoWindow();}});}map.addOverlay(map.getExtInfoWindow());}};GMarker.prototype.closeExtInfoWindow=function(map){if(map.getExtInfWindow()!=null){map.closeExtInfoWindow();}};GMap2.prototype.getExtInfoWindow=function(){return this.ExtInfoWindowInstance_;};GMap2.prototype.setExtInfoWindow_=function(extInfoWindow){this.ExtInfoWindowInstance_=extInfoWindow;};GMap2.prototype.closeExtInfoWindow=function(){if(this.getExtInfoWindow()!=null){this.ExtInfoWindowInstance_.remove();}};GMap2.prototype.maximizeExtInfoWindow=function(){if(this.getExtInfoWindow()!=null){this.getExtInfoWindow().isMaximised=true;this.getExtInfoWindow().originalWidth=parseInt(this.getExtInfoWindow().contentDiv_.offsetWidth);this.getExtInfoWindow().originalHeight=parseInt(this.getExtInfoWindow().contentDiv_.offsetHeight);this.getExtInfoWindow().wrapperParts.minimize.domElement.style.visibility="visible";this.getExtInfoWindow().wrapperParts.maximize.domElement.style.visibility="hidden";this.getExtInfoWindow().contentDiv_.innerHTML=this.getExtInfoWindow().marker_.pLocation.getMaxContent();this.getExtInfoWindow().wrapperParts.t.domElement.style.width=(this.getExtInfoWindow().maxWidth+"px");this.getExtInfoWindow().wrapperParts.b.domElement.style.width=(this.getExtInfoWindow().maxWidth+"px");this.getExtInfoWindow().contentDiv_.style.width=(this.getExtInfoWindow().maxWidth+"px");this.getExtInfoWindow().container_.style.width=(parseInt(this.getExtInfoWindow().contentDiv_.style.width)+parseInt(this.getExtInfoWindow().wrapperParts.l.domElement.style.width)+parseInt(this.getExtInfoWindow().wrapperParts.r.domElement.style.width)+"px");this.getExtInfoWindow().resize();this.getExtInfoWindow().redraw(true);}};GMap2.prototype.minimizeExtInfoWindow=function(){if(this.getExtInfoWindow()!=null){this.getExtInfoWindow().isMaximised=false;this.getExtInfoWindow().wrapperParts.minimize.domElement.style.visibility="hidden";this.getExtInfoWindow().wrapperParts.maximize.domElement.style.visibility="visible";this.getExtInfoWindow().contentDiv_.innerHTML=this.getExtInfoWindow().marker_.pLocation.getMinContent();this.getExtInfoWindow().wrapperParts.l.domElement.style.height=(this.getExtInfoWindow().originalHeight+"px");this.getExtInfoWindow().wrapperParts.r.domElement.style.height=(this.getExtInfoWindow().originalHeight+"px");this.getExtInfoWindow().wrapperParts.t.domElement.style.width=(this.getExtInfoWindow().originalWidth+"px");this.getExtInfoWindow().wrapperParts.b.domElement.style.width=(this.getExtInfoWindow().originalWidth+"px");this.getExtInfoWindow().contentDiv_.style.height=(this.getExtInfoWindow().originalHeight+"px");this.getExtInfoWindow().contentDiv_.style.width=(this.getExtInfoWindow().originalWidth+"px");this.getExtInfoWindow().container_.style.width=(parseInt(this.getExtInfoWindow().contentDiv_.style.width)+parseInt(this.getExtInfoWindow().wrapperParts.l.domElement.style.width)+parseInt(this.getExtInfoWindow().wrapperParts.r.domElement.style.width)+"px");this.getExtInfoWindow().resize();this.getExtInfoWindow().redraw(true);}};