/*! * JQVMap: jQuery Vector Map Library * @author JQVMap * @version 1.5.1 * @link http://jqvmap.com * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE * @builddate 2016/05/18 */ ;var VectorCanvas=function(b,a,d){this.mode=window.SVGAngle?"svg":"vml";this.params=d;if(this.mode==="svg"){this.createSvgNode=function(e){return document.createElementNS(this.svgns,e)}}else{try{if(!document.namespaces.rvml){document.namespaces.add("rvml","urn:schemas-microsoft-com:vml")}this.createVmlNode=function(e){return document.createElement("')}}catch(c){this.createVmlNode=function(e){return document.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)")}if(this.mode==="svg"){this.canvas=this.createSvgNode("svg")}else{this.canvas=this.createVmlNode("group");this.canvas.style.position="absolute"}this.setSize(b,a)};VectorCanvas.prototype={svgns:"http://www.w3.org/2000/svg",mode:"svg",width:0,height:0,canvas:null};var ColorScale=function(a,b,c,d){if(a){this.setColors(a)}if(b){this.setNormalizeFunction(b)}if(c){this.setMin(c)}if(c){this.setMax(d)}};ColorScale.prototype={colors:[]};var JQVMap=function(g){g=g||{};var e=this;var f=JQVMap.maps[g.map];var h;if(!f){throw new Error('Invalid "'+g.map+'" map parameter. Please make sure you have loaded this map file in your HTML.')}this.selectedRegions=[];this.multiSelectRegion=g.multiSelectRegion;this.container=g.container;this.defaultWidth=f.width;this.defaultHeight=f.height;this.color=g.color;this.selectedColor=g.selectedColor;this.hoverColor=g.hoverColor;this.hoverColors=g.hoverColors;this.hoverOpacity=g.hoverOpacity;this.setBackgroundColor(g.backgroundColor);this.width=g.container.width();this.height=g.container.height();this.resize();jQuery(window).resize(function(){var j=g.container.width();var i=g.container.height();if(j&&i){e.width=j;e.height=i;e.resize();e.canvas.setSize(e.width,e.height);e.applyTransform();var k=jQuery.Event("resize.jqvmap");jQuery(g.container).trigger(k,[j,i]);if(h){jQuery(".jqvmap-pin").remove();e.pinHandlers=false;e.placePins(h.pins,h.mode)}}});this.canvas=new VectorCanvas(this.width,this.height,g);g.container.append(this.canvas.canvas);this.makeDraggable();this.rootGroup=this.canvas.createGroup(true);this.index=JQVMap.mapIndex;this.label=jQuery("
").addClass("jqvmap-label").appendTo(jQuery("body")).hide();if(g.enableZoom){jQuery("
").addClass("jqvmap-zoomin").text("+").appendTo(g.container);jQuery("
").addClass("jqvmap-zoomout").html("−").appendTo(g.container)}e.countries=[];for(var b in f.paths){var d=this.canvas.createPath({path:f.paths[b].path});d.setFill(this.color);d.id=e.getCountryId(b);e.countries[b]=d;if(this.canvas.mode==="svg"){d.setAttribute("class","jqvmap-region")}else{jQuery(d).addClass("jqvmap-region")}jQuery(this.rootGroup).append(d)}jQuery(g.container).delegate(this.canvas.mode==="svg"?"path":"shape","mouseover mouseout",function(m){var j=m.target,k=m.target.id.split("_").pop(),i=jQuery.Event("labelShow.jqvmap"),l=jQuery.Event("regionMouseOver.jqvmap");k=k.toLowerCase();if(m.type==="mouseover"){jQuery(g.container).trigger(l,[k,f.paths[k].name]);if(!l.isDefaultPrevented()){e.highlight(k,j)}if(g.showTooltip){e.label.text(f.paths[k].name);jQuery(g.container).trigger(i,[e.label,k]);if(!i.isDefaultPrevented()){e.label.show();e.labelWidth=e.label.width();e.labelHeight=e.label.height()}}}else{e.unhighlight(k,j);e.label.hide();jQuery(g.container).trigger("regionMouseOut.jqvmap",[k,f.paths[k].name])}});jQuery(g.container).delegate(this.canvas.mode==="svg"?"path":"shape","click",function(i){var m=i.target;var k=i.target.id.split("_").pop();var j=jQuery.Event("regionClick.jqvmap");k=k.toLowerCase();jQuery(g.container).trigger(j,[k,f.paths[k].name]);if(!g.multiSelectRegion&&!j.isDefaultPrevented()){for(var l in f.paths){e.countries[l].currentFillColor=e.countries[l].getOriginalFill();e.countries[l].setFill(e.countries[l].getOriginalFill())}}if(!j.isDefaultPrevented()){if(e.isSelected(k)){e.deselect(k,m)}else{e.select(k,m)}}});if(g.showTooltip){g.container.mousemove(function(k){if(e.label.is(":visible")){var j=k.pageX-15-e.labelWidth;var i=k.pageY-15-e.labelHeight;if(j<0){j=k.pageX+15}if(i<0){i=k.pageY+15}e.label.css({left:j,top:i})}})}this.setColors(g.colors);this.canvas.canvas.appendChild(this.rootGroup);this.applyTransform();this.colorScale=new ColorScale(g.scaleColors,g.normalizeFunction,g.valueMin,g.valueMax);if(g.values){this.values=g.values;this.setValues(g.values)}if(g.selectedRegions){if(g.selectedRegions instanceof Array){for(var a in g.selectedRegions){this.select(g.selectedRegions[a].toLowerCase())}}else{this.select(g.selectedRegions.toLowerCase())}}this.bindZoomButtons();if(g.pins){h={pins:g.pins,mode:g.pinMode};this.pinHandlers=false;this.placePins(g.pins,g.pinMode)}if(g.showLabels){this.pinHandlers=false;var c={};for(b in e.countries){if(typeof e.countries[b]!=="function"){if(!g.pins||!g.pins[b]){c[b]=b.toUpperCase()}}}h={pins:c,mode:"content"};this.placePins(c,"content")}JQVMap.mapIndex++};JQVMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,countries:{},countriesColors:{},countriesData:{},zoomStep:1.4,zoomMaxStep:4,zoomCurStep:1};JQVMap.xlink="http://www.w3.org/1999/xlink";JQVMap.mapIndex=1;JQVMap.maps={};(function(){var b={colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,enableZoom:1,showTooltip:1,borderColor:1,borderWidth:1,borderOpacity:1,selectedRegions:1,multiSelectRegion:1};var a={onLabelShow:"labelShow",onLoad:"load",onRegionOver:"regionMouseOver",onRegionOut:"regionMouseOut",onRegionClick:"regionClick",onRegionSelect:"regionSelect",onRegionDeselect:"regionDeselect",onResize:"resize"};jQuery.fn.vectorMap=function(c){var f={map:"world_en",backgroundColor:"#a5bfdd",color:"#f4f3f0",hoverColor:"#c9dfaf",hoverColors:{},selectedColor:"#c9dfaf",scaleColors:["#b6d6ff","#005ace"],normalizeFunction:"linear",enableZoom:true,showTooltip:true,borderColor:"#818181",borderWidth:1,borderOpacity:0.25,selectedRegions:null,multiSelectRegion:false},h=this.data("mapObject");if(c==="addMap"){JQVMap.maps[arguments[1]]=arguments[2]}else{if(c==="set"&&b[arguments[1]]){h["set"+arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1)].apply(h,Array.prototype.slice.call(arguments,2))}else{if(typeof c==="string"&&typeof h[c]==="function"){return h[c].apply(h,Array.prototype.slice.call(arguments,1))}else{jQuery.extend(f,c);f.container=this;this.css({position:"relative",overflow:"hidden"});h=new JQVMap(f);this.data("mapObject",h);this.unbind(".jqvmap");for(var g in a){if(f[g]){this.bind(a[g]+".jqvmap",f[g])}}var d=jQuery.Event("load.jqvmap");jQuery(f.container).trigger(d,h);return h}}}}})(jQuery);ColorScale.arrayToRgb=function(a){var b="#";var e;for(var c=0;c=0){e-=h[d];d++}var b;if(d===this.colors.length-1){b=this.vectorToNum(this.colors[d]).toString(16)}else{b=(this.vectorToNum(this.vectorAdd(this.colors[d],this.vectorMult(this.vectorSubtract(this.colors[d+1],this.colors[d]),(e)/(h[d]))))).toString(16)}while(b.length<6){b="0"+b}return"#"+b};ColorScale.rgbToArray=function(a){a=a.substr(1);return[parseInt(a.substr(0,2),16),parseInt(a.substr(2,2),16),parseInt(a.substr(4,2),16)]};ColorScale.prototype.setColors=function(a){for(var b=0;bb){this.transY=b}else{if(this.transYc){this.transX=c}else{if(this.transX=0};JQVMap.prototype.makeDraggable=function(){var c=false;var e,d;var k=this;k.isMoving=false;k.isMovingTimeout=false;var f;var h;var g;var b;var a;var j;var i;this.container.mousemove(function(l){if(c){k.transX-=(e-l.pageX)/k.scale;k.transY-=(d-l.pageY)/k.scale;k.applyTransform();e=l.pageX;d=l.pageY;k.isMoving=true;if(k.isMovingTimeout){clearTimeout(k.isMovingTimeout)}k.container.trigger("drag")}return false}).mousedown(function(l){c=true;e=l.pageX;d=l.pageY;return false}).mouseup(function(){c=false;clearTimeout(k.isMovingTimeout);k.isMovingTimeout=setTimeout(function(){k.isMoving=false},100);return false}).mouseout(function(){if(c&&k.isMoving){clearTimeout(k.isMovingTimeout);k.isMovingTimeout=setTimeout(function(){c=false;k.isMoving=false},100);return false}});jQuery(this.container).bind("touchmove",function(n){var q;var p;var m=n.originalEvent.touches;var l;var o;if(m.length===1){if(f===1){if(j===m[0].pageX&&i===m[0].pageY){return}l=k.transX;o=k.transY;k.transX-=(j-m[0].pageX)/k.scale;k.transY-=(i-m[0].pageY)/k.scale;k.applyTransform();if(l!==k.transX||o!==k.transY){n.preventDefault()}k.isMoving=true;if(k.isMovingTimeout){clearTimeout(k.isMovingTimeout)}}j=m[0].pageX;i=m[0].pageY}else{if(m.length===2){if(f===2){p=Math.sqrt(Math.pow(m[0].pageX-m[1].pageX,2)+Math.pow(m[0].pageY-m[1].pageY,2))/b;k.setScale(a*p,h,g);n.preventDefault()}else{q=jQuery(k.container).offset();if(m[0].pageX>m[1].pageX){h=m[1].pageX+(m[0].pageX-m[1].pageX)/2}else{h=m[0].pageX+(m[1].pageX-m[0].pageX)/2}if(m[0].pageY>m[1].pageY){g=m[1].pageY+(m[0].pageY-m[1].pageY)/2}else{g=m[0].pageY+(m[1].pageY-m[0].pageY)/2}h-=q.left;g-=q.top;a=k.scale;b=Math.sqrt(Math.pow(m[0].pageX-m[1].pageX,2)+Math.pow(m[0].pageY-m[1].pageY,2))}}}f=m.length});jQuery(this.container).bind("touchstart",function(){f=0});jQuery(this.container).bind("touchend",function(){f=0})};JQVMap.prototype.placePins=function(b,d){var a=this;if(!d||(d!=="content"&&d!=="id")){d="content"}if(d==="content"){jQuery.each(b,function(g,f){if(jQuery("#"+a.getCountryId(g)).length===0){return}var e=a.getPinId(g);var h=jQuery("#"+e);if(h.length>0){h.remove()}a.container.append('
'+f+"
")})}else{jQuery.each(b,function(g,f){if(jQuery("#"+a.getCountryId(g)).length===0){return}var e=a.getPinId(g);var h=jQuery("#"+e);if(h.length>0){h.remove()}a.container.append('
');h.append(jQuery("#"+f))})}this.positionPins();if(!this.pinHandlers){this.pinHandlers=true;var c=function(){a.positionPins()};this.container.bind("zoomIn",c).bind("zoomOut",c).bind("drag",c)}};JQVMap.prototype.positionPins=function(){var b=this;var a=this.container.find(".jqvmap-pin");jQuery.each(a,function(f,k){k=jQuery(k);var h=b.getCountryId(k.attr("for").toLowerCase());var j=jQuery("#"+h);var i=document.getElementById(h).getBBox();var e=j.position();var d=b.scale;var c=e.left+(i.width/2)*d-k.width()/2,g=e.top+(i.height/2)*d-k.height()/2;k.css("left",c).css("top",g)})};JQVMap.prototype.removePin=function(a){a=a.toLowerCase();jQuery("#"+this.getPinId(a)).remove()};JQVMap.prototype.removePins=function(){this.container.find(".jqvmap-pin").remove()};JQVMap.prototype.reset=function(){for(var a in this.countries){this.countries[a].setFill(this.color)}this.scale=this.baseScale;this.transX=this.baseTransX;this.transY=this.baseTransY;this.applyTransform()};JQVMap.prototype.resize=function(){var a=this.baseScale;if(this.width/this.height>this.defaultWidth/this.defaultHeight){this.baseScale=this.height/this.defaultHeight;this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)}else{this.baseScale=this.width/this.defaultWidth;this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)}this.scale*=this.baseScale/a;this.transX*=this.baseScale/a;this.transY*=this.baseScale/a};JQVMap.prototype.select=function(b,a){b=b.toLowerCase();a=a||jQuery("#"+this.getCountryId(b))[0];if(!this.isSelected(b)){if(this.multiSelectRegion){this.selectedRegions.push(b)}else{this.selectedRegions=[b]}jQuery(this.container).trigger("regionSelect.jqvmap",[b]);if(this.selectedColor&&a){a.currentFillColor=this.selectedColor;a.setFill(this.selectedColor)}}};JQVMap.prototype.selectIndex=function(b){b=b.toLowerCase();for(var a=0;aa){a=c[f]}if(e1){b.transX+=(b.width/(b.scale/b.zoomStep)-b.width/b.scale)/2;b.transY+=(b.height/(b.scale/b.zoomStep)-b.height/b.scale)/2;b.setScale(b.scale/b.zoomStep);b.zoomCurStep--;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)+a);b.container.trigger("zoomOut")}};VectorCanvas.prototype.applyTransformParams=function(c,b,a){if(this.mode==="svg"){this.rootGroup.setAttribute("transform","scale("+c+") translate("+b+", "+a+")")}else{this.rootGroup.coordorigin=(this.width-b)+","+(this.height-a);this.rootGroup.coordsize=this.width/c+","+this.height/c}};VectorCanvas.prototype.createGroup=function(a){var b;if(this.mode==="svg"){b=this.createSvgNode("g")}else{b=this.createVmlNode("group");b.style.width=this.width+"px";b.style.height=this.height+"px";b.style.left="0px";b.style.top="0px";b.coordorigin="0 0";b.coordsize=this.width+" "+this.height}if(a){this.rootGroup=b}return b};VectorCanvas.prototype.createPath=function(a){var b;if(this.mode==="svg"){b=this.createSvgNode("path");b.setAttribute("d",a.path);if(this.params.borderColor!==null){b.setAttribute("stroke",this.params.borderColor)}if(this.params.borderWidth>0){b.setAttribute("stroke-width",this.params.borderWidth);b.setAttribute("stroke-linecap","round");b.setAttribute("stroke-linejoin","round")}if(this.params.borderOpacity>0){b.setAttribute("stroke-opacity",this.params.borderOpacity)}b.setFill=function(e){this.setAttribute("fill",e);if(this.getAttribute("original")===null){this.setAttribute("original",e)}};b.getFill=function(){return this.getAttribute("fill")};b.getOriginalFill=function(){return this.getAttribute("original")};b.setOpacity=function(e){this.setAttribute("fill-opacity",e)}}else{b=this.createVmlNode("shape");b.coordorigin="0 0";b.coordsize=this.width+" "+this.height;b.style.width=this.width+"px";b.style.height=this.height+"px";b.fillcolor=JQVMap.defaultFillColor;b.stroked=false;b.path=VectorCanvas.pathSvgToVml(a.path);var d=this.createVmlNode("skew");d.on=true;d.matrix="0.01,0,0,0.01,0,0";d.offset="0,0";b.appendChild(d);var c=this.createVmlNode("fill");b.appendChild(c);b.setFill=function(e){this.getElementsByTagName("fill")[0].color=e;if(this.getAttribute("original")===null){this.setAttribute("original",e)}};b.getFill=function(){return this.getElementsByTagName("fill")[0].color};b.getOriginalFill=function(){return this.getAttribute("original")};b.setOpacity=function(e){this.getElementsByTagName("fill")[0].opacity=parseInt(e*100,10)+"%"}}return b};VectorCanvas.prototype.pathSvgToVml=function(e){var b="";var a=0,f=0,d,c;return e.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g,function(k,j,m){m=m.replace(/(\d)-/g,"$1,-").replace(/\s+/g,",").split(",");if(!m[0]){m.shift()}for(var h=0,g=m.length;h