function umsBaseMarker(map, params){
this._map=map;
this._markerObj=null;
var defaults={
};
this._markerParams=jQuery.extend({}, defaults, params);
this._markerParams.map=this._map.getRawMapInstance();
this._infoWindow=null;
this._infoWndOpened=false;
this._infoWndWasInited=false;
this._infoWndDirectionsBtn=false;
this._infoWndPrintBtn=false;
this._mapDragScroll={
scrollwheel: null,
};
this._ignoreBaseInfoWndBind=false;
this.init();
}
umsBaseMarker.prototype.infoWndOpened=function (){
return this._infoWndOpened;
};
umsBaseMarker.prototype._createMarkerObj=function (){
this._methodRedefineNotice('umsBaseMarker.prototype._createMarkerObj');
};
umsBaseMarker.prototype.init=function (){
this._markerObj=this._createMarkerObj();
var openInfoWndEvent='click',
closeInfoWndEvent='',
openLinkEvent='click';
/*var markerParamsForCreate=this._markerParams
,	openInfoWndEvent='click'
,	closeInfoWndEvent=''
,	openLinkEvent='click';
if(parseInt(this._map._mapParams.hide_marker_tooltip)){
this._markerParams.marker_title=this._markerParams.title;
delete markerParamsForCreate.title;
}
this._markerObj=new google.maps.Marker(markerParamsForCreate);
this._markerObj.addListener('domready', jQuery.proxy(function(){
changeInfoWndBgColor(this._map);
}, this));*/
if(this._markerParams.dragend){
this.addEventListener('dragend', jQuery.proxy(this._markerParams.dragend, this));
}
if(this._markerParams.click){
this.addEventListener('click', jQuery.proxy(this._markerParams.click, this));
}
if(!navigator.userAgent.match(/iPad|iPhone|iPod|Android|BlackBerry|webOS/i)){
if(parseInt(this._map._mapParams.marker_hover)){
this.addEventListener('mouseover',
jQuery.proxy(function (){
if(typeof this._markerObj.opacity=='undefined'||this._markerObj.opacity==1){
this.showInfoWnd();
jQuery(document).trigger('umsAfterMarkerClick', this);
}}, this)
);
}}
if(this._markerParams.params&&!(window.ontouchstart===null||navigator.msMaxTouchPoints)){
if(parseInt(this._markerParams.params.description_mouse_hover)){
openInfoWndEvent='mouseover';
if(parseInt(this._markerParams.params.description_mouse_leave)){
closeInfoWndEvent='mouseout';
}}
}
if(!this._ignoreBaseInfoWndBind){
this.addEventListener(openInfoWndEvent,
jQuery.proxy(function (){
if(this._markerParams.params&&!parseInt(this._markerParams.params.description_mouse_hover)&&parseInt(this._markerParams.params.marker_link)){
return;
}else{
this.showInfoWnd();
}
jQuery(document).trigger('umsAfterMarkerClick', this);
}, this)
);
}
if(closeInfoWndEvent){
/*this.addEventListener(closeInfoWndEvent, jQuery.proxy(function (){
var self=this
,	infoWndDiv=jQuery('.gm-style-iw').parent()
,	timeout=300;
infoWndDiv.on('mouseover', function (){
infoWndDiv.addClass('hovering');
});
infoWndDiv.on('mouseleave', function (){
setTimeout(function(){
self.hideInfoWnd();
}, timeout);
});
setTimeout(function(){
if(!infoWndDiv.hasClass('hovering')){
self.hideInfoWnd();
}}, timeout);
}, this));*/
}
if(this._markerParams.params&&parseInt(this._markerParams.params.marker_link)){
this.addEventListener(openLinkEvent,
jQuery.proxy(function (){
var url_string=window.location.href,
url=new URL(url_string),
tab=url.searchParams.get('tab');
if(tab!=='maps_edit'){
var isLink=/http/gi,
markerLink = !this._markerParams.params.marker_link_src.match(isLink) ? 'http://' + this._markerParams.params.marker_link_src:this._markerParams.params.marker_link_src;
if(parseInt(this._markerParams.params.marker_link_new_wnd)){
window.open(markerLink, '_blank');
}else{
location.href=markerLink;
}}
}, this)
);
}};
umsBaseMarker.prototype.addEventListener=function (event, callback){
this._methodRedefineNotice('umsBaseMarker.prototype.addEventListener');
};
umsBaseMarker.prototype.showInfoWnd=function (forceUpdateInfoWnd, forceShow, withOpenPopup){
if(!this._infoWndWasInited||forceUpdateInfoWnd){
this._updateInfoWndContent(true);
this._infoWndWasInited=true;
}
if(this._infoWindow&&!this._infoWndOpened){
var allMapMArkers=this._map.getAllMarkers();
if(allMapMArkers&&allMapMArkers.length > 1&&!forceShow){
for (var i=0; i < allMapMArkers.length; i++){
allMapMArkers[i].hideInfoWnd();
}}
this._openInfoWnd(withOpenPopup);
}
this._infoWndOpened=true;
if(!navigator.userAgent.match(/iPad|iPhone|iPod|Android|BlackBerry|webOS/i)){
if(parseInt(this._map._mapParams.marker_hover)){
this.directOpenInfoWnd();
}}
};
umsBaseMarker.prototype._openInfoWnd=function (withOpenPopup){
this._methodRedefineNotice('umsBaseMarker.prototype._openInfoWnd');
};
umsBaseMarker.prototype.directOpenInfoWnd=function (){
this._methodRedefineNotice('umsBaseMarker.prototype.directOpenInfoWnd');
};
umsBaseMarker.prototype._closeInfoWnd=function (){
this._methodRedefineNotice('umsBaseMarker.prototype._closeInfoWnd');
};
umsBaseMarker.prototype.hideInfoWnd=function (){
if(this._infoWindow&&this._infoWndOpened){
this._closeInfoWnd();
this._infoWndOpened=false;
}};
umsBaseMarker.prototype.getRawMarkerInstance=function (){
return this._markerObj;
};
umsBaseMarker.prototype.getRawMarkerParams=function (){
return this._markerParams;
};
umsBaseMarker.prototype.getIcon=function (){
this._methodRedefineNotice('umsBaseMarker.prototype.getIcon');
};
umsBaseMarker.prototype.setIcon=function (iconPath){
this._methodRedefineNotice('umsBaseMarker.prototype.setIcon');
};
umsBaseMarker.prototype.setIconSize=function (width, height){
if(typeof this._markerParams.icon_data==='undefined'){
this._markerParams.icon_data={};}
this._markerParams.icon_data.width=width;
this._markerParams.icon_data.height=height;
};
umsBaseMarker.prototype.setTitle=function (title, noRefresh){
this._markerParams.title=title;
if(!noRefresh) this._updateInfoWndContent();
};
umsBaseMarker.prototype.getTitle=function (){
return this._markerParams.title;
};
umsBaseMarker.prototype.getPosition=function (){
this._methodRedefineNotice('umsBaseMarker.prototype.getPosition');
};
umsBaseMarker.prototype.setPosition=function (lat, lng){
this._methodRedefineNotice('umsBaseMarker.prototype.setPosition');
};
umsBaseMarker.prototype.lat=function (){
this._methodRedefineNotice('umsBaseMarker.prototype.lat');
};
umsBaseMarker.prototype.lng=function (lng){
this._methodRedefineNotice('umsBaseMarker.prototype.lng');
};
umsBaseMarker.prototype.setId=function (id){
this._markerParams.id=id;
};
umsBaseMarker.prototype.getId=function (){
return parseInt(this._markerParams.id);
};
umsBaseMarker.prototype.setDescription=function (description, noRefresh){
this._markerParams.description=description;
if(!noRefresh) this._updateInfoWndContent();
if(this._markerParams.params&&parseInt(this._markerParams.params.show_description)){
this.showInfoWnd(false, true);
}};
umsBaseMarker.prototype.getDescription=function (){
return this._markerParams.description;
};
umsBaseMarker.prototype._setTitleColor=function (titleDiv){
var titleColor=this._map.getParam('marker_title_color');
if(titleColor&&titleColor!=''){
titleDiv.css({
color: titleColor,
});
}
return titleDiv;
};
umsBaseMarker.prototype._setTitleSize=function (titleDiv){
var titleSize=this._map.getParam('marker_title_size'),
titleSizeUnits=this._map.getParam('marker_title_size_units');
if(titleSize&&titleSizeUnits&&titleSize!=''){
titleDiv.css({
'font-size': titleSize + titleSizeUnits,
'line-height': +titleSize + 5 + titleSizeUnits,
});
}
return titleDiv;
};
umsBaseMarker.prototype._setDescSize=function (descDiv){
var descSize=this._map.getParam('marker_desc_size'),
descSizeUnits=this._map.getParam('marker_desc_size_units');
if(descSize&&descSizeUnits&&descSize!=''){
descDiv.css({
'font-size': descSize + descSizeUnits,
'line-height': parseInt(descSize) + 5 + descSizeUnits,
});
}
return descDiv;
};
umsBaseMarker.prototype._updateInfoWndContent=function (){
this._methodRedefineNotice('umsBaseMarker.prototype._updateInfoWndContent');
};
umsBaseMarker.prototype._setInfoWndClosed=function (){
this._infoWndOpened=false;
jQuery(document).trigger('umsAfterHideInfoWnd', this);
};
umsBaseMarker.prototype._setInfoWndContent=function (withoutShowTrigger){
this._methodRedefineNotice('umsBaseMarker.prototype._setInfoWndContent');
};
umsBaseMarker.prototype.removeFromMap=function (){
this._methodRedefineNotice('umsBaseMarker.prototype.removeFromMap');
};
umsBaseMarker.prototype.setMarkerParams=function (params){
this._markerParams=params;
return this;
};
umsBaseMarker.prototype.setMarkerParam=function (key, value){
this._markerParams[key]=value;
return this;
};
umsBaseMarker.prototype.getMarkerParam=function (key){
return this._markerParams[key];
};
umsBaseMarker.prototype.setMap=function (map){
this._methodRedefineNotice('umsBaseMarker.prototype.setMap');
};
umsBaseMarker.prototype.getMap=function (){
return this._map;
};
umsBaseMarker.prototype.setVisible=function (state){
this.getRawMarkerInstance().setVisible(state);
};
umsBaseMarker.prototype.getVisible=function (state){
this.getRawMarkerInstance().getVisible(state);
};
/*umsBaseMarker.prototype.removeFromMap=function(){
this._methodRedefineNotice('umsBaseMarker.prototype.removeFromMap');
};*/
umsBaseMarker.prototype._methodRedefineNotice=function (methodName){
console.log('[' + methodName + '] should be re-defined!');
};
/*umsBaseMarker.prototype.refreshInfoWnd=function(){
this._methodRedefineNotice('umsBaseMarker.prototype.setMap');
};*/
function _umsPrepareMarkersList(markers, params){
params=params||{};
if(markers){
for (var i=0; i < markers.length; i++){
markers[i].coord_x=parseFloat(markers[i].coord_x);
markers[i].coord_y=parseFloat(markers[i].coord_y);
markers[i].icon=markers[i].icon_data.path;
if(params.dragend){
markers[i].draggable=true;
markers[i].dragend=params.dragend;
}}
}
return markers;
}
/*var umsMarkerLoader={
init: function(map, markerParams){
return new window['ums'+ toeStrFirstUp(UMS_DATA.engine)+ 'Marker'](map, markerParams);
}};*/;