EVOLUTION-NINJA
Edit File: jquery.vmap.min.js
!function(t){var e={colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,enableZoom:1,showTooltip:1,borderColor:1,borderWidth:1,borderOpacity:1,selectedRegions:1,multiSelectRegion:1},i={onLabelShow:"labelShow",onRegionOver:"regionMouseOver",onRegionOut:"regionMouseOut",onRegionClick:"regionClick",onRegionSelect:"regionSelect",onRegionDeselect:"regionDeselect"};t.fn.vectorMap=function(s){var r={map:"world_en",backgroundColor:"#a5bfdd",color:"#f4f3f0",hoverColor:"#c9dfaf",selectedColor:"#c9dfaf",scaleColors:["#b6d6ff","#005ace"],normalizeFunction:"linear",enableZoom:!0,showTooltip:!0,borderColor:"#818181",borderWidth:1,borderOpacity:.25,selectedRegions:null,multiSelectRegion:!1},a=this.data("mapObject");if("addMap"===s)o.maps[arguments[1]]=arguments[2];else if("set"===s&&e[arguments[1]])a["set"+arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1)].apply(a,Array.prototype.slice.call(arguments,2));else{if("string"==typeof s&&"function"==typeof a[s])return a[s].apply(a,Array.prototype.slice.call(arguments,1));for(var n in t.extend(r,s),r.container=this,this.css({position:"relative",overflow:"hidden"}),a=new o(r),this.data("mapObject",a),i)r[n]&&this.bind(i[n]+".jqvmap",r[n])}};var s=function(t,e,i){if(this.mode=window.SVGAngle?"svg":"vml",this.params=i,"svg"==this.mode)this.createSvgNode=function(t){return document.createElementNS(this.svgns,t)};else{try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),this.createVmlNode=function(t){return document.createElement("<rvml:"+t+' class="rvml">')}}catch(t){this.createVmlNode=function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)")}"svg"==this.mode?this.canvas=this.createSvgNode("svg"):(this.canvas=this.createVmlNode("group"),this.canvas.style.position="absolute"),this.setSize(t,e)};s.prototype={svgns:"http://www.w3.org/2000/svg",mode:"svg",width:0,height:0,canvas:null,setSize:function(t,e){if("svg"==this.mode)this.canvas.setAttribute("width",t),this.canvas.setAttribute("height",e);else if(this.canvas.style.width=t+"px",this.canvas.style.height=e+"px",this.canvas.coordsize=t+" "+e,this.canvas.coordorigin="0 0",this.rootGroup){for(var i=this.rootGroup.getElementsByTagName("shape"),s=0,o=i.length;s<o;s++)i[s].coordsize=t+" "+e,i[s].style.width=t+"px",i[s].style.height=e+"px";this.rootGroup.coordsize=t+" "+e,this.rootGroup.style.width=t+"px",this.rootGroup.style.height=e+"px"}this.width=t,this.height=e},createPath:function(t){var e;if("svg"==this.mode)(e=this.createSvgNode("path")).setAttribute("d",t.path),null!==this.params.borderColor&&e.setAttribute("stroke",this.params.borderColor),this.params.borderWidth>0&&(e.setAttribute("stroke-width",this.params.borderWidth),e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-linejoin","round")),this.params.borderOpacity>0&&e.setAttribute("stroke-opacity",this.params.borderOpacity),e.setFill=function(t){this.setAttribute("fill",t),null===this.getAttribute("original")&&this.setAttribute("original",t)},e.getFill=function(t){return this.getAttribute("fill")},e.getOriginalFill=function(){return this.getAttribute("original")},e.setOpacity=function(t){this.setAttribute("fill-opacity",t)};else{(e=this.createVmlNode("shape")).coordorigin="0 0",e.coordsize=this.width+" "+this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",e.fillcolor=o.defaultFillColor,e.stroked=!1,e.path=s.pathSvgToVml(t.path);var i=this.createVmlNode("skew");i.on=!0,i.matrix="0.01,0,0,0.01,0,0",i.offset="0,0",e.appendChild(i);var r=this.createVmlNode("fill");e.appendChild(r),e.setFill=function(t){this.getElementsByTagName("fill")[0].color=t,null===this.getAttribute("original")&&this.setAttribute("original",t)},e.getFill=function(t){return this.getElementsByTagName("fill")[0].color},e.getOriginalFill=function(){return this.getAttribute("original")},e.setOpacity=function(t){this.getElementsByTagName("fill")[0].opacity=parseInt(100*t,10)+"%"}}return e},createGroup:function(t){var e;return"svg"==this.mode?e=this.createSvgNode("g"):((e=this.createVmlNode("group")).style.width=this.width+"px",e.style.height=this.height+"px",e.style.left="0px",e.style.top="0px",e.coordorigin="0 0",e.coordsize=this.width+" "+this.height),t&&(this.rootGroup=e),e},applyTransformParams:function(t,e,i){"svg"==this.mode?this.rootGroup.setAttribute("transform","scale("+t+") translate("+e+", "+i+")"):(this.rootGroup.coordorigin=this.width-e+","+(this.height-i),this.rootGroup.coordsize=this.width/t+","+this.height/t)}},s.pathSvgToVml=function(t){var e,i,s=0,o=0;return t.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g,function(t,r,a,n){(a=a.replace(/(\d)-/g,"$1,-").replace(/\s+/g,",").split(","))[0]||a.shift();for(var l=0,h=a.length;l<h;l++)a[l]=Math.round(100*a[l]);switch(r){case"m":return s+=a[0],o+=a[1],"t"+a.join(",");case"M":return s=a[0],o=a[1],"m"+a.join(",");case"l":return s+=a[0],o+=a[1],"r"+a.join(",");case"L":return s=a[0],o=a[1],"l"+a.join(",");case"h":return s+=a[0],"r"+a[0]+",0";case"H":return"l"+(s=a[0])+","+o;case"v":return o+=a[0],"r0,"+a[0];case"V":return o=a[0],"l"+s+","+o;case"c":return e=s+a[a.length-4],i=o+a[a.length-3],s+=a[a.length-2],o+=a[a.length-1],"v"+a.join(",");case"C":return e=a[a.length-4],i=a[a.length-3],s=a[a.length-2],o=a[a.length-1],"c"+a.join(",");case"s":return a.unshift(o-i),a.unshift(s-e),e=s+a[a.length-4],i=o+a[a.length-3],s+=a[a.length-2],o+=a[a.length-1],"v"+a.join(",");case"S":return a.unshift(o+o-i),a.unshift(s+s-e),e=a[a.length-4],i=a[a.length-3],s=a[a.length-2],o=a[a.length-1],"c"+a.join(",");default:return!1}return""}).replace(/z/g,"")};var o=function(e){e=e||{};var i=this,a=o.maps[e.map];for(var n in this.selectedRegions=[],this.multiSelectRegion=e.multiSelectRegion,this.container=e.container,this.defaultWidth=a.width,this.defaultHeight=a.height,this.color=e.color,this.selectedColor=e.selectedColor,this.hoverColor=e.hoverColor,this.hoverOpacity=e.hoverOpacity,this.setBackgroundColor(e.backgroundColor),this.width=e.container.width(),this.height=e.container.height(),this.resize(),jQuery(window).resize(function(){i.width=e.container.width(),i.height=e.container.height(),i.resize(),i.canvas.setSize(i.width,i.height),i.applyTransform()}),this.canvas=new s(this.width,this.height,e),e.container.append(this.canvas.canvas),this.makeDraggable(),this.rootGroup=this.canvas.createGroup(!0),this.index=o.mapIndex,this.label=jQuery("<div/>").addClass("jqvmap-label").appendTo(jQuery("body")),e.enableZoom&&(jQuery("<div/>").addClass("jqvmap-zoomin").text("+").appendTo(e.container),jQuery("<div/>").addClass("jqvmap-zoomout").html("−").appendTo(e.container)),i.countries=[],a.pathes){var l=this.canvas.createPath({path:a.pathes[n].path});l.setFill(this.color),l.id=i.getCountryId(n),i.countries[n]=l,"svg"==this.canvas.mode?l.setAttribute("class","jvectormap-region"):jQuery(l).addClass("jvectormap-region"),jQuery(this.rootGroup).append(l)}if(jQuery(e.container).delegate("svg"==this.canvas.mode?"path":"shape","mouseover mouseout",function(s){var o=s.target,r=s.target.id.split("_").pop(),n=t.Event("labelShow.jqvmap"),l=t.Event("regionMouseOver.jqvmap");"mouseover"==s.type?(jQuery(e.container).trigger(l,[r,a.pathes[r].name]),l.isDefaultPrevented()||i.highlight(r,o),e.showTooltip&&(i.label.text(a.pathes[r].name),jQuery(e.container).trigger(n,[i.label,r]),n.isDefaultPrevented()||(i.label.show(),i.labelWidth=i.label.width(),i.labelHeight=i.label.height()))):(i.unhighlight(r,o),i.label.hide(),jQuery(e.container).trigger("regionMouseOut.jqvmap",[r,a.pathes[r].name]))}),jQuery(e.container).delegate("svg"==this.canvas.mode?"path":"shape","click",function(t){if(!e.multiSelectRegion)for(var s in a.pathes)i.countries[s].currentFillColor=i.countries[s].getOriginalFill(),i.countries[s].setFill(i.countries[s].getOriginalFill());var o=t.target,r=t.target.id.split("_").pop();jQuery(e.container).trigger("regionClick.jqvmap",[r,a.pathes[r].name]),-1!==i.selectedRegions.indexOf(r)?i.deselect(r,o):i.select(r,o)}),e.showTooltip&&e.container.mousemove(function(t){i.label.is(":visible")&&i.label.css({left:t.pageX-15-i.labelWidth,top:t.pageY-15-i.labelHeight})}),this.setColors(e.colors),this.canvas.canvas.appendChild(this.rootGroup),this.applyTransform(),this.colorScale=new r(e.scaleColors,e.normalizeFunction,e.valueMin,e.valueMax),e.values&&(this.values=e.values,this.setValues(e.values)),e.selectedRegions)if(e.selectedRegions instanceof Array)for(var h in e.selectedRegions)this.select(e.selectedRegions[h].toLowerCase());else this.select(e.selectedRegions.toLowerCase());this.bindZoomButtons(),o.mapIndex++};o.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,setColors:function(t,e){if("string"==typeof t)this.countries[t].setFill(e),this.countries[t].setAttribute("original",e);else{var i=t;for(var s in i)this.countries[s]&&(this.countries[s].setFill(i[s]),this.countries[s].setAttribute("original",i[s]))}},setValues:function(t){var e,i=0,s=Number.MAX_VALUE;for(var o in t)(e=parseFloat(t[o]))>i&&(i=t[o]),e&&e<s&&(s=e);this.colorScale.setMin(s),this.colorScale.setMax(i);var r={};for(o in t)e=parseFloat(t[o]),r[o]=e?this.colorScale.getColor(e):this.color;this.setColors(r),this.values=t},setBackgroundColor:function(t){this.container.css("background-color",t)},setScaleColors:function(t){this.colorScale.setColors(t),this.values&&this.setValues(this.values)},setNormalizeFunction:function(t){this.colorScale.setNormalizeFunction(t),this.values&&this.setValues(this.values)},highlight:function(e,i){i=i||t("#"+this.getCountryId(e))[0],this.hoverOpacity?i.setOpacity(this.hoverOpacity):this.hoverColor&&(i.currentFillColor=i.getFill()+"",i.setFill(this.hoverColor))},unhighlight:function(e,i){(i=i||t("#"+this.getCountryId(e))[0]).setOpacity(1),i.currentFillColor&&i.setFill(i.currentFillColor)},select:function(e,i){i=i||t("#"+this.getCountryId(e))[0],this.selectedRegions.indexOf(e)<0&&(this.multiSelectRegion?this.selectedRegions.push(e):this.selectedRegions=[e],t(this.container).trigger("regionSelect.jqvmap",[e]),this.selectedColor&&(i.currentFillColor=this.selectedColor,i.setFill(this.selectedColor)))},deselect:function(e,i){i=i||t("#"+this.getCountryId(e))[0],this.selectedRegions.indexOf(e)>=0&&(this.selectedRegions.splice(this.selectedRegions.indexOf(e),1),t(this.container).trigger("regionDeselect.jqvmap",[e]),i.currentFillColor=i.getOriginalFill(),i.setFill(i.getOriginalFill()))},isSelected:function(t){return this.selectedRegions.indexOf(t)>=0},resize:function(){var t=this.baseScale;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)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/t,this.transX*=this.baseScale/t,this.transY*=this.baseScale/t},reset:function(){for(var t in this.countryTitle.reset(),this.countries)this.countries[t].setFill(o.defaultColor);this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},applyTransform:function(){var t,e,i,s;this.defaultWidth*this.scale<=this.width?(t=(this.width-this.defaultWidth*this.scale)/(2*this.scale),i=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(t=0,i=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(e=(this.height-this.defaultHeight*this.scale)/(2*this.scale),s=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(e=0,s=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>e?this.transY=e:this.transY<s&&(this.transY=s),this.transX>t?this.transX=t:this.transX<i&&(this.transX=i),this.canvas.applyTransformParams(this.scale,this.transX,this.transY)},makeDraggable:function(){var t,e,i=!1,s=this;s.isMoving=!1,s.isMovingTimeout=!1,this.container.mousemove(function(o){if(i){s.transX,s.transY;s.transX-=(t-o.pageX)/s.scale,s.transY-=(e-o.pageY)/s.scale,s.applyTransform(),t=o.pageX,e=o.pageY,s.isMoving=!0,s.isMovingTimeout&&clearTimeout(s.isMovingTimeout)}return!1}).mousedown(function(s){return i=!0,t=s.pageX,e=s.pageY,!1}).mouseup(function(){return i=!1,s.isMovingTimeout=setTimeout(function(){s.isMoving=!1},100),!1})},bindZoomButtons:function(){var t=this,e=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);this.container.find(".jqvmap-zoomin").click(function(){if(t.zoomCurStep<t.zoomMaxStep){t.transX,t.transY,t.scale;t.transX-=(t.width/t.scale-t.width/(t.scale*t.zoomStep))/2,t.transY-=(t.height/t.scale-t.height/(t.scale*t.zoomStep))/2,t.setScale(t.scale*t.zoomStep),t.zoomCurStep++,jQuery("#zoomSlider").css("top",parseInt(jQuery("#zoomSlider").css("top"),10)-e)}}),this.container.find(".jqvmap-zoomout").click(function(){if(t.zoomCurStep>1){t.transX,t.transY,t.scale;t.transX+=(t.width/(t.scale/t.zoomStep)-t.width/t.scale)/2,t.transY+=(t.height/(t.scale/t.zoomStep)-t.height/t.scale)/2,t.setScale(t.scale/t.zoomStep),t.zoomCurStep--,jQuery("#zoomSlider").css("top",parseInt(jQuery("#zoomSlider").css("top"),10)+e)}})},setScale:function(t){this.scale=t,this.applyTransform()},getCountryId:function(t){return"jqvmap"+this.index+"_"+t}},o.xlink="http://www.w3.org/1999/xlink",o.mapIndex=1,o.maps={};var r=function(t,e,i,s){t&&this.setColors(t),e&&this.setNormalizeFunction(e),i&&this.setMin(i),i&&this.setMax(s)};r.prototype={colors:[],setMin:function(t){this.clearMinValue=t,"function"==typeof this.normalize?this.minValue=this.normalize(t):this.minValue=t},setMax:function(t){this.clearMaxValue=t,"function"==typeof this.normalize?this.maxValue=this.normalize(t):this.maxValue=t},setColors:function(t){for(var e=0;e<t.length;e++)t[e]=r.rgbToArray(t[e]);this.colors=t},setNormalizeFunction:function(t){"polynomial"===t?this.normalize=function(t){return Math.pow(t,.2)}:"linear"===t?delete this.normalize:this.normalize=t,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},getColor:function(t){"function"==typeof this.normalize&&(t=this.normalize(t));for(var e,i=[],s=0,o=0;o<this.colors.length-1;o++)e=this.vectorLength(this.vectorSubtract(this.colors[o+1],this.colors[o])),i.push(e),s+=e;var r,a=(this.maxValue-this.minValue)/s;for(o=0;o<i.length;o++)i[o]*=a;for(o=0,t-=this.minValue;t-i[o]>=0;)t-=i[o],o++;for(r=o==this.colors.length-1?this.vectorToNum(this.colors[o]).toString(16):this.vectorToNum(this.vectorAdd(this.colors[o],this.vectorMult(this.vectorSubtract(this.colors[o+1],this.colors[o]),t/i[o]))).toString(16);r.length<6;)r="0"+r;return"#"+r},vectorToNum:function(t){for(var e=0,i=0;i<t.length;i++)e+=Math.round(t[i])*Math.pow(256,t.length-i-1);return e},vectorSubtract:function(t,e){for(var i=[],s=0;s<t.length;s++)i[s]=t[s]-e[s];return i},vectorAdd:function(t,e){for(var i=[],s=0;s<t.length;s++)i[s]=t[s]+e[s];return i},vectorMult:function(t,e){for(var i=[],s=0;s<t.length;s++)i[s]=t[s]*e;return i},vectorLength:function(t){for(var e=0,i=0;i<t.length;i++)e+=t[i]*t[i];return Math.sqrt(e)}},r.arrayToRgb=function(t){for(var e,i="#",s=0;s<t.length;s++)i+=1==(e=t[s].toString(16)).length?"0"+e:e;return i},r.rgbToArray=function(t){return t=t.substr(1),[parseInt(t.substr(0,2),16),parseInt(t.substr(2,2),16),parseInt(t.substr(4,2),16)]}}(jQuery);