{"version":3,"sources":["webpack:///./node_modules/jvectormap-next/jquery-jvectormap.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./src/components/WorldMap/WorldMap.vue?c7dc","webpack:///src/components/WorldMap/WorldMap.vue","webpack:///./src/components/WorldMap/WorldMap.vue?56e3","webpack:///./src/components/WorldMap/WorldMap.vue"],"names":["jvm","inherits","child","parent","temp","prototype","constructor","parentClass","mixin","target","source","prop","hasOwnProperty","min","values","i","Number","MAX_VALUE","Array","length","max","MIN_VALUE","keys","object","key","push","arguments","whenImageLoaded","url","deferred","$","Deferred","img","error","reject","load","resolve","attr","isImageUrl","s","test","indexOf","searchElement","fromIndex","k","this","TypeError","O","Object","len","n","Math","abs","Infinity","factory","module","exports","apiParams","set","colors","backgroundColor","scaleColors","normalizeFunction","focus","get","selectedRegions","selectedMarkers","mapObject","regionName","fn","vectorMap","options","methodName","map","children","data","Map","maps","charAt","toUpperCase","substr","apply","slice","call","container","nullLowestDeltaTimeout","lowestDelta","toFix","toBind","document","documentMode","event","fixHooks","mouseHooks","special","mousewheel","version","setup","addEventListener","handler","onmousewheel","getLineHeight","getPageHeight","teardown","removeEventListener","elem","parseInt","css","height","settings","adjustOldDeltas","orgEvent","window","args","delta","deltaX","deltaY","absDelta","fix","type","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaMode","lineHeight","pageHeight","shouldAdjustOldDeltas","deltaFactor","unshift","clearTimeout","setTimeout","nullLowestDelta","dispatch","handle","extend","bind","trigger","unmousewheel","unbind","AbstractElement","name","config","node","createElement","properties","property","value","applyAttr","setAttribute","remove","AbstractCanvasElement","width","setSize","rootElement","classPrefix","appendChild","add","element","group","canvas","addPath","style","el","addCircle","addImage","addText","addGroup","parentGroup","AbstractShapeElement","current","isHovered","isSelected","updateStyle","setStyle","styles","attrs","mergeStyles","initial","hover","selected","selectedHover","newStyles","SVGElement","svgns","tagName","createElementNS","addClass","className","getElementCtr","ctr","getBBox","SVGGroupElement","SVGCanvasElement","defsElement","applyTransformParams","scale","transX","transY","SVGShapeElement","patternEl","imageEl","that","images","then","setAttributeNS","imageCounter","SVGPathElement","SVGCircleElement","SVGImageElement","imageUrl","offset","cx","cy","SVGTextElement","textContent","VMLElement","VMLInitialized","initializeVML","namespaces","rvml","e","createStyleSheet","addRule","x","position","left","y","top","VMLGroupElement","coordorigin","VMLCanvasElement","paths","groups","l","coordsize","getElementsByTagName","VMLShapeElement","fillElement","strokeElement","stroked","fillcolor","opacity","round","strokecolor","strokeweight","path","VMLPathElement","pathSvgToVml","on","matrix","ctrlx","ctrly","replace","segment","letter","coords","index","split","shift","join","VMLCircleElement","VectorCanvas","mode","SVGAngle","impl","SimpleScale","getValue","OrdinalScale","getTicks","ticks","label","NumericScale","minValue","maxValue","setScale","setNormalizeFunction","setMin","setMax","clearMinValue","normalize","clearMaxValue","f","pow","c","lengthes","fullLength","vectorLength","vectorSubtract","vectorToNum","vectorAdd","vectorMult","vector","num","vector1","vector2","result","sqrt","tick","v","m","extent","span","step","floor","log","LN10","err","ceil","ColorScale","rgbToArray","numToRgb","arrayToRgb","ar","d","rgb","toString","Legend","params","series","body","cssClass","vertical","legendCntVertical","append","legendCntHorizontal","render","sample","inner","html","title","attribute","border","markerStyle","background","appendTo","labelRender","DataSeries","elements","scaleConstructor","attributes","setAttributes","isArray","setValues","legend","code","val","cc","parseFloat","isNaN","clear","shape","Proj","degRad","PI","radDeg","radius","sgn","mill","lat","lng","tan","mill_inv","atan","exp","merc","merc_inv","aea","fi0","lambda0","fi1","fi2","fi","lambda","sin","C","cos","theta","ro","ro0","aea_inv","xCoord","yCoord","asin","lcc","F","lcc_inv","MapObject","getLabelText","text","getLabelOffsets","offsets","setHovered","setSelected","Region","bbox","wrapper","invisibleShape","margin","labelX","labelY","labelStyle","labelsGroup","updateLabelPosition","Marker","isImage","image","createShape","dy","r","defaultParams","Error","mapData","markers","regions","regionsColors","regionsData","defaultWidth","defaultHeight","setBackgroundColor","onResize","updateSize","resize","apiEvents","bindTouchEvents","DocumentTouch","bindContainerTouchEvents","MSGesture","bindContainerPointerEvents","bindContainerEvents","bindElementEvents","createTip","zoomButtons","bindZoomButtons","createRegions","createMarkers","focusOn","region","setFocus","setSelectedRegions","setSelectedMarkers","createSeries","baseTransX","baseTransY","baseScale","curBaseScale","applyTransform","reset","maxTransX","maxTransY","minTransX","minTransY","repositionMarkers","repositionLabels","oldPageX","oldPageY","mouseDown","panOnDrag","mousemove","pageX","pageY","mousedown","onContainerMouseUp","mouseup","zoomOnScroll","centerX","centerY","zoomStep","zoomOnScrollSpeed","tip","hide","preventDefault","touchStartScale","touchStartDistance","touchX","touchY","centerTouchX","centerTouchY","lastTouchesLength","handleTouchEvent","transXOld","transYOld","touches","originalEvent","gesture","handlePointerDownEvent","addPointer","pointerId","handleGestureEvent","translationX","translationY","offsetX","offsetY","mouseMoved","delegate","baseVal","tipText","tipShowEvent","Event","overEvent","isDefaultPrevented","show","tipWidth","tipHeight","clickEvent","regionsSelectable","markersSelectable","clearSelected","find","click","zoomAnimate","anchorX","anchorY","isCentered","animate","interval","scaleStart","scaleDiff","transXStart","transXDiff","transYStart","transYDiff","viewportChangeEvent","count","zoomMax","zoomMin","setInterval","clearInterval","itemBbox","newBbox","codes","point","undefined","latLngToPoint","getSelected","getSelectedRegions","getSelectedMarkers","select","clearSelectedRegions","clearSelectedMarkers","getMapObject","getRegionName","regionLabelsGroup","regionStyle","regionMargin","regionLabelStyle","labels","marker","markerConfig","markersArray","markersGroup","markerLabelsGroup","latLng","getMarkerPosition","markerLabelStyle","removeMarkers","projection","addMarker","seriesData","addMarkers","removeAllMarkers","inset","proj","centralMeridian","getInsetForPoint","pointToLatLng","nx","ny","insets","fill","stroke","cursor","onRegionTipShow","onRegionOver","onRegionOut","onRegionClick","onRegionSelected","onMarkerTipShow","onMarkerOver","onMarkerOut","onMarkerClick","onMarkerSelected","onViewportChange","MultiMap","maxLevel","main","multiMapLevel","history","addMap","defaultProjection","mapsLoaded","backButton","goBack","spinner","cnt","scope","multimap","mapName","mapNameByCode","drillDownPromise","state","drillDown","downloadMap","mapUrlByCode","currentMap","focusPromise","downloadPromise","always","when","pop","prevMap","multiMap","toLowerCase","global","w","noGlobal","arr","getProto","getPrototypeOf","flat","array","concat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","doc","script","getAttribute","head","parentNode","removeChild","toType","jQuery","selector","context","init","isArrayLike","jquery","toArray","pushStack","elems","ret","merge","prevObject","each","callback","first","eq","last","even","grep","_elem","odd","j","end","sort","splice","copy","copyIsArray","clone","deep","isPlainObject","expando","random","isReady","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","callbackInverse","matches","callbackExpect","arg","guid","Symbol","iterator","_i","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","els","seed","nid","match","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByClassName","qsa","testContext","toSelector","querySelectorAll","qsaError","removeAttribute","cache","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","attachEvent","createComment","getById","getElementsByName","filter","attrId","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","checked","selectedIndex","_matchIndexes","radio","checkbox","file","password","submit","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","filters","parseOnly","soFar","preFilters","cached","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","self","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","has","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","createOptions","_","flag","Identity","Thrower","ex","adoptValue","noValue","method","promise","fail","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","empty","disable","lock","fireWith","func","tuples","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","display","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","toggle","rcheckableType","rtagName","rscriptType","fragment","createDocumentFragment","div","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","nodes","htmlPrefilter","createTextNode","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","types","one","origFn","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","handleObjIn","eventHandle","events","t","handleObj","handlers","origType","elemData","create","triggered","bindType","delegateCount","mappedTypes","origCount","removeEvent","nativeEvent","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","enumerable","writable","noBubble","beforeunload","returnValue","props","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","eventPhase","metaKey","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","pointerType","screenX","screenY","targetTouches","toElement","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","cssProps","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","computedVal","extra","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","padding","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","fx","scrollTop","scrollLeft","linear","p","swing","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","defaultPrefilter","opts","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","stopped","prefilters","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","complete","timer","tweener","prefilter","speed","opt","speeds","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","conv","responseFields","dataFilter","throws","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","undelegate","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","trim","_jQuery","_$","noConflict","_vm","_h","$createElement","_c","_self","staticRenderFns","default","methods","initVectorMap","component"],"mappings":"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","file":"js/chunk-e7525f0e.f8ba1b6f.js","sourcesContent":["/**\n * @namespace jvm Holds core methods and classes used by jVectorMap.\n */\nvar jvm = {\n\n /**\n * Inherits child's prototype from the parent's one.\n * @param {Function} child\n * @param {Function} parent\n */\n inherits: function(child, parent) {\n function temp() {}\n temp.prototype = parent.prototype;\n child.prototype = new temp();\n child.prototype.constructor = child;\n child.parentClass = parent;\n },\n\n /**\n * Mixes in methods from the source constructor to the target one.\n * @param {Function} target\n * @param {Function} source\n */\n mixin: function(target, source){\n var prop;\n\n for (prop in source.prototype) {\n if (source.prototype.hasOwnProperty(prop)) {\n target.prototype[prop] = source.prototype[prop];\n }\n }\n },\n\n min: function(values){\n var min = Number.MAX_VALUE,\n i;\n\n if (values instanceof Array) {\n for (i = 0; i < values.length; i++) {\n if (values[i] < min) {\n min = values[i];\n }\n }\n } else {\n for (i in values) {\n if (values[i] < min) {\n min = values[i];\n }\n }\n }\n return min;\n },\n\n max: function(values){\n var max = Number.MIN_VALUE,\n i;\n\n if (values instanceof Array) {\n for (i = 0; i < values.length; i++) {\n if (values[i] > max) {\n max = values[i];\n }\n }\n } else {\n for (i in values) {\n if (values[i] > max) {\n max = values[i];\n }\n }\n }\n return max;\n },\n\n keys: function(object){\n var keys = [],\n key;\n\n for (key in object) {\n keys.push(key);\n }\n return keys;\n },\n\n values: function(object){\n var values = [],\n key,\n i;\n\n for (i = 0; i < arguments.length; i++) {\n object = arguments[i];\n for (key in object) {\n values.push(object[key]);\n }\n }\n return values;\n },\n\n whenImageLoaded: function(url){\n var deferred = new jvm.$.Deferred(),\n img = jvm.$('');\n\n img.error(function(){\n deferred.reject();\n }).load(function(){\n deferred.resolve(img);\n });\n img.attr('src', url);\n\n return deferred;\n },\n\n isImageUrl: function(s){\n return /\\.\\w{3,4}$/.test(s);\n }\n};\n\n/**\n * indexOf polyfill for IE < 9\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf\n */\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement, fromIndex) {\n\n var k;\n\n // 1. Let O be the result of calling ToObject passing\n // the this value as the argument.\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get\n // internal method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If len is 0, return -1.\n if (len === 0) {\n return -1;\n }\n\n // 5. If argument fromIndex was passed let n be\n // ToInteger(fromIndex); else let n be 0.\n var n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n // 6. If n >= len, return -1.\n if (n >= len) {\n return -1;\n }\n\n // 7. If n >= 0, then Let k be n.\n // 8. Else, n<0, Let k be len - abs(n).\n // If k is less than 0, then let k be 0.\n k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n // 9. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the\n // HasProperty internal method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n // i. Let elementK be the result of calling the Get\n // internal method of O with the argument ToString(k).\n // ii. Let same be the result of applying the\n // Strict Equality Comparison Algorithm to\n // searchElement and elementK.\n // iii. If same is true, return k.\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n };\n}\n/**\n * jVectorMap version 3+\n *\n * Copyright 2011-2014, Kirill Lebedev\n *\n */\n\n(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function ($) {\n jvm.$ = $;\n\n var apiParams = {\n set: {\n colors: 1,\n values: 1,\n backgroundColor: 1,\n scaleColors: 1,\n normalizeFunction: 1,\n focus: 1\n },\n get: {\n selectedRegions: 1,\n selectedMarkers: 1,\n mapObject: 1,\n regionName: 1\n }\n };\n\n $.fn.vectorMap = function(options) {\n var map,\n methodName,\n map = this.children('.jvectormap-container').data('mapObject');\n\n if (options === 'addMap') {\n jvm.Map.maps[arguments[1]] = arguments[2];\n } else if ((options === 'set' || options === 'get') && apiParams[options][arguments[1]]) {\n methodName = arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1);\n return map[options+methodName].apply(map, Array.prototype.slice.call(arguments, 2));\n } else {\n options = options || {};\n options.container = this;\n map = new jvm.Map(options);\n }\n\n return this;\n };\n}));\n/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Version: 3.1.9\n *\n * Requires: jQuery 1.2.2+\n */\n\n(function (factory) {\n if ( typeof define === 'function' && define.amd ) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function ($) {\n\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout, lowestDelta;\n\n if ( $.event.fixHooks ) {\n for ( var i = toFix.length; i; ) {\n $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n }\n }\n\n var special = $.event.special.mousewheel = {\n version: '3.1.9',\n\n setup: function() {\n if ( this.addEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.addEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = handler;\n }\n // Store the line height and page height for this particular element\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n },\n\n teardown: function() {\n if ( this.removeEventListener ) {\n for ( var i = toBind.length; i; ) {\n this.removeEventListener( toBind[--i], handler, false );\n }\n } else {\n this.onmousewheel = null;\n }\n },\n\n getLineHeight: function(elem) {\n return parseInt($(elem)['offsetParent' in $.fn ? 'offsetParent' : 'parent']().css('fontSize'), 10);\n },\n\n getPageHeight: function(elem) {\n return $(elem).height();\n },\n\n settings: {\n adjustOldDeltas: true\n }\n };\n\n $.fn.extend({\n mousewheel: function(fn) {\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n },\n\n unmousewheel: function(fn) {\n return this.unbind('mousewheel', fn);\n }\n });\n\n\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0;\n event = $.event.fix(orgEvent);\n event.type = 'mousewheel';\n\n // Old school scrollwheel delta\n if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }\n if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }\n if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }\n if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n deltaX = deltaY * -1;\n deltaY = 0;\n }\n\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n delta = deltaY === 0 ? deltaX : deltaY;\n\n // New school wheel delta (wheel event)\n if ( 'deltaY' in orgEvent ) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n if ( 'deltaX' in orgEvent ) {\n deltaX = orgEvent.deltaX;\n if ( deltaY === 0 ) { delta = deltaX * -1; }\n }\n\n // No change actually happened, no reason to go any further\n if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n // Need to convert lines and pages to pixels if we aren't already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n if ( orgEvent.deltaMode === 1 ) {\n var lineHeight = $.data(this, 'mousewheel-line-height');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if ( orgEvent.deltaMode === 2 ) {\n var pageHeight = $.data(this, 'mousewheel-page-height');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n }\n\n // Store lowest absolute delta to normalize the delta values\n absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n if ( !lowestDelta || absDelta < lowestDelta ) {\n lowestDelta = absDelta;\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n lowestDelta /= 40;\n }\n }\n\n // Adjust older deltas if necessary\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n }\n\n // Get a whole, normalized value for the deltas\n delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);\n deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n // Add information to the event object\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n event.deltaMode = 0;\n\n // Add event and delta to the front of the arguments\n args.unshift(event, delta, deltaX, deltaY);\n\n // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n\n function nullLowestDelta() {\n lowestDelta = null;\n }\n\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n }\n\n}));/**\n * Basic wrapper for DOM element.\n * @constructor\n * @param {String} name Tag name of the element\n * @param {Object} config Set of parameters to initialize element with\n */\njvm.AbstractElement = function(name, config){\n /**\n * Underlying DOM element\n * @type {DOMElement}\n * @private\n */\n this.node = this.createElement(name);\n\n /**\n * Name of underlying element\n * @type {String}\n * @private\n */\n this.name = name;\n\n /**\n * Internal store of attributes\n * @type {Object}\n * @private\n */\n this.properties = {};\n\n if (config) {\n this.set(config);\n }\n};\n\n/**\n * Set attribute of the underlying DOM element.\n * @param {String} name Name of attribute\n * @param {Number|String} config Set of parameters to initialize element with\n */\njvm.AbstractElement.prototype.set = function(property, value){\n var key;\n\n if (typeof property === 'object') {\n for (key in property) {\n this.properties[key] = property[key];\n this.applyAttr(key, property[key]);\n }\n } else {\n this.properties[property] = value;\n this.applyAttr(property, value);\n }\n};\n\n/**\n * Returns value of attribute.\n * @param {String} name Name of attribute\n */\njvm.AbstractElement.prototype.get = function(property){\n return this.properties[property];\n};\n\n/**\n * Applies attribute value to the underlying DOM element.\n * @param {String} name Name of attribute\n * @param {Number|String} config Value of attribute to apply\n * @private\n */\njvm.AbstractElement.prototype.applyAttr = function(property, value){\n this.node.setAttribute(property, value);\n};\n\njvm.AbstractElement.prototype.remove = function(){\n jvm.$(this.node).remove();\n};/**\n * Implements abstract vector canvas.\n * @constructor\n * @param {HTMLElement} container Container to put element to.\n * @param {Number} width Width of canvas.\n * @param {Number} height Height of canvas.\n */\njvm.AbstractCanvasElement = function(container, width, height){\n this.container = container;\n this.setSize(width, height);\n this.rootElement = new jvm[this.classPrefix+'GroupElement']();\n this.node.appendChild( this.rootElement.node );\n this.container.appendChild(this.node);\n}\n\n/**\n * Add element to the certain group inside of the canvas.\n * @param {HTMLElement} element Element to add to canvas.\n * @param {HTMLElement} group Group to add element into or into root group if not provided.\n */\njvm.AbstractCanvasElement.prototype.add = function(element, group){\n group = group || this.rootElement;\n group.add(element);\n element.canvas = this;\n}\n\n/**\n * Create path and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add path into.\n */\njvm.AbstractCanvasElement.prototype.addPath = function(config, style, group){\n var el = new jvm[this.classPrefix+'PathElement'](config, style);\n\n this.add(el, group);\n return el;\n};\n\n/**\n * Create circle and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add circle into.\n */\njvm.AbstractCanvasElement.prototype.addCircle = function(config, style, group){\n var el = new jvm[this.classPrefix+'CircleElement'](config, style);\n\n this.add(el, group);\n return el;\n};\n\n/**\n * Create circle and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add circle into.\n */\njvm.AbstractCanvasElement.prototype.addImage = function(config, style, group){\n var el = new jvm[this.classPrefix+'ImageElement'](config, style);\n\n this.add(el, group);\n return el;\n};\n\n/**\n * Create text and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add circle into.\n */\njvm.AbstractCanvasElement.prototype.addText = function(config, style, group){\n var el = new jvm[this.classPrefix+'TextElement'](config, style);\n\n this.add(el, group);\n return el;\n};\n\n/**\n * Add group to the another group inside of the canvas.\n * @param {HTMLElement} group Group to add circle into or root group if not provided.\n */\njvm.AbstractCanvasElement.prototype.addGroup = function(parentGroup){\n var el = new jvm[this.classPrefix+'GroupElement']();\n\n if (parentGroup) {\n parentGroup.node.appendChild(el.node);\n } else {\n this.node.appendChild(el.node);\n }\n el.canvas = this;\n return el;\n};/**\n * Abstract shape element. Shape element represents some visual vector or raster object.\n * @constructor\n * @param {String} name Tag name of the element.\n * @param {Object} config Set of parameters to initialize element with.\n * @param {Object} style Object with styles to set on element initialization.\n */\njvm.AbstractShapeElement = function(name, config, style){\n this.style = style || {};\n this.style.current = this.style.current || {};\n this.isHovered = false;\n this.isSelected = false;\n this.updateStyle();\n};\n\n/**\n * Set element's style.\n * @param {Object|String} property Could be string to set only one property or object to set several style properties at once.\n * @param {String} value Value to set in case only one property should be set.\n */\njvm.AbstractShapeElement.prototype.setStyle = function(property, value){\n var styles = {};\n\n if (typeof property === 'object') {\n styles = property;\n } else {\n styles[property] = value;\n }\n jvm.$.extend(this.style.current, styles);\n this.updateStyle();\n};\n\n\njvm.AbstractShapeElement.prototype.updateStyle = function(){\n var attrs = {};\n\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.initial);\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.current);\n if (this.isHovered) {\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.hover);\n }\n if (this.isSelected) {\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selected);\n if (this.isHovered) {\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selectedHover);\n }\n }\n this.set(attrs);\n};\n\njvm.AbstractShapeElement.mergeStyles = function(styles, newStyles){\n var key;\n\n newStyles = newStyles || {};\n for (key in newStyles) {\n if (newStyles[key] === null) {\n delete styles[key];\n } else {\n styles[key] = newStyles[key];\n }\n }\n}/**\n * Wrapper for SVG element.\n * @constructor\n * @extends jvm.AbstractElement\n * @param {String} name Tag name of the element\n * @param {Object} config Set of parameters to initialize element with\n */\n\njvm.SVGElement = function(name, config){\n jvm.SVGElement.parentClass.apply(this, arguments);\n}\n\njvm.inherits(jvm.SVGElement, jvm.AbstractElement);\n\njvm.SVGElement.svgns = \"http://www.w3.org/2000/svg\";\n\n/**\n * Creates DOM element.\n * @param {String} tagName Name of element\n * @private\n * @returns DOMElement\n */\njvm.SVGElement.prototype.createElement = function( tagName ){\n return document.createElementNS( jvm.SVGElement.svgns, tagName );\n};\n\n/**\n * Adds CSS class for underlying DOM element.\n * @param {String} className Name of CSS class name\n */\njvm.SVGElement.prototype.addClass = function( className ){\n this.node.setAttribute('class', className);\n};\n\n/**\n * Returns constructor for element by name prefixed with 'VML'.\n * @param {String} ctr Name of basic constructor to return\n * proper implementation for.\n * @returns Function\n * @private\n */\njvm.SVGElement.prototype.getElementCtr = function( ctr ){\n return jvm['SVG'+ctr];\n};\n\njvm.SVGElement.prototype.getBBox = function(){\n return this.node.getBBox();\n};jvm.SVGGroupElement = function(){\n jvm.SVGGroupElement.parentClass.call(this, 'g');\n}\n\njvm.inherits(jvm.SVGGroupElement, jvm.SVGElement);\n\njvm.SVGGroupElement.prototype.add = function(element){\n this.node.appendChild( element.node );\n};jvm.SVGCanvasElement = function(container, width, height){\n this.classPrefix = 'SVG';\n jvm.SVGCanvasElement.parentClass.call(this, 'svg');\n\n this.defsElement = new jvm.SVGElement('defs');\n this.node.appendChild( this.defsElement.node );\n\n jvm.AbstractCanvasElement.apply(this, arguments);\n}\n\njvm.inherits(jvm.SVGCanvasElement, jvm.SVGElement);\njvm.mixin(jvm.SVGCanvasElement, jvm.AbstractCanvasElement);\n\njvm.SVGCanvasElement.prototype.setSize = function(width, height){\n this.width = width;\n this.height = height;\n this.node.setAttribute('width', width);\n this.node.setAttribute('height', height);\n};\n\njvm.SVGCanvasElement.prototype.applyTransformParams = function(scale, transX, transY) {\n this.scale = scale;\n this.transX = transX;\n this.transY = transY;\n this.rootElement.node.setAttribute('transform', 'scale('+scale+') translate('+transX+', '+transY+')');\n};jvm.SVGShapeElement = function(name, config, style){\n jvm.SVGShapeElement.parentClass.call(this, name, config);\n jvm.AbstractShapeElement.apply(this, arguments);\n};\n\njvm.inherits(jvm.SVGShapeElement, jvm.SVGElement);\njvm.mixin(jvm.SVGShapeElement, jvm.AbstractShapeElement);\n\njvm.SVGShapeElement.prototype.applyAttr = function(attr, value){\n var patternEl,\n imageEl,\n that = this;\n\n if (attr === 'fill' && jvm.isImageUrl(value)) {\n if (!jvm.SVGShapeElement.images[value]) {\n jvm.whenImageLoaded(value).then(function(img){\n imageEl = new jvm.SVGElement('image');\n imageEl.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', value);\n imageEl.applyAttr('x', '0');\n imageEl.applyAttr('y', '0');\n imageEl.applyAttr('width', img[0].width);\n imageEl.applyAttr('height', img[0].height);\n\n patternEl = new jvm.SVGElement('pattern');\n patternEl.applyAttr('id', 'image'+jvm.SVGShapeElement.imageCounter);\n patternEl.applyAttr('x', 0);\n patternEl.applyAttr('y', 0);\n patternEl.applyAttr('width', img[0].width / 2);\n patternEl.applyAttr('height', img[0].height / 2);\n patternEl.applyAttr('viewBox', '0 0 '+img[0].width+' '+img[0].height);\n patternEl.applyAttr('patternUnits', 'userSpaceOnUse');\n patternEl.node.appendChild( imageEl.node );\n\n that.canvas.defsElement.node.appendChild( patternEl.node );\n\n jvm.SVGShapeElement.images[value] = jvm.SVGShapeElement.imageCounter++;\n\n that.applyAttr('fill', 'url(#image'+jvm.SVGShapeElement.images[value]+')');\n });\n } else {\n this.applyAttr('fill', 'url(#image'+jvm.SVGShapeElement.images[value]+')');\n }\n } else {\n jvm.SVGShapeElement.parentClass.prototype.applyAttr.apply(this, arguments);\n }\n};\n\njvm.SVGShapeElement.imageCounter = 1;\njvm.SVGShapeElement.images = {};jvm.SVGPathElement = function(config, style){\n jvm.SVGPathElement.parentClass.call(this, 'path', config, style);\n this.node.setAttribute('fill-rule', 'evenodd');\n}\n\njvm.inherits(jvm.SVGPathElement, jvm.SVGShapeElement);jvm.SVGCircleElement = function(config, style){\n jvm.SVGCircleElement.parentClass.call(this, 'circle', config, style);\n};\n\njvm.inherits(jvm.SVGCircleElement, jvm.SVGShapeElement);jvm.SVGImageElement = function(config, style){\n jvm.SVGImageElement.parentClass.call(this, 'image', config, style);\n};\n\njvm.inherits(jvm.SVGImageElement, jvm.SVGShapeElement);\n\njvm.SVGImageElement.prototype.applyAttr = function(attr, value){\n var that = this,\n imageUrl;\n\n if (attr == 'image') {\n if (typeof value == 'object') {\n imageUrl = value.url;\n this.offset = value.offset;\n } else {\n imageUrl = value;\n this.offset = [0, 0];\n }\n\n jvm.whenImageLoaded(imageUrl).then(function(img){\n that.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', imageUrl);\n that.width = img[0].width;\n that.height = img[0].height;\n that.applyAttr('width', that.width);\n that.applyAttr('height', that.height);\n\n that.applyAttr('x', that.cx - that.width / 2 + that.offset[0]);\n that.applyAttr('y', that.cy - that.height / 2 + that.offset[1]);\n\n jvm.$(that.node).trigger('imageloaded', [img]);\n });\n } else if(attr == 'cx') {\n this.cx = value;\n if (this.width) {\n this.applyAttr('x', value - this.width / 2 + this.offset[0]);\n }\n } else if(attr == 'cy') {\n this.cy = value;\n if (this.height) {\n this.applyAttr('y', value - this.height / 2 + this.offset[1]);\n }\n } else {\n jvm.SVGImageElement.parentClass.prototype.applyAttr.apply(this, arguments);\n }\n};\njvm.SVGTextElement = function(config, style){\n jvm.SVGTextElement.parentClass.call(this, 'text', config, style);\n}\n\njvm.inherits(jvm.SVGTextElement, jvm.SVGShapeElement);\n\njvm.SVGTextElement.prototype.applyAttr = function(attr, value){\n if (attr === 'text') {\n this.node.textContent = value;\n } else {\n jvm.SVGTextElement.parentClass.prototype.applyAttr.apply(this, arguments);\n }\n};/**\n * Wrapper for VML element.\n * @constructor\n * @extends jvm.AbstractElement\n * @param {String} name Tag name of the element\n * @param {Object} config Set of parameters to initialize element with\n */\n\njvm.VMLElement = function(name, config){\n if (!jvm.VMLElement.VMLInitialized) {\n jvm.VMLElement.initializeVML();\n }\n\n jvm.VMLElement.parentClass.apply(this, arguments);\n};\n\njvm.inherits(jvm.VMLElement, jvm.AbstractElement);\n\n/**\n * Shows if VML was already initialized for the current document or not.\n * @static\n * @private\n * @type {Boolean}\n */\njvm.VMLElement.VMLInitialized = false;\n\n/**\n * Initializes VML handling before creating the first element\n * (adds CSS class and creates namespace). Adds one of two forms\n * of createElement method depending of support by browser.\n * @static\n * @private\n */\n\n // The following method of VML handling is borrowed from the\n // Raphael library by Dmitry Baranovsky.\n\njvm.VMLElement.initializeVML = function(){\n try {\n if (!document.namespaces.rvml) {\n document.namespaces.add(\"rvml\",\"urn:schemas-microsoft-com:vml\");\n }\n /**\n * Creates DOM element.\n * @param {String} tagName Name of element\n * @private\n * @returns DOMElement\n */\n jvm.VMLElement.prototype.createElement = function (tagName) {\n return document.createElement('');\n };\n } catch (e) {\n /**\n * @private\n */\n jvm.VMLElement.prototype.createElement = function (tagName) {\n return document.createElement('<' + tagName + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">');\n };\n }\n document.createStyleSheet().addRule(\".rvml\", \"behavior:url(#default#VML)\");\n jvm.VMLElement.VMLInitialized = true;\n};\n\n/**\n * Returns constructor for element by name prefixed with 'VML'.\n * @param {String} ctr Name of basic constructor to return\n * proper implementation for.\n * @returns Function\n * @private\n */\njvm.VMLElement.prototype.getElementCtr = function( ctr ){\n return jvm['VML'+ctr];\n};\n\n/**\n * Adds CSS class for underlying DOM element.\n * @param {String} className Name of CSS class name\n */\njvm.VMLElement.prototype.addClass = function( className ){\n jvm.$(this.node).addClass(className);\n};\n\n/**\n * Applies attribute value to the underlying DOM element.\n * @param {String} name Name of attribute\n * @param {Number|String} config Value of attribute to apply\n * @private\n */\njvm.VMLElement.prototype.applyAttr = function( attr, value ){\n this.node[attr] = value;\n};\n\n/**\n * Returns boundary box for the element.\n * @returns {Object} Boundary box with numeric fields: x, y, width, height\n * @override\n */\njvm.VMLElement.prototype.getBBox = function(){\n var node = jvm.$(this.node);\n\n return {\n x: node.position().left / this.canvas.scale,\n y: node.position().top / this.canvas.scale,\n width: node.width() / this.canvas.scale,\n height: node.height() / this.canvas.scale\n };\n};jvm.VMLGroupElement = function(){\n jvm.VMLGroupElement.parentClass.call(this, 'group');\n\n this.node.style.left = '0px';\n this.node.style.top = '0px';\n this.node.coordorigin = \"0 0\";\n};\n\njvm.inherits(jvm.VMLGroupElement, jvm.VMLElement);\n\njvm.VMLGroupElement.prototype.add = function(element){\n this.node.appendChild( element.node );\n};jvm.VMLCanvasElement = function(container, width, height){\n this.classPrefix = 'VML';\n jvm.VMLCanvasElement.parentClass.call(this, 'group');\n jvm.AbstractCanvasElement.apply(this, arguments);\n this.node.style.position = 'absolute';\n};\n\njvm.inherits(jvm.VMLCanvasElement, jvm.VMLElement);\njvm.mixin(jvm.VMLCanvasElement, jvm.AbstractCanvasElement);\n\njvm.VMLCanvasElement.prototype.setSize = function(width, height){\n var paths,\n groups,\n i,\n l;\n\n this.width = width;\n this.height = height;\n this.node.style.width = width + \"px\";\n this.node.style.height = height + \"px\";\n this.node.coordsize = width+' '+height;\n this.node.coordorigin = \"0 0\";\n if (this.rootElement) {\n paths = this.rootElement.node.getElementsByTagName('shape');\n for(i = 0, l = paths.length; i < l; i++) {\n paths[i].coordsize = width+' '+height;\n paths[i].style.width = width+'px';\n paths[i].style.height = height+'px';\n }\n groups = this.node.getElementsByTagName('group');\n for(i = 0, l = groups.length; i < l; i++) {\n groups[i].coordsize = width+' '+height;\n groups[i].style.width = width+'px';\n groups[i].style.height = height+'px';\n }\n }\n};\n\njvm.VMLCanvasElement.prototype.applyTransformParams = function(scale, transX, transY) {\n this.scale = scale;\n this.transX = transX;\n this.transY = transY;\n this.rootElement.node.coordorigin = (this.width-transX-this.width/100)+','+(this.height-transY-this.height/100);\n this.rootElement.node.coordsize = this.width/scale+','+this.height/scale;\n};jvm.VMLShapeElement = function(name, config){\n jvm.VMLShapeElement.parentClass.call(this, name, config);\n\n this.fillElement = new jvm.VMLElement('fill');\n this.strokeElement = new jvm.VMLElement('stroke');\n this.node.appendChild(this.fillElement.node);\n this.node.appendChild(this.strokeElement.node);\n this.node.stroked = false;\n\n jvm.AbstractShapeElement.apply(this, arguments);\n};\n\njvm.inherits(jvm.VMLShapeElement, jvm.VMLElement);\njvm.mixin(jvm.VMLShapeElement, jvm.AbstractShapeElement);\n\njvm.VMLShapeElement.prototype.applyAttr = function(attr, value){\n switch (attr) {\n case 'fill':\n this.node.fillcolor = value;\n break;\n case 'fill-opacity':\n this.fillElement.node.opacity = Math.round(value*100)+'%';\n break;\n case 'stroke':\n if (value === 'none') {\n this.node.stroked = false;\n } else {\n this.node.stroked = true;\n }\n this.node.strokecolor = value;\n break;\n case 'stroke-opacity':\n this.strokeElement.node.opacity = Math.round(value*100)+'%';\n break;\n case 'stroke-width':\n if (parseInt(value, 10) === 0) {\n this.node.stroked = false;\n } else {\n this.node.stroked = true;\n }\n this.node.strokeweight = value;\n break;\n case 'd':\n this.node.path = jvm.VMLPathElement.pathSvgToVml(value);\n break;\n default:\n jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this, arguments);\n }\n};jvm.VMLPathElement = function(config, style){\n var scale = new jvm.VMLElement('skew');\n\n jvm.VMLPathElement.parentClass.call(this, 'shape', config, style);\n\n this.node.coordorigin = \"0 0\";\n\n scale.node.on = true;\n scale.node.matrix = '0.01,0,0,0.01,0,0';\n scale.node.offset = '0,0';\n\n this.node.appendChild(scale.node);\n};\n\njvm.inherits(jvm.VMLPathElement, jvm.VMLShapeElement);\n\njvm.VMLPathElement.prototype.applyAttr = function(attr, value){\n if (attr === 'd') {\n this.node.path = jvm.VMLPathElement.pathSvgToVml(value);\n } else {\n jvm.VMLShapeElement.prototype.applyAttr.call(this, attr, value);\n }\n};\n\njvm.VMLPathElement.pathSvgToVml = function(path) {\n var cx = 0, cy = 0, ctrlx, ctrly;\n\n path = path.replace(/(-?\\d+)e(-?\\d+)/g, '0');\n return path.replace(/([MmLlHhVvCcSs])\\s*((?:-?\\d*(?:\\.\\d+)?\\s*,?\\s*)+)/g, function(segment, letter, coords, index){\n coords = coords.replace(/(\\d)-/g, '$1,-')\n .replace(/^\\s+/g, '')\n .replace(/\\s+$/g, '')\n .replace(/\\s+/g, ',').split(',');\n if (!coords[0]) coords.shift();\n for (var i=0, l=coords.length; i= 0) {\n value -= lengthes[i];\n i++;\n }\n\n if (i == this.scale.length - 1) {\n value = this.vectorToNum(this.scale[i])\n } else {\n value = (\n this.vectorToNum(\n this.vectorAdd(this.scale[i],\n this.vectorMult(\n this.vectorSubtract(this.scale[i+1], this.scale[i]),\n (value) / (lengthes[i])\n )\n )\n )\n );\n }\n\n return value;\n },\n\n vectorToNum: function(vector) {\n var num = 0,\n i;\n\n for (i = 0; i < vector.length; i++) {\n num += Math.round(vector[i])*Math.pow(256, vector.length-i-1);\n }\n return num;\n },\n\n vectorSubtract: function(vector1, vector2) {\n var vector = [],\n i;\n\n for (i = 0; i < vector1.length; i++) {\n vector[i] = vector1[i] - vector2[i];\n }\n return vector;\n },\n\n vectorAdd: function(vector1, vector2) {\n var vector = [],\n i;\n\n for (i = 0; i < vector1.length; i++) {\n vector[i] = vector1[i] + vector2[i];\n }\n return vector;\n },\n\n vectorMult: function(vector, num) {\n var result = [],\n i;\n\n for (i = 0; i < vector.length; i++) {\n result[i] = vector[i] * num;\n }\n return result;\n },\n\n vectorLength: function(vector) {\n var result = 0,\n i;\n for (i = 0; i < vector.length; i++) {\n result += vector[i] * vector[i];\n }\n return Math.sqrt(result);\n },\n\n /* Derived from d3 implementation https://github.com/mbostock/d3/blob/master/src/scale/linear.js#L94 */\n getTicks: function(){\n var m = 5,\n extent = [this.clearMinValue, this.clearMaxValue],\n span = extent[1] - extent[0],\n step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)),\n err = m / span * step,\n ticks = [],\n tick,\n v;\n\n if (err <= .15) step *= 10;\n else if (err <= .35) step *= 5;\n else if (err <= .75) step *= 2;\n\n extent[0] = Math.floor(extent[0] / step) * step;\n extent[1] = Math.ceil(extent[1] / step) * step;\n\n tick = extent[0];\n while (tick <= extent[1]) {\n if (tick == extent[0]) {\n v = this.clearMinValue;\n } else if (tick == extent[1]) {\n v = this.clearMaxValue;\n } else {\n v = tick;\n }\n ticks.push({\n label: tick,\n value: this.getValue(v)\n });\n tick += step;\n }\n\n return ticks;\n }\n};\njvm.ColorScale = function(colors, normalizeFunction, minValue, maxValue) {\n jvm.ColorScale.parentClass.apply(this, arguments);\n}\n\njvm.inherits(jvm.ColorScale, jvm.NumericScale);\n\njvm.ColorScale.prototype.setScale = function(scale) {\n var i;\n\n for (i = 0; i < scale.length; i++) {\n this.scale[i] = jvm.ColorScale.rgbToArray(scale[i]);\n }\n};\n\njvm.ColorScale.prototype.getValue = function(value) {\n return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this, value));\n};\n\njvm.ColorScale.arrayToRgb = function(ar) {\n var rgb = '#',\n d,\n i;\n\n for (i = 0; i < ar.length; i++) {\n d = ar[i].toString(16);\n rgb += d.length == 1 ? '0'+d : d;\n }\n return rgb;\n};\n\njvm.ColorScale.numToRgb = function(num) {\n num = num.toString(16);\n\n while (num.length < 6) {\n num = '0' + num;\n }\n\n return '#'+num;\n};\n\njvm.ColorScale.rgbToArray = function(rgb) {\n rgb = rgb.substr(1);\n return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];\n};/**\n * Represents map legend.\n * @constructor\n * @param {Object} params Configuration parameters.\n * @param {String} params.cssClass Additional CSS class to apply to legend element.\n * @param {Boolean} params.vertical If true legend will be rendered as vertical.\n * @param {String} params.title Legend title.\n * @param {Function} params.labelRender Method to convert series values to legend labels.\n */\njvm.Legend = function(params) {\n this.params = params || {};\n this.map = this.params.map;\n this.series = this.params.series;\n this.body = jvm.$('');\n this.body.addClass('jvectormap-legend');\n if (this.params.cssClass) {\n this.body.addClass(this.params.cssClass);\n }\n\n if (params.vertical) {\n this.map.legendCntVertical.append( this.body );\n } else {\n this.map.legendCntHorizontal.append( this.body );\n }\n\n this.render();\n}\n\njvm.Legend.prototype.render = function(){\n var ticks = this.series.scale.getTicks(),\n i,\n inner = jvm.$('').addClass('jvectormap-legend-inner'),\n tick,\n sample,\n label;\n\n this.body.html('');\n if (this.params.title) {\n this.body.append(\n jvm.$('').addClass('jvectormap-legend-title').html(this.params.title)\n );\n }\n this.body.append(inner);\n\n for (i = 0; i < ticks.length; i++) {\n tick = jvm.$('').addClass('jvectormap-legend-tick');\n sample = jvm.$('').addClass('jvectormap-legend-tick-sample');\n\n switch (this.series.params.attribute) {\n case 'fill':\n if (jvm.isImageUrl(ticks[i].value)) {\n sample.css('background', 'url('+ticks[i].value+')');\n } else {\n sample.css('background', ticks[i].value);\n }\n break;\n case 'stroke':\n sample.css('background', ticks[i].value);\n break;\n case 'image':\n sample.css('background', 'url('+(typeof ticks[i].value === 'object' ? ticks[i].value.url : ticks[i].value)+') no-repeat center center');\n break;\n case 'r':\n jvm.$('').css({\n 'border-radius': ticks[i].value,\n border: this.map.params.markerStyle.initial['stroke-width']+'px '+\n this.map.params.markerStyle.initial['stroke']+' solid',\n width: ticks[i].value * 2 + 'px',\n height: ticks[i].value * 2 + 'px',\n background: this.map.params.markerStyle.initial['fill']\n }).appendTo(sample);\n break;\n }\n tick.append( sample );\n label = ticks[i].label;\n if (this.params.labelRender) {\n label = this.params.labelRender(label);\n }\n tick.append( jvm.$('
'+label+'
').addClass('jvectormap-legend-tick-text') );\n inner.append(tick);\n }\n inner.append( jvm.$('').css('clear', 'both') );\n}/**\n * Creates data series.\n * @constructor\n * @param {Object} params Parameters to initialize series with.\n * @param {Array} params.values The data set to visualize.\n * @param {String} params.attribute Numeric, color or image attribute to use for data visualization. This could be: fill, stroke, fill-opacity, stroke-opacity for markers and regions and r (radius) or image for markers only.\n * @param {Array} params.scale Values used to map a dimension of data to a visual representation. The first value sets visualization for minimum value from the data set and the last value sets visualization for the maximum value. There also could be intermidiate values. Default value is ['#C8EEFF', '#0071A4'].\n * @param {Function|String} params.normalizeFunction The function used to map input values to the provided scale. This parameter could be provided as function or one of the strings: 'linear' or 'polynomial', while 'linear' is used by default. The function provided takes value from the data set as an input and returns corresponding value from the scale.\n * @param {Number} params.min Minimum value of the data set. Could be calculated automatically if not provided.\n * @param {Number} params.max Maximum value of the data set. Could be calculated automatically if not provided.\n */\njvm.DataSeries = function(params, elements, map) {\n var scaleConstructor;\n\n params = params || {};\n params.attribute = params.attribute || 'fill';\n\n this.elements = elements;\n this.params = params;\n this.map = map;\n\n if (params.attributes) {\n this.setAttributes(params.attributes);\n }\n\n if (jvm.$.isArray(params.scale)) {\n scaleConstructor = (params.attribute === 'fill' || params.attribute === 'stroke') ? jvm.ColorScale : jvm.NumericScale;\n this.scale = new scaleConstructor(params.scale, params.normalizeFunction, params.min, params.max);\n } else if (params.scale) {\n this.scale = new jvm.OrdinalScale(params.scale);\n } else {\n this.scale = new jvm.SimpleScale(params.scale);\n }\n\n this.values = params.values || {};\n this.setValues(this.values);\n\n if (this.params.legend) {\n this.legend = new jvm.Legend(jvm.$.extend({\n map: this.map,\n series: this\n }, this.params.legend))\n }\n};\n\njvm.DataSeries.prototype = {\n setAttributes: function(key, attr){\n var attrs = key,\n code;\n\n if (typeof key == 'string') {\n if (this.elements[key]) {\n this.elements[key].setStyle(this.params.attribute, attr);\n }\n } else {\n for (code in attrs) {\n if (this.elements[code]) {\n this.elements[code].element.setStyle(this.params.attribute, attrs[code]);\n }\n }\n }\n },\n\n /**\n * Set values for the data set.\n * @param {Object} values Object which maps codes of regions or markers to values.\n */\n setValues: function(values) {\n var max = -Number.MAX_VALUE,\n min = Number.MAX_VALUE,\n val,\n cc,\n attrs = {};\n\n if (!(this.scale instanceof jvm.OrdinalScale) && !(this.scale instanceof jvm.SimpleScale)) {\n // we have a color scale as an array\n if (typeof this.params.min === 'undefined' || typeof this.params.max === 'undefined') {\n // min and/or max are not defined, so calculate them\n for (cc in values) {\n val = parseFloat(values[cc]);\n if (val > max) max = val;\n if (val < min) min = val;\n }\n }\n\n if (typeof this.params.min === 'undefined') {\n this.scale.setMin(min);\n this.params.min = min;\n } else {\n this.scale.setMin(this.params.min);\n }\n\n if (typeof this.params.max === 'undefined') {\n this.scale.setMax(max);\n this.params.max = max;\n } else {\n this.scale.setMax(this.params.max);\n }\n\n for (cc in values) {\n if (cc != 'indexOf') {\n val = parseFloat(values[cc]);\n if (!isNaN(val)) {\n attrs[cc] = this.scale.getValue(val);\n } else {\n attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];\n }\n }\n }\n } else {\n for (cc in values) {\n if (values[cc]) {\n attrs[cc] = this.scale.getValue(values[cc]);\n } else {\n attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];\n }\n }\n }\n\n this.setAttributes(attrs);\n jvm.$.extend(this.values, values);\n },\n\n clear: function(){\n var key,\n attrs = {};\n\n for (key in this.values) {\n if (this.elements[key]) {\n attrs[key] = this.elements[key].element.shape.style.initial[this.params.attribute];\n }\n }\n this.setAttributes(attrs);\n this.values = {};\n },\n\n /**\n * Set scale of the data series.\n * @param {Array} scale Values representing scale.\n */\n setScale: function(scale) {\n this.scale.setScale(scale);\n if (this.values) {\n this.setValues(this.values);\n }\n },\n\n /**\n * Set normalize function of the data series.\n * @param {Function|String} f Normalize function.\n */\n setNormalizeFunction: function(f) {\n this.scale.setNormalizeFunction(f);\n if (this.values) {\n this.setValues(this.values);\n }\n }\n};\n/**\n * Contains methods for transforming point on sphere to\n * Cartesian coordinates using various projections.\n * @class\n */\njvm.Proj = {\n degRad: 180 / Math.PI,\n radDeg: Math.PI / 180,\n radius: 6381372,\n\n sgn: function(n){\n if (n > 0) {\n return 1;\n } else if (n < 0) {\n return -1;\n } else {\n return n;\n }\n },\n\n /**\n * Converts point on sphere to the Cartesian coordinates using Miller projection\n * @param {Number} lat Latitude in degrees\n * @param {Number} lng Longitude in degrees\n * @param {Number} c Central meridian in degrees\n */\n mill: function(lat, lng, c){\n return {\n x: this.radius * (lng - c) * this.radDeg,\n y: - this.radius * Math.log(Math.tan((45 + 0.4 * lat) * this.radDeg)) / 0.8\n };\n },\n\n /**\n * Inverse function of mill()\n * Converts Cartesian coordinates to point on sphere using Miller projection\n * @param {Number} x X of point in Cartesian system as integer\n * @param {Number} y Y of point in Cartesian system as integer\n * @param {Number} c Central meridian in degrees\n */\n mill_inv: function(x, y, c){\n return {\n lat: (2.5 * Math.atan(Math.exp(0.8 * y / this.radius)) - 5 * Math.PI / 8) * this.degRad,\n lng: (c * this.radDeg + x / this.radius) * this.degRad\n };\n },\n\n /**\n * Converts point on sphere to the Cartesian coordinates using Mercator projection\n * @param {Number} lat Latitude in degrees\n * @param {Number} lng Longitude in degrees\n * @param {Number} c Central meridian in degrees\n */\n merc: function(lat, lng, c){\n return {\n x: this.radius * (lng - c) * this.radDeg,\n y: - this.radius * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360))\n };\n },\n\n /**\n * Inverse function of merc()\n * Converts Cartesian coordinates to point on sphere using Mercator projection\n * @param {Number} x X of point in Cartesian system as integer\n * @param {Number} y Y of point in Cartesian system as integer\n * @param {Number} c Central meridian in degrees\n */\n merc_inv: function(x, y, c){\n return {\n lat: (2 * Math.atan(Math.exp(y / this.radius)) - Math.PI / 2) * this.degRad,\n lng: (c * this.radDeg + x / this.radius) * this.degRad\n };\n },\n\n /**\n * Converts point on sphere to the Cartesian coordinates using Albers Equal-Area Conic\n * projection\n * @see Albers Equal-Area Conic projection\n * @param {Number} lat Latitude in degrees\n * @param {Number} lng Longitude in degrees\n * @param {Number} c Central meridian in degrees\n */\n aea: function(lat, lng, c){\n var fi0 = 0,\n lambda0 = c * this.radDeg,\n fi1 = 29.5 * this.radDeg,\n fi2 = 45.5 * this.radDeg,\n fi = lat * this.radDeg,\n lambda = lng * this.radDeg,\n n = (Math.sin(fi1)+Math.sin(fi2)) / 2,\n C = Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),\n theta = n*(lambda-lambda0),\n ro = Math.sqrt(C-2*n*Math.sin(fi))/n,\n ro0 = Math.sqrt(C-2*n*Math.sin(fi0))/n;\n\n return {\n x: ro * Math.sin(theta) * this.radius,\n y: - (ro0 - ro * Math.cos(theta)) * this.radius\n };\n },\n\n /**\n * Converts Cartesian coordinates to the point on sphere using Albers Equal-Area Conic\n * projection\n * @see Albers Equal-Area Conic projection\n * @param {Number} x X of point in Cartesian system as integer\n * @param {Number} y Y of point in Cartesian system as integer\n * @param {Number} c Central meridian in degrees\n */\n aea_inv: function(xCoord, yCoord, c){\n var x = xCoord / this.radius,\n y = yCoord / this.radius,\n fi0 = 0,\n lambda0 = c * this.radDeg,\n fi1 = 29.5 * this.radDeg,\n fi2 = 45.5 * this.radDeg,\n n = (Math.sin(fi1)+Math.sin(fi2)) / 2,\n C = Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),\n ro0 = Math.sqrt(C-2*n*Math.sin(fi0))/n,\n ro = Math.sqrt(x*x+(ro0-y)*(ro0-y)),\n theta = Math.atan( x / (ro0 - y) );\n\n return {\n lat: (Math.asin((C - ro * ro * n * n) / (2 * n))) * this.degRad,\n lng: (lambda0 + theta / n) * this.degRad\n };\n },\n\n /**\n * Converts point on sphere to the Cartesian coordinates using Lambert conformal\n * conic projection\n * @see Lambert Conformal Conic Projection\n * @param {Number} lat Latitude in degrees\n * @param {Number} lng Longitude in degrees\n * @param {Number} c Central meridian in degrees\n */\n lcc: function(lat, lng, c){\n var fi0 = 0,\n lambda0 = c * this.radDeg,\n lambda = lng * this.radDeg,\n fi1 = 33 * this.radDeg,\n fi2 = 45 * this.radDeg,\n fi = lat * this.radDeg,\n n = Math.log( Math.cos(fi1) * (1 / Math.cos(fi2)) ) / Math.log( Math.tan( Math.PI / 4 + fi2 / 2) * (1 / Math.tan( Math.PI / 4 + fi1 / 2) ) ),\n F = ( Math.cos(fi1) * Math.pow( Math.tan( Math.PI / 4 + fi1 / 2 ), n ) ) / n,\n ro = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi / 2 ), n ),\n ro0 = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi0 / 2 ), n );\n\n return {\n x: ro * Math.sin( n * (lambda - lambda0) ) * this.radius,\n y: - (ro0 - ro * Math.cos( n * (lambda - lambda0) ) ) * this.radius\n };\n },\n\n /**\n * Converts Cartesian coordinates to the point on sphere using Lambert conformal conic\n * projection\n * @see Lambert Conformal Conic Projection\n * @param {Number} x X of point in Cartesian system as integer\n * @param {Number} y Y of point in Cartesian system as integer\n * @param {Number} c Central meridian in degrees\n */\n lcc_inv: function(xCoord, yCoord, c){\n var x = xCoord / this.radius,\n y = yCoord / this.radius,\n fi0 = 0,\n lambda0 = c * this.radDeg,\n fi1 = 33 * this.radDeg,\n fi2 = 45 * this.radDeg,\n n = Math.log( Math.cos(fi1) * (1 / Math.cos(fi2)) ) / Math.log( Math.tan( Math.PI / 4 + fi2 / 2) * (1 / Math.tan( Math.PI / 4 + fi1 / 2) ) ),\n F = ( Math.cos(fi1) * Math.pow( Math.tan( Math.PI / 4 + fi1 / 2 ), n ) ) / n,\n ro0 = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi0 / 2 ), n ),\n ro = this.sgn(n) * Math.sqrt(x*x+(ro0-y)*(ro0-y)),\n theta = Math.atan( x / (ro0 - y) );\n\n return {\n lat: (2 * Math.atan(Math.pow(F/ro, 1/n)) - Math.PI / 2) * this.degRad,\n lng: (lambda0 + theta / n) * this.degRad\n };\n }\n};jvm.MapObject = function(config){};\n\njvm.MapObject.prototype.getLabelText = function(key){\n var text;\n\n if (this.config.label) {\n if (typeof this.config.label.render === 'function') {\n text = this.config.label.render(key);\n } else {\n text = key;\n }\n } else {\n text = null;\n }\n return text;\n}\n\njvm.MapObject.prototype.getLabelOffsets = function(key){\n var offsets;\n\n if (this.config.label) {\n if (typeof this.config.label.offsets === 'function') {\n offsets = this.config.label.offsets(key);\n } else if (typeof this.config.label.offsets === 'object') {\n offsets = this.config.label.offsets[key];\n }\n }\n return offsets || [0, 0];\n}\n\n/**\n * Set hovered state to the element. Hovered state means mouse cursor is over element. Styles will be updates respectively.\n * @param {Boolean} isHovered true to make element hovered, false otherwise.\n */\njvm.MapObject.prototype.setHovered = function(isHovered){\n if (this.isHovered !== isHovered) {\n this.isHovered = isHovered;\n this.shape.isHovered = isHovered;\n this.shape.updateStyle();\n if (this.label) {\n this.label.isHovered = isHovered;\n this.label.updateStyle();\n }\n }\n};\n\n/**\n * Set selected state to the element. Styles will be updates respectively.\n * @param {Boolean} isSelected true to make element selected, false otherwise.\n */\njvm.MapObject.prototype.setSelected = function(isSelected){\n if (this.isSelected !== isSelected) {\n this.isSelected = isSelected;\n this.shape.isSelected = isSelected;\n this.shape.updateStyle();\n if (this.label) {\n this.label.isSelected = isSelected;\n this.label.updateStyle();\n }\n jvm.$(this.shape).trigger('selected', [isSelected]);\n }\n};\n\njvm.MapObject.prototype.setStyle = function(){\n\tthis.shape.setStyle.apply(this.shape, arguments);\n};\n\njvm.MapObject.prototype.remove = function(){\n this.shape.remove();\n if (this.label) {\n this.label.remove();\n }\n};jvm.Region = function(config){\n var bbox,\n text,\n offsets,\n wrapper;\n\n this.config = config;\n this.map = this.config.map;\n\n wrapper = config.canvas.addGroup(config.canvas.rootElement);\n\n this.shape = config.canvas.addPath({\n d: config.path\n }, config.style, wrapper);\n\n var invisibleShape = config.canvas.addPath({\n d: config.path,\n 'data-code': config.code\n }, { initial: { 'fill': 'transparent', 'stroke': 'transparent', 'stroke-width': config.margin } }, wrapper);\n invisibleShape.addClass('jvectormap-region jvectormap-element');\n\n bbox = this.shape.getBBox();\n\n text = this.getLabelText(config.code);\n if (this.config.label && text) {\n offsets = this.getLabelOffsets(config.code);\n this.labelX = bbox.x + bbox.width / 2 + offsets[0];\n this.labelY = bbox.y + bbox.height / 2 + offsets[1];\n this.label = config.canvas.addText({\n text: text,\n 'text-anchor': 'middle',\n 'alignment-baseline': 'central',\n x: this.labelX,\n y: this.labelY,\n 'data-code': config.code\n }, config.labelStyle, config.labelsGroup);\n this.label.addClass('jvectormap-region jvectormap-element');\n }\n};\n\njvm.inherits(jvm.Region, jvm.MapObject);\n\njvm.Region.prototype.updateLabelPosition = function(){\n if (this.label) {\n this.label.set({\n x: this.labelX * this.map.scale + this.map.transX * this.map.scale,\n y: this.labelY * this.map.scale + this.map.transY * this.map.scale\n });\n }\n};\njvm.Marker = function(config){\n var text;\n\n this.config = config;\n this.map = this.config.map;\n\n this.isImage = !!this.config.style.initial.image;\n this.createShape();\n\n text = this.getLabelText(config.index);\n if (this.config.label && text) {\n this.offsets = this.getLabelOffsets(config.index);\n this.labelX = config.cx / this.map.scale - this.map.transX;\n this.labelY = config.cy / this.map.scale - this.map.transY;\n this.label = config.canvas.addText({\n text: text,\n 'data-index': config.index,\n dy: \"0.6ex\",\n x: this.labelX,\n y: this.labelY\n }, config.labelStyle, config.labelsGroup);\n\n this.label.addClass('jvectormap-marker jvectormap-element');\n }\n};\n\njvm.inherits(jvm.Marker, jvm.MapObject);\n\njvm.Marker.prototype.createShape = function(){\n var that = this;\n\n if (this.shape) {\n this.shape.remove();\n }\n this.shape = this.config.canvas[this.isImage ? 'addImage' : 'addCircle']({\n \"data-index\": this.config.index,\n cx: this.config.cx,\n cy: this.config.cy\n }, this.config.style, this.config.group);\n\n this.shape.addClass('jvectormap-marker jvectormap-element');\n\n if (this.isImage) {\n jvm.$(this.shape.node).on('imageloaded', function(){\n that.updateLabelPosition();\n });\n }\n};\n\njvm.Marker.prototype.updateLabelPosition = function(){\n if (this.label) {\n this.label.set({\n x: this.labelX * this.map.scale + this.offsets[0] +\n this.map.transX * this.map.scale + 5 + (this.isImage ? (this.shape.width || 0) / 2 : this.shape.properties.r),\n y: this.labelY * this.map.scale + this.map.transY * this.map.scale + this.offsets[1]\n });\n }\n};\n\njvm.Marker.prototype.setStyle = function(property, value){\n var isImage;\n\n jvm.Marker.parentClass.prototype.setStyle.apply(this, arguments);\n\n if (property === 'r') {\n this.updateLabelPosition();\n }\n\n isImage = !!this.shape.get('image');\n if (isImage != this.isImage) {\n this.isImage = isImage;\n this.config.style = jvm.$.extend(true, {}, this.shape.style);\n this.createShape();\n }\n};\n/**\n * Creates map, draws paths, binds events.\n * @constructor\n * @param {Object} params Parameters to initialize map with.\n * @param {String} params.map Name of the map in the format territory_proj_lang where territory is a unique code or name of the territory which the map represents (ISO 3166 standard is used where possible), proj is a name of projection used to generate representation of the map on the plane (projections are named according to the conventions of proj4 utility) and lang is a code of the language, used for the names of regions.\n * @param {String} params.backgroundColor Background color of the map in CSS format.\n * @param {Boolean} params.zoomOnScroll When set to true map could be zoomed using mouse scroll. Default value is true.\n * @param {Number} params.zoomOnScrollSpeed Mouse scroll speed. Number from 1 to 10. Default value is 3.\n * @param {Boolean} params.panOnDrag When set to true, the map pans when being dragged. Default value is true.\n * @param {Number} params.zoomMax Indicates the maximum zoom ratio which could be reached zooming the map. Default value is 8.\n * @param {Number} params.zoomMin Indicates the minimum zoom ratio which could be reached zooming the map. Default value is 1.\n * @param {Number} params.zoomStep Indicates the multiplier used to zoom map with +/- buttons. Default value is 1.6.\n * @param {Boolean} params.zoomAnimate Indicates whether or not to animate changing of map zoom with zoom buttons.\n * @param {Boolean} params.regionsSelectable When set to true regions of the map could be selected. Default value is false.\n * @param {Boolean} params.regionsSelectableOne Allow only one region to be selected at the moment. Default value is false.\n * @param {Boolean} params.markersSelectable When set to true markers on the map could be selected. Default value is false.\n * @param {Boolean} params.markersSelectableOne Allow only one marker to be selected at the moment. Default value is false.\n * @param {Object} params.regionStyle Set the styles for the map's regions. Each region or marker has four states: initial (default state), hover (when the mouse cursor is over the region or marker), selected (when region or marker is selected), selectedHover (when the mouse cursor is over the region or marker and it's selected simultaneously). Styles could be set for each of this states. Default value for that parameter is:\n
\n* @param {Object} params.regionLabelStyle Set the styles for the regions' labels. Each region or marker has four states: initial (default state), hover (when the mouse cursor is over the region or marker), selected (when region or marker is selected), selectedHover (when the mouse cursor is over the region or marker and it's selected simultaneously). Styles could be set for each of this states. Default value for that parameter is:\n
\n * @param {Number} params.regionMargin Set the invisible margin around regions. This can enlarge event zones. Default value for that parameter is 0.\n * @param {Object} params.markerStyle Set the styles for the map's markers. Any parameter suitable for regionStyle could be used as well as numeric parameter r to set the marker's radius. Default value for that parameter is:\n
\nYou can also use image style attribute for markers. By default marker images are centered with the target point on map. To supply a custom offset please use the following format:\n
{\n url: 'image/url',\n offset: [-10, 5]\n}
\n * @param {Object} params.markerLabelStyle Set the styles for the markers' labels. Default value for that parameter is:\n
\n * @param {Object|Array} params.markers Set of markers to add to the map during initialization. In case of array is provided, codes of markers will be set as string representations of array indexes. Each marker is represented by latLng (array of two numeric values), name (string which will be show on marker's tip) and any marker styles.\n * @param {Object} params.series Object with two keys: markers and regions. Each of which is an array of series configs to be applied to the respective map elements. See DataSeries description for a list of parameters available.\n * @param {Object|String} params.focusOn This parameter sets the initial position and scale of the map viewport. See setFocus docuemntation for possible parameters.\n * @param {Object} params.labels Defines parameters for rendering static labels. Object could contain two keys: regions and markers. Each key value defines configuration object with the following possible options:\n
\n
render {Function} - defines method for converting region code or marker index to actual label value.
\n
offsets {Object|Function} - provides method or object which could be used to define label offset by region code or marker index.
\n
\nPlase note: static labels feature is not supported in Internet Explorer 8 and below.\n * @param {Array|Object|String} params.selectedRegions Set initially selected regions.\n * @param {Array|Object|String} params.selectedMarkers Set initially selected markers.\n * @param {Function} params.onRegionTipShow (Event e, Object tip, String code) Will be called right before the region tip is going to be shown.\n * @param {Function} params.onRegionOver (Event e, String code) Will be called on region mouse over event.\n * @param {Function} params.onRegionOut (Event e, String code) Will be called on region mouse out event.\n * @param {Function} params.onRegionClick (Event e, String code) Will be called on region click event.\n * @param {Function} params.onRegionSelected (Event e, String code, Boolean isSelected, Array selectedRegions) Will be called when region is (de)selected. isSelected parameter of the callback indicates whether region is selected or not. selectedRegions contains codes of all currently selected regions.\n * @param {Function} params.onMarkerTipShow (Event e, Object tip, String code) Will be called right before the marker tip is going to be shown.\n * @param {Function} params.onMarkerOver (Event e, String code) Will be called on marker mouse over event.\n * @param {Function} params.onMarkerOut (Event e, String code) Will be called on marker mouse out event.\n * @param {Function} params.onMarkerClick (Event e, String code) Will be called on marker click event.\n * @param {Function} params.onMarkerSelected (Event e, String code, Boolean isSelected, Array selectedMarkers) Will be called when marker is (de)selected. isSelected parameter of the callback indicates whether marker is selected or not. selectedMarkers contains codes of all currently selected markers.\n * @param {Function} params.onViewportChange (Event e, Number scale) Triggered when the map's viewport is changed (map was panned or zoomed).\n */\njvm.Map = function(params) {\n var map = this,\n e;\n\n this.params = jvm.$.extend(true, {}, jvm.Map.defaultParams, params);\n\n if (!jvm.Map.maps[this.params.map]) {\n throw new Error('Attempt to use map which was not loaded: '+this.params.map);\n }\n\n this.mapData = jvm.Map.maps[this.params.map];\n this.markers = {};\n this.regions = {};\n this.regionsColors = {};\n this.regionsData = {};\n\n this.container = jvm.$('
').addClass('jvectormap-container');\n if (this.params.container) {\n this.params.container.append( this.container );\n }\n this.container.data('mapObject', this);\n\n this.defaultWidth = this.mapData.width;\n this.defaultHeight = this.mapData.height;\n\n this.setBackgroundColor(this.params.backgroundColor);\n\n this.onResize = function(){\n map.updateSize();\n }\n jvm.$(window).resize(this.onResize);\n\n for (e in jvm.Map.apiEvents) {\n if (this.params[e]) {\n this.container.bind(jvm.Map.apiEvents[e]+'.jvectormap', this.params[e]);\n }\n }\n\n this.canvas = new jvm.VectorCanvas(this.container[0], this.width, this.height);\n\n if (this.params.bindTouchEvents) {\n if (('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch)) {\n this.bindContainerTouchEvents();\n } else if (window.MSGesture) {\n this.bindContainerPointerEvents();\n }\n }\n this.bindContainerEvents();\n this.bindElementEvents();\n this.createTip();\n if (this.params.zoomButtons) {\n this.bindZoomButtons();\n }\n\n this.createRegions();\n this.createMarkers(this.params.markers || {});\n\n this.updateSize();\n\n if (this.params.focusOn) {\n if (typeof this.params.focusOn === 'string') {\n this.params.focusOn = {region: this.params.focusOn};\n } else if (jvm.$.isArray(this.params.focusOn)) {\n this.params.focusOn = {regions: this.params.focusOn};\n }\n this.setFocus(this.params.focusOn);\n }\n\n if (this.params.selectedRegions) {\n this.setSelectedRegions(this.params.selectedRegions);\n }\n if (this.params.selectedMarkers) {\n this.setSelectedMarkers(this.params.selectedMarkers);\n }\n\n this.legendCntHorizontal = jvm.$('').addClass('jvectormap-legend-cnt jvectormap-legend-cnt-h');\n this.legendCntVertical = jvm.$('').addClass('jvectormap-legend-cnt jvectormap-legend-cnt-v');\n this.container.append(this.legendCntHorizontal);\n this.container.append(this.legendCntVertical);\n\n if (this.params.series) {\n this.createSeries();\n }\n};\n\njvm.Map.prototype = {\n transX: 0,\n transY: 0,\n scale: 1,\n baseTransX: 0,\n baseTransY: 0,\n baseScale: 1,\n\n width: 0,\n height: 0,\n\n /**\n * Set background color of the map.\n * @param {String} backgroundColor Background color in CSS format.\n */\n setBackgroundColor: function(backgroundColor) {\n this.container.css('background-color', backgroundColor);\n },\n\n resize: function() {\n var curBaseScale = this.baseScale;\n if (this.width / this.height > this.defaultWidth / this.defaultHeight) {\n this.baseScale = this.height / this.defaultHeight;\n this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);\n } else {\n this.baseScale = this.width / this.defaultWidth;\n this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);\n }\n this.scale *= this.baseScale / curBaseScale;\n this.transX *= this.baseScale / curBaseScale;\n this.transY *= this.baseScale / curBaseScale;\n },\n\n /**\n * Synchronize the size of the map with the size of the container. Suitable in situations where the size of the container is changed programmatically or container is shown after it became visible.\n */\n updateSize: function(){\n this.width = this.container.width();\n this.height = this.container.height();\n this.resize();\n this.canvas.setSize(this.width, this.height);\n this.applyTransform();\n },\n\n /**\n * Reset all the series and show the map with the initial zoom.\n */\n reset: function() {\n var key,\n i;\n\n for (key in this.series) {\n for (i = 0; i < this.series[key].length; i++) {\n this.series[key][i].clear();\n }\n }\n this.scale = this.baseScale;\n this.transX = this.baseTransX;\n this.transY = this.baseTransY;\n this.applyTransform();\n },\n\n applyTransform: function() {\n var maxTransX,\n maxTransY,\n minTransX,\n minTransY;\n\n if (this.defaultWidth * this.scale <= this.width) {\n maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n } else {\n maxTransX = 0;\n minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;\n }\n\n if (this.defaultHeight * this.scale <= this.height) {\n maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n } else {\n maxTransY = 0;\n minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;\n }\n\n if (this.transY > maxTransY) {\n this.transY = maxTransY;\n } else if (this.transY < minTransY) {\n this.transY = minTransY;\n }\n if (this.transX > maxTransX) {\n this.transX = maxTransX;\n } else if (this.transX < minTransX) {\n this.transX = minTransX;\n }\n\n this.canvas.applyTransformParams(this.scale, this.transX, this.transY);\n\n if (this.markers) {\n this.repositionMarkers();\n }\n\n this.repositionLabels();\n\n this.container.trigger('viewportChange', [this.scale/this.baseScale, this.transX, this.transY]);\n },\n\n bindContainerEvents: function(){\n var mouseDown = false,\n oldPageX,\n oldPageY,\n map = this;\n\n if (this.params.panOnDrag) {\n this.container.mousemove(function(e){\n if (mouseDown) {\n map.transX -= (oldPageX - e.pageX) / map.scale;\n map.transY -= (oldPageY - e.pageY) / map.scale;\n\n map.applyTransform();\n\n oldPageX = e.pageX;\n oldPageY = e.pageY;\n }\n return false;\n }).mousedown(function(e){\n mouseDown = true;\n oldPageX = e.pageX;\n oldPageY = e.pageY;\n return false;\n });\n\n this.onContainerMouseUp = function(){\n mouseDown = false;\n };\n jvm.$('body').mouseup(this.onContainerMouseUp);\n }\n\n if (this.params.zoomOnScroll) {\n this.container.mousewheel(function(event, delta, deltaX, deltaY) {\n var offset = jvm.$(map.container).offset(),\n centerX = event.pageX - offset.left,\n centerY = event.pageY - offset.top,\n zoomStep = Math.pow(1 + map.params.zoomOnScrollSpeed / 1000, event.deltaFactor * event.deltaY);\n\n map.tip.hide();\n\n map.setScale(map.scale * zoomStep, centerX, centerY);\n event.preventDefault();\n });\n }\n },\n\n bindContainerTouchEvents: function(){\n var touchStartScale,\n touchStartDistance,\n map = this,\n touchX,\n touchY,\n centerTouchX,\n centerTouchY,\n lastTouchesLength,\n handleTouchEvent = function(e){\n var touches = e.originalEvent.touches,\n offset,\n scale,\n transXOld,\n transYOld;\n\n if (e.type == 'touchstart') {\n lastTouchesLength = 0;\n }\n\n if (touches.length == 1) {\n if (lastTouchesLength == 1) {\n transXOld = map.transX;\n transYOld = map.transY;\n map.transX -= (touchX - touches[0].pageX) / map.scale;\n map.transY -= (touchY - touches[0].pageY) / map.scale;\n map.applyTransform();\n map.tip.hide();\n if (transXOld != map.transX || transYOld != map.transY) {\n e.preventDefault();\n }\n }\n touchX = touches[0].pageX;\n touchY = touches[0].pageY;\n } else if (touches.length == 2) {\n if (lastTouchesLength == 2) {\n scale = Math.sqrt(\n Math.pow(touches[0].pageX - touches[1].pageX, 2) +\n Math.pow(touches[0].pageY - touches[1].pageY, 2)\n ) / touchStartDistance;\n map.setScale(\n touchStartScale * scale,\n centerTouchX,\n centerTouchY\n )\n map.tip.hide();\n e.preventDefault();\n } else {\n offset = jvm.$(map.container).offset();\n if (touches[0].pageX > touches[1].pageX) {\n centerTouchX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2;\n } else {\n centerTouchX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2;\n }\n if (touches[0].pageY > touches[1].pageY) {\n centerTouchY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2;\n } else {\n centerTouchY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2;\n }\n centerTouchX -= offset.left;\n centerTouchY -= offset.top;\n touchStartScale = map.scale;\n touchStartDistance = Math.sqrt(\n Math.pow(touches[0].pageX - touches[1].pageX, 2) +\n Math.pow(touches[0].pageY - touches[1].pageY, 2)\n );\n }\n }\n\n lastTouchesLength = touches.length;\n };\n\n jvm.$(this.container).bind('touchstart', handleTouchEvent);\n jvm.$(this.container).bind('touchmove', handleTouchEvent);\n },\n\n bindContainerPointerEvents: function(){\n var map = this,\n gesture = new MSGesture(),\n element = this.container[0],\n handlePointerDownEvent = function(e){\n gesture.addPointer(e.pointerId);\n },\n handleGestureEvent = function(e){\n var transXOld,\n transYOld;\n\n if (e.translationX != 0 || e.translationY != 0) {\n transXOld = map.transX;\n transYOld = map.transY;\n map.transX += e.translationX / map.scale;\n map.transY += e.translationY / map.scale;\n map.applyTransform();\n map.tip.hide();\n if (transXOld != map.transX || transYOld != map.transY) {\n e.preventDefault();\n }\n }\n if (e.scale != 1) {\n map.setScale(\n map.scale * e.scale,\n e.offsetX,\n e.offsetY\n )\n map.tip.hide();\n e.preventDefault();\n }\n };\n\n gesture.target = element;\n element.addEventListener(\"MSGestureChange\", handleGestureEvent, false);\n element.addEventListener(\"pointerdown\", handlePointerDownEvent, false);\n },\n\n bindElementEvents: function(){\n var map = this,\n pageX,\n pageY,\n mouseMoved;\n\n this.container.mousemove(function(e){\n if (Math.abs(pageX - e.pageX) + Math.abs(pageY - e.pageY) > 2) {\n mouseMoved = true;\n }\n });\n\n /* Can not use common class selectors here because of the bug in jQuery\n SVG handling, use with caution. */\n this.container.delegate(\"[class~='jvectormap-element']\", 'mouseover mouseout', function(e){\n var baseVal = jvm.$(this).attr('class').baseVal || jvm.$(this).attr('class'),\n type = baseVal.indexOf('jvectormap-region') === -1 ? 'marker' : 'region',\n code = type == 'region' ? jvm.$(this).attr('data-code') : jvm.$(this).attr('data-index'),\n element = type == 'region' ? map.regions[code].element : map.markers[code].element,\n tipText = type == 'region' ? map.mapData.paths[code].name : (map.markers[code].config.name || ''),\n tipShowEvent = jvm.$.Event(type+'TipShow.jvectormap'),\n overEvent = jvm.$.Event(type+'Over.jvectormap');\n\n if (e.type == 'mouseover') {\n map.container.trigger(overEvent, [code]);\n if (!overEvent.isDefaultPrevented()) {\n element.setHovered(true);\n }\n\n map.tip.text(tipText);\n map.container.trigger(tipShowEvent, [map.tip, code]);\n if (!tipShowEvent.isDefaultPrevented()) {\n map.tip.show();\n map.tipWidth = map.tip.width();\n map.tipHeight = map.tip.height();\n }\n } else {\n element.setHovered(false);\n map.tip.hide();\n map.container.trigger(type+'Out.jvectormap', [code]);\n }\n });\n\n /* Can not use common class selectors here because of the bug in jQuery\n SVG handling, use with caution. */\n this.container.delegate(\"[class~='jvectormap-element']\", 'mousedown', function(e){\n pageX = e.pageX;\n pageY = e.pageY;\n mouseMoved = false;\n });\n\n /* Can not use common class selectors here because of the bug in jQuery\n SVG handling, use with caution. */\n this.container.delegate(\"[class~='jvectormap-element']\", 'mouseup', function(){\n var baseVal = jvm.$(this).attr('class').baseVal ? jvm.$(this).attr('class').baseVal : jvm.$(this).attr('class'),\n type = baseVal.indexOf('jvectormap-region') === -1 ? 'marker' : 'region',\n code = type == 'region' ? jvm.$(this).attr('data-code') : jvm.$(this).attr('data-index'),\n clickEvent = jvm.$.Event(type+'Click.jvectormap'),\n element = type == 'region' ? map.regions[code].element : map.markers[code].element;\n\n if (!mouseMoved) {\n map.container.trigger(clickEvent, [code]);\n if ((type === 'region' && map.params.regionsSelectable) || (type === 'marker' && map.params.markersSelectable)) {\n if (!clickEvent.isDefaultPrevented()) {\n if (map.params[type+'sSelectableOne']) {\n map.clearSelected(type+'s');\n }\n element.setSelected(!element.isSelected);\n }\n }\n }\n });\n },\n\n bindZoomButtons: function() {\n var map = this;\n\n jvm.$('').addClass('jvectormap-zoomin').text('+').appendTo(this.container);\n jvm.$('').addClass('jvectormap-zoomout').html('−').appendTo(this.container);\n\n this.container.find('.jvectormap-zoomin').click(function(){\n map.setScale(map.scale * map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate);\n });\n this.container.find('.jvectormap-zoomout').click(function(){\n map.setScale(map.scale / map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate);\n });\n },\n\n createTip: function(){\n var map = this;\n\n this.tip = jvm.$('').addClass('jvectormap-tip').appendTo(jvm.$('body'));\n\n this.container.mousemove(function(e){\n var left = e.pageX-15-map.tipWidth,\n top = e.pageY-15-map.tipHeight;\n\n if (left < 5) {\n left = e.pageX + 15;\n }\n if (top < 5) {\n top = e.pageY + 15;\n }\n\n map.tip.css({\n left: left,\n top: top\n });\n });\n },\n\n setScale: function(scale, anchorX, anchorY, isCentered, animate) {\n var viewportChangeEvent = jvm.$.Event('zoom.jvectormap'),\n interval,\n that = this,\n i = 0,\n count = Math.abs(Math.round((scale - this.scale) * 60 / Math.max(scale, this.scale))),\n scaleStart,\n scaleDiff,\n transXStart,\n transXDiff,\n transYStart,\n transYDiff,\n transX,\n transY,\n deferred = new jvm.$.Deferred();\n\n if (scale > this.params.zoomMax * this.baseScale) {\n scale = this.params.zoomMax * this.baseScale;\n } else if (scale < this.params.zoomMin * this.baseScale) {\n scale = this.params.zoomMin * this.baseScale;\n }\n\n if (typeof anchorX != 'undefined' && typeof anchorY != 'undefined') {\n zoomStep = scale / this.scale;\n if (isCentered) {\n transX = anchorX + this.defaultWidth * (this.width / (this.defaultWidth * scale)) / 2;\n transY = anchorY + this.defaultHeight * (this.height / (this.defaultHeight * scale)) / 2;\n } else {\n transX = this.transX - (zoomStep - 1) / scale * anchorX;\n transY = this.transY - (zoomStep - 1) / scale * anchorY;\n }\n }\n\n if (animate && count > 0) {\n scaleStart = this.scale;\n scaleDiff = (scale - scaleStart) / count;\n transXStart = this.transX * this.scale;\n transYStart = this.transY * this.scale;\n transXDiff = (transX * scale - transXStart) / count;\n transYDiff = (transY * scale - transYStart) / count;\n interval = setInterval(function(){\n i += 1;\n that.scale = scaleStart + scaleDiff * i;\n that.transX = (transXStart + transXDiff * i) / that.scale;\n that.transY = (transYStart + transYDiff * i) / that.scale;\n that.applyTransform();\n if (i == count) {\n clearInterval(interval);\n that.container.trigger(viewportChangeEvent, [scale/that.baseScale]);\n deferred.resolve();\n }\n }, 10);\n } else {\n this.transX = transX;\n this.transY = transY;\n this.scale = scale;\n this.applyTransform();\n this.container.trigger(viewportChangeEvent, [scale/this.baseScale]);\n deferred.resolve();\n }\n\n return deferred;\n },\n\n /**\n * Set the map's viewport to the specific point and set zoom of the map to the specific level. Point and zoom level could be defined in two ways: using the code of some region to focus on or a central point and zoom level as numbers.\n * @param This method takes a configuration object as the single argument. The options passed to it are the following:\n * @param {Array} params.regions Array of region codes to zoom to.\n * @param {String} params.region Region code to zoom to.\n * @param {Number} params.scale Map scale to set.\n * @param {Number} params.lat Latitude to set viewport to.\n * @param {Number} params.lng Longitude to set viewport to.\n * @param {Number} params.x Number from 0 to 1 specifying the horizontal coordinate of the central point of the viewport.\n * @param {Number} params.y Number from 0 to 1 specifying the vertical coordinate of the central point of the viewport.\n * @param {Boolean} params.animate Indicates whether or not to animate the scale change and transition.\n */\n setFocus: function(config){\n var bbox,\n itemBbox,\n newBbox,\n codes,\n i,\n point;\n\n config = config || {};\n\n if (config.region) {\n codes = [config.region];\n } else if (config.regions) {\n codes = config.regions;\n }\n\n if (codes) {\n for (i = 0; i < codes.length; i++) {\n if (this.regions[codes[i]]) {\n itemBbox = this.regions[codes[i]].element.shape.getBBox();\n if (itemBbox) {\n if (typeof bbox == 'undefined') {\n bbox = itemBbox;\n } else {\n newBbox = {\n x: Math.min(bbox.x, itemBbox.x),\n y: Math.min(bbox.y, itemBbox.y),\n width: Math.max(bbox.x + bbox.width, itemBbox.x + itemBbox.width) - Math.min(bbox.x, itemBbox.x),\n height: Math.max(bbox.y + bbox.height, itemBbox.y + itemBbox.height) - Math.min(bbox.y, itemBbox.y)\n }\n bbox = newBbox;\n }\n }\n }\n }\n return this.setScale(\n Math.min(this.width / bbox.width, this.height / bbox.height),\n - (bbox.x + bbox.width / 2),\n - (bbox.y + bbox.height / 2),\n true,\n config.animate\n );\n } else {\n if (config.lat !== undefined && config.lng !== undefined) {\n point = this.latLngToPoint(config.lat, config.lng);\n config.x = this.transX - point.x / this.scale;\n config.y = this.transY - point.y / this.scale;\n } else if (config.x && config.y) {\n config.x *= -this.defaultWidth;\n config.y *= -this.defaultHeight;\n }\n return this.setScale(config.scale * this.baseScale, config.x, config.y, true, config.animate);\n }\n },\n\n getSelected: function(type){\n var key,\n selected = [];\n\n for (key in this[type]) {\n if (this[type][key].element.isSelected) {\n selected.push(key);\n }\n }\n return selected;\n },\n\n /**\n * Return the codes of currently selected regions.\n * @returns {Array}\n */\n getSelectedRegions: function(){\n return this.getSelected('regions');\n },\n\n /**\n * Return the codes of currently selected markers.\n * @returns {Array}\n */\n getSelectedMarkers: function(){\n return this.getSelected('markers');\n },\n\n setSelected: function(type, keys){\n var i;\n\n if (typeof keys != 'object') {\n keys = [keys];\n }\n\n if (jvm.$.isArray(keys)) {\n for (i = 0; i < keys.length; i++) {\n this[type][keys[i]].element.setSelected(true);\n }\n } else {\n for (i in keys) {\n this[type][i].element.setSelected(!!keys[i]);\n }\n }\n },\n\n /**\n * Set or remove selected state for the regions.\n * @param {String|Array|Object} keys If String or Array the region(s) with the corresponding code(s) will be selected. If Object was provided its keys are codes of regions, state of which should be changed. Selected state will be set if value is true, removed otherwise.\n */\n setSelectedRegions: function(keys){\n this.setSelected('regions', keys);\n },\n\n /**\n * Set or remove selected state for the markers.\n * @param {String|Array|Object} keys If String or Array the marker(s) with the corresponding code(s) will be selected. If Object was provided its keys are codes of markers, state of which should be changed. Selected state will be set if value is true, removed otherwise.\n */\n setSelectedMarkers: function(keys){\n this.setSelected('markers', keys);\n },\n\n clearSelected: function(type){\n var select = {},\n selected = this.getSelected(type),\n i;\n\n for (i = 0; i < selected.length; i++) {\n select[selected[i]] = false;\n };\n\n this.setSelected(type, select);\n },\n\n /**\n * Remove the selected state from all the currently selected regions.\n */\n clearSelectedRegions: function(){\n this.clearSelected('regions');\n },\n\n /**\n * Remove the selected state from all the currently selected markers.\n */\n clearSelectedMarkers: function(){\n this.clearSelected('markers');\n },\n\n /**\n * Return the instance of Map. Useful when instantiated as a jQuery plug-in.\n * @returns {Map}\n */\n getMapObject: function(){\n return this;\n },\n\n /**\n * Return the name of the region by region code.\n * @returns {String}\n */\n getRegionName: function(code){\n return this.mapData.paths[code].name;\n },\n\n createRegions: function(){\n var key,\n region,\n map = this;\n\n this.regionLabelsGroup = this.regionLabelsGroup || this.canvas.addGroup();\n\n for (key in this.mapData.paths) {\n region = new jvm.Region({\n map: this,\n path: this.mapData.paths[key].path,\n code: key,\n style: jvm.$.extend(true, {}, this.params.regionStyle),\n margin: this.params.regionMargin,\n labelStyle: jvm.$.extend(true, {}, this.params.regionLabelStyle),\n canvas: this.canvas,\n labelsGroup: this.regionLabelsGroup,\n label: this.canvas.mode != 'vml' ? (this.params.labels && this.params.labels.regions) : null\n });\n\n jvm.$(region.shape).bind('selected', function(e, isSelected){\n map.container.trigger('regionSelected.jvectormap', [jvm.$(this.node).attr('data-code'), isSelected, map.getSelectedRegions()]);\n });\n this.regions[key] = {\n element: region,\n config: this.mapData.paths[key]\n };\n }\n },\n\n createMarkers: function(markers) {\n var i,\n marker,\n point,\n markerConfig,\n markersArray,\n map = this;\n\n this.markersGroup = this.markersGroup || this.canvas.addGroup();\n this.markerLabelsGroup = this.markerLabelsGroup || this.canvas.addGroup();\n\n if (jvm.$.isArray(markers)) {\n markersArray = markers.slice();\n markers = {};\n for (i = 0; i < markersArray.length; i++) {\n markers[i] = markersArray[i];\n }\n }\n\n for (i in markers) {\n markerConfig = markers[i] instanceof Array ? {latLng: markers[i]} : markers[i];\n point = this.getMarkerPosition( markerConfig );\n\n if (point !== false) {\n marker = new jvm.Marker({\n map: this,\n style: jvm.$.extend(true, {}, this.params.markerStyle, {initial: markerConfig.style || {}}),\n labelStyle: jvm.$.extend(true, {}, this.params.markerLabelStyle),\n index: i,\n cx: point.x,\n cy: point.y,\n group: this.markersGroup,\n canvas: this.canvas,\n labelsGroup: this.markerLabelsGroup,\n label: this.canvas.mode != 'vml' ? (this.params.labels && this.params.labels.markers) : null\n });\n\n jvm.$(marker.shape).bind('selected', function(e, isSelected){\n map.container.trigger('markerSelected.jvectormap', [jvm.$(this.node).attr('data-index'), isSelected, map.getSelectedMarkers()]);\n });\n if (this.markers[i]) {\n this.removeMarkers([i]);\n }\n this.markers[i] = {element: marker, config: markerConfig};\n }\n }\n },\n\n repositionMarkers: function() {\n var i,\n point;\n\n for (i in this.markers) {\n point = this.getMarkerPosition( this.markers[i].config );\n if (point !== false) {\n this.markers[i].element.setStyle({cx: point.x, cy: point.y});\n }\n }\n },\n\n repositionLabels: function() {\n var key;\n\n for (key in this.regions) {\n this.regions[key].element.updateLabelPosition();\n }\n\n for (key in this.markers) {\n this.markers[key].element.updateLabelPosition();\n }\n },\n\n getMarkerPosition: function(markerConfig) {\n if (jvm.Map.maps[this.params.map].projection) {\n return this.latLngToPoint.apply(this, markerConfig.latLng || [0, 0]);\n } else {\n return {\n x: markerConfig.coords[0]*this.scale + this.transX*this.scale,\n y: markerConfig.coords[1]*this.scale + this.transY*this.scale\n };\n }\n },\n\n /**\n * Add one marker to the map.\n * @param {String} key Marker unique code.\n * @param {Object} marker Marker configuration parameters.\n * @param {Array} seriesData Values to add to the data series.\n */\n addMarker: function(key, marker, seriesData){\n var markers = {},\n data = [],\n values,\n i,\n seriesData = seriesData || [];\n\n markers[key] = marker;\n\n for (i = 0; i < seriesData.length; i++) {\n values = {};\n if (typeof seriesData[i] !== 'undefined') {\n values[key] = seriesData[i];\n }\n data.push(values);\n }\n this.addMarkers(markers, data);\n },\n\n /**\n * Add set of marker to the map.\n * @param {Object|Array} markers Markers to add to the map. In case of array is provided, codes of markers will be set as string representations of array indexes.\n * @param {Array} seriesData Values to add to the data series.\n */\n addMarkers: function(markers, seriesData){\n var i;\n\n seriesData = seriesData || [];\n\n this.createMarkers(markers);\n for (i = 0; i < seriesData.length; i++) {\n this.series.markers[i].setValues(seriesData[i] || {});\n };\n },\n\n /**\n * Remove some markers from the map.\n * @param {Array} markers Array of marker codes to be removed.\n */\n removeMarkers: function(markers){\n var i;\n\n for (i = 0; i < markers.length; i++) {\n this.markers[ markers[i] ].element.remove();\n delete this.markers[ markers[i] ];\n };\n },\n\n /**\n * Remove all markers from the map.\n */\n removeAllMarkers: function(){\n var i,\n markers = [];\n\n for (i in this.markers) {\n markers.push(i);\n }\n this.removeMarkers(markers)\n },\n\n /**\n * Converts coordinates expressed as latitude and longitude to the coordinates in pixels on the map.\n * @param {Number} lat Latitide of point in degrees.\n * @param {Number} lng Longitude of point in degrees.\n */\n latLngToPoint: function(lat, lng) {\n var point,\n proj = jvm.Map.maps[this.params.map].projection,\n centralMeridian = proj.centralMeridian,\n inset,\n bbox;\n\n if (lng < (-180 + centralMeridian)) {\n lng += 360;\n }\n\n point = jvm.Proj[proj.type](lat, lng, centralMeridian);\n\n inset = this.getInsetForPoint(point.x, point.y);\n if (inset) {\n bbox = inset.bbox;\n\n point.x = (point.x - bbox[0].x) / (bbox[1].x - bbox[0].x) * inset.width * this.scale;\n point.y = (point.y - bbox[0].y) / (bbox[1].y - bbox[0].y) * inset.height * this.scale;\n\n return {\n x: point.x + this.transX*this.scale + inset.left*this.scale,\n y: point.y + this.transY*this.scale + inset.top*this.scale\n };\n } else {\n return false;\n }\n },\n\n /**\n * Converts cartesian coordinates into coordinates expressed as latitude and longitude.\n * @param {Number} x X-axis of point on map in pixels.\n * @param {Number} y Y-axis of point on map in pixels.\n */\n pointToLatLng: function(x, y) {\n var proj = jvm.Map.maps[this.params.map].projection,\n centralMeridian = proj.centralMeridian,\n insets = jvm.Map.maps[this.params.map].insets,\n i,\n inset,\n bbox,\n nx,\n ny;\n\n for (i = 0; i < insets.length; i++) {\n inset = insets[i];\n bbox = inset.bbox;\n\n nx = x - (this.transX*this.scale + inset.left*this.scale);\n ny = y - (this.transY*this.scale + inset.top*this.scale);\n\n nx = (nx / (inset.width * this.scale)) * (bbox[1].x - bbox[0].x) + bbox[0].x;\n ny = (ny / (inset.height * this.scale)) * (bbox[1].y - bbox[0].y) + bbox[0].y;\n\n if (nx > bbox[0].x && nx < bbox[1].x && ny > bbox[0].y && ny < bbox[1].y) {\n return jvm.Proj[proj.type + '_inv'](nx, -ny, centralMeridian);\n }\n }\n\n return false;\n },\n\n getInsetForPoint: function(x, y){\n var insets = jvm.Map.maps[this.params.map].insets,\n i,\n bbox;\n\n for (i = 0; i < insets.length; i++) {\n bbox = insets[i].bbox;\n if (x > bbox[0].x && x < bbox[1].x && y > bbox[0].y && y < bbox[1].y) {\n return insets[i];\n }\n }\n },\n\n createSeries: function(){\n var i,\n key;\n\n this.series = {\n markers: [],\n regions: []\n };\n\n for (key in this.params.series) {\n for (i = 0; i < this.params.series[key].length; i++) {\n this.series[key][i] = new jvm.DataSeries(\n this.params.series[key][i],\n this[key],\n this\n );\n }\n }\n },\n\n /**\n * Gracefully remove the map and and all its accessories, unbind event handlers.\n */\n remove: function(){\n this.tip.remove();\n this.container.remove();\n jvm.$(window).unbind('resize', this.onResize);\n jvm.$('body').unbind('mouseup', this.onContainerMouseUp);\n }\n};\n\njvm.Map.maps = {};\njvm.Map.defaultParams = {\n map: 'world_mill_en',\n backgroundColor: '#505050',\n zoomButtons: true,\n zoomOnScroll: true,\n zoomOnScrollSpeed: 3,\n panOnDrag: true,\n zoomMax: 8,\n zoomMin: 1,\n zoomStep: 1.6,\n zoomAnimate: true,\n regionsSelectable: false,\n markersSelectable: false,\n bindTouchEvents: true,\n regionStyle: {\n initial: {\n fill: 'white',\n \"fill-opacity\": 1,\n stroke: 'none',\n \"stroke-width\": 0,\n \"stroke-opacity\": 1\n },\n hover: {\n \"fill-opacity\": 0.8,\n cursor: 'pointer'\n },\n selected: {\n fill: 'yellow'\n },\n selectedHover: {\n }\n },\n regionMargin: 0,\n regionLabelStyle: {\n initial: {\n 'font-family': 'Verdana',\n 'font-size': '12',\n 'font-weight': 'bold',\n cursor: 'default',\n fill: 'black'\n },\n hover: {\n cursor: 'pointer'\n }\n },\n markerStyle: {\n initial: {\n fill: 'grey',\n stroke: '#505050',\n \"fill-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-opacity\": 1,\n r: 5\n },\n hover: {\n stroke: 'black',\n \"stroke-width\": 2,\n cursor: 'pointer'\n },\n selected: {\n fill: 'blue'\n },\n selectedHover: {\n }\n },\n markerLabelStyle: {\n initial: {\n 'font-family': 'Verdana',\n 'font-size': '12',\n 'font-weight': 'bold',\n cursor: 'default',\n fill: 'black'\n },\n hover: {\n cursor: 'pointer'\n }\n }\n};\njvm.Map.apiEvents = {\n onRegionTipShow: 'regionTipShow',\n onRegionOver: 'regionOver',\n onRegionOut: 'regionOut',\n onRegionClick: 'regionClick',\n onRegionSelected: 'regionSelected',\n onMarkerTipShow: 'markerTipShow',\n onMarkerOver: 'markerOver',\n onMarkerOut: 'markerOut',\n onMarkerClick: 'markerClick',\n onMarkerSelected: 'markerSelected',\n onViewportChange: 'viewportChange'\n};\n/**\n * Creates map with drill-down functionality.\n * @constructor\n * @param {Object} params Parameters to initialize map with.\n * @param {Number} params.maxLevel Maximum number of levels user can go through\n * @param {Object} params.main Config of the main map. See jvm.Map for more information.\n * @param {Function} params.mapNameByCode Function go generate map name by region code. Default value is:\n