{"version":3,"sources":["webpack:///./node_modules/jvectormap-next/jquery-jvectormap.js","webpack:///./src/components/WorldMap/WorldMap.vue?51cf","webpack:///src/components/WorldMap/WorldMap.vue","webpack:///./src/components/WorldMap/WorldMap.vue?56e3","webpack:///./src/components/WorldMap/WorldMap.vue","webpack:///./node_modules/jvectormap-next/node_modules/jquery/dist/jquery.js"],"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","_vm","_h","$createElement","_c","_self","staticRenderFns","props","default","methods","initVectorMap","mounted","require","component","global","w","noGlobal","arr","getProto","getPrototypeOf","flat","array","concat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","item","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","primary","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","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","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","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","rtrimCSS","curCSS","computed","minWidth","maxWidth","isCustomProp","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","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","cssProps","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","computedVal","extra","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","origName","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","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","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","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"],"mappings":"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","file":"js/chunk-02ec2c8c.200e8fd8.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