T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/gositeme.com/public_html/wp-content/cache/wpfc-minified/pbdtiva/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/gositeme.com/public_html/wp-content/cache/wpfc-minified/pbdtiva/hd6ww.js
(function(){
var d;
window.AmCharts ? d=window.AmCharts:(d={}, window.AmCharts=d, d.themes={}, d.maps={}, d.inheriting={}, d.charts=[], d.onReadyArray=[], d.useUTC = !1, d.updateRate=60, d.uid=0, d.lang={}, d.translations={}, d.mapTranslations={}, d.windows={}, d.initHandlers=[], d.amString="am", d.pmString="pm");
d.Class=function(a){
var b=function(){
arguments[0]!==d.inheriting&&(this.events={}, this.construct.apply(this, arguments))
};
a.inherits ? (b.prototype=new a.inherits(d.inheriting), b.base=a.inherits.prototype, delete a.inherits):(b.prototype.createEvents=function(){
for (var a=0; a < arguments.length; a++) this.events[arguments[a]]=[]
}, b.prototype.listenTo=function(a, b, c){
this.removeListener(a, b, c);
a.events[b].push({
handler: c,
scope: this
})
}, b.prototype.addListener=function(a, b, c){
this.removeListener(this, a, b);
a&&this.events[a]&&this.events[a].push({
handler: b,
scope: c
})
}, b.prototype.removeListener=function(a, b, c){
if(a&&a.events&&(a=a.events[b]))
for (b=a.length - 1; 0 <=b; b--) a[b].handler===c&&a.splice(b, 1)
}, b.prototype.fire=function(a){
for (var b=this.events[a.type], c=0; c < b.length; c++){
var d=b[c];
d.handler.call(d.scope, a)
}});
for (var c in a) b.prototype[c]=a[c];
return b
};
d.addChart=function(a){
window.requestAnimationFrame ? d.animationRequested||(d.animationRequested = !0, window.requestAnimationFrame(d.update)):d.updateInt||(d.updateInt=setInterval(function(){
d.update()
}, Math.round(1E3 / d.updateRate)));
d.charts.push(a)
};
d.removeChart=function(a){
for (var b=d.charts, c=b.length - 1; 0 <=c; c--) b[c]==a&&b.splice(c, 1);
0===b.length&&(d.requestAnimation&&(window.cancelAnimationFrame(d.requestAnimation), d.animationRequested = !1), d.updateInt&&(clearInterval(d.updateInt), d.updateInt=NaN))
};
d.isModern = !0;
d.getIEVersion=function(){
var a=0,
b, c;
"Microsoft Internet Explorer"==navigator.appName&&(b=navigator.userAgent, c=/MSIE ([0-9]{1,}[.0-9]{0,})/, null!==c.exec(b)&&(a=parseFloat(RegExp.$1)));
return a
};
d.applyLang=function(a, b){
var c=d.translations;
b.dayNames=d.extend({}, d.dayNames);
b.shortDayNames=d.extend({}, d.shortDayNames);
b.monthNames=d.extend({}, d.monthNames);
b.shortMonthNames=d.extend({}, d.shortMonthNames);
b.amString="am";
b.pmString="pm";
c&&(c=c[a])&&(d.lang=c, b.langObj=c, c.monthNames&&(b.dayNames=d.extend({}, c.dayNames), b.shortDayNames=d.extend({}, c.shortDayNames), b.monthNames=d.extend({}, c.monthNames), b.shortMonthNames=d.extend({}, c.shortMonthNames)), c.am&&(b.amString=c.am), c.pm&&(b.pmString=c.pm));
d.amString=b.amString;
d.pmString=b.pmString
};
d.IEversion=d.getIEVersion();
9 > d.IEversion&&0 < d.IEversion&&(d.isModern = !1, d.isIE = !0);
d.dx=0;
d.dy=0;
if(document.addEventListener||window.opera) d.isNN = !0, d.isIE = !1, d.dx=.5, d.dy=.5;
document.attachEvent&&(d.isNN = !1, d.isIE = !0, d.isModern||(d.dx=0, d.dy=0));
window.chrome&&(d.chrome = !0);
d.handleMouseUp=function(a){
for (var b=d.charts, c=0; c < b.length; c++){
var e=b[c];
e&&e.handleReleaseOutside&&e.handleReleaseOutside(a)
}};
d.handleMouseMove=function(a){
for (var b=d.charts, c=0; c < b.length; c++){
var e=b[c];
e&&e.handleMouseMove&&e.handleMouseMove(a)
}};
d.handleWheel=function(a){
for (var b=d.charts, c=0; c < b.length; c++){
var e=b[c];
if(e&&e.mouseIsOver){
(e.mouseWheelScrollEnabled||e.mouseWheelZoomEnabled)&&e.handleWheel&&e.handleWheel(a);
break
}}
};
d.resetMouseOver=function(){
for (var a=d.charts, b=0; b < a.length; b++){
var c=a[b];
c&&(c.mouseIsOver = !1)
}};
d.ready=function(a){
d.onReadyArray.push(a)
};
d.handleLoad=function(){
d.isReady = !0;
for (var a=d.onReadyArray, b=0; b < a.length; b++){
var c=a[b];
isNaN(d.processDelay) ? c():setTimeout(c, d.processDelay * b)
}
d.onReadyArray=[]
};
d.addInitHandler=function(a, b){
d.initHandlers.push({
method: a,
types: b
})
};
d.callInitHandler=function(a){
var b=d.initHandlers;
if(d.initHandlers)
for (var c=0; c < b.length; c++){
var e=b[c];
e.types ? d.isInArray(e.types, a.type)&&e.method(a):e.method(a)
}};
d.getUniqueId=function(){
d.uid++;
return "AmChartsEl-" + d.uid
};
d.isNN&&(document.addEventListener("mousemove", d.handleMouseMove), document.addEventListener("mouseup", d.handleMouseUp, !0), window.addEventListener("load", d.handleLoad, !0));
d.isIE&&(document.attachEvent("onmousemove", d.handleMouseMove), document.attachEvent("onmouseup", d.handleMouseUp), window.attachEvent("onload", d.handleLoad));
d.addWheelListeners=function(){
d.wheelIsListened||(d.isNN&&(window.addEventListener("DOMMouseScroll", d.handleWheel, !0), document.addEventListener("mousewheel", d.handleWheel, !0)), d.isIE&&document.attachEvent("onmousewheel", d.handleWheel));
d.wheelIsListened = !0
};
d.clear=function(){
var a=d.charts;
if(a)
for (var b=a.length - 1; 0 <=b; b--) a[b].clear();
d.updateInt&&clearInterval(d.updateInt);
d.requestAnimation&&window.cancelAnimationFrame(d.requestAnimation);
d.charts=[];
d.isNN&&(document.removeEventListener("mousemove", d.handleMouseMove, !0), document.removeEventListener("mouseup", d.handleMouseUp, !0), window.removeEventListener("load", d.handleLoad, !0), window.removeEventListener("DOMMouseScroll", d.handleWheel, !0), document.removeEventListener("mousewheel", d.handleWheel, !0));
d.isIE&&(document.detachEvent("onmousemove", d.handleMouseMove), document.detachEvent("onmouseup", d.handleMouseUp), window.detachEvent("onload", d.handleLoad))
};
d.makeChart=function(a, b, c){
var e=b.type,
f=b.theme;
d.isString(f)&&(f=d.themes[f], b.theme=f);
var g;
switch (e){
case "serial":
g=new d.AmSerialChart(f);
break;
case "xy":
g=new d.AmXYChart(f);
break;
case "pie":
g=new d.AmPieChart(f);
break;
case "radar":
g=new d.AmRadarChart(f);
break;
case "gauge":
g=new d.AmAngularGauge(f);
break;
case "funnel":
g=new d.AmFunnelChart(f);
break;
case "map":
g=new d.AmMap(f);
break;
case "stock":
g=new d.AmStockChart(f);
break;
case "gantt":
g=new d.AmGanttChart(f)
}
d.extend(g, b);
d.isReady ? isNaN(c) ? g.write(a):setTimeout(function(){
d.realWrite(g, a)
}, c):d.ready(function(){
isNaN(c) ? g.write(a):setTimeout(function(){
d.realWrite(g, a)
}, c)
});
return g
};
d.realWrite=function(a, b){
a.write(b)
};
d.updateCount=0;
d.validateAt=Math.round(d.updateRate / 10);
d.update=function(){
var a=d.charts;
d.updateCount++;
var b = !1;
d.updateCount==d.validateAt&&(b = !0, d.updateCount=0);
if(a)
for (var c=a.length - 1; 0 <=c; c--) a[c].update&&a[c].update(), b&&(a[c].autoResize ? a[c].validateSize&&a[c].validateSize():a[c].premeasure&&a[c].premeasure());
window.requestAnimationFrame&&(d.requestAnimation=window.requestAnimationFrame(d.update))
};
"complete"==document.readyState&&d.handleLoad()
})();
(function(){
var d=window.AmCharts;
d.toBoolean=function(a, b){
if(void 0===a) return b;
switch (String(a).toLowerCase()){
case "true":
case "yes":
case "1":
return !0;
case "false":
case "no":
case "0":
case null:
return !1;
default:
return !!a
}};
d.removeFromArray=function(a, b){
var c;
if(void 0!==b&&void 0!==a)
for (c=a.length - 1; 0 <=c; c--) a[c]==b&&a.splice(c, 1)
};
d.getPath=function(){
var a=document.getElementsByTagName("script");
if(a)
for (var b=0; b < a.length; b++){
var c=a[b].src;
if(-1!==c.search(/\/(amcharts|ammap)\.js/)) return c.replace(/\/(amcharts|ammap)\.js.*/, "/")
}};
d.normalizeUrl=function(a){
return ""!==a&&-1===a.search(/\/$/) ? a + "/":a
};
d.isAbsolute=function(a){
return 0===a.search(/^http[s]?:|^\//)
};
d.isInArray=function(a, b){
for (var c=0; c < a.length; c++)
if(a[c]==b) return !0;
return !1
};
d.getDecimals=function(a){
var b=0;
isNaN(a)||(a=String(a), -1!=a.indexOf("e-") ? b=Number(a.split("-")[1]):-1!=a.indexOf(".")&&(b=a.split(".")[1].length));
return b
};
d.wordwrap=function(a, b, c, e){
var f, g, h, k;
a +="";
if(1 > b) return a;
f=-1;
for (a=(k=a.split(/\r\n|\n|\r/)).length; ++f < a; k[f] +=h){
h=k[f];
for (k[f]=""; h.length > b; k[f] +=d.trim(h.slice(0, g)) + ((h=h.slice(g)).length ? c:"")) g=2==e||(g=h.slice(0, b + 1).match(/\S*(\s)?$/))[1] ? b:g.input.length - g[0].length||1==e&&b||g.input.length + (g=h.slice(b).match(/^\S*/))[0].length;
h=d.trim(h)
}
return k.join(c)
};
d.trim=function(a){
return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
};
d.wrappedText=function(a, b, c, e, f, g, h, k){
var l=d.text(a, b, c, e, f, g, h);
if(l){
var m=l.getBBox();
if(m.width > k){
var n="\n";
d.isModern||(n="<br>");
k=Math.floor(k / (m.width /
b.length));
2 < k&&(k -=2);
b=d.wordwrap(b, k, n, !0);
l.remove();
l=d.text(a, b, c, e, f, g, h)
}}
return l
};
d.getStyle=function(a, b){
var c="";
if(document.defaultView&&document.defaultView.getComputedStyle) try {
c=document.defaultView.getComputedStyle(a, "").getPropertyValue(b)
} catch (e){} else a.currentStyle&&(b=b.replace(/\-(\w)/g, function(a, b){
return b.toUpperCase()
}), c=a.currentStyle[b]);
return c
};
d.removePx=function(a){
if(void 0!==a) return Number(a.substring(0, a.length - 2))
};
d.getURL=function(a, b){
if(a)
if("_self"!=b&&b)
if("_top"==b&&window.top) window.top.location.href=a;
else if("_parent"==b&&window.parent) window.parent.location.href=a;
else if("_blank"==b) window.open(a);
else {
var c=document.getElementsByName(b)[0];
c ? c.src=a:(c=d.windows[b]) ? c.opener&&!c.opener.closed ? c.location.href=a:d.windows[b]=window.open(a):d.windows[b]=window.open(a)
} else window.location.href=a
};
d.ifArray=function(a){
return a&&"object"==typeof a&&0 < a.length ? !0:!1
};
d.callMethod=function(a, b){
var c;
for (c=0; c < b.length; c++){
var e=b[c];
if(e){
if(e[a]) e[a]();
var d=e.length;
if(0 < d){
var g;
for (g=0; g < d; g++){
var h=e[g];
if(h&&h[a]) h[a]()
}}
}}
};
d.toNumber=function(a){
return "number"==typeof a ? a:Number(String(a).replace(/[^0-9\-.]+/g, ""))
};
d.toColor=function(a){
if(""!==a&&void 0!==a)
if(-1!=a.indexOf(",")){
a=a.split(",");
var b;
for (b=0; b < a.length; b++){
var c=a[b].substring(a[b].length - 6, a[b].length);
a[b]="#" + c
}} else a=a.substring(a.length - 6, a.length), a="#" + a;
return a
};
d.toCoordinate=function(a, b, c){
var e;
void 0!==a&&(a=String(a), c&&c < b&&(b=c), e=Number(a), -1!=a.indexOf("!")&&(e=b - Number(a.substr(1))), -1!=a.indexOf("%")&&(e=b * Number(a.substr(0, a.length - 1)) / 100));
return e
};
d.fitToBounds=function(a, b, c){
a < b&&(a=b);
a > c&&(a=c);
return a
};
d.isDefined=function(a){
return void 0===a ? !1:!0
};
d.stripNumbers=function(a){
return a.replace(/[0-9]+/g, "")
};
d.roundTo=function(a, b){
if(0 > b) return a;
var c=Math.pow(10, b);
return Math.round(a * c) / c
};
d.toFixed=function(a, b){
var c = !1;
0 > a&&(c = !0, a=Math.abs(a));
var e=String(Math.round(a * Math.pow(10, b)));
if(0 < b){
var d=e.length;
if(d < b){
var g;
for (g=0; g <
b - d; g++) e="0" + e
}
d=e.substring(0, e.length - b);
""===d&&(d=0);
e=d + "." + e.substring(e.length - b, e.length);
return c ? "-" + e:e
}
return String(e)
};
d.formatDuration=function(a, b, c, e, f, g){
var h=d.intervals,
k=g.decimalSeparator;
if(a >=h[b].contains){
var l=a - Math.floor(a / h[b].contains) * h[b].contains;
"ss"==b ? (l=d.formatNumber(l, g), 1==l.split(k)[0].length&&(l="0" + l)):l=d.roundTo(l, g.precision);
("mm"==b||"hh"==b)&&10 > l&&(l="0" + l);
c=l + "" + e[b] + "" + c;
a=Math.floor(a / h[b].contains);
b=h[b].nextInterval;
return d.formatDuration(a, b, c, e, f, g)
}
"ss"==b&&(a=d.formatNumber(a, g), 1==a.split(k)[0].length&&(a="0" + a));
"mm"==b&&(a=d.roundTo(a, g.precision));
("mm"==b||"hh"==b)&&10 > a&&(a="0" + a);
c=a + "" + e[b] + "" + c;
if(h[f].count > h[b].count)
for (a=h[b].count; a < h[f].count; a++) b=h[b].nextInterval, "ss"==b||"mm"==b||"hh"==b ? c="00" + e[b] + "" + c:"DD"==b&&(c="0" + e[b] + "" + c);
":"==c.charAt(c.length - 1)&&(c=c.substring(0, c.length - 1));
return c
};
d.formatNumber=function(a, b, c, e, f){
a=d.roundTo(a, b.precision);
isNaN(c)&&(c=b.precision);
var g=b.decimalSeparator;
b=b.thousandsSeparator;
var h;
h=0 > a ? "-":"";
a=Math.abs(a);
var k=String(a),
l = !1; - 1!=k.indexOf("e")&&(l = !0);
0 <=c&&!l&&(k=d.toFixed(a, c));
var m="";
if(l) m=k;
else {
var k=k.split("."),
l=String(k[0]),
n;
for (n=l.length; 0 <=n; n -=3) m=n!=l.length ? 0!==n ? l.substring(n - 3, n) + b + m:l.substring(n - 3, n) + m:l.substring(n - 3, n);
void 0!==k[1]&&(m=m + g + k[1]);
void 0!==c&&0 < c&&"0"!=m&&(m=d.addZeroes(m, g, c))
}
m=h + m;
""===h&&!0===e&&0!==a&&(m="+" + m);
!0===f&&(m +="%");
return m
};
d.addZeroes=function(a, b, c){
a=a.split(b);
void 0===a[1]&&0 < c&&(a[1]="0");
return a[1].length < c ? (a[1] +="0", d.addZeroes(a[0] + b + a[1], b, c)):void 0!==a[1] ? a[0] + b + a[1]:a[0]
};
d.scientificToNormal=function(a){
var b;
a=String(a).split("e");
var c;
if("-"==a[1].substr(0, 1)){
b="0.";
for (c=0; c < Math.abs(Number(a[1])) - 1; c++) b +="0";
b +=a[0].split(".").join("")
}else{
var e=0;
b=a[0].split(".");
b[1]&&(e=b[1].length);
b=a[0].split(".").join("");
for (c=0; c < Math.abs(Number(a[1])) - e; c++) b +="0"
}
return b
};
d.toScientific=function(a, b){
if(0===a) return "0";
var c=Math.floor(Math.log(Math.abs(a)) * Math.LOG10E),
e=String(e).split(".").join(b);
return String(e) + "e" + c
};
d.randomColor=function(){
return "#" + ("00000" + (16777216 * Math.random() << 0).toString(16)).substr(-6)
};
d.hitTest=function(a, b, c){
var e = !1,
f=a.x,
g=a.x + a.width,
h=a.y,
k=a.y + a.height,
l=d.isInRectangle;
e||(e=l(f, h, b));
e||(e=l(f, k, b));
e||(e=l(g, h, b));
e||(e=l(g, k, b));
e||!0===c||(e=d.hitTest(b, a, !0));
return e
};
d.isInRectangle=function(a, b, c){
return a >=c.x - 5&&a <=c.x + c.width + 5&&b >=c.y - 5&&b <=c.y + c.height + 5 ? !0:!1
};
d.isPercents=function(a){
if(-1!=String(a).indexOf("%")) return !0
};
d.formatValue=function(a, b, c, e, f, g, h, k){
if(b){
void 0===f&&(f="");
var l;
for (l=0; l < c.length; l++){
var m=c[l],
n=b[m];
void 0!==n&&(n=g ? d.addPrefix(n, k, h, e):d.formatNumber(n, e), a=a.replace(new RegExp("\\[\\[" + f + "" + m + "\\]\\]", "g"), n))
}}
return a
};
d.formatDataContextValue=function(a, b){
if(a){
var c=a.match(/\[\[.*?\]\]/g),
e;
for (e=0; e < c.length; e++){
var d=c[e],
d=d.substr(2, d.length - 4);
void 0!==b[d]&&(a=a.replace(new RegExp("\\[\\[" + d + "\\]\\]", "g"), b[d]))
}}
return a
};
d.massReplace=function(a, b){
for (var c in b)
if(b.hasOwnProperty(c)){
var e=b[c];
void 0===e&&(e="");
a=a.replace(c, e)
}
return a
};
d.cleanFromEmpty=function(a){
return a.replace(/\[\[[^\]]*\]\]/g, "")
};
d.addPrefix=function(a, b, c, e, f){
var g=d.formatNumber(a, e),
h="",
k, l, m;
if(0===a) return "0";
0 > a&&(h="-");
a=Math.abs(a);
if(1 < a)
for (k=b.length - 1; - 1 < k; k--){
if(a >=b[k].number&&(l=a / b[k].number, m=Number(e.precision), 1 > m&&(m=1), c=d.roundTo(l, m), m=d.formatNumber(c, {
precision: -1,
decimalSeparator: e.decimalSeparator,
thousandsSeparator: e.thousandsSeparator
}), !f||l==c)){
g=h + "" + m + "" + b[k].prefix;
break
}} else
for (k=0; k < c.length; k++)
if(a <=c[k].number){
l=a / c[k].number;
m=Math.abs(Math.floor(Math.log(l) * Math.LOG10E));
l=d.roundTo(l, m);
g=h + "" + l + "" + c[k].prefix;
break
}
return g
};
d.remove=function(a){
a&&a.remove()
};
d.getEffect=function(a){
">"==a&&(a="easeOutSine");
"<"==a&&(a="easeInSine");
"elastic"==a&&(a="easeOutElastic");
return a
};
d.getObjById=function(a, b){
var c, e;
for (e=0; e < a.length; e++){
var d=a[e];
if(d.id==b){
c=d;
break
}}
return c
};
d.applyTheme=function(a, b, c){
b||(b=d.theme);
try {
b=JSON.parse(JSON.stringify(b))
} catch (e){}
b&&b[c]&&d.extend(a, b[c])
};
d.isString=function(a){
return "string"==typeof a ? !0:!1
};
d.extend=function(a, b, c){
var e;
a||(a={});
for (e in b) c ? a.hasOwnProperty(e)||(a[e]=b[e]):a[e]=b[e];
return a
};
d.copyProperties=function(a, b){
for (var c in a) a.hasOwnProperty(c)&&"events"!=c&&void 0!==a[c]&&"function"!=typeof a[c]&&"cname"!=c&&(b[c]=a[c])
};
d.processObject=function(a, b, c, e){
if(!1===a instanceof b&&(a=e ? d.extend(new b(c), a):d.extend(a, new b(c), !0), a.listeners))
for (var f in a.listeners) b=a.listeners[f], a.addListener(b.event, b.method);
return a
};
d.fixNewLines=function(a){
var b=RegExp("\\n", "g");
a&&(a=a.replace(b, "<br />"));
return a
};
d.fixBrakes=function(a){
if(d.isModern){
var b=RegExp("<br>", "g");
a&&(a=a.replace(b, "\n"))
} else a=d.fixNewLines(a);
return a
};
d.deleteObject=function(a, b){
if(a){
if(void 0===b||null===b) b=20;
if(0!==b)
if("[object Array]"===Object.prototype.toString.call(a))
for (var c=0; c < a.length; c++) d.deleteObject(a[c], b - 1), a[c]=null;
else if(a&&!a.tagName) try {
for (c in a.theme=null, a) a[c]&&("object"==typeof a[c]&&d.deleteObject(a[c], b - 1), "function"!=typeof a[c]&&(a[c]=null))
} catch (e){}}
};
d.bounce=function(a, b, c, e, d){
return (b /=d) < 1 / 2.75 ? 7.5625 * e * b * b + c:b < 2 / 2.75 ? e * (7.5625 * (b -=1.5 / 2.75) * b + .75) + c:b < 2.5 / 2.75 ? e * (7.5625 * (b -=2.25 / 2.75) * b + .9375) + c:e * (7.5625 * (b -=2.625 / 2.75) * b + .984375) + c
};
d.easeInOutQuad=function(a, b, c, e, d){
b /=d / 2;
if(1 > b) return e / 2 * b * b + c;
b--;
return -e / 2 * (b * (b - 2) - 1) + c
};
d.easeInSine=function(a, b, c, e, d){
return -e * Math.cos(b / d * (Math.PI / 2)) + e + c
};
d.easeOutSine=function(a, b, c, e, d){
return e * Math.sin(b / d * (Math.PI / 2)) + c
};
d.easeOutElastic=function(a, b, c, e, d){
a=1.70158;
var g=0,
h=e;
if(0===b) return c;
if(1==(b /=d)) return c + e;
g||(g=.3 * d);
h < Math.abs(e) ? (h=e, a=g / 4):a=g / (2 * Math.PI) * Math.asin(e / h);
return h * Math.pow(2, -10 * b) * Math.sin(2 * (b * d - a) * Math.PI / g) + e + c
};
d.fixStepE=function(a){
a=a.toExponential(0).split("e");
var b=Number(a[1]);
9==Number(a[0])&&b++;
return d.generateNumber(1, b)
};
d.generateNumber=function(a, b){
var c="",
e;
e=0 > b ? Math.abs(b) - 1:Math.abs(b);
var d;
for (d=0; d < e; d++) c +="0";
return 0 > b ? Number("0." + c + String(a)):Number(String(a) + c)
};
d.setCN=function(a, b, c, e){
if(a.addClassNames&&b && (b=b.node)&&c){
var d=b.getAttribute("class");
a=a.classNamePrefix + "-";
e&&(a="");
d ? b.setAttribute("class", d + " " + a + c):b.setAttribute("class", a + c)
}};
d.removeCN=function(a, b, c){
b&&(b=b.node)&&c && (b=b.classList)&&b.remove(a.classNamePrefix + "-" + c)
};
d.parseDefs=function(a, b){
for (var c in a){
var e=typeof a[c];
if(0 < a[c].length&&"object"==e)
for (var f=0; f < a[c].length; f++) e=document.createElementNS(d.SVG_NS, c), b.appendChild(e), d.parseDefs(a[c][f], e);
else "object"==e ? (e=document.createElementNS(d.SVG_NS, c), b.appendChild(e), d.parseDefs(a[c], e)):b.setAttribute(c, a[c])
}}
})();
(function(){
var d=window.AmCharts;
d.AmDraw=d.Class({
construct: function(a, b, c, e){
d.SVG_NS="http://www.w3.org/2000/svg";
d.SVG_XLINK="http://www.w3.org/1999/xlink";
d.hasSVG = !!document.createElementNS&&!!document.createElementNS(d.SVG_NS, "svg").createSVGRect;
1 > b&&(b=10);
1 > c&&(c=10);
this.div=a;
this.width=b;
this.height=c;
this.rBin=document.createElement("div");
d.hasSVG ? (d.SVG = !0, b=this.createSvgElement("svg"), a.appendChild(b), this.container=b, this.addDefs(e), this.R=new d.SVGRenderer(this)):d.isIE&&d.VMLRenderer&&(d.VML = !0, d.vmlStyleSheet||(document.namespaces.add("amvml", "urn:schemas-microsoft-com:vml"), 31 > document.styleSheets.length ? (b=document.createStyleSheet(), b.addRule(".amvml", "behavior:url(#default#VML); display:inline-block; antialias:true"), d.vmlStyleSheet=b):document.styleSheets[0].addRule(".amvml", "behavior:url(#default#VML); display:inline-block; antialias:true")), this.container=a, this.R=new d.VMLRenderer(this, e), this.R.disableSelection(a))
},
createSvgElement: function(a){
return document.createElementNS(d.SVG_NS, a)
},
circle: function(a, b, c, e){
var f=new d.AmDObject("circle", this);
f.attr({
r: c,
cx: a,
cy: b
});
this.addToContainer(f.node, e);
return f
},
ellipse: function(a, b, c, e, f){
var g=new d.AmDObject("ellipse", this);
g.attr({
rx: c,
ry: e,
cx: a,
cy: b
});
this.addToContainer(g.node, f);
return g
},
setSize: function(a, b){
0 < a&&0 < b&&(this.container.style.width=a + "px", this.container.style.height=b + "px")
},
rect: function(a, b, c, e, f, g, h){
var k=new d.AmDObject("rect", this);
d.VML&&(f=Math.round(100 * f / Math.min(c, e)), c +=2 * g, e +=2 * g, k.bw=g, k.node.style.marginLeft=-g, k.node.style.marginTop=-g);
1 > c&&(c=1);
1 > e&&(e=1);
k.attr({
x: a,
y: b,
width: c,
height: e,
rx: f,
ry: f,
"stroke-width": g
});
this.addToContainer(k.node, h);
return k
},
image: function(a, b, c, e, f, g){
var h=new d.AmDObject("image", this);
h.attr({
x: b,
y: c,
width: e,
height: f
});
this.R.path(h, a);
this.addToContainer(h.node, g);
return h
},
addToContainer: function(a, b){
b||(b=this.container);
b.appendChild(a)
},
text: function(a, b, c){
return this.R.text(a, b, c)
},
path: function(a, b, c, e){
var f=new d.AmDObject("path", this);
e||(e="100,100");
f.attr({
cs: e
});
c ? f.attr({
dd: a
}):f.attr({
d: a
});
this.addToContainer(f.node, b);
return f
},
set: function(a){
return this.R.set(a)
},
remove: function(a){
if(a){
var b=this.rBin;
b.appendChild(a);
b.innerHTML=""
}},
renderFix: function(){
var a=this.container,
b=a.style;
b.top="0px";
b.left="0px";
try {
var c=a.getBoundingClientRect(),
e=c.left - Math.round(c.left),
d=c.top - Math.round(c.top);
e&&(b.left=e + "px");
d&&(b.top=d + "px")
} catch (g){}},
update: function(){
this.R.update()
},
addDefs: function(a){
if(d.hasSVG){
var b=this.createSvgElement("desc"),
c=this.container;
c.setAttribute("version", "1.1");
c.style.position="absolute";
this.setSize(this.width, this.height);
if(a.accessibleTitle){
var e=this.createSvgElement("text");
c.appendChild(e);
e.innerHTML=a.accessibleTitle;
e.style.opacity=0
}
d.rtl&&(c.setAttribute("direction", "rtl"), c.style.left="auto", c.style.right="0px");
a&&(a.addCodeCredits&&b.appendChild(document.createTextNode("JavaScript chart by amCharts " + a.version)), c.appendChild(b), a.defs&&(b=this.createSvgElement("defs"), c.appendChild(b), d.parseDefs(a.defs, b), this.defs=b))
}}
})
})();
(function(){
var d=window.AmCharts;
d.AmDObject=d.Class({
construct: function(a, b){
this.D=b;
this.R=b.R;
this.node=this.R.create(this, a);
this.y=this.x=0;
this.scale=1
},
attr: function(a){
this.R.attr(this, a);
return this
},
getAttr: function(a){
return this.node.getAttribute(a)
},
setAttr: function(a, b){
this.R.setAttr(this, a, b);
return this
},
clipRect: function(a, b, c, e){
this.R.clipRect(this, a, b, c, e)
},
translate: function(a, b, c, e){
e||(a=Math.round(a), b=Math.round(b));
this.R.move(this, a, b, c);
this.x=a;
this.y=b;
this.scale=c;
this.angle&&this.rotate(this.angle)
},
rotate: function(a, b){
this.R.rotate(this, a, b);
this.angle=a
},
animate: function(a, b, c){
for (var e in a)
if(a.hasOwnProperty(e)){
var f=e,
g=a[e];
c=d.getEffect(c);
this.R.animate(this, f, g, b, c)
}},
push: function(a){
if(a){
var b=this.node;
b.appendChild(a.node);
var c=a.clipPath;
c&&b.appendChild(c);
(a=a.grad)&&b.appendChild(a)
}},
text: function(a){
this.R.setText(this, a)
},
remove: function(){
this.stop();
this.R.remove(this)
},
clear: function(){
var a=this.node;
if(a.hasChildNodes())
for (; 1 <=a.childNodes.length;) a.removeChild(a.firstChild)
},
hide: function(){
this.setAttr("visibility", "hidden")
},
show: function(){
this.setAttr("visibility", "visible")
},
getBBox: function(){
return this.R.getBBox(this)
},
toFront: function(){
var a=this.node;
if(a){
this.prevNextNode=a.nextSibling;
var b=a.parentNode;
b&&b.appendChild(a)
}},
toPrevious: function(){
var a=this.node;
a&&this.prevNextNode&&(a=a.parentNode)&&a.insertBefore(this.prevNextNode, null)
},
toBack: function(){
var a=this.node;
if(a){
this.prevNextNode=a.nextSibling;
var b=a.parentNode;
if(b){
var c=b.firstChild;
c&&b.insertBefore(a, c)
}}
},
mouseover: function(a){
this.R.addListener(this, "mouseover", a);
return this
},
mouseout: function(a){
this.R.addListener(this, "mouseout", a);
return this
},
click: function(a){
this.R.addListener(this, "click", a);
return this
},
dblclick: function(a){
this.R.addListener(this, "dblclick", a);
return this
},
mousedown: function(a){
this.R.addListener(this, "mousedown", a);
return this
},
mouseup: function(a){
this.R.addListener(this, "mouseup", a);
return this
},
touchmove: function(a){
this.R.addListener(this, "touchmove", a);
return this
},
touchstart: function(a){
this.R.addListener(this, "touchstart", a);
return this
},
touchend: function(a){
this.R.addListener(this, "touchend", a);
return this
},
keyup: function(a){
this.R.addListener(this, "keyup", a);
return this
},
focus: function(a){
this.R.addListener(this, "focus", a);
return this
},
blur: function(a){
this.R.addListener(this, "blur", a);
return this
},
contextmenu: function(a){
this.node.addEventListener ? this.node.addEventListener("contextmenu", a, !0):this.R.addListener(this, "contextmenu", a);
return this
},
stop: function(){
d.removeFromArray(this.R.animations, this.an_translate);
d.removeFromArray(this.R.animations, this.an_y);
d.removeFromArray(this.R.animations, this.an_x)
},
length: function(){
return this.node.childNodes.length
},
gradient: function(a, b, c){
this.R.gradient(this, a, b, c)
},
pattern: function(a, b, c){
a&&this.R.pattern(this, a, b, c)
}})
})();
(function(){
var d=window.AmCharts;
d.SVGRenderer=d.Class({
construct: function(a){
this.D=a;
this.animations=[]
},
create: function(a, b){
return document.createElementNS(d.SVG_NS, b)
},
attr: function(a, b){
for (var c in b) b.hasOwnProperty(c)&&this.setAttr(a, c, b[c])
},
setAttr: function(a, b, c){
void 0!==c&&a.node.setAttribute(b, c)
},
animate: function(a, b, c, e, f){
a.animationFinished = !1;
var g=a.node;
a["an_" + b]&&d.removeFromArray(this.animations, a["an_" + b]);
"translate"==b ? (g=(g=g.getAttribute("transform")) ? String(g).substring(10, g.length - 1):"0,0", g=g.split(", ").join(" "), g=g.split(" ").join(","), 0===g&&(g="0,0")):g=Number(g.getAttribute(b));
c={
obj: a,
frame: 0,
attribute: b,
from: g,
to: c,
time: e,
effect: f
};
this.animations.push(c);
a["an_" + b]=c
},
update: function(){
var a, b=this.animations;
for (a=b.length - 1; 0 <=a; a--){
var c=b[a],
e=c.time * d.updateRate,
f=c.frame + 1,
g=c.obj,
h=c.attribute,
k, l, m;
if(f <=e){
c.frame++;
if("translate"==h){
k=c.from.split(",");
h=Number(k[0]);
k=Number(k[1]);
isNaN(k)&&(k=0);
l=c.to.split(",");
m=Number(l[0]);
l=Number(l[1]);
m=0===m - h ? m:Math.round(d[c.effect](0, f, h, m - h, e));
c=0===l - k ? l:Math.round(d[c.effect](0, f, k, l - k, e));
h="transform";
if(isNaN(m)||isNaN(c)) continue;
c="translate(" + m + "," + c + ")"
} else l=Number(c.from), k=Number(c.to), m=k - l, c=d[c.effect](0, f, l, m, e), isNaN(c)&&(c=k), 0===m&&this.animations.splice(a, 1);
this.setAttr(g, h, c)
} else "translate"==h ? (l=c.to.split(","), m=Number(l[0]), l=Number(l[1]), g.translate(m, l)):(k=Number(c.to), this.setAttr(g, h, k)), g.animationFinished = !0, this.animations.splice(a, 1)
}},
getBBox: function(a){
if(a=a.node) try {
return a.getBBox()
} catch (b){}
return {
width: 0,
height: 0,
x: 0,
y: 0
}},
path: function(a, b){
a.node.setAttributeNS(d.SVG_XLINK, "xlink:href", b)
},
clipRect: function(a, b, c, e, f){
var g=a.node,
h=a.clipPath;
h&&this.D.remove(h);
var k=g.parentNode;
k&&(g=document.createElementNS(d.SVG_NS, "clipPath"), h=d.getUniqueId(), g.setAttribute("id", h), this.D.rect(b, c, e, f, 0, 0, g), k.appendChild(g), b="#", d.baseHref&&!d.isIE&&(b=this.removeTarget(window.location.href) + b), this.setAttr(a, "clip-path", "url(" + b + h + ")"), this.clipPathC++, a.clipPath=g)
},
text: function(a, b, c){
var e=new d.AmDObject("text", this.D);
a=String(a).split("\n");
var f=d.removePx(b["font-size"]),
g;
for (g=0; g < a.length; g++){
var h=this.create(null, "tspan");
h.appendChild(document.createTextNode(a[g]));
h.setAttribute("y", (f + 2) * g + Math.round(f / 2));
h.setAttribute("x", 0);
e.node.appendChild(h)
}
e.node.setAttribute("y", Math.round(f / 2));
this.attr(e, b);
this.D.addToContainer(e.node, c);
return e
},
setText: function(a, b){
var c=a.node;
c&&(c.removeChild(c.firstChild), c.appendChild(document.createTextNode(b)))
},
move: function(a, b, c, e){
isNaN(b)&&(b=0);
isNaN(c)&&(c=0);
b="translate(" + b + "," + c + ")";
e&&(b=b + " scale(" + e + ")");
this.setAttr(a, "transform", b)
},
rotate: function(a, b){
var c=a.node.getAttribute("transform"),
e="rotate(" + b + ")";
c&&(e=c + " " + e);
this.setAttr(a, "transform", e)
},
set: function(a){
var b=new d.AmDObject("g", this.D);
this.D.container.appendChild(b.node);
if(a){
var c;
for (c=0; c < a.length; c++) b.push(a[c])
}
return b
},
addListener: function(a, b, c){
a.node["on" + b]=c
},
gradient: function(a, b, c, e){
var f=a.node,
g=a.grad;
g&&this.D.remove(g);
b=document.createElementNS(d.SVG_NS, b);
g=d.getUniqueId();
b.setAttribute("id", g);
if(!isNaN(e)){
var h=0,
k=0,
l=0,
m=0;
90==e ? l=100:270==e ? m=100:180==e ? h=100:0===e&&(k=100);
b.setAttribute("x1", h + "%");
b.setAttribute("x2", k + "%");
b.setAttribute("y1", l + "%");
b.setAttribute("y2", m + "%")
}
for (e=0; e < c.length; e++) h=document.createElementNS(d.SVG_NS, "stop"), k=100 * e / (c.length - 1), 0===e&&(k=0), h.setAttribute("offset", k + "%"), h.setAttribute("stop-color", c[e]), b.appendChild(h);
f.parentNode.appendChild(b);
c="#";
d.baseHref&&!d.isIE&&(c=this.removeTarget(window.location.href) + c);
f.setAttribute("fill", "url(" + c + g + ")");
a.grad=b
},
removeTarget: function(a){
return a.split("#")[0]
},
pattern: function(a, b, c, e){
var f=a.node;
isNaN(c)&&(c=1);
var g=a.patternNode;
g&&this.D.remove(g);
var g=document.createElementNS(d.SVG_NS, "pattern"),
h=d.getUniqueId(),
k=b;
b.url&&(k=b.url);
d.isAbsolute(k)||-1!=k.indexOf("data:image")||(k=e + k);
e=Number(b.width);
isNaN(e)&&(e=4);
var l=Number(b.height);
isNaN(l)&&(l=4);
e /=c;
l /=c;
c=b.x;
isNaN(c)&&(c=0);
var m=-Math.random() * Number(b.randomX);
isNaN(m)||(c=m);
m=b.y;
isNaN(m)&&(m=0);
var n=-Math.random() * Number(b.randomY);
isNaN(n)||(m=n);
g.setAttribute("id", h);
g.setAttribute("width", e);
g.setAttribute("height", l);
g.setAttribute("patternUnits", "userSpaceOnUse");
g.setAttribute("xlink:href", k);
b.color&&(n=document.createElementNS(d.SVG_NS, "rect"), n.setAttributeNS(null, "height", e), n.setAttributeNS(null, "width", l), n.setAttributeNS(null, "fill", b.color), g.appendChild(n));
this.D.image(k, 0, 0, e, l, g).translate(c, m);
k="#";
d.baseHref&&!d.isIE&&(k=this.removeTarget(window.location.href) + k);
f.setAttribute("fill", "url(" + k + h + ")");
a.patternNode=g;
f.parentNode.appendChild(g)
},
remove: function(a){
a.clipPath&&this.D.remove(a.clipPath);
a.grad&&this.D.remove(a.grad);
a.patternNode&&this.D.remove(a.patternNode);
this.D.remove(a.node)
}})
})();
(function(){
var d=window.AmCharts;
d.AmChart=d.Class({
construct: function(a){
this.svgIcons=this.tapToActivate = !0;
this.theme=a;
this.classNamePrefix="amcharts";
this.addClassNames = !1;
this.version="3.21.6";
d.addChart(this);
this.createEvents("buildStarted", "dataUpdated", "init", "rendered", "drawn", "failed", "resized", "animationFinished");
this.height=this.width="100%";
this.dataChanged = !0;
this.chartCreated = !1;
this.previousWidth=this.previousHeight=0;
this.backgroundColor="#FFFFFF";
this.borderAlpha=this.backgroundAlpha=0;
this.color=this.borderColor="#000000";
this.fontFamily="Verdana";
this.fontSize=11;
this.usePrefixes = !1;
this.autoResize = !0;
this.autoDisplay = !1;
this.addCodeCredits=this.accessible = !0;
this.touchStartTime=this.touchClickDuration=0;
this.precision=-1;
this.percentPrecision=2;
this.decimalSeparator=".";
this.thousandsSeparator=",";
this.labels=[];
this.allLabels=[];
this.titles=[];
this.marginRight=this.marginLeft=this.autoMarginOffset=0;
this.timeOuts=[];
this.creditsPosition="top-left";
var b=document.createElement("div"),
c=b.style;
c.overflow="hidden";
c.position="relative";
c.textAlign="left";
this.chartDiv=b;
b=document.createElement("div");
c=b.style;
c.overflow="hidden";
c.position="relative";
c.textAlign="left";
this.legendDiv=b;
this.titleHeight=0;
this.hideBalloonTime=150;
this.handDrawScatter=2;
this.cssScale=this.handDrawThickness=1;
this.cssAngle=0;
this.prefixesOfBigNumbers=[{
number: 1E3,
prefix: "k"
}, {
number: 1E6,
prefix: "M"
}, {
number: 1E9,
prefix: "G"
}, {
number: 1E12,
prefix: "T"
}, {
number: 1E15,
prefix: "P"
}, {
number: 1E18,
prefix: "E"
}, {
number: 1E21,
prefix: "Z"
}, {
number: 1E24,
prefix: "Y"
}];
this.prefixesOfSmallNumbers=[{
number: 1E-24,
prefix: "y"
}, {
number: 1E-21,
prefix: "z"
}, {
number: 1E-18,
prefix: "a"
}, {
number: 1E-15,
prefix: "f"
}, {
number: 1E-12,
prefix: "p"
}, {
number: 1E-9,
prefix: "n"
}, {
number: 1E-6,
prefix: "\u03bc"
}, {
number: .001,
prefix: "m"
}];
this.panEventsEnabled = !0;
this.product="amcharts";
this.animations=[];
this.balloon=new d.AmBalloon(this.theme);
this.balloon.chart=this;
this.processTimeout=0;
this.processCount=1E3;
this.animatable=[];
this.langObj={};
d.applyTheme(this, a, "AmChart")
},
drawChart: function(){
0 < this.realWidth&&0 < this.realHeight&&(this.drawBackground(), this.redrawLabels(), this.drawTitles(), this.brr(), this.renderFix(), this.chartDiv&&(this.boundingRect=this.chartDiv.getBoundingClientRect()))
},
makeAccessible: function(a, b, c){
this.accessible&&a && (c&&a.setAttr("role", c), a.setAttr("aria-label", b))
},
drawBackground: function(){
d.remove(this.background);
var a=this.container,
b=this.backgroundColor,
c=this.backgroundAlpha,
e=this.set;
d.isModern||0!==c||(c=.001);
var f=this.updateWidth();
this.realWidth=f;
var g=this.updateHeight();
this.realHeight=g;
b=d.polygon(a, [0, f - 1, f - 1, 0], [0, 0, g - 1, g - 1], b, c, 1, this.borderColor, this.borderAlpha);
d.setCN(this, b, "bg");
this.background=b;
e.push(b);
if(b=this.backgroundImage) a=a.image(b, 0, 0, f, g), d.setCN(this, b, "bg-image"), this.bgImg=a, e.push(a)
},
drawTitles: function(a){
var b=this.titles;
this.titleHeight=0;
if(d.ifArray(b)){
var c=20,
e;
for (e=0; e < b.length; e++){
var f=b[e],
f=d.processObject(f, d.Title, this.theme);
if(!1!==f.enabled){
var g=f.color;
void 0===g&&(g=this.color);
var h=f.size;
isNaN(h)&&(h=this.fontSize + 2);
isNaN(f.alpha);
var k=this.marginLeft,
l = !0;
void 0!==f.bold&&(l=f.bold);
g=d.wrappedText(this.container, f.text, g, this.fontFamily, h, "middle", l, this.realWidth - 35 - this.marginRight - k);
g.translate(k + (this.realWidth - this.marginRight - k) / 2, c);
g.node.style.pointerEvents="none";
f.sprite=g;
void 0!==f.tabIndex&&g.setAttr("tabindex", f.tabIndex);
d.setCN(this, g, "title");
f.id&&d.setCN(this, g, "title-" + f.id);
g.attr({
opacity: f.alpha
});
c +=g.getBBox().height +
5;
a ? g.remove():this.freeLabelsSet.push(g)
}}
this.titleHeight=c - 10
}},
write: function(a){
var b=this;
if(b.listeners)
for (var c=0; c < b.listeners.length; c++){
var e=b.listeners[c];
b.addListener(e.event, e.method)
}
b.fire({
type: "buildStarted",
chart: b
});
b.afterWriteTO&&clearTimeout(b.afterWriteTO);
0 < b.processTimeout ? b.afterWriteTO=setTimeout(function(){
b.afterWrite.call(b, a)
}, b.processTimeout):b.afterWrite(a)
},
afterWrite: function(a){
var b;
if(b="object"!=typeof a ? document.getElementById(a):a){
for (; b.firstChild;) b.removeChild(b.firstChild);
this.div=b;
b.style.overflow="hidden";
b.style.textAlign="left";
a=this.chartDiv;
var c=this.legendDiv,
e=this.legend,
f=c.style,
g=a.style;
this.measure();
this.previousHeight=this.divRealHeight;
this.previousWidth=this.divRealWidth;
var h, k=document.createElement("div");
h=k.style;
h.position="relative";
this.containerDiv=k;
k.className=this.classNamePrefix + "-main-div";
a.className=this.classNamePrefix + "-chart-div";
b.appendChild(k);
(b=this.exportConfig)&&d.AmExport&&!this.AmExport&&(this.AmExport=new d.AmExport(this, b));
this.amExport&&d.AmExport&&(this.AmExport=d.extend(this.amExport, new d.AmExport(this), !0));
this.AmExport&&this.AmExport.init&&this.AmExport.init();
if(e){
e=this.addLegend(e, e.divId);
if(e.enabled) switch (f.left=null, f.top=null, f.right=null, g.left=null, g.right=null, g.top=null, f.position="relative", g.position="relative", h.width="100%", h.height="100%", e.position){
case "bottom":
k.appendChild(a);
k.appendChild(c);
break;
case "top":
k.appendChild(c);
k.appendChild(a);
break;
case "absolute":
f.position="absolute";
g.position="absolute";
void 0!==e.left&&(f.left=e.left + "px");
void 0!==e.right&&(f.right=e.right + "px");
void 0!==e.top&&(f.top=e.top + "px");
void 0!==e.bottom&&(f.bottom=e.bottom + "px");
e.marginLeft=0;
e.marginRight=0;
k.appendChild(a);
k.appendChild(c);
break;
case "right":
f.position="relative";
g.position="absolute";
k.appendChild(a);
k.appendChild(c);
break;
case "left":
f.position="absolute";
g.position="relative";
k.appendChild(a);
k.appendChild(c);
break;
case "outside":
k.appendChild(a)
} else k.appendChild(a);
this.prevLegendPosition=e.position
} else k.appendChild(a);
this.listenersAdded||(this.addListeners(), this.listenersAdded = !0);
(this.mouseWheelScrollEnabled||this.mouseWheelZoomEnabled)&&d.addWheelListeners();
this.initChart()
}},
createLabelsSet: function(){
d.remove(this.labelsSet);
this.labelsSet=this.container.set();
this.freeLabelsSet.push(this.labelsSet)
},
initChart: function(){
this.balloon=d.processObject(this.balloon, d.AmBalloon, this.theme);
window.AmCharts_path&&(this.path=window.AmCharts_path);
void 0===this.path&&(this.path=d.getPath());
void 0===this.path&&(this.path="amcharts/");
this.path=d.normalizeUrl(this.path);
void 0===this.pathToImages&&(this.pathToImages=this.path + "images/");
this.initHC||(d.callInitHandler(this), this.initHC = !0);
d.applyLang(this.language, this);
var a=this.numberFormatter;
a&&(isNaN(a.precision)||(this.precision=a.precision), void 0!==a.thousandsSeparator&&(this.thousandsSeparator=a.thousandsSeparator), void 0!==a.decimalSeparator&&(this.decimalSeparator=a.decimalSeparator));
(a=this.percentFormatter)&&!isNaN(a.precision)&&(this.percentPrecision=a.precision);
this.nf={
precision: this.precision,
thousandsSeparator: this.thousandsSeparator,
decimalSeparator: this.decimalSeparator
};
this.pf={
precision: this.percentPrecision,
thousandsSeparator: this.thousandsSeparator,
decimalSeparator: this.decimalSeparator
};
this.destroy();
(a=this.container) ? (a.container.innerHTML="", a.width=this.realWidth, a.height=this.realHeight, a.addDefs(this), this.chartDiv.appendChild(a.container)):a=new d.AmDraw(this.chartDiv, this.realWidth, this.realHeight, this);
this.container=a;
this.extension=".png";
this.svgIcons&&d.SVG&&(this.extension=".svg");
this.checkDisplay();
this.checkTransform(this.div);
a.chart=this;
d.VML||d.SVG ? (a.handDrawn=this.handDrawn, a.handDrawScatter=this.handDrawScatter, a.handDrawThickness=this.handDrawThickness, d.remove(this.set), this.set=a.set(), d.remove(this.gridSet), this.gridSet=a.set(), d.remove(this.cursorLineSet), this.cursorLineSet=a.set(), d.remove(this.graphsBehindSet), this.graphsBehindSet=a.set(), d.remove(this.bulletBehindSet), this.bulletBehindSet=a.set(), d.remove(this.columnSet), this.columnSet=a.set(), d.remove(this.graphsSet), this.graphsSet=a.set(), d.remove(this.trendLinesSet), this.trendLinesSet=a.set(), d.remove(this.axesSet), this.axesSet=a.set(), d.remove(this.cursorSet), this.cursorSet=a.set(), d.remove(this.scrollbarsSet), this.scrollbarsSet=a.set(), d.remove(this.bulletSet), this.bulletSet=a.set(), d.remove(this.freeLabelsSet), this.freeLabelsSet=a.set(), d.remove(this.axesLabelsSet), this.axesLabelsSet=a.set(), d.remove(this.balloonsSet), this.balloonsSet=a.set(), d.remove(this.plotBalloonsSet), this.plotBalloonsSet=a.set(), d.remove(this.zoomButtonSet), this.zoomButtonSet=a.set(), d.remove(this.zbSet), this.zbSet=null, d.remove(this.linkSet), this.linkSet=a.set()):this.fire({
type: "failed",
chart: this
})
},
premeasure: function(){
var a=this.div;
if(a){
try {
this.boundingRect=this.chartDiv.getBoundingClientRect()
} catch (e){}
var b=a.offsetWidth,
c=a.offsetHeight;
a.clientHeight&&(b=a.clientWidth, c=a.clientHeight);
if(b!=this.mw||c!=this.mh) this.mw=b, this.mh=c, this.measure()
}},
measure: function(){
var a=this.div;
if(a){
var b=this.chartDiv,
c=a.offsetWidth,
e=a.offsetHeight,
f=this.container;
a.clientHeight&&(c=a.clientWidth, e=a.clientHeight);
var e=Math.round(e),
c=Math.round(c),
a=Math.round(d.toCoordinate(this.width, c)),
g=Math.round(d.toCoordinate(this.height, e));
(c!=this.previousWidth||e!=this.previousHeight)&&0 < a&&0 < g&&(b.style.width=a + "px", b.style.height=g + "px", b.style.padding=0, f&&f.setSize(a, g), this.balloon=d.processObject(this.balloon, d.AmBalloon, this.theme));
this.balloon&&this.balloon.setBounds&&this.balloon.setBounds(2, 2, a - 2, g);
this.updateWidth();
this.balloon.chart=this;
this.realWidth=a;
this.realHeight=g;
this.divRealWidth=c;
this.divRealHeight=e
}},
checkDisplay: function(){
if(this.autoDisplay&&this.container){
var a=d.rect(this.container, 10, 10),
b=a.getBBox();
0===b.width&&0===b.height&&(this.divRealHeight=this.divRealWidth=this.realHeight=this.realWidth=0, this.previousWidth=this.previousHeight=NaN);
a.remove()
}},
checkTransform: function(a){
if(this.autoTransform&&window.getComputedStyle&&a){
if(a.style){
var b=window.getComputedStyle(a, null);
if(b&&(b=b.getPropertyValue("-webkit-transform")||b.getPropertyValue("-moz-transform")||b.getPropertyValue("-ms-transform")||b.getPropertyValue("-o-transform")||b.getPropertyValue("transform"))&&"none"!==b){
var c=b.split("(")[1].split(")")[0].split(","),
b=c[0],
c=c[1],
b=Math.sqrt(b * b + c * c);
isNaN(b)||(this.cssScale *=b)
}}
a.parentNode&&this.checkTransform(a.parentNode)
}},
destroy: function(){
this.chartDiv.innerHTML="";
this.clearTimeOuts();
this.legend&&this.legend.destroy()
},
clearTimeOuts: function(){
var a=this.timeOuts;
if(a){
var b;
for (b=0; b < a.length; b++) clearTimeout(a[b])
}
this.timeOuts=[]
},
clear: function(a){
try {
document.removeEventListener("touchstart", this.docfn1, !0), document.removeEventListener("touchend", this.docfn2, !0)
} catch (b){}
d.callMethod("clear", [this.chartScrollbar, this.scrollbarV, this.scrollbarH, this.chartCursor]);
this.chartCursor=this.scrollbarH=this.scrollbarV=this.chartScrollbar=null;
this.clearTimeOuts();
this.container&&(this.container.remove(this.chartDiv), this.container.remove(this.legendDiv));
a||d.removeChart(this);
if(a=this.div)
for (; a.firstChild;) a.removeChild(a.firstChild);
this.legend&&this.legend.destroy();
this.AmExport&&this.AmExport.clear&&this.AmExport.clear()
},
setMouseCursor: function(a){
"auto"==a&&d.isNN&&(a="default");
this.chartDiv.style.cursor=a;
this.legendDiv.style.cursor=a
},
redrawLabels: function(){
this.labels=[];
var a=this.allLabels;
this.createLabelsSet();
var b;
for (b=0; b < a.length; b++) this.drawLabel(a[b])
},
drawLabel: function(a){
var b=this;
if(b.container&&!1!==a.enabled){
a=d.processObject(a, d.Label, b.theme);
var c=a.y,
e=a.text,
f=a.align,
g=a.size,
h=a.color,
k=a.rotation,
l=a.alpha,
m=a.bold,
n=d.toCoordinate(a.x, b.realWidth),
c=d.toCoordinate(c, b.realHeight);
n||(n=0);
c||(c=0);
void 0===h&&(h=b.color);
isNaN(g)&&(g=b.fontSize);
f||(f="start");
"left"==f&&(f="start");
"right"==f&&(f="end");
"center"==f&&(f="middle", k ? c=b.realHeight - c + c / 2:n=b.realWidth / 2 - n);
void 0===l&&(l=1);
void 0===k&&(k=0);
c +=g / 2;
e=d.text(b.container, e, h, b.fontFamily, g, f, m, l);
e.translate(n, c);
void 0!==a.tabIndex&&e.setAttr("tabindex", a.tabIndex);
d.setCN(b, e, "label");
a.id&&d.setCN(b, e, "label-" + a.id);
0!==k&&e.rotate(k);
a.url ? (e.setAttr("cursor", "pointer"), e.click(function(){
d.getURL(a.url, b.urlTarget)
})):e.node.style.pointerEvents="none";
b.labelsSet.push(e);
b.labels.push(e)
}},
addLabel: function(a, b, c, e, d, g, h, k, l, m){
a={
x: a,
y: b,
text: c,
align: e,
size: d,
color: g,
alpha: k,
rotation: h,
bold: l,
url: m,
enabled: !0
};
this.container&&this.drawLabel(a);
this.allLabels.push(a)
},
clearLabels: function(){
var a=this.labels,
b;
for (b=a.length - 1; 0 <=b; b--) a[b].remove();
this.labels=[];
this.allLabels=[]
},
updateHeight: function(){
var a=this.divRealHeight,
b=this.legend;
if(b){
var c=this.legendDiv.offsetHeight,
b=b.position;
if("top"==b||"bottom"==b){
a -=c;
if(0 > a||isNaN(a)) a=0;
this.chartDiv.style.height=a + "px"
}}
return a
},
updateWidth: function(){
var a=this.divRealWidth,
b=this.divRealHeight,
c=this.legend;
if(c){
var e=this.legendDiv,
d=e.offsetWidth;
isNaN(c.width)||(d=c.width);
c.ieW&&(d=c.ieW);
var g=e.offsetHeight,
e=e.style,
h=this.chartDiv.style,
k=c.position;
if(("right"==k||"left"==k)&&void 0===c.divId){
a -=d;
if(0 > a||isNaN(a)) a=0;
h.width=a + "px";
this.balloon&&this.balloon.setBounds&&this.balloon.setBounds(2, 2, a - 2, this.realHeight);
"left"==k ? (h.left=d + "px", e.left="0px"):(h.left="0px", e.left=a + "px");
b > g&&(e.top=(b - g) / 2 + "px")
}}
return a
},
getTitleHeight: function(){
this.drawTitles(!0);
return this.titleHeight
},
addTitle: function(a, b, c, e, d){
isNaN(b)&&(b=this.fontSize + 2);
a={
text: a,
size: b,
color: c,
alpha: e,
bold: d,
enabled: !0
};
this.titles.push(a);
return a
},
handleWheel: function(a){
var b=0;
a||(a=window.event);
a.wheelDelta ? b=a.wheelDelta / 120:a.detail&&(b=-a.detail / 3);
b&&this.handleWheelReal(b, a.shiftKey);
a.preventDefault&&a.preventDefault()
},
handleWheelReal: function(){},
handleDocTouchStart: function(){
this.handleMouseMove();
this.tmx=this.mouseX;
this.tmy=this.mouseY;
this.touchStartTime=(new Date).getTime()
},
handleDocTouchEnd: function(){
-.5 < this.tmx&&this.tmx < this.divRealWidth + 1&&0 < this.tmy&&this.tmy < this.divRealHeight ? (this.handleMouseMove(), 4 > Math.abs(this.mouseX - this.tmx)&&4 > Math.abs(this.mouseY - this.tmy) ? (this.tapped = !0, this.panRequired&&this.panEventsEnabled&&this.chartDiv&&(this.chartDiv.style.msTouchAction="none", this.chartDiv.style.touchAction="none")):this.mouseIsOver||this.resetTouchStyle()):(this.tapped = !1, this.resetTouchStyle())
},
resetTouchStyle: function(){
this.panEventsEnabled&&this.chartDiv&&(this.chartDiv.style.msTouchAction="auto", this.chartDiv.style.touchAction="auto")
},
checkTouchDuration: function(a){
var b=this,
c=(new Date).getTime();
if(a)
if(a.touches) b.isTouchEvent = !0;
else if(!b.isTouchEvent) return !0;
if(c - b.touchStartTime > b.touchClickDuration) return !0;
setTimeout(function(){
b.resetTouchDuration()
}, 300)
},
resetTouchDuration: function(){
this.isTouchEvent = !1
},
checkTouchMoved: function(){
if(4 < Math.abs(this.mouseX - this.tmx)||4 < Math.abs(this.mouseY - this.tmy)) return !0
},
addListeners: function(){
var a=this,
b=a.chartDiv;
document.addEventListener ? ("ontouchstart" in document.documentElement&&(b.addEventListener("touchstart", function(b){
a.handleTouchStart.call(a, b)
}, !0), b.addEventListener("touchmove", function(b){
a.handleMouseMove.call(a, b)
}, !0), b.addEventListener("touchend", function(b){
a.handleTouchEnd.call(a, b)
}, !0), a.docfn1=function(b){
a.handleDocTouchStart.call(a, b)
}, a.docfn2=function(b){
a.handleDocTouchEnd.call(a, b)
}, document.addEventListener("touchstart", a.docfn1, !0), document.addEventListener("touchend", a.docfn2, !0)), b.addEventListener("mousedown", function(b){
a.mouseIsOver = !0;
a.handleMouseMove.call(a, b);
a.handleMouseDown.call(a, b);
a.handleDocTouchStart.call(a, b)
}, !0), b.addEventListener("mouseover", function(b){
a.handleMouseOver.call(a, b)
}, !0), b.addEventListener("mouseout", function(b){
a.handleMouseOut.call(a, b)
}, !0), b.addEventListener("mouseup", function(b){
a.handleDocTouchEnd.call(a, b)
}, !0)):(b.attachEvent("onmousedown", function(b){
a.handleMouseDown.call(a, b)
}), b.attachEvent("onmouseover", function(b){
a.handleMouseOver.call(a, b)
}), b.attachEvent("onmouseout", function(b){
a.handleMouseOut.call(a, b)
}))
},
dispDUpd: function(){
this.skipEvents||(this.dispatchDataUpdated&&(this.dispatchDataUpdated = !1, this.fire({
type: "dataUpdated",
chart: this
})), this.chartCreated||(this.chartCreated = !0, this.fire({
type: "init",
chart: this
})), this.chartRendered||(this.fire({
type: "rendered",
chart: this
}), this.chartRendered = !0), this.fire({
type: "drawn",
chart: this
}));
this.skipEvents = !1
},
validateSize: function(){
var a=this;
a.premeasure();
a.checkDisplay();
a.cssScale=1;
a.cssAngle=0;
a.checkTransform(a.div);
if(a.divRealWidth!=a.previousWidth||a.divRealHeight!=a.previousHeight){
var b=a.legend;
if(0 < a.realWidth&&0 < a.realHeight){
a.sizeChanged = !0;
if(b){
a.legendInitTO&&clearTimeout(a.legendInitTO);
var c=setTimeout(function(){
b.invalidateSize()
}, 10);
a.timeOuts.push(c);
a.legendInitTO=c
}
a.marginsUpdated = !1;
clearTimeout(a.initTO);
c=setTimeout(function(){
a.initChart()
}, 10);
a.timeOuts.push(c);
a.initTO=c
}
a.renderFix();
b&&b.renderFix&&b.renderFix();
clearTimeout(a.resizedTO);
a.resizedTO=setTimeout(function(){
a.fire({
type: "resized",
chart: a
})
}, 10);
a.previousHeight=a.divRealHeight;
a.previousWidth=a.divRealWidth
}},
invalidateSize: function(){
this.previousHeight=this.previousWidth=NaN;
this.invalidateSizeReal()
},
invalidateSizeReal: function(){
var a=this;
a.marginsUpdated = !1;
clearTimeout(a.validateTO);
var b=setTimeout(function(){
a.validateSize()
}, 5);
a.timeOuts.push(b);
a.validateTO=b
},
validateData: function(a){
this.chartCreated&&(this.dataChanged = !0, this.marginsUpdated = !1, this.initChart(a))
},
validateNow: function(a, b){
this.initTO&&clearTimeout(this.initTO);
a&&(this.dataChanged = !0, this.marginsUpdated = !1);
this.skipEvents=b;
this.chartRendered = !1;
var c=this.legend;
c&&c.position!=this.prevLegendPosition&&(this.previousWidth=this.mw=0, c.invalidateSize&&(c.invalidateSize(), this.validateSize()));
this.write(this.div)
},
showItem: function(a){
a.hidden = !1;
this.initChart()
},
hideItem: function(a){
a.hidden = !0;
this.initChart()
},
hideBalloon: function(){
var a=this;
clearTimeout(a.hoverInt);
clearTimeout(a.balloonTO);
a.hoverInt=setTimeout(function(){
a.hideBalloonReal.call(a)
}, a.hideBalloonTime)
},
cleanChart: function(){},
hideBalloonReal: function(){
var a=this.balloon;
a&&a.hide&&a.hide()
},
showBalloon: function(a, b, c, e, d){
var g=this;
clearTimeout(g.balloonTO);
clearTimeout(g.hoverInt);
g.balloonTO=setTimeout(function(){
g.showBalloonReal.call(g, a, b, c, e, d)
}, 1)
},
showBalloonReal: function(a, b, c, e, d){
this.handleMouseMove();
var g=this.balloon;
g.enabled&&(g.followCursor(!1), g.changeColor(b), !c||g.fixedPosition ? (g.setPosition(e, d), isNaN(e)||isNaN(d) ? g.followCursor(!0):g.followCursor(!1)):g.followCursor(!0), a&&g.showBalloon(a))
},
handleMouseOver: function(){
this.outTO&&clearTimeout(this.outTO);
d.resetMouseOver();
this.mouseIsOver = !0
},
handleMouseOut: function(){
var a=this;
d.resetMouseOver();
a.outTO&&clearTimeout(a.outTO);
a.outTO=setTimeout(function(){
a.handleMouseOutReal()
}, 10)
},
handleMouseOutReal: function(){
this.mouseIsOver = !1
},
handleMouseMove: function(a){
a||(a=window.event);
this.mouse2Y=this.mouse2X=NaN;
var b, c, e, d;
if(a){
if(a.touches){
var g=a.touches.item(1);
g&&this.panEventsEnabled&&this.boundingRect&&(e=g.clientX - this.boundingRect.left, d=g.clientY - this.boundingRect.top);
a=a.touches.item(0);
if(!a) return
} else this.wasTouched = !1;
this.boundingRect&&a.clientX&&(b=a.clientX - this.boundingRect.left, c=a.clientY - this.boundingRect.top);
isNaN(e) ? this.mouseX=b:(this.mouseX=Math.min(b, e), this.mouse2X=Math.max(b, e));
isNaN(d) ? this.mouseY=c:(this.mouseY=Math.min(c, d), this.mouse2Y=Math.max(c, d));
this.autoTransform&&(this.mouseX /=this.cssScale, this.mouseY /=this.cssScale)
}},
handleTouchStart: function(a){
this.hideBalloonReal();
a&&(a.touches&&this.tapToActivate&&!this.tapped||!this.panRequired)||(this.handleMouseMove(a), this.handleMouseDown(a))
},
handleTouchEnd: function(a){
this.wasTouched = !0;
this.handleMouseMove(a);
d.resetMouseOver();
this.handleReleaseOutside(a)
},
handleReleaseOutside: function(){
this.handleDocTouchEnd.call(this)
},
handleMouseDown: function(a){
d.resetMouseOver();
this.mouseIsOver = !0;
a&&a.preventDefault&&(this.panEventsEnabled ? a.preventDefault():a.touches||a.preventDefault())
},
addLegend: function(a, b){
a=d.processObject(a, d.AmLegend, this.theme);
a.divId=b;
a.ieW=0;
var c;
c="object"!=typeof b&&b ? document.getElementById(b):b;
this.legend=a;
a.chart=this;
c ? (a.div=c, a.position="outside", a.autoMargins = !1):a.div=this.legendDiv;
return a
},
removeLegend: function(){
this.legend=void 0;
this.previousWidth=0;
this.legendDiv.innerHTML=""
},
handleResize: function(){
(d.isPercents(this.width)||d.isPercents(this.height))&&this.invalidateSizeReal();
this.renderFix()
},
renderFix: function(){
if(!d.VML){
var a=this.container;
a&&a.renderFix()
}},
getSVG: function(){
if(d.hasSVG) return this.container
},
animate: function(a, b, c, e, f, g, h){
a["an_" + b]&&d.removeFromArray(this.animations, a["an_" + b]);
c={
obj: a,
frame: 0,
attribute: b,
from: c,
to: e,
time: f,
effect: g,
suffix: h
};
a["an_" + b]=c;
this.animations.push(c);
return c
},
setLegendData: function(a){
var b=this.legend;
b&&b.setData(a)
},
stopAnim: function(a){
d.removeFromArray(this.animations, a)
},
updateAnimations: function(){
var a;
this.container&&this.container.update();
if(this.animations)
for (a=this.animations.length - 1; 0 <=a; a--){
var b=this.animations[a],
c=d.updateRate * b.time,
e=b.frame + 1,
f=b.obj,
g=b.attribute;
if(e <=c){
b.frame++;
var h=Number(b.from),
k=Number(b.to) - h,
c=d[b.effect](0, e, h, k, c);
0===k ? (this.animations.splice(a, 1), f.node.style[g]=Number(b.to) + b.suffix):f.node.style[g]=c + b.suffix
} else f.node.style[g]=Number(b.to) + b.suffix, f.animationFinished = !0, this.animations.splice(a, 1)
}},
update: function(){
this.updateAnimations();
var a=this.animatable;
if(0 < a.length){
for (var b = !0, c=a.length - 1; 0 <=c; c--){
var e=a[c];
e&&(e.animationFinished ? a.splice(c, 1):b = !1)
}
b&&(this.fire({
type: "animationFinished",
chart: this
}), this.animatable=[])
}},
inIframe: function(){
try {
return window.self!==window.top
} catch (a){
return !0
}},
brr: function(){
}});
d.Slice=d.Class({
construct: function(){}});
d.SerialDataItem=d.Class({
construct: function(){}});
d.GraphDataItem=d.Class({
construct: function(){}});
d.Guide=d.Class({
construct: function(a){
this.cname="Guide";
d.applyTheme(this, a, this.cname)
}});
d.Title=d.Class({
construct: function(a){
this.cname="Title";
d.applyTheme(this, a, this.cname)
}});
d.Label=d.Class({
construct: function(a){
this.cname="Label";
d.applyTheme(this, a, this.cname)
}})
})();
(function(){
var d=window.AmCharts;
d.AmBalloon=d.Class({
construct: function(a){
this.cname="AmBalloon";
this.enabled = !0;
this.fillColor="#FFFFFF";
this.fillAlpha=.8;
this.borderThickness=2;
this.borderColor="#FFFFFF";
this.borderAlpha=1;
this.cornerRadius=0;
this.maxWidth=220;
this.horizontalPadding=8;
this.verticalPadding=4;
this.pointerWidth=6;
this.pointerOrientation="V";
this.color="#000000";
this.adjustBorderColor = !0;
this.show=this.follow=this.showBullet = !1;
this.bulletSize=3;
this.shadowAlpha=.4;
this.shadowColor="#000000";
this.fadeOutDuration=this.animationDuration=.3;
this.fixedPosition = !0;
this.offsetY=6;
this.offsetX=1;
this.textAlign="center";
this.disableMouseEvents = !0;
this.deltaSignX=this.deltaSignY=1;
d.isModern||(this.offsetY *=1.5);
this.sdy=this.sdx=0;
d.applyTheme(this, a, this.cname)
},
draw: function(){
var a=this.pointToX,
b=this.pointToY;
d.isModern||(this.drop = !1);
var c=this.chart;
d.VML&&(this.fadeOutDuration=0);
this.xAnim&&c.stopAnim(this.xAnim);
this.yAnim&&c.stopAnim(this.yAnim);
this.sdy=this.sdx=0;
if(!isNaN(a)){
var e=this.follow,
f=c.container,
g=this.set;
d.remove(g);
this.removeDiv();
g=f.set();
g.node.style.pointerEvents="none";
this.set=g;
this.mainSet ? (this.mainSet.push(this.set), this.sdx=this.mainSet.x, this.sdy=this.mainSet.y):c.balloonsSet.push(g);
if(this.show){
var h=this.l,
k=this.t,
l=this.r,
m=this.b,
n=this.balloonColor,
p=this.fillColor,
r=this.borderColor,
t=p;
void 0!=n&&(this.adjustBorderColor ? t=r = n:p=n);
var q=this.horizontalPadding,
y=this.verticalPadding,
B=this.pointerWidth,
u=this.pointerOrientation,
w=this.cornerRadius,
v=c.fontFamily,
A=this.fontSize;
void 0==A&&(A=c.fontSize);
var n=document.createElement("div"),
C=c.classNamePrefix;
n.className=C + "-balloon-div";
this.className&&(n.className=n.className + " " + C + "-balloon-div-" + this.className);
C=n.style;
this.disableMouseEvents&&(C.pointerEvents="none");
C.position="absolute";
var x=this.minWidth,
z=document.createElement("div");
n.appendChild(z);
var F=z.style;
isNaN(x)||(F.minWidth=x - 2 * q + "px");
F.textAlign=this.textAlign;
F.maxWidth=this.maxWidth + "px";
F.fontSize=A + "px";
F.color=this.color;
F.fontFamily=v;
z.innerHTML=this.text;
c.chartDiv.appendChild(n);
this.textDiv=n;
var F=n.offsetWidth,
E=n.offsetHeight;
n.clientHeight&&(F=n.clientWidth, E=n.clientHeight);
v=E + 2 * y;
z=F + 2 * q;
!isNaN(x)&&z < x&&(z=x);
window.opera&&(v +=2);
var H = !1,
A=this.offsetY;
c.handDrawn&&(A +=c.handDrawScatter + 2);
"H"!=u ? (x=a - z / 2, b < k + v + 10&&"down"!=u ? (H = !0, e&&(b +=A), A=b + B, this.deltaSignY=-1):(e&&(b -=A), A=b - v - B, this.deltaSignY=1)):(2 * B > v&&(B=v / 2), A=b - v / 2, a < h + (l - h) / 2 ? (x=a + B, this.deltaSignX=-1):(x=a - z - B, this.deltaSignX =
1));
A + v >=m&&(A=m - v);
A < k&&(A=k);
x < h&&(x=h);
x + z > l&&(x=l - z);
var k=A + y,
m=x + q,
G=this.shadowAlpha,
D=this.shadowColor,
q=this.borderThickness,
K=this.bulletSize,
J, y=this.fillAlpha,
L=this.borderAlpha;
this.showBullet&&(J=d.circle(f, K, t, y), g.push(J));
this.drop ? (h=z / 1.6, l=0, "V"==u&&(u="down"), "H"==u&&(u="left"), "down"==u&&(x=a + 1, A=b - h - h / 3), "up"==u&&(l=180, x=a + 1, A=b + h + h / 3), "left"==u&&(l=270, x=a + h + h / 3 + 2, A=b), "right"==u&&(l=90, x=a - h - h / 3 + 2, A=b), k=A - E / 2 + 1, m=x - F / 2 - 1, p=d.drop(f, h, l, p, y, q, r, L)):0 < w||0===B ? (0 < G&&(a=d.rect(f, z, v, p, 0, q + 1, D, G, w), d.isModern ? a.translate(1, 1):a.translate(4, 4), g.push(a)), p=d.rect(f, z, v, p, y, q, r, L, w)):(t=[], w=[], "H"!=u ? (h=a - x, h > z - B&&(h=z - B), h < B&&(h=B), t=[0, h - B, a - x, h + B, z, z, 0, 0], w=H ? [0, 0, b - A, 0, 0, v, v, 0]:[v, v, b - A, v, v, 0, 0, v]):(u=b - A, u > v - B&&(u=v - B), u < B&&(u=B), w=[0, u - B, b - A, u + B, v, v, 0, 0], t=a < h + (l - h) / 2 ? [0, 0, x < a ? 0:a - x, 0, 0, z, z, 0]:[z, z, x + z > a ? z:a - x, z, z, 0, 0, z]), 0 < G&&(a=d.polygon(f, t, w, p, 0, q, D, G), a.translate(1, 1), g.push(a)), p=d.polygon(f, t, w, p, y, q, r, L));
this.bg=p;
g.push(p);
p.toFront();
d.setCN(c, p, "balloon-bg");
this.className&&d.setCN(c, p, "balloon-bg-" + this.className);
f=1 * this.deltaSignX;
m +=this.sdx;
k +=this.sdy;
C.left=m + "px";
C.top=k + "px";
g.translate(x - f, A, 1, !0);
p=p.getBBox();
this.bottom=A + v + 1;
this.yPos=p.y + A;
J&&J.translate(this.pointToX - x + f, b - A);
b=this.animationDuration;
0 < this.animationDuration&&!e&&!isNaN(this.prevX)&&(g.translate(this.prevX, this.prevY, NaN, !0), g.animate({
translate: x - f + "," + A
}, b, "easeOutSine"), n&&(C.left=this.prevTX + "px", C.top=this.prevTY + "px", this.xAnim=c.animate({
node: n
}, "left", this.prevTX, m, b, "easeOutSine", "px"), this.yAnim=c.animate({
node: n
}, "top", this.prevTY, k, b, "easeOutSine", "px")));
this.prevX=x - f;
this.prevY=A;
this.prevTX=m;
this.prevTY=k
}}
},
fixPrevious: function(){
this.rPrevX=this.prevX;
this.rPrevY=this.prevY;
this.rPrevTX=this.prevTX;
this.rPrevTY=this.prevTY
},
restorePrevious: function(){
this.prevX=this.rPrevX;
this.prevY=this.rPrevY;
this.prevTX=this.rPrevTX;
this.prevTY=this.rPrevTY
},
followMouse: function(){
if(this.follow&&this.show){
var a=this.chart.mouseX - this.offsetX * this.deltaSignX -
this.sdx,
b=this.chart.mouseY - this.sdy;
this.pointToX=a;
this.pointToY=b;
if(a!=this.previousX||b!=this.previousY)
if(this.previousX=a, this.previousY=b, 0===this.cornerRadius) this.draw();
else {
var c=this.set;
if(c){
var e=c.getBBox(),
a=a - e.width / 2,
d=b - e.height - 10;
a < this.l&&(a=this.l);
a > this.r - e.width&&(a=this.r - e.width);
d < this.t&&(d=b + 10);
c.translate(a, d);
b=this.textDiv.style;
b.left=a + this.horizontalPadding + "px";
b.top=d + this.verticalPadding + "px"
}}
}},
changeColor: function(a){
this.balloonColor=a
},
setBounds: function(a, b, c, e){
this.l=a;
this.t=b;
this.r=c;
this.b=e;
this.destroyTO&&clearTimeout(this.destroyTO)
},
showBalloon: function(a){
if(this.text!=a||this.positionChanged) this.text=a, this.isHiding = !1, this.show = !0, this.destroyTO&&clearTimeout(this.destroyTO), a=this.chart, this.fadeAnim1&&a.stopAnim(this.fadeAnim1), this.fadeAnim2&&a.stopAnim(this.fadeAnim2), this.draw(), this.positionChanged = !1
},
hide: function(a){
var b=this;
b.text=void 0;
isNaN(a)&&(a=b.fadeOutDuration);
var c=b.chart;
if(0 < a&&!b.isHiding){
b.isHiding = !0;
b.destroyTO&&clearTimeout(b.destroyTO);
b.destroyTO=setTimeout(function(){
b.destroy.call(b)
}, 1E3 * a);
b.follow = !1;
b.show = !1;
var e=b.set;
e&&(e.setAttr("opacity", b.fillAlpha), b.fadeAnim1=e.animate({
opacity: 0
}, a, "easeInSine"));
b.textDiv&&(b.fadeAnim2=c.animate({
node: b.textDiv
}, "opacity", 1, 0, a, "easeInSine", ""))
} else b.show = !1, b.follow = !1, b.destroy()
},
setPosition: function(a, b){
if(a!=this.pointToX||b!=this.pointToY) this.previousX=this.pointToX, this.previousY=this.pointToY, this.pointToX=a, this.pointToY=b, this.positionChanged = !0
},
followCursor: function(a){
var b=this;
b.follow=a;
clearInterval(b.interval);
var c=b.chart.mouseX - b.sdx,
e=b.chart.mouseY - b.sdy;
!isNaN(c)&&a && (b.pointToX=c - b.offsetX * b.deltaSignX, b.pointToY=e, b.followMouse(), b.interval=setInterval(function(){
b.followMouse.call(b)
}, 40))
},
removeDiv: function(){
if(this.textDiv){
var a=this.textDiv.parentNode;
a&&a.removeChild(this.textDiv)
}},
destroy: function(){
clearInterval(this.interval);
d.remove(this.set);
this.removeDiv();
this.set=null
}})
})();
(function(){
var d=window.AmCharts;
d.circle=function(a, b, c, e, f, g, h, k, l){
0 >=b&&(b=.001);
if(void 0==f||0===f) f=.01;
void 0===g&&(g="#000000");
void 0===h&&(h=0);
e={
fill: c,
stroke: g,
"fill-opacity": e,
"stroke-width": f,
"stroke-opacity": h
};
a=isNaN(l) ? a.circle(0, 0, b).attr(e):a.ellipse(0, 0, b, l).attr(e);
k&&a.gradient("radialGradient", [c, d.adjustLuminosity(c, -.6)]);
return a
};
d.text=function(a, b, c, e, f, g, h, k){
g||(g="middle");
"right"==g&&(g="end");
"left"==g&&(g="start");
isNaN(k)&&(k=1);
void 0!==b&&(b=String(b), d.isIE&&!d.isModern&&(b=b.replace("&amp;", "&"), b=b.replace("&", "&amp;")));
c={
fill: c,
"font-family": e,
"font-size": f + "px",
opacity: k
};
!0===h&&(c["font-weight"]="bold");
c["text-anchor"]=g;
return a.text(b, c)
};
d.polygon=function(a, b, c, e, f, g, h, k, l, m, n){
isNaN(g)&&(g=.01);
isNaN(k)&&(k=f);
var p=e,
r = !1;
"object"==typeof p&&1 < p.length&&(r = !0, p=p[0]);
void 0===h&&(h=p);
f={
fill: p,
stroke: h,
"fill-opacity": f,
"stroke-width": g,
"stroke-opacity": k
};
void 0!==n&&0 < n&&(f["stroke-dasharray"]=n);
n=d.dx;
g=d.dy;
a.handDrawn&&(c=d.makeHD(b, c, a.handDrawScatter), b=c[0], c=c[1]);
h=Math.round;
m&&(h=Number);
k="M" + (h(b[0]) + n) + "," + (h(c[0]) + g);
for (p=1; p < b.length; p++) m&&(b[p]=d.roundTo(b[p], 5), c[p]=d.roundTo(c[p], 5)), k +=" L" + (h(b[p]) + n) + "," + (h(c[p]) + g);
a=a.path(k + " Z").attr(f);
r&&a.gradient("linearGradient", e, l);
return a
};
d.rect=function(a, b, c, e, f, g, h, k, l, m, n){
if(isNaN(b)||isNaN(c)) return a.set();
isNaN(g)&&(g=0);
void 0===l&&(l=0);
void 0===m&&(m=270);
isNaN(f)&&(f=0);
var p=e,
r = !1;
"object"==typeof p&&(p=p[0], r = !0);
void 0===h&&(h=p);
void 0===k&&(k=f);
b=Math.round(b);
c=Math.round(c);
var t=0,
q=0;
0 > b&&(b=Math.abs(b), t=-b);
0 > c&&(c=Math.abs(c), q=-c);
t +=d.dx;
q +=d.dy;
f={
fill: p,
stroke: h,
"fill-opacity": f,
"stroke-opacity": k
};
void 0!==n&&0 < n&&(f["stroke-dasharray"]=n);
a=a.rect(t, q, b, c, l, g).attr(f);
r&&a.gradient("linearGradient", e, m);
return a
};
d.bullet=function(a, b, c, e, f, g, h, k, l, m, n, p, r){
var t;
"circle"==b&&(b="round");
switch (b){
case "round":
t=d.circle(a, c / 2, e, f, g, h, k);
break;
case "square":
t=d.polygon(a, [-c / 2, c / 2, c / 2, -c / 2], [c / 2, c / 2, -c / 2, -c / 2], e, f, g, h, k, m - 180, void 0, r);
break;
case "rectangle":
t=d.polygon(a, [-c, c, c, -c], [c / 2, c / 2, -c / 2, -c / 2], e, f, g, h, k, m - 180, void 0, r);
break;
case "diamond":
t=d.polygon(a, [-c / 2, 0, c / 2, 0], [0, -c / 2, 0, c / 2], e, f, g, h, k);
break;
case "triangleUp":
t=d.triangle(a, c, 0, e, f, g, h, k);
break;
case "triangleDown":
t=d.triangle(a, c, 180, e, f, g, h, k);
break;
case "triangleLeft":
t=d.triangle(a, c, 270, e, f, g, h, k);
break;
case "triangleRight":
t=d.triangle(a, c, 90, e, f, g, h, k);
break;
case "bubble":
t=d.circle(a, c / 2, e, f, g, h, k, !0);
break;
case "line":
t=d.line(a, [-c /
2, c / 2
], [0, 0], e, f, g, h, k);
break;
case "yError":
t=a.set();
t.push(d.line(a, [0, 0], [-c / 2, c / 2], e, f, g));
t.push(d.line(a, [-l, l], [-c / 2, -c / 2], e, f, g));
t.push(d.line(a, [-l, l], [c / 2, c / 2], e, f, g));
break;
case "xError":
t=a.set(), t.push(d.line(a, [-c / 2, c / 2], [0, 0], e, f, g)), t.push(d.line(a, [-c / 2, -c / 2], [-l, l], e, f, g)), t.push(d.line(a, [c / 2, c / 2], [-l, l], e, f, g))
}
t&&t.pattern(n, NaN, p);
return t
};
d.triangle=function(a, b, c, e, d, g, h, k){
if(void 0===g||0===g) g=1;
void 0===h&&(h="#000");
void 0===k&&(k=0);
e={
fill: e,
stroke: h,
"fill-opacity": d,
"stroke-width": g,
"stroke-opacity": k
};
b /=2;
var l;
0===c&&(l=" M" + -b + "," + b + " L0," + -b + " L" + b + "," + b + " Z");
180==c&&(l=" M" + -b + "," + -b + " L0," + b + " L" + b + "," + -b + " Z");
90==c&&(l=" M" + -b + "," + -b + " L" + b + ",0 L" + -b + "," + b + " Z");
270==c&&(l=" M" + -b + ",0 L" + b + "," + b + " L" + b + "," + -b + " Z");
return a.path(l).attr(e)
};
d.line=function(a, b, c, e, f, g, h, k, l, m, n){
if(a.handDrawn&&!n) return d.handDrawnLine(a, b, c, e, f, g, h, k, l, m, n);
g={
fill: "none",
"stroke-width": g
};
void 0!==h&&0 < h&&(g["stroke-dasharray"]=h);
isNaN(f)||(g["stroke-opacity"]=f);
e&&(g.stroke=e);
e=Math.round;
m&&(e=Number, b[0]=d.roundTo(b[0], 5), c[0]=d.roundTo(c[0], 5));
m=d.dx;
f=d.dy;
h="M" + (e(b[0]) + m) + "," + (e(c[0]) + f);
for (k=1; k < b.length; k++) b[k]=d.roundTo(b[k], 5), c[k]=d.roundTo(c[k], 5), h +=" L" + (e(b[k]) + m) + "," + (e(c[k]) + f);
if(d.VML) return a.path(h, void 0, !0).attr(g);
l&&(h +=" M0,0 L0,0");
return a.path(h).attr(g)
};
d.makeHD=function(a, b, c){
for (var e=[], d=[], g=1; g < a.length; g++)
for (var h=Number(a[g - 1]), k=Number(b[g - 1]), l=Number(a[g]), m=Number(b[g]), n=Math.round(Math.sqrt(Math.pow(l -
h, 2) + Math.pow(m - k, 2)) / 50) + 1, l=(l - h) / n, m=(m - k) / n, p=0; p <=n; p++){
var r=k + p * m + Math.random() * c;
e.push(h + p * l + Math.random() * c);
d.push(r)
}
return [e, d]
};
d.handDrawnLine=function(a, b, c, e, f, g, h, k, l, m){
var n, p=a.set();
for (n=1; n < b.length; n++)
for (var r=[b[n - 1], b[n]], t=[c[n - 1], c[n]], t=d.makeHD(r, t, a.handDrawScatter), r=t[0], t=t[1], q=1; q < r.length; q++) p.push(d.line(a, [r[q - 1], r[q]], [t[q - 1], t[q]], e, f, g + Math.random() * a.handDrawThickness - a.handDrawThickness / 2, h, k, l, m, !0));
return p
};
d.doNothing=function(a){
return a
};
d.drop =
function(a, b, c, e, d, g, h, k){
var l=1 / 180 * Math.PI,
m=c - 20,
n=Math.sin(m * l) * b,
p=Math.cos(m * l) * b,
r=Math.sin((m + 40) * l) * b,
t=Math.cos((m + 40) * l) * b,
q=.8 * b,
y=-b / 3,
B=b / 3;
0===c&&(y=-y, B=0);
180==c&&(B=0);
90==c&&(y=0);
270==c&&(y=0, B=-B);
c={
fill: e,
stroke: h,
"stroke-width": g,
"stroke-opacity": k,
"fill-opacity": d
};
b="M" + n + "," + p + " A" + b + "," + b + ",0,1,1," + r + "," + t + (" A" + q + "," + q + ",0,0,0," + (Math.sin((m + 20) * l) * b + B) + "," + (Math.cos((m + 20) * l) * b + y));
b +=" A" + q + "," + q + ",0,0,0," + n + "," + p;
return a.path(b, void 0, void 0, "1000,1000").attr(c)
};
d.wedge=function(a, b, c, e, f, g, h, k, l, m, n, p, r, t){
var q=Math.round;
g=q(g);
h=q(h);
k=q(k);
var y=q(h / g * k),
B=d.VML,
u=359.5 + g / 100;
359.94 < u&&(u=359.94);
f >=u&&(f=u);
var w=1 / 180 * Math.PI,
u=b + Math.sin(e * w) * k,
v=c - Math.cos(e * w) * y,
A=b + Math.sin(e * w) * g,
C=c - Math.cos(e * w) * h,
x=b + Math.sin((e + f) * w) * g,
z=c - Math.cos((e + f) * w) * h,
F=b + Math.sin((e + f) * w) * k,
w=c - Math.cos((e + f) * w) * y,
E={
fill: d.adjustLuminosity(m.fill, -.2),
"stroke-opacity": 0,
"fill-opacity": m["fill-opacity"]
},
H=0;
180 < Math.abs(f)&&(H=1);
e=a.set();
var G;
B&&(u=q(10 * u), A=q(10 * A), x=q(10 * x), F=q(10 * F), v=q(10 * v), C=q(10 * C), z=q(10 * z), w=q(10 * w), b=q(10 * b), l=q(10 * l), c=q(10 * c), g *=10, h *=10, k *=10, y *=10, 1 > Math.abs(f)&&1 >=Math.abs(x - A)&&1 >=Math.abs(z - C)&&(G = !0));
f="";
var D;
p&&(E["fill-opacity"]=0, E["stroke-opacity"]=m["stroke-opacity"] / 2, E.stroke=m.stroke);
if(0 < l){
D=" M" + u + "," + (v + l) + " L" + A + "," + (C + l);
B ? (G||(D +=" A" + (b - g) + "," + (l + c - h) + "," + (b + g) + "," + (l + c + h) + "," + A + "," + (C + l) + "," + x + "," + (z + l)), D +=" L" + F + "," + (w + l), 0 < k&&(G||(D +=" B" + (b - k) + "," + (l + c - y) + "," + (b + k) + "," + (l + c + y) + "," + F + "," + (l + w) + "," + u + "," + (l + v)))):(D +=" A" + g + "," + h + ",0," + H + ",1," + x + "," + (z + l) + " L" + F + "," + (w + l), 0 < k&&(D +=" A" + k + "," + y + ",0," + H + ",0," + u + "," + (v + l)));
D +=" Z";
var K=l;
B&&(K /=10);
for (var J=0; J < K; J +=10){
var L=a.path(D, void 0, void 0, "1000,1000").attr(E);
e.push(L);
L.translate(0, -J)
}
D=a.path(" M" + u + "," + v + " L" + u + "," + (v + l) + " L" + A + "," + (C + l) + " L" + A + "," + C + " L" + u + "," + v + " Z", void 0, void 0, "1000,1000").attr(E);
l=a.path(" M" + x + "," + z + " L" + x + "," + (z + l) + " L" + F + "," + (w + l) + " L" + F + "," + w + " L" + x + "," + z + " Z", void 0, void 0, "1000,1000").attr(E);
e.push(D);
e.push(l)
}
B ? (G||(f=" A" + q(b - g) + "," + q(c - h) + "," + q(b + g) + "," + q(c + h) + "," + q(A) + "," + q(C) + "," + q(x) + "," + q(z)), h=" M" + q(u) + "," + q(v) + " L" + q(A) + "," + q(C) + f + " L" + q(F) + "," + q(w)):h=" M" + u + "," + v + " L" + A + "," + C + (" A" + g + "," + h + ",0," + H + ",1," + x + "," + z) + " L" + F + "," + w;
0 < k&&(B ? G||(h +=" B" + (b - k) + "," + (c - y) + "," + (b + k) + "," + (c + y) + "," + F + "," + w + "," + u + "," + v):h +=" A" + k + "," + y + ",0," + H + ",0," + u + "," + v);
a.handDrawn&&(k=d.line(a, [u, A], [v, C], m.stroke, m.thickness * Math.random() * a.handDrawThickness, m["stroke-opacity"]), e.push(k));
a=a.path(h + " Z", void 0, void 0, "1000,1000").attr(m);
if(n){
k=[];
for (y=0; y < n.length; y++) k.push(d.adjustLuminosity(m.fill, n[y]));
"radial"!=t||d.isModern||(k=[]);
0 < k.length&&a.gradient(t + "Gradient", k)
}
d.isModern&&"radial"==t&&a.grad&&(a.grad.setAttribute("gradientUnits", "userSpaceOnUse"), a.grad.setAttribute("r", g), a.grad.setAttribute("cx", b), a.grad.setAttribute("cy", c));
a.pattern(p, NaN, r);
e.wedge=a;
e.push(a);
return e
};
d.rgb2hex=function(a){
return (a=a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===a.length ? "#" + ("0" + parseInt(a[1], 10).toString(16)).slice(-2) + ("0" + parseInt(a[2], 10).toString(16)).slice(-2) + ("0" + parseInt(a[3], 10).toString(16)).slice(-2):""
};
d.adjustLuminosity=function(a, b){
a&&-1!=a.indexOf("rgb")&&(a=d.rgb2hex(a));
a=String(a).replace(/[^0-9a-f]/gi, "");
6 > a.length&&(a=String(a[0]) + String(a[0]) + String(a[1]) + String(a[1]) + String(a[2]) + String(a[2]));
b=b||0;
var c="#",
e, f;
for (f=0; 3 > f; f++) e=parseInt(a.substr(2 * f, 2), 16), e=Math.round(Math.min(Math.max(0, e + e * b), 255)).toString(16), c +=("00" +
e).substr(e.length);
return c
}})();
(function(){
var d=window.AmCharts;
d.AmLegend=d.Class({
construct: function(a){
this.enabled = !0;
this.cname="AmLegend";
this.createEvents("rollOverMarker", "rollOverItem", "rollOutMarker", "rollOutItem", "showItem", "hideItem", "clickMarker", "clickLabel");
this.position="bottom";
this.borderColor=this.color="#000000";
this.borderAlpha=0;
this.markerLabelGap=5;
this.verticalGap=10;
this.align="left";
this.horizontalGap=0;
this.spacing=10;
this.markerDisabledColor="#AAB3B3";
this.markerType="square";
this.markerSize=16;
this.markerBorderThickness=this.markerBorderAlpha=1;
this.marginBottom=this.marginTop=0;
this.marginLeft=this.marginRight=20;
this.autoMargins = !0;
this.valueWidth=50;
this.switchable = !0;
this.switchType="x";
this.switchColor="#FFFFFF";
this.rollOverColor="#CC0000";
this.reversedOrder = !1;
this.labelText="[[title]]";
this.valueText="[[value]]";
this.accessibleLabel="[[title]]";
this.useMarkerColorForLabels = !1;
this.rollOverGraphAlpha=1;
this.textClickEnabled = !1;
this.equalWidths = !0;
this.backgroundColor="#FFFFFF";
this.backgroundAlpha=0;
this.useGraphSettings = !1;
this.showEntries = !0;
this.labelDx=0;
d.applyTheme(this, a, this.cname)
},
setData: function(a){
this.legendData=a;
this.invalidateSize()
},
invalidateSize: function(){
this.destroy();
this.entries=[];
this.valueLabels=[];
var a=this.legendData;
this.enabled&&(d.ifArray(a)||d.ifArray(this.data))&&this.drawLegend()
},
drawLegend: function(){
var a=this.chart,
b=this.position,
c=this.width,
e=a.divRealWidth,
f=a.divRealHeight,
g=this.div,
h=this.legendData;
this.data&&(h=this.combineLegend ? this.legendData.concat(this.data):this.data);
isNaN(this.fontSize)&&(this.fontSize=a.fontSize);
this.maxColumnsReal=this.maxColumns;
if("right"==b||"left"==b) this.maxColumnsReal=1, this.autoMargins&&(this.marginLeft=this.marginRight=10);
else if(this.autoMargins){
this.marginRight=a.marginRight;
this.marginLeft=a.marginLeft;
var k=a.autoMarginOffset;
"bottom"==b ? (this.marginBottom=k, this.marginTop=0):(this.marginTop=k, this.marginBottom=0)
}
c=void 0!==c ? d.toCoordinate(c, e):"right"!=b&&"left"!=b ? a.realWidth:0 < this.ieW ? this.ieW:a.realWidth;
"outside"==b ? (c=g.offsetWidth, f=g.offsetHeight, g.clientHeight&&(c=g.clientWidth, f=g.clientHeight)):(isNaN(c)||(g.style.width=c + "px"), g.className="amChartsLegend " + a.classNamePrefix + "-legend-div");
this.divWidth=c;
(b=this.container) ? (b.container.innerHTML="", g.appendChild(b.container), b.width=c, b.height=f, b.setSize(c, f), b.addDefs(a)):b=new d.AmDraw(g, c, f, a);
this.container=b;
this.lx=0;
this.ly=8;
f=this.markerSize;
f > this.fontSize&&(this.ly=f / 2 - 1);
0 < f&&(this.lx +=f + this.markerLabelGap);
this.titleWidth=0;
if(f=this.title) f=d.text(this.container, f, this.color, a.fontFamily, this.fontSize, "start", !0), d.setCN(a, f, "legend-title"), f.translate(this.marginLeft, this.marginTop + this.verticalGap + this.ly + 1), a=f.getBBox(), this.titleWidth=a.width + 15, this.titleHeight=a.height + 6;
this.index=this.maxLabelWidth=0;
if(this.showEntries){
for (a=0; a < h.length; a++) this.createEntry(h[a]);
for (a=this.index=0; a < h.length; a++) this.createValue(h[a])
}
this.arrangeEntries();
this.updateValues()
},
arrangeEntries: function(){
var a=this.position,
b=this.marginLeft +
this.titleWidth,
c=this.marginRight,
e=this.marginTop,
f=this.marginBottom,
g=this.horizontalGap,
h=this.div,
k=this.divWidth,
l=this.maxColumnsReal,
m=this.verticalGap,
n=this.spacing,
p=k - c - b,
r=0,
t=0,
q=this.container;
this.set&&this.set.remove();
var y=q.set();
this.set=y;
var B=q.set();
y.push(B);
var u=this.entries,
w, v;
for (v=0; v < u.length; v++){
w=u[v].getBBox();
var A=w.width;
A > r&&(r=A);
w=w.height;
w > t&&(t=w)
}
var A=t = 0,
C=g,
x=0,
z=0;
for (v=0; v < u.length; v++){
var F=u[v];
this.reversedOrder&&(F=u[u.length - v - 1]);
w=F.getBBox();
var E;
this.equalWidths ? E=A * (r + n + this.markerLabelGap):(E=C, C=C + w.width + g + n);
E + w.width > p&&0 < v&&0!==A&&(t++, E=A = 0, C=E + w.width + g + n, x=x + z + m, z=0);
w.height > z&&(z=w.height);
F.translate(E, x);
A++;
!isNaN(l)&&A >=l&&(A=0, t++, x=x + z + m, C=g, z=0);
B.push(F)
}
w=B.getBBox();
l=w.height + 2 * m - 1;
"left"==a||"right"==a ? (n=w.width + 2 * g, k=n + b + c, h.style.width=k + "px", this.ieW=k):n=k - b - c - 1;
c=d.polygon(this.container, [0, n, n, 0], [0, 0, l, l], this.backgroundColor, this.backgroundAlpha, 1, this.borderColor, this.borderAlpha);
d.setCN(this.chart, c, "legend-bg");
y.push(c);
y.translate(b, e);
c.toBack();
b=g;
if("top"==a||"bottom"==a||"absolute"==a||"outside"==a) "center"==this.align ? b=g + (n - w.width) / 2:"right"==this.align&&(b=g + n - w.width);
B.translate(b, m + 1);
this.titleHeight > l&&(l=this.titleHeight);
e=l + e + f + 1;
0 > e&&(e=0);
"absolute"!=a&&"outside"!=a&&e > this.chart.divRealHeight&&(h.style.top="0px");
h.style.height=Math.round(e) + "px";
q.setSize(this.divWidth, e)
},
createEntry: function(a){
if(!1!==a.visibleInLegend&&!a.hideFromLegend){
var b=this,
c=b.chart,
e=b.useGraphSettings,
f=a.markerType;
f&&(e = !1);
a.legendEntryWidth=b.markerSize;
f||(f=b.markerType);
var g=a.color,
h=a.alpha;
a.legendKeyColor&&(g=a.legendKeyColor());
a.legendKeyAlpha&&(h=a.legendKeyAlpha());
var k;
!0===a.hidden&&(k=g = b.markerDisabledColor);
var l=a.pattern,
m, n=a.customMarker;
n||(n=b.customMarker);
var p=b.container,
r=b.markerSize,
t=0,
q=0,
y=r / 2;
if(e){
e=a.type;
b.switchType=void 0;
if("line"==e||"step"==e||"smoothedLine"==e||"ohlc"==e) m=p.set(), a.hidden||(g=a.lineColorR, k=a.bulletBorderColorR), t=d.line(p, [0, 2 * r], [r / 2, r / 2], g, a.lineAlpha, a.lineThickness, a.dashLength), d.setCN(c, t, "graph-stroke"), m.push(t), a.bullet&&(a.hidden||(g=a.bulletColorR), t=d.bullet(p, a.bullet, a.bulletSize, g, a.bulletAlpha, a.bulletBorderThickness, k, a.bulletBorderAlpha))&&(d.setCN(c, t, "graph-bullet"), t.translate(r + 1, r / 2), m.push(t)), y=0, t=r, q=r / 3;
else {
a.getGradRotation&&(m=a.getGradRotation(), 0===m&&(m=180));
t=a.fillColorsR;
!0===a.hidden&&(t=g);
if(m=b.createMarker("rectangle", t, a.fillAlphas, a.lineThickness, g, a.lineAlpha, m, l, a.dashLength)) y=r, m.translate(y, r / 2);
t=r
}
d.setCN(c, m, "graph-" + e);
d.setCN(c, m, "graph-" + a.id)
}else if(n) m=p.image(n, 0, 0, r, r);
else {
var B;
isNaN(b.gradientRotation)||(B=180 + b.gradientRotation);
(m=b.createMarker(f, g, h, void 0, void 0, void 0, B, l))&&m.translate(r / 2, r / 2)
}
d.setCN(c, m, "legend-marker");
b.addListeners(m, a);
p=p.set([m]);
b.switchable&&a.switchable&&p.setAttr("cursor", "pointer");
void 0!==a.id&&d.setCN(c, p, "legend-item-" + a.id);
d.setCN(c, p, a.className, !0);
k=b.switchType;
var u;
k&&"none"!=k&&0 < r&&("x"==k ? (u=b.createX(), u.translate(r / 2, r / 2)):u=b.createV(), u.dItem=a, !0!==a.hidden ? "x"==k ? u.hide():u.show():"x"!=k&&u.hide(), b.switchable||u.hide(), b.addListeners(u, a), a.legendSwitch=u, p.push(u), d.setCN(c, u, "legend-switch"));
k=b.color;
a.showBalloon&&b.textClickEnabled&&void 0!==b.selectedColor&&(k=b.selectedColor);
b.useMarkerColorForLabels&&!l&&(k=g);
!0===a.hidden&&(k=b.markerDisabledColor);
g=d.massReplace(b.labelText, {
"[[title]]": a.title
});
void 0!==b.tabIndex&&(p.setAttr("tabindex", b.tabIndex), p.setAttr("role", "menuitem"), p.keyup(function(c){
13==c.keyCode&&b.clickMarker(a, c)
}));
c.accessible&&b.accessibleLabel&&(l=d.massReplace(b.accessibleLabel, {
"[[title]]": a.title
}), c.makeAccessible(p, l));
l=b.fontSize;
m&&(r <=l&&(r=r / 2 + b.ly - l / 2 + (l + 2 - r) / 2 - q, m.translate(y, r), u&&u.translate(u.x, r)), a.legendEntryWidth=m.getBBox().width);
var w;
g&&(g=d.fixBrakes(g), a.legendTextReal=g, w=b.labelWidth, w=isNaN(w) ? d.text(b.container, g, k, c.fontFamily, l, "start"):d.wrappedText(b.container, g, k, c.fontFamily, l, "start", !1, w, 0), d.setCN(c, w, "legend-label"),
w.translate(b.lx + t, b.ly), p.push(w), b.labelDx=t, c=w.getBBox().width, b.maxLabelWidth < c&&(b.maxLabelWidth=c));
b.entries[b.index]=p;
a.legendEntry=b.entries[b.index];
a.legendMarker=m;
a.legendLabel=w;
b.index++
}},
addListeners: function(a, b){
var c=this;
a&&a.mouseover(function(a){
c.rollOverMarker(b, a)
}).mouseout(function(a){
c.rollOutMarker(b, a)
}).click(function(a){
c.clickMarker(b, a)
})
},
rollOverMarker: function(a, b){
this.switchable&&this.dispatch("rollOverMarker", a, b);
this.dispatch("rollOverItem", a, b)
},
rollOutMarker: function(a, b){
this.switchable&&this.dispatch("rollOutMarker", a, b);
this.dispatch("rollOutItem", a, b)
},
clickMarker: function(a, b){
this.switchable&&(!0===a.hidden ? this.dispatch("showItem", a, b):this.dispatch("hideItem", a, b));
this.dispatch("clickMarker", a, b)
},
rollOverLabel: function(a, b){
a.hidden||this.textClickEnabled&&a.legendLabel&&a.legendLabel.attr({
fill: this.rollOverColor
});
this.dispatch("rollOverItem", a, b)
},
rollOutLabel: function(a, b){
if(!a.hidden&&this.textClickEnabled&&a.legendLabel){
var c=this.color;
void 0!==this.selectedColor&&a.showBalloon&&(c=this.selectedColor);
this.useMarkerColorForLabels&&(c=a.lineColor, void 0===c&&(c=a.color));
a.legendLabel.attr({
fill: c
})
}
this.dispatch("rollOutItem", a, b)
},
clickLabel: function(a, b){
this.textClickEnabled ? a.hidden||this.dispatch("clickLabel", a, b):this.switchable&&(!0===a.hidden ? this.dispatch("showItem", a, b):this.dispatch("hideItem", a, b))
},
dispatch: function(a, b, c){
a={
type: a,
dataItem: b,
target: this,
event: c,
chart: this.chart
};
this.chart&&this.chart.handleLegendEvent(a);
this.fire(a)
},
createValue: function(a){
var b=this,
c=b.fontSize,
e=b.chart;
if(!1!==a.visibleInLegend&&!a.hideFromLegend){
var f=b.maxLabelWidth;
b.forceWidth&&(f=b.labelWidth);
b.equalWidths||(b.valueAlign="left");
"left"==b.valueAlign&&a.legendLabel&&(f=a.legendLabel.getBBox().width);
var g=f;
if(b.valueText&&0 < b.valueWidth){
var h=b.color;
b.useMarkerColorForValues&&(h=a.color, a.legendKeyColor&&(h=a.legendKeyColor()));
!0===a.hidden&&(h=b.markerDisabledColor);
var k=b.valueText,
f=f + b.lx + b.labelDx + b.markerLabelGap +
b.valueWidth,
l="end";
"left"==b.valueAlign&&(f -=b.valueWidth, l="start");
h=d.text(b.container, k, h, b.chart.fontFamily, c, l);
d.setCN(e, h, "legend-value");
h.translate(f, b.ly);
b.entries[b.index].push(h);
g +=b.valueWidth + 2 * b.markerLabelGap;
h.dItem=a;
b.valueLabels.push(h)
}
b.index++;
e=b.markerSize;
e < c + 7&&(e=c + 7, d.VML&&(e +=3));
c=b.container.rect(a.legendEntryWidth, 0, g, e, 0, 0).attr({
stroke: "none",
fill: "#fff",
"fill-opacity": .005
});
c.dItem=a;
b.entries[b.index - 1].push(c);
c.mouseover(function(c){
b.rollOverLabel(a, c)
}).mouseout(function(c){
b.rollOutLabel(a, c)
}).click(function(c){
b.clickLabel(a, c)
})
}},
createV: function(){
var a=this.markerSize;
return d.polygon(this.container, [a / 5, a / 2, a - a / 5, a / 2], [a / 3, a - a / 5, a / 5, a / 1.7], this.switchColor)
},
createX: function(){
var a=(this.markerSize - 4) / 2,
b={
stroke: this.switchColor,
"stroke-width": 3
},
c=this.container,
e=d.line(c, [-a, a], [-a, a]).attr(b),
a=d.line(c, [-a, a], [a, -a]).attr(b);
return this.container.set([e, a])
},
createMarker: function(a, b, c, e, f, g, h, k, l){
var m=this.markerSize,
n=this.container;
f||(f=this.markerBorderColor);
f ||
(f=b);
isNaN(e)&&(e=this.markerBorderThickness);
isNaN(g)&&(g=this.markerBorderAlpha);
return d.bullet(n, a, m, b, c, e, f, g, m, h, k, this.chart.path, l)
},
validateNow: function(){
this.invalidateSize()
},
updateValues: function(){
var a=this.valueLabels,
b=this.chart,
c, e=this.data;
if(a)
for (c=0; c < a.length; c++){
var f=a[c],
g=f.dItem;
g.periodDataItem=void 0;
g.periodPercentDataItem=void 0;
var h=" ";
if(e) g.value ? f.text(g.value):f.text("");
else {
var k=null;
if(void 0!==g.type){
var k=g.currentDataItem,
l=this.periodValueText;
g.legendPeriodValueText&&(l=g.legendPeriodValueText);
g.legendPeriodValueTextR&&(l=g.legendPeriodValueTextR);
k ? (h=this.valueText, g.legendValueText&&(h=g.legendValueText), g.legendValueTextR&&(h=g.legendValueTextR), h=b.formatString(h, k)):l&&b.formatPeriodString&&(l=d.massReplace(l, {
"[[title]]": g.title
}), h=b.formatPeriodString(l, g))
} else h=b.formatString(this.valueText, g);
l=g;
k&&(l=k);
var m=this.valueFunction;
m&&(h=m(l, h, b.periodDataItem));
var n;
this.useMarkerColorForLabels&&!k&&g.lastDataItem&&(k=g.lastDataItem);
k ? n=b.getBalloonColor(g, k):g.legendKeyColor&&(n=g.legendKeyColor());
g.legendColorFunction&&(n=g.legendColorFunction(l, h, g.periodDataItem, g.periodPercentDataItem));
f.text(h);
if(!g.pattern&&(this.useMarkerColorForValues&&f.setAttr("fill", n), this.useMarkerColorForLabels)){
if(f=g.legendMarker) f.setAttr("fill", n), f.setAttr("stroke", n);
(f=g.legendLabel)&&(g.hidden ? f.setAttr("fill", this.markerDisabledColor):f.setAttr("fill", n))
}}
}},
renderFix: function(){
if(!d.VML&&this.enabled){
var a=this.container;
a&&a.renderFix()
}},
destroy: function(){
this.div.innerHTML="";
d.remove(this.set)
}})
})();
(function(){
var d=window.AmCharts;
d.AmMap=d.Class({
inherits: d.AmChart,
construct: function(a){
this.cname="AmMap";
this.type="map";
this.theme=a;
this.svgNotSupported="This browser doesn't support SVG. Use Chrome, Firefox, Internet Explorer 9 or later.";
this.createEvents("rollOverMapObject", "rollOutMapObject", "clickMapObject", "mouseDownMapObject", "selectedObjectChanged", "homeButtonClicked", "zoomCompleted", "dragCompleted", "positionChanged", "writeDevInfo", "click", "descriptionClosed");
this.zoomDuration=.6;
this.zoomControl=new d.ZoomControl(a);
this.fitMapToContainer = !0;
this.mouseWheelZoomEnabled=this.backgroundZoomsToTop = !1;
this.allowClickOnSelectedObject=this.useHandCursorOnClickableOjects=this.showBalloonOnSelectedObject = !0;
this.showObjectsAfterZoom=this.wheelBusy = !1;
this.zoomOnDoubleClick=this.useObjectColorForBalloon = !0;
this.allowMultipleDescriptionWindows = !1;
this.dragMap=this.centerMap=this.linesAboveImages = !0;
this.colorSteps=5;
this.forceNormalize = !1;
this.showAreasInList = !0;
this.showLinesInList=this.showImagesInList = !1;
this.areasProcessor=new d.AreasProcessor(this);
this.areasSettings=new d.AreasSettings(a);
this.imagesProcessor=new d.ImagesProcessor(this);
this.imagesSettings=new d.ImagesSettings(a);
this.linesProcessor=new d.LinesProcessor(this);
this.linesSettings=new d.LinesSettings(a);
this.initialTouchZoom=1;
this.showDescriptionOnHover = !1;
d.AmMap.base.construct.call(this, a);
this.creditsPosition="bottom-left";
this.product="ammap";
this.areasClasses={};
this.updatableImages=[];
d.applyTheme(this, a, this.cname)
},
initChart: function(){
this.zoomInstantly = !0;
var a=this.container;
this.panRequired = !0;
if(this.sizeChanged&&d.hasSVG&&this.chartCreated){
this.updatableImages=[];
this.freeLabelsSet&&this.freeLabelsSet.remove();
this.freeLabelsSet=a.set();
this.container.setSize(this.realWidth, this.realHeight);
this.resizeMap();
this.drawBackground();
this.redrawLabels();
this.drawTitles();
this.processObjects(!0);
this.rescaleObjects();
this.zoomControl.init(this, a);
this.drawBg();
var b=this.smallMap;
b&&b.init(this, a);
(b=this.valueLegend)&&b.init(this, a);
this.sizeChanged = !1;
this.zoomToLongLat(this.zLevelTemp, this.zLongTemp, this.zLatTemp, !0);
this.previousWidth=this.realWidth;
this.previousHeight=this.realHeight;
this.updateSmallMap();
this.linkSet.toFront();
this.zoomControl.update&&this.zoomControl.update()
} else(d.AmMap.base.initChart.call(this), d.hasSVG) ? (this.dataChanged&&(this.parseData(), this.dispatchDataUpdated = !0, this.dataChanged = !1, a=this.legend)&&(a.position="absolute", a.invalidateSize()), this.createDescriptionsDiv(), this.svgAreas=[], this.svgAreasById={}, this.drawChart()):(this.chartDiv.style.textAlign="", this.chartDiv.setAttribute("class", "ammapAlert"), this.chartDiv.innerHTML=this.svgNotSupported, this.fire({
type: "failed",
chart: this
}))
},
storeTemp: function(){
if(d.hasSVG&&0 < this.realWidth&&0 < this.realHeight){
var a=this.mapContainer.getBBox();
0 < a.width&&0 < a.height&&(a=this.zoomLongitude(), isNaN(a)||(this.zLongTemp=a), a=this.zoomLatitude(), isNaN(a)||(this.zLatTemp=a), a=this.zoomLevel(), isNaN(a)||(this.zLevelTemp=a))
}},
invalidateSize: function(){
this.storeTemp();
d.AmMap.base.invalidateSize.call(this)
},
validateSize: function(){
this.storeTemp();
d.AmMap.base.validateSize.call(this)
},
handleWheelReal: function(a){
if(!this.wheelBusy){
this.stopAnimation();
var b=this.zoomLevel(),
c=this.zoomControl,
e=c.zoomFactor;
this.wheelBusy = !0;
a=d.fitToBounds(0 < a ? b * e:b / e, c.minZoomLevel, c.maxZoomLevel);
e=this.mouseX / this.mapWidth;
c=this.mouseY / this.mapHeight;
e=(this.zoomX() - e) * (a / b) + e;
b=(this.zoomY() - c) * (a / b) + c;
this.zoomTo(a, e, b)
}},
addLegend: function(a, b){
a.position="absolute";
a.autoMargins = !1;
a.valueWidth=0;
a.switchable = !1;
d.AmMap.base.addLegend.call(this, a, b);
void 0===a.enabled&&(a.enabled = !0);
return a
},
handleLegendEvent: function(){},
createDescriptionsDiv: function(){
if(!this.descriptionsDiv){
var a=document.createElement("div"),
b=a.style;
b.position="absolute";
b.left="0px";
b.top="0px";
this.descriptionsDiv=a
}
this.containerDiv.appendChild(this.descriptionsDiv)
},
drawChart: function(){
d.AmMap.base.drawChart.call(this);
var a=this.dataProvider;
this.dataProvider=a = d.extend(a, new d.MapData, !0);
this.areasSettings=d.processObject(this.areasSettings, d.AreasSettings, this.theme);
this.imagesSettings=d.processObject(this.imagesSettings, d.ImagesSettings, this.theme);
this.linesSettings=d.processObject(this.linesSettings, d.LinesSettings, this.theme);
var b=this.container;
this.mapContainer&&this.mapContainer.remove();
this.mapContainer=b.set();
this.graphsSet.push(this.mapContainer);
var c;
a.map&&(c=d.maps[a.map]);
a.mapVar&&(c=a.mapVar);
c ? (this.svgData=c.svg, this.getBounds(), this.buildEverything()):(a=a.mapURL)&&this.loadXml(a);
this.balloonsSet.toFront()
},
drawBg: function(){
var a=this;
a.background.click(function(){
a.handleBackgroundClick()
});
a.background.mouseover(function(){
a.rollOutMapObject(a.previouslyHovered)
})
},
buildEverything: function(){
if(0 < this.realWidth&&0 < this.realHeight){
var a=this.container,
b=this.dataProvider;
this.projection||(this.projection=b.projection, this.projection||(this.projection="equirectangular"));
this.updatableImages=[];
var c=this.projection;
c&&(this.projectionFunction=d[c]);
this.projectionFunction||(this.projectionFunction=d.equirectangular);
this.dpProjectionFunction=d[b.projection];
this.dpProjectionFunction||(this.dpProjectionFunction=d.equirectangular);
this.zoomControl=d.processObject(this.zoomControl, d.ZoomControl, this.theme);
this.zoomControl.init(this, a);
this.drawBg();
this.buildSVGMap();
this.projectionFunction&&c!=b.projection||this.forceNormalize ? (this.normalizeMap(), this.changeProjection()):this.fixMapPosition();
if(c=this.smallMap) c=d.processObject(c, d.SmallMap, this.theme), c.init(this, a), this.smallMap=c;
isNaN(b.zoomX)&&isNaN(b.zoomY)&&isNaN(b.zoomLatitude)&&isNaN(b.zoomLongitude)&&(this.centerMap ? (c=this.xyToCoordinates(this.mapWidth / 2, this.mapHeight / 2), b.zoomLongitudeC=c.longitude, b.zoomLatitudeC=c.latitude):(b.zoomX=0, b.zoomY=0), this.zoomInstantly = !0);
this.selectObject(this.dataProvider);
this.processAreas();
if(b=this.valueLegend) this.valueLegend=b = d.processObject(b, d.ValueLegend, this.theme), b.init(this, a);
this.objectList&&(a=this.objectList=d.processObject(this.objectList, d.ObjectList))&&(this.clearObjectList(), a.init(this));
this.dispDUpd();
this.updateSmallMap();
this.linkSet.toFront()
} else this.cleanChart()
},
hideGroup: function(a){
this.showHideGroup(a, !1)
},
showGroup: function(a){
this.showHideGroup(a, !0)
},
showHideGroup: function(a, b){
this.showHideReal(this.imagesProcessor.allObjects, a, b);
this.showHideReal(this.areasProcessor.allObjects, a, b);
this.showHideReal(this.linesProcessor.allObjects, a, b)
},
showHideReal: function(a, b, c){
var e;
for (e=0; e < a.length; e++){
var d=a[e];
if(d.groupId==b){
var g=d.displayObject;
g&&(c ? (d.hidden = !1, g.show()):(d.hidden = !0, g.hide()))
}}
},
makeObjectAccessible: function(a){
if(a.accessibleLabel){
var b=this.formatString(a.accessibleLabel, a);
a.displayObject&&this.makeAccessible(a.displayObject, b, "menuitem")
}},
update: function(){
if(d.hasSVG){
d.AmMap.base.update.call(this);
this.zoomControl&&this.zoomControl.update&&this.zoomControl.update();
for (var a=0, b=this.updatableImages.length; a < b; a++) this.updatableImages[a].update()
}},
animateMap: function(){
var a=this;
a.totalFrames=a.zoomDuration * d.updateRate;
a.totalFrames +=1;
a.frame=0;
a.tweenPercent=0;
a.balloon.hide(0);
setTimeout(function(){
a.updateSize.call(a)
}, 1E3 / d.updateRate)
},
updateSize: function(){
var a=this,
b=a.totalFrames;
a.preventHover = !0;
a.frame <=b ? (a.frame++, b=d.easeOutSine(0, a.frame, 0, 1, b), 1 <=b ? (b=1, a.preventHover = !1, a.wheelBusy = !1):window.requestAnimationFrame ? window.requestAnimationFrame(function(){
a.updateSize.call(a)
}):setTimeout(function(){
a.updateSize.call(a)
}, 1E3 / d.updateRate), .8 < b&&(a.preventHover = !1)):(b=1, a.preventHover = !1, a.wheelBusy = !1);
a.tweenPercent=b;
a.rescaleMapAndObjects()
},
rescaleMapAndObjects: function(){
var a=this.initialScale,
b=this.initialX,
c=this.initialY,
e=this.tweenPercent,
a=a + (this.finalScale - a) * e;
this.mapContainer.translate(b + (this.finalX - b) * e, c + (this.finalY - c) * e, a, !0);
if(this.areasSettings.adjustOutlineThickness){
for (var b=this.svgAreas, d=0; d < b.length; d++)(c=b[d])&&c.setAttr("stroke-width", this.areasSettings.outlineThickness / a / this.mapScale);
if(b=this.dataProvider.areas)
for (d=0; d < b.length; d++){
var c=b[d],
g=c.displayObject;
g&&g.setAttr("stroke-width", c.outlineThicknessReal / a / this.mapScale)
}}
this.rescaleObjects();
this.positionChanged();
this.updateSmallMap();
1==e&&this.fire({
type: "zoomCompleted",
chart: this
})
},
updateSmallMap: function(){
this.smallMap&&this.smallMap.update()
},
rescaleObjects: function(){
var a=this.mapContainer.scale,
b=this.imagesProcessor.objectsToResize,
c;
for (c=0; c < b.length; c++){
var d=b[c].image,
f=b[c].scale,
g=b[c].mapImage;
isNaN(g.selectedScaleReal)||g!=this.selectedObject||(g.tempScale=f, f *=g.selectedScaleReal);
d.translate(d.x, d.y, f / a, !0)
}
b=this.imagesProcessor.labelsToReposition;
for (c=0; c < b.length; c++) d=b[c], d.imageLabel&&this.imagesProcessor.positionLabel(d.imageLabel, d, d.labelPositionReal);
b=this.linesProcessor;
if(d=b.linesToResize)
for (c=0; c < d.length; c++) f=d[c], f.line.setAttr("stroke-width", f.thickness / a);
b=b.objectsToResize;
for (c=0; c < b.length; c++) d=b[c], d.translate(d.x, d.y, 1 / a, !0)
},
handleTouchEnd: function(a){
this.initialDistance=NaN;
this.mouseIsDown=this.isDragging = !1;
d.AmMap.base.handleTouchEnd.call(this, a)
},
handleMouseDown: function(a){
d.resetMouseOver();
this.mouseIsDown=this.mouseIsOver = !0;
this.balloon.hide(0);
a&&this.mouseIsOver&&a.preventDefault&&this.panEventsEnabled&&a.preventDefault();
if(this.chartCreated&&!this.preventHover&&(this.initialTouchZoom=this.zoomLevel(), this.dragMap&&(this.stopAnimation(), this.mapContainerClickX=this.mapContainer.x, this.mapContainerClickY=this.mapContainer.y), a||(a=window.event), a.shiftKey&&!0===this.developerMode&&this.getDevInfo(), a&&a.touches)){
var b=this.mouseX,
c=this.mouseY,
e=a.touches.item(1);
e&&this.panEventsEnabled&&this.boundingRect&&(a=e.clientX - this.boundingRect.left, e=e.clientY - this.boundingRect.top, this.middleXP=(b + (a - b) / 2) / this.realWidth, this.middleYP=(c + (e - c) / 2) / this.realHeight, this.initialDistance=Math.sqrt(Math.pow(a - b, 2) + Math.pow(e - c, 2)))
}},
stopDrag: function(){
this.isDragging = !1
},
handleReleaseOutside: function(){
if(d.isModern){
var a=this;
d.AmMap.base.handleReleaseOutside.call(a);
a.mouseIsDown = !1;
setTimeout(function(){
a.resetPinch.call(a)
}, 100);
if(!a.preventHover){
a.stopDrag();
var b=a.zoomControl;
b&&b.draggerUp&&b.draggerUp();
a.mapWasDragged = !1;
var b=a.mapContainer,
c=a.mapContainerClickX,
e=a.mapContainerClickY;
isNaN(c)||isNaN(e)||!(3 < Math.abs(b.x - c)||3 < Math.abs(b.y - e))||(a.mapWasDragged = !0, b={
type: "dragCompleted",
zoomX: a.zoomX(),
zoomY: a.zoomY(),
zoomLevel: a.zoomLevel(),
chart: a
}, a.fire(b));
(a.mouseIsOver&&!a.mapWasDragged&&!a.skipClick||a.wasTouched&&3 > Math.abs(a.mouseX - a.tmx)&&3 > Math.abs(a.mouseY - a.tmy))&&a.fire({
type: "click",
x: a.mouseX,
y: a.mouseY,
chart: a
});
a.mapContainerClickX=NaN;
a.mapContainerClickY=NaN;
a.objectWasClicked = !1;
a.zoomOnDoubleClick&&a.mouseIsOver&&(b=(new Date).getTime(), 200 > b - a.previousClickTime&&40 < b - a.previousClickTime&&a.doDoubleClickZoom(), a.previousClickTime=b)
}
a.wasTouched = !1
}},
resetPinch: function(){
this.mapWasPinched = !1
},
handleMouseMove: function(a){
var b=this;
d.AmMap.base.handleMouseMove.call(b, a);
if(!a||!a.touches||!b.tapToActivate||b.tapped){
b.panEventsEnabled&&b.mouseIsOver&&a && a.preventDefault&&a.preventDefault();
var c=b.previuosMouseX,
e=b.previuosMouseY,
f=b.mouseX,
g=b.mouseY,
h=b.zoomControl;
isNaN(c)&&(c=f);
isNaN(e)&&(e=g);
b.mouse2X=NaN;
b.mouse2Y=NaN;
a&&a.touches&&(a=a.touches.item(1))&&b.panEventsEnabled&&b.boundingRect&&(b.mouse2X=a.clientX - b.boundingRect.left, b.mouse2Y=a.clientY - b.boundingRect.top);
if(a=b.mapContainer){
var k=b.mouse2X,
l=b.mouse2Y;
b.pinchTO&&clearTimeout(b.pinchTO);
b.pinchTO=setTimeout(function(){
b.resetPinch.call(b)
}, 1E3);
var m=b.realHeight,
n=b.realWidth,
p=b.mapWidth,
r=b.mapHeight;
b.mouseIsDown&&b.dragMap&&(3 < Math.abs(b.previuosMouseX - b.mouseX)||3 < Math.abs(b.previuosMouseY - b.mouseY))&&(b.isDragging = !0);
if(!isNaN(k)){
b.stopDrag();
var t=Math.sqrt(Math.pow(k - f, 2) + Math.pow(l - g, 2)),
q=b.initialDistance;
isNaN(q)&&(q=Math.sqrt(Math.pow(k - f, 2) + Math.pow(l - g, 2)));
if(!isNaN(q)){
var k=b.initialTouchZoom * t / q,
k=d.fitToBounds(k, h.minZoomLevel, h.maxZoomLevel),
h=b.zoomLevel(),
q=b.middleXP,
l=b.middleYP,
t=m / r,
y=n / p,
q=(b.zoomX() - q * y) * (k / h) + q * y,
l=(b.zoomY() -
l * t) * (k / h) + l * t;
.1 < Math.abs(k - h)&&(b.zoomTo(k, q, l, !0), b.mapWasPinched = !0, clearTimeout(b.pinchTO))
}}
k=a.scale;
b.isDragging&&(b.balloon.hide(0), b.positionChanged(), c=a.x + (f - c), e=a.y + (g - e), b.preventDragOut&&(r=-r * k + m / 2 - b.diffY * b.mapScale * k, m=m / 2 - b.diffY * b.mapScale * k, c=d.fitToBounds(c, -p * k + n / 2, n / 2), e=d.fitToBounds(e, r, m)), isNaN(c)||isNaN(e)||(a.translate(c, e, k, !0), b.updateSmallMap()));
b.previuosMouseX=f;
b.previuosMouseY=g
}}
},
selectObject: function(a, b){
var c=this;
a||(a=c.dataProvider);
a.isOver = !1;
var e=a.linkToObject;
d.isString(e)&&(e=c.getObjectById(e));
a.useTargetsZoomValues&&e && (a.zoomX=e.zoomX, a.zoomY=e.zoomY, a.zoomLatitude=e.zoomLatitude, a.zoomLongitude=e.zoomLongitude, a.zoomLevel=e.zoomLevel);
var f=c.selectedObject;
f&&c.returnInitialColor(f);
c.selectedObject=a;
var g = !1,
h, k;
"MapArea"==a.objectType&&(a.autoZoomReal&&(g = !0), h=c.areasSettings.selectedOutlineColor, k=c.areasSettings.selectedOutlineThickness);
if(e&&!g&&(d.isString(e)&&(e=c.getObjectById(e)), isNaN(a.zoomLevel)&&isNaN(a.zoomX)&&isNaN(a.zoomY))){
if(c.extendMapData(e)) return;
c.selectObject(e);
return
}
c.allowMultipleDescriptionWindows||c.closeAllDescriptions();
clearTimeout(c.selectedObjectTimeOut);
clearTimeout(c.processObjectsTimeOut);
e=c.zoomDuration;
!g&&isNaN(a.zoomLevel)&&isNaN(a.zoomX)&&isNaN(a.zoomY) ? (c.showDescriptionAndGetUrl(), b||c.processObjects()):(c.selectedObjectTimeOut=setTimeout(function(){
c.showDescriptionAndGetUrl.call(c)
}, 1E3 * e + 200), c.showObjectsAfterZoom) ? b||(c.processObjectsTimeOut=setTimeout(function(){
c.processObjects.call(c)
}, 1E3 * e + 200)):b||c.processObjects();
e=a.displayObject;
g=a.selectedColorReal;
if("MapImage"==a.objectType){
h=c.imagesSettings.selectedOutlineColor;
k=c.imagesSettings.selectedOutlineThickness;
var e=a.image,
l=a.selectedScaleReal;
if(!isNaN(l)&&1!=l){
var m=a.scale;
isNaN(a.tempScale)||(m=a.tempScale);
isNaN(m)&&(m=1);
a.tempScale=m;
var n=a.displayObject;
n.translate(n.x, n.y, m * l, !0)
}}
if(e){
if(d.removeCN(c, e, "selected-object"), d.setCN(c, e, "selected-object"), a.bringForwardOnHover&&a.displayObject.toFront(), c.outlinesToFront(), !a.preserveOriginalAttributes){
e.setAttr("stroke", a.outlineColorReal);
void 0!==g&&e.setAttr("fill", g);
void 0!==h&&e.setAttr("stroke", h);
void 0!==k&&e.setAttr("stroke-width", k);
"MapLine"==a.objectType&&((l=a.lineSvg)&&l.setAttr("stroke", g), l=a.arrowSvg)&&(l.setAttr("fill", g), l.setAttr("stroke", g));
if(l=a.imageLabel) m=a.selectedLabelColorReal, void 0!==m&&l.setAttr("fill", m);
a.selectable||(e.setAttr("cursor", "default"), l&&l.setAttr("cursor", "default"))
}} else c.returnInitialColorReal(a);
if(e=a.groupId)
for (l=a.groupArray, l||(l=c.getGroupById(e), a.groupArray=l), m=0; m < l.length; m++)
if(n=l[m], n.isOver = !1, e=n.displayObject, "MapImage"==n.objectType&&(e=n.image), e){
var p=n.selectedColorReal;
void 0!==p&&e.setAttr("fill", p);
void 0!==h&&e.setAttr("stroke", h);
void 0!==k&&e.setAttr("stroke-width", k);
"MapLine"==n.objectType&&((e=n.lineSvg)&&e.setAttr("stroke", g), e=n.arrowSvg)&&(e.setAttr("fill", g), e.setAttr("stroke", g))
}
c.rescaleObjects();
c.zoomToSelectedObject();
f!=a&&c.fire({
type: "selectedObjectChanged",
chart: c
})
},
returnInitialColor: function(a, b){
this.returnInitialColorReal(a);
b&&(a.isFirst = !1);
if(this.selectedObject.bringForwardOnHover){
var c=this.selectedObject.displayObject;
c&&c.toFront()
}
if(c=a.groupId){
var c=this.getGroupById(c),
d;
for (d=0; d < c.length; d++) this.returnInitialColorReal(c[d]), b&&(c[d].isFirst = !1)
}
this.outlinesToFront()
},
outlinesToFront: function(){
if(this.outlines)
for (var a=0; a < this.outlines.length; a++) this.outlines[a].toFront()
},
closeAllDescriptions: function(){
this.descriptionsDiv.innerHTML=""
},
fireClosed: function(){
this.fire({
type: "descriptionClosed",
chart: this
})
},
returnInitialColorReal: function(a){
a.isOver = !1;
var b=a.displayObject;
if(b){
d.removeCN(this, b, "selected-object");
b.toPrevious();
if("MapImage"==a.objectType){
var c=a.tempScale;
isNaN(c)||b.translate(b.x, b.y, c, !0);
a.tempScale=NaN;
b=a.image
}
c=a.colorReal;
if("MapLine"==a.objectType){
var e=a.lineSvg;
e&&e.setAttr("stroke", c);
if(e=a.arrowSvg){
var f=a.arrowColor;
void 0===f&&(f=c);
e.setAttr("fill", f);
e.setAttr("stroke", f)
}}
var e=a.alphaReal,
f=a.outlineAlphaReal,
g=a.outlineThicknessReal,
h=a.outlineColorReal;
if(a.showAsSelected){
var c=a.selectedColorReal,
k, l;
"MapImage"==a.objectType&&(k=this.imagesSettings.selectedOutlineColor, l=this.imagesSettings.selectedOutlineThickness);
"MapArea"==a.objectType&&(k=this.areasSettings.selectedOutlineColor, l=this.areasSettings.selectedOutlineThickness);
void 0!==k&&(h=k);
void 0!==l&&(g=l)
}
"bubble"==a.type&&(c=void 0);
void 0!==c&&b.setAttr("fill", c);
if(k=a.image) k.setAttr("fill", c), k.setAttr("stroke", h), k.setAttr("stroke-width", g), k.setAttr("fill-opacity", e), k.setAttr("stroke-opacity", f);
"MapArea"==a.objectType&&(c=1, this.areasSettings.adjustOutlineThickness&&(c=this.zoomLevel() * this.mapScale), b.setAttr("stroke", h), b.setAttr("stroke-width", g / c), b.setAttr("fill-opacity", e), b.setAttr("stroke-opacity", f));
(c=a.pattern)&&b.pattern(c, this.mapScale, this.path);
(b=a.imageLabel)&&!a.labelInactive&&(a.showAsSelected&&void 0!==a.selectedLabelColor ? b.setAttr("fill", a.selectedLabelColor):b.setAttr("fill", a.labelColorReal))
}},
zoomToRectangle: function(a, b, c, e){
var f=this.realWidth,
g=this.realHeight,
h=this.mapSet.scale,
k=this.zoomControl,
f=d.fitToBounds(c / f > e / g ? .8 * f / (c * h) : .8 * g / (e * h), k.minZoomLevel, k.maxZoomLevel);
this.zoomToMapXY(f, (a + c / 2) * h, (b + e / 2) * h)
},
zoomToLatLongRectangle: function(a, b, c, e){
var f=this.dataProvider,
g=this.zoomControl,
h=Math.abs(c - a),
k=Math.abs(b - e),
l=Math.abs(f.rightLongitude - f.leftLongitude),
f=Math.abs(f.topLatitude - f.bottomLatitude),
g=d.fitToBounds(h / l > k / f ? .8 * l / h : .8 * f / k, g.minZoomLevel, g.maxZoomLevel);
this.zoomToLongLat(g, a + (c - a) / 2, e + (b - e) / 2)
},
getGroupById: function(a){
var b=[];
this.getGroup(this.imagesProcessor.allObjects, a, b);
this.getGroup(this.linesProcessor.allObjects, a, b);
this.getGroup(this.areasProcessor.allObjects, a, b);
return b
},
zoomToGroup: function(a){
a="object"==typeof a ? a:this.getGroupById(a);
var b, c, d, f, g;
for (g=0; g < a.length; g++){
var h=a[g].displayObject;
if(h){
var k=h.getBBox(),
h=k.y,
l=k.y + k.height,
m=k.x,
k=k.x + k.width;
if(h < b||isNaN(b)) b=h;
if(l > f||isNaN(f)) f=l;
if(m < c||isNaN(c)) c=m;
if(k > d||isNaN(d)) d=k
}}
c +=this.diffX;
d +=this.diffX;
f +=this.diffY;
b +=this.diffY;
this.zoomToRectangle(c, b, d - c, f - b)
},
getGroup: function(a, b, c){
if(a){
var d;
for (d=0; d < a.length; d++){
var f=a[d];
f.groupId==b&&c.push(f)
}}
},
zoomToStageXY: function(a, b, c, e){
if(!this.objectWasClicked){
var f=this.zoomControl;
a=d.fitToBounds(a, f.minZoomLevel, f.maxZoomLevel);
var f=this.zoomLevel(),
g=this.mapSet.getBBox();
b=this.xyToCoordinates((b - this.mapContainer.x) / f - g.x * this.mapScale, (c - this.mapContainer.y) / f - g.y * this.mapScale);
this.zoomToLongLat(a, b.longitude, b.latitude, e)
}},
zoomToLongLat: function(a, b, c,
d){
b=this.coordinatesToXY(b, c);
this.zoomToMapXY(a, b.x, b.y, d)
},
zoomToMapXY: function(a, b, c, d){
var f=this.mapWidth,
g=this.mapHeight;
this.zoomTo(a, -(b / f) * a + this.realWidth / f / 2, -(c / g) * a + this.realHeight / g / 2, d)
},
zoomToObject: function(a){
if(a){
var b=a.zoomLatitude,
c=a.zoomLongitude;
isNaN(a.zoomLatitudeC)||(b=a.zoomLatitudeC);
isNaN(a.zoomLongitudeC)||(c=a.zoomLongitudeC);
var e=a.zoomLevel,
f=this.zoomInstantly,
g=a.zoomX,
h=a.zoomY,
k=this.realWidth,
l=this.realHeight;
isNaN(e)||(isNaN(b)||isNaN(c) ? this.zoomTo(e, g, h, f):this.zoomToLongLat(e, c, b, f));
this.zoomInstantly = !1;
"MapImage"==a.objectType&&isNaN(a.zoomX)&&isNaN(a.zoomY)&&isNaN(a.zoomLatitude)&&isNaN(a.zoomLongitude)&&!isNaN(a.latitude)&&!isNaN(a.longitude)&&this.zoomToLongLat(a.zoomLevel, a.longitude, a.latitude);
"MapArea"==a.objectType&&(f=a.displayObject.getBBox(), g=this.mapScale, b=(f.x + this.diffX) * g, c=(f.y + this.diffY) * g, e=f.width * g, f=f.height * g, k=a.autoZoomReal&&isNaN(a.zoomLevel) ? e / k > f / l ? .8 * k / e : .8 * l / f:a.zoomLevel, l=this.zoomControl, k=d.fitToBounds(k, l.minZoomLevel, l.maxZoomLevel), isNaN(a.zoomX)&&isNaN(a.zoomY)&&isNaN(a.zoomLatitude)&&isNaN(a.zoomLongitude)&&this.zoomToMapXY(k, b + e / 2, c + f / 2));
this.zoomControl.update()
}},
zoomToSelectedObject: function(){
this.zoomToObject(this.selectedObject)
},
zoomTo: function(a, b, c, e){
var f=this.zoomControl;
a=d.fitToBounds(a, f.minZoomLevel, f.maxZoomLevel);
f=this.zoomLevel();
isNaN(b)&&(b=this.realWidth / this.mapWidth, b=(this.zoomX() - .5 * b) * (a / f) + .5 * b);
isNaN(c)&&(c=this.realHeight / this.mapHeight, c=(this.zoomY() - .5 * c) * (a / f) + .5 * c);
this.stopAnimation();
isNaN(a)||(f=this.mapContainer, this.initialX=f.x, this.initialY=f.y, this.initialScale=f.scale, this.finalX=this.mapWidth * b, this.finalY=this.mapHeight * c, this.finalScale=a, this.finalX!=this.initialX||this.finalY!=this.initialY||this.finalScale!=this.initialScale ? e ? (this.tweenPercent=1, this.rescaleMapAndObjects(), this.wheelBusy = !1):this.animateMap():this.wheelBusy = !1)
},
loadXml: function(a){
var b;
window.XMLHttpRequest&&(b=new XMLHttpRequest);
b.overrideMimeType&&b.overrideMimeType("text/xml");
b.open("GET", a, !1);
b.send();
this.parseXMLObject(b.responseXML);
this.svgData&&this.buildEverything()
},
stopAnimation: function(){
this.frame=this.totalFrames
},
processObjects: function(a){
var b=this.selectedObject;
if(0 < b.images.length||0 < b.areas.length||0 < b.lines.length||b==this.dataProvider||a){
a=this.container;
var c=this.stageImagesContainer;
c&&c.remove();
this.stageImagesContainer=c = a.set();
this.trendLinesSet.push(c);
var d=this.stageLinesContainer;
d&&d.remove();
this.stageLinesContainer=d = a.set();
this.trendLinesSet.push(d);
var f=this.mapImagesContainer;
f&&f.remove();
this.mapImagesContainer=f = a.set();
this.mapContainer.push(f);
var g=this.mapLinesContainer;
g&&g.remove();
this.mapLinesContainer=g = a.set();
this.mapContainer.push(g);
this.linesAboveImages ? (f.toFront(), c.toFront(), g.toFront(), d.toFront()):(g.toFront(), d.toFront(), f.toFront(), c.toFront());
b&&(this.imagesProcessor.reset(), this.linesProcessor.reset(), this.linesAboveImages ? (this.imagesProcessor.process(b), this.linesProcessor.process(b)):(this.linesProcessor.process(b), this.imagesProcessor.process(b)));
this.rescaleObjects()
}},
processAreas: function(){
this.areasProcessor.process(this.dataProvider)
},
buildSVGMap: function(){
d.remove(this.mapSet);
var a=this.svgData.g.path,
b=this.container,
c=b.set();
this.svgAreas=[];
this.svgAreasById={};
void 0===a.length&&(a=[a]);
var e;
for (e=0; e < a.length; e++){
var f=a[e],
g=f.d,
h=f.title;
f.titleTr&&(h=f.titleTr);
var k=b.path(g);
k.id=f.id;
if(this.areasSettings.preserveOriginalAttributes){
k.customAttr={};
for (var l in f) "d"!=l&&"id"!=l&&"title"!=l&&(k.customAttr[l]=f[l])
}
f.outline&&(k.outline = !0);
k.path=g;
this.svgAreasById[f.id]={
area: k,
title: h,
className: f["class"]
};
this.svgAreas.push(k);
c.push(k)
}
this.mapSet=c;
this.mapContainer.push(c);
this.resizeMap()
},
centerAlign: function(){},
setProjection: function(a){
this.projection=a;
this.chartCreated = !1;
this.buildEverything()
},
addObjectEventListeners: function(a, b){
var c=this;
a.mousedown(function(a){
c.mouseDownMapObject(b, a)
}).mouseup(function(a){
c.clickMapObject(b, a)
}).mouseover(function(a){
c.balloonX=NaN;
c.rollOverMapObject(b, !0, a)
}).mouseout(function(a){
c.balloonX=NaN;
c.rollOutMapObject(b, a)
}).touchend(function(a){
4 > Math.abs(c.mouseX - c.tmx)&&4 > Math.abs(c.mouseY - c.tmy)&&(c.tapped = !0);
c.tapToActivate&&!c.tapped||c.mapWasDragged||c.mapWasPinched||(c.balloonX=NaN, c.rollOverMapObject(b, !0, a), c.clickMapObject(b, a))
}).touchstart(function(a){
c.tmx=c.mouseX;
c.tmy=c.mouseY;
c.mouseDownMapObject(b, a)
}).keyup(function(a){
13==a.keyCode&&c.clickMapObject(b, a)
})
},
checkIfSelected: function(a){
var b=this.selectedObject;
if(b==a) return !0;
if(b=b.groupId){
var b=this.getGroupById(b),
c;
for (c=0; c < b.length; c++)
if(b[c]==a) return !0
}
return !1
},
clearMap: function(){
this.chartDiv.innerHTML="";
this.clearObjectList()
},
clearObjectList: function(){
var a=this.objectList;
a&&a.div&&(a.div.innerHTML="")
},
checkIfLast: function(a){
if(a){
var b=a.parentNode;
if(b&&b.lastChild==a) return !0
}
return !1
},
showAsRolledOver: function(a){
var b=a.displayObject;
if(!a.showAsSelected&&b && !a.isOver){
b.node.onmouseout=function(){};
b.node.onmouseover=function(){};
b.node.onclick=function(){};
!a.isFirst&&a.bringForwardOnHover&&(b.toFront(), a.isFirst = !0);
var c=a.rollOverColorReal,
e;
a.preserveOriginalAttributes&&(c=void 0);
"bubble"==a.type&&(c=void 0);
void 0==c&&(isNaN(a.rollOverBrightnessReal)||(c=d.adjustLuminosity(a.colorReal, a.rollOverBrightnessReal / 100)));
if(void 0!=c)
if("MapImage"==a.objectType)(e=a.image)&&e.setAttr("fill", c);
else if("MapLine"==a.objectType){
if((e=a.lineSvg)&&e.setAttr("stroke", c), e=a.arrowSvg) e.setAttr("fill", c), e.setAttr("stroke", c)
} else b.setAttr("fill", c);
(c=a.imageLabel)&&!a.labelInactive&&(e=a.labelRollOverColorReal, void 0!=e&&c.setAttr("fill", e));
c=a.rollOverOutlineColorReal;
void 0!=c&&("MapImage"==a.objectType ? (e=a.image)&&e.setAttr("stroke", c):b.setAttr("stroke", c));
"MapImage"==a.objectType ? (c=this.imagesSettings.rollOverOutlineThickness, (e=a.image)&&(isNaN(c)||e.setAttr("stroke-width", c))):(c=this.areasSettings.rollOverOutlineThickness, isNaN(c)||b.setAttr("stroke-width", c));
if("MapArea"==a.objectType){
c=this.areasSettings;
e=a.rollOverAlphaReal;
isNaN(e)||b.setAttr("fill-opacity", e);
e=c.rollOverOutlineAlpha;
isNaN(e)||b.setAttr("stroke-opacity", e);
e=1;
this.areasSettings.adjustOutlineThickness&&(e=this.zoomLevel() * this.mapScale);
var f=c.rollOverOutlineThickness;
isNaN(f)||b.setAttr("stroke-width", f / e);
(c=c.rollOverPattern)&&b.pattern(c, this.mapScale, this.path)
}
"MapImage"==a.objectType&&(c=a.rollOverScaleReal, isNaN(c)||1==c||(e=b.scale, isNaN(e)&&(e=1), a.tempScale=e, b.translate(b.x, b.y, e * c, !0)));
this.useHandCursorOnClickableOjects&&this.checkIfClickable(a)&&b.setAttr("cursor", "pointer");
a.mouseEnabled&&this.addObjectEventListeners(b, a);
a.isOver = !0
}
this.outlinesToFront()
},
rollOverMapObject: function(a, b, c){
if(this.chartCreated){
this.handleMouseMove();
var d=this.previouslyHovered;
d&&d!=a ? (!1===this.checkIfSelected(d)&&(this.returnInitialColor(d, !0), this.previouslyHovered=null), this.balloon.hide(0)):clearTimeout(this.hoverInt);
if(!this.preventHover){
if(!1===this.checkIfSelected(a)){
if(d=a.groupId){
var d=this.getGroupById(d),
f;
for (f=0; f < d.length; f++) d[f]!=a&&this.showAsRolledOver(d[f])
}
this.showAsRolledOver(a)
} else(d=a.displayObject)&&(this.allowClickOnSelectedObject ? d.setAttr("cursor", "pointer"):d.setAttr("cursor", "default"));
this.showDescriptionOnHover ? this.showDescription(a):!this.showBalloonOnSelectedObject&&this.checkIfSelected(a)||!1===b||(f=this.balloon, this.balloon.fixedPosition = !1, b=a.colorReal, d="", void 0!==b&&this.useObjectColorForBalloon||(b=f.fillColor), (f=a.balloonTextReal)&&(d=this.formatString(f, a)), this.balloonLabelFunction&&(d=this.balloonLabelFunction(a, this)), d&&""!==d&&this.showBalloon(d, b, !1, this.balloonX, this.balloonY));
this.fire({
type: "rollOverMapObject",
mapObject: a,
chart: this,
event: c
});
this.previouslyHovered=a
}}
},
longitudeToX: function(a){
return (this.longitudeToCoordinate(a) + this.diffX * this.mapScale) * this.zoomLevel() + this.mapContainer.x
},
latitudeToY: function(a){
return (this.latitudeToCoordinate(a) + this.diffY * this.mapScale) * this.zoomLevel() + this.mapContainer.y
},
latitudeToStageY: function(a){
return this.latitudeToCoordinate(a) * this.zoomLevel() +
this.mapContainer.y + this.diffY * this.mapScale
},
longitudeToStageX: function(a){
return this.longitudeToCoordinate(a) * this.zoomLevel() + this.mapContainer.x + this.diffX * this.mapScale
},
stageXToLongitude: function(a){
a=(a - this.mapContainer.x) / this.zoomLevel();
return this.coordinateToLongitude(a)
},
stageYToLatitude: function(a){
a=(a - this.mapContainer.y) / this.zoomLevel();
return this.coordinateToLatitude(a)
},
rollOutMapObject: function(a, b){
this.hideBalloon();
a&&this.chartCreated&&a.isOver&&(this.checkIfSelected(a) ||
this.returnInitialColor(a), this.fire({
type: "rollOutMapObject",
mapObject: a,
chart: this,
event: b
}))
},
formatString: function(a, b){
var c=this.nf,
e=this.pf,
f=b.title;
b.titleTr&&(f=b.titleTr);
void 0==f&&(f="");
var g=b.value,
g=isNaN(g) ? "":d.formatNumber(g, c),
c=b.percents,
c=isNaN(c) ? "":d.formatNumber(c, e),
e=b.description;
void 0==e&&(e="");
var h=b.customData;
void 0==h&&(h="");
return a=d.massReplace(a, {
"[[title]]": f,
"[[value]]": g,
"[[percent]]": c,
"[[description]]": e,
"[[customData]]": h
})
},
mouseDownMapObject: function(a, b){
this.fire({
type: "mouseDownMapObject",
mapObject: a,
chart: this,
event: b
})
},
clickMapObject: function(a, b){
var c=this;
b&&(b.touches||isNaN(a.zoomLevel)&&isNaN(a.zoomX)&&isNaN(a.zoomY)||c.hideBalloon());
if(c.chartCreated&&!c.preventHover&&c.checkTouchDuration(b)&&!c.mapWasDragged&&c.checkIfClickable(a)&&!c.mapWasPinched){
c.selectObject(a);
var d=c.zoomLevel(),
f=c.mapSet.getBBox(),
d=c.xyToCoordinates((c.mouseX - c.mapContainer.x) / d - f.x * c.mapScale, (c.mouseY - c.mapContainer.y) / d - f.y * c.mapScale);
c.clickLatitude =
d.latitude;
c.clickLongitude=d.longitude;
b&&b.touches&&setTimeout(function(){
c.showBalloonAfterZoom.call(c)
}, 1E3 * c.zoomDuration);
c.fire({
type: "clickMapObject",
mapObject: a,
chart: c,
event: b
});
c.objectWasClicked = !0
}},
showBalloonAfterZoom: function(){
var a=this.clickLongitude,
b=this.clickLatitude,
c=this.selectedObject;
"MapImage"!=c.objectType||isNaN(c.longitude)||(a=c.longitude, b=c.latitude);
a=this.coordinatesToStageXY(a, b);
this.balloonX=a.x;
this.balloonY=a.y;
this.rollOverMapObject(this.selectedObject, !0)
},
checkIfClickable: function(a){
var b=this.allowClickOnSelectedObject;
return this.selectedObject==a&&b ? !0:this.selectedObject!=a||b ? !0===a.selectable||"MapArea"==a.objectType&&a.autoZoomReal||a.url||a.linkToObject||0 < a.images.length||0 < a.lines.length||!isNaN(a.zoomLevel)||!isNaN(a.zoomX)||!isNaN(a.zoomY)||a.description ? !0:!1:!1
},
resizeMap: function(){
var a=this.mapSet;
if(a){
var b=1,
c=a.getBBox(),
d=this.realWidth,
f=this.realHeight,
g=c.width,
c=c.height;
0 < g&&0 < c&&(this.fitMapToContainer&&(b=g / d > c / f ? d / g:f / c), a.translate(0, 0, b, !0), this.mapScale=b, this.mapHeight=c * b, this.mapWidth=g * b)
}},
zoomIn: function(){
var a=this.zoomLevel() * this.zoomControl.zoomFactor;
this.zoomTo(a)
},
zoomOut: function(){
var a=this.zoomLevel() / this.zoomControl.zoomFactor;
this.zoomTo(a)
},
moveLeft: function(){
var a=this.zoomX() + this.zoomControl.panStepSize;
this.zoomTo(this.zoomLevel(), a, this.zoomY())
},
moveRight: function(){
var a=this.zoomX() - this.zoomControl.panStepSize;
this.zoomTo(this.zoomLevel(), a, this.zoomY())
},
moveUp: function(){
var a =
this.zoomY() + this.zoomControl.panStepSize;
this.zoomTo(this.zoomLevel(), this.zoomX(), a)
},
moveDown: function(){
var a=this.zoomY() - this.zoomControl.panStepSize;
this.zoomTo(this.zoomLevel(), this.zoomX(), a)
},
zoomX: function(){
return this.mapSet ? Math.round(1E4 * this.mapContainer.x / this.mapWidth) / 1E4:NaN
},
zoomY: function(){
return this.mapSet ? Math.round(1E4 * this.mapContainer.y / this.mapHeight) / 1E4:NaN
},
goHome: function(){
this.selectObject(this.dataProvider);
this.fire({
type: "homeButtonClicked",
chart: this
})
},
zoomLevel: function(){
return Math.round(1E5 *
this.mapContainer.scale) / 1E5
},
showDescriptionAndGetUrl: function(){
var a=this.selectedObject;
if(a){
this.showDescription();
var b=a.url;
if(b) d.getURL(b, a.urlTarget);
else if(b=a.linkToObject){
if(d.isString(b)){
var c=this.getObjectById(b);
if(c){
this.selectObject(c);
return
}}
b&&a.passZoomValuesToTarget&&(b.zoomLatitude=this.zoomLatitude(), b.zoomLongitude=this.zoomLongitude(), b.zoomLevel=this.zoomLevel());
this.extendMapData(b)||this.selectObject(b)
}}
},
extendMapData: function(a){
var b=a.objectType;
if("MapImage"!=b&&"MapArea"!=b&&"MapLine"!=b) return d.extend(a, new d.MapData, !0), this.dataProvider=a, this.zoomInstantly = !0, this.validateData(), !0
},
showDescription: function(a){
a||(a=this.selectedObject);
this.allowMultipleDescriptionWindows||this.closeAllDescriptions();
if(a.description){
var b=a.descriptionWindow;
b&&b.close();
b=new d.DescriptionWindow;
a.descriptionWindow=b;
var c=a.descriptionWindowWidth,
e=a.descriptionWindowHeight,
f=a.descriptionWindowLeft,
g=a.descriptionWindowTop,
h=a.descriptionWindowRight,
k=a.descriptionWindowBottom;
isNaN(h)||(f=this.realWidth - h);
isNaN(k)||(g=this.realHeight - k);
var l=a.descriptionWindowX;
isNaN(l)||(f=l);
l=a.descriptionWindowY;
isNaN(l)||(g=l);
isNaN(f)&&(f=this.mouseX, f=f > this.realWidth / 2 ? f - c - 20:f + 20);
isNaN(g)&&(g=this.mouseY);
b.maxHeight=e;
l=a.title;
a.titleTr&&(l=a.titleTr);
b.show(this, this.descriptionsDiv, a.description, l);
a=b.div.style;
a.position="absolute";
a.width=c + "px";
a.maxHeight=e + "px";
isNaN(k)||(g -=b.div.offsetHeight);
isNaN(h)||(f -=b.div.offsetWidth);
a.left=f + "px";
a.top=g + "px"
}},
parseXMLObject: function(a){
var b={
root: {}};
this.parseXMLNode(b, "root", a);
this.svgData=b.root.svg;
this.getBounds()
},
getBounds: function(){
var a=this.dataProvider;
try {
var b=this.svgData.defs["amcharts:ammap"];
a.leftLongitude=Number(b.leftLongitude);
a.rightLongitude=Number(b.rightLongitude);
a.topLatitude=Number(b.topLatitude);
a.bottomLatitude=Number(b.bottomLatitude);
a.projection=b.projection;
var c=b.wrappedLongitudes;
c&&(a.rightLongitude +=360);
a.wrappedLongitudes=c
} catch (d){}},
recalcLongitude: function(a){
return this.dataProvider.wrappedLongitudes ? a < this.dataProvider.leftLongitude ? Number(a) + 360:a : a
},
latitudeToCoordinate: function(a){
var b, c=this.dataProvider;
if(this.mapSet){
b=c.topLatitude;
var d=c.bottomLatitude;
"mercator"==c.projection&&(a=this.mercatorLatitudeToCoordinate(a), b=this.mercatorLatitudeToCoordinate(b), d=this.mercatorLatitudeToCoordinate(d));
b=(a - b) / (d - b) * this.mapHeight
}
return b
},
longitudeToCoordinate: function(a){
a=this.recalcLongitude(a);
var b, c=this.dataProvider;
this.mapSet&&(b=c.leftLongitude, b=(a - b) / (c.rightLongitude - b) * this.mapWidth);
return b
},
mercatorLatitudeToCoordinate: function(a){
89.5 < a&&(a=89.5); - 89.5 > a&&(a=-89.5);
a=d.degreesToRadians(a);
return d.radiansToDegrees(.5 * Math.log((1 + Math.sin(a)) / (1 - Math.sin(a))) / 2)
},
zoomLatitude: function(){
if(this.mapContainer){
var a=this.mapSet.getBBox(),
b=(-this.mapContainer.x + this.previousWidth / 2) / this.zoomLevel() - a.x * this.mapScale,
a=(-this.mapContainer.y + this.previousHeight / 2) / this.zoomLevel() - a.y * this.mapScale;
return this.xyToCoordinates(b, a).latitude
}},
zoomLongitude: function(){
if(this.mapContainer){
var a =
this.mapSet.getBBox(),
b=(-this.mapContainer.x + this.previousWidth / 2) / this.zoomLevel() - a.x * this.mapScale,
a=(-this.mapContainer.y + this.previousHeight / 2) / this.zoomLevel() - a.y * this.mapScale;
return this.xyToCoordinates(b, a).longitude
}},
getAreaCenterLatitude: function(a){
a=a.displayObject.getBBox();
var b=this.mapScale,
c=this.mapSet.getBBox();
return this.xyToCoordinates((a.x + a.width / 2 + this.diffX) * b - c.x * b, (a.y + a.height / 2 + this.diffY) * b - c.y * b).latitude
},
getAreaCenterLongitude: function(a){
a=a.displayObject.getBBox();
var b=this.mapScale,
c=this.mapSet.getBBox();
return this.xyToCoordinates((a.x + a.width / 2 + this.diffX) * b - c.x * b, (a.y + a.height / 2 + this.diffY) * b - c.y * b).longitude
},
milesToPixels: function(a){
var b=this.dataProvider;
return this.mapWidth / (b.rightLongitude - b.leftLongitude) * a / 69.172
},
kilometersToPixels: function(a){
var b=this.dataProvider;
return this.mapWidth / (b.rightLongitude - b.leftLongitude) * a / 111.325
},
handleBackgroundClick: function(){
if(this.backgroundZoomsToTop&&!this.mapWasDragged){
var a=this.dataProvider;
if(this.checkIfClickable(a)) this.clickMapObject(a);
else {
var b=a.zoomX,
c=a.zoomY,
d=a.zoomLongitude,
f=a.zoomLatitude,
a=a.zoomLevel;
isNaN(b)||isNaN(c)||this.zoomTo(a, b, c);
isNaN(d)||isNaN(f)||this.zoomToLongLat(a, d, f, !0)
}}
},
parseXMLNode: function(a, b, c, d){
void 0===d&&(d="");
var f, g, h;
if(c){
var k=c.childNodes.length;
for (f=0; f < k; f++){
g=c.childNodes[f];
var l=g.nodeName,
m=g.nodeValue ? this.trim(g.nodeValue):"",
n = !1;
g.attributes&&0 < g.attributes.length&&(n = !0);
if(0!==g.childNodes.length||""!==m||!1!==n)
if(3==g.nodeType||4==g.nodeType){
if(""!==m){
g=0;
for (h in a[b]) a[b].hasOwnProperty(h)&&g++;
g ? a[b]["#text"]=m:a[b]=m
}}else if(1==g.nodeType){
var p;
void 0!==a[b][l] ? void 0===a[b][l].length ? (p=a[b][l], a[b][l]=[], a[b][l].push(p), a[b][l].push({}), p=a[b][l][1]):"object"==typeof a[b][l]&&(a[b][l].push({}), p=a[b][l][a[b][l].length - 1]):(a[b][l]={}, p=a[b][l]);
if(g.attributes&&g.attributes.length)
for (m=0; m < g.attributes.length; m++) p[g.attributes[m].name]=g.attributes[m].value;
void 0!==a[b][l].length ? this.parseXMLNode(a[b][l], a[b][l].length - 1, g, d + "  "):this.parseXMLNode(a[b], l, g, d + "  ")
}}
g=0;
c="";
for (h in a[b]) "#text"==h ? c=a[b][h]:g++;
0===g&&void 0===a[b].length&&(a[b]=c)
}},
doDoubleClickZoom: function(){
if(!this.mapWasDragged){
var a=this.zoomLevel() * this.zoomControl.zoomFactor;
this.zoomToStageXY(a, this.mouseX, this.mouseY)
}},
getDevInfo: function(){
var a=this.zoomLevel(),
b=this.mapSet.getBBox(),
b=this.xyToCoordinates((this.mouseX - this.mapContainer.x) / a - b.x * this.mapScale, (this.mouseY - this.mapContainer.y) / a - b.y * this.mapScale),
a={
chart: this,
type: "writeDevInfo",
zoomLevel: a,
zoomX: this.zoomX(),
zoomY: this.zoomY(),
zoomLatitude: this.zoomLatitude(),
zoomLongitude: this.zoomLongitude(),
latitude: b.latitude,
longitude: b.longitude,
left: this.mouseX,
top: this.mouseY,
right: this.realWidth - this.mouseX,
bottom: this.realHeight - this.mouseY,
percentLeft: Math.round(this.mouseX / this.realWidth * 100) + "%",
percentTop: Math.round(this.mouseY / this.realHeight * 100) + "%",
percentRight: Math.round((this.realWidth - this.mouseX) / this.realWidth * 100) + "%",
percentBottom: Math.round((this.realHeight -
this.mouseY) / this.realHeight * 100) + "%"
},
b="zoomLevel:" + a.zoomLevel + ", zoomLongitude:" + a.zoomLongitude + ", zoomLatitude:" + a.zoomLatitude + "\n",
b=b + ("zoomX:" + a.zoomX + ", zoomY:" + a.zoomY + "\n"),
b=b + ("latitude:" + a.latitude + ", longitude:" + a.longitude + "\n"),
b=b + ("left:" + a.left + ", top:" + a.top + "\n"),
b=b + ("right:" + a.right + ", bottom:" + a.bottom + "\n"),
b=b + ("left:" + a.percentLeft + ", top:" + a.percentTop + "\n"),
b=b + ("right:" + a.percentRight + ", bottom:" + a.percentBottom + "\n");
a.str=b;
this.fire(a);
return a
},
getXY: function(a,
b, c){
void 0!==a&&(-1!=String(a).indexOf("%") ? (a=Number(a.split("%").join("")), c&&(a=100 - a), a=Number(a) * b / 100):c&&(a=b - a));
return a
},
getObjectById: function(a){
var b=this.dataProvider;
if(b.areas){
var c=this.getObject(a, b.areas);
if(c) return c
}
if(c=this.getObject(a, b.images)) return c;
if(a=this.getObject(a, b.lines)) return a
},
getObject: function(a, b){
if(b){
var c;
for (c=0; c < b.length; c++){
var d=b[c];
if(d.id==a) return d;
if(d.areas){
var f=this.getObject(a, d.areas);
if(f) return f
}
if(f=this.getObject(a, d.images)) return f;
if(d=this.getObject(a, d.lines)) return d
}}
},
parseData: function(){
var a=this.dataProvider;
this.processObject(a.areas, a, "area");
this.processObject(a.images, a, "image");
this.processObject(a.lines, a, "line")
},
processObject: function(a, b, c){
if(a){
var e;
for (e=0; e < a.length; e++){
var f=a[e];
f.parentObject=b;
"area"==c&&d.extend(f, new d.MapArea(this.theme), !0);
"image"==c&&(f=d.extend(f, new d.MapImage(this.theme), !0));
"line"==c&&(f=d.extend(f, new d.MapLine(this.theme), !0));
a[e]=f;
f.areas&&this.processObject(f.areas, f, "area");
f.images&&this.processObject(f.images, f, "image");
f.lines&&this.processObject(f.lines, f, "line")
}}
},
positionChanged: function(){
var a={
type: "positionChanged",
zoomX: this.zoomX(),
zoomY: this.zoomY(),
zoomLevel: this.zoomLevel(),
chart: this
};
this.fire(a)
},
getX: function(a, b){
return this.getXY(a, this.realWidth, b)
},
getY: function(a, b){
return this.getXY(a, this.realHeight, b)
},
trim: function(a){
if(a){
var b;
for (b=0; b < a.length; b++)
if(-1===" \n\r\t\f\x0B\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000".indexOf(a.charAt(b))){
a=a.substring(b);
break
}
for (b=a.length - 1; 0 <=b; b--)
if(-1===" \n\r\t\f\x0B\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000".indexOf(a.charAt(b))){
a=a.substring(0, b + 1);
break
}
return -1===" \n\r\t\f\x0B\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000".indexOf(a.charAt(0)) ? a:""
}},
destroy: function(){
d.AmMap.base.destroy.call(this)
},
x2c: function(a){
var b=this.dataProvider.leftLongitude;
return Math.round(this.unscaledMapWidth * (a - b) / (this.dataProvider.rightLongitude - b) * 100) / 100
},
y2c: function(a){
var b=this.dataProvider.topLatitude;
return Math.round(this.unscaledMapHeight * (a - b) / (this.dataProvider.bottomLatitude - b) * 100) / 100
},
normalize: function(a){
if(!a.pathsArray){
var b;
if(a.normalized) b=a.normalized;
else {
var c=d.normalizePath(a.node);
b=a.node.getAttribute("d");
a.normalized=b;
c.maxX > this.maxMapX&&(this.maxMapX=c.maxX);
c.minX < this.minMapX&&(this.minMapX=c.minX);
c.maxY > this.maxMapY&&(this.maxMapY=c.maxY);
c.minY < this.minMapY &&
(this.minMapY=c.minY)
}
a.node.setAttribute("d", b)
}},
redraw: function(a){
var b=a.normalized,
b=b.split(" Z").join(""),
b=b.split("M");
a.pathsArray=[];
for (var c=0; c < b.length; c++){
var d=b[c];
if(d){
for (var d=d.split("L"), f=[], g=0; g < d.length; g++)
if(d[g]){
var h=d[g].split(" "),
h=this.xyToCoordinates(Number(h[1]) - this.minMapX, Number(h[2]) - this.minMapY, this.dpProjectionFunction, this.sourceMapWidth, this.sourceMapHeight);
f.push([h.longitude, h.latitude])
}
a.pathsArray.push(f)
}}
b="";
for (c=0; c < a.pathsArray.length; c++) b +=this.redrawArea(a.pathsArray[c]);
a.node.setAttribute("d", b);
a.path=b
},
redrawArea: function(a){
for (var b = !1, c="", e=0; e < a.length; e++){
var f=a[e][0],
g=a[e][1],
h=d.degreesToRadians(a[e][0]),
k=d.degreesToRadians(a[e][1]),
k=this.projectionFunction(h, k),
h=d.roundTo(this.x2c(d.radiansToDegrees(k[0])), 3),
k=d.roundTo(this.y2c(d.radiansToDegrees(k[1])), 3);
h < this.minMapXX&&(this.minMapXX=h, this.leftLongLat={
longitude: f,
latitude: g
});
h > this.maxMapXX&&(this.maxMapXX=h, this.rightLongLat={
longitude: f,
latitude: g
});
k < this.minMapYY&&(this.minMapYY=k, this.topLongLat={
longitude: f,
latitude: g
});
k > this.maxMapYY&&(this.maxMapYY=k, this.bottomLongLat={
longitude: f,
latitude: g
});
b ? c +=" L ":(c +=" M ", b = !0);
c +=h + " " + k
}
return c + " Z "
},
normalizeMap: function(){
var a=d.degreesToRadians(this.dataProvider.leftLongitude),
b=d.degreesToRadians(this.dataProvider.rightLongitude),
c=d.degreesToRadians(this.dataProvider.topLatitude),
e=d.degreesToRadians(this.dataProvider.bottomLatitude),
f=a + (b - a) / 2,
g=c + (e - c) / 2,
h=this.dpProjectionFunction(f,
c)[1],
k=this.dpProjectionFunction(f, e)[1],
l=this.dpProjectionFunction(a, g)[0],
m=this.dpProjectionFunction(b, g)[0],
c=d.equirectangular(f, c),
e=d.equirectangular(f, e),
h=(c[1] - e[1]) / (h - k),
a=d.equirectangular(a, g),
b=d.equirectangular(b, g),
l=(a[0] - b[0]) / (l - m);
this.minMapX=Infinity;
this.maxMapX=-Infinity;
this.minMapY=Infinity;
this.maxMapY=-Infinity;
for (m=0; m < this.svgAreas.length; m++) this.normalize(this.svgAreas[m]);
this.sourceMapHeight=Math.abs(this.maxMapY - this.minMapY);
this.sourceMapWidth=Math.abs(this.maxMapX -
this.minMapX);
this.unscaledMapWidth=this.sourceMapWidth * l;
this.unscaledMapHeight=this.sourceMapHeight * h;
this.diffY=this.diffX=0
},
fixMapPosition: function(){
var a=d.degreesToRadians(this.dataProvider.leftLongitude),
b=d.degreesToRadians(this.dataProvider.rightLongitude),
c=d.degreesToRadians(this.dataProvider.topLatitude),
e=d.degreesToRadians(this.dataProvider.bottomLatitude),
f=a + (b - a) / 2,
g=c + (e - c) / 2,
h=this.dpProjectionFunction(f, c)[1],
k=this.dpProjectionFunction(f, e)[1],
l=this.dpProjectionFunction(a,
g)[0],
m=this.dpProjectionFunction(b, g)[0];
this.sourceMapHeight=this.mapHeight / this.mapScale;
this.sourceMapWidth=this.mapWidth / this.mapScale;
this.unscaledMapWidth=(a - b) / (l - m) * this.sourceMapWidth;
this.unscaledMapHeight=(c - e) / (h - k) * this.sourceMapHeight;
b=this.coordinatesToXY(d.radiansToDegrees(f), d.radiansToDegrees(c));
a=this.coordinatesToXY(d.radiansToDegrees(a), d.radiansToDegrees(g));
c=g = Infinity;
for (e=0; e < this.svgAreas.length; e++) f=this.svgAreas[e].getBBox(), f.y < g&&(g=f.y), f.x < c&&(c=f.x);
this.diffY =
b.y / this.mapScale - g;
this.diffX=a.x / this.mapScale - c;
for (e=0; e < this.svgAreas.length; e++) this.svgAreas[e].translate(this.diffX, this.diffY)
},
changeProjection: function(){
this.minMapXX=Infinity;
this.maxMapXX=-Infinity;
this.minMapYY=Infinity;
this.maxMapYY=-Infinity;
this.projectionChanged = !1;
for (var a=0; a < this.svgAreas.length; a++) this.redraw(this.svgAreas[a]);
this.projectionChanged = !0;
this.resizeMap()
},
coordinatesToXY: function(a, b){
var c, e;
c = !1;
this.dataProvider&&(c=this.dataProvider.wrappedLongitudes)&&(a=this.recalcLongitude(a));
this.projectionFunction ? (e=this.projectionFunction(d.degreesToRadians(a), d.degreesToRadians(b)), c=this.mapScale * d.roundTo(this.x2c(d.radiansToDegrees(e[0])), 3), e=this.mapScale * d.roundTo(this.y2c(d.radiansToDegrees(e[1])), 3)):(c=this.longitudeToCoordinate(a), e=this.latitudeToCoordinate(b));
return {
x: c,
y: e
}},
coordinatesToStageXY: function(a, b){
var c=this.coordinatesToXY(a, b),
d=c.x * this.zoomLevel() + this.mapContainer.x,
c=c.y * this.zoomLevel() + this.mapContainer.y;
return {
x: d,
y: c
}},
stageXYToCoordinates: function(a, b){
var c=this.mapSet.getBBox(),
d=(a - this.mapContainer.x) / this.zoomLevel() - c.x * this.mapScale,
c=(b - this.mapContainer.y) / this.zoomLevel() - c.y * this.mapScale;
return this.xyToCoordinates(d, c)
},
xyToCoordinates: function(a, b, c, e, f){
var g;
isNaN(e)&&(e=this.mapWidth);
isNaN(f)&&(f=this.mapHeight);
c||(c=this.projectionFunction);
if(g=c.invert){
var h=this.dataProvider.leftLongitude,
k=this.dataProvider.rightLongitude,
l=this.dataProvider.topLatitude,
m=this.dataProvider.bottomLatitude,
n=h + (k - h) / 2,
p=l + (m - l) / 2,
l=d.radiansToDegrees(c(d.degreesToRadians(n), d.degreesToRadians(l))[1]),
m=d.radiansToDegrees(c(d.degreesToRadians(n), d.degreesToRadians(m))[1]),
h=d.radiansToDegrees(c(d.degreesToRadians(h), d.degreesToRadians(p))[0]),
k=d.radiansToDegrees(c(d.degreesToRadians(k), d.degreesToRadians(p))[0]);
this.projectionChanged&&(l=d.radiansToDegrees(c(d.degreesToRadians(this.topLongLat.longitude), d.degreesToRadians(this.topLongLat.latitude))[1]), m=d.radiansToDegrees(c(d.degreesToRadians(this.bottomLongLat.longitude),
d.degreesToRadians(this.bottomLongLat.latitude))[1]), h=d.radiansToDegrees(c(d.degreesToRadians(this.leftLongLat.longitude), d.degreesToRadians(this.leftLongLat.latitude))[0]), k=d.radiansToDegrees(c(d.degreesToRadians(this.rightLongLat.longitude), d.degreesToRadians(this.rightLongLat.latitude))[0]));
a=d.degreesToRadians(a / e * (k - h) + h);
b=d.degreesToRadians(b / f * (m - l) + l);
b=g(a, b);
g=d.radiansToDegrees(b[0]);
b=d.radiansToDegrees(b[1])
} else g=this.coordinateToLongitude(a), b=this.coordinateToLatitude(b);
return {
longitude: d.roundTo(g, 4),
latitude: d.roundTo(b, 4)
}},
coordinateToLatitude: function(a, b){
var c;
void 0===b&&(b=this.mapHeight);
if(this.mapSet){
var e=this.dataProvider,
f=e.bottomLatitude;
c=e.topLatitude;
"mercator"==e.projection ? (e=this.mercatorLatitudeToCoordinate(f), c=this.mercatorLatitudeToCoordinate(c), c=2 * d.degreesToRadians(a * (e - c) / b + c), c=d.radiansToDegrees(2 * Math.atan(Math.exp(c)) - .5 * Math.PI)):c=a / b * (f - c) + c
}
return Math.round(1E6 * c) / 1E6
},
coordinateToLongitude: function(a, b){
var c, d=this.dataProvider;
void 0===b&&(b=this.mapWidth);
this.mapSet&&(c=a / b * (d.rightLongitude - d.leftLongitude) + d.leftLongitude);
return Math.round(1E6 * c) / 1E6
}})
})();
(function(){
var d=window.AmCharts;
d.ZoomControl=d.Class({
construct: function(a){
this.cname="ZoomControl";
this.panStepSize=.1;
this.zoomFactor=2;
this.maxZoomLevel=64;
this.minZoomLevel=1;
this.panControlEnabled = !1;
this.zoomControlEnabled = !0;
this.buttonRollOverColor="#DADADA";
this.buttonFillColor="#FFFFFF";
this.buttonFillAlpha=1;
this.buttonBorderColor="#000000";
this.buttonBorderAlpha=.1;
this.buttonIconAlpha=this.buttonBorderThickness=1;
this.gridColor=this.buttonIconColor="#000000";
this.homeIconFile="homeIcon.gif";
this.gridBackgroundColor="#000000";
this.draggerAlpha=this.gridAlpha=this.gridBackgroundAlpha=0;
this.draggerSize=this.buttonSize=31;
this.iconSize=11;
this.homeButtonEnabled = !0;
this.buttonCornerRadius=2;
this.gridHeight=5;
this.roundButtons = !0;
this.top=this.left=10;
d.applyTheme(this, a, this.cname)
},
init: function(a, b){
var c=this;
c.chart=a;
d.remove(c.set);
var e=b.set();
d.setCN(a, e, "zoom-control");
var f=c.buttonSize,
g=c.zoomControlEnabled,
h=c.panControlEnabled,
k=c.buttonFillColor,
l=c.buttonFillAlpha,
m=c.buttonBorderThickness,
n=c.buttonBorderColor,
p=c.buttonBorderAlpha,
r=c.buttonCornerRadius,
t=c.buttonRollOverColor,
q=c.gridHeight,
y=c.zoomFactor,
B=c.minZoomLevel,
u=c.maxZoomLevel,
w=c.buttonIconAlpha,
v=c.buttonIconColor,
A=c.roundButtons,
C=a.svgIcons,
x=a.getX(c.left),
z=a.getY(c.top);
isNaN(c.right)||(x=a.getX(c.right, !0), x=h ? x - 3 * f:x - f);
isNaN(c.bottom)||(z=a.getY(c.bottom, !0), g&&(z -=q + 3 * f), z=h ? z - 3 * f:c.homeButtonEnabled ? z - .5 * f:z + f);
e.translate(x, z);
c.previousDY=NaN;
var F, x=f / 4 - 1;
if(g){
F=b.set();
d.setCN(a, F, "zoom-control-zoom");
e.push(F);
c.set=e;
c.zoomSet=F;
5 < q&&(g=d.rect(b, f + 6, q + 2 * f + 6, c.gridBackgroundColor, c.gridBackgroundAlpha, 0, "#000000", 0, 4), d.setCN(a, g, "zoom-bg"), g.translate(-3, -3), g.mouseup(function(){
c.handleBgUp()
}).touchend(function(){
c.handleBgUp()
}), F.push(g));
var E=f;
A&&(E=f / 1.5);
c.draggerSize=E;
var H=Math.log(u / B) / Math.log(y) + 1;
1E3 < H&&(H=1E3);
var g=q / H,
G, D=b.set();
D.translate((f - E) / 2 + 1, 1, NaN, !0);
F.push(D);
for (G=1; G < H; G++) z=f + G * g, z=d.line(b, [1, E - 2], [z, z], c.gridColor, c.gridAlpha, 1), d.setCN(a, z, "zoom-grid"), D.push(z);
z=new d.SimpleButton;
z.setDownHandler(c.draggerDown, c);
z.setClickHandler(c.draggerUp, c);
z.init(b, E, g, k, l, m, n, p, r, t);
d.setCN(a, z.set, "zoom-dragger");
F.push(z.set);
z.set.setAttr("opacity", c.draggerAlpha);
c.dragger=z.set;
c.previousY=NaN;
z=new d.SimpleButton;
C ? (E=b.set(), H=d.line(b, [-x, x], [0, 0], v, w, 1), G=d.line(b, [0, 0], [-x, x], v, w, 1), E.push(H), E.push(G), z.svgIcon=E):z.setIcon(a.pathToImages + "plus.gif", c.iconSize);
z.setClickHandler(a.zoomIn, a);
z.init(b, f, f, k, l, m, n, p, r, t, w, v, A);
d.setCN(a, z.set, "zoom-in");
F.push(z.set);
z=new d.SimpleButton;
C ? z.svgIcon=d.line(b, [-x, x], [0, 0], v, w, 1):z.setIcon(a.pathToImages + "minus.gif", c.iconSize);
z.setClickHandler(a.zoomOut, a);
z.init(b, f, f, k, l, m, n, p, r, t, w, v, A);
z.set.translate(0, q + f);
d.setCN(a, z.set, "zoom-out");
F.push(z.set);
q -=g;
u=Math.log(u / 100) / Math.log(y);
c.realStepSize=q / (u - Math.log(B / 100) / Math.log(y));
c.realGridHeight=q;
c.stepMax=u
}
h&&(h=b.set(), d.setCN(a, h, "zoom-control-pan"), e.push(h), F&&F.translate(f, 4 * f), y=new d.SimpleButton, C ? y.svgIcon=d.line(b, [x / 5, -x + x / 5,
x / 5
], [-x, 0, x], v, w, 1):y.setIcon(a.pathToImages + "panLeft.gif", c.iconSize), y.setClickHandler(a.moveLeft, a), y.init(b, f, f, k, l, m, n, p, r, t, w, v, A), y.set.translate(0, f), d.setCN(a, y.set, "pan-left"), h.push(y.set), y=new d.SimpleButton, C ? y.svgIcon=d.line(b, [-x / 5, x - x / 5, -x / 5], [-x, 0, x], v, w, 1):y.setIcon(a.pathToImages + "panRight.gif", c.iconSize), y.setClickHandler(a.moveRight, a), y.init(b, f, f, k, l, m, n, p, r, t, w, v, A), y.set.translate(2 * f, f), d.setCN(a, y.set, "pan-right"), h.push(y.set), y=new d.SimpleButton, C ? y.svgIcon=d.line(b, [-x, 0, x], [x / 5, -x + x / 5, x / 5], v, w, 1):y.setIcon(a.pathToImages + "panUp.gif", c.iconSize), y.setClickHandler(a.moveUp, a), y.init(b, f, f, k, l, m, n, p, r, t, w, v, A), y.set.translate(f, 0), d.setCN(a, y.set, "pan-up"), h.push(y.set), y=new d.SimpleButton, C ? y.svgIcon=d.line(b, [-x, 0, x], [-x / 5, x - x / 5, -x / 5], v, w, 1):y.setIcon(a.pathToImages + "panDown.gif", c.iconSize), y.setClickHandler(a.moveDown, a), y.init(b, f, f, k, l, m, n, p, r, t, w, v, A), y.set.translate(f, 2 * f), d.setCN(a, y.set, "pan-down"), h.push(y.set), e.push(h));
c.homeButtonEnabled&&(h=new d.SimpleButton, C ? h.svgIcon=d.polygon(b, [-x, 0, x, x - 1, x - 1, 2, 2, -2, -2, -x + 1, -x + 1], [0, -x, 0, 0, x - 1, x - 1, 2, 2, x - 1, x - 1, 0], v, w, 1, v, w):h.setIcon(a.pathToImages + c.homeIconFile, c.iconSize), h.setClickHandler(a.goHome, a), c.panControlEnabled&&(p=l = 0), h.init(b, f, f, k, l, m, n, p, r, t, w, v, A), c.panControlEnabled ? h.set.translate(f, f):F&&F.translate(0, 1.5 * f), d.setCN(a, h.set, "pan-home"), e.push(h.set));
c.update()
},
draggerDown: function(){
this.chart.stopDrag();
this.isDragging = !0
},
draggerUp: function(){
this.isDragging = !1
},
handleBgUp: function(){
var a=this.chart;
a.zoomTo(100 * Math.pow(this.zoomFactor, this.stepMax - (a.mouseY - this.zoomSet.y - this.set.y - this.buttonSize - this.realStepSize / 2) / this.realStepSize))
},
update: function(){
var a;
a=this.zoomFactor;
var b=this.realStepSize,
c=this.stepMax,
e=this.dragger,
f=this.buttonSize,
g, h=this.chart;
h&&(this.isDragging ? (h.stopDrag(), g=e.y + (h.mouseY - this.previousY), g=d.fitToBounds(g, f, this.realGridHeight + f), h.zoomTo(100 * Math.pow(a, c - (g - f) / b), NaN, NaN, !0)):(a=Math.log(h.zoomLevel() / 100) / Math.log(a), g=(c - a) * b + f), this.previousY =
h.mouseY, this.previousDY!=g&&e && (e.translate((this.buttonSize - this.draggerSize) / 2, g), this.previousDY=g))
}})
})();
(function(){
var d=window.AmCharts;
d.SimpleButton=d.Class({
construct: function(){},
init: function(a, b, c, e, f, g, h, k, l, m, n, p, r){
var t=this;
t.rollOverColor=m;
t.color=e;
t.container=a;
m=a.set();
t.set=m;
r ? (b /=2, e=d.circle(a, b, e, f, g, h, k), e.translate(b, b)):e=d.rect(a, b, c, e, f, g, h, k, l);
m.push(e);
f=t.iconPath;
var q;
f&&(q=t.iconSize, g=(b - q) / 2, r&&(g=(2 * b - q) / 2), q=a.image(f, g, (c - q) / 2, q, q));
t.svgIcon&&(q=t.svgIcon, r ? q.translate(b, b):q.translate(b / 2, b / 2));
m.setAttr("cursor", "pointer");
q&&(m.push(q), q.setAttr("opacity",
n), q.node.style.pointerEvents="none");
e.mousedown(function(){
t.handleDown()
}).touchstart(function(){
t.handleDown()
}).mouseup(function(){
t.handleUp()
}).touchend(function(){
t.handleUp()
}).mouseover(function(){
t.handleOver()
}).mouseout(function(){
t.handleOut()
});
t.bg=e
},
setIcon: function(a, b){
this.iconPath=a;
this.iconSize=b
},
setClickHandler: function(a, b){
this.clickHandler=a;
this.scope=b
},
setDownHandler: function(a, b){
this.downHandler=a;
this.scope=b
},
handleUp: function(){
var a=this.clickHandler;
a&&a.call(this.scope)
},
handleDown: function(){
var a=this.downHandler;
a&&a.call(this.scope)
},
handleOver: function(){
this.container.chart.skipClick = !0;
this.bg.setAttr("fill", this.rollOverColor)
},
handleOut: function(){
this.container.chart.skipClick = !1;
this.bg.setAttr("fill", this.color)
}})
})();
(function(){
var d=window.AmCharts;
d.SmallMap=d.Class({
construct: function(a){
this.cname="SmallMap";
this.mapColor="#e6e6e6";
this.rectangleColor="#FFFFFF";
this.top=this.right=10;
this.minimizeButtonWidth=23;
this.backgroundColor="#9A9A9A";
this.backgroundAlpha=1;
this.borderColor="#FFFFFF";
this.iconColor="#000000";
this.borderThickness=3;
this.borderAlpha=1;
this.size=.2;
this.enabled = !0;
d.applyTheme(this, a, this.cname)
},
init: function(a, b){
var c=this;
if(c.enabled){
c.chart=a;
c.container=b;
c.width=a.realWidth * c.size;
c.height=a.realHeight * c.size;
d.remove(c.mapSet);
d.remove(c.allSet);
d.remove(c.set);
var e=b.set();
c.set=e;
d.setCN(a, e, "small-map");
var f=b.set();
c.allSet=f;
e.push(f);
c.buildSVGMap();
var g=c.borderThickness,
h=c.borderColor,
k=d.rect(b, c.width + g, c.height + g, c.backgroundColor, c.backgroundAlpha, g, h, c.borderAlpha);
d.setCN(a, k, "small-map-bg");
k.translate(-g / 2, -g / 2);
f.push(k);
k.toBack();
var l, m, k=c.minimizeButtonWidth,
n=new d.SimpleButton,
p=k / 2;
a.svgIcons ? n.svgIcon=d.line(b, [-p / 2, 0, p / 2], [-p / 4, p / 4, -p /
4
], c.iconColor, 1, 1):n.setIcon(a.pathToImages + "arrowDown.gif", k);
n.setClickHandler(c.minimize, c);
n.init(b, k, k, h, 1, 1, h, 1);
d.setCN(a, n.set, "small-map-down");
n=n.set;
c.downButtonSet=n;
e.push(n);
var r=new d.SimpleButton;
a.svgIcons ? r.svgIcon=d.line(b, [-p / 2, 0, p / 2], [p / 4, -p / 4, p / 4], c.iconColor, 1, 1):r.setIcon(a.pathToImages + "arrowUp.gif", k);
r.setClickHandler(c.maximize, c);
r.init(b, k, k, h, 1, 1, h, 1);
d.setCN(a, r.set, "small-map-up");
h=r.set;
c.upButtonSet=h;
h.hide();
e.push(h);
var t, q;
isNaN(c.top)||(l=a.getY(c.top) +
g, q=0);
isNaN(c.bottom)||(l=a.getY(c.bottom, !0) - c.height - g, q=c.height - k + g / 2);
isNaN(c.left)||(m=a.getX(c.left) + g, t=-g / 2);
isNaN(c.right)||(m=a.getX(c.right, !0) - c.width - g, t=c.width - k + g / 2);
g=b.set();
g.clipRect(1, 1, c.width, c.height);
f.push(g);
c.rectangleC=g;
e.translate(m, l);
n.translate(t, q);
h.translate(t, q);
f.mouseup(function(){
c.handleMouseUp()
});
c.drawRectangle()
} else d.remove(c.allSet), d.remove(c.downButtonSet), d.remove(c.upButtonSet)
},
minimize: function(){
this.downButtonSet.hide();
this.upButtonSet.show();
this.allSet.hide()
},
maximize: function(){
this.downButtonSet.show();
this.upButtonSet.hide();
this.allSet.show()
},
buildSVGMap: function(){
var a=this.chart,
b={
fill: this.mapColor,
stroke: this.mapColor,
"stroke-opacity": 1
},
c=this.container,
e=c.set();
d.setCN(a, e, "small-map-image");
var f;
for (f=0; f < a.svgAreas.length; f++){
var g=c.path(a.svgAreas[f].path).attr(b);
e.push(g)
}
this.allSet.push(e);
b=e.getBBox();
c=this.size * a.mapScale;
f=-b.x * c;
var g=-b.y * c,
h=0,
k=0;
a.centerMap&&(h=(this.width - b.width * c) / 2, k=(this.height -
b.height * c) / 2);
this.mapWidth=b.width * c;
this.mapHeight=b.height * c;
f +=h;
g +=k;
this.dx=h;
this.dy=k;
e.translate(f, g, c);
this.mapSet=e;
this.mapX=f;
this.mapY=g
},
update: function(){
var a=this.chart;
if(a){
var b=a.zoomLevel(),
c=this.width,
d=this.height,
f=c / (a.realWidth * b),
g=a.mapContainer.getBBox(),
c=c / b,
d=d / b,
h=this.rectangle;
h.translate(-(a.mapContainer.x + g.x * b) * f + this.dx, -(a.mapContainer.y + g.y * b) * f + this.dy);
0 < c&&0 < d&&(h.setAttr("width", Math.ceil(c + 1)), h.setAttr("height", Math.ceil(d + 1)));
this.rWidth=c;
this.rHeight =
d
}},
drawRectangle: function(){
var a=this.rectangle;
d.remove(a);
a=d.rect(this.container, 10, 10, "#000", 0, 1, this.rectangleColor, 1);
d.setCN(this.chart, a, "small-map-rectangle");
this.rectangleC.push(a);
this.rectangle=a
},
handleMouseUp: function(){
var a=this.chart,
b=a.zoomLevel();
a.zoomToMapXY(b, (a.mouseX - this.set.x - this.mapX) / this.size + a.diffX * a.mapScale, (a.mouseY - this.set.y - this.mapY) / this.size + a.diffY * a.mapScale)
}})
})();
(function(){
var d=window.AmCharts;
d.AreasProcessor=d.Class({
construct: function(a){
this.chart=a
},
process: function(a){
this.updateAllAreas();
this.allObjects=[];
a=a.areas;
var b=this.chart;
b.outlines=[];
var c=a.length,
d, f, g=0,
h = !1,
k = !1,
l=0;
for (d=0; d < c; d++)
if(f=a[d], f.value=Number(f.value), f=f.value, !isNaN(f)){
if(!1===h||h < f) h=f;
if(!1===k||k > f) k=f;
g +=Math.abs(f);
l++
}
this.minValue=k;
this.maxValue=h;
isNaN(b.minValue)||(this.minValue=b.minValue);
isNaN(b.maxValue)||(this.maxValue=b.maxValue);
b.maxValueReal =
h;
b.minValueReal=k;
for (d=0; d < c; d++) f=a[d], isNaN(f.value) ? f.percents=void 0:(f.percents=(f.value - k) / g * 100, k==h&&(f.percents=100));
for (d=0; d < c; d++) f=a[d], this.createArea(f);
b.outlinesToFront()
},
updateAllAreas: function(){
var a=this.chart,
b=a.areasSettings,
c=b.unlistedAreasColor,
e=b.unlistedAreasAlpha,
f=b.unlistedAreasOutlineColor,
g=b.unlistedAreasOutlineAlpha,
h=a.svgAreas,
k=a.dataProvider,
l=k.areas,
m={},
n;
for (n=0; n < l.length; n++) m[l[n].id]=l[n];
for (n=0; n < h.length; n++){
l=h[n];
if(b.preserveOriginalAttributes){
if(l.customAttr)
for (var p in l.customAttr) l.setAttr(p,
l.customAttr[p])
}else{
void 0!=c&&l.setAttr("fill", c);
isNaN(e)||l.setAttr("fill-opacity", e);
void 0!=f&&l.setAttr("stroke", f);
isNaN(g)||l.setAttr("stroke-opacity", g);
var r=b.outlineThickness;
b.adjustOutlineThickness&&(r=r / a.zoomLevel() / a.mapScale);
l.setAttr("stroke-width", r)
}
d.setCN(a, l, "map-area-unlisted");
k.getAreasFromMap&&!m[l.id]&&(r=new d.MapArea(a.theme), r.parentObject=k, r.id=l.id, r.outline=l.outline, k.areas.push(r))
}},
createArea: function(a){
var b=this.chart,
c=b.svgAreasById[a.id],
e=b.areasSettings;
if(c&&c.className){
var f=b.areasClasses[c.className];
f&&(e=d.processObject(f, d.AreasSettings, b.theme))
}
var g=e.color,
h=e.alpha,
k=e.outlineThickness,
l=e.rollOverColor,
m=e.selectedColor,
n=e.rollOverAlpha,
p=e.rollOverBrightness,
r=e.outlineColor,
t=e.outlineAlpha,
q=e.balloonText,
y=e.selectable,
B=e.pattern,
u=e.rollOverOutlineColor,
w=e.bringForwardOnHover,
v=e.preserveOriginalAttributes;
this.allObjects.push(a);
a.chart=b;
a.baseSettings=e;
a.autoZoomReal=void 0==a.autoZoom ? e.autoZoom:a.autoZoom;
f=a.color;
void 0==f&&(f=g);
var A=a.alpha;
isNaN(A)&&(A=h);
h=a.rollOverAlpha;
isNaN(h)&&(h=n);
isNaN(h)&&(h=A);
n=a.rollOverColor;
void 0==n&&(n=l);
l=a.pattern;
void 0==l&&(l=B);
B=a.selectedColor;
void 0==B&&(B=m);
m=a.balloonText;
void 0===m&&(m=q);
void 0==e.colorSolid||isNaN(a.value)||(q=Math.floor((a.value - this.minValue) / ((this.maxValue - this.minValue) / b.colorSteps)), q==b.colorSteps&&q--, q *=1 / (b.colorSteps - 1), this.maxValue==this.minValue&&(q=1), a.colorReal=d.getColorFade(f, e.colorSolid, q));
void 0!=a.color&&(a.colorReal=a.color);
void 0==a.selectable&&(a.selectable=y);
void 0==a.colorReal&&(a.colorReal=g);
g=a.outlineColor;
void 0==g&&(g=r);
r=a.outlineAlpha;
isNaN(r)&&(r=t);
t=a.outlineThickness;
isNaN(t)&&(t=k);
k=a.rollOverOutlineColor;
void 0==k&&(k=u);
u=a.rollOverBrightness;
void 0==u&&(u=p);
void 0==a.bringForwardOnHover&&(a.bringForwardOnHover=w);
void 0==a.preserveOriginalAttributes&&(a.preserveOriginalAttributes=v);
isNaN(e.selectedBrightness)||(B=d.adjustLuminosity(a.colorReal, e.selectedBrightness / 100));
a.alphaReal=A;
a.rollOverColorReal=n;
a.rollOverAlphaReal=h;
a.balloonTextReal=m;
a.selectedColorReal=B;
a.outlineColorReal=g;
a.outlineAlphaReal=r;
a.rollOverOutlineColorReal=k;
a.outlineThicknessReal=t;
a.patternReal=l;
a.rollOverBrightnessReal=u;
a.accessibleLabel||(a.accessibleLabel=e.accessibleLabel);
d.processDescriptionWindow(e, a);
if(c&&(p=c.area, w=c.title, a.enTitle=c.title, w&&!a.title&&(a.title=w), (c=b.language) ? (w=d.mapTranslations)&&(c=w[c])&&c[a.enTitle]&&(a.titleTr=c[a.enTitle]):a.titleTr=void 0, p)){
c=a.tabIndex;
void 0===c&&(c=e.tabIndex);
void 0!==c&&p.setAttr("tabindex", c);
a.displayObject=p;
a.outline&&(A=0, a.alphaReal=0, a.rollOverAlphaReal=0, a.mouseEnabled = !1, b.outlines.push(p), p.node.setAttribute("pointer-events", "none"));
a.mouseEnabled&&b.addObjectEventListeners(p, a);
var C;
void 0!=f&&(C=f);
void 0!=a.colorReal&&(C=a.showAsSelected||b.selectedObject==a ? a.selectedColorReal:a.colorReal);
p.node.setAttribute("class", "");
d.setCN(b, p, "map-area");
d.setCN(b, p, "map-area-" + p.id);
e.adjustOutlineThickness&&(t=t / b.zoomLevel() / b.mapScale);
a.preserveOriginalAttributes ||
(p.setAttr("fill", C), p.setAttr("stroke", g), p.setAttr("stroke-opacity", r), p.setAttr("stroke-width", t), p.setAttr("fill-opacity", A));
b.makeObjectAccessible(a);
l&&p.pattern(l, b.mapScale, b.path);
a.hidden&&p.hide()
}}
})
})();
(function(){
var d=window.AmCharts;
d.AreasSettings=d.Class({
construct: function(a){
this.cname="AreasSettings";
this.alpha=1;
this.autoZoom = !1;
this.balloonText="[[title]]";
this.color="#FFCC00";
this.colorSolid="#990000";
this.unlistedAreasAlpha=1;
this.unlistedAreasColor="#DDDDDD";
this.outlineColor="#FFFFFF";
this.outlineThickness=this.outlineAlpha=1;
this.selectedColor=this.rollOverOutlineColor="#CC0000";
this.unlistedAreasOutlineColor="#FFFFFF";
this.unlistedAreasOutlineAlpha=1;
this.descriptionWindowWidth=250;
this.bringForwardOnHover=this.adjustOutlineThickness = !0;
this.accessibleLabel="[[title]] [[value]] [[description]]";
d.applyTheme(this, a, this.cname)
}})
})();
(function(){
var d=window.AmCharts;
d.ImagesProcessor=d.Class({
construct: function(a){
this.chart=a;
this.reset()
},
process: function(a){
var b=a.images,
c;
for (c=b.length - 1; 0 <=c; c--){
var d=b[c];
this.createImage(d, c);
d.parentArray=b
}
this.counter=c;
a.parentObject&&a.remainVisible&&this.process(a.parentObject)
},
createImage: function(a, b){
a=d.processObject(a, d.MapImage);
a.arrays=[];
isNaN(b)&&(this.counter++, b=this.counter);
var c=this.chart,
e=c.container,
f=c.mapImagesContainer,
g=c.stageImagesContainer,
h=c.imagesSettings;
a.remove&&a.remove();
var k=h.color,
l=h.alpha,
m=h.rollOverColor,
n=h.rollOverOutlineColor,
p=h.selectedColor,
r=h.balloonText,
t=h.outlineColor,
q=h.outlineAlpha,
y=h.outlineThickness,
B=h.selectedScale,
u=h.rollOverScale,
w=h.selectable,
v=h.labelPosition,
A=h.labelColor,
C=h.labelFontSize,
x=h.bringForwardOnHover,
z=h.labelRollOverColor,
F=h.rollOverBrightness,
E=h.selectedLabelColor;
a.index=b;
a.chart=c;
a.baseSettings=c.imagesSettings;
var H=e.set();
a.displayObject=H;
var G=a.color;
void 0==G&&(G=k);
k=a.alpha;
isNaN(k)&&(k=l);
void 0==a.bringForwardOnHover&&(a.bringForwardOnHover=x);
l=a.outlineAlpha;
isNaN(l)&&(l=q);
q=a.rollOverColor;
void 0==q&&(q=m);
m=a.selectedColor;
void 0==m&&(m=p);
p=a.balloonText;
void 0===p&&(p=r);
r=a.outlineColor;
void 0==r&&(r=t);
a.outlineColorReal=r;
t=a.outlineThickness;
isNaN(t)&&(t=y);
(y=a.labelPosition)||(y=v);
v=a.labelColor;
void 0==v&&(v=A);
A=a.labelRollOverColor;
void 0==A&&(A=z);
z=a.selectedLabelColor;
void 0==z&&(z=E);
E=a.labelFontSize;
isNaN(E)&&(E=C);
C=a.selectedScale;
isNaN(C)&&(C=B);
B=a.rollOverScale;
isNaN(B)&&(B=u);
u=a.rollOverBrightness;
void 0==u&&(u=F);
void 0==a.selectable&&(a.selectable=w);
a.colorReal=G;
isNaN(h.selectedBrightness)||(m=d.adjustLuminosity(a.colorReal, h.selectedBrightness / 100));
a.alphaReal=k;
a.rollOverColorReal=q;
a.balloonTextReal=p;
a.selectedColorReal=m;
a.labelColorReal=v;
a.labelRollOverColorReal=A;
a.selectedLabelColorReal=z;
a.labelFontSizeReal=E;
a.labelPositionReal=y;
a.selectedScaleReal=C;
a.rollOverScaleReal=B;
a.rollOverOutlineColorReal=n;
a.rollOverBrightnessReal=u;
a.accessibleLabel||(a.accessibleLabel=h.accessibleLabel);
d.processDescriptionWindow(h, a);
a.centeredReal=void 0==a.centered ? h.centered:a.centered;
n=a.type;
u=a.imageURL;
B=a.svgPath;
C=a.width;
E=a.height;
w=a.scale;
isNaN(a.percentWidth)||(C=a.percentWidth / 100 * c.realWidth);
isNaN(a.percentHeight)||(E=a.percentHeight / 100 * c.realHeight);
var D;
u||n || B||(n="circle", C=1, l=k = 0);
q=F = 0;
h=a.selectedColorReal;
if(n){
isNaN(C)&&(C=10);
isNaN(E)&&(E=10);
"kilometers"==a.widthAndHeightUnits&&(C=c.kilometersToPixels(a.width), E=c.kilometersToPixels(a.height));
"miles"==a.widthAndHeightUnits&&(C=c.milesToPixels(a.width), E=c.milesToPixels(a.height));
if("circle"==n||"bubble"==n) E=C;
D=this.createPredefinedImage(G, r, t, n, C, E);
q=F = 0;
a.centeredReal ? (isNaN(a.right)||(F=C * w), isNaN(a.bottom)||(q=E * w)):(F=C * w / 2, q=E * w / 2);
D.translate(F, q, w, !0)
} else u ? (isNaN(C)&&(C=10), isNaN(E)&&(E=10), D=e.image(u, 0, 0, C, E), D.node.setAttribute("preserveAspectRatio", "none"), D.setAttr("opacity", k), a.centeredReal&&(F=isNaN(a.right) ? -C / 2:C / 2, q=isNaN(a.bottom) ? -E / 2:E / 2, D.translate(F, q, NaN, !0))):B&&(D=e.path(B), u=D.getBBox(), a.centeredReal ? (F=-u.x * w - u.width * w / 2, isNaN(a.right)||(F=-F), q=-u.y * w - u.height * w / 2, isNaN(a.bottom)||(q=-q)):F=q = 0, D.translate(F, q, w, !0), D.x=F, D.y=q);
D&&(H.push(D), a.image=D, D.setAttr("stroke-opacity", l), D.setAttr("stroke-width", t), D.setAttr("stroke", r), D.setAttr("fill-opacity", k), "bubble"!=n&&D.setAttr("fill", G), d.setCN(c, D, "map-image"), void 0!=a.id&&d.setCN(c, D, "map-image-" + a.id));
G=a.labelColorReal;
!a.showAsSelected&&c.selectedObject!=a||void 0==h||(D&&D.setAttr("fill", h), G=a.selectedLabelColorReal);
D=null;
void 0!==a.label&&(D=d.text(e, a.label, G, c.fontFamily, a.labelFontSizeReal, a.labelAlign), d.setCN(c, D, "map-image-label"), void 0!==a.id&&d.setCN(c, D, "map-image-label-" + a.id), G=a.labelBackgroundAlpha, (k=a.labelBackgroundColor)&&0 < G&&(l=D.getBBox(), e=d.rect(e, l.width + 16, l.height + 10, k, G), d.setCN(c, e, "map-image-label-background"), void 0!=a.id&&d.setCN(c, e, "map-image-label-background-" + a.id), H.push(e), a.labelBG=e), a.imageLabel=D, H.push(D), d.setCN(c, H, "map-image-container"), void 0!=a.id&&d.setCN(c, H, "map-image-container-" + a.id), this.labelsToReposition.push(a), a.arrays.push({
arr: this.labelsToReposition,
el: a
}));
e=isNaN(a.latitude)||isNaN(a.longitude) ? !0:!1;
a.lineId&&(D=this.chart.getObjectById(a.lineId))&&0 < D.longitudes.length&&(e = !1);
e ? g.push(H):f.push(H);
H.toBack();
H&&(H.rotation=a.rotation, isNaN(a.rotation)||H.rotate(a.rotation), a.arrays.push({
arr: this.allSvgObjects,
el: H
}), this.allSvgObjects.push(H));
this.allObjects.push(a);
c.makeObjectAccessible(a);
f=a.tabIndex;
void 0===f&&(f=c.imagesSettings.tabIndex);
void 0!==f&&H.setAttr("tabindex", f);
a.arrays.push({
arr: this.allObjects,
el: a
});
isNaN(a.longitude)||isNaN(a.latitude)||!a.fixedSize||(a.objToResize={
image: H,
mapImage: a,
scale: 1
}, this.objectsToResize.push(a.objToResize), a.arrays.push({
arr: this.objectsToResize,
el: a.objToResize
}));
this.updateSizeAndPosition(a);
a.mouseEnabled&&c.addObjectEventListeners(H, a);
a.hidden&&H.hide();
d.removeFromArray(c.updatableImages, a);
a.animateAlongLine&&(c.updatableImages.push(a), a.delayAnimateAlong());
return a
},
updateSizeAndPosition: function(a){
var b=this.chart,
c=a.displayObject,
e=b.getX(a.left),
f=b.getY(a.top),
g, h=a.image.getBBox();
isNaN(a.right)||(e=b.getX(a.right, !0) - h.width * a.scale);
isNaN(a.bottom)||(f=b.getY(a.bottom, !0) - h.height * a.scale);
var k=a.longitude,
l=a.latitude,
m=a.positionOnLine,
h=a.imageLabel,
n=this.chart.zoomLevel(),
p, r;
a.lineId&&(a.line=this.chart.getObjectById(a.lineId));
if(a.line&&a.line.getCoordinates){
a.line.chart=b;
var t=a.line.getCoordinates(m, a.lineSegment);
t&&(k=b.coordinateToLongitude(t.x), l=b.coordinateToLatitude(t.y), p=t.x, r=t.y, a.animateAngle&&(g=d.radiansToDegrees(t.angle)))
}
isNaN(g)||c.rotate(g + a.extraAngle);
if(!isNaN(e)&&!isNaN(f)) c.translate(e, f, NaN, !0);
else if(!isNaN(l)&&!isNaN(k))
if(f=b.coordinatesToXY(k, l), e=f.x, f=f.y, isNaN(p)||(e=p), isNaN(r)||(f=r), a.fixedSize){
p=a.positionScale;
isNaN(p) ? p=0:(--p, p *=1 - 2 * Math.abs(m - .5));
if(m=a.objectToResize) m.scale=1 + p;
c.translate(e, f, 1 / n + p, !0)
} else c.translate(e, f, NaN, !0);
this.positionLabel(h, a, a.labelPositionReal)
},
positionLabel: function(a, b, c){
if(a){
var d=b.image,
f=0,
g=0,
h=0,
k=0;
d&&(k=d.getBBox(), g=d.y + k.y, f=d.x + k.x, h=k.width, k=k.height, b.svgPath&&(h *=b.scale, k *=b.scale));
var d=a.getBBox(),
l=d.width,
m=d.height;
"right"==c&&(f +=h + l / 2 + 5, g +=k / 2 - 2);
"left"==c&&(f +=-l / 2 - 5, g +=k / 2 - 2);
"top"==c&&(g -=m / 2 + 3, f +=h / 2);
"bottom"==c&&(g +=k + m / 2, f +=h / 2);
"middle"==c&&(f +=h / 2, g +=k / 2);
a.translate(f + b.labelShiftX, g + b.labelShiftY, NaN, !0);
a=b.labelFontSizeReal;
b.labelBG&&b.labelBG.translate(f - d.width / 2 + b.labelShiftX - 9, g - a / 2 + b.labelShiftY -
4, NaN, !0)
}},
createPredefinedImage: function(a, b, c, e, f, g){
var h=this.chart.container,
k;
switch (e){
case "circle":
k=d.circle(h, f / 2, a, 1, c, b, 1);
break;
case "rectangle":
k=d.polygon(h, [-f / 2, f / 2, f / 2, -f / 2], [g / 2, g / 2, -g / 2, -g / 2], a, 1, c, b, 1, 0, !0);
break;
case "bubble":
k=d.circle(h, f / 2, a, 1, c, b, 1, !0);
break;
case "hexagon":
f /=Math.sqrt(3), k=d.polygon(h, [.866 * f, 0 * f, -.866 * f, -.866 * f, 0 * f, .866 * f], [.5 * f, 1 * f, .5 * f, -.5 * f, -1 * f, -.5 * f], a, 1, c, b, 1)
}
return k
},
reset: function(){
this.objectsToResize=[];
this.allSvgObjects=[];
this.allObjects=[];
this.allLabels=[];
this.labelsToReposition=[]
}})
})();
(function(){
var d=window.AmCharts;
d.ImagesSettings=d.Class({
construct: function(a){
this.cname="ImagesSettings";
this.balloonText="[[title]]";
this.alpha=1;
this.borderAlpha=0;
this.borderThickness=1;
this.labelPosition="right";
this.labelColor="#000000";
this.labelFontSize=11;
this.color="#000000";
this.labelRollOverColor="#00CC00";
this.centered = !0;
this.rollOverScale=this.selectedScale=1;
this.descriptionWindowWidth=250;
this.bringForwardOnHover = !0;
this.outlineColor="transparent";
this.adjustAnimationSpeed = !1;
this.baseAnimationDistance=500;
this.pauseDuration=0;
this.easingFunction=d.easeInOutQuad;
this.animationDuration=3;
this.positionScale=1;
this.accessibleLabel="[[title]] [[description]]";
d.applyTheme(this, a, this.cname)
}})
})();
(function(){
var d=window.AmCharts;
d.LinesProcessor=d.Class({
construct: function(a){
this.chart=a;
this.reset()
},
process: function(a){
var b=a.lines,
c;
for (c=0; c < b.length; c++){
var d=b[c];
this.createLine(d, c);
d.parentArray=b
}
this.counter=c;
a.parentObject&&a.remainVisible&&this.process(a.parentObject)
},
createLine: function(a, b){
a=d.processObject(a, d.MapLine);
isNaN(b)&&(this.counter++, b=this.counter);
a.index=b;
a.remove&&a.remove();
var c=this.chart,
e=c.linesSettings,
f=this.objectsToResize,
g=c.mapLinesContainer,
h=c.stageLinesContainer,
k=e.thickness,
l=e.dashLength,
m=e.arrow,
n=e.arrowSize,
p=e.arrowColor,
r=e.arrowAlpha,
t=e.color,
q=e.alpha,
y=e.rollOverColor,
B=e.selectedColor,
u=e.rollOverAlpha,
w=e.balloonText,
v=e.bringForwardOnHover,
A=e.arc,
C=e.rollOverBrightness,
x=c.container;
a.chart=c;
a.baseSettings=e;
var z=x.set();
a.displayObject=z;
var F=a.tabIndex;
void 0===F&&(F=e.tabIndex);
void 0!==F&&z.setAttr("tabindex", F);
this.allSvgObjects.push(z);
a.arrays.push({
arr: this.allSvgObjects,
el: z
});
this.allObjects.push(a);
a.arrays.push({
arr: this.allObjects,
el: a
});
a.mouseEnabled&&c.addObjectEventListeners(z, a);
if(a.remainVisible||c.selectedObject==a.parentObject){
F=a.thickness;
isNaN(F)&&(F=k);
k=a.dashLength;
isNaN(k)&&(k=l);
l=a.color;
void 0==l&&(l=t);
t=a.alpha;
isNaN(t)&&(t=q);
q=a.rollOverAlpha;
isNaN(q)&&(q=u);
isNaN(q)&&(q=t);
u=a.rollOverColor;
void 0==u&&(u=y);
y=a.selectedColor;
void 0==y&&(y=B);
B=a.balloonText;
void 0===B&&(B=w);
w=a.arc;
isNaN(w)&&(w=A);
A=a.arrow;
if(!A||"none"==A&&"none"!=m) A=m;
m=a.arrowColor;
void 0==m&&(m=p);
void 0==m&&(m=l);
p=a.arrowAlpha;
isNaN(p)&&(p=r);
isNaN(p)&&(p=t);
r=a.arrowSize;
isNaN(r)&&(r=n);
n=a.rollOverBrightness;
void 0==n&&(n=C);
a.colorReal=l;
a.arrowColor=m;
isNaN(e.selectedBrightness)||(y=d.adjustLuminosity(a.colorReal, e.selectedBrightness / 100));
a.alphaReal=t;
a.rollOverColorReal=u;
a.rollOverAlphaReal=q;
a.balloonTextReal=B;
a.selectedColorReal=y;
a.thicknessReal=F;
a.rollOverBrightnessReal=n;
a.accessibleLabel||(a.accessibleLabel=e.accessibleLabel);
void 0===a.shiftArrow&&(a.shiftArrow=e.shiftArrow);
void 0==a.bringForwardOnHover&&(a.bringForwardOnHover=v);
d.processDescriptionWindow(e, a);
v=this.processCoordinates(a.x, c.realWidth);
C=this.processCoordinates(a.y, c.realHeight);
n=a.longitudes;
e=a.latitudes;
q=n.length;
if(0 < q)
for (v=[], C=[], u=0; u < q; u++) B=c.coordinatesToXY(n[u], e[u]), v.push(B.x), C.push(B.y);
if(0 < v.length){
a.segments=v.length;
d.dx=0;
d.dy=0;
var E, H, G, q=10 * (1 - Math.abs(w));
10 <=q&&(q=NaN);
1 > q&&(q=1);
a.arcRadius=[];
a.distances=[];
n=c.mapContainer.scale;
if(isNaN(q)){
for (q=0; q < v.length - 1; q++) H=Math.sqrt(Math.pow(v[q + 1] - v[q], 2) + Math.pow(C[q + 1] - C[q], 2)), a.distances[q]=H;
q=d.line(x, v, C, l, 1, F / n, k, !1, !1, !0);
l=d.line(x, v, C, l, .001, 5 / n, k, !1, !1, !0);
q.setAttr("stroke-linecap", "round")
}else{
u=1;
0 > w&&(u=0);
B={
fill: "none",
stroke: l,
"stroke-opacity": 1,
"stroke-width": F / n,
"fill-opacity": 0,
"stroke-linecap": "round"
};
void 0!==k&&0 < k&&(B["stroke-dasharray"]=k);
for (var k="", D=0; D < v.length - 1; D++){
var K=v[D],
J=v[D + 1],
L=C[D],
O=C[D + 1];
H=Math.sqrt(Math.pow(J - K, 2) + Math.pow(O - L, 2));
G=H / 2 * q;
E=270 + 180 * Math.acos(H / 2 /
G) / Math.PI;
isNaN(E)&&(E=270);
if(K < J){
var P=K,
K=J,
J=P,
P=L,
L=O,
O=P;
E=-E
}
0 < w&&(E=-E);
k +="M" + K + "," + L + "A" + G + "," + G + ",0,0," + u + "," + J + "," + O;
a.arcRadius[D]=G;
a.distances[D]=H
}
q=x.path(k).attr(B);
l=x.path(k).attr({
"fill-opacity": 0,
stroke: l,
"stroke-width": 5 / n,
"stroke-opacity": .001,
fill: "none"
})
}
d.setCN(c, q, "map-line");
void 0!=a.id&&d.setCN(c, q, "map-line-" + a.id);
d.dx=.5;
d.dy=.5;
z.push(q);
z.push(l);
q.setAttr("opacity", t);
if("none"!=A){
var I, M, N;
if("end"==A||"both"==A) u=v[v.length - 1], D=C[C.length - 1], 1 < v.length ?
(B=v[v.length - 2], I=C[C.length - 2]):(B=u, I=D), I=180 * Math.atan((D - I) / (u - B)) / Math.PI, isNaN(E)||(I +=E), M=u, N=D, I=0 > u - B ? I - 90:I + 90;
t=[-r / 2 - .5, -.5, r / 2 - .5];
k=[r, -.5, r];
a.shiftArrow&&"middle"!=A&&(k=[0, 1.2 * -r, 0]);
"both"==A&&(r=d.polygon(x, t, k, m, p, 1, m, p, void 0, !0), z.push(r), r.translate(M, N, 1 / n, !0), isNaN(I)||r.rotate(I), d.setCN(c, q, "map-line-arrow"), void 0!=a.id&&d.setCN(c, q, "map-line-arrow-" + a.id), a.fixedSize&&f.push(r));
if("start"==A||"both"==A) r=v[0], N=C[0], 1 < v.length ? (u=v[1], M=C[1]):(u=r, M=N), I=180 * Math.atan((N -
M) / (r - u)) / Math.PI, isNaN(E)||(I -=E), M=r, I=0 > r - u ? I - 90:I + 90;
"middle"==A&&(u=v[v.length - 1], D=C[C.length - 1], 1 < v.length ? (B=v[v.length - 2], I=C[C.length - 2]):(B=u, I=D), M=B + (u - B) / 2, N=I + (D - I) / 2, I=180 * Math.atan((D - I) / (u - B)) / Math.PI, isNaN(E)||(E=H / 2, G -=Math.sqrt(G * G - E * E), 0 > w&&(G=-G), E=Math.sin(I / 180 * Math.PI), -1==E&&(E=1), M -=E * G, N +=Math.cos(I / 180 * Math.PI) * G), I=0 > u - B ? I - 90:I + 90);
r=d.polygon(x, t, k, m, p, 1, m, p, void 0, !0);
d.setCN(c, q, "map-line-arrow");
void 0!=a.id&&d.setCN(c, q, "map-line-arrow-" + a.id);
z.push(r);
r.translate(M,
N, 1 / n, !0);
isNaN(I)||r.rotate(I);
a.fixedSize&&(f.push(r), a.arrays.push({
arr: f,
el: r
}));
a.arrowSvg=r
}
a.fixedSize&&q && (f={
line: q,
thickness: F
}, this.linesToResize.push(f), a.arrays.push({
arr: this.linesToResize,
el: f
}), f={
line: l,
thickness: 5
}, this.linesToResize.push(f), a.arrays.push({
arr: this.linesToResize,
el: f
}));
a.lineSvg=q;
a.showAsSelected&&!isNaN(y)&&q.setAttr("stroke", y);
0 < e.length ? g.push(z):h.push(z);
a.hidden&&z.hide();
c.makeObjectAccessible(a)
}}
},
processCoordinates: function(a, b){
var c=[],
d;
for (d=0; d < a.length; d++){
var f=a[d],
g=Number(f);
isNaN(g)&&(g=Number(f.replace("%", "")) * b / 100);
isNaN(g)||c.push(g)
}
return c
},
reset: function(){
this.objectsToResize=[];
this.allSvgObjects=[];
this.allObjects=[];
this.linesToResize=[]
}})
})();
(function(){
var d=window.AmCharts;
d.LinesSettings=d.Class({
construct: function(a){
this.cname="LinesSettings";
this.balloonText="[[title]]";
this.thickness=1;
this.dashLength=0;
this.arrowSize=10;
this.arrowAlpha=1;
this.arrow="none";
this.color="#990000";
this.descriptionWindowWidth=250;
this.bringForwardOnHover = !0;
d.applyTheme(this, a, this.cname)
}})
})();
(function(){
var d=window.AmCharts;
d.MapObject=d.Class({
construct: function(a){
this.fixedSize=this.mouseEnabled = !0;
this.images=[];
this.lines=[];
this.areas=[];
this.remainVisible = !0;
this.passZoomValuesToTarget = !1;
this.objectType=this.cname;
d.applyTheme(this, a, "MapObject");
this.arrays=[]
},
deleteObject: function(){
this.remove();
this.parentArray&&d.removeFromArray(this.parentArray, this);
if(this.arrays)
for (var a=0; a < this.arrays.length; a++) d.removeFromArray(this.arrays[a].arr, this.arrays[a].el);
this.arrays=[]
}})
})();
(function(){
var d=window.AmCharts;
d.MapArea=d.Class({
inherits: d.MapObject,
construct: function(a){
this.cname="MapArea";
d.MapArea.base.construct.call(this, a);
d.applyTheme(this, a, this.cname)
},
validate: function(){
this.chart.areasProcessor.createArea(this)
}})
})();
(function(){
var d=window.AmCharts;
d.MapLine=d.Class({
inherits: d.MapObject,
construct: function(a){
this.cname="MapLine";
this.longitudes=[];
this.latitudes=[];
this.x=[];
this.y=[];
this.segments=0;
this.arrow="none";
d.MapLine.base.construct.call(this, a);
d.applyTheme(this, a, this.cname)
},
validate: function(){
this.chart.linesProcessor.createLine(this)
},
remove: function(){
var a=this.displayObject;
a&&a.remove()
},
getCoordinates: function(a, b){
isNaN(b)&&(b=0);
isNaN(this.arc)||this.isValid||(this.isValid = !0, this.validate());
if(!isNaN(a)){
var c, e, f, g, h, k;
if(1 < this.longitudes.length){
e=this.chart.coordinatesToXY(this.longitudes[b], this.latitudes[b]);
var l=this.chart.coordinatesToXY(this.longitudes[b + 1], this.latitudes[b + 1]);
c=e.x;
f=l.x;
e=e.y;
g=l.y
} else 1 < this.x.length&&(c=this.x[b], f=this.x[b + 1], e=this.y[b], g=this.y[b + 1]);
l=Math.sqrt(Math.pow(f - c, 2) + Math.pow(g - e, 2));
c < f&&!isNaN(this.arc)&&0!==this.arc&&(a=1 - a);
h=c + (f - c) * a;
k=e + (g - e) * a;
var m=Math.atan2(g - e, f - c);
if(!isNaN(this.arc)&&0!==this.arc&&this.arcRadius){
var n=0;
c < f&&(n=c, c=f, f=n, n=e, e=g, g=n, n=Math.PI);
k=this.arcRadius[b];
0 > this.arc&&(l=-l);
h=c + (f - c) / 2 + Math.sqrt(k * k - l / 2 * (l / 2)) * (e - g) / l;
var p=e + (g - e) / 2 + Math.sqrt(k * k - l / 2 * (l / 2)) * (f - c) / l;
c=180 * Math.atan2(e - p, c - h) / Math.PI;
f=180 * Math.atan2(g - p, f - h) / Math.PI;
180 < f - c&&(f -=360);
m=d.degreesToRadians(c + (f - c) * a);
h +=k * Math.cos(m);
k=p + k * Math.sin(m);
m=0 < this.arc ? m + Math.PI / 2:m - Math.PI / 2;
m +=n
}
this.distance=l;
return {
x: h,
y: k,
angle: m
}}
},
fixToStage: function(){
if(0 < this.latitudes.length){
this.y=[];
for (var a=0; a < this.latitudes.length; a++){
var b =
this.chart.coordinatesToStageXY(this.longitudes[a], this.latitudes[a]);
this.y.push(b.y);
this.x.push(b.x)
}
this.latitudes=[];
this.longitudes=[]
}
this.validate()
},
fixToMap: function(){
if(0 < this.y.length){
this.latitudes=[];
for (var a=0; a < this.y.length; a++){
var b=this.chart.stageXYToCoordinates(this.x[a], this.y[a]);
this.latitudes.push(b.latitude);
this.longitudes.push(b.longitude)
}
this.y=[];
this.x=[]
}
this.validate()
}})
})();
(function(){
var d=window.AmCharts;
d.MapImage=d.Class({
inherits: d.MapObject,
construct: function(a){
this.cname="MapImage";
this.scale=1;
this.widthAndHeightUnits="pixels";
this.labelShiftY=this.labelShiftX=0;
this.positionOnLine=.5;
this.direction=1;
this.lineSegment=this.extraAngle=0;
this.animateAngle = !0;
this.createEvents("animationStart", "animationEnd");
d.MapImage.base.construct.call(this, a);
d.applyTheme(this, a, this.cname);
this.delayCounter=0
},
validate: function(){
this.chart.imagesProcessor.createImage(this)
},
updatePosition: function(){
this.chart.imagesProcessor.updateSizeAndPosition(this)
},
remove: function(){
var a=this.displayObject;
a&&a.remove();
(a=this.imageLabel)&&a.remove()
},
animateTo: function(a, b, c, d){
isNaN(c)||(this.animationDuration=c);
d&&(this.easingFunction=d);
this.finalX=a;
this.finalY=b;
isNaN(this.longitude)||(this.initialX=this.longitude);
isNaN(this.left)||(this.initialX=this.left);
isNaN(this.right)||(this.initialX=this.right);
isNaN(this.latitude)||(this.initialY=this.latitude);
isNaN(this.top)||(this.initialY=this.top);
isNaN(this.bottom)||(this.initialY=this.bottom);
this.animatingAlong = !1;
this.animate()
},
animateAlong: function(a, b, c){
1==this.positionOnLine&&this.flipDirection&&(this.direction=-1, this.extraAngle=180);
isNaN(b)||(this.animationDuration=b);
c&&(this.easingFunction=c);
a&&(this.line=this.chart.getObjectById(a));
this.animateAlongLine=this.line;
this.animatingAlong = !0;
this.animate()
},
animate: function(){
var a=this.chart.imagesSettings,
b=this.animationDuration;
isNaN(b)&&(b=a.animationDuration);
this.totalFrames=b * d.updateRate;
b=1;
this.line&&a.adjustAnimationSpeed&&(this.line.distances&&(b=this.line.distances[this.lineSegment] * this.chart.zoomLevel(), b=Math.abs(b / a.baseAnimationDistance)), this.totalFrames=Math.round(b * this.totalFrames));
this.frame=0;
this.fire({
type: "animationStart",
chart: this.chart,
image: this,
lineSegment: this.lineSegment,
direction: this.direction
})
},
update: function(){
var a=this.totalFrames;
this.frame++;
this.delayCounter--;
0===this.delayCounter&&this.animateAlong();
if(!(0 < this.delayCounter))
if(this.frame <=a){
this.updatePosition();
var b=this.chart.imagesSettings,
c=this.easingFunction;
c||(c=b.easingFunction);
a=c(0, this.frame, 0, 1, a); - 1==this.direction&&(a=1 - a);
this.animatingAlong ? this.positionOnLine=a:(b=this.initialX + (this.finalX - this.initialX) * a, isNaN(this.longitude)||(this.longitude=b), isNaN(this.left)||(this.left=b), isNaN(this.right)||(this.right=b), a=this.initialY + (this.finalY - this.initialY) * a, isNaN(this.latitude)||(this.latitude=a), isNaN(this.top)||(this.top=a), isNaN(this.bottom)||(this.bottom=a))
} else this.frame==a + 1&&(this.fire({
type: "animationEnd",
chart: this.chart,
image: this,
lineSegment: this.lineSegment,
direction: this.direction
}), this.line&&this.animatingAlong&&(1==this.direction ? this.lineSegment < this.line.segments - 2 ? (this.lineSegment++, this.delayAnimateAlong(), this.positionOnLine=0):this.flipDirection ? (this.direction=-1, this.extraAngle=180, this.delayAnimateAlong()):this.loop&&(this.delayAnimateAlong(), this.lineSegment=0):0 < this.lineSegment ? (this.lineSegment--, this.delayAnimateAlong(), this.positionOnLine=0):this.loop&&this.flipDirection ? (this.direction=1, this.extraAngle=0, this.delayAnimateAlong()):this.loop&&this.delayAnimateAlong()))
},
delayAnimateAlong: function(){
this.animateAlongLine&&(this.delayCounter=this.chart.imagesSettings.pauseDuration * d.updateRate)
},
fixToStage: function(){
if(!isNaN(this.longitude)){
var a=this.chart.coordinatesToStageXY(this.longitude, this.latitude);
this.left=a.x;
this.top=a.y;
this.latitude=this.longitude=void 0
}
this.validate()
},
fixToMap: function(){
if(!isNaN(this.left)){
var a=this.chart.stageXYToCoordinates(this.left, this.top);
this.longitude=a.longitude;
this.latitude=a.latitude;
this.top=this.left=void 0
}
this.validate()
}})
})();
(function(){
var d=window.AmCharts;
d.degreesToRadians=function(a){
return a / 180 * Math.PI
};
d.radiansToDegrees=function(a){
return a / Math.PI * 180
};
d.getColorFade=function(a, b, c){
var e=d.hex2RGB(b);
b=e[0];
var f=e[1],
e=e[2],
g=d.hex2RGB(a);
a=g[0];
var h=g[1],
g=g[2];
a +=Math.round((b - a) * c);
h +=Math.round((f - h) * c);
g +=Math.round((e - g) * c);
return "rgb(" + a + "," + h + "," + g + ")"
};
d.hex2RGB=function(a){
return [parseInt(a.substring(1, 3), 16), parseInt(a.substring(3, 5), 16), parseInt(a.substring(5, 7), 16)]
};
d.processDescriptionWindow=function(a, b){
isNaN(b.descriptionWindowX)&&(b.descriptionWindowX=a.descriptionWindowX);
isNaN(b.descriptionWindowY)&&(b.descriptionWindowY=a.descriptionWindowY);
isNaN(b.descriptionWindowLeft)&&(b.descriptionWindowLeft=a.descriptionWindowLeft);
isNaN(b.descriptionWindowRight)&&(b.descriptionWindowRight=a.descriptionWindowRight);
isNaN(b.descriptionWindowTop)&&(b.descriptionWindowTop=a.descriptionWindowTop);
isNaN(b.descriptionWindowBottom)&&(b.descriptionWindowBottom=a.descriptionWindowBottom);
isNaN(b.descriptionWindowWidth)&&(b.descriptionWindowWidth=a.descriptionWindowWidth);
isNaN(b.descriptionWindowHeight)&&(b.descriptionWindowHeight=a.descriptionWindowHeight)
};
d.normalizePath=function(a){
for (var b="", c=d.parsePath(a.getAttribute("d")), e, f, g=Infinity, h=-Infinity, k=Infinity, l=-Infinity, m=0; m < c.length; m++){
var n=c[m],
p=n.letter,
r=n.x,
n=n.y;
"h"==p&&(p="L", r +=e, n=f);
"H"==p&&(p="L", n=f);
"v"==p&&(p="L", r=e, n +=f);
"V"==p&&(p="L", r=e);
if("m"===p||"l"===p) p=p.toUpperCase(), r +=e, n +=f;
r=d.roundTo(r, 3);
n=d.roundTo(n, 3);
e=r;
f=n;
r > h&&(h=r);
r < g&&(g=r);
n > l&&(l=n);
n < k&&(k=n);
b="z"==p.toLowerCase() ? b + "Z ":b + (p + " " + r + " " + n + " ")
}
a.setAttribute("d", b);
return {
minX: g,
maxX: h,
minY: k,
maxY: l
}};
d.mercatorLatitudeToRadians=function(a){
return Math.log(Math.tan(Math.PI / 4 + d.degreesToRadians(a) / 2))
};
d.parsePath=function(a){
a=a.match(/([MmLlHhVvZz]{1}[0-9.,\-\s]*)/g);
for (var b=[], c=0; c < a.length; c++){
var d=a[c].match(/([MmLlHhVvZz]{1})|([0-9.\-]+)/g),
f={
letter: d[0]
};
switch (d[0]){
case "Z":
case "Z":
case "z":
break;
case "V":
case "v":
f.y=Number(d[1]);
break;
case "H":
case "h":
f.x=Number(d[1]);
break;
default:
f.x=Number(d[1]), f.y=Number(d[2])
}
b.push(f)
}
return b
};
d.acos=function(a){
return 1 < a ? 0:-1 > a ? Math.PI:Math.acos(a)
};
d.asin=function(a){
return 1 < a ? Math.PI / 2:-1 > a ? -Math.PI / 2:Math.asin(a)
};
d.sinci=function(a){
return a ? a / Math.sin(a):1
};
d.asqrt=function(a){
return 0 < a ? Math.sqrt(a):0
};
d.winkel3=function(a, b){
var c=d.aitoff(a, b);
return [(c[0] + a / Math.PI * 2) / 2, (c[1] + b) / 2]
};
d.winkel3.invert=function(a, b){
var c=a,
e=b,
f=25,
g=Math.PI / 2;
do var h=Math.cos(e),
k=Math.sin(e),
l=Math.sin(2 * e),
m=k * k,
n=h * h,
p=Math.sin(c),
r=Math.cos(c / 2),
t=Math.sin(c / 2),
q=t * t,
y=1 - n * r * r,
B=y ? d.acos(h * r) * Math.sqrt(u=1 / y):u=0,
u, y=.5 * (2 * B * h * t + c / g) - a,
w=.5 * (B * k + e) - b,
v=.5 * u * (n * q + B * h * r * m) + .5 / g,
A=u * (p * l / 4 - B * k * t),
k=.125 * u * (l * t - B * k * n * p),
m=.5 * u * (m * r + B * q * h) + .5,
h=A * k - m * v,
A=(w * A - y * m) / h,
y=(y * k - w * v) / h,
c=c - A,
e=e - y; while ((1E-6 < Math.abs(A)||1E-6 < Math.abs(y))&&0 < --f);
return [c, e]
};
d.aitoff=function(a, b){
var c=Math.cos(b),
e=d.sinci(d.acos(c * Math.cos(a /=2)));
return [2 * c * Math.sin(a) * e, Math.sin(b) * e]
};
d.orthographic =
function(a, b){
return [Math.cos(b) * Math.sin(a), Math.sin(b)]
};
d.equirectangular=function(a, b){
return [a, b]
};
d.equirectangular.invert=function(a, b){
return [a, b]
};
d.eckert5=function(a, b){
var c=Math.PI;
return [a * (1 + Math.cos(b)) / Math.sqrt(2 + c), 2 * b / Math.sqrt(2 + c)]
};
d.eckert5.invert=function(a, b){
var c=Math.sqrt(2 + Math.PI),
d=b * c / 2;
return [c * a / (1 + Math.cos(d)), d]
};
d.eckert6=function(a, b){
for (var c=Math.PI, d=(1 + c / 2) * Math.sin(b), f=0, g=Infinity; 10 > f&&1E-5 < Math.abs(g); f++) b -=g = (b + Math.sin(b) - d) / (1 + Math.cos(b));
d=Math.sqrt(2 +
c);
return [a * (1 + Math.cos(b)) / d, 2 * b / d]
};
d.eckert6.invert=function(a, b){
var c=1 + Math.PI / 2,
e=Math.sqrt(c / 2);
return [2 * a * e / (1 + Math.cos(b *=e)), d.asin((b + Math.sin(b)) / c)]
};
d.mercator=function(a, b){
b >=Math.PI / 2 - .02&&(b=Math.PI / 2 - .02);
b <=-Math.PI / 2 + .02&&(b=-Math.PI / 2 + .02);
return [a, Math.log(Math.tan(Math.PI / 4 + b / 2))]
};
d.mercator.invert=function(a, b){
return [a, 2 * Math.atan(Math.exp(b)) - Math.PI / 2]
};
d.miller=function(a, b){
return [a, 1.25 * Math.log(Math.tan(Math.PI / 4 + .4 * b))]
};
d.miller.invert=function(a, b){
return [a, 2.5 *
Math.atan(Math.exp(.8 * b)) - .625 * Math.PI
]
};
d.eckert3=function(a, b){
var c=Math.PI,
d=Math.sqrt(c * (4 + c));
return [2 / d * a * (1 + Math.sqrt(1 - 4 * b * b / (c * c))), 4 / d * b]
};
d.eckert3.invert=function(a, b){
var c=Math.PI,
e=Math.sqrt(c * (4 + c)) / 2;
return [a * e / (1 + d.asqrt(1 - b * b * (4 + c) / (4 * c))), b * e / 2]
}})();
(function(){
var d=window.AmCharts;
d.MapData=d.Class({
inherits: d.MapObject,
construct: function(){
this.cname="MapData";
d.MapData.base.construct.call(this);
this.projection="mercator";
this.topLatitude=90;
this.bottomLatitude=-90;
this.leftLongitude=-180;
this.rightLongitude=180;
this.zoomLevel=1;
this.getAreasFromMap = !1
}})
})();
(function(){
var d=window.AmCharts;
d.DescriptionWindow=d.Class({
construct: function(){},
show: function(a, b, c, d){
var f=this;
f.chart=a;
var g=document.createElement("div");
g.style.position="absolute";
var h=a.classNamePrefix + "-description-";
g.className="ammapDescriptionWindow " + h + "div";
f.div=g;
b.appendChild(g);
var k=".gif";
a.svgIcons&&(k=".svg");
var l=document.createElement("img");
l.className="ammapDescriptionWindowCloseButton " + h + "close-img";
l.src=a.pathToImages + "xIcon" + k;
l.style.cssFloat="right";
l.style.cursor =
"pointer";
l.onclick=function(){
f.close()
};
l.onmouseover=function(){
l.src=a.pathToImages + "xIconH" + k
};
l.onmouseout=function(){
l.src=a.pathToImages + "xIcon" + k
};
g.appendChild(l);
b=document.createElement("div");
b.className="ammapDescriptionTitle " + h + "title-div";
b.onmousedown=function(){
f.div.style.zIndex=1E3
};
g.appendChild(b);
b.innerHTML=d;
d=b.offsetHeight;
b=document.createElement("div");
b.className="ammapDescriptionText " + h + "text-div";
b.style.maxHeight=f.maxHeight - d - 20 + "px";
g.appendChild(b);
b.innerHTML=c
},
close: function(){
try {
this.div.parentNode.removeChild(this.div), this.chart.fireClosed()
} catch (a){}}
})
})();
(function(){
var d=window.AmCharts;
d.ValueLegend=d.Class({
construct: function(a){
this.cname="ValueLegend";
this.enabled = !0;
this.showAsGradient = !1;
this.minValue=0;
this.height=12;
this.width=200;
this.bottom=this.left=10;
this.borderColor="#FFFFFF";
this.borderAlpha=this.borderThickness=1;
this.color="#000000";
this.fontSize=11;
d.applyTheme(this, a, this.cname)
},
init: function(a, b){
if(this.enabled){
var c=a.areasSettings.color,
e=a.areasSettings.colorSolid,
f=a.colorSteps;
d.remove(this.set);
var g=b.set();
this.set=g;
d.setCN(a, g, "value-legend");
var h=0,
k=this.minValue,
l=this.fontSize,
m=a.fontFamily,
n=this.color,
p={
precision: a.precision,
decimalSeparator: a.decimalSeparator,
thousandsSeparator: a.thousandsSeparator
};
void 0==k&&(k=d.formatNumber(a.minValueReal, p));
void 0!==k&&(h=d.text(b, k, n, m, l, "left"), h.translate(0, l / 2 - 1), d.setCN(a, h, "value-legend-min-label"), g.push(h), h=h.getBBox().height);
k=this.maxValue;
void 0===k&&(k=d.formatNumber(a.maxValueReal, p));
void 0!==k&&(h=d.text(b, k, n, m, l, "right"), h.translate(this.width, l / 2 - 1), d.setCN(a, h, "value-legend-max-label"), g.push(h), h=h.getBBox().height);
if(this.showAsGradient) c=d.rect(b, this.width, this.height, [c, e], 1, this.borderThickness, this.borderColor, 1, 0, 0), d.setCN(a, c, "value-legend-gradient"), c.translate(0, h), g.push(c);
else
for (l=this.width / f, m=0; m < f; m++) n=d.getColorFade(c, e, 1 * m / (f - 1)), n=d.rect(b, l, this.height, n, 1, this.borderThickness, this.borderColor, 1), d.setCN(a, n, "value-legend-color"), d.setCN(a, n, "value-legend-color-" + m), n.translate(l * m, h), g.push(n);
e=c = 0;
f=g.getBBox();
h=a.getY(this.bottom, !0);
l=a.getY(this.top);
m=a.getX(this.right, !0);
n=a.getX(this.left);
isNaN(l)||(c=l);
isNaN(h)||(c=h - f.height);
isNaN(n)||(e=n);
isNaN(m)||(e=m - f.width);
g.translate(e, c)
} else d.remove(this.set)
}})
})();
(function(){
var d=window.AmCharts;
d.ObjectList=d.Class({
construct: function(a){
this.divId=a
},
init: function(a){
this.chart=a;
var b=this.divId;
this.container&&(b=this.container);
this.div="object"!=typeof b ? document.getElementById(b):b;
b=document.createElement("div");
b.className="ammapObjectList " + a.classNamePrefix + "-object-list-div";
this.div.appendChild(b);
this.addObjects(a.dataProvider, b)
},
addObjects: function(a, b){
var c=this.chart,
d=document.createElement("ul");
d.className=c.classNamePrefix + "-object-list-ul";
var f;
if(a.areas)
for (f=0; f < a.areas.length; f++){
var g=a.areas[f];
void 0===g.showInList&&(g.showInList=c.showAreasInList);
this.addObject(g, d)
}
if(a.images)
for (f=0; f < a.images.length; f++) g=a.images[f], void 0===g.showInList&&(g.showInList=c.showImagesInList), this.addObject(g, d);
if(a.lines)
for (f=0; f < a.lines.length; f++) g=a.lines[f], void 0===g.showInList&&(g.showInList=c.showLinesInList), this.addObject(g, d);
0 < d.childNodes.length&&b.appendChild(d)
},
addObject: function(a, b){
var c=this;
if(a.showInList&&void 0!==a.title){
var d=c.chart,
f=document.createElement("li");
f.className=d.classNamePrefix + "-object-list-li";
var g=a.titleTr;
g||(g=a.title);
var g=document.createTextNode(g),
h=document.createElement("a");
h.className=d.classNamePrefix + "-object-list-a";
h.appendChild(g);
f.appendChild(h);
b.appendChild(f);
this.addObjects(a, f);
h.onmouseover=function(){
c.chart.rollOverMapObject(a, !1)
};
h.onmouseout=function(){
c.chart.rollOutMapObject(a)
};
h.onclick=function(){
c.chart.clickMapObject(a)
}}
}})
})();

CasperSecurity Mini