(function(){
var apiParams = {
colors: 1,
values: 1,
backgroundColor: 1,
scaleColors: 1,
normalizeFunction: 1,
enableZoom: 1,
showTooltip: 1,
borderColor: 1,
borderWidth: 1,
borderOpacity: 1,
selectedRegions: 1,
multiSelectRegion: 1
};
var apiEvents = {
onLabelShow: 'labelShow',
onLoad: 'load',
onRegionOver: 'regionMouseOver',
onRegionOut: 'regionMouseOut',
onRegionClick: 'regionClick',
onRegionSelect: 'regionSelect',
onRegionDeselect: 'regionDeselect',
onResize: 'resize'
};
jQuery.fn.vectorMap = function (options) {
var defaultParams = {
map: 'world_en',
backgroundColor: '#a5bfdd',
color: '#f4f3f0',
hoverColor: '#c9dfaf',
hoverColors: {},
selectedColor: '#c9dfaf',
scaleColors: ['#b6d6ff', '#005ace'],
normalizeFunction: 'linear',
enableZoom: true,
showTooltip: true,
borderColor: '#818181',
borderWidth: 1,
borderOpacity: 0.25,
selectedRegions: null,
multiSelectRegion: false
}, map = this.data('mapObject');
if (options === 'addMap') {
JQVMap.maps[arguments[1]] = arguments[2];
} else if (options === 'set' && apiParams[arguments[1]]) {
map['set' + arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1)].apply(map, Array.prototype.slice.call(arguments, 2));
} else if (typeof options === 'string' &&
typeof map[options] === 'function') {
return map[options].apply(map, Array.prototype.slice.call(arguments, 1));
} else {
jQuery.extend(defaultParams, options);
defaultParams.container = this;
this.css({ position: 'relative', overflow: 'hidden' });
map = new JQVMap(defaultParams);
this.data('mapObject', map);
this.unbind('.jqvmap');
for (var e in apiEvents) {
if (defaultParams[e]) {
this.bind(apiEvents[e] + '.jqvmap', defaultParams[e]);
}
}
var loadEvent = jQuery.Event('load.jqvmap');
jQuery(defaultParams.container).trigger(loadEvent, map);
return map;
}
};
})(jQuery);
|