function LabeledMarker(b,a){this.latlng_=b;this.opts_=a;this.labelText_=a.labelText||"";this.labelClass_=a.labelClass||"LabeledMarker_markerLabel";this.labelOffset_=a.labelOffset||new GSize(0,0);this.clickable_=a.clickable||true;this.title_=a.title||"";this.labelVisibility_=true;if(a.draggable){a.draggable=false}GMarker.apply(this,arguments)}LabeledMarker.prototype=new GMarker(new GLatLng(0,0));LabeledMarker.prototype.initialize=function(d){GMarker.prototype.initialize.apply(this,arguments);this.map_=d;this.div_=document.createElement("div");this.div_.className=this.labelClass_;this.div_.innerHTML=this.labelText_;this.div_.style.position="absolute";this.div_.style.cursor="pointer";this.div_.title=this.title_;d.getPane(G_MAP_MARKER_PANE).appendChild(this.div_);if(this.clickable_){function a(g,f){return function(){GEvent.trigger(g,f)}}var e=["click","dblclick","mousedown","mouseup","mouseover","mouseout"];for(var c=0;c<e.length;c++){var b=e[c];GEvent.addDomListener(this.div_,b,a(this,b))}}};LabeledMarker.prototype.redraw=function(a){GMarker.prototype.redraw.apply(this,arguments);this.redrawLabel_()};LabeledMarker.prototype.redrawLabel_=function(){var a=this.map_.fromLatLngToDivPixel(this.latlng_);var b=GOverlay.getZIndex(this.latlng_.lat());this.div_.style.left=(a.x+this.labelOffset_.width)+"px";this.div_.style.top=(a.y+this.labelOffset_.height)+"px";this.div_.style.zIndex=b};LabeledMarker.prototype.remove=function(){GEvent.clearInstanceListeners(this.div_);if(this.div_.outerHTML){this.div_.outerHTML=""}if(this.div_.parentNode){this.div_.parentNode.removeChild(this.div_)}this.div_=null;GMarker.prototype.remove.apply(this,arguments)};LabeledMarker.prototype.copy=function(){return new LabeledMarker(this.latlng_,this.opts_)};LabeledMarker.prototype.show=function(){GMarker.prototype.show.apply(this,arguments);if(this.labelVisibility_){this.showLabel()}else{this.hideLabel()}};LabeledMarker.prototype.hide=function(){GMarker.prototype.hide.apply(this,arguments);this.hideLabel()};LabeledMarker.prototype.setLatLng=function(a){this.latlng_=a;GMarker.prototype.setLatLng.apply(this,arguments);this.redrawLabel_()};LabeledMarker.prototype.setLabelVisibility=function(a){this.labelVisibility_=a;if(!this.isHidden()){if(this.labelVisibility_){this.showLabel()}else{this.hideLabel()}}};LabeledMarker.prototype.getLabelVisibility=function(){return this.labelVisibility_};LabeledMarker.prototype.hideLabel=function(){this.div_.style.visibility="hidden"};LabeledMarker.prototype.showLabel=function(){this.div_.style.visibility="visible"};