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 google.maps.Size(0,0);
this.clickable_=A.clickable||true;
this.title_=A.title||"";
this.labelVisibility_=true;
if(A.draggable){A.draggable=false
}google.maps.Marker.apply(this,arguments)
}LabeledMarker.prototype=new google.maps.Marker(new google.maps.LatLng(0,0));
LabeledMarker.prototype.initialize=function(B){google.maps.Marker.prototype.initialize.apply(this,arguments);
this.map_=B;
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_;
B.getPane(G_MAP_MARKER_PANE).appendChild(this.div_);
if(this.clickable_){function D(G,F){return function(H){if(!H){var H=window.event
}H.cancelBubble=true;
if(H.stopPropagation){H.stopPropagation()
}google.maps.Event.trigger(G,F)
}
}var C=["click","dblclick","mousedown","mouseup","mouseover","mouseout"];
for(var A=0;
A<C.length;
A++){var E=C[A];
google.maps.Event.addDomListener(this.div_,E,D(this,E))
}}};
LabeledMarker.prototype.redraw=function(A){google.maps.Marker.prototype.redraw.apply(this,arguments);
this.redrawLabel_()
};
LabeledMarker.prototype.redrawLabel_=function(){var A=this.map_.fromLatLngToDivPixel(this.latlng_);
var B=google.maps.Overlay.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(){google.maps.Event.clearInstanceListeners(this.div_);
if(this.div_.outerHTML){this.div_.outerHTML=""
}if(this.div_.parentNode){this.div_.parentNode.removeChild(this.div_)
}this.div_=null;
google.maps.Marker.prototype.remove.apply(this,arguments)
};
LabeledMarker.prototype.copy=function(){return new LabeledMarker(this.latlng_,this.opts_)
};
LabeledMarker.prototype.show=function(){google.maps.Marker.prototype.show.apply(this,arguments);
if(this.labelVisibility_){this.showLabel()
}else{this.hideLabel()
}};
LabeledMarker.prototype.hide=function(){google.maps.Marker.prototype.hide.apply(this,arguments);
this.hideLabel()
};
LabeledMarker.prototype.setLatLng=function(A){this.latlng_=A;
google.maps.Marker.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"
};
