{"version":3,"sources":["webpack:///./node_modules/jvectormap-next/jquery-jvectormap.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./src/components/WorldMap/WorldMap.vue?1721","webpack:///src/components/WorldMap/WorldMap.vue","webpack:///./src/components/WorldMap/WorldMap.vue?f0c8","webpack:///./src/components/WorldMap/WorldMap.vue"],"names":["jvm","inherits","child","parent","temp","prototype","constructor","parentClass","mixin","target","source","prop","hasOwnProperty","min","values","i","Number","MAX_VALUE","Array","length","max","MIN_VALUE","keys","object","key","push","arguments","whenImageLoaded","url","deferred","$","Deferred","img","error","reject","load","resolve","attr","isImageUrl","s","test","indexOf","searchElement","fromIndex","k","this","TypeError","O","Object","len","n","Math","abs","Infinity","factory","module","exports","apiParams","set","colors","backgroundColor","scaleColors","normalizeFunction","focus","get","selectedRegions","selectedMarkers","mapObject","regionName","fn","vectorMap","options","methodName","map","children","data","Map","maps","charAt","toUpperCase","substr","apply","slice","call","container","nullLowestDeltaTimeout","lowestDelta","toFix","toBind","document","documentMode","event","fixHooks","mouseHooks","special","mousewheel","version","setup","addEventListener","handler","onmousewheel","getLineHeight","getPageHeight","teardown","removeEventListener","elem","parseInt","css","height","settings","adjustOldDeltas","orgEvent","window","args","delta","deltaX","deltaY","absDelta","fix","type","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaMode","lineHeight","pageHeight","shouldAdjustOldDeltas","deltaFactor","unshift","clearTimeout","setTimeout","nullLowestDelta","dispatch","handle","extend","bind","trigger","unmousewheel","unbind","AbstractElement","name","config","node","createElement","properties","property","value","applyAttr","setAttribute","remove","AbstractCanvasElement","width","setSize","rootElement","classPrefix","appendChild","add","element","group","canvas","addPath","style","el","addCircle","addImage","addText","addGroup","parentGroup","AbstractShapeElement","current","isHovered","isSelected","updateStyle","setStyle","styles","attrs","mergeStyles","initial","hover","selected","selectedHover","newStyles","SVGElement","svgns","tagName","createElementNS","addClass","className","getElementCtr","ctr","getBBox","SVGGroupElement","SVGCanvasElement","defsElement","applyTransformParams","scale","transX","transY","SVGShapeElement","patternEl","imageEl","that","images","then","setAttributeNS","imageCounter","SVGPathElement","SVGCircleElement","SVGImageElement","imageUrl","offset","cx","cy","SVGTextElement","textContent","VMLElement","VMLInitialized","initializeVML","namespaces","rvml","e","createStyleSheet","addRule","x","position","left","y","top","VMLGroupElement","coordorigin","VMLCanvasElement","paths","groups","l","coordsize","getElementsByTagName","VMLShapeElement","fillElement","strokeElement","stroked","fillcolor","opacity","round","strokecolor","strokeweight","path","VMLPathElement","pathSvgToVml","on","matrix","ctrlx","ctrly","replace","segment","letter","coords","index","split","shift","join","VMLCircleElement","VectorCanvas","mode","SVGAngle","impl","SimpleScale","getValue","OrdinalScale","getTicks","ticks","label","NumericScale","minValue","maxValue","setScale","setNormalizeFunction","setMin","setMax","clearMinValue","normalize","clearMaxValue","f","pow","c","lengthes","fullLength","vectorLength","vectorSubtract","vectorToNum","vectorAdd","vectorMult","vector","num","vector1","vector2","result","sqrt","tick","v","m","extent","span","step","floor","log","LN10","err","ceil","ColorScale","rgbToArray","numToRgb","arrayToRgb","ar","d","rgb","toString","Legend","params","series","body","cssClass","vertical","legendCntVertical","append","legendCntHorizontal","render","sample","inner","html","title","attribute","border","markerStyle","background","appendTo","labelRender","DataSeries","elements","scaleConstructor","attributes","setAttributes","isArray","setValues","legend","code","val","cc","parseFloat","isNaN","clear","shape","Proj","degRad","PI","radDeg","radius","sgn","mill","lat","lng","tan","mill_inv","atan","exp","merc","merc_inv","aea","fi0","lambda0","fi1","fi2","fi","lambda","sin","C","cos","theta","ro","ro0","aea_inv","xCoord","yCoord","asin","lcc","F","lcc_inv","MapObject","getLabelText","text","getLabelOffsets","offsets","setHovered","setSelected","Region","bbox","wrapper","invisibleShape","margin","labelX","labelY","labelStyle","labelsGroup","updateLabelPosition","Marker","isImage","image","createShape","dy","r","defaultParams","Error","mapData","markers","regions","regionsColors","regionsData","defaultWidth","defaultHeight","setBackgroundColor","onResize","updateSize","resize","apiEvents","bindTouchEvents","DocumentTouch","bindContainerTouchEvents","MSGesture","bindContainerPointerEvents","bindContainerEvents","bindElementEvents","createTip","zoomButtons","bindZoomButtons","createRegions","createMarkers","focusOn","region","setFocus","setSelectedRegions","setSelectedMarkers","createSeries","baseTransX","baseTransY","baseScale","curBaseScale","applyTransform","reset","maxTransX","maxTransY","minTransX","minTransY","repositionMarkers","repositionLabels","oldPageX","oldPageY","mouseDown","panOnDrag","mousemove","pageX","pageY","mousedown","onContainerMouseUp","mouseup","zoomOnScroll","centerX","centerY","zoomStep","zoomOnScrollSpeed","tip","hide","preventDefault","touchStartScale","touchStartDistance","touchX","touchY","centerTouchX","centerTouchY","lastTouchesLength","handleTouchEvent","transXOld","transYOld","touches","originalEvent","gesture","handlePointerDownEvent","addPointer","pointerId","handleGestureEvent","translationX","translationY","offsetX","offsetY","mouseMoved","delegate","baseVal","tipText","tipShowEvent","Event","overEvent","isDefaultPrevented","show","tipWidth","tipHeight","clickEvent","regionsSelectable","markersSelectable","clearSelected","find","click","zoomAnimate","anchorX","anchorY","isCentered","animate","interval","scaleStart","scaleDiff","transXStart","transXDiff","transYStart","transYDiff","viewportChangeEvent","count","zoomMax","zoomMin","setInterval","clearInterval","itemBbox","newBbox","codes","point","undefined","latLngToPoint","getSelected","getSelectedRegions","getSelectedMarkers","select","clearSelectedRegions","clearSelectedMarkers","getMapObject","getRegionName","regionLabelsGroup","regionStyle","regionMargin","regionLabelStyle","labels","marker","markerConfig","markersArray","markersGroup","markerLabelsGroup","latLng","getMarkerPosition","markerLabelStyle","removeMarkers","projection","addMarker","seriesData","addMarkers","removeAllMarkers","inset","proj","centralMeridian","getInsetForPoint","pointToLatLng","nx","ny","insets","fill","stroke","cursor","onRegionTipShow","onRegionOver","onRegionOut","onRegionClick","onRegionSelected","onMarkerTipShow","onMarkerOver","onMarkerOut","onMarkerClick","onMarkerSelected","onViewportChange","MultiMap","maxLevel","main","multiMapLevel","history","addMap","defaultProjection","mapsLoaded","backButton","goBack","spinner","cnt","scope","multimap","mapName","mapNameByCode","drillDownPromise","state","drillDown","downloadMap","mapUrlByCode","currentMap","focusPromise","downloadPromise","always","when","pop","prevMap","multiMap","toLowerCase","global","w","noGlobal","arr","getProto","getPrototypeOf","flat","array","concat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","item","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","doc","script","getAttribute","head","parentNode","removeChild","toType","rhtmlSuffix","jQuery","selector","context","init","isArrayLike","nodeName","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","documentElement","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","second","invert","callbackInverse","matches","callbackExpect","arg","guid","Symbol","iterator","_i","whitespace","rtrimCSS","RegExp","contains","a","b","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","dir","next","safeActiveElement","activeElement","childNodes","els","seed","nid","match","newSelector","newContext","exec","getElementById","id","getElementsByClassName","testContext","tokenize","toSelector","querySelectorAll","qsaError","removeAttribute","cache","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","filter","attrId","getAttributeNode","tag","input","innerHTML","compare","sortDetached","expr","matchesSelector","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","xml","outerCache","nodeIndex","start","useCache","diff","firstChild","lastChild","pseudo","setFilters","idx","matched","not","matcher","compile","unmatched","has","lang","elemLang","hash","location","root","hasFocus","href","tabIndex","enabled","checked","selectedIndex","empty","nextSibling","header","button","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","submit","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","matcherOut","preMap","postMap","preexisting","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","filters","unique","getText","isXML","selectors","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","cur","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","list","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","func","tuples","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","mightThrow","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","console","warn","message","stack","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","tmp","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","defaultValue","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","types","one","origFn","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","isImmediatePropagationStopped","handleObjIn","eventHandle","events","t","handleObj","handlers","origType","elemData","create","triggered","bindType","delegateCount","mappedTypes","origCount","removeEvent","nativeEvent","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","writable","noBubble","beforeunload","returnValue","props","defaultPrevented","relatedTarget","timeStamp","Date","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","eventPhase","metaKey","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","pointerType","screenX","screenY","targetTouches","toElement","which","blur","focusMappedHandler","simulate","attaches","dataHolder","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","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","marginDelta","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","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","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","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","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","trim","_jQuery","_$","noConflict","_vm","_h","$createElement","_c","_self","staticRenderFns","default","methods","initVectorMap","mounted","_this","_asyncToGenerator","_regeneratorRuntime","mark","_callee","require","component"],"mappings":"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","file":"js/chunk-e7525f0e.b7f2385a.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