Completed
Push — master ( 0eb6ac...037138 )
by
unknown
03:41
created

d.Class.buildEverything   F

Complexity

Conditions 9
Paths 15553

Size

Total Lines 27

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 9
c 1
b 0
f 1
nc 15553
nop 0
dl 0
loc 27
rs 3
1
(function() {
2
    var d;
3
    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");
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4
    d.Class = function(a) {
5
        var b = function() {
6
            arguments[0] !== d.inheriting && (this.events = {}, this.construct.apply(this, arguments))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
7
        };
8
        a.inherits ? (b.prototype = new a.inherits(d.inheriting), b.base = a.inherits.prototype, delete a.inherits) : (b.prototype.createEvents = function() {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
9
            for (var a = 0; a < arguments.length; a++) this.events[arguments[a]] = []
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
10
        }, b.prototype.listenTo = function(a, b, c) {
11
            this.removeListener(a, b, c);
12
            a.events[b].push({
13
                handler: c,
14
                scope: this
15
            })
16
        }, b.prototype.addListener = function(a, b, c) {
17
            this.removeListener(this, a, b);
18
            a && this.events[a] && this.events[a].push({
19
                handler: b,
20
                scope: c
21
            })
22
        }, b.prototype.removeListener = function(a, b, c) {
23
            if (a && a.events && (a = a.events[b]))
24
                for (b = a.length - 1; 0 <= b; b--) a[b].handler === c && a.splice(b, 1)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
25
        }, b.prototype.fire = function(a) {
26
            for (var b = this.events[a.type], c = 0; c < b.length; c++) {
27
                var d = b[c];
28
                d.handler.call(d.scope, a)
29
            }
30
        });
31
        for (var c in a) b.prototype[c] = a[c];
0 ignored issues
show
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
32
        return b
33
    };
34
    d.addChart = function(a) {
35
        window.requestAnimationFrame ? d.animationRequested || (d.animationRequested = !0, window.requestAnimationFrame(d.update)) : d.updateInt || (d.updateInt = setInterval(function() {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
36
            d.update()
37
        }, Math.round(1E3 / d.updateRate)));
38
        d.charts.push(a)
39
    };
40
    d.removeChart = function(a) {
41
        for (var b = d.charts, c = b.length - 1; 0 <= c; c--) b[c] == a && b.splice(c, 1);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
42
        0 === b.length && (d.requestAnimation && (window.cancelAnimationFrame(d.requestAnimation), d.animationRequested = !1), d.updateInt && (clearInterval(d.updateInt), d.updateInt = NaN))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
43
    };
44
    d.isModern = !0;
45
    d.getIEVersion = function() {
46
        var a = 0,
47
            b, c;
48
        "Microsoft Internet Explorer" == navigator.appName && (b = navigator.userAgent, c = /MSIE ([0-9]{1,}[.0-9]{0,})/, null !== c.exec(b) && (a = parseFloat(RegExp.$1)));
0 ignored issues
show
Bug introduced by
The variable navigator seems to be never declared. If this is a global, consider adding a /** global: navigator */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
49
        return a
50
    };
51
    d.applyLang = function(a, b) {
52
        var c = d.translations;
53
        b.dayNames = d.extend({}, d.dayNames);
54
        b.shortDayNames = d.extend({}, d.shortDayNames);
55
        b.monthNames = d.extend({}, d.monthNames);
56
        b.shortMonthNames = d.extend({}, d.shortMonthNames);
57
        b.amString = "am";
58
        b.pmString = "pm";
59
        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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
60
        d.amString = b.amString;
61
        d.pmString = b.pmString
62
    };
63
    d.IEversion = d.getIEVersion();
64
    9 > d.IEversion && 0 < d.IEversion && (d.isModern = !1, d.isIE = !0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
65
    d.dx = 0;
66
    d.dy = 0;
67
    if (document.addEventListener || window.opera) d.isNN = !0, d.isIE = !1, d.dx = .5, d.dy = .5;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
68
    document.attachEvent && (d.isNN = !1, d.isIE = !0, d.isModern || (d.dx = 0, d.dy = 0));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
69
    window.chrome && (d.chrome = !0);
70
    d.handleMouseUp = function(a) {
71
        for (var b = d.charts, c = 0; c < b.length; c++) {
72
            var e = b[c];
73
            e && e.handleReleaseOutside && e.handleReleaseOutside(a)
74
        }
75
    };
76
    d.handleMouseMove = function(a) {
77
        for (var b = d.charts, c = 0; c < b.length; c++) {
78
            var e = b[c];
79
            e && e.handleMouseMove && e.handleMouseMove(a)
80
        }
81
    };
82
    d.handleWheel = function(a) {
83
        for (var b = d.charts, c = 0; c < b.length; c++) {
84
            var e = b[c];
85
            if (e && e.mouseIsOver) {
86
                (e.mouseWheelScrollEnabled || e.mouseWheelZoomEnabled) && e.handleWheel && e.handleWheel(a);
87
                break
88
            }
89
        }
90
    };
91
    d.resetMouseOver = function() {
92
        for (var a = d.charts, b = 0; b < a.length; b++) {
93
            var c = a[b];
94
            c && (c.mouseIsOver = !1)
95
        }
96
    };
97
    d.ready = function(a) {
98
        d.onReadyArray.push(a)
99
    };
100
    d.handleLoad = function() {
101
        d.isReady = !0;
102
        for (var a = d.onReadyArray, b = 0; b < a.length; b++) {
103
            var c = a[b];
104
            isNaN(d.processDelay) ? c() : setTimeout(c, d.processDelay * b)
105
        }
106
        d.onReadyArray = []
107
    };
108
    d.addInitHandler = function(a, b) {
109
        d.initHandlers.push({
110
            method: a,
111
            types: b
112
        })
113
    };
114
    d.callInitHandler = function(a) {
115
        var b = d.initHandlers;
116
        if (d.initHandlers)
117
            for (var c = 0; c < b.length; c++) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
118
                var e = b[c];
119
                e.types ? d.isInArray(e.types, a.type) && e.method(a) : e.method(a)
120
            }
121
    };
122
    d.getUniqueId = function() {
123
        d.uid++;
124
        return "AmChartsEl-" + d.uid
125
    };
126
    d.isNN && (document.addEventListener("mousemove", d.handleMouseMove), document.addEventListener("mouseup", d.handleMouseUp, !0), window.addEventListener("load", d.handleLoad, !0));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
127
    d.isIE && (document.attachEvent("onmousemove", d.handleMouseMove), document.attachEvent("onmouseup", d.handleMouseUp), window.attachEvent("onload", d.handleLoad));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
128
    d.addWheelListeners = function() {
129
        d.wheelIsListened || (d.isNN && (window.addEventListener("DOMMouseScroll", d.handleWheel, !0), document.addEventListener("mousewheel", d.handleWheel, !0)), d.isIE && document.attachEvent("onmousewheel", d.handleWheel));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
130
        d.wheelIsListened = !0
131
    };
132
    d.clear = function() {
133
        var a = d.charts;
134
        if (a)
135
            for (var b = a.length - 1; 0 <= b; b--) a[b].clear();
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
136
        d.updateInt && clearInterval(d.updateInt);
137
        d.requestAnimation && window.cancelAnimationFrame(d.requestAnimation);
138
        d.charts = [];
139
        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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
140
        d.isIE && (document.detachEvent("onmousemove", d.handleMouseMove), document.detachEvent("onmouseup", d.handleMouseUp), window.detachEvent("onload", d.handleLoad))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
141
    };
142
    d.makeChart = function(a, b, c) {
143
        var e = b.type,
144
            f = b.theme;
145
        d.isString(f) && (f = d.themes[f], b.theme = f);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
146
        var g;
147
        switch (e) {
0 ignored issues
show
Coding Style introduced by
As per coding-style, switch statements should have a default case.
Loading history...
148
            case "serial":
149
                g = new d.AmSerialChart(f);
150
                break;
151
            case "xy":
152
                g = new d.AmXYChart(f);
153
                break;
154
            case "pie":
155
                g = new d.AmPieChart(f);
156
                break;
157
            case "radar":
158
                g = new d.AmRadarChart(f);
159
                break;
160
            case "gauge":
161
                g = new d.AmAngularGauge(f);
162
                break;
163
            case "funnel":
164
                g = new d.AmFunnelChart(f);
165
                break;
166
            case "map":
167
                g = new d.AmMap(f);
168
                break;
169
            case "stock":
170
                g = new d.AmStockChart(f);
171
                break;
172
            case "gantt":
173
                g = new d.AmGanttChart(f)
174
        }
175
        d.extend(g, b);
0 ignored issues
show
Bug introduced by
The variable g seems to not be initialized for all possible execution paths. Are you sure extend handles undefined variables?
Loading history...
176
        d.isReady ? isNaN(c) ? g.write(a) : setTimeout(function() {
177
            d.realWrite(g, a)
0 ignored issues
show
Bug introduced by
The variable g seems to not be initialized for all possible execution paths. Are you sure realWrite handles undefined variables?
Loading history...
178
        }, c) : d.ready(function() {
179
            isNaN(c) ? g.write(a) : setTimeout(function() {
0 ignored issues
show
Bug introduced by
The variable g seems to not be initialized for all possible execution paths.
Loading history...
180
                d.realWrite(g, a)
0 ignored issues
show
Bug introduced by
The variable g seems to not be initialized for all possible execution paths. Are you sure realWrite handles undefined variables?
Loading history...
181
            }, c)
182
        });
183
        return g
184
    };
185
    d.realWrite = function(a, b) {
186
        a.write(b)
187
    };
188
    d.updateCount = 0;
189
    d.validateAt = Math.round(d.updateRate / 10);
190
    d.update = function() {
191
        var a = d.charts;
192
        d.updateCount++;
193
        var b = !1;
194
        d.updateCount == d.validateAt && (b = !0, d.updateCount = 0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
195
        if (a)
196
            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());
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
197
        window.requestAnimationFrame && (d.requestAnimation = window.requestAnimationFrame(d.update))
198
    };
199
    "complete" == document.readyState && d.handleLoad()
200
})();
201
(function() {
202
    var d = window.AmCharts;
203
    d.toBoolean = function(a, b) {
204
        if (void 0 === a) return b;
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
205
        switch (String(a).toLowerCase()) {
206
            case "true":
207
            case "yes":
208
            case "1":
209
                return !0;
210
            case "false":
211
            case "no":
212
            case "0":
213
            case null:
214
                return !1;
215
            default:
216
                return !!a
217
        }
218
    };
219
    d.removeFromArray = function(a, b) {
220
        var c;
221
        if (void 0 !== b && void 0 !== a)
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
222
            for (c = a.length - 1; 0 <= c; c--) a[c] == b && a.splice(c, 1)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
223
    };
224
    d.getPath = function() {
225
        var a = document.getElementsByTagName("script");
226
        if (a)
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if a is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
227
            for (var b = 0; b < a.length; b++) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
228
                var c = a[b].src;
229
                if (-1 !== c.search(/\/(amcharts|ammap)\.js/)) return c.replace(/\/(amcharts|ammap)\.js.*/, "/")
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
230
            }
0 ignored issues
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
231
    };
232
    d.normalizeUrl = function(a) {
233
        return "" !== a && -1 === a.search(/\/$/) ? a + "/" : a
234
    };
235
    d.isAbsolute = function(a) {
236
        return 0 === a.search(/^http[s]?:|^\//)
237
    };
238
    d.isInArray = function(a, b) {
239
        for (var c = 0; c < a.length; c++)
240
            if (a[c] == b) return !0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
241
        return !1
242
    };
243
    d.getDecimals = function(a) {
244
        var b = 0;
245
        isNaN(a) || (a = String(a), -1 != a.indexOf("e-") ? b = Number(a.split("-")[1]) : -1 != a.indexOf(".") && (b = a.split(".")[1].length));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
246
        return b
247
    };
248
    d.wordwrap = function(a, b, c, e) {
249
        var f, g, h, k;
250
        a += "";
251
        if (1 > b) return a;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
252
        f = -1;
253
        for (a = (k = a.split(/\r\n|\n|\r/)).length; ++f < a; k[f] += h) {
254
            h = k[f];
255
            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;
0 ignored issues
show
Unused Code introduced by
The assignment to variable g seems to be never used. Consider removing it.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Bug introduced by
The variable g seems to not be initialized for all possible execution paths.
Loading history...
256
            h = d.trim(h)
257
        }
258
        return k.join(c)
259
    };
260
    d.trim = function(a) {
261
        return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
262
    };
263
    d.wrappedText = function(a, b, c, e, f, g, h, k) {
264
        var l = d.text(a, b, c, e, f, g, h);
265
        if (l) {
266
            var m = l.getBBox();
267
            if (m.width > k) {
268
                var n = "\n";
269
                d.isModern || (n = "<br>");
270
                k = Math.floor(k / (m.width /
271
                    b.length));
272
                2 < k && (k -= 2);
273
                b = d.wordwrap(b, k, n, !0);
274
                l.remove();
275
                l = d.text(a, b, c, e, f, g, h)
276
            }
277
        }
278
        return l
279
    };
280
    d.getStyle = function(a, b) {
281
        var c = "";
282
        if (document.defaultView && document.defaultView.getComputedStyle) try {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
283
            c = document.defaultView.getComputedStyle(a, "").getPropertyValue(b)
284
        } catch (e) {} else a.currentStyle && (b = b.replace(/\-(\w)/g, function(a, b) {
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
285
            return b.toUpperCase()
286
        }), c = a.currentStyle[b]);
287
        return c
288
    };
289
    d.removePx = function(a) {
290
        if (void 0 !== a) return Number(a.substring(0, a.length - 2))
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if void(0) !== a is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
291
    };
292
    d.getURL = function(a, b) {
293
        if (a)
294
            if ("_self" != b && b)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
295
                if ("_top" == b && window.top) window.top.location.href = a;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
296
                else if ("_parent" == b && window.parent) window.parent.location.href = a;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
297
        else if ("_blank" == b) window.open(a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
298
        else {
299
            var c = document.getElementsByName(b)[0];
300
            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)
301
        } else window.location.href = a
302
    };
303
    d.ifArray = function(a) {
304
        return a && "object" == typeof a && 0 < a.length ? !0 : !1
305
    };
306
    d.callMethod = function(a, b) {
307
        var c;
308
        for (c = 0; c < b.length; c++) {
309
            var e = b[c];
310
            if (e) {
311
                if (e[a]) e[a]();
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
312
                var d = e.length;
313
                if (0 < d) {
314
                    var g;
315
                    for (g = 0; g < d; g++) {
316
                        var h = e[g];
317
                        if (h && h[a]) h[a]()
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
318
                    }
319
                }
320
            }
321
        }
322
    };
323
    d.toNumber = function(a) {
324
        return "number" == typeof a ? a : Number(String(a).replace(/[^0-9\-.]+/g, ""))
325
    };
326
    d.toColor = function(a) {
327
        if ("" !== a && void 0 !== a)
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
328
            if (-1 != a.indexOf(",")) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
329
                a = a.split(",");
330
                var b;
331
                for (b = 0; b < a.length; b++) {
332
                    var c = a[b].substring(a[b].length - 6, a[b].length);
333
                    a[b] = "#" + c
334
                }
335
            } else a = a.substring(a.length - 6, a.length), a = "#" + a;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
336
        return a
337
    };
338
    d.toCoordinate = function(a, b, c) {
339
        var e;
340
        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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
341
        return e
0 ignored issues
show
Bug introduced by
The variable e seems to not be initialized for all possible execution paths.
Loading history...
342
    };
343
    d.fitToBounds = function(a, b, c) {
344
        a < b && (a = b);
345
        a > c && (a = c);
346
        return a
347
    };
348
    d.isDefined = function(a) {
349
        return void 0 === a ? !1 : !0
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
350
    };
351
    d.stripNumbers = function(a) {
352
        return a.replace(/[0-9]+/g, "")
353
    };
354
    d.roundTo = function(a, b) {
355
        if (0 > b) return a;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
356
        var c = Math.pow(10, b);
357
        return Math.round(a * c) / c
358
    };
359
    d.toFixed = function(a, b) {
360
        var c = !1;
361
        0 > a && (c = !0, a = Math.abs(a));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
362
        var e = String(Math.round(a * Math.pow(10, b)));
363
        if (0 < b) {
364
            var d = e.length;
365
            if (d < b) {
366
                var g;
367
                for (g = 0; g <
368
                    b - d; g++) e = "0" + e
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
369
            }
370
            d = e.substring(0, e.length - b);
371
            "" === d && (d = 0);
372
            e = d + "." + e.substring(e.length - b, e.length);
373
            return c ? "-" + e : e
374
        }
375
        return String(e)
376
    };
377
    d.formatDuration = function(a, b, c, e, f, g) {
378
        var h = d.intervals,
379
            k = g.decimalSeparator;
380
        if (a >= h[b].contains) {
381
            var l = a - Math.floor(a / h[b].contains) * h[b].contains;
382
            "ss" == b ? (l = d.formatNumber(l, g), 1 == l.split(k)[0].length && (l = "0" + l)) : l = d.roundTo(l, g.precision);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
383
            ("mm" == b || "hh" == b) && 10 > l && (l = "0" + l);
384
            c = l + "" + e[b] + "" + c;
385
            a = Math.floor(a / h[b].contains);
386
            b = h[b].nextInterval;
387
            return d.formatDuration(a, b, c, e, f, g)
388
        }
389
        "ss" == b && (a = d.formatNumber(a, g), 1 == a.split(k)[0].length && (a = "0" + a));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
390
        "mm" == b && (a = d.roundTo(a, g.precision));
391
        ("mm" == b || "hh" == b) && 10 > a && (a = "0" + a);
392
        c = a + "" + e[b] + "" + c;
393
        if (h[f].count > h[b].count)
394
            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);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
395
        ":" == c.charAt(c.length - 1) && (c = c.substring(0, c.length - 1));
396
        return c
397
    };
398
    d.formatNumber = function(a, b, c, e, f) {
399
        a = d.roundTo(a, b.precision);
400
        isNaN(c) && (c = b.precision);
401
        var g = b.decimalSeparator;
402
        b = b.thousandsSeparator;
403
        var h;
404
        h = 0 > a ? "-" : "";
405
        a = Math.abs(a);
406
        var k = String(a),
407
            l = !1; - 1 != k.indexOf("e") && (l = !0);
408
        0 <= c && !l && (k = d.toFixed(a, c));
409
        var m = "";
410
        if (l) m = k;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
411
        else {
412
            var k = k.split("."),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 406. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
413
                l = String(k[0]),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable l already seems to be declared on line 407. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
414
                n;
415
            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);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
416
            void 0 !== k[1] && (m = m + g + k[1]);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
417
            void 0 !== c && 0 < c && "0" != m && (m = d.addZeroes(m, g, c))
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
418
        }
419
        m = h + m;
420
        "" === h && !0 === e && 0 !== a && (m = "+" + m);
421
        !0 === f && (m += "%");
422
        return m
423
    };
424
    d.addZeroes = function(a, b, c) {
425
        a = a.split(b);
426
        void 0 === a[1] && 0 < c && (a[1] = "0");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
427
        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]
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
428
    };
429
    d.scientificToNormal = function(a) {
430
        var b;
431
        a = String(a).split("e");
432
        var c;
433
        if ("-" == a[1].substr(0, 1)) {
434
            b = "0.";
435
            for (c = 0; c < Math.abs(Number(a[1])) - 1; c++) b += "0";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
436
            b += a[0].split(".").join("")
437
        } else {
438
            var e = 0;
439
            b = a[0].split(".");
440
            b[1] && (e = b[1].length);
441
            b = a[0].split(".").join("");
442
            for (c = 0; c < Math.abs(Number(a[1])) - e; c++) b += "0"
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
443
        }
444
        return b
445
    };
446
    d.toScientific = function(a, b) {
447
        if (0 === a) return "0";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
448
        var c = Math.floor(Math.log(Math.abs(a)) * Math.LOG10E),
449
            e = String(e).split(".").join(b);
0 ignored issues
show
Bug introduced by
The variable e seems to be never initialized.
Loading history...
450
        return String(e) + "e" + c
451
    };
452
    d.randomColor = function() {
453
        return "#" + ("00000" + (16777216 * Math.random() << 0).toString(16)).substr(-6)
454
    };
455
    d.hitTest = function(a, b, c) {
456
        var e = !1,
457
            f = a.x,
458
            g = a.x + a.width,
459
            h = a.y,
460
            k = a.y + a.height,
461
            l = d.isInRectangle;
462
        e || (e = l(f, h, b));
463
        e || (e = l(f, k, b));
464
        e || (e = l(g, h, b));
465
        e || (e = l(g, k, b));
466
        e || !0 === c || (e = d.hitTest(b, a, !0));
467
        return e
468
    };
469
    d.isInRectangle = function(a, b, c) {
470
        return a >= c.x - 5 && a <= c.x + c.width + 5 && b >= c.y - 5 && b <= c.y + c.height + 5 ? !0 : !1
471
    };
472
    d.isPercents = function(a) {
473
        if (-1 != String(a).indexOf("%")) return !0
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if -1 != String(a).indexOf("%") is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
474
    };
475
    d.formatValue = function(a, b, c, e, f, g, h, k) {
476
        if (b) {
477
            void 0 === f && (f = "");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
478
            var l;
479
            for (l = 0; l < c.length; l++) {
480
                var m = c[l],
481
                    n = b[m];
482
                void 0 !== n && (n = g ? d.addPrefix(n, k, h, e) : d.formatNumber(n, e), a = a.replace(new RegExp("\\[\\[" + f + "" + m + "\\]\\]", "g"), n))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
483
            }
484
        }
485
        return a
486
    };
487
    d.formatDataContextValue = function(a, b) {
488
        if (a) {
489
            var c = a.match(/\[\[.*?\]\]/g),
490
                e;
491
            for (e = 0; e < c.length; e++) {
492
                var d = c[e],
493
                    d = d.substr(2, d.length - 4);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 492. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
494
                void 0 !== b[d] && (a = a.replace(new RegExp("\\[\\[" + d + "\\]\\]", "g"), b[d]))
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
495
            }
496
        }
497
        return a
498
    };
499
    d.massReplace = function(a, b) {
500
        for (var c in b)
501
            if (b.hasOwnProperty(c)) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
502
                var e = b[c];
503
                void 0 === e && (e = "");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
504
                a = a.replace(c, e)
505
            }
506
        return a
507
    };
508
    d.cleanFromEmpty = function(a) {
509
        return a.replace(/\[\[[^\]]*\]\]/g, "")
510
    };
511
    d.addPrefix = function(a, b, c, e, f) {
512
        var g = d.formatNumber(a, e),
513
            h = "",
514
            k, l, m;
515
        if (0 === a) return "0";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
516
        0 > a && (h = "-");
517
        a = Math.abs(a);
518
        if (1 < a)
519
            for (k = b.length - 1; - 1 < k; k--) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
520
                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, {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
521
                        precision: -1,
522
                        decimalSeparator: e.decimalSeparator,
523
                        thousandsSeparator: e.thousandsSeparator
524
                    }), !f || l == c)) {
525
                    g = h + "" + m + "" + b[k].prefix;
526
                    break
527
                }
528
            } else
529
                for (k = 0; k < c.length; k++)
530
                    if (a <= c[k].number) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
531
                        l = a / c[k].number;
532
                        m = Math.abs(Math.floor(Math.log(l) * Math.LOG10E));
533
                        l = d.roundTo(l, m);
534
                        g = h + "" + l + "" + c[k].prefix;
535
                        break
536
                    }
537
        return g
538
    };
539
    d.remove = function(a) {
540
        a && a.remove()
541
    };
542
    d.getEffect = function(a) {
543
        ">" == a && (a = "easeOutSine");
544
        "<" == a && (a = "easeInSine");
545
        "elastic" == a && (a = "easeOutElastic");
546
        return a
547
    };
548
    d.getObjById = function(a, b) {
549
        var c, e;
550
        for (e = 0; e < a.length; e++) {
551
            var d = a[e];
552
            if (d.id == b) {
553
                c = d;
554
                break
555
            }
556
        }
557
        return c
0 ignored issues
show
Bug introduced by
The variable c seems to not be initialized for all possible execution paths.
Loading history...
558
    };
559
    d.applyTheme = function(a, b, c) {
560
        b || (b = d.theme);
561
        try {
562
            b = JSON.parse(JSON.stringify(b))
563
        } catch (e) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
564
        b && b[c] && d.extend(a, b[c])
565
    };
566
    d.isString = function(a) {
567
        return "string" == typeof a ? !0 : !1
568
    };
569
    d.extend = function(a, b, c) {
570
        var e;
571
        a || (a = {});
572
        for (e in b) c ? a.hasOwnProperty(e) || (a[e] = b[e]) : a[e] = b[e];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
573
        return a
574
    };
575
    d.copyProperties = function(a, b) {
576
        for (var c in a) a.hasOwnProperty(c) && "events" != c && void 0 !== a[c] && "function" != typeof a[c] && "cname" != c && (b[c] = a[c])
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
577
    };
578
    d.processObject = function(a, b, c, e) {
579
        if (!1 === a instanceof b && (a = e ? d.extend(new b(c), a) : d.extend(a, new b(c), !0), a.listeners))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
By convention, constructors like b should be capitalized.
Loading history...
580
            for (var f in a.listeners) b = a.listeners[f], a.addListener(b.event, b.method);
0 ignored issues
show
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
581
        return a
582
    };
583
    d.fixNewLines = function(a) {
584
        var b = RegExp("\\n", "g");
585
        a && (a = a.replace(b, "<br />"));
586
        return a
587
    };
588
    d.fixBrakes = function(a) {
589
        if (d.isModern) {
590
            var b = RegExp("<br>", "g");
591
            a && (a = a.replace(b, "\n"))
592
        } else a = d.fixNewLines(a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
593
        return a
594
    };
595
    d.deleteObject = function(a, b) {
596
        if (a) {
597
            if (void 0 === b || null === b) b = 20;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
598
            if (0 !== b)
599
                if ("[object Array]" === Object.prototype.toString.call(a))
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
600
                    for (var c = 0; c < a.length; c++) d.deleteObject(a[c], b - 1), a[c] = null;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
601
                else if (a && !a.tagName) try {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
602
                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))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
603
            } catch (e) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
604
        }
605
    };
606
    d.bounce = function(a, b, c, e, d) {
607
        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
608
    };
609
    d.easeInOutQuad = function(a, b, c, e, d) {
610
        b /= d / 2;
611
        if (1 > b) return e / 2 * b * b + c;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
612
        b--;
613
        return -e / 2 * (b * (b - 2) - 1) + c
614
    };
615
    d.easeInSine = function(a, b, c, e, d) {
616
        return -e * Math.cos(b / d * (Math.PI / 2)) + e + c
617
    };
618
    d.easeOutSine = function(a, b, c, e, d) {
619
        return e * Math.sin(b / d * (Math.PI / 2)) + c
620
    };
621
    d.easeOutElastic = function(a, b, c, e, d) {
622
        a = 1.70158;
0 ignored issues
show
Unused Code introduced by
The assignment to variable a seems to be never used. Consider removing it.
Loading history...
623
        var g = 0,
624
            h = e;
625
        if (0 === b) return c;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
626
        if (1 == (b /= d)) return c + e;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
627
        g || (g = .3 * d);
628
        h < Math.abs(e) ? (h = e, a = g / 4) : a = g / (2 * Math.PI) * Math.asin(e / h);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
629
        return h * Math.pow(2, -10 * b) * Math.sin(2 * (b * d - a) * Math.PI / g) + e + c
630
    };
631
    d.fixStepE = function(a) {
632
        a = a.toExponential(0).split("e");
633
        var b = Number(a[1]);
634
        9 == Number(a[0]) && b++;
635
        return d.generateNumber(1, b)
636
    };
637
    d.generateNumber = function(a, b) {
638
        var c = "",
639
            e;
640
        e = 0 > b ? Math.abs(b) - 1 : Math.abs(b);
641
        var d;
642
        for (d = 0; d < e; d++) c += "0";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
643
        return 0 > b ? Number("0." + c + String(a)) : Number(String(a) + c)
644
    };
645
    d.setCN = function(a, b, c, e) {
646
        if (a.addClassNames && b && (b = b.node) && c) {
647
            var d = b.getAttribute("class");
648
            a = a.classNamePrefix + "-";
649
            e && (a = "");
650
            d ? b.setAttribute("class", d + " " + a + c) : b.setAttribute("class", a + c)
651
        }
652
    };
653
    d.removeCN = function(a, b, c) {
654
        b && (b = b.node) && c && (b = b.classList) && b.remove(a.classNamePrefix + "-" + c)
655
    };
656
    d.parseDefs = function(a, b) {
657
        for (var c in a) {
0 ignored issues
show
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
658
            var e = typeof a[c];
659
            if (0 < a[c].length && "object" == e)
660
                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);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
661
            else "object" == e ? (e = document.createElementNS(d.SVG_NS, c), b.appendChild(e), d.parseDefs(a[c], e)) : b.setAttribute(c, a[c])
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
662
        }
663
    }
664
})();
665
(function() {
666
    var d = window.AmCharts;
667
    d.AmDraw = d.Class({
668
        construct: function(a, b, c, e) {
669
            d.SVG_NS = "http://www.w3.org/2000/svg";
670
            d.SVG_XLINK = "http://www.w3.org/1999/xlink";
671
            d.hasSVG = !!document.createElementNS && !!document.createElementNS(d.SVG_NS, "svg").createSVGRect;
672
            1 > b && (b = 10);
673
            1 > c && (c = 10);
674
            this.div = a;
675
            this.width = b;
676
            this.height = c;
677
            this.rBin = document.createElement("div");
678
            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))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
679
        },
680
        createSvgElement: function(a) {
681
            return document.createElementNS(d.SVG_NS, a)
682
        },
683
        circle: function(a, b, c, e) {
684
            var f = new d.AmDObject("circle", this);
685
            f.attr({
686
                r: c,
687
                cx: a,
688
                cy: b
689
            });
690
            this.addToContainer(f.node, e);
691
            return f
692
        },
693
        ellipse: function(a, b, c, e, f) {
694
            var g = new d.AmDObject("ellipse", this);
695
            g.attr({
696
                rx: c,
697
                ry: e,
698
                cx: a,
699
                cy: b
700
            });
701
            this.addToContainer(g.node, f);
702
            return g
703
        },
704
        setSize: function(a, b) {
705
            0 < a && 0 < b && (this.container.style.width = a + "px", this.container.style.height = b + "px")
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
706
        },
707
        rect: function(a, b, c, e, f, g, h) {
708
            var k = new d.AmDObject("rect", this);
709
            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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
710
            1 > c && (c = 1);
711
            1 > e && (e = 1);
712
            k.attr({
713
                x: a,
714
                y: b,
715
                width: c,
716
                height: e,
717
                rx: f,
718
                ry: f,
719
                "stroke-width": g
720
            });
721
            this.addToContainer(k.node, h);
722
            return k
723
        },
724
        image: function(a, b, c, e, f, g) {
725
            var h = new d.AmDObject("image", this);
726
            h.attr({
727
                x: b,
728
                y: c,
729
                width: e,
730
                height: f
731
            });
732
            this.R.path(h, a);
733
            this.addToContainer(h.node, g);
734
            return h
735
        },
736
        addToContainer: function(a, b) {
737
            b || (b = this.container);
738
            b.appendChild(a)
739
        },
740
        text: function(a, b, c) {
741
            return this.R.text(a, b, c)
742
        },
743
        path: function(a, b, c, e) {
744
            var f = new d.AmDObject("path", this);
745
            e || (e = "100,100");
746
            f.attr({
747
                cs: e
748
            });
749
            c ? f.attr({
750
                dd: a
751
            }) : f.attr({
752
                d: a
753
            });
754
            this.addToContainer(f.node, b);
755
            return f
756
        },
757
        set: function(a) {
758
            return this.R.set(a)
759
        },
760
        remove: function(a) {
761
            if (a) {
762
                var b = this.rBin;
763
                b.appendChild(a);
764
                b.innerHTML = ""
765
            }
766
        },
767
        renderFix: function() {
768
            var a = this.container,
769
                b = a.style;
770
            b.top = "0px";
771
            b.left = "0px";
772
            try {
773
                var c = a.getBoundingClientRect(),
774
                    e = c.left - Math.round(c.left),
775
                    d = c.top - Math.round(c.top);
776
                e && (b.left = e + "px");
777
                d && (b.top = d + "px")
778
            } catch (g) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
779
        },
780
        update: function() {
781
            this.R.update()
782
        },
783
        addDefs: function(a) {
784
            if (d.hasSVG) {
785
                var b = this.createSvgElement("desc"),
786
                    c = this.container;
787
                c.setAttribute("version", "1.1");
788
                c.style.position = "absolute";
789
                this.setSize(this.width, this.height);
790
                if (a.accessibleTitle) {
791
                    var e = this.createSvgElement("text");
792
                    c.appendChild(e);
793
                    e.innerHTML = a.accessibleTitle;
794
                    e.style.opacity = 0
795
                }
796
                d.rtl && (c.setAttribute("direction", "rtl"), c.style.left = "auto", c.style.right = "0px");
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
797
                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))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
798
            }
799
        }
800
    })
801
})();
802
(function() {
803
    var d = window.AmCharts;
804
    d.AmDObject = d.Class({
805
        construct: function(a, b) {
806
            this.D = b;
807
            this.R = b.R;
808
            this.node = this.R.create(this, a);
809
            this.y = this.x = 0;
810
            this.scale = 1
811
        },
812
        attr: function(a) {
813
            this.R.attr(this, a);
814
            return this
815
        },
816
        getAttr: function(a) {
817
            return this.node.getAttribute(a)
818
        },
819
        setAttr: function(a, b) {
820
            this.R.setAttr(this, a, b);
821
            return this
822
        },
823
        clipRect: function(a, b, c, e) {
824
            this.R.clipRect(this, a, b, c, e)
825
        },
826
        translate: function(a, b, c, e) {
827
            e || (a = Math.round(a), b = Math.round(b));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
828
            this.R.move(this, a, b, c);
829
            this.x = a;
830
            this.y = b;
831
            this.scale = c;
832
            this.angle && this.rotate(this.angle)
833
        },
834
        rotate: function(a, b) {
835
            this.R.rotate(this, a, b);
836
            this.angle = a
837
        },
838
        animate: function(a, b, c) {
839
            for (var e in a)
840
                if (a.hasOwnProperty(e)) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
841
                    var f = e,
842
                        g = a[e];
843
                    c = d.getEffect(c);
844
                    this.R.animate(this, f, g, b, c)
845
                }
846
        },
847
        push: function(a) {
848
            if (a) {
849
                var b = this.node;
850
                b.appendChild(a.node);
851
                var c = a.clipPath;
852
                c && b.appendChild(c);
853
                (a = a.grad) && b.appendChild(a)
854
            }
855
        },
856
        text: function(a) {
857
            this.R.setText(this, a)
858
        },
859
        remove: function() {
860
            this.stop();
861
            this.R.remove(this)
862
        },
863
        clear: function() {
864
            var a = this.node;
865
            if (a.hasChildNodes())
866
                for (; 1 <= a.childNodes.length;) a.removeChild(a.firstChild)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
867
        },
868
        hide: function() {
869
            this.setAttr("visibility", "hidden")
870
        },
871
        show: function() {
872
            this.setAttr("visibility", "visible")
873
        },
874
        getBBox: function() {
875
            return this.R.getBBox(this)
876
        },
877
        toFront: function() {
878
            var a = this.node;
879
            if (a) {
880
                this.prevNextNode = a.nextSibling;
881
                var b = a.parentNode;
882
                b && b.appendChild(a)
883
            }
884
        },
885
        toPrevious: function() {
886
            var a = this.node;
887
            a && this.prevNextNode && (a = a.parentNode) && a.insertBefore(this.prevNextNode, null)
888
        },
889
        toBack: function() {
890
            var a = this.node;
891
            if (a) {
892
                this.prevNextNode = a.nextSibling;
893
                var b = a.parentNode;
894
                if (b) {
895
                    var c = b.firstChild;
896
                    c && b.insertBefore(a, c)
897
                }
898
            }
899
        },
900
        mouseover: function(a) {
901
            this.R.addListener(this, "mouseover", a);
902
            return this
903
        },
904
        mouseout: function(a) {
905
            this.R.addListener(this, "mouseout", a);
906
            return this
907
        },
908
        click: function(a) {
909
            this.R.addListener(this, "click", a);
910
            return this
911
        },
912
        dblclick: function(a) {
913
            this.R.addListener(this, "dblclick", a);
914
            return this
915
        },
916
        mousedown: function(a) {
917
            this.R.addListener(this, "mousedown", a);
918
            return this
919
        },
920
        mouseup: function(a) {
921
            this.R.addListener(this, "mouseup", a);
922
            return this
923
        },
924
        touchmove: function(a) {
925
            this.R.addListener(this, "touchmove", a);
926
            return this
927
        },
928
        touchstart: function(a) {
929
            this.R.addListener(this, "touchstart", a);
930
            return this
931
        },
932
        touchend: function(a) {
933
            this.R.addListener(this, "touchend", a);
934
            return this
935
        },
936
        keyup: function(a) {
937
            this.R.addListener(this, "keyup", a);
938
            return this
939
        },
940
        focus: function(a) {
941
            this.R.addListener(this, "focus", a);
942
            return this
943
        },
944
        blur: function(a) {
945
            this.R.addListener(this, "blur", a);
946
            return this
947
        },
948
        contextmenu: function(a) {
949
            this.node.addEventListener ? this.node.addEventListener("contextmenu", a, !0) : this.R.addListener(this, "contextmenu", a);
950
            return this
951
        },
952
        stop: function() {
953
            d.removeFromArray(this.R.animations, this.an_translate);
954
            d.removeFromArray(this.R.animations, this.an_y);
955
            d.removeFromArray(this.R.animations, this.an_x)
956
        },
957
        length: function() {
958
            return this.node.childNodes.length
959
        },
960
        gradient: function(a, b, c) {
961
            this.R.gradient(this, a, b, c)
962
        },
963
        pattern: function(a, b, c) {
964
            a && this.R.pattern(this, a, b, c)
965
        }
966
    })
967
})();
968
(function() {
969
    var d = window.AmCharts;
970
    d.SVGRenderer = d.Class({
971
        construct: function(a) {
972
            this.D = a;
973
            this.animations = []
974
        },
975
        create: function(a, b) {
976
            return document.createElementNS(d.SVG_NS, b)
977
        },
978
        attr: function(a, b) {
979
            for (var c in b) b.hasOwnProperty(c) && this.setAttr(a, c, b[c])
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
980
        },
981
        setAttr: function(a, b, c) {
982
            void 0 !== c && a.node.setAttribute(b, c)
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
983
        },
984
        animate: function(a, b, c, e, f) {
985
            a.animationFinished = !1;
986
            var g = a.node;
987
            a["an_" + b] && d.removeFromArray(this.animations, a["an_" + b]);
988
            "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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
989
            c = {
990
                obj: a,
991
                frame: 0,
992
                attribute: b,
993
                from: g,
994
                to: c,
995
                time: e,
996
                effect: f
997
            };
998
            this.animations.push(c);
999
            a["an_" + b] = c
1000
        },
1001
        update: function() {
1002
            var a, b = this.animations;
1003
            for (a = b.length - 1; 0 <= a; a--) {
1004
                var c = b[a],
1005
                    e = c.time * d.updateRate,
1006
                    f = c.frame + 1,
1007
                    g = c.obj,
1008
                    h = c.attribute,
1009
                    k, l, m;
1010
                if (f <= e) {
1011
                    c.frame++;
1012
                    if ("translate" == h) {
1013
                        k = c.from.split(",");
1014
                        h = Number(k[0]);
1015
                        k = Number(k[1]);
1016
                        isNaN(k) && (k = 0);
1017
                        l = c.to.split(",");
1018
                        m = Number(l[0]);
1019
                        l = Number(l[1]);
1020
                        m = 0 === m - h ? m : Math.round(d[c.effect](0, f, h, m - h, e));
1021
                        c = 0 === l - k ? l : Math.round(d[c.effect](0, f, k, l - k, e));
1022
                        h = "transform";
1023
                        if (isNaN(m) || isNaN(c)) continue;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1024
                        c = "translate(" + m + "," + c + ")"
1025
                    } 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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1026
                    this.setAttr(g, h, c)
1027
                } 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)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1028
            }
1029
        },
1030
        getBBox: function(a) {
1031
            if (a = a.node) try {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1032
                return a.getBBox()
1033
            } catch (b) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
1034
            return {
1035
                width: 0,
1036
                height: 0,
1037
                x: 0,
1038
                y: 0
1039
            }
1040
        },
1041
        path: function(a, b) {
1042
            a.node.setAttributeNS(d.SVG_XLINK, "xlink:href", b)
1043
        },
1044
        clipRect: function(a, b, c, e, f) {
1045
            var g = a.node,
1046
                h = a.clipPath;
1047
            h && this.D.remove(h);
1048
            var k = g.parentNode;
1049
            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)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1050
        },
1051
        text: function(a, b, c) {
1052
            var e = new d.AmDObject("text", this.D);
1053
            a = String(a).split("\n");
1054
            var f = d.removePx(b["font-size"]),
1055
                g;
1056
            for (g = 0; g < a.length; g++) {
1057
                var h = this.create(null, "tspan");
1058
                h.appendChild(document.createTextNode(a[g]));
1059
                h.setAttribute("y", (f + 2) * g + Math.round(f / 2));
1060
                h.setAttribute("x", 0);
1061
                e.node.appendChild(h)
1062
            }
1063
            e.node.setAttribute("y", Math.round(f / 2));
1064
            this.attr(e, b);
1065
            this.D.addToContainer(e.node, c);
1066
            return e
1067
        },
1068
        setText: function(a, b) {
1069
            var c = a.node;
1070
            c && (c.removeChild(c.firstChild), c.appendChild(document.createTextNode(b)))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1071
        },
1072
        move: function(a, b, c, e) {
1073
            isNaN(b) && (b = 0);
1074
            isNaN(c) && (c = 0);
1075
            b = "translate(" + b + "," + c + ")";
1076
            e && (b = b + " scale(" + e + ")");
1077
            this.setAttr(a, "transform", b)
1078
        },
1079
        rotate: function(a, b) {
1080
            var c = a.node.getAttribute("transform"),
1081
                e = "rotate(" + b + ")";
1082
            c && (e = c + " " + e);
1083
            this.setAttr(a, "transform", e)
1084
        },
1085
        set: function(a) {
1086
            var b = new d.AmDObject("g", this.D);
1087
            this.D.container.appendChild(b.node);
1088
            if (a) {
1089
                var c;
1090
                for (c = 0; c < a.length; c++) b.push(a[c])
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1091
            }
1092
            return b
1093
        },
1094
        addListener: function(a, b, c) {
1095
            a.node["on" + b] = c
1096
        },
1097
        gradient: function(a, b, c, e) {
1098
            var f = a.node,
1099
                g = a.grad;
1100
            g && this.D.remove(g);
1101
            b = document.createElementNS(d.SVG_NS, b);
1102
            g = d.getUniqueId();
1103
            b.setAttribute("id", g);
1104
            if (!isNaN(e)) {
1105
                var h = 0,
1106
                    k = 0,
1107
                    l = 0,
1108
                    m = 0;
1109
                90 == e ? l = 100 : 270 == e ? m = 100 : 180 == e ? h = 100 : 0 === e && (k = 100);
1110
                b.setAttribute("x1", h + "%");
1111
                b.setAttribute("x2", k + "%");
1112
                b.setAttribute("y1", l + "%");
1113
                b.setAttribute("y2", m + "%")
1114
            }
1115
            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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1116
            f.parentNode.appendChild(b);
1117
            c = "#";
1118
            d.baseHref && !d.isIE && (c = this.removeTarget(window.location.href) + c);
1119
            f.setAttribute("fill", "url(" + c + g + ")");
1120
            a.grad = b
1121
        },
1122
        removeTarget: function(a) {
1123
            return a.split("#")[0]
1124
        },
1125
        pattern: function(a, b, c, e) {
1126
            var f = a.node;
1127
            isNaN(c) && (c = 1);
1128
            var g = a.patternNode;
1129
            g && this.D.remove(g);
1130
            var g = document.createElementNS(d.SVG_NS, "pattern"),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable g already seems to be declared on line 1128. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1131
                h = d.getUniqueId(),
1132
                k = b;
1133
            b.url && (k = b.url);
1134
            d.isAbsolute(k) || -1 != k.indexOf("data:image") || (k = e + k);
1135
            e = Number(b.width);
1136
            isNaN(e) && (e = 4);
1137
            var l = Number(b.height);
1138
            isNaN(l) && (l = 4);
1139
            e /= c;
1140
            l /= c;
1141
            c = b.x;
1142
            isNaN(c) && (c = 0);
1143
            var m = -Math.random() * Number(b.randomX);
1144
            isNaN(m) || (c = m);
1145
            m = b.y;
1146
            isNaN(m) && (m = 0);
1147
            var n = -Math.random() * Number(b.randomY);
1148
            isNaN(n) || (m = n);
1149
            g.setAttribute("id", h);
1150
            g.setAttribute("width", e);
1151
            g.setAttribute("height", l);
1152
            g.setAttribute("patternUnits", "userSpaceOnUse");
1153
            g.setAttribute("xlink:href", k);
1154
            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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1155
            this.D.image(k, 0, 0, e, l, g).translate(c, m);
1156
            k = "#";
1157
            d.baseHref && !d.isIE && (k = this.removeTarget(window.location.href) + k);
1158
            f.setAttribute("fill", "url(" + k + h + ")");
1159
            a.patternNode = g;
1160
            f.parentNode.appendChild(g)
1161
        },
1162
        remove: function(a) {
1163
            a.clipPath && this.D.remove(a.clipPath);
1164
            a.grad && this.D.remove(a.grad);
1165
            a.patternNode && this.D.remove(a.patternNode);
1166
            this.D.remove(a.node)
1167
        }
1168
    })
1169
})();
1170
(function() {
1171
    var d = window.AmCharts;
1172
    d.AmChart = d.Class({
1173
        construct: function(a) {
1174
            this.svgIcons = this.tapToActivate = !0;
1175
            this.theme = a;
1176
            this.classNamePrefix = "amcharts";
1177
            this.addClassNames = !1;
1178
            this.version = "3.21.6";
1179
            d.addChart(this);
1180
            this.createEvents("buildStarted", "dataUpdated", "init", "rendered", "drawn", "failed", "resized", "animationFinished");
1181
            this.height = this.width = "100%";
1182
            this.dataChanged = !0;
1183
            this.chartCreated = !1;
1184
            this.previousWidth = this.previousHeight = 0;
1185
            this.backgroundColor = "#FFFFFF";
1186
            this.borderAlpha = this.backgroundAlpha = 0;
1187
            this.color = this.borderColor = "#000000";
1188
            this.fontFamily = "Verdana";
1189
            this.fontSize = 16;
1190
            this.usePrefixes = !1;
1191
            this.autoResize = !0;
1192
            this.autoDisplay = !1;
1193
            this.addCodeCredits = this.accessible = !0;
1194
            this.touchStartTime = this.touchClickDuration = 0;
1195
            this.precision = -1;
1196
            this.percentPrecision = 2;
1197
            this.decimalSeparator = ".";
1198
            this.thousandsSeparator = ",";
1199
            this.labels = [];
1200
            this.allLabels = [];
1201
            this.titles = [];
1202
            this.marginRight = this.marginLeft = this.autoMarginOffset = 0;
1203
            this.timeOuts = [];
1204
            this.creditsPosition = "top-left";
1205
            var b = document.createElement("div"),
1206
                c = b.style;
1207
            c.overflow = "hidden";
1208
            c.position = "relative";
1209
            c.textAlign = "left";
1210
            this.chartDiv = b;
1211
            b = document.createElement("div");
1212
            c = b.style;
1213
            c.overflow = "hidden";
1214
            c.position = "relative";
1215
            c.textAlign = "left";
1216
            this.legendDiv = b;
1217
            this.titleHeight = 0;
1218
            this.hideBalloonTime = 150;
1219
            this.handDrawScatter = 2;
1220
            this.cssScale = this.handDrawThickness = 1;
1221
            this.cssAngle = 0;
1222
            this.prefixesOfBigNumbers = [{
1223
                number: 1E3,
1224
                prefix: "k"
1225
            }, {
1226
                number: 1E6,
1227
                prefix: "M"
1228
            }, {
1229
                number: 1E9,
1230
                prefix: "G"
1231
            }, {
1232
                number: 1E12,
1233
                prefix: "T"
1234
            }, {
1235
                number: 1E15,
1236
                prefix: "P"
1237
            }, {
1238
                number: 1E18,
1239
                prefix: "E"
1240
            }, {
1241
                number: 1E21,
1242
                prefix: "Z"
1243
            }, {
1244
                number: 1E24,
1245
                prefix: "Y"
1246
            }];
1247
            this.prefixesOfSmallNumbers = [{
1248
                number: 1E-24,
1249
                prefix: "y"
1250
            }, {
1251
                number: 1E-21,
1252
                prefix: "z"
1253
            }, {
1254
                number: 1E-18,
1255
                prefix: "a"
1256
            }, {
1257
                number: 1E-15,
1258
                prefix: "f"
1259
            }, {
1260
                number: 1E-12,
1261
                prefix: "p"
1262
            }, {
1263
                number: 1E-9,
1264
                prefix: "n"
1265
            }, {
1266
                number: 1E-6,
1267
                prefix: "\u03bc"
1268
            }, {
1269
                number: .001,
1270
                prefix: "m"
1271
            }];
1272
            this.panEventsEnabled = !0;
1273
            this.product = "amcharts";
1274
            this.animations = [];
1275
            this.balloon = new d.AmBalloon(this.theme);
1276
            this.balloon.chart = this;
1277
            this.processTimeout = 0;
1278
            this.processCount = 1E3;
1279
            this.animatable = [];
1280
            this.langObj = {};
1281
            d.applyTheme(this, a, "AmChart")
1282
        },
1283
        drawChart: function() {
1284
            0 < this.realWidth && 0 < this.realHeight && (this.drawBackground(), this.redrawLabels(), this.drawTitles(), this.brr(), this.renderFix(), this.chartDiv && (this.boundingRect = this.chartDiv.getBoundingClientRect()))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1285
        },
1286
        makeAccessible: function(a, b, c) {
1287
            this.accessible && a && (c && a.setAttr("role", c), a.setAttr("aria-label", b))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1288
        },
1289
        drawBackground: function() {
1290
            d.remove(this.background);
1291
            var a = this.container,
1292
                b = this.backgroundColor,
1293
                c = this.backgroundAlpha,
1294
                e = this.set;
1295
            d.isModern || 0 !== c || (c = .001);
1296
            var f = this.updateWidth();
1297
            this.realWidth = f;
1298
            var g = this.updateHeight();
1299
            this.realHeight = g;
1300
            b = d.polygon(a, [0, f - 1, f - 1, 0], [0, 0, g - 1, g - 1], b, c, 1, this.borderColor, this.borderAlpha);
1301
            d.setCN(this, b, "bg");
1302
            this.background = b;
1303
            e.push(b);
1304
            if (b = this.backgroundImage) a = a.image(b, 0, 0, f, g), d.setCN(this, b, "bg-image"), this.bgImg = a, e.push(a)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1305
        },
1306
        drawTitles: function(a) {
1307
            var b = this.titles;
1308
            this.titleHeight = 0;
1309
            if (d.ifArray(b)) {
1310
                var c = 20,
1311
                    e;
1312
                for (e = 0; e < b.length; e++) {
1313
                    var f = b[e],
1314
                        f = d.processObject(f, d.Title, this.theme);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable f already seems to be declared on line 1313. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1315
                    if (!1 !== f.enabled) {
1316
                        var g = f.color;
1317
                        void 0 === g && (g = this.color);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1318
                        var h = f.size;
1319
                        isNaN(h) && (h = this.fontSize + 2);
1320
                        isNaN(f.alpha);
1321
                        var k = this.marginLeft,
1322
                            l = !0;
1323
                        void 0 !== f.bold && (l = f.bold);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1324
                        g = d.wrappedText(this.container, f.text, g, this.fontFamily, h, "middle", l, this.realWidth - 35 - this.marginRight - k);
1325
                        g.translate(k + (this.realWidth - this.marginRight - k) / 2, c);
1326
                        g.node.style.pointerEvents = "none";
1327
                        f.sprite = g;
1328
                        void 0 !== f.tabIndex && g.setAttr("tabindex", f.tabIndex);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1329
                        d.setCN(this, g, "title");
1330
                        f.id && d.setCN(this, g, "title-" + f.id);
1331
                        g.attr({
1332
                            opacity: f.alpha
1333
                        });
1334
                        c += g.getBBox().height +
1335
                            5;
1336
                        a ? g.remove() : this.freeLabelsSet.push(g)
1337
                    }
1338
                }
1339
                this.titleHeight = c - 10
1340
            }
1341
        },
1342
        write: function(a) {
1343
            var b = this;
1344
            if (b.listeners)
1345
                for (var c = 0; c < b.listeners.length; c++) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1346
                    var e = b.listeners[c];
1347
                    b.addListener(e.event, e.method)
1348
                }
1349
            b.fire({
1350
                type: "buildStarted",
1351
                chart: b
1352
            });
1353
            b.afterWriteTO && clearTimeout(b.afterWriteTO);
1354
            0 < b.processTimeout ? b.afterWriteTO = setTimeout(function() {
1355
                b.afterWrite.call(b, a)
1356
            }, b.processTimeout) : b.afterWrite(a)
1357
        },
1358
        afterWrite: function(a) {
1359
            var b;
1360
            if (b = "object" != typeof a ? document.getElementById(a) : a) {
1361
                for (; b.firstChild;) b.removeChild(b.firstChild);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1362
                this.div = b;
1363
                b.style.overflow = "hidden";
1364
                b.style.textAlign = "left";
1365
                a = this.chartDiv;
1366
                var c = this.legendDiv,
1367
                    e = this.legend,
1368
                    f = c.style,
1369
                    g = a.style;
1370
                this.measure();
1371
                this.previousHeight = this.divRealHeight;
1372
                this.previousWidth = this.divRealWidth;
1373
                var h, k = document.createElement("div");
1374
                h = k.style;
1375
                h.position = "relative";
1376
                this.containerDiv = k;
1377
                k.className = this.classNamePrefix + "-main-div";
1378
                a.className = this.classNamePrefix + "-chart-div";
1379
                b.appendChild(k);
1380
                (b = this.exportConfig) && d.AmExport && !this.AmExport && (this.AmExport = new d.AmExport(this, b));
1381
                this.amExport && d.AmExport && (this.AmExport = d.extend(this.amExport, new d.AmExport(this), !0));
1382
                this.AmExport && this.AmExport.init && this.AmExport.init();
1383
                if (e) {
1384
                    e = this.addLegend(e, e.divId);
1385
                    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) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Coding Style introduced by
As per coding-style, switch statements should have a default case.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1386
                        case "bottom":
1387
                            k.appendChild(a);
1388
                            k.appendChild(c);
1389
                            break;
1390
                        case "top":
1391
                            k.appendChild(c);
1392
                            k.appendChild(a);
1393
                            break;
1394
                        case "absolute":
1395
                            f.position = "absolute";
1396
                            g.position = "absolute";
1397
                            void 0 !== e.left && (f.left = e.left + "px");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1398
                            void 0 !== e.right && (f.right = e.right + "px");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1399
                            void 0 !== e.top && (f.top = e.top + "px");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1400
                            void 0 !== e.bottom && (f.bottom = e.bottom + "px");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1401
                            e.marginLeft = 0;
1402
                            e.marginRight = 0;
1403
                            k.appendChild(a);
1404
                            k.appendChild(c);
1405
                            break;
1406
                        case "right":
1407
                            f.position = "relative";
1408
                            g.position = "absolute";
1409
                            k.appendChild(a);
1410
                            k.appendChild(c);
1411
                            break;
1412
                        case "left":
1413
                            f.position = "absolute";
1414
                            g.position = "relative";
1415
                            k.appendChild(a);
1416
                            k.appendChild(c);
1417
                            break;
1418
                        case "outside":
1419
                            k.appendChild(a)
1420
                    } else k.appendChild(a);
1421
                    this.prevLegendPosition = e.position
1422
                } else k.appendChild(a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1423
                this.listenersAdded || (this.addListeners(), this.listenersAdded = !0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1424
                (this.mouseWheelScrollEnabled || this.mouseWheelZoomEnabled) && d.addWheelListeners();
1425
                this.initChart()
1426
            }
1427
        },
1428
        createLabelsSet: function() {
1429
            d.remove(this.labelsSet);
1430
            this.labelsSet = this.container.set();
1431
            this.freeLabelsSet.push(this.labelsSet)
1432
        },
1433
        initChart: function() {
1434
            this.balloon = d.processObject(this.balloon, d.AmBalloon, this.theme);
1435
            window.AmCharts_path && (this.path = window.AmCharts_path);
1436
            void 0 === this.path && (this.path = d.getPath());
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1437
            void 0 === this.path && (this.path = "amcharts/");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1438
            this.path = d.normalizeUrl(this.path);
1439
            void 0 === this.pathToImages && (this.pathToImages = this.path + "images/");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1440
            this.initHC || (d.callInitHandler(this), this.initHC = !0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1441
            d.applyLang(this.language, this);
1442
            var a = this.numberFormatter;
1443
            a && (isNaN(a.precision) || (this.precision = a.precision), void 0 !== a.thousandsSeparator && (this.thousandsSeparator = a.thousandsSeparator), void 0 !== a.decimalSeparator && (this.decimalSeparator = a.decimalSeparator));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1444
            (a = this.percentFormatter) && !isNaN(a.precision) && (this.percentPrecision = a.precision);
1445
            this.nf = {
1446
                precision: this.precision,
1447
                thousandsSeparator: this.thousandsSeparator,
1448
                decimalSeparator: this.decimalSeparator
1449
            };
1450
            this.pf = {
1451
                precision: this.percentPrecision,
1452
                thousandsSeparator: this.thousandsSeparator,
1453
                decimalSeparator: this.decimalSeparator
1454
            };
1455
            this.destroy();
1456
            (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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1457
            this.container = a;
1458
            this.extension = ".png";
1459
            this.svgIcons && d.SVG && (this.extension = ".svg");
1460
            this.checkDisplay();
1461
            this.checkTransform(this.div);
1462
            a.chart = this;
1463
            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({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1464
                type: "failed",
1465
                chart: this
1466
            })
1467
        },
1468
        premeasure: function() {
1469
            var a = this.div;
1470
            if (a) {
1471
                try {
1472
                    this.boundingRect = this.chartDiv.getBoundingClientRect()
1473
                } catch (e) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
1474
                var b = a.offsetWidth,
1475
                    c = a.offsetHeight;
1476
                a.clientHeight && (b = a.clientWidth, c = a.clientHeight);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1477
                if (b != this.mw || c != this.mh) this.mw = b, this.mh = c, this.measure()
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1478
            }
1479
        },
1480
        measure: function() {
1481
            var a = this.div;
1482
            if (a) {
1483
                var b = this.chartDiv,
1484
                    c = a.offsetWidth,
1485
                    e = a.offsetHeight,
1486
                    f = this.container;
1487
                a.clientHeight && (c = a.clientWidth, e = a.clientHeight);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1488
                var e = Math.round(e),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 1485. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1489
                    c = Math.round(c),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 1484. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1490
                    a = Math.round(d.toCoordinate(this.width, c)),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 1481. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1491
                    g = Math.round(d.toCoordinate(this.height, e));
1492
                (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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1493
                this.balloon && this.balloon.setBounds && this.balloon.setBounds(2, 2, a - 2, g);
1494
                this.updateWidth();
1495
                this.balloon.chart = this;
1496
                this.realWidth = a;
1497
                this.realHeight = g;
1498
                this.divRealWidth = c;
1499
                this.divRealHeight = e
1500
            }
1501
        },
1502
        checkDisplay: function() {
1503
            if (this.autoDisplay && this.container) {
1504
                var a = d.rect(this.container, 10, 10),
1505
                    b = a.getBBox();
1506
                0 === b.width && 0 === b.height && (this.divRealHeight = this.divRealWidth = this.realHeight = this.realWidth = 0, this.previousWidth = this.previousHeight = NaN);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1507
                a.remove()
1508
            }
1509
        },
1510
        checkTransform: function(a) {
1511
            if (this.autoTransform && window.getComputedStyle && a) {
1512
                if (a.style) {
1513
                    var b = window.getComputedStyle(a, null);
1514
                    if (b && (b = b.getPropertyValue("-webkit-transform") || b.getPropertyValue("-moz-transform") || b.getPropertyValue("-ms-transform") || b.getPropertyValue("-o-transform") || b.getPropertyValue("transform")) && "none" !== b) {
1515
                        var c = b.split("(")[1].split(")")[0].split(","),
1516
                            b = c[0],
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 1513. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1517
                            c = c[1],
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 1515. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1518
                            b = Math.sqrt(b * b + c * c);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 1513. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1519
                        isNaN(b) || (this.cssScale *= b)
1520
                    }
1521
                }
1522
                a.parentNode && this.checkTransform(a.parentNode)
1523
            }
1524
        },
1525
        destroy: function() {
1526
            this.chartDiv.innerHTML = "";
1527
            this.clearTimeOuts();
1528
            this.legend && this.legend.destroy()
1529
        },
1530
        clearTimeOuts: function() {
1531
            var a = this.timeOuts;
1532
            if (a) {
1533
                var b;
1534
                for (b = 0; b < a.length; b++) clearTimeout(a[b])
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1535
            }
1536
            this.timeOuts = []
1537
        },
1538
        clear: function(a) {
1539
            try {
1540
                document.removeEventListener("touchstart", this.docfn1, !0), document.removeEventListener("touchend", this.docfn2, !0)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1541
            } catch (b) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
1542
            d.callMethod("clear", [this.chartScrollbar, this.scrollbarV, this.scrollbarH, this.chartCursor]);
1543
            this.chartCursor = this.scrollbarH = this.scrollbarV = this.chartScrollbar = null;
1544
            this.clearTimeOuts();
1545
            this.container && (this.container.remove(this.chartDiv), this.container.remove(this.legendDiv));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1546
            a || d.removeChart(this);
1547
            if (a = this.div)
1548
                for (; a.firstChild;) a.removeChild(a.firstChild);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1549
            this.legend && this.legend.destroy();
1550
            this.AmExport && this.AmExport.clear && this.AmExport.clear()
1551
        },
1552
        setMouseCursor: function(a) {
1553
            "auto" == a && d.isNN && (a = "default");
1554
            this.chartDiv.style.cursor = a;
1555
            this.legendDiv.style.cursor = a
1556
        },
1557
        redrawLabels: function() {
1558
            this.labels = [];
1559
            var a = this.allLabels;
1560
            this.createLabelsSet();
1561
            var b;
1562
            for (b = 0; b < a.length; b++) this.drawLabel(a[b])
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1563
        },
1564
        drawLabel: function(a) {
1565
            var b = this;
1566
            if (b.container && !1 !== a.enabled) {
1567
                a = d.processObject(a, d.Label, b.theme);
1568
                var c = a.y,
1569
                    e = a.text,
1570
                    f = a.align,
1571
                    g = a.size,
1572
                    h = a.color,
1573
                    k = a.rotation,
1574
                    l = a.alpha,
1575
                    m = a.bold,
1576
                    n = d.toCoordinate(a.x, b.realWidth),
1577
                    c = d.toCoordinate(c, b.realHeight);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 1568. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1578
                n || (n = 0);
1579
                c || (c = 0);
1580
                void 0 === h && (h = b.color);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1581
                isNaN(g) && (g = b.fontSize);
1582
                f || (f = "start");
1583
                "left" == f && (f = "start");
1584
                "right" == f && (f = "end");
1585
                "center" == f && (f = "middle", k ? c = b.realHeight - c + c / 2 : n = b.realWidth / 2 - n);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1586
                void 0 === l && (l = 1);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1587
                void 0 === k && (k = 0);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1588
                c += g / 2;
1589
                e = d.text(b.container, e, h, b.fontFamily, g, f, m, l);
1590
                e.translate(n, c);
1591
                void 0 !== a.tabIndex && e.setAttr("tabindex", a.tabIndex);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1592
                d.setCN(b, e, "label");
1593
                a.id && d.setCN(b, e, "label-" + a.id);
1594
                0 !== k && e.rotate(k);
1595
                a.url ? (e.setAttr("cursor", "pointer"), e.click(function() {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1596
                    d.getURL(a.url, b.urlTarget)
1597
                })) : e.node.style.pointerEvents = "none";
1598
                b.labelsSet.push(e);
1599
                b.labels.push(e)
1600
            }
1601
        },
1602
        addLabel: function(a, b, c, e, d, g, h, k, l, m) {
1603
            a = {
1604
                x: a,
1605
                y: b,
1606
                text: c,
1607
                align: e,
1608
                size: d,
1609
                color: g,
1610
                alpha: k,
1611
                rotation: h,
1612
                bold: l,
1613
                url: m,
1614
                enabled: !0
1615
            };
1616
            this.container && this.drawLabel(a);
1617
            this.allLabels.push(a)
1618
        },
1619
        clearLabels: function() {
1620
            var a = this.labels,
1621
                b;
1622
            for (b = a.length - 1; 0 <= b; b--) a[b].remove();
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1623
            this.labels = [];
1624
            this.allLabels = []
1625
        },
1626
        updateHeight: function() {
1627
            var a = this.divRealHeight,
1628
                b = this.legend;
1629
            if (b) {
1630
                var c = this.legendDiv.offsetHeight,
1631
                    b = b.position;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 1628. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1632
                if ("top" == b || "bottom" == b) {
1633
                    a -= c;
1634
                    if (0 > a || isNaN(a)) a = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1635
                    this.chartDiv.style.height = a + "px"
1636
                }
1637
            }
1638
            return a
1639
        },
1640
        updateWidth: function() {
1641
            var a = this.divRealWidth,
1642
                b = this.divRealHeight,
1643
                c = this.legend;
1644
            if (c) {
1645
                var e = this.legendDiv,
1646
                    d = e.offsetWidth;
1647
                isNaN(c.width) || (d = c.width);
1648
                c.ieW && (d = c.ieW);
1649
                var g = e.offsetHeight,
1650
                    e = e.style,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 1645. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1651
                    h = this.chartDiv.style,
1652
                    k = c.position;
1653
                if (("right" == k || "left" == k) && void 0 === c.divId) {
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1654
                    a -= d;
1655
                    if (0 > a || isNaN(a)) a = 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1656
                    h.width = a + "px";
1657
                    this.balloon && this.balloon.setBounds && this.balloon.setBounds(2, 2, a - 2, this.realHeight);
1658
                    "left" == k ? (h.left = d + "px", e.left = "0px") : (h.left = "0px", e.left = a + "px");
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1659
                    b > g && (e.top = (b - g) / 2 + "px")
1660
                }
1661
            }
1662
            return a
1663
        },
1664
        getTitleHeight: function() {
1665
            this.drawTitles(!0);
1666
            return this.titleHeight
1667
        },
1668
        addTitle: function(a, b, c, e, d) {
1669
            isNaN(b) && (b = this.fontSize + 2);
1670
            a = {
1671
                text: a,
1672
                size: b,
1673
                color: c,
1674
                alpha: e,
1675
                bold: d,
1676
                enabled: !0
1677
            };
1678
            this.titles.push(a);
1679
            return a
1680
        },
1681
        handleWheel: function(a) {
1682
            var b = 0;
1683
            a || (a = window.event);
1684
            a.wheelDelta ? b = a.wheelDelta / 120 : a.detail && (b = -a.detail / 3);
1685
            b && this.handleWheelReal(b, a.shiftKey);
1686
            a.preventDefault && a.preventDefault()
1687
        },
1688
        handleWheelReal: function() {},
1689
        handleDocTouchStart: function() {
1690
            this.handleMouseMove();
1691
            this.tmx = this.mouseX;
1692
            this.tmy = this.mouseY;
1693
            this.touchStartTime = (new Date).getTime()
1694
        },
1695
        handleDocTouchEnd: function() {
1696
            -.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())
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1697
        },
1698
        resetTouchStyle: function() {
1699
            this.panEventsEnabled && this.chartDiv && (this.chartDiv.style.msTouchAction = "auto", this.chartDiv.style.touchAction = "auto")
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1700
        },
1701
        checkTouchDuration: function(a) {
1702
            var b = this,
1703
                c = (new Date).getTime();
1704
            if (a)
1705
                if (a.touches) b.isTouchEvent = !0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1706
                else if (!b.isTouchEvent) return !0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1707
            if (c - b.touchStartTime > b.touchClickDuration) return !0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1708
            setTimeout(function() {
1709
                b.resetTouchDuration()
1710
            }, 300)
0 ignored issues
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
1711
        },
1712
        resetTouchDuration: function() {
1713
            this.isTouchEvent = !1
1714
        },
1715
        checkTouchMoved: function() {
1716
            if (4 < Math.abs(this.mouseX - this.tmx) || 4 < Math.abs(this.mouseY - this.tmy)) return !0
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity Best Practice introduced by
There is no return statement if 4 < Math.abs(this.mouseX...this.mouseY - this.tmy) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
1717
        },
1718
        addListeners: function() {
1719
            var a = this,
1720
                b = a.chartDiv;
1721
            document.addEventListener ? ("ontouchstart" in document.documentElement && (b.addEventListener("touchstart", function(b) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1722
                a.handleTouchStart.call(a, b)
1723
            }, !0), b.addEventListener("touchmove", function(b) {
1724
                a.handleMouseMove.call(a, b)
1725
            }, !0), b.addEventListener("touchend", function(b) {
1726
                a.handleTouchEnd.call(a, b)
1727
            }, !0), a.docfn1 = function(b) {
1728
                a.handleDocTouchStart.call(a, b)
1729
            }, a.docfn2 = function(b) {
1730
                a.handleDocTouchEnd.call(a, b)
1731
            }, document.addEventListener("touchstart", a.docfn1, !0), document.addEventListener("touchend", a.docfn2, !0)), b.addEventListener("mousedown", function(b) {
1732
                a.mouseIsOver = !0;
1733
                a.handleMouseMove.call(a, b);
1734
                a.handleMouseDown.call(a, b);
1735
                a.handleDocTouchStart.call(a, b)
1736
            }, !0), b.addEventListener("mouseover", function(b) {
1737
                a.handleMouseOver.call(a, b)
1738
            }, !0), b.addEventListener("mouseout", function(b) {
1739
                a.handleMouseOut.call(a, b)
1740
            }, !0), b.addEventListener("mouseup", function(b) {
1741
                a.handleDocTouchEnd.call(a, b)
1742
            }, !0)) : (b.attachEvent("onmousedown", function(b) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1743
                a.handleMouseDown.call(a, b)
1744
            }), b.attachEvent("onmouseover", function(b) {
1745
                a.handleMouseOver.call(a, b)
1746
            }), b.attachEvent("onmouseout", function(b) {
1747
                a.handleMouseOut.call(a, b)
1748
            }))
1749
        },
1750
        dispDUpd: function() {
1751
            this.skipEvents || (this.dispatchDataUpdated && (this.dispatchDataUpdated = !1, this.fire({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1752
                type: "dataUpdated",
1753
                chart: this
1754
            })), this.chartCreated || (this.chartCreated = !0, this.fire({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1755
                type: "init",
1756
                chart: this
1757
            })), this.chartRendered || (this.fire({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1758
                type: "rendered",
1759
                chart: this
1760
            }), this.chartRendered = !0), this.fire({
1761
                type: "drawn",
1762
                chart: this
1763
            }));
1764
            this.skipEvents = !1
1765
        },
1766
        validateSize: function() {
1767
            var a = this;
1768
            a.premeasure();
1769
            a.checkDisplay();
1770
            a.cssScale = 1;
1771
            a.cssAngle = 0;
1772
            a.checkTransform(a.div);
1773
            if (a.divRealWidth != a.previousWidth || a.divRealHeight != a.previousHeight) {
1774
                var b = a.legend;
1775
                if (0 < a.realWidth && 0 < a.realHeight) {
1776
                    a.sizeChanged = !0;
1777
                    if (b) {
1778
                        a.legendInitTO && clearTimeout(a.legendInitTO);
1779
                        var c = setTimeout(function() {
1780
                            b.invalidateSize()
1781
                        }, 10);
1782
                        a.timeOuts.push(c);
1783
                        a.legendInitTO = c
1784
                    }
1785
                    a.marginsUpdated = !1;
1786
                    clearTimeout(a.initTO);
1787
                    c = setTimeout(function() {
1788
                        a.initChart()
1789
                    }, 10);
1790
                    a.timeOuts.push(c);
1791
                    a.initTO = c
1792
                }
1793
                a.renderFix();
1794
                b && b.renderFix && b.renderFix();
1795
                clearTimeout(a.resizedTO);
1796
                a.resizedTO = setTimeout(function() {
1797
                    a.fire({
1798
                        type: "resized",
1799
                        chart: a
1800
                    })
1801
                }, 10);
1802
                a.previousHeight = a.divRealHeight;
1803
                a.previousWidth = a.divRealWidth
1804
            }
1805
        },
1806
        invalidateSize: function() {
1807
            this.previousHeight = this.previousWidth = NaN;
1808
            this.invalidateSizeReal()
1809
        },
1810
        invalidateSizeReal: function() {
1811
            var a = this;
1812
            a.marginsUpdated = !1;
1813
            clearTimeout(a.validateTO);
1814
            var b = setTimeout(function() {
1815
                a.validateSize()
1816
            }, 5);
1817
            a.timeOuts.push(b);
1818
            a.validateTO = b
1819
        },
1820
        validateData: function(a) {
1821
            this.chartCreated && (this.dataChanged = !0, this.marginsUpdated = !1, this.initChart(a))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1822
        },
1823
        validateNow: function(a, b) {
1824
            this.initTO && clearTimeout(this.initTO);
1825
            a && (this.dataChanged = !0, this.marginsUpdated = !1);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1826
            this.skipEvents = b;
1827
            this.chartRendered = !1;
1828
            var c = this.legend;
1829
            c && c.position != this.prevLegendPosition && (this.previousWidth = this.mw = 0, c.invalidateSize && (c.invalidateSize(), this.validateSize()));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1830
            this.write(this.div)
1831
        },
1832
        showItem: function(a) {
1833
            a.hidden = !1;
1834
            this.initChart()
1835
        },
1836
        hideItem: function(a) {
1837
            a.hidden = !0;
1838
            this.initChart()
1839
        },
1840
        hideBalloon: function() {
1841
            var a = this;
1842
            clearTimeout(a.hoverInt);
1843
            clearTimeout(a.balloonTO);
1844
            a.hoverInt = setTimeout(function() {
1845
                a.hideBalloonReal.call(a)
1846
            }, a.hideBalloonTime)
1847
        },
1848
        cleanChart: function() {},
1849
        hideBalloonReal: function() {
1850
            var a = this.balloon;
1851
            a && a.hide && a.hide()
1852
        },
1853
        showBalloon: function(a, b, c, e, d) {
1854
            var g = this;
1855
            clearTimeout(g.balloonTO);
1856
            clearTimeout(g.hoverInt);
1857
            g.balloonTO = setTimeout(function() {
1858
                g.showBalloonReal.call(g, a, b, c, e, d)
1859
            }, 1)
1860
        },
1861
        showBalloonReal: function(a, b, c, e, d) {
1862
            this.handleMouseMove();
1863
            var g = this.balloon;
1864
            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))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1865
        },
1866
        handleMouseOver: function() {
1867
            this.outTO && clearTimeout(this.outTO);
1868
            d.resetMouseOver();
1869
            this.mouseIsOver = !0
1870
        },
1871
        handleMouseOut: function() {
1872
            var a = this;
1873
            d.resetMouseOver();
1874
            a.outTO && clearTimeout(a.outTO);
1875
            a.outTO = setTimeout(function() {
1876
                a.handleMouseOutReal()
1877
            }, 10)
1878
        },
1879
        handleMouseOutReal: function() {
1880
            this.mouseIsOver = !1
1881
        },
1882
        handleMouseMove: function(a) {
1883
            a || (a = window.event);
1884
            this.mouse2Y = this.mouse2X = NaN;
1885
            var b, c, e, d;
1886
            if (a) {
1887
                if (a.touches) {
1888
                    var g = a.touches.item(1);
1889
                    g && this.panEventsEnabled && this.boundingRect && (e = g.clientX - this.boundingRect.left, d = g.clientY - this.boundingRect.top);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1890
                    a = a.touches.item(0);
1891
                    if (!a) return
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1892
                } else this.wasTouched = !1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1893
                this.boundingRect && a.clientX && (b = a.clientX - this.boundingRect.left, c = a.clientY - this.boundingRect.top);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1894
                isNaN(e) ? this.mouseX = b : (this.mouseX = Math.min(b, e), this.mouse2X = Math.max(b, e));
0 ignored issues
show
Bug introduced by
The variable b does not seem to be initialized in case !a on line 1891 is false. Are you sure this can never be the case?
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Bug introduced by
The variable e seems to not be initialized for all possible execution paths. Are you sure isNaN handles undefined variables?
Loading history...
1895
                isNaN(d) ? this.mouseY = c : (this.mouseY = Math.min(c, d), this.mouse2Y = Math.max(c, d));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Bug introduced by
The variable c does not seem to be initialized in case !a on line 1891 is false. Are you sure this can never be the case?
Loading history...
Bug introduced by
The variable d seems to not be initialized for all possible execution paths. Are you sure isNaN handles undefined variables?
Loading history...
1896
                this.autoTransform && (this.mouseX /= this.cssScale, this.mouseY /= this.cssScale)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1897
            }
1898
        },
1899
        handleTouchStart: function(a) {
1900
            this.hideBalloonReal();
1901
            a && (a.touches && this.tapToActivate && !this.tapped || !this.panRequired) || (this.handleMouseMove(a), this.handleMouseDown(a))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1902
        },
1903
        handleTouchEnd: function(a) {
1904
            this.wasTouched = !0;
1905
            this.handleMouseMove(a);
1906
            d.resetMouseOver();
1907
            this.handleReleaseOutside(a)
1908
        },
1909
        handleReleaseOutside: function() {
1910
            this.handleDocTouchEnd.call(this)
1911
        },
1912
        handleMouseDown: function(a) {
1913
            d.resetMouseOver();
1914
            this.mouseIsOver = !0;
1915
            a && a.preventDefault && (this.panEventsEnabled ? a.preventDefault() : a.touches || a.preventDefault())
1916
        },
1917
        addLegend: function(a, b) {
1918
            a = d.processObject(a, d.AmLegend, this.theme);
1919
            a.divId = b;
1920
            a.ieW = 0;
1921
            var c;
1922
            c = "object" != typeof b && b ? document.getElementById(b) : b;
1923
            this.legend = a;
1924
            a.chart = this;
1925
            c ? (a.div = c, a.position = "outside", a.autoMargins = !1) : a.div = this.legendDiv;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1926
            return a
1927
        },
1928
        removeLegend: function() {
1929
            this.legend = void 0;
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
1930
            this.previousWidth = 0;
1931
            this.legendDiv.innerHTML = ""
1932
        },
1933
        handleResize: function() {
1934
            (d.isPercents(this.width) || d.isPercents(this.height)) && this.invalidateSizeReal();
1935
            this.renderFix()
1936
        },
1937
        renderFix: function() {
1938
            if (!d.VML) {
1939
                var a = this.container;
1940
                a && a.renderFix()
1941
            }
1942
        },
1943
        getSVG: function() {
1944
            if (d.hasSVG) return this.container
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity Best Practice introduced by
There is no return statement if d.hasSVG is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
1945
        },
1946
        animate: function(a, b, c, e, f, g, h) {
1947
            a["an_" + b] && d.removeFromArray(this.animations, a["an_" + b]);
1948
            c = {
1949
                obj: a,
1950
                frame: 0,
1951
                attribute: b,
1952
                from: c,
1953
                to: e,
1954
                time: f,
1955
                effect: g,
1956
                suffix: h
1957
            };
1958
            a["an_" + b] = c;
1959
            this.animations.push(c);
1960
            return c
1961
        },
1962
        setLegendData: function(a) {
1963
            var b = this.legend;
1964
            b && b.setData(a)
1965
        },
1966
        stopAnim: function(a) {
1967
            d.removeFromArray(this.animations, a)
1968
        },
1969
        updateAnimations: function() {
1970
            var a;
1971
            this.container && this.container.update();
1972
            if (this.animations)
1973
                for (a = this.animations.length - 1; 0 <= a; a--) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1974
                    var b = this.animations[a],
1975
                        c = d.updateRate * b.time,
1976
                        e = b.frame + 1,
1977
                        f = b.obj,
1978
                        g = b.attribute;
1979
                    if (e <= c) {
1980
                        b.frame++;
1981
                        var h = Number(b.from),
1982
                            k = Number(b.to) - h,
1983
                            c = d[b.effect](0, e, h, k, c);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 1975. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1984
                        0 === k ? (this.animations.splice(a, 1), f.node.style[g] = Number(b.to) + b.suffix) : f.node.style[g] = c + b.suffix
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1985
                    } else f.node.style[g] = Number(b.to) + b.suffix, f.animationFinished = !0, this.animations.splice(a, 1)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1986
                }
1987
        },
1988
        update: function() {
1989
            this.updateAnimations();
1990
            var a = this.animatable;
1991
            if (0 < a.length) {
1992
                for (var b = !0, c = a.length - 1; 0 <= c; c--) {
1993
                    var e = a[c];
1994
                    e && (e.animationFinished ? a.splice(c, 1) : b = !1)
1995
                }
1996
                b && (this.fire({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1997
                    type: "animationFinished",
1998
                    chart: this
1999
                }), this.animatable = [])
2000
            }
2001
        },
2002
        inIframe: function() {
2003
            try {
2004
                return window.self !== window.top
2005
            } catch (a) {
2006
                return !0
2007
            }
2008
        },
2009
        brr: function() {
2010
            if (!this.hideCredits) {
2011
                var a = "amcharts.com",
2012
                    b = window.location.hostname.split("."),
2013
                    c;
2014
                2 <= b.length && (c = b[b.length - 2] + "." + b[b.length - 1]);
2015
                this.amLink && (b = this.amLink.parentNode) && b.removeChild(this.amLink);
2016
                b = this.creditsPosition;
2017
                if (c != a || !0 === this.inIframe()) {
0 ignored issues
show
Bug introduced by
The variable c seems to not be initialized for all possible execution paths.
Loading history...
2018
                    var a = "http://www." + a,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 2011. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2019
                        e = c = 0,
2020
                        d = this.realWidth,
2021
                        g = this.realHeight,
2022
                        h = this.type;
2023
                    if ("serial" == h || "xy" == h || "gantt" == h) c = this.marginLeftReal, e = this.marginTopReal, d = c + this.plotAreaWidth, g = e + this.plotAreaHeight;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2024
                    var h = a + "/javascript-charts/",
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 2022. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2025
                        k = "JavaScript charts",
2026
                        l = "Felicity";
2027
                    "ammap" == this.product && (h = "https://felicity.iiit.ac.in/", k = "Felicity", l = "Felicity");
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2028
                    a = document.createElement("a");
2029
                    l = document.createTextNode(l);
2030
                    a.setAttribute("href", h);
2031
                    a.setAttribute("title", k);
2032
                    this.urlTarget && a.setAttribute("target", this.urlTarget);
2033
                    a.appendChild(l);
2034
                    this.chartDiv.appendChild(a);
2035
                    this.amLink = a;
2036
                    h = a.style;
2037
                    h.position = "absolute";
2038
                    h.textDecoration = "none";
2039
                    h.color = this.color;
2040
                    h.fontFamily = this.fontFamily;
2041
                    h.fontSize = "11px";
2042
                    h.opacity = .7;
2043
                    h.display = "block";
2044
                    var k = a.offsetWidth,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 2025. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2045
                        a = a.offsetHeight,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 2011. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2046
                        l = 5 + c,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable l already seems to be declared on line 2026. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2047
                        m = e + 5;
2048
                    "bottom-left" == b && (l = 5 + c, m = g - a - 3);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2049
                    "bottom-right" == b && (l = d - k - 5, m = g - a - 3);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2050
                    "top-right" == b && (l = d - k - 5, m = e + 5);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2051
                    h.left = l + "px";
2052
                    h.top = m + "px"
2053
                }
2054
            }
2055
        }
2056
    });
2057
    d.Slice = d.Class({
2058
        construct: function() {}
2059
    });
2060
    d.SerialDataItem = d.Class({
2061
        construct: function() {}
2062
    });
2063
    d.GraphDataItem = d.Class({
2064
        construct: function() {}
2065
    });
2066
    d.Guide = d.Class({
2067
        construct: function(a) {
2068
            this.cname = "Guide";
2069
            d.applyTheme(this, a, this.cname)
2070
        }
2071
    });
2072
    d.Title = d.Class({
2073
        construct: function(a) {
2074
            this.cname = "Title";
2075
            d.applyTheme(this, a, this.cname)
2076
        }
2077
    });
2078
    d.Label = d.Class({
2079
        construct: function(a) {
2080
            this.cname = "Label";
2081
            d.applyTheme(this, a, this.cname)
2082
        }
2083
    })
2084
})();
2085
(function() {
2086
    var d = window.AmCharts;
2087
    d.AmBalloon = d.Class({
2088
        construct: function(a) {
2089
            this.cname = "AmBalloon";
2090
            this.enabled = !0;
2091
            this.fillColor = "#FFFFFF";
2092
            this.fillAlpha = .8;
2093
            this.borderThickness = 2;
2094
            this.borderColor = "#FFFFFF";
2095
            this.borderAlpha = 1;
2096
            this.cornerRadius = 0;
2097
            this.maxWidth = 220;
2098
            this.horizontalPadding = 8;
2099
            this.verticalPadding = 4;
2100
            this.pointerWidth = 6;
2101
            this.pointerOrientation = "V";
2102
            this.color = "#000000";
2103
            this.adjustBorderColor = !0;
2104
            this.show = this.follow = this.showBullet = !1;
2105
            this.bulletSize = 3;
2106
            this.shadowAlpha = .4;
2107
            this.shadowColor = "#000000";
2108
            this.fadeOutDuration = this.animationDuration = .3;
2109
            this.fixedPosition = !0;
2110
            this.offsetY = 6;
2111
            this.offsetX = 1;
2112
            this.textAlign = "center";
2113
            this.disableMouseEvents = !0;
2114
            this.deltaSignX = this.deltaSignY = 1;
2115
            d.isModern || (this.offsetY *= 1.5);
2116
            this.sdy = this.sdx = 0;
2117
            d.applyTheme(this, a, this.cname)
2118
        },
2119
        draw: function() {
2120
            var a = this.pointToX,
2121
                b = this.pointToY;
2122
            d.isModern || (this.drop = !1);
2123
            var c = this.chart;
2124
            d.VML && (this.fadeOutDuration = 0);
2125
            this.xAnim && c.stopAnim(this.xAnim);
2126
            this.yAnim && c.stopAnim(this.yAnim);
2127
            this.sdy = this.sdx = 0;
2128
            if (!isNaN(a)) {
2129
                var e = this.follow,
2130
                    f = c.container,
2131
                    g = this.set;
2132
                d.remove(g);
2133
                this.removeDiv();
2134
                g = f.set();
2135
                g.node.style.pointerEvents = "none";
2136
                this.set = g;
2137
                this.mainSet ? (this.mainSet.push(this.set), this.sdx = this.mainSet.x, this.sdy = this.mainSet.y) : c.balloonsSet.push(g);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2138
                if (this.show) {
2139
                    var h = this.l,
2140
                        k = this.t,
2141
                        l = this.r,
2142
                        m = this.b,
2143
                        n = this.balloonColor,
2144
                        p = this.fillColor,
2145
                        r = this.borderColor,
2146
                        t = p;
2147
                    void 0 != n && (this.adjustBorderColor ? t = r = n : p = n);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2148
                    var q = this.horizontalPadding,
2149
                        y = this.verticalPadding,
2150
                        B = this.pointerWidth,
2151
                        u = this.pointerOrientation,
2152
                        w = this.cornerRadius,
2153
                        v = c.fontFamily,
2154
                        A = this.fontSize;
2155
                    void 0 == A && (A = c.fontSize);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2156
                    var n = document.createElement("div"),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable n already seems to be declared on line 2143. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2157
                        C = c.classNamePrefix;
2158
                    n.className = C + "-balloon-div";
2159
                    this.className && (n.className = n.className + " " + C + "-balloon-div-" + this.className);
2160
                    C = n.style;
2161
                    this.disableMouseEvents && (C.pointerEvents = "none");
2162
                    C.position = "absolute";
2163
                    var x = this.minWidth,
2164
                        z = document.createElement("div");
2165
                    n.appendChild(z);
2166
                    var F = z.style;
2167
                    isNaN(x) || (F.minWidth = x - 2 * q + "px");
2168
                    F.textAlign = this.textAlign;
2169
                    F.maxWidth = this.maxWidth + "px";
2170
                    F.fontSize = A + "px";
2171
                    F.color = this.color;
2172
                    F.fontFamily = v;
2173
                    z.innerHTML = this.text;
2174
                    c.chartDiv.appendChild(n);
2175
                    this.textDiv = n;
2176
                    var F = n.offsetWidth,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable F already seems to be declared on line 2166. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2177
                        E = n.offsetHeight;
2178
                    n.clientHeight && (F = n.clientWidth, E = n.clientHeight);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2179
                    v = E + 2 * y;
2180
                    z = F + 2 * q;
2181
                    !isNaN(x) && z < x && (z = x);
2182
                    window.opera && (v += 2);
2183
                    var H = !1,
2184
                        A = this.offsetY;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable A already seems to be declared on line 2154. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2185
                    c.handDrawn && (A += c.handDrawScatter + 2);
2186
                    "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 =
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2187
                        1));
2188
                    A + v >= m && (A = m - v);
2189
                    A < k && (A = k);
2190
                    x < h && (x = h);
2191
                    x + z > l && (x = l - z);
2192
                    var k = A + y,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 2140. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2193
                        m = x + q,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable m already seems to be declared on line 2142. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2194
                        G = this.shadowAlpha,
2195
                        D = this.shadowColor,
2196
                        q = this.borderThickness,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable q already seems to be declared on line 2148. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2197
                        K = this.bulletSize,
2198
                        J, y = this.fillAlpha,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable y already seems to be declared on line 2149. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2199
                        L = this.borderAlpha;
2200
                    this.showBullet && (J = d.circle(f, K, t, y), g.push(J));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2201
                    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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Unused Code introduced by
The assignment to variable t seems to be never used. Consider removing it.
Loading history...
Unused Code introduced by
The assignment to variable w seems to be never used. Consider removing it.
Loading history...
2202
                    this.bg = p;
2203
                    g.push(p);
2204
                    p.toFront();
2205
                    d.setCN(c, p, "balloon-bg");
2206
                    this.className && d.setCN(c, p, "balloon-bg-" + this.className);
2207
                    f = 1 * this.deltaSignX;
2208
                    m += this.sdx;
2209
                    k += this.sdy;
2210
                    C.left = m + "px";
2211
                    C.top = k + "px";
2212
                    g.translate(x - f, A, 1, !0);
2213
                    p = p.getBBox();
2214
                    this.bottom = A + v + 1;
2215
                    this.yPos = p.y + A;
2216
                    J && J.translate(this.pointToX - x + f, b - A);
2217
                    b = this.animationDuration;
2218
                    0 < this.animationDuration && !e && !isNaN(this.prevX) && (g.translate(this.prevX, this.prevY, NaN, !0), g.animate({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2219
                        translate: x - f + "," + A
2220
                    }, b, "easeOutSine"), n && (C.left = this.prevTX + "px", C.top = this.prevTY + "px", this.xAnim = c.animate({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2221
                        node: n
2222
                    }, "left", this.prevTX, m, b, "easeOutSine", "px"), this.yAnim = c.animate({
2223
                        node: n
2224
                    }, "top", this.prevTY, k, b, "easeOutSine", "px")));
2225
                    this.prevX = x - f;
2226
                    this.prevY = A;
2227
                    this.prevTX = m;
2228
                    this.prevTY = k
2229
                }
2230
            }
2231
        },
2232
        fixPrevious: function() {
2233
            this.rPrevX = this.prevX;
2234
            this.rPrevY = this.prevY;
2235
            this.rPrevTX = this.prevTX;
2236
            this.rPrevTY = this.prevTY
2237
        },
2238
        restorePrevious: function() {
2239
            this.prevX = this.rPrevX;
2240
            this.prevY = this.rPrevY;
2241
            this.prevTX = this.rPrevTX;
2242
            this.prevTY = this.rPrevTY
2243
        },
2244
        followMouse: function() {
2245
            if (this.follow && this.show) {
2246
                var a = this.chart.mouseX - this.offsetX * this.deltaSignX -
2247
                    this.sdx,
2248
                    b = this.chart.mouseY - this.sdy;
2249
                this.pointToX = a;
2250
                this.pointToY = b;
2251
                if (a != this.previousX || b != this.previousY)
2252
                    if (this.previousX = a, this.previousY = b, 0 === this.cornerRadius) this.draw();
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2253
                    else {
2254
                        var c = this.set;
2255
                        if (c) {
2256
                            var e = c.getBBox(),
2257
                                a = a - e.width / 2,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 2246. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2258
                                d = b - e.height - 10;
2259
                            a < this.l && (a = this.l);
2260
                            a > this.r - e.width && (a = this.r - e.width);
2261
                            d < this.t && (d = b + 10);
2262
                            c.translate(a, d);
2263
                            b = this.textDiv.style;
2264
                            b.left = a + this.horizontalPadding + "px";
2265
                            b.top = d + this.verticalPadding + "px"
2266
                        }
2267
                    }
2268
            }
2269
        },
2270
        changeColor: function(a) {
2271
            this.balloonColor = a
2272
        },
2273
        setBounds: function(a, b, c, e) {
2274
            this.l = a;
2275
            this.t = b;
2276
            this.r = c;
2277
            this.b = e;
2278
            this.destroyTO && clearTimeout(this.destroyTO)
2279
        },
2280
        showBalloon: function(a) {
2281
            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
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2282
        },
2283
        hide: function(a) {
2284
            var b = this;
2285
            b.text = void 0;
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2286
            isNaN(a) && (a = b.fadeOutDuration);
2287
            var c = b.chart;
2288
            if (0 < a && !b.isHiding) {
2289
                b.isHiding = !0;
2290
                b.destroyTO && clearTimeout(b.destroyTO);
2291
                b.destroyTO = setTimeout(function() {
2292
                    b.destroy.call(b)
2293
                }, 1E3 * a);
2294
                b.follow = !1;
2295
                b.show = !1;
2296
                var e = b.set;
2297
                e && (e.setAttr("opacity", b.fillAlpha), b.fadeAnim1 = e.animate({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2298
                    opacity: 0
2299
                }, a, "easeInSine"));
2300
                b.textDiv && (b.fadeAnim2 = c.animate({
2301
                    node: b.textDiv
2302
                }, "opacity", 1, 0, a, "easeInSine", ""))
2303
            } else b.show = !1, b.follow = !1, b.destroy()
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2304
        },
2305
        setPosition: function(a, b) {
2306
            if (a != this.pointToX || b != this.pointToY) this.previousX = this.pointToX, this.previousY = this.pointToY, this.pointToX = a, this.pointToY = b, this.positionChanged = !0
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2307
        },
2308
        followCursor: function(a) {
2309
            var b = this;
2310
            b.follow = a;
2311
            clearInterval(b.interval);
2312
            var c = b.chart.mouseX - b.sdx,
2313
                e = b.chart.mouseY - b.sdy;
2314
            !isNaN(c) && a && (b.pointToX = c - b.offsetX * b.deltaSignX, b.pointToY = e, b.followMouse(), b.interval = setInterval(function() {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2315
                b.followMouse.call(b)
2316
            }, 40))
2317
        },
2318
        removeDiv: function() {
2319
            if (this.textDiv) {
2320
                var a = this.textDiv.parentNode;
2321
                a && a.removeChild(this.textDiv)
2322
            }
2323
        },
2324
        destroy: function() {
2325
            clearInterval(this.interval);
2326
            d.remove(this.set);
2327
            this.removeDiv();
2328
            this.set = null
2329
        }
2330
    })
2331
})();
2332
(function() {
2333
    var d = window.AmCharts;
2334
    d.circle = function(a, b, c, e, f, g, h, k, l) {
2335
        0 >= b && (b = .001);
2336
        if (void 0 == f || 0 === f) f = .01;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2337
        void 0 === g && (g = "#000000");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2338
        void 0 === h && (h = 0);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2339
        e = {
2340
            fill: c,
2341
            stroke: g,
2342
            "fill-opacity": e,
2343
            "stroke-width": f,
2344
            "stroke-opacity": h
2345
        };
2346
        a = isNaN(l) ? a.circle(0, 0, b).attr(e) : a.ellipse(0, 0, b, l).attr(e);
2347
        k && a.gradient("radialGradient", [c, d.adjustLuminosity(c, -.6)]);
2348
        return a
2349
    };
2350
    d.text = function(a, b, c, e, f, g, h, k) {
2351
        g || (g = "middle");
2352
        "right" == g && (g = "end");
2353
        "left" == g && (g = "start");
2354
        isNaN(k) && (k = 1);
2355
        void 0 !== b && (b = String(b), d.isIE && !d.isModern && (b = b.replace("&amp;", "&"), b = b.replace("&", "&amp;")));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2356
        c = {
2357
            fill: c,
2358
            "font-family": e,
2359
            "font-size": f + "px",
2360
            opacity: k
2361
        };
2362
        !0 === h && (c["font-weight"] = "bold");
2363
        c["text-anchor"] = g;
2364
        return a.text(b, c)
2365
    };
2366
    d.polygon = function(a, b, c, e, f, g, h, k, l, m, n) {
2367
        isNaN(g) && (g = .01);
2368
        isNaN(k) && (k = f);
2369
        var p = e,
2370
            r = !1;
2371
        "object" == typeof p && 1 < p.length && (r = !0, p = p[0]);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2372
        void 0 === h && (h = p);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2373
        f = {
2374
            fill: p,
2375
            stroke: h,
2376
            "fill-opacity": f,
2377
            "stroke-width": g,
2378
            "stroke-opacity": k
2379
        };
2380
        void 0 !== n && 0 < n && (f["stroke-dasharray"] = n);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2381
        n = d.dx;
2382
        g = d.dy;
2383
        a.handDrawn && (c = d.makeHD(b, c, a.handDrawScatter), b = c[0], c = c[1]);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2384
        h = Math.round;
2385
        m && (h = Number);
0 ignored issues
show
Comprehensibility Best Practice introduced by
You seem to be aliasing the built-in name Number as h. This makes your code very difficult to follow, consider using the built-in name directly.
Loading history...
2386
        k = "M" + (h(b[0]) + n) + "," + (h(c[0]) + g);
2387
        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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2388
        a = a.path(k + " Z").attr(f);
2389
        r && a.gradient("linearGradient", e, l);
2390
        return a
2391
    };
2392
    d.rect = function(a, b, c, e, f, g, h, k, l, m, n) {
2393
        if (isNaN(b) || isNaN(c)) return a.set();
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2394
        isNaN(g) && (g = 0);
2395
        void 0 === l && (l = 0);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2396
        void 0 === m && (m = 270);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2397
        isNaN(f) && (f = 0);
2398
        var p = e,
2399
            r = !1;
2400
        "object" == typeof p && (p = p[0], r = !0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2401
        void 0 === h && (h = p);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2402
        void 0 === k && (k = f);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2403
        b = Math.round(b);
2404
        c = Math.round(c);
2405
        var t = 0,
2406
            q = 0;
2407
        0 > b && (b = Math.abs(b), t = -b);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2408
        0 > c && (c = Math.abs(c), q = -c);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2409
        t += d.dx;
2410
        q += d.dy;
2411
        f = {
2412
            fill: p,
2413
            stroke: h,
2414
            "fill-opacity": f,
2415
            "stroke-opacity": k
2416
        };
2417
        void 0 !== n && 0 < n && (f["stroke-dasharray"] = n);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2418
        a = a.rect(t, q, b, c, l, g).attr(f);
2419
        r && a.gradient("linearGradient", e, m);
2420
        return a
2421
    };
2422
    d.bullet = function(a, b, c, e, f, g, h, k, l, m, n, p, r) {
2423
        var t;
2424
        "circle" == b && (b = "round");
2425
        switch (b) {
0 ignored issues
show
Coding Style introduced by
As per coding-style, switch statements should have a default case.
Loading history...
2426
            case "round":
2427
                t = d.circle(a, c / 2, e, f, g, h, k);
2428
                break;
2429
            case "square":
2430
                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);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2431
                break;
2432
            case "rectangle":
2433
                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);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2434
                break;
2435
            case "diamond":
2436
                t = d.polygon(a, [-c / 2, 0, c / 2, 0], [0, -c / 2, 0, c / 2], e, f, g, h, k);
2437
                break;
2438
            case "triangleUp":
2439
                t = d.triangle(a, c, 0, e, f, g, h, k);
2440
                break;
2441
            case "triangleDown":
2442
                t = d.triangle(a, c, 180, e, f, g, h, k);
2443
                break;
2444
            case "triangleLeft":
2445
                t = d.triangle(a, c, 270, e, f, g, h, k);
2446
                break;
2447
            case "triangleRight":
2448
                t = d.triangle(a, c, 90, e, f, g, h, k);
2449
                break;
2450
            case "bubble":
2451
                t = d.circle(a, c / 2, e, f, g, h, k, !0);
2452
                break;
2453
            case "line":
2454
                t = d.line(a, [-c /
2455
                    2, c / 2
2456
                ], [0, 0], e, f, g, h, k);
2457
                break;
2458
            case "yError":
2459
                t = a.set();
2460
                t.push(d.line(a, [0, 0], [-c / 2, c / 2], e, f, g));
2461
                t.push(d.line(a, [-l, l], [-c / 2, -c / 2], e, f, g));
2462
                t.push(d.line(a, [-l, l], [c / 2, c / 2], e, f, g));
2463
                break;
2464
            case "xError":
2465
                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))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2466
        }
2467
        t && t.pattern(n, NaN, p);
2468
        return t
0 ignored issues
show
Bug introduced by
The variable t seems to not be initialized for all possible execution paths.
Loading history...
2469
    };
2470
    d.triangle = function(a, b, c, e, d, g, h, k) {
2471
        if (void 0 === g || 0 === g) g = 1;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2472
        void 0 === h && (h = "#000");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2473
        void 0 === k && (k = 0);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2474
        e = {
2475
            fill: e,
2476
            stroke: h,
2477
            "fill-opacity": d,
2478
            "stroke-width": g,
2479
            "stroke-opacity": k
2480
        };
2481
        b /= 2;
2482
        var l;
2483
        0 === c && (l = " M" + -b + "," + b + " L0," + -b + " L" + b + "," + b + " Z");
2484
        180 == c && (l = " M" + -b + "," + -b + " L0," + b + " L" + b + "," + -b + " Z");
2485
        90 == c && (l = " M" + -b + "," + -b + " L" + b + ",0 L" + -b + "," + b + " Z");
2486
        270 == c && (l = " M" + -b + ",0 L" + b + "," + b + " L" + b + "," + -b + " Z");
2487
        return a.path(l).attr(e)
0 ignored issues
show
Bug introduced by
The variable l seems to not be initialized for all possible execution paths. Are you sure path handles undefined variables?
Loading history...
2488
    };
2489
    d.line = function(a, b, c, e, f, g, h, k, l, m, n) {
2490
        if (a.handDrawn && !n) return d.handDrawnLine(a, b, c, e, f, g, h, k, l, m, n);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2491
        g = {
2492
            fill: "none",
2493
            "stroke-width": g
2494
        };
2495
        void 0 !== h && 0 < h && (g["stroke-dasharray"] = h);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2496
        isNaN(f) || (g["stroke-opacity"] = f);
2497
        e && (g.stroke = e);
2498
        e = Math.round;
2499
        m && (e = Number, b[0] = d.roundTo(b[0], 5), c[0] = d.roundTo(c[0], 5));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Comprehensibility Best Practice introduced by
You seem to be aliasing the built-in name Number as e. This makes your code very difficult to follow, consider using the built-in name directly.
Loading history...
2500
        m = d.dx;
2501
        f = d.dy;
2502
        h = "M" + (e(b[0]) + m) + "," + (e(c[0]) + f);
2503
        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);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2504
        if (d.VML) return a.path(h, void 0, !0).attr(g);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2505
        l && (h += " M0,0 L0,0");
2506
        return a.path(h).attr(g)
2507
    };
2508
    d.makeHD = function(a, b, c) {
2509
        for (var e = [], d = [], g = 1; g < a.length; g++)
2510
            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 -
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2511
                    h, 2) + Math.pow(m - k, 2)) / 50) + 1, l = (l - h) / n, m = (m - k) / n, p = 0; p <= n; p++) {
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable m already seems to be declared on line 2510. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
Comprehensibility Naming Best Practice introduced by
The variable l already seems to be declared on line 2510. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2512
                var r = k + p * m + Math.random() * c;
2513
                e.push(h + p * l + Math.random() * c);
2514
                d.push(r)
2515
            }
2516
        return [e, d]
2517
    };
2518
    d.handDrawnLine = function(a, b, c, e, f, g, h, k, l, m) {
2519
        var n, p = a.set();
2520
        for (n = 1; n < b.length; n++)
2521
            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));
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable t already seems to be declared on line 2521. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
Comprehensibility Naming Best Practice introduced by
The variable r already seems to be declared on line 2521. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2522
        return p
2523
    };
2524
    d.doNothing = function(a) {
2525
        return a
2526
    };
2527
    d.drop =
2528
        function(a, b, c, e, d, g, h, k) {
2529
            var l = 1 / 180 * Math.PI,
2530
                m = c - 20,
2531
                n = Math.sin(m * l) * b,
2532
                p = Math.cos(m * l) * b,
2533
                r = Math.sin((m + 40) * l) * b,
2534
                t = Math.cos((m + 40) * l) * b,
2535
                q = .8 * b,
2536
                y = -b / 3,
2537
                B = b / 3;
2538
            0 === c && (y = -y, B = 0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2539
            180 == c && (B = 0);
2540
            90 == c && (y = 0);
2541
            270 == c && (y = 0, B = -B);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2542
            c = {
2543
                fill: e,
2544
                stroke: h,
2545
                "stroke-width": g,
2546
                "stroke-opacity": k,
2547
                "fill-opacity": d
2548
            };
2549
            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));
2550
            b += " A" + q + "," + q + ",0,0,0," + n + "," + p;
2551
            return a.path(b, void 0, void 0, "1000,1000").attr(c)
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2552
        };
2553
    d.wedge = function(a, b, c, e, f, g, h, k, l, m, n, p, r, t) {
2554
        var q = Math.round;
2555
        g = q(g);
2556
        h = q(h);
2557
        k = q(k);
2558
        var y = q(h / g * k),
2559
            B = d.VML,
2560
            u = 359.5 + g / 100;
2561
        359.94 < u && (u = 359.94);
2562
        f >= u && (f = u);
2563
        var w = 1 / 180 * Math.PI,
2564
            u = b + Math.sin(e * w) * k,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable u already seems to be declared on line 2560. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2565
            v = c - Math.cos(e * w) * y,
2566
            A = b + Math.sin(e * w) * g,
2567
            C = c - Math.cos(e * w) * h,
2568
            x = b + Math.sin((e + f) * w) * g,
2569
            z = c - Math.cos((e + f) * w) * h,
2570
            F = b + Math.sin((e + f) * w) * k,
2571
            w = c - Math.cos((e + f) * w) * y,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable w already seems to be declared on line 2563. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2572
            E = {
2573
                fill: d.adjustLuminosity(m.fill, -.2),
2574
                "stroke-opacity": 0,
2575
                "fill-opacity": m["fill-opacity"]
2576
            },
2577
            H = 0;
2578
        180 < Math.abs(f) && (H = 1);
2579
        e = a.set();
2580
        var G;
2581
        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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2582
        f = "";
2583
        var D;
2584
        p && (E["fill-opacity"] = 0, E["stroke-opacity"] = m["stroke-opacity"] / 2, E.stroke = m.stroke);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2585
        if (0 < l) {
2586
            D = " M" + u + "," + (v + l) + " L" + A + "," + (C + l);
2587
            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)));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2588
            D += " Z";
2589
            var K = l;
2590
            B && (K /= 10);
2591
            for (var J = 0; J < K; J += 10) {
2592
                var L = a.path(D, void 0, void 0, "1000,1000").attr(E);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2593
                e.push(L);
2594
                L.translate(0, -J)
2595
            }
2596
            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);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2597
            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);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2598
            e.push(D);
2599
            e.push(l)
2600
        }
2601
        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 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2602
        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);
2603
        a.handDrawn && (k = d.line(a, [u, A], [v, C], m.stroke, m.thickness * Math.random() * a.handDrawThickness, m["stroke-opacity"]), e.push(k));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2604
        a = a.path(h + " Z", void 0, void 0, "1000,1000").attr(m);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2605
        if (n) {
2606
            k = [];
2607
            for (y = 0; y < n.length; y++) k.push(d.adjustLuminosity(m.fill, n[y]));
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2608
            "radial" != t || d.isModern || (k = []);
2609
            0 < k.length && a.gradient(t + "Gradient", k)
2610
        }
2611
        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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2612
        a.pattern(p, NaN, r);
2613
        e.wedge = a;
2614
        e.push(a);
2615
        return e
2616
    };
2617
    d.rgb2hex = function(a) {
2618
        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) : ""
2619
    };
2620
    d.adjustLuminosity = function(a, b) {
2621
        a && -1 != a.indexOf("rgb") && (a = d.rgb2hex(a));
2622
        a = String(a).replace(/[^0-9a-f]/gi, "");
2623
        6 > a.length && (a = String(a[0]) + String(a[0]) + String(a[1]) + String(a[1]) + String(a[2]) + String(a[2]));
2624
        b = b || 0;
2625
        var c = "#",
2626
            e, f;
2627
        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" +
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2628
            e).substr(e.length);
2629
        return c
2630
    }
2631
})();
2632
(function() {
2633
    var d = window.AmCharts;
2634
    d.AmLegend = d.Class({
2635
        construct: function(a) {
2636
            this.enabled = !0;
2637
            this.cname = "AmLegend";
2638
            this.createEvents("rollOverMarker", "rollOverItem", "rollOutMarker", "rollOutItem", "showItem", "hideItem", "clickMarker", "clickLabel");
2639
            this.position = "bottom";
2640
            this.borderColor = this.color = "#000000";
2641
            this.borderAlpha = 0;
2642
            this.markerLabelGap = 5;
2643
            this.verticalGap = 10;
2644
            this.align = "left";
2645
            this.horizontalGap = 0;
2646
            this.spacing = 10;
2647
            this.markerDisabledColor = "#AAB3B3";
2648
            this.markerType = "square";
2649
            this.markerSize = 16;
2650
            this.markerBorderThickness = this.markerBorderAlpha = 1;
2651
            this.marginBottom = this.marginTop = 0;
2652
            this.marginLeft = this.marginRight = 20;
2653
            this.autoMargins = !0;
2654
            this.valueWidth = 50;
2655
            this.switchable = !0;
2656
            this.switchType = "x";
2657
            this.switchColor = "#FFFFFF";
2658
            this.rollOverColor = "#CC0000";
2659
            this.reversedOrder = !1;
2660
            this.labelText = "[[title]]";
2661
            this.valueText = "[[value]]";
2662
            this.accessibleLabel = "[[title]]";
2663
            this.useMarkerColorForLabels = !1;
2664
            this.rollOverGraphAlpha = 1;
2665
            this.textClickEnabled = !1;
2666
            this.equalWidths = !0;
2667
            this.backgroundColor = "#FFFFFF";
2668
            this.backgroundAlpha = 0;
2669
            this.useGraphSettings = !1;
2670
            this.showEntries = !0;
2671
            this.labelDx = 0;
2672
            d.applyTheme(this, a, this.cname)
2673
        },
2674
        setData: function(a) {
2675
            this.legendData = a;
2676
            this.invalidateSize()
2677
        },
2678
        invalidateSize: function() {
2679
            this.destroy();
2680
            this.entries = [];
2681
            this.valueLabels = [];
2682
            var a = this.legendData;
2683
            this.enabled && (d.ifArray(a) || d.ifArray(this.data)) && this.drawLegend()
2684
        },
2685
        drawLegend: function() {
2686
            var a = this.chart,
2687
                b = this.position,
2688
                c = this.width,
2689
                e = a.divRealWidth,
2690
                f = a.divRealHeight,
2691
                g = this.div,
2692
                h = this.legendData;
2693
            this.data && (h = this.combineLegend ? this.legendData.concat(this.data) : this.data);
2694
            isNaN(this.fontSize) && (this.fontSize = a.fontSize);
2695
            this.maxColumnsReal = this.maxColumns;
2696
            if ("right" == b || "left" == b) this.maxColumnsReal = 1, this.autoMargins && (this.marginLeft = this.marginRight = 10);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2697
            else if (this.autoMargins) {
2698
                this.marginRight = a.marginRight;
2699
                this.marginLeft = a.marginLeft;
2700
                var k = a.autoMarginOffset;
2701
                "bottom" == b ? (this.marginBottom = k, this.marginTop = 0) : (this.marginTop = k, this.marginBottom = 0)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2702
            }
2703
            c = void 0 !== c ? d.toCoordinate(c, e) : "right" != b && "left" != b ? a.realWidth : 0 < this.ieW ? this.ieW : a.realWidth;
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2704
            "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");
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2705
            this.divWidth = c;
2706
            (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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2707
            this.container = b;
2708
            this.lx = 0;
2709
            this.ly = 8;
2710
            f = this.markerSize;
2711
            f > this.fontSize && (this.ly = f / 2 - 1);
2712
            0 < f && (this.lx += f + this.markerLabelGap);
2713
            this.titleWidth = 0;
2714
            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;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2715
            this.index = this.maxLabelWidth = 0;
2716
            if (this.showEntries) {
2717
                for (a = 0; a < h.length; a++) this.createEntry(h[a]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2718
                for (a = this.index = 0; a < h.length; a++) this.createValue(h[a])
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2719
            }
2720
            this.arrangeEntries();
2721
            this.updateValues()
2722
        },
2723
        arrangeEntries: function() {
2724
            var a = this.position,
2725
                b = this.marginLeft +
2726
                this.titleWidth,
2727
                c = this.marginRight,
2728
                e = this.marginTop,
2729
                f = this.marginBottom,
2730
                g = this.horizontalGap,
2731
                h = this.div,
2732
                k = this.divWidth,
2733
                l = this.maxColumnsReal,
2734
                m = this.verticalGap,
2735
                n = this.spacing,
2736
                p = k - c - b,
2737
                r = 0,
2738
                t = 0,
2739
                q = this.container;
2740
            this.set && this.set.remove();
2741
            var y = q.set();
2742
            this.set = y;
2743
            var B = q.set();
2744
            y.push(B);
2745
            var u = this.entries,
2746
                w, v;
2747
            for (v = 0; v < u.length; v++) {
2748
                w = u[v].getBBox();
2749
                var A = w.width;
2750
                A > r && (r = A);
2751
                w = w.height;
2752
                w > t && (t = w)
2753
            }
2754
            var A = t = 0,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable A already seems to be declared on line 2749. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2755
                C = g,
2756
                x = 0,
2757
                z = 0;
2758
            for (v = 0; v < u.length; v++) {
2759
                var F = u[v];
2760
                this.reversedOrder && (F = u[u.length - v - 1]);
2761
                w = F.getBBox();
2762
                var E;
2763
                this.equalWidths ? E = A * (r + n + this.markerLabelGap) : (E = C, C = C + w.width + g + n);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2764
                E + w.width > p && 0 < v && 0 !== A && (t++, E = A = 0, C = E + w.width + g + n, x = x + z + m, z = 0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2765
                w.height > z && (z = w.height);
2766
                F.translate(E, x);
2767
                A++;
2768
                !isNaN(l) && A >= l && (A = 0, t++, x = x + z + m, C = g, z = 0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2769
                B.push(F)
2770
            }
2771
            w = B.getBBox();
2772
            l = w.height + 2 * m - 1;
2773
            "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;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2774
            c = d.polygon(this.container, [0, n, n, 0], [0, 0, l, l], this.backgroundColor, this.backgroundAlpha, 1, this.borderColor, this.borderAlpha);
2775
            d.setCN(this.chart, c, "legend-bg");
2776
            y.push(c);
2777
            y.translate(b, e);
2778
            c.toBack();
2779
            b = g;
2780
            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);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2781
            B.translate(b, m + 1);
2782
            this.titleHeight > l && (l = this.titleHeight);
2783
            e = l + e + f + 1;
2784
            0 > e && (e = 0);
2785
            "absolute" != a && "outside" != a && e > this.chart.divRealHeight && (h.style.top = "0px");
2786
            h.style.height = Math.round(e) + "px";
2787
            q.setSize(this.divWidth, e)
2788
        },
2789
        createEntry: function(a) {
2790
            if (!1 !== a.visibleInLegend && !a.hideFromLegend) {
2791
                var b = this,
2792
                    c = b.chart,
2793
                    e = b.useGraphSettings,
2794
                    f = a.markerType;
2795
                f && (e = !1);
2796
                a.legendEntryWidth = b.markerSize;
2797
                f || (f = b.markerType);
2798
                var g = a.color,
2799
                    h = a.alpha;
2800
                a.legendKeyColor && (g = a.legendKeyColor());
2801
                a.legendKeyAlpha && (h = a.legendKeyAlpha());
2802
                var k;
2803
                !0 === a.hidden && (k = g = b.markerDisabledColor);
2804
                var l = a.pattern,
2805
                    m, n = a.customMarker;
2806
                n || (n = b.customMarker);
2807
                var p = b.container,
2808
                    r = b.markerSize,
2809
                    t = 0,
2810
                    q = 0,
2811
                    y = r / 2;
2812
                if (e) {
2813
                    e = a.type;
2814
                    b.switchType = void 0;
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2815
                    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;
0 ignored issues
show
Bug introduced by
The variable k seems to not be initialized for all possible execution paths. Are you sure bullet handles undefined variables?
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2816
                    else {
2817
                        a.getGradRotation && (m = a.getGradRotation(), 0 === m && (m = 180));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2818
                        t = a.fillColorsR;
2819
                        !0 === a.hidden && (t = g);
2820
                        if (m = b.createMarker("rectangle", t, a.fillAlphas, a.lineThickness, g, a.lineAlpha, m, l, a.dashLength)) y = r, m.translate(y, r / 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Bug introduced by
The variable m seems to not be initialized for all possible execution paths. Are you sure createMarker handles undefined variables?
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2821
                        t = r
2822
                    }
2823
                    d.setCN(c, m, "graph-" + e);
2824
                    d.setCN(c, m, "graph-" + a.id)
2825
                } else if (n) m = p.image(n, 0, 0, r, r);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2826
                else {
2827
                    var B;
2828
                    isNaN(b.gradientRotation) || (B = 180 + b.gradientRotation);
2829
                    (m = b.createMarker(f, g, h, void 0, void 0, void 0, B, l)) && m.translate(r / 2, r / 2)
0 ignored issues
show
Bug introduced by
The variable B seems to not be initialized for all possible execution paths. Are you sure createMarker handles undefined variables?
Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2830
                }
2831
                d.setCN(c, m, "legend-marker");
2832
                b.addListeners(m, a);
2833
                p = p.set([m]);
2834
                b.switchable && a.switchable && p.setAttr("cursor", "pointer");
2835
                void 0 !== a.id && d.setCN(c, p, "legend-item-" + a.id);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2836
                d.setCN(c, p, a.className, !0);
2837
                k = b.switchType;
2838
                var u;
2839
                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"));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2840
                k = b.color;
2841
                a.showBalloon && b.textClickEnabled && void 0 !== b.selectedColor && (k = b.selectedColor);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2842
                b.useMarkerColorForLabels && !l && (k = g);
2843
                !0 === a.hidden && (k = b.markerDisabledColor);
2844
                g = d.massReplace(b.labelText, {
2845
                    "[[title]]": a.title
2846
                });
2847
                void 0 !== b.tabIndex && (p.setAttr("tabindex", b.tabIndex), p.setAttr("role", "menuitem"), p.keyup(function(c) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2848
                    13 == c.keyCode && b.clickMarker(a, c)
2849
                }));
2850
                c.accessible && b.accessibleLabel && (l = d.massReplace(b.accessibleLabel, {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2851
                    "[[title]]": a.title
2852
                }), c.makeAccessible(p, l));
2853
                l = b.fontSize;
2854
                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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2855
                var w;
2856
                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"),
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2857
                    w.translate(b.lx + t, b.ly), p.push(w), b.labelDx = t, c = w.getBBox().width, b.maxLabelWidth < c && (b.maxLabelWidth = c));
2858
                b.entries[b.index] = p;
2859
                a.legendEntry = b.entries[b.index];
2860
                a.legendMarker = m;
2861
                a.legendLabel = w;
0 ignored issues
show
Bug introduced by
The variable w seems to not be initialized for all possible execution paths.
Loading history...
2862
                b.index++
2863
            }
2864
        },
2865
        addListeners: function(a, b) {
2866
            var c = this;
2867
            a && a.mouseover(function(a) {
2868
                c.rollOverMarker(b, a)
2869
            }).mouseout(function(a) {
2870
                c.rollOutMarker(b, a)
2871
            }).click(function(a) {
2872
                c.clickMarker(b, a)
2873
            })
2874
        },
2875
        rollOverMarker: function(a, b) {
2876
            this.switchable && this.dispatch("rollOverMarker", a, b);
2877
            this.dispatch("rollOverItem", a, b)
2878
        },
2879
        rollOutMarker: function(a, b) {
2880
            this.switchable && this.dispatch("rollOutMarker", a, b);
2881
            this.dispatch("rollOutItem", a, b)
2882
        },
2883
        clickMarker: function(a, b) {
2884
            this.switchable && (!0 === a.hidden ? this.dispatch("showItem", a, b) : this.dispatch("hideItem", a, b));
2885
            this.dispatch("clickMarker", a, b)
2886
        },
2887
        rollOverLabel: function(a, b) {
2888
            a.hidden || this.textClickEnabled && a.legendLabel && a.legendLabel.attr({
2889
                fill: this.rollOverColor
2890
            });
2891
            this.dispatch("rollOverItem", a, b)
2892
        },
2893
        rollOutLabel: function(a, b) {
2894
            if (!a.hidden && this.textClickEnabled && a.legendLabel) {
2895
                var c = this.color;
2896
                void 0 !== this.selectedColor && a.showBalloon && (c = this.selectedColor);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
2897
                this.useMarkerColorForLabels && (c = a.lineColor, void 0 === c && (c = a.color));
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2898
                a.legendLabel.attr({
2899
                    fill: c
2900
                })
2901
            }
2902
            this.dispatch("rollOutItem", a, b)
2903
        },
2904
        clickLabel: function(a, b) {
2905
            this.textClickEnabled ? a.hidden || this.dispatch("clickLabel", a, b) : this.switchable && (!0 === a.hidden ? this.dispatch("showItem", a, b) : this.dispatch("hideItem", a, b))
2906
        },
2907
        dispatch: function(a, b, c) {
2908
            a = {
2909
                type: a,
2910
                dataItem: b,
2911
                target: this,
2912
                event: c,
2913
                chart: this.chart
2914
            };
2915
            this.chart && this.chart.handleLegendEvent(a);
2916
            this.fire(a)
2917
        },
2918
        createValue: function(a) {
2919
            var b = this,
2920
                c = b.fontSize,
2921
                e = b.chart;
2922
            if (!1 !== a.visibleInLegend && !a.hideFromLegend) {
2923
                var f = b.maxLabelWidth;
2924
                b.forceWidth && (f = b.labelWidth);
2925
                b.equalWidths || (b.valueAlign = "left");
2926
                "left" == b.valueAlign && a.legendLabel && (f = a.legendLabel.getBBox().width);
2927
                var g = f;
2928
                if (b.valueText && 0 < b.valueWidth) {
2929
                    var h = b.color;
2930
                    b.useMarkerColorForValues && (h = a.color, a.legendKeyColor && (h = a.legendKeyColor()));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2931
                    !0 === a.hidden && (h = b.markerDisabledColor);
2932
                    var k = b.valueText,
2933
                        f = f + b.lx + b.labelDx + b.markerLabelGap +
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable f already seems to be declared on line 2923. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2934
                        b.valueWidth,
2935
                        l = "end";
2936
                    "left" == b.valueAlign && (f -= b.valueWidth, l = "start");
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2937
                    h = d.text(b.container, k, h, b.chart.fontFamily, c, l);
2938
                    d.setCN(e, h, "legend-value");
2939
                    h.translate(f, b.ly);
2940
                    b.entries[b.index].push(h);
2941
                    g += b.valueWidth + 2 * b.markerLabelGap;
2942
                    h.dItem = a;
2943
                    b.valueLabels.push(h)
2944
                }
2945
                b.index++;
2946
                e = b.markerSize;
2947
                e < c + 7 && (e = c + 7, d.VML && (e += 3));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2948
                c = b.container.rect(a.legendEntryWidth, 0, g, e, 0, 0).attr({
2949
                    stroke: "none",
2950
                    fill: "#fff",
2951
                    "fill-opacity": .005
2952
                });
2953
                c.dItem = a;
2954
                b.entries[b.index - 1].push(c);
2955
                c.mouseover(function(c) {
2956
                    b.rollOverLabel(a, c)
2957
                }).mouseout(function(c) {
2958
                    b.rollOutLabel(a, c)
2959
                }).click(function(c) {
2960
                    b.clickLabel(a, c)
2961
                })
2962
            }
2963
        },
2964
        createV: function() {
2965
            var a = this.markerSize;
2966
            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)
2967
        },
2968
        createX: function() {
2969
            var a = (this.markerSize - 4) / 2,
2970
                b = {
2971
                    stroke: this.switchColor,
2972
                    "stroke-width": 3
2973
                },
2974
                c = this.container,
2975
                e = d.line(c, [-a, a], [-a, a]).attr(b),
2976
                a = d.line(c, [-a, a], [a, -a]).attr(b);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 2969. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2977
            return this.container.set([e, a])
2978
        },
2979
        createMarker: function(a, b, c, e, f, g, h, k, l) {
2980
            var m = this.markerSize,
2981
                n = this.container;
2982
            f || (f = this.markerBorderColor);
2983
            f ||
2984
                (f = b);
2985
            isNaN(e) && (e = this.markerBorderThickness);
2986
            isNaN(g) && (g = this.markerBorderAlpha);
2987
            return d.bullet(n, a, m, b, c, e, f, g, m, h, k, this.chart.path, l)
2988
        },
2989
        validateNow: function() {
2990
            this.invalidateSize()
2991
        },
2992
        updateValues: function() {
2993
            var a = this.valueLabels,
2994
                b = this.chart,
2995
                c, e = this.data;
2996
            if (a)
2997
                for (c = 0; c < a.length; c++) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2998
                    var f = a[c],
2999
                        g = f.dItem;
3000
                    g.periodDataItem = void 0;
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3001
                    g.periodPercentDataItem = void 0;
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3002
                    var h = " ";
3003
                    if (e) g.value ? f.text(g.value) : f.text("");
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3004
                    else {
3005
                        var k = null;
3006
                        if (void 0 !== g.type) {
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3007
                            var k = g.currentDataItem,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 3005. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3008
                                l = this.periodValueText;
3009
                            g.legendPeriodValueText && (l = g.legendPeriodValueText);
3010
                            g.legendPeriodValueTextR && (l = g.legendPeriodValueTextR);
3011
                            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, {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3012
                                "[[title]]": g.title
3013
                            }), h = b.formatPeriodString(l, g))
3014
                        } else h = b.formatString(this.valueText, g);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3015
                        l = g;
3016
                        k && (l = k);
3017
                        var m = this.valueFunction;
3018
                        m && (h = m(l, h, b.periodDataItem));
3019
                        var n;
3020
                        this.useMarkerColorForLabels && !k && g.lastDataItem && (k = g.lastDataItem);
3021
                        k ? n = b.getBalloonColor(g, k) : g.legendKeyColor && (n = g.legendKeyColor());
3022
                        g.legendColorFunction && (n = g.legendColorFunction(l, h, g.periodDataItem, g.periodPercentDataItem));
3023
                        f.text(h);
3024
                        if (!g.pattern && (this.useMarkerColorForValues && f.setAttr("fill", n), this.useMarkerColorForLabels)) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Bug introduced by
The variable n seems to not be initialized for all possible execution paths. Are you sure setAttr handles undefined variables?
Loading history...
3025
                            if (f = g.legendMarker) f.setAttr("fill", n), f.setAttr("stroke", n);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3026
                            (f = g.legendLabel) && (g.hidden ? f.setAttr("fill", this.markerDisabledColor) : f.setAttr("fill", n))
3027
                        }
3028
                    }
3029
                }
3030
        },
3031
        renderFix: function() {
3032
            if (!d.VML && this.enabled) {
3033
                var a = this.container;
3034
                a && a.renderFix()
3035
            }
3036
        },
3037
        destroy: function() {
3038
            this.div.innerHTML = "";
3039
            d.remove(this.set)
3040
        }
3041
    })
3042
})();
3043
(function() {
3044
    var d = window.AmCharts;
3045
    d.AmMap = d.Class({
3046
        inherits: d.AmChart,
3047
        construct: function(a) {
3048
            this.cname = "AmMap";
3049
            this.type = "map";
3050
            this.theme = a;
3051
            this.svgNotSupported = "This browser doesn't support SVG. Use Chrome, Firefox, Internet Explorer 9 or later.";
3052
            this.createEvents("rollOverMapObject", "rollOutMapObject", "clickMapObject", "mouseDownMapObject", "selectedObjectChanged", "homeButtonClicked", "zoomCompleted", "dragCompleted", "positionChanged", "writeDevInfo", "click", "descriptionClosed");
3053
            this.zoomDuration = .6;
3054
            this.zoomControl = new d.ZoomControl(a);
3055
            this.fitMapToContainer = !0;
3056
            this.mouseWheelZoomEnabled = this.backgroundZoomsToTop = !1;
3057
            this.allowClickOnSelectedObject = this.useHandCursorOnClickableOjects = this.showBalloonOnSelectedObject = !0;
3058
            this.showObjectsAfterZoom = this.wheelBusy = !1;
3059
            this.zoomOnDoubleClick = this.useObjectColorForBalloon = !0;
3060
            this.allowMultipleDescriptionWindows = !1;
3061
            // this.dragMap = this.centerMap = this.linesAboveImages = !0;
3062
            this.colorSteps = 5;
3063
            this.forceNormalize = !1;
3064
            this.showAreasInList = !0;
3065
            this.showLinesInList = this.showImagesInList = !1;
3066
            this.areasProcessor = new d.AreasProcessor(this);
3067
            this.areasSettings = new d.AreasSettings(a);
3068
            this.imagesProcessor = new d.ImagesProcessor(this);
3069
            this.imagesSettings = new d.ImagesSettings(a);
3070
            this.linesProcessor = new d.LinesProcessor(this);
3071
            this.linesSettings = new d.LinesSettings(a);
3072
            this.initialTouchZoom = 1;
3073
            this.showDescriptionOnHover = !1;
3074
            d.AmMap.base.construct.call(this, a);
3075
            this.creditsPosition = "bottom-left";
3076
            this.product = "ammap";
3077
            this.areasClasses = {};
3078
            this.updatableImages = [];
3079
            d.applyTheme(this, a, this.cname)
3080
        },
3081
        initChart: function() {
3082
            this.zoomInstantly = !0;
3083
            var a = this.container;
3084
            this.panRequired = !0;
3085
            if (this.sizeChanged && d.hasSVG && this.chartCreated) {
3086
                this.updatableImages = [];
3087
                this.freeLabelsSet && this.freeLabelsSet.remove();
3088
                this.freeLabelsSet = a.set();
3089
                this.container.setSize(this.realWidth, this.realHeight);
3090
                this.resizeMap();
3091
                this.drawBackground();
3092
                this.redrawLabels();
3093
                this.drawTitles();
3094
                this.processObjects(!0);
3095
                this.rescaleObjects();
3096
                this.zoomControl.init(this, a);
3097
                this.drawBg();
3098
                var b = this.smallMap;
3099
                b && b.init(this, a);
3100
                (b = this.valueLegend) && b.init(this, a);
3101
                this.sizeChanged = !1;
3102
                this.zoomToLongLat(this.zLevelTemp, this.zLongTemp, this.zLatTemp, !0);
3103
                this.previousWidth = this.realWidth;
3104
                this.previousHeight = this.realHeight;
3105
                this.updateSmallMap();
3106
                this.linkSet.toFront();
3107
                this.zoomControl.update && this.zoomControl.update()
3108
            } 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({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3109
                type: "failed",
3110
                chart: this
3111
            }))
3112
        },
3113
        storeTemp: function() {
3114
            if (d.hasSVG && 0 < this.realWidth && 0 < this.realHeight) {
3115
                var a = this.mapContainer.getBBox();
3116
                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))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3117
            }
3118
        },
3119
        invalidateSize: function() {
3120
            this.storeTemp();
3121
            d.AmMap.base.invalidateSize.call(this)
3122
        },
3123
        validateSize: function() {
3124
            this.storeTemp();
3125
            d.AmMap.base.validateSize.call(this)
3126
        },
3127
        handleWheelReal: function(a) {
3128
            if (!this.wheelBusy) {
3129
                this.stopAnimation();
3130
                var b = this.zoomLevel(),
3131
                    c = this.zoomControl,
3132
                    e = c.zoomFactor;
3133
                this.wheelBusy = !0;
3134
                a = d.fitToBounds(0 < a ? b * e : b / e, c.minZoomLevel, c.maxZoomLevel);
3135
                e = this.mouseX / this.mapWidth;
3136
                c = this.mouseY / this.mapHeight;
3137
                e = (this.zoomX() - e) * (a / b) + e;
3138
                b = (this.zoomY() - c) * (a / b) + c;
3139
                this.zoomTo(a, e, b)
3140
            }
3141
        },
3142
        addLegend: function(a, b) {
3143
            a.position = "absolute";
3144
            a.autoMargins = !1;
3145
            a.valueWidth = 0;
3146
            a.switchable = !1;
3147
            d.AmMap.base.addLegend.call(this, a, b);
3148
            void 0 === a.enabled && (a.enabled = !0);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3149
            return a
3150
        },
3151
        handleLegendEvent: function() {},
3152
        createDescriptionsDiv: function() {
3153
            if (!this.descriptionsDiv) {
3154
                var a = document.createElement("div"),
3155
                    b = a.style;
3156
                b.position = "absolute";
3157
                b.left = "0px";
3158
                b.top = "0px";
3159
                this.descriptionsDiv = a
3160
            }
3161
            this.containerDiv.appendChild(this.descriptionsDiv)
3162
        },
3163
        drawChart: function() {
3164
            d.AmMap.base.drawChart.call(this);
3165
            var a = this.dataProvider;
3166
            this.dataProvider = a = d.extend(a, new d.MapData, !0);
3167
            this.areasSettings = d.processObject(this.areasSettings, d.AreasSettings, this.theme);
3168
            this.imagesSettings = d.processObject(this.imagesSettings, d.ImagesSettings, this.theme);
3169
            this.linesSettings = d.processObject(this.linesSettings, d.LinesSettings, this.theme);
3170
            var b = this.container;
3171
            this.mapContainer && this.mapContainer.remove();
3172
            this.mapContainer = b.set();
3173
            this.graphsSet.push(this.mapContainer);
3174
            var c;
3175
            a.map && (c = d.maps[a.map]);
3176
            a.mapVar && (c = a.mapVar);
3177
            c ? (this.svgData = c.svg, this.getBounds(), this.buildEverything()) : (a = a.mapURL) && this.loadXml(a);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3178
            this.balloonsSet.toFront()
3179
        },
3180
        drawBg: function() {
3181
            var a = this;
3182
            a.background.click(function() {
3183
                a.handleBackgroundClick()
3184
            });
3185
            a.background.mouseover(function() {
3186
                a.rollOutMapObject(a.previouslyHovered)
3187
            })
3188
        },
3189
        buildEverything: function() {
3190
            if (0 < this.realWidth && 0 < this.realHeight) {
3191
                var a = this.container,
3192
                    b = this.dataProvider;
3193
                this.projection || (this.projection = b.projection, this.projection || (this.projection = "equirectangular"));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3194
                this.updatableImages = [];
3195
                var c = this.projection;
3196
                c && (this.projectionFunction = d[c]);
3197
                this.projectionFunction || (this.projectionFunction = d.equirectangular);
3198
                this.dpProjectionFunction = d[b.projection];
3199
                this.dpProjectionFunction || (this.dpProjectionFunction = d.equirectangular);
3200
                this.zoomControl = d.processObject(this.zoomControl, d.ZoomControl, this.theme);
3201
                this.zoomControl.init(this, a);
3202
                this.drawBg();
3203
                this.buildSVGMap();
3204
                this.projectionFunction && c != b.projection || this.forceNormalize ? (this.normalizeMap(), this.changeProjection()) : this.fixMapPosition();
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3205
                if (c = this.smallMap) c = d.processObject(c, d.SmallMap, this.theme), c.init(this, a), this.smallMap = c;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3206
                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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3207
                this.selectObject(this.dataProvider);
3208
                this.processAreas();
3209
                if (b = this.valueLegend) this.valueLegend = b = d.processObject(b, d.ValueLegend, this.theme), b.init(this, a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3210
                this.objectList && (a = this.objectList = d.processObject(this.objectList, d.ObjectList)) && (this.clearObjectList(), a.init(this));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3211
                this.dispDUpd();
3212
                this.updateSmallMap();
3213
                this.linkSet.toFront()
3214
            } else this.cleanChart()
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3215
        },
3216
        hideGroup: function(a) {
3217
            this.showHideGroup(a, !1)
3218
        },
3219
        showGroup: function(a) {
3220
            this.showHideGroup(a, !0)
3221
        },
3222
        showHideGroup: function(a, b) {
3223
            this.showHideReal(this.imagesProcessor.allObjects, a, b);
3224
            this.showHideReal(this.areasProcessor.allObjects, a, b);
3225
            this.showHideReal(this.linesProcessor.allObjects, a, b)
3226
        },
3227
        showHideReal: function(a, b, c) {
3228
            var e;
3229
            for (e = 0; e < a.length; e++) {
3230
                var d = a[e];
3231
                if (d.groupId == b) {
3232
                    var g = d.displayObject;
3233
                    g && (c ? (d.hidden = !1, g.show()) : (d.hidden = !0, g.hide()))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3234
                }
3235
            }
3236
        },
3237
        makeObjectAccessible: function(a) {
3238
            if (a.accessibleLabel) {
3239
                var b = this.formatString(a.accessibleLabel, a);
3240
                a.displayObject && this.makeAccessible(a.displayObject, b, "menuitem")
3241
            }
3242
        },
3243
        update: function() {
3244
            if (d.hasSVG) {
3245
                d.AmMap.base.update.call(this);
3246
                this.zoomControl && this.zoomControl.update && this.zoomControl.update();
3247
                for (var a = 0, b = this.updatableImages.length; a < b; a++) this.updatableImages[a].update()
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3248
            }
3249
        },
3250
        animateMap: function() {
3251
            var a = this;
3252
            a.totalFrames = a.zoomDuration * d.updateRate;
3253
            a.totalFrames += 1;
3254
            a.frame = 0;
3255
            a.tweenPercent = 0;
3256
            a.balloon.hide(0);
3257
            setTimeout(function() {
3258
                a.updateSize.call(a)
3259
            }, 1E3 / d.updateRate)
3260
        },
3261
        updateSize: function() {
3262
            var a = this,
3263
                b = a.totalFrames;
3264
            a.preventHover = !0;
3265
            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() {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3266
                a.updateSize.call(a)
3267
            }) : setTimeout(function() {
3268
                a.updateSize.call(a)
3269
            }, 1E3 / d.updateRate), .8 < b && (a.preventHover = !1)) : (b = 1, a.preventHover = !1, a.wheelBusy = !1);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3270
            a.tweenPercent = b;
3271
            a.rescaleMapAndObjects()
3272
        },
3273
        rescaleMapAndObjects: function() {
3274
            var a = this.initialScale,
3275
                b = this.initialX,
3276
                c = this.initialY,
3277
                e = this.tweenPercent,
3278
                a = a + (this.finalScale - a) * e;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 3274. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3279
            this.mapContainer.translate(b + (this.finalX - b) * e, c + (this.finalY - c) * e, a, !0);
3280
            if (this.areasSettings.adjustOutlineThickness) {
3281
                for (var b = this.svgAreas, d = 0; d < b.length; d++)(c = b[d]) && c.setAttr("stroke-width", this.areasSettings.outlineThickness / a / this.mapScale);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 3275. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3282
                if (b = this.dataProvider.areas)
3283
                    for (d = 0; d < b.length; d++) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3284
                        var c = b[d],
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3276. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3285
                            g = c.displayObject;
3286
                        g && g.setAttr("stroke-width", c.outlineThicknessReal / a / this.mapScale)
3287
                    }
3288
            }
3289
            this.rescaleObjects();
3290
            this.positionChanged();
3291
            this.updateSmallMap();
3292
            1 == e && this.fire({
3293
                type: "zoomCompleted",
3294
                chart: this
3295
            })
3296
        },
3297
        updateSmallMap: function() {
3298
            this.smallMap && this.smallMap.update()
3299
        },
3300
        rescaleObjects: function() {
3301
            var a = this.mapContainer.scale,
3302
                b = this.imagesProcessor.objectsToResize,
3303
                c;
3304
            for (c = 0; c < b.length; c++) {
3305
                var d = b[c].image,
3306
                    f = b[c].scale,
3307
                    g = b[c].mapImage;
3308
                isNaN(g.selectedScaleReal) || g != this.selectedObject || (g.tempScale = f, f *= g.selectedScaleReal);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3309
                d.translate(d.x, d.y, f / a, !0)
3310
            }
3311
            b = this.imagesProcessor.labelsToReposition;
3312
            for (c = 0; c < b.length; c++) d = b[c], d.imageLabel && this.imagesProcessor.positionLabel(d.imageLabel, d, d.labelPositionReal);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3313
            b = this.linesProcessor;
3314
            if (d = b.linesToResize)
3315
                for (c = 0; c < d.length; c++) f = d[c], f.line.setAttr("stroke-width", f.thickness / a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3316
            b = b.objectsToResize;
3317
            for (c = 0; c < b.length; c++) d = b[c], d.translate(d.x, d.y, 1 / a, !0)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3318
        },
3319
        handleTouchEnd: function(a) {
3320
            this.initialDistance = NaN;
3321
            this.mouseIsDown = this.isDragging = !1;
3322
            d.AmMap.base.handleTouchEnd.call(this, a)
3323
        },
3324
        handleMouseDown: function(a) {
3325
            d.resetMouseOver();
3326
            this.mouseIsDown = this.mouseIsOver = !0;
3327
            this.balloon.hide(0);
3328
            a && this.mouseIsOver && a.preventDefault && this.panEventsEnabled && a.preventDefault();
3329
            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)) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3330
                var b = this.mouseX,
3331
                    c = this.mouseY,
3332
                    e = a.touches.item(1);
3333
                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)))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3334
            }
3335
        },
3336
        stopDrag: function() {
3337
            this.isDragging = !1
3338
        },
3339
        handleReleaseOutside: function() {
3340
            if (d.isModern) {
3341
                var a = this;
3342
                d.AmMap.base.handleReleaseOutside.call(a);
3343
                a.mouseIsDown = !1;
3344
                setTimeout(function() {
3345
                    a.resetPinch.call(a)
3346
                }, 100);
3347
                if (!a.preventHover) {
3348
                    a.stopDrag();
3349
                    var b = a.zoomControl;
3350
                    b && b.draggerUp && b.draggerUp();
3351
                    a.mapWasDragged = !1;
3352
                    var b = a.mapContainer,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 3349. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3353
                        c = a.mapContainerClickX,
3354
                        e = a.mapContainerClickY;
3355
                    isNaN(c) || isNaN(e) || !(3 < Math.abs(b.x - c) || 3 < Math.abs(b.y - e)) || (a.mapWasDragged = !0, b = {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3356
                        type: "dragCompleted",
3357
                        zoomX: a.zoomX(),
3358
                        zoomY: a.zoomY(),
3359
                        zoomLevel: a.zoomLevel(),
3360
                        chart: a
3361
                    }, a.fire(b));
3362
                    (a.mouseIsOver && !a.mapWasDragged && !a.skipClick || a.wasTouched && 3 > Math.abs(a.mouseX - a.tmx) && 3 > Math.abs(a.mouseY - a.tmy)) && a.fire({
3363
                        type: "click",
3364
                        x: a.mouseX,
3365
                        y: a.mouseY,
3366
                        chart: a
3367
                    });
3368
                    a.mapContainerClickX = NaN;
3369
                    a.mapContainerClickY = NaN;
3370
                    a.objectWasClicked = !1;
3371
                    a.zoomOnDoubleClick && a.mouseIsOver && (b = (new Date).getTime(), 200 > b - a.previousClickTime && 40 < b - a.previousClickTime && a.doDoubleClickZoom(), a.previousClickTime = b)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3372
                }
3373
                a.wasTouched = !1
3374
            }
3375
        },
3376
        resetPinch: function() {
3377
            this.mapWasPinched = !1
3378
        },
3379
        handleMouseMove: function(a) {
3380
            var b = this;
3381
            d.AmMap.base.handleMouseMove.call(b, a);
3382
            if (!a || !a.touches || !b.tapToActivate || b.tapped) {
3383
                b.panEventsEnabled && b.mouseIsOver && a && a.preventDefault && a.preventDefault();
3384
                var c = b.previuosMouseX,
3385
                    e = b.previuosMouseY,
3386
                    f = b.mouseX,
3387
                    g = b.mouseY,
3388
                    h = b.zoomControl;
3389
                isNaN(c) && (c = f);
3390
                isNaN(e) && (e = g);
3391
                b.mouse2X = NaN;
3392
                b.mouse2Y = NaN;
3393
                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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3394
                if (a = b.mapContainer) {
3395
                    var k = b.mouse2X,
3396
                        l = b.mouse2Y;
3397
                    b.pinchTO && clearTimeout(b.pinchTO);
3398
                    b.pinchTO = setTimeout(function() {
3399
                        b.resetPinch.call(b)
3400
                    }, 1E3);
3401
                    var m = b.realHeight,
3402
                        n = b.realWidth,
3403
                        p = b.mapWidth,
3404
                        r = b.mapHeight;
3405
                    b.mouseIsDown && b.dragMap && (3 < Math.abs(b.previuosMouseX - b.mouseX) || 3 < Math.abs(b.previuosMouseY - b.mouseY)) && (b.isDragging = !0);
3406
                    if (!isNaN(k)) {
3407
                        b.stopDrag();
3408
                        var t = Math.sqrt(Math.pow(k - f, 2) + Math.pow(l - g, 2)),
3409
                            q = b.initialDistance;
3410
                        isNaN(q) && (q = Math.sqrt(Math.pow(k - f, 2) + Math.pow(l - g, 2)));
3411
                        if (!isNaN(q)) {
3412
                            var k = b.initialTouchZoom * t / q,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 3395. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3413
                                k = d.fitToBounds(k, h.minZoomLevel, h.maxZoomLevel),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 3395. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3414
                                h = b.zoomLevel(),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 3388. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3415
                                q = b.middleXP,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable q already seems to be declared on line 3409. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3416
                                l = b.middleYP,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable l already seems to be declared on line 3396. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3417
                                t = m / r,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable t already seems to be declared on line 3408. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3418
                                y = n / p,
3419
                                q = (b.zoomX() - q * y) * (k / h) + q * y,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable q already seems to be declared on line 3409. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3420
                                l = (b.zoomY() -
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable l already seems to be declared on line 3396. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3421
                                    l * t) * (k / h) + l * t;
3422
                            .1 < Math.abs(k - h) && (b.zoomTo(k, q, l, !0), b.mapWasPinched = !0, clearTimeout(b.pinchTO))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3423
                        }
3424
                    }
3425
                    k = a.scale;
3426
                    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()));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3427
                    b.previuosMouseX = f;
3428
                    b.previuosMouseY = g
3429
                }
3430
            }
3431
        },
3432
        selectObject: function(a, b) {
3433
            var c = this;
3434
            a || (a = c.dataProvider);
3435
            a.isOver = !1;
3436
            var e = a.linkToObject;
3437
            d.isString(e) && (e = c.getObjectById(e));
3438
            a.useTargetsZoomValues && e && (a.zoomX = e.zoomX, a.zoomY = e.zoomY, a.zoomLatitude = e.zoomLatitude, a.zoomLongitude = e.zoomLongitude, a.zoomLevel = e.zoomLevel);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3439
            var f = c.selectedObject;
3440
            f && c.returnInitialColor(f);
3441
            c.selectedObject = a;
3442
            var g = !1,
3443
                h, k;
3444
            "MapArea" == a.objectType && (a.autoZoomReal && (g = !0), h = c.areasSettings.selectedOutlineColor, k = c.areasSettings.selectedOutlineThickness);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3445
            if (e && !g && (d.isString(e) && (e = c.getObjectById(e)), isNaN(a.zoomLevel) && isNaN(a.zoomX) && isNaN(a.zoomY))) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3446
                if (c.extendMapData(e)) return;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3447
                c.selectObject(e);
3448
                return
3449
            }
3450
            c.allowMultipleDescriptionWindows || c.closeAllDescriptions();
3451
            clearTimeout(c.selectedObjectTimeOut);
3452
            clearTimeout(c.processObjectsTimeOut);
3453
            e = c.zoomDuration;
3454
            !g && isNaN(a.zoomLevel) && isNaN(a.zoomX) && isNaN(a.zoomY) ? (c.showDescriptionAndGetUrl(), b || c.processObjects()) : (c.selectedObjectTimeOut = setTimeout(function() {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3455
                c.showDescriptionAndGetUrl.call(c)
3456
            }, 1E3 * e + 200), c.showObjectsAfterZoom) ? b || (c.processObjectsTimeOut = setTimeout(function() {
3457
                c.processObjects.call(c)
3458
            }, 1E3 * e + 200)) : b || c.processObjects();
3459
            e = a.displayObject;
3460
            g = a.selectedColorReal;
3461
            if ("MapImage" == a.objectType) {
3462
                h = c.imagesSettings.selectedOutlineColor;
3463
                k = c.imagesSettings.selectedOutlineThickness;
3464
                var e = a.image,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 3436. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3465
                    l = a.selectedScaleReal;
3466
                if (!isNaN(l) && 1 != l) {
3467
                    var m = a.scale;
3468
                    isNaN(a.tempScale) || (m = a.tempScale);
3469
                    isNaN(m) && (m = 1);
3470
                    a.tempScale = m;
3471
                    var n = a.displayObject;
3472
                    n.translate(n.x, n.y, m * l, !0)
3473
                }
3474
            }
3475
            if (e) {
3476
                if (d.removeCN(c, e, "selected-object"), d.setCN(c, e, "selected-object"), a.bringForwardOnHover && a.displayObject.toFront(), c.outlinesToFront(), !a.preserveOriginalAttributes) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3477
                    e.setAttr("stroke", a.outlineColorReal);
3478
                    void 0 !== g && e.setAttr("fill", g);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3479
                    void 0 !== h && e.setAttr("stroke", h);
0 ignored issues
show
Bug introduced by
The variable h seems to not be initialized for all possible execution paths.
Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3480
                    void 0 !== k && e.setAttr("stroke-width", k);
0 ignored issues
show
Bug introduced by
The variable k seems to not be initialized for all possible execution paths.
Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3481
                    "MapLine" == a.objectType && ((l = a.lineSvg) && l.setAttr("stroke", g), l = a.arrowSvg) && (l.setAttr("fill", g), l.setAttr("stroke", g));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3482
                    if (l = a.imageLabel) m = a.selectedLabelColorReal, void 0 !== m && l.setAttr("fill", m);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3483
                    a.selectable || (e.setAttr("cursor", "default"), l && l.setAttr("cursor", "default"))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3484
                }
3485
            } else c.returnInitialColorReal(a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3486
            if (e = a.groupId)
3487
                for (l = a.groupArray, l || (l = c.getGroupById(e), a.groupArray = l), m = 0; m < l.length; m++)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3488
                    if (n = l[m], n.isOver = !1, e = n.displayObject, "MapImage" == n.objectType && (e = n.image), e) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3489
                        var p = n.selectedColorReal;
3490
                        void 0 !== p && e.setAttr("fill", p);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3491
                        void 0 !== h && e.setAttr("stroke", h);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3492
                        void 0 !== k && e.setAttr("stroke-width", k);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3493
                        "MapLine" == n.objectType && ((e = n.lineSvg) && e.setAttr("stroke", g), e = n.arrowSvg) && (e.setAttr("fill", g), e.setAttr("stroke", g))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3494
                    }
3495
            c.rescaleObjects();
3496
            c.zoomToSelectedObject();
3497
            f != a && c.fire({
3498
                type: "selectedObjectChanged",
3499
                chart: c
3500
            })
3501
        },
3502
        returnInitialColor: function(a, b) {
3503
            this.returnInitialColorReal(a);
3504
            b && (a.isFirst = !1);
3505
            if (this.selectedObject.bringForwardOnHover) {
3506
                var c = this.selectedObject.displayObject;
3507
                c && c.toFront()
3508
            }
3509
            if (c = a.groupId) {
3510
                var c = this.getGroupById(c),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3506. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3511
                    d;
3512
                for (d = 0; d < c.length; d++) this.returnInitialColorReal(c[d]), b && (c[d].isFirst = !1)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3513
            }
3514
            this.outlinesToFront()
3515
        },
3516
        outlinesToFront: function() {
3517
            if (this.outlines)
3518
                for (var a = 0; a < this.outlines.length; a++) this.outlines[a].toFront()
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3519
        },
3520
        closeAllDescriptions: function() {
3521
            this.descriptionsDiv.innerHTML = ""
3522
        },
3523
        fireClosed: function() {
3524
            this.fire({
3525
                type: "descriptionClosed",
3526
                chart: this
3527
            })
3528
        },
3529
        returnInitialColorReal: function(a) {
3530
            a.isOver = !1;
3531
            var b = a.displayObject;
3532
            if (b) {
3533
                d.removeCN(this, b, "selected-object");
3534
                b.toPrevious();
3535
                if ("MapImage" == a.objectType) {
3536
                    var c = a.tempScale;
3537
                    isNaN(c) || b.translate(b.x, b.y, c, !0);
3538
                    a.tempScale = NaN;
3539
                    b = a.image
3540
                }
3541
                c = a.colorReal;
3542
                if ("MapLine" == a.objectType) {
3543
                    var e = a.lineSvg;
3544
                    e && e.setAttr("stroke", c);
3545
                    if (e = a.arrowSvg) {
3546
                        var f = a.arrowColor;
3547
                        void 0 === f && (f = c);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3548
                        e.setAttr("fill", f);
3549
                        e.setAttr("stroke", f)
3550
                    }
3551
                }
3552
                var e = a.alphaReal,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 3543. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3553
                    f = a.outlineAlphaReal,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable f already seems to be declared on line 3546. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3554
                    g = a.outlineThicknessReal,
3555
                    h = a.outlineColorReal;
3556
                if (a.showAsSelected) {
3557
                    var c = a.selectedColorReal,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3536. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3558
                        k, l;
3559
                    "MapImage" == a.objectType && (k = this.imagesSettings.selectedOutlineColor, l = this.imagesSettings.selectedOutlineThickness);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3560
                    "MapArea" == a.objectType && (k = this.areasSettings.selectedOutlineColor, l = this.areasSettings.selectedOutlineThickness);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3561
                    void 0 !== k && (h = k);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Bug introduced by
The variable k seems to not be initialized for all possible execution paths.
Loading history...
3562
                    void 0 !== l && (g = l)
0 ignored issues
show
Bug introduced by
The variable l seems to not be initialized for all possible execution paths.
Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3563
                }
3564
                "bubble" == a.type && (c = void 0);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3565
                void 0 !== c && b.setAttr("fill", c);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3566
                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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3567
                "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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3568
                (c = a.pattern) && b.pattern(c, this.mapScale, this.path);
3569
                (b = a.imageLabel) && !a.labelInactive && (a.showAsSelected && void 0 !== a.selectedLabelColor ? b.setAttr("fill", a.selectedLabelColor) : b.setAttr("fill", a.labelColorReal))
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3570
            }
3571
        },
3572
        zoomToRectangle: function(a, b, c, e) {
3573
            var f = this.realWidth,
3574
                g = this.realHeight,
3575
                h = this.mapSet.scale,
3576
                k = this.zoomControl,
3577
                f = d.fitToBounds(c / f > e / g ? .8 * f / (c * h) : .8 * g / (e * h), k.minZoomLevel, k.maxZoomLevel);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable f already seems to be declared on line 3573. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3578
            this.zoomToMapXY(f, (a + c / 2) * h, (b + e / 2) * h)
3579
        },
3580
        zoomToLatLongRectangle: function(a, b, c, e) {
3581
            var f = this.dataProvider,
3582
                g = this.zoomControl,
3583
                h = Math.abs(c - a),
3584
                k = Math.abs(b - e),
3585
                l = Math.abs(f.rightLongitude - f.leftLongitude),
3586
                f = Math.abs(f.topLatitude - f.bottomLatitude),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable f already seems to be declared on line 3581. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3587
                g = d.fitToBounds(h / l > k / f ? .8 * l / h : .8 * f / k, g.minZoomLevel, g.maxZoomLevel);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable g already seems to be declared on line 3582. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3588
            this.zoomToLongLat(g, a + (c - a) / 2, e + (b - e) / 2)
3589
        },
3590
        getGroupById: function(a) {
3591
            var b = [];
3592
            this.getGroup(this.imagesProcessor.allObjects, a, b);
3593
            this.getGroup(this.linesProcessor.allObjects, a, b);
3594
            this.getGroup(this.areasProcessor.allObjects, a, b);
3595
            return b
3596
        },
3597
        zoomToGroup: function(a) {
3598
            a = "object" == typeof a ? a : this.getGroupById(a);
3599
            var b, c, d, f, g;
3600
            for (g = 0; g < a.length; g++) {
3601
                var h = a[g].displayObject;
3602
                if (h) {
3603
                    var k = h.getBBox(),
3604
                        h = k.y,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 3601. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3605
                        l = k.y + k.height,
3606
                        m = k.x,
3607
                        k = k.x + k.width;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 3603. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3608
                    if (h < b || isNaN(b)) b = h;
0 ignored issues
show
Bug introduced by
The variable b seems to not be initialized for all possible execution paths.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3609
                    if (l > f || isNaN(f)) f = l;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Bug introduced by
The variable f seems to not be initialized for all possible execution paths.
Loading history...
3610
                    if (m < c || isNaN(c)) c = m;
0 ignored issues
show
Bug introduced by
The variable c seems to not be initialized for all possible execution paths.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3611
                    if (k > d || isNaN(d)) d = k
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Bug introduced by
The variable d seems to not be initialized for all possible execution paths.
Loading history...
3612
                }
3613
            }
3614
            c += this.diffX;
3615
            d += this.diffX;
3616
            f += this.diffY;
3617
            b += this.diffY;
3618
            this.zoomToRectangle(c, b, d - c, f - b)
3619
        },
3620
        getGroup: function(a, b, c) {
3621
            if (a) {
3622
                var d;
3623
                for (d = 0; d < a.length; d++) {
3624
                    var f = a[d];
3625
                    f.groupId == b && c.push(f)
3626
                }
3627
            }
3628
        },
3629
        zoomToStageXY: function(a, b, c, e) {
3630
            if (!this.objectWasClicked) {
3631
                var f = this.zoomControl;
3632
                a = d.fitToBounds(a, f.minZoomLevel, f.maxZoomLevel);
3633
                var f = this.zoomLevel(),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable f already seems to be declared on line 3631. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3634
                    g = this.mapSet.getBBox();
3635
                b = this.xyToCoordinates((b - this.mapContainer.x) / f - g.x * this.mapScale, (c - this.mapContainer.y) / f - g.y * this.mapScale);
3636
                this.zoomToLongLat(a, b.longitude, b.latitude, e)
3637
            }
3638
        },
3639
        zoomToLongLat: function(a, b, c,
3640
            d) {
3641
            b = this.coordinatesToXY(b, c);
3642
            this.zoomToMapXY(a, b.x, b.y, d)
3643
        },
3644
        zoomToMapXY: function(a, b, c, d) {
3645
            var f = this.mapWidth,
3646
                g = this.mapHeight;
3647
            this.zoomTo(a, -(b / f) * a + this.realWidth / f / 2, -(c / g) * a + this.realHeight / g / 2, d)
3648
        },
3649
        zoomToObject: function(a) {
3650
            if (a) {
3651
                var b = a.zoomLatitude,
3652
                    c = a.zoomLongitude;
3653
                isNaN(a.zoomLatitudeC) || (b = a.zoomLatitudeC);
3654
                isNaN(a.zoomLongitudeC) || (c = a.zoomLongitudeC);
3655
                var e = a.zoomLevel,
3656
                    f = this.zoomInstantly,
3657
                    g = a.zoomX,
3658
                    h = a.zoomY,
3659
                    k = this.realWidth,
3660
                    l = this.realHeight;
3661
                isNaN(e) || (isNaN(b) || isNaN(c) ? this.zoomTo(e, g, h, f) : this.zoomToLongLat(e, c, b, f));
3662
                this.zoomInstantly = !1;
3663
                "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);
3664
                "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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3665
                this.zoomControl.update()
3666
            }
3667
        },
3668
        zoomToSelectedObject: function() {
3669
            this.zoomToObject(this.selectedObject)
3670
        },
3671
        zoomTo: function(a, b, c, e) {
3672
            var f = this.zoomControl;
3673
            a = d.fitToBounds(a, f.minZoomLevel, f.maxZoomLevel);
3674
            f = this.zoomLevel();
3675
            isNaN(b) && (b = this.realWidth / this.mapWidth, b = (this.zoomX() - .5 * b) * (a / f) + .5 * b);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3676
            isNaN(c) && (c = this.realHeight / this.mapHeight, c = (this.zoomY() - .5 * c) * (a / f) + .5 * c);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3677
            this.stopAnimation();
3678
            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)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3679
        },
3680
        loadXml: function(a) {
3681
            var b;
3682
            window.XMLHttpRequest && (b = new XMLHttpRequest);
0 ignored issues
show
Bug introduced by
The variable XMLHttpRequest seems to be never declared. If this is a global, consider adding a /** global: XMLHttpRequest */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
3683
            b.overrideMimeType && b.overrideMimeType("text/xml");
0 ignored issues
show
Bug introduced by
The variable b seems to not be initialized for all possible execution paths.
Loading history...
3684
            b.open("GET", a, !1);
3685
            b.send();
3686
            this.parseXMLObject(b.responseXML);
3687
            this.svgData && this.buildEverything()
3688
        },
3689
        stopAnimation: function() {
3690
            this.frame = this.totalFrames
3691
        },
3692
        processObjects: function(a) {
3693
            var b = this.selectedObject;
3694
            if (0 < b.images.length || 0 < b.areas.length || 0 < b.lines.length || b == this.dataProvider || a) {
3695
                a = this.container;
3696
                var c = this.stageImagesContainer;
3697
                c && c.remove();
3698
                this.stageImagesContainer = c = a.set();
3699
                this.trendLinesSet.push(c);
3700
                var d = this.stageLinesContainer;
3701
                d && d.remove();
3702
                this.stageLinesContainer = d = a.set();
3703
                this.trendLinesSet.push(d);
3704
                var f = this.mapImagesContainer;
3705
                f && f.remove();
3706
                this.mapImagesContainer = f = a.set();
3707
                this.mapContainer.push(f);
3708
                var g = this.mapLinesContainer;
3709
                g && g.remove();
3710
                this.mapLinesContainer = g = a.set();
3711
                this.mapContainer.push(g);
3712
                this.linesAboveImages ? (f.toFront(), c.toFront(), g.toFront(), d.toFront()) : (g.toFront(), d.toFront(), f.toFront(), c.toFront());
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3713
                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)));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3714
                this.rescaleObjects()
3715
            }
3716
        },
3717
        processAreas: function() {
3718
            this.areasProcessor.process(this.dataProvider)
3719
        },
3720
        buildSVGMap: function() {
3721
            d.remove(this.mapSet);
3722
            var a = this.svgData.g.path,
3723
                b = this.container,
3724
                c = b.set();
3725
            this.svgAreas = [];
3726
            this.svgAreasById = {};
3727
            void 0 === a.length && (a = [a]);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3728
            var e;
3729
            for (e = 0; e < a.length; e++) {
3730
                var f = a[e],
3731
                    g = f.d,
3732
                    h = f.title;
3733
                f.titleTr && (h = f.titleTr);
3734
                var k = b.path(g);
3735
                k.id = f.id;
3736
                if (this.areasSettings.preserveOriginalAttributes) {
3737
                    k.customAttr = {};
3738
                    for (var l in f) "d" != l && "id" != l && "title" != l && (k.customAttr[l] = f[l])
0 ignored issues
show
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3739
                }
3740
                f.outline && (k.outline = !0);
3741
                k.path = g;
3742
                this.svgAreasById[f.id] = {
3743
                    area: k,
3744
                    title: h,
3745
                    className: f["class"]
3746
                };
3747
                this.svgAreas.push(k);
3748
                c.push(k)
3749
            }
3750
            this.mapSet = c;
3751
            this.mapContainer.push(c);
3752
            this.resizeMap()
3753
        },
3754
        centerAlign: function() {},
3755
        setProjection: function(a) {
3756
            this.projection = a;
3757
            this.chartCreated = !1;
3758
            this.buildEverything()
3759
        },
3760
        addObjectEventListeners: function(a, b) {
3761
            var c = this;
3762
            a.mousedown(function(a) {
3763
                c.mouseDownMapObject(b, a)
3764
            }).mouseup(function(a) {
3765
                c.clickMapObject(b, a)
3766
            }).mouseover(function(a) {
3767
                c.balloonX = NaN;
3768
                c.rollOverMapObject(b, !0, a)
3769
            }).mouseout(function(a) {
3770
                c.balloonX = NaN;
3771
                c.rollOutMapObject(b, a)
3772
            }).touchend(function(a) {
3773
                4 > Math.abs(c.mouseX - c.tmx) && 4 > Math.abs(c.mouseY - c.tmy) && (c.tapped = !0);
3774
                c.tapToActivate && !c.tapped || c.mapWasDragged || c.mapWasPinched || (c.balloonX = NaN, c.rollOverMapObject(b, !0, a), c.clickMapObject(b, a))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3775
            }).touchstart(function(a) {
3776
                c.tmx = c.mouseX;
3777
                c.tmy = c.mouseY;
3778
                c.mouseDownMapObject(b, a)
3779
            }).keyup(function(a) {
3780
                13 == a.keyCode && c.clickMapObject(b, a)
3781
            })
3782
        },
3783
        checkIfSelected: function(a) {
3784
            var b = this.selectedObject;
3785
            if (b == a) return !0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3786
            if (b = b.groupId) {
3787
                var b = this.getGroupById(b),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 3784. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3788
                    c;
3789
                for (c = 0; c < b.length; c++)
3790
                    if (b[c] == a) return !0
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3791
            }
3792
            return !1
3793
        },
3794
        clearMap: function() {
3795
            this.chartDiv.innerHTML = "";
3796
            this.clearObjectList()
3797
        },
3798
        clearObjectList: function() {
3799
            var a = this.objectList;
3800
            a && a.div && (a.div.innerHTML = "")
3801
        },
3802
        checkIfLast: function(a) {
3803
            if (a) {
3804
                var b = a.parentNode;
3805
                if (b && b.lastChild == a) return !0
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3806
            }
3807
            return !1
3808
        },
3809
        showAsRolledOver: function(a) {
3810
            var b = a.displayObject;
3811
            // console.log(a);
3812
            a.rollOverColorReal = "#b30000";
3813
            a.rollOverScaleReal = 2;
3814
            a.balloonTextReal = "[[title]]";
3815
            // a.images = ["https://pixel.nymag.com/imgs/daily/intelligencer/2016/04/13/13-kobe-bryant-2016.w710.h473.2x.jpg"]
3816
            if (!a.showAsSelected && b && !a.isOver) {
3817
                b.node.onmouseout = function() {};
3818
                b.node.onmouseover = function() {};
3819
                // b.node.onclick = function() {window.location.href = "./" + a.contest};
3820
                // b.node.onclick = function() {
3821
                //          window.location.href = "./" + a.contest ;
3822
                // };
3823
3824
                !a.isFirst && a.bringForwardOnHover && (b.toFront(), a.isFirst = !0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3825
                var c = a.rollOverColorReal,
3826
                    e;
3827
                a.preserveOriginalAttributes && (c = void 0);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3828
                "bubble" == a.type && (c = void 0);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3829
                void 0 == c && (isNaN(a.rollOverBrightnessReal) || (c = d.adjustLuminosity(a.colorReal, a.rollOverBrightnessReal / 100)));
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3830
                if (void 0 != c)
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3831
                    if ("MapImage" == a.objectType)(e = a.image) && e.setAttr("fill", c);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3832
                    else if ("MapLine" == a.objectType) {
3833
                    if ((e = a.lineSvg) && e.setAttr("stroke", c), e = a.arrowSvg) e.setAttr("fill", c), e.setAttr("stroke", c)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3834
                } else b.setAttr("fill", c);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3835
                (c = a.imageLabel) && !a.labelInactive && (e = a.labelRollOverColorReal, void 0 != e && c.setAttr("fill", e));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3836
                c = a.rollOverOutlineColorReal;
3837
                void 0 != c && ("MapImage" == a.objectType ? (e = a.image) && e.setAttr("stroke", c) : b.setAttr("stroke", c));
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3838
                "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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3839
                if ("MapArea" == a.objectType) {
3840
                    c = this.areasSettings;
3841
                    e = a.rollOverAlphaReal;
3842
                    isNaN(e) || b.setAttr("fill-opacity", e);
3843
                    e = c.rollOverOutlineAlpha;
3844
                    isNaN(e) || b.setAttr("stroke-opacity", e);
3845
                    e = 1;
3846
                    this.areasSettings.adjustOutlineThickness && (e = this.zoomLevel() * this.mapScale);
3847
                    var f = c.rollOverOutlineThickness;
3848
                    isNaN(f) || b.setAttr("stroke-width", f / e);
3849
                    (c = c.rollOverPattern) && b.pattern(c, this.mapScale, this.path)
3850
                }
3851
                "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)));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3852
                this.useHandCursorOnClickableOjects && this.checkIfClickable(a) && b.setAttr("cursor", "pointer");
3853
                a.mouseEnabled && this.addObjectEventListeners(b, a);
3854
                a.isOver = !0
3855
            }
3856
            this.outlinesToFront()
3857
        },
3858
        rollOverMapObject: function(a, b, c) {
3859
            if (this.chartCreated) {
3860
                this.handleMouseMove();
3861
                var d = this.previouslyHovered;
3862
                d && d != a ? (!1 === this.checkIfSelected(d) && (this.returnInitialColor(d, !0), this.previouslyHovered = null), this.balloon.hide(0)) : clearTimeout(this.hoverInt);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3863
                if (!this.preventHover) {
3864
                    if (!1 === this.checkIfSelected(a)) {
3865
                        if (d = a.groupId) {
3866
                            var d = this.getGroupById(d),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 3861. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3867
                                f;
3868
                            for (f = 0; f < d.length; f++) d[f] != a && this.showAsRolledOver(d[f])
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3869
                        }
3870
                        this.showAsRolledOver(a)
3871
                    } else(d = a.displayObject) && (this.allowClickOnSelectedObject ? d.setAttr("cursor", "pointer") : d.setAttr("cursor", "default"));
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3872
                    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));
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3873
                    this.fire({
3874
                        type: "rollOverMapObject",
3875
                        mapObject: a,
3876
                        chart: this,
3877
                        event: c
3878
                    });
3879
                    this.previouslyHovered = a
3880
                }
3881
            }
3882
        },
3883
        longitudeToX: function(a) {
3884
            return (this.longitudeToCoordinate(a) + this.diffX * this.mapScale) * this.zoomLevel() + this.mapContainer.x
3885
        },
3886
        latitudeToY: function(a) {
3887
            return (this.latitudeToCoordinate(a) + this.diffY * this.mapScale) * this.zoomLevel() + this.mapContainer.y
3888
        },
3889
        latitudeToStageY: function(a) {
3890
            return this.latitudeToCoordinate(a) * this.zoomLevel() +
3891
                this.mapContainer.y + this.diffY * this.mapScale
3892
        },
3893
        longitudeToStageX: function(a) {
3894
            return this.longitudeToCoordinate(a) * this.zoomLevel() + this.mapContainer.x + this.diffX * this.mapScale
3895
        },
3896
        stageXToLongitude: function(a) {
3897
            a = (a - this.mapContainer.x) / this.zoomLevel();
3898
            return this.coordinateToLongitude(a)
3899
        },
3900
        stageYToLatitude: function(a) {
3901
            a = (a - this.mapContainer.y) / this.zoomLevel();
3902
            return this.coordinateToLatitude(a)
3903
        },
3904
        rollOutMapObject: function(a, b) {
3905
            this.hideBalloon();
3906
            a && this.chartCreated && a.isOver && (this.checkIfSelected(a) ||
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3907
                this.returnInitialColor(a), this.fire({
3908
                    type: "rollOutMapObject",
3909
                    mapObject: a,
3910
                    chart: this,
3911
                    event: b
3912
                }))
3913
        },
3914
        formatString: function(a, b) {
3915
            var c = this.nf,
3916
                e = this.pf,
3917
                f = b.title;
3918
            b.titleTr && (f = b.titleTr);
3919
            void 0 == f && (f = "");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3920
            var g = b.value,
3921
                g = isNaN(g) ? "" : d.formatNumber(g, c),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable g already seems to be declared on line 3920. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3922
                c = b.percents,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3915. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3923
                c = isNaN(c) ? "" : d.formatNumber(c, e),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3915. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3924
                e = b.description;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 3916. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3925
            void 0 == e && (e = "");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3926
            var h = b.customData;
3927
            void 0 == h && (h = "");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
3928
            return a = d.massReplace(a, {
0 ignored issues
show
Unused Code introduced by
The assignment to variable a seems to be never used. Consider removing it.
Loading history...
Comprehensibility introduced by
Are you sure you want to assign to a here, or did you intend to make a comparison like a === d.massReplace(a, {...entifierNode(h,false)})?
Loading history...
3929
                "[[title]]": f,
3930
                "[[value]]": g,
3931
                "[[percent]]": c,
3932
                "[[description]]": e,
3933
                "[[customData]]": h
3934
            })
3935
        },
3936
        mouseDownMapObject: function(a, b) {
3937
            this.fire({
3938
                type: "mouseDownMapObject",
3939
                mapObject: a,
3940
                chart: this,
3941
                event: b
3942
            })
3943
        },
3944
        clickMapObject: function(a, b) {
3945
            var c = this;
3946
            b && (b.touches || isNaN(a.zoomLevel) && isNaN(a.zoomX) && isNaN(a.zoomY) || c.hideBalloon());
3947
            if (c.chartCreated && !c.preventHover && c.checkTouchDuration(b) && !c.mapWasDragged && c.checkIfClickable(a) && !c.mapWasPinched) {
3948
                c.selectObject(a);
3949
                var d = c.zoomLevel(),
3950
                    f = c.mapSet.getBBox(),
3951
                    d = c.xyToCoordinates((c.mouseX - c.mapContainer.x) / d - f.x * c.mapScale, (c.mouseY - c.mapContainer.y) / d - f.y * c.mapScale);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 3949. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3952
                c.clickLatitude =
3953
                    d.latitude;
3954
                c.clickLongitude = d.longitude;
3955
                b && b.touches && setTimeout(function() {
3956
                    c.showBalloonAfterZoom.call(c)
3957
                }, 1E3 * c.zoomDuration);
3958
                c.fire({
3959
                    type: "clickMapObject",
3960
                    mapObject: a,
3961
                    chart: c,
3962
                    event: b
3963
                });
3964
                c.objectWasClicked = !0
3965
            }
3966
        },
3967
        showBalloonAfterZoom: function() {
3968
            var a = this.clickLongitude,
3969
                b = this.clickLatitude,
3970
                c = this.selectedObject;
3971
            "MapImage" != c.objectType || isNaN(c.longitude) || (a = c.longitude, b = c.latitude);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3972
            a = this.coordinatesToStageXY(a, b);
3973
            this.balloonX = a.x;
3974
            this.balloonY = a.y;
3975
            this.rollOverMapObject(this.selectedObject, !0)
3976
        },
3977
        checkIfClickable: function(a) {
3978
            var b = this.allowClickOnSelectedObject;
3979
            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
3980
        },
3981
        resizeMap: function() {
3982
            var a = this.mapSet;
3983
            if (a) {
3984
                var b = 1,
3985
                    c = a.getBBox(),
3986
                    d = this.realWidth,
3987
                    f = this.realHeight,
3988
                    g = c.width,
3989
                    c = c.height;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3985. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3990
                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)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3991
            }
3992
        },
3993
        zoomIn: function() {
3994
            var a = this.zoomLevel() * this.zoomControl.zoomFactor;
3995
            this.zoomTo(a)
3996
        },
3997
        zoomOut: function() {
3998
            var a = this.zoomLevel() / this.zoomControl.zoomFactor;
3999
            this.zoomTo(a)
4000
        },
4001
        moveLeft: function() {
4002
            var a = this.zoomX() + this.zoomControl.panStepSize;
4003
            this.zoomTo(this.zoomLevel(), a, this.zoomY())
4004
        },
4005
        moveRight: function() {
4006
            var a = this.zoomX() - this.zoomControl.panStepSize;
4007
            this.zoomTo(this.zoomLevel(), a, this.zoomY())
4008
        },
4009
        moveUp: function() {
4010
            var a =
4011
                this.zoomY() + this.zoomControl.panStepSize;
4012
            this.zoomTo(this.zoomLevel(), this.zoomX(), a)
4013
        },
4014
        moveDown: function() {
4015
            var a = this.zoomY() - this.zoomControl.panStepSize;
4016
            this.zoomTo(this.zoomLevel(), this.zoomX(), a)
4017
        },
4018
        zoomX: function() {
4019
            return this.mapSet ? Math.round(1E4 * this.mapContainer.x / this.mapWidth) / 1E4 : NaN
4020
        },
4021
        zoomY: function() {
4022
            return this.mapSet ? Math.round(1E4 * this.mapContainer.y / this.mapHeight) / 1E4 : NaN
4023
        },
4024
        goHome: function() {
4025
            this.selectObject(this.dataProvider);
4026
            this.fire({
4027
                type: "homeButtonClicked",
4028
                chart: this
4029
            })
4030
        },
4031
        zoomLevel: function() {
4032
            return Math.round(1E5 *
4033
                this.mapContainer.scale) / 1E5
4034
        },
4035
        showDescriptionAndGetUrl: function() {
4036
            var a = this.selectedObject;
4037
            if (a) {
4038
                this.showDescription();
4039
                var b = a.url;
4040
                if (b) d.getURL(b, a.urlTarget);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4041
                else if (b = a.linkToObject) {
4042
                    if (d.isString(b)) {
4043
                        var c = this.getObjectById(b);
4044
                        if (c) {
4045
                            this.selectObject(c);
4046
                            return
4047
                        }
4048
                    }
4049
                    b && a.passZoomValuesToTarget && (b.zoomLatitude = this.zoomLatitude(), b.zoomLongitude = this.zoomLongitude(), b.zoomLevel = this.zoomLevel());
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4050
                    this.extendMapData(b) || this.selectObject(b)
4051
                }
4052
            }
4053
        },
4054
        extendMapData: function(a) {
4055
            var b = a.objectType;
4056
            if ("MapImage" !=
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if "MapImage" != b && "MapA... != b && "MapLine" != b is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
4057
                b && "MapArea" != b && "MapLine" != b) return d.extend(a, new d.MapData, !0), this.dataProvider = a, this.zoomInstantly = !0, this.validateData(), !0
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4058
        },
4059
        showDescription: function(a) {
4060
            a || (a = this.selectedObject);
4061
            this.allowMultipleDescriptionWindows || this.closeAllDescriptions();
4062
            if (a.description) {
4063
                var b = a.descriptionWindow;
4064
                b && b.close();
4065
                b = new d.DescriptionWindow;
4066
                a.descriptionWindow = b;
4067
                var c = a.descriptionWindowWidth,
4068
                    e = a.descriptionWindowHeight,
4069
                    f = a.descriptionWindowLeft,
4070
                    g = a.descriptionWindowTop,
4071
                    h = a.descriptionWindowRight,
4072
                    k = a.descriptionWindowBottom;
4073
                isNaN(h) || (f = this.realWidth - h);
4074
                isNaN(k) || (g = this.realHeight - k);
4075
                var l = a.descriptionWindowX;
4076
                isNaN(l) || (f = l);
4077
                l = a.descriptionWindowY;
4078
                isNaN(l) || (g = l);
4079
                isNaN(f) && (f = this.mouseX, f = f > this.realWidth / 2 ? f - c - 20 : f + 20);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4080
                isNaN(g) && (g = this.mouseY);
4081
                b.maxHeight = e;
4082
                l = a.title;
4083
                a.titleTr && (l = a.titleTr);
4084
                b.show(this, this.descriptionsDiv, a.description, l);
4085
                a = b.div.style;
4086
                a.position = "absolute";
4087
                a.width = c + "px";
4088
                a.maxHeight = e + "px";
4089
                isNaN(k) || (g -= b.div.offsetHeight);
4090
                isNaN(h) || (f -= b.div.offsetWidth);
4091
                a.left = f + "px";
4092
                a.top = g + "px"
4093
            }
4094
        },
4095
        parseXMLObject: function(a) {
4096
            var b = {
4097
                root: {}
4098
            };
4099
            this.parseXMLNode(b, "root", a);
4100
            this.svgData = b.root.svg;
4101
            this.getBounds()
4102
        },
4103
        getBounds: function() {
4104
            var a = this.dataProvider;
4105
            try {
4106
                var b = this.svgData.defs["amcharts:ammap"];
4107
                a.leftLongitude = Number(b.leftLongitude);
4108
                a.rightLongitude = Number(b.rightLongitude);
4109
                a.topLatitude = Number(b.topLatitude);
4110
                a.bottomLatitude = Number(b.bottomLatitude);
4111
                a.projection = b.projection;
4112
                var c = b.wrappedLongitudes;
4113
                c && (a.rightLongitude += 360);
4114
                a.wrappedLongitudes = c
4115
            } catch (d) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
4116
        },
4117
        recalcLongitude: function(a) {
4118
            return this.dataProvider.wrappedLongitudes ? a < this.dataProvider.leftLongitude ? Number(a) + 360 : a : a
4119
        },
4120
        latitudeToCoordinate: function(a) {
4121
            var b, c = this.dataProvider;
4122
            if (this.mapSet) {
4123
                b = c.topLatitude;
4124
                var d = c.bottomLatitude;
4125
                "mercator" == c.projection && (a = this.mercatorLatitudeToCoordinate(a), b = this.mercatorLatitudeToCoordinate(b), d = this.mercatorLatitudeToCoordinate(d));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4126
                b = (a - b) / (d - b) * this.mapHeight
4127
            }
4128
            return b
0 ignored issues
show
Bug introduced by
The variable b does not seem to be initialized in case this.mapSet on line 4122 is false. Are you sure this can never be the case?
Loading history...
4129
        },
4130
        longitudeToCoordinate: function(a) {
4131
            a = this.recalcLongitude(a);
4132
            var b, c = this.dataProvider;
4133
            this.mapSet && (b = c.leftLongitude, b = (a - b) / (c.rightLongitude - b) * this.mapWidth);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4134
            return b
0 ignored issues
show
Bug introduced by
The variable b seems to not be initialized for all possible execution paths.
Loading history...
4135
        },
4136
        mercatorLatitudeToCoordinate: function(a) {
4137
            89.5 < a && (a = 89.5); - 89.5 > a && (a = -89.5);
4138
            a = d.degreesToRadians(a);
4139
            return d.radiansToDegrees(.5 * Math.log((1 + Math.sin(a)) / (1 - Math.sin(a))) / 2)
4140
        },
4141
        zoomLatitude: function() {
4142
            if (this.mapContainer) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if this.mapContainer is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
4143
                var a = this.mapSet.getBBox(),
4144
                    b = (-this.mapContainer.x + this.previousWidth / 2) / this.zoomLevel() - a.x * this.mapScale,
4145
                    a = (-this.mapContainer.y + this.previousHeight / 2) / this.zoomLevel() - a.y * this.mapScale;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 4143. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4146
                return this.xyToCoordinates(b, a).latitude
4147
            }
4148
        },
4149
        zoomLongitude: function() {
4150
            if (this.mapContainer) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if this.mapContainer is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
4151
                var a =
4152
                    this.mapSet.getBBox(),
4153
                    b = (-this.mapContainer.x + this.previousWidth / 2) / this.zoomLevel() - a.x * this.mapScale,
4154
                    a = (-this.mapContainer.y + this.previousHeight / 2) / this.zoomLevel() - a.y * this.mapScale;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 4151. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4155
                return this.xyToCoordinates(b, a).longitude
4156
            }
4157
        },
4158
        getAreaCenterLatitude: function(a) {
4159
            a = a.displayObject.getBBox();
4160
            var b = this.mapScale,
4161
                c = this.mapSet.getBBox();
4162
            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
4163
        },
4164
        getAreaCenterLongitude: function(a) {
4165
            a = a.displayObject.getBBox();
4166
            var b = this.mapScale,
4167
                c = this.mapSet.getBBox();
4168
            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
4169
        },
4170
        milesToPixels: function(a) {
4171
            var b = this.dataProvider;
4172
            return this.mapWidth / (b.rightLongitude - b.leftLongitude) * a / 69.172
4173
        },
4174
        kilometersToPixels: function(a) {
4175
            var b = this.dataProvider;
4176
            return this.mapWidth / (b.rightLongitude - b.leftLongitude) * a / 111.325
4177
        },
4178
        handleBackgroundClick: function() {
4179
            if (this.backgroundZoomsToTop && !this.mapWasDragged) {
4180
                var a = this.dataProvider;
4181
                if (this.checkIfClickable(a)) this.clickMapObject(a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4182
                else {
4183
                    var b = a.zoomX,
4184
                        c = a.zoomY,
4185
                        d = a.zoomLongitude,
4186
                        f = a.zoomLatitude,
4187
                        a = a.zoomLevel;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 4180. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4188
                    isNaN(b) || isNaN(c) || this.zoomTo(a, b, c);
4189
                    isNaN(d) || isNaN(f) || this.zoomToLongLat(a, d, f, !0)
4190
                }
4191
            }
4192
        },
4193
        parseXMLNode: function(a, b, c, d) {
4194
            void 0 === d && (d = "");
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
4195
            var f, g, h;
4196
            if (c) {
4197
                var k = c.childNodes.length;
4198
                for (f = 0; f < k; f++) {
4199
                    g = c.childNodes[f];
4200
                    var l = g.nodeName,
4201
                        m = g.nodeValue ? this.trim(g.nodeValue) : "",
4202
                        n = !1;
4203
                    g.attributes && 0 < g.attributes.length && (n = !0);
4204
                    if (0 !== g.childNodes.length || "" !== m || !1 !== n)
4205
                        if (3 == g.nodeType || 4 == g.nodeType) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4206
                            if ("" !== m) {
4207
                                g = 0;
4208
                                for (h in a[b]) a[b].hasOwnProperty(h) && g++;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4209
                                g ? a[b]["#text"] = m : a[b] = m
4210
                            }
4211
                        } else if (1 == g.nodeType) {
4212
                        var p;
4213
                        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]);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
4214
                        if (g.attributes && g.attributes.length)
4215
                            for (m = 0; m < g.attributes.length; m++) p[g.attributes[m].name] = g.attributes[m].value;
0 ignored issues
show
Bug introduced by
The variable p seems to not be initialized for all possible execution paths.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4216
                        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 + "  ")
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
4217
                    }
4218
                }
4219
                g = 0;
4220
                c = "";
4221
                for (h in a[b]) "#text" == h ? c = a[b][h] : g++;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4222
                0 === g && void 0 === a[b].length && (a[b] = c)
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
4223
            }
4224
        },
4225
        doDoubleClickZoom: function() {
4226
          /*  if (!this.mapWasDragged) {
4227
                var a = this.zoomLevel() * this.zoomControl.zoomFactor;
4228
                this.zoomToStageXY(a, this.mouseX, this.mouseY)
4229
           }*/
4230
        },
4231
        getDevInfo: function() {
4232
            var a = this.zoomLevel(),
4233
                b = this.mapSet.getBBox(),
4234
                b = this.xyToCoordinates((this.mouseX - this.mapContainer.x) / a - b.x * this.mapScale, (this.mouseY - this.mapContainer.y) / a - b.y * this.mapScale),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4233. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4235
                a = {
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 4232. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4236
                    chart: this,
4237
                    type: "writeDevInfo",
4238
                    zoomLevel: a,
4239
                    zoomX: this.zoomX(),
4240
                    zoomY: this.zoomY(),
4241
                    zoomLatitude: this.zoomLatitude(),
4242
                    zoomLongitude: this.zoomLongitude(),
4243
                    latitude: b.latitude,
4244
                    longitude: b.longitude,
4245
                    left: this.mouseX,
4246
                    top: this.mouseY,
4247
                    right: this.realWidth - this.mouseX,
4248
                    bottom: this.realHeight - this.mouseY,
4249
                    percentLeft: Math.round(this.mouseX / this.realWidth * 100) + "%",
4250
                    percentTop: Math.round(this.mouseY / this.realHeight * 100) + "%",
4251
                    percentRight: Math.round((this.realWidth - this.mouseX) / this.realWidth * 100) + "%",
4252
                    percentBottom: Math.round((this.realHeight -
4253
                        this.mouseY) / this.realHeight * 100) + "%"
4254
                },
4255
                b = "zoomLevel:" + a.zoomLevel + ", zoomLongitude:" + a.zoomLongitude + ", zoomLatitude:" + a.zoomLatitude + "\n",
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4233. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4256
                b = b + ("zoomX:" + a.zoomX + ", zoomY:" + a.zoomY + "\n"),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4233. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4257
                b = b + ("latitude:" + a.latitude + ", longitude:" + a.longitude + "\n"),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4233. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4258
                b = b + ("left:" + a.left + ", top:" + a.top + "\n"),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4233. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4259
                b = b + ("right:" + a.right + ", bottom:" + a.bottom + "\n"),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4233. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4260
                b = b + ("left:" + a.percentLeft + ", top:" + a.percentTop + "\n"),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4233. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4261
                b = b + ("right:" + a.percentRight + ", bottom:" + a.percentBottom + "\n");
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4233. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4262
            a.str = b;
4263
            this.fire(a);
4264
            return a
4265
        },
4266
        getXY: function(a,
4267
            b, c) {
4268
            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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
4269
            return a
4270
        },
4271
        getObjectById: function(a) {
4272
            var b = this.dataProvider;
4273
            if (b.areas) {
4274
                var c = this.getObject(a, b.areas);
4275
                if (c) return c
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4276
            }
4277
            if (c = this.getObject(a, b.images)) return c;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4278
            if (a = this.getObject(a, b.lines)) return a
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity Best Practice introduced by
There is no return statement if a = this.getObject(a, b.lines) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
4279
        },
4280
        getObject: function(a, b) {
4281
            if (b) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if b is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
4282
                var c;
4283
                for (c = 0; c < b.length; c++) {
4284
                    var d = b[c];
4285
                    if (d.id == a) return d;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4286
                    if (d.areas) {
4287
                        var f = this.getObject(a, d.areas);
4288
                        if (f) return f
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4289
                    }
4290
                    if (f = this.getObject(a, d.images)) return f;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4291
                    if (d = this.getObject(a, d.lines)) return d
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4292
                }
0 ignored issues
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
4293
            }
4294
        },
4295
        parseData: function() {
4296
            var a = this.dataProvider;
4297
            this.processObject(a.areas, a, "area");
4298
            this.processObject(a.images, a, "image");
4299
            this.processObject(a.lines, a, "line")
4300
        },
4301
        processObject: function(a, b, c) {
4302
            if (a) {
4303
                var e;
4304
                for (e = 0; e < a.length; e++) {
4305
                    var f = a[e];
4306
                    f.parentObject = b;
4307
                    "area" == c && d.extend(f, new d.MapArea(this.theme), !0);
4308
                    "image" == c && (f = d.extend(f, new d.MapImage(this.theme), !0));
4309
                    "line" == c && (f = d.extend(f, new d.MapLine(this.theme), !0));
4310
                    a[e] = f;
4311
                    f.areas && this.processObject(f.areas, f, "area");
4312
                    f.images && this.processObject(f.images, f, "image");
4313
                    f.lines && this.processObject(f.lines, f, "line")
4314
                }
4315
            }
4316
        },
4317
        positionChanged: function() {
4318
            var a = {
4319
                type: "positionChanged",
4320
                zoomX: this.zoomX(),
4321
                zoomY: this.zoomY(),
4322
                zoomLevel: this.zoomLevel(),
4323
                chart: this
4324
            };
4325
            this.fire(a)
4326
        },
4327
        getX: function(a, b) {
4328
            return this.getXY(a, this.realWidth, b)
4329
        },
4330
        getY: function(a, b) {
4331
            return this.getXY(a, this.realHeight, b)
4332
        },
4333
        trim: function(a) {
4334
            if (a) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if a is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
4335
                var b;
4336
                for (b = 0; b < a.length; b++)
4337
                    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))) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4338
                        a = a.substring(b);
4339
                        break
4340
                    }
4341
                for (b = a.length - 1; 0 <= b; b--)
4342
                    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))) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4343
                        a = a.substring(0, b + 1);
4344
                        break
4345
                    }
4346
                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 : ""
4347
            }
4348
        },
4349
        destroy: function() {
4350
            d.AmMap.base.destroy.call(this)
4351
        },
4352
        x2c: function(a) {
4353
            var b = this.dataProvider.leftLongitude;
4354
            return Math.round(this.unscaledMapWidth * (a - b) / (this.dataProvider.rightLongitude - b) * 100) / 100
4355
        },
4356
        y2c: function(a) {
4357
            var b = this.dataProvider.topLatitude;
4358
            return Math.round(this.unscaledMapHeight * (a - b) / (this.dataProvider.bottomLatitude - b) * 100) / 100
4359
        },
4360
        normalize: function(a) {
4361
            if (!a.pathsArray) {
4362
                var b;
4363
                if (a.normalized) b = a.normalized;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4364
                else {
4365
                    var c = d.normalizePath(a.node);
4366
                    b = a.node.getAttribute("d");
4367
                    a.normalized = b;
4368
                    c.maxX > this.maxMapX && (this.maxMapX = c.maxX);
4369
                    c.minX < this.minMapX && (this.minMapX = c.minX);
4370
                    c.maxY > this.maxMapY && (this.maxMapY = c.maxY);
4371
                    c.minY < this.minMapY &&
4372
                        (this.minMapY = c.minY)
4373
                }
4374
                a.node.setAttribute("d", b)
4375
            }
4376
        },
4377
        redraw: function(a) {
4378
            var b = a.normalized,
4379
                b = b.split(" Z").join(""),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4378. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4380
                b = b.split("M");
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4378. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4381
            a.pathsArray = [];
4382
            for (var c = 0; c < b.length; c++) {
4383
                var d = b[c];
4384
                if (d) {
4385
                    for (var d = d.split("L"), f = [], g = 0; g < d.length; g++)
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 4383. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4386
                        if (d[g]) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4387
                            var h = d[g].split(" "),
4388
                                h = this.xyToCoordinates(Number(h[1]) - this.minMapX, Number(h[2]) - this.minMapY, this.dpProjectionFunction, this.sourceMapWidth, this.sourceMapHeight);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 4387. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4389
                            f.push([h.longitude, h.latitude])
4390
                        }
4391
                    a.pathsArray.push(f)
4392
                }
4393
            }
4394
            b = "";
4395
            for (c = 0; c < a.pathsArray.length; c++) b += this.redrawArea(a.pathsArray[c]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4396
            a.node.setAttribute("d", b);
4397
            a.path = b
4398
        },
4399
        redrawArea: function(a) {
4400
            for (var b = !1, c = "", e = 0; e < a.length; e++) {
4401
                var f = a[e][0],
4402
                    g = a[e][1],
4403
                    h = d.degreesToRadians(a[e][0]),
4404
                    k = d.degreesToRadians(a[e][1]),
4405
                    k = this.projectionFunction(h, k),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 4404. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4406
                    h = d.roundTo(this.x2c(d.radiansToDegrees(k[0])), 3),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 4403. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4407
                    k = d.roundTo(this.y2c(d.radiansToDegrees(k[1])), 3);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 4404. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4408
                h < this.minMapXX && (this.minMapXX = h, this.leftLongLat = {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4409
                    longitude: f,
4410
                    latitude: g
4411
                });
4412
                h > this.maxMapXX && (this.maxMapXX = h, this.rightLongLat = {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4413
                    longitude: f,
4414
                    latitude: g
4415
                });
4416
                k < this.minMapYY && (this.minMapYY = k, this.topLongLat = {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4417
                    longitude: f,
4418
                    latitude: g
4419
                });
4420
                k > this.maxMapYY && (this.maxMapYY = k, this.bottomLongLat = {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4421
                    longitude: f,
4422
                    latitude: g
4423
                });
4424
                b ? c += " L " : (c += " M ", b = !0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4425
                c += h + " " + k
4426
            }
4427
            return c + " Z "
4428
        },
4429
        normalizeMap: function() {
4430
            var a = d.degreesToRadians(this.dataProvider.leftLongitude),
4431
                b = d.degreesToRadians(this.dataProvider.rightLongitude),
4432
                c = d.degreesToRadians(this.dataProvider.topLatitude),
4433
                e = d.degreesToRadians(this.dataProvider.bottomLatitude),
4434
                f = a + (b - a) / 2,
4435
                g = c + (e - c) / 2,
4436
                h = this.dpProjectionFunction(f,
4437
                    c)[1],
4438
                k = this.dpProjectionFunction(f, e)[1],
4439
                l = this.dpProjectionFunction(a, g)[0],
4440
                m = this.dpProjectionFunction(b, g)[0],
4441
                c = d.equirectangular(f, c),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 4432. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4442
                e = d.equirectangular(f, e),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 4433. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4443
                h = (c[1] - e[1]) / (h - k),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 4436. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4444
                a = d.equirectangular(a, g),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 4430. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4445
                b = d.equirectangular(b, g),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 4431. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4446
                l = (a[0] - b[0]) / (l - m);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable l already seems to be declared on line 4439. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4447
            this.minMapX = Infinity;
4448
            this.maxMapX = -Infinity;
4449
            this.minMapY = Infinity;
4450
            this.maxMapY = -Infinity;
4451
            for (m = 0; m < this.svgAreas.length; m++) this.normalize(this.svgAreas[m]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4452
            this.sourceMapHeight = Math.abs(this.maxMapY - this.minMapY);
4453
            this.sourceMapWidth = Math.abs(this.maxMapX -
4454
                this.minMapX);
4455
            this.unscaledMapWidth = this.sourceMapWidth * l;
4456
            this.unscaledMapHeight = this.sourceMapHeight * h;
4457
            this.diffY = this.diffX = 0
4458
        },
4459
        fixMapPosition: function() {
4460
            var a = d.degreesToRadians(this.dataProvider.leftLongitude),
4461
                b = d.degreesToRadians(this.dataProvider.rightLongitude),
4462
                c = d.degreesToRadians(this.dataProvider.topLatitude),
4463
                e = d.degreesToRadians(this.dataProvider.bottomLatitude),
4464
                f = a + (b - a) / 2,
4465
                g = c + (e - c) / 2,
4466
                h = this.dpProjectionFunction(f, c)[1],
4467
                k = this.dpProjectionFunction(f, e)[1],
4468
                l = this.dpProjectionFunction(a,
4469
                    g)[0],
4470
                m = this.dpProjectionFunction(b, g)[0];
4471
            this.sourceMapHeight = this.mapHeight / this.mapScale;
4472
            this.sourceMapWidth = this.mapWidth / this.mapScale;
4473
            this.unscaledMapWidth = (a - b) / (l - m) * this.sourceMapWidth;
4474
            this.unscaledMapHeight = (c - e) / (h - k) * this.sourceMapHeight;
4475
            b = this.coordinatesToXY(d.radiansToDegrees(f), d.radiansToDegrees(c));
4476
            a = this.coordinatesToXY(d.radiansToDegrees(a), d.radiansToDegrees(g));
4477
            c = g = Infinity;
0 ignored issues
show
Comprehensibility Best Practice introduced by
You seem to be aliasing the built-in name Infinity as g. This makes your code very difficult to follow, consider using the built-in name directly.
Loading history...
4478
            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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4479
            this.diffY =
4480
                b.y / this.mapScale - g;
4481
            this.diffX = a.x / this.mapScale - c;
4482
            for (e = 0; e < this.svgAreas.length; e++) this.svgAreas[e].translate(this.diffX, this.diffY)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4483
        },
4484
        changeProjection: function() {
4485
            this.minMapXX = Infinity;
4486
            this.maxMapXX = -Infinity;
4487
            this.minMapYY = Infinity;
4488
            this.maxMapYY = -Infinity;
4489
            this.projectionChanged = !1;
4490
            for (var a = 0; a < this.svgAreas.length; a++) this.redraw(this.svgAreas[a]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4491
            this.projectionChanged = !0;
4492
            this.resizeMap()
4493
        },
4494
        coordinatesToXY: function(a, b) {
4495
            var c, e;
4496
            c = !1;
0 ignored issues
show
Unused Code introduced by
The assignment to variable c seems to be never used. Consider removing it.
Loading history...
4497
            this.dataProvider && (c = this.dataProvider.wrappedLongitudes) && (a = this.recalcLongitude(a));
4498
            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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4499
            return {
4500
                x: c,
4501
                y: e
4502
            }
4503
        },
4504
        coordinatesToStageXY: function(a, b) {
4505
            var c = this.coordinatesToXY(a, b),
4506
                d = c.x * this.zoomLevel() + this.mapContainer.x,
4507
                c = c.y * this.zoomLevel() + this.mapContainer.y;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 4505. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4508
            return {
4509
                x: d,
4510
                y: c
4511
            }
4512
        },
4513
        stageXYToCoordinates: function(a, b) {
4514
            var c = this.mapSet.getBBox(),
4515
                d = (a - this.mapContainer.x) / this.zoomLevel() - c.x * this.mapScale,
4516
                c = (b - this.mapContainer.y) / this.zoomLevel() - c.y * this.mapScale;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 4514. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4517
            return this.xyToCoordinates(d, c)
4518
        },
4519
        xyToCoordinates: function(a, b, c, e, f) {
4520
            var g;
4521
            isNaN(e) && (e = this.mapWidth);
4522
            isNaN(f) && (f = this.mapHeight);
4523
            c || (c = this.projectionFunction);
4524
            if (g = c.invert) {
4525
                var h = this.dataProvider.leftLongitude,
4526
                    k = this.dataProvider.rightLongitude,
4527
                    l = this.dataProvider.topLatitude,
4528
                    m = this.dataProvider.bottomLatitude,
4529
                    n = h + (k - h) / 2,
4530
                    p = l + (m - l) / 2,
4531
                    l = d.radiansToDegrees(c(d.degreesToRadians(n), d.degreesToRadians(l))[1]),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable l already seems to be declared on line 4527. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4532
                    m = d.radiansToDegrees(c(d.degreesToRadians(n), d.degreesToRadians(m))[1]),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable m already seems to be declared on line 4528. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4533
                    h = d.radiansToDegrees(c(d.degreesToRadians(h), d.degreesToRadians(p))[0]),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 4525. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4534
                    k = d.radiansToDegrees(c(d.degreesToRadians(k), d.degreesToRadians(p))[0]);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 4526. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4535
                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),
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4536
                    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]));
4537
                a = d.degreesToRadians(a / e * (k - h) + h);
4538
                b = d.degreesToRadians(b / f * (m - l) + l);
4539
                b = g(a, b);
4540
                g = d.radiansToDegrees(b[0]);
4541
                b = d.radiansToDegrees(b[1])
4542
            } else g = this.coordinateToLongitude(a), b = this.coordinateToLatitude(b);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4543
            return {
4544
                longitude: d.roundTo(g, 4),
4545
                latitude: d.roundTo(b, 4)
4546
            }
4547
        },
4548
        coordinateToLatitude: function(a, b) {
4549
            var c;
4550
            void 0 === b && (b = this.mapHeight);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
4551
            if (this.mapSet) {
4552
                var e = this.dataProvider,
4553
                    f = e.bottomLatitude;
4554
                c = e.topLatitude;
4555
                "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
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4556
            }
4557
            return Math.round(1E6 * c) / 1E6
0 ignored issues
show
Bug introduced by
The variable c does not seem to be initialized in case this.mapSet on line 4551 is false. Are you sure this can never be the case?
Loading history...
4558
        },
4559
        coordinateToLongitude: function(a, b) {
4560
            var c, d = this.dataProvider;
4561
            void 0 === b && (b = this.mapWidth);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
4562
            this.mapSet && (c = a / b * (d.rightLongitude - d.leftLongitude) + d.leftLongitude);
4563
            return Math.round(1E6 * c) / 1E6
0 ignored issues
show
Bug introduced by
The variable c seems to not be initialized for all possible execution paths.
Loading history...
4564
        }
4565
    })
4566
})();
4567
(function() {
4568
    var d = window.AmCharts;
4569
    d.ZoomControl = d.Class({
4570
        construct: function(a) {
4571
            this.cname = "ZoomControl";
4572
            this.panStepSize = .1;
4573
            this.zoomFactor = 2;
4574
            this.maxZoomLevel = 64;
4575
            this.minZoomLevel = 1;
4576
            this.panControlEnabled = !1;
4577
            this.zoomControlEnabled = !0;
4578
            this.buttonRollOverColor = "#DADADA";
4579
            this.buttonFillColor = "#FFFFFF";
4580
            this.buttonFillAlpha = 1;
4581
            this.buttonBorderColor = "#000000";
4582
            this.buttonBorderAlpha = .1;
4583
            this.buttonIconAlpha = this.buttonBorderThickness = 1;
4584
            this.gridColor = this.buttonIconColor = "#000000";
4585
            this.homeIconFile = "homeIcon.gif";
4586
            this.gridBackgroundColor = "#000000";
4587
            this.draggerAlpha = this.gridAlpha = this.gridBackgroundAlpha = 0;
4588
            this.draggerSize = this.buttonSize = 31;
4589
            this.iconSize = 11;
4590
            this.homeButtonEnabled = !0;
4591
            this.buttonCornerRadius = 2;
4592
            this.gridHeight = 5;
4593
            this.roundButtons = !0;
4594
            this.top = this.left = 10;
4595
            d.applyTheme(this, a, this.cname)
4596
        },
4597
        init: function(a, b) {
4598
            var c = this;
4599
            c.chart = a;
4600
            c.zoomControlEnabled = false;
4601
            c.homeButtonEnabled = false;
4602
            c.minZoomLevel = 1;
4603
            c.maxZoomLevel = 1;
4604
            c.zoomFactor = 1;
4605
            d.remove(c.set);
4606
            var e = b.set();
4607
            d.setCN(a, e, "zoom-control");
4608
            c.panControlEnabled = false;
4609
            var f = c.buttonSize,
4610
                g = c.zoomControlEnabled,
4611
                h = c.panControlEnabled,
4612
                k = c.buttonFillColor,
4613
                l = c.buttonFillAlpha,
4614
                m = c.buttonBorderThickness,
4615
                n = c.buttonBorderColor,
4616
                p = c.buttonBorderAlpha,
4617
                r = c.buttonCornerRadius,
4618
                t = c.buttonRollOverColor,
4619
                q = c.gridHeight,
4620
                y = c.zoomFactor,
4621
                B = c.minZoomLevel,
4622
                u = c.maxZoomLevel,
4623
                w = c.buttonIconAlpha,
4624
                v = c.buttonIconColor,
4625
                A = c.roundButtons,
4626
                C = a.svgIcons,
4627
                x = a.getX(c.left),
4628
                z = a.getY(c.top);
4629
            isNaN(c.right) || (x = a.getX(c.right, !0), x = h ? x - 3 * f : x - f);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4630
            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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4631
            e.translate(x, z);
4632
            c.previousDY = NaN;
4633
            var F, x = f / 4 - 1;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable x already seems to be declared on line 4627. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4634
            if (g) {
4635
                F = b.set();
4636
                d.setCN(a, F, "zoom-control-zoom");
4637
                e.push(F);
4638
                c.set = e;
4639
                c.zoomSet = F;
4640
                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() {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4641
                    c.handleBgUp()
4642
                }).touchend(function() {
4643
                    c.handleBgUp()
4644
                }), F.push(g));
4645
                var E = f;
4646
                A && (E = f / 1.5);
4647
                c.draggerSize = E;
4648
                var H = Math.log(u / B) / Math.log(y) + 1;
4649
                1E3 < H && (H = 1E3);
4650
                var g = q / H,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable g already seems to be declared on line 4610. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4651
                    G, D = b.set();
4652
                D.translate((f - E) / 2 + 1, 1, NaN, !0);
4653
                F.push(D);
4654
                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);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4655
                z = new d.SimpleButton;
4656
                z.setDownHandler(c.draggerDown, c);
4657
                z.setClickHandler(c.draggerUp, c);
4658
                z.init(b, E, g, k, l, m, n, p, r, t);
4659
                // d.setCN(a, z.set, "zoom-dragger");
4660
                F.push(z.set);
4661
                z.set.setAttr("opacity", c.draggerAlpha);
4662
                c.dragger = z.set;
4663
                c.previousY = NaN;
4664
                z = new d.SimpleButton;
4665
                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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4666
                z.setClickHandler(a.zoomIn, a);
4667
                z.init(b, f, f, k, l, m, n, p, r, t, w, v, A);
4668
                // d.setCN(a, z.set, "zoom-in");
4669
                F.push(z.set);
4670
                z = new d.SimpleButton;
4671
                C ? z.svgIcon = d.line(b, [-x, x], [0, 0], v, w, 1) : z.setIcon(a.pathToImages + "minus.gif", c.iconSize);
4672
                z.setClickHandler(a.zoomOut, a);
4673
                z.init(b, f, f, k, l, m, n, p, r, t, w, v, A);
4674
                z.set.translate(0, q + f);
4675
                d.setCN(a, z.set, "zoom-out");
4676
                F.push(z.set);
4677
                q -= g;
4678
                u = Math.log(u / 100) / Math.log(y);
4679
                c.realStepSize = q / (u - Math.log(B / 100) / Math.log(y));
4680
                c.realGridHeight = q;
4681
                c.stepMax = u
4682
            }
4683
            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,
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4684
                x / 5
4685
            ], [-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));
4686
            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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4687
            c.update()
4688
        },
4689
        draggerDown: function() {
4690
            this.chart.stopDrag();
4691
            this.isDragging = !0
4692
        },
4693
        draggerUp: function() {
4694
            this.isDragging = !1
4695
        },
4696
        handleBgUp: function() {
4697
            var a = this.chart;
4698
            a.zoomTo(100 * Math.pow(this.zoomFactor, this.stepMax - (a.mouseY - this.zoomSet.y - this.set.y - this.buttonSize - this.realStepSize / 2) / this.realStepSize))
4699
        },
4700
        update: function() {
4701
            var a;
4702
            a = this.zoomFactor;
4703
            var b = this.realStepSize,
4704
                c = this.stepMax,
4705
                e = this.dragger,
4706
                f = this.buttonSize,
4707
                g, h = this.chart;
4708
            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 =
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4709
                h.mouseY, this.previousDY != g && e && (e.translate((this.buttonSize - this.draggerSize) / 2, g), this.previousDY = g))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4710
        }
4711
    })
4712
})();
4713
(function() {
4714
    var d = window.AmCharts;
4715
    d.SimpleButton = d.Class({
4716
        construct: function() {},
4717
        init: function(a, b, c, e, f, g, h, k, l, m, n, p, r) {
4718
            var t = this;
4719
            t.rollOverColor = m;
4720
            t.color = e;
4721
            t.container = a;
4722
            m = a.set();
4723
            t.set = m;
4724
            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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4725
            m.push(e);
4726
            f = t.iconPath;
4727
            var q;
4728
            f && (q = t.iconSize, g = (b - q) / 2, r && (g = (2 * b - q) / 2), q = a.image(f, g, (c - q) / 2, q, q));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4729
            t.svgIcon && (q = t.svgIcon, r ? q.translate(b, b) : q.translate(b / 2, b / 2));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4730
            m.setAttr("cursor", "pointer");
4731
            q && (m.push(q), q.setAttr("opacity",
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4732
                n), q.node.style.pointerEvents = "none");
4733
            e.mousedown(function() {
4734
                t.handleDown()
4735
            }).touchstart(function() {
4736
                t.handleDown()
4737
            }).mouseup(function() {
4738
                t.handleUp()
4739
            }).touchend(function() {
4740
                t.handleUp()
4741
            }).mouseover(function() {
4742
                t.handleOver()
4743
            }).mouseout(function() {
4744
                t.handleOut()
4745
            });
4746
            t.bg = e
4747
        },
4748
        setIcon: function(a, b) {
4749
            this.iconPath = a;
4750
            this.iconSize = b
4751
        },
4752
        setClickHandler: function(a, b) {
4753
            this.clickHandler = a;
4754
            this.scope = b
4755
        },
4756
        setDownHandler: function(a, b) {
4757
            this.downHandler = a;
4758
            this.scope = b
4759
        },
4760
        handleUp: function() {
4761
            var a = this.clickHandler;
4762
            a && a.call(this.scope)
4763
        },
4764
        handleDown: function() {
4765
            var a = this.downHandler;
4766
            a && a.call(this.scope)
4767
        },
4768
        handleOver: function() {
4769
            this.container.chart.skipClick = !0;
4770
            this.bg.setAttr("fill", this.rollOverColor)
4771
        },
4772
        handleOut: function() {
4773
            this.container.chart.skipClick = !1;
4774
            this.bg.setAttr("fill", this.color)
4775
        }
4776
    })
4777
})();
4778
(function() {
4779
    var d = window.AmCharts;
4780
    d.SmallMap = d.Class({
4781
        construct: function(a) {
4782
            this.cname = "SmallMap";
4783
            this.mapColor = "#e6e6e6";
4784
            this.rectangleColor = "#FFFFFF";
4785
            this.top = this.right = 10;
4786
            this.minimizeButtonWidth = 23;
4787
            this.backgroundColor = "#9A9A9A";
4788
            this.backgroundAlpha = 1;
4789
            this.borderColor = "#FFFFFF";
4790
            this.iconColor = "#000000";
4791
            this.borderThickness = 3;
4792
            this.borderAlpha = 1;
4793
            this.size = .2;
4794
            this.enabled = !0;
4795
            d.applyTheme(this, a, this.cname)
4796
        },
4797
        init: function(a, b) {
4798
            var c = this;
4799
            if (c.enabled) {
4800
                c.chart = a;
4801
                c.container = b;
4802
                c.width = a.realWidth * c.size;
4803
                c.height = a.realHeight * c.size;
4804
                d.remove(c.mapSet);
4805
                d.remove(c.allSet);
4806
                d.remove(c.set);
4807
                var e = b.set();
4808
                c.set = e;
4809
                d.setCN(a, e, "small-map");
4810
                var f = b.set();
4811
                c.allSet = f;
4812
                e.push(f);
4813
                c.buildSVGMap();
4814
                var g = c.borderThickness,
4815
                    h = c.borderColor,
4816
                    k = d.rect(b, c.width + g, c.height + g, c.backgroundColor, c.backgroundAlpha, g, h, c.borderAlpha);
4817
                d.setCN(a, k, "small-map-bg");
4818
                k.translate(-g / 2, -g / 2);
4819
                f.push(k);
4820
                k.toBack();
4821
                var l, m, k = c.minimizeButtonWidth,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 4816. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4822
                    n = new d.SimpleButton,
4823
                    p = k / 2;
4824
                a.svgIcons ? n.svgIcon = d.line(b, [-p / 2, 0, p / 2], [-p / 4, p / 4, -p /
4825
                    4
4826
                ], c.iconColor, 1, 1) : n.setIcon(a.pathToImages + "arrowDown.gif", k);
4827
                n.setClickHandler(c.minimize, c);
4828
                n.init(b, k, k, h, 1, 1, h, 1);
4829
                d.setCN(a, n.set, "small-map-down");
4830
                n = n.set;
4831
                c.downButtonSet = n;
4832
                e.push(n);
4833
                var r = new d.SimpleButton;
4834
                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);
4835
                r.setClickHandler(c.maximize, c);
4836
                r.init(b, k, k, h, 1, 1, h, 1);
4837
                d.setCN(a, r.set, "small-map-up");
4838
                h = r.set;
4839
                c.upButtonSet = h;
4840
                h.hide();
4841
                e.push(h);
4842
                var t, q;
4843
                isNaN(c.top) || (l = a.getY(c.top) +
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4844
                    g, q = 0);
4845
                isNaN(c.bottom) || (l = a.getY(c.bottom, !0) - c.height - g, q = c.height - k + g / 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4846
                isNaN(c.left) || (m = a.getX(c.left) + g, t = -g / 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4847
                isNaN(c.right) || (m = a.getX(c.right, !0) - c.width - g, t = c.width - k + g / 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4848
                g = b.set();
4849
                g.clipRect(1, 1, c.width, c.height);
4850
                f.push(g);
4851
                c.rectangleC = g;
4852
                e.translate(m, l);
0 ignored issues
show
Bug introduced by
The variable l seems to not be initialized for all possible execution paths. Are you sure translate handles undefined variables?
Loading history...
Bug introduced by
The variable m seems to not be initialized for all possible execution paths. Are you sure translate handles undefined variables?
Loading history...
4853
                n.translate(t, q);
0 ignored issues
show
Bug introduced by
The variable t seems to not be initialized for all possible execution paths. Are you sure translate handles undefined variables?
Loading history...
Bug introduced by
The variable q seems to not be initialized for all possible execution paths. Are you sure translate handles undefined variables?
Loading history...
4854
                h.translate(t, q);
4855
                f.mouseup(function() {
4856
                    c.handleMouseUp()
4857
                });
4858
                c.drawRectangle()
4859
            } else d.remove(c.allSet), d.remove(c.downButtonSet), d.remove(c.upButtonSet)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4860
        },
4861
        minimize: function() {
4862
            this.downButtonSet.hide();
4863
            this.upButtonSet.show();
4864
            this.allSet.hide()
4865
        },
4866
        maximize: function() {
4867
            this.downButtonSet.show();
4868
            this.upButtonSet.hide();
4869
            this.allSet.show()
4870
        },
4871
        buildSVGMap: function() {
4872
            var a = this.chart,
4873
                b = {
4874
                    fill: this.mapColor,
4875
                    stroke: this.mapColor,
4876
                    "stroke-opacity": 1
4877
                },
4878
                c = this.container,
4879
                e = c.set();
4880
            d.setCN(a, e, "small-map-image");
4881
            var f;
4882
            for (f = 0; f < a.svgAreas.length; f++) {
4883
                var g = c.path(a.svgAreas[f].path).attr(b);
4884
                e.push(g)
4885
            }
4886
            this.allSet.push(e);
4887
            b = e.getBBox();
4888
            c = this.size * a.mapScale;
4889
            f = -b.x * c;
4890
            var g = -b.y * c,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable g already seems to be declared on line 4883. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4891
                h = 0,
4892
                k = 0;
4893
            a.centerMap && (h = (this.width - b.width * c) / 2, k = (this.height -
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4894
                b.height * c) / 2);
4895
            this.mapWidth = b.width * c;
4896
            this.mapHeight = b.height * c;
4897
            f += h;
4898
            g += k;
4899
            this.dx = h;
4900
            this.dy = k;
4901
            e.translate(f, g, c);
4902
            this.mapSet = e;
4903
            this.mapX = f;
4904
            this.mapY = g
4905
        },
4906
        update: function() {
4907
            var a = this.chart;
4908
            if (a) {
4909
                var b = a.zoomLevel(),
4910
                    c = this.width,
4911
                    d = this.height,
4912
                    f = c / (a.realWidth * b),
4913
                    g = a.mapContainer.getBBox(),
4914
                    c = c / b,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 4910. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4915
                    d = d / b,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 4911. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
4916
                    h = this.rectangle;
4917
                h.translate(-(a.mapContainer.x + g.x * b) * f + this.dx, -(a.mapContainer.y + g.y * b) * f + this.dy);
4918
                0 < c && 0 < d && (h.setAttr("width", Math.ceil(c + 1)), h.setAttr("height", Math.ceil(d + 1)));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4919
                this.rWidth = c;
4920
                this.rHeight =
4921
                    d
4922
            }
4923
        },
4924
        drawRectangle: function() {
4925
            var a = this.rectangle;
4926
            d.remove(a);
4927
            a = d.rect(this.container, 10, 10, "#000", 0, 1, this.rectangleColor, 1);
4928
            d.setCN(this.chart, a, "small-map-rectangle");
4929
            this.rectangleC.push(a);
4930
            this.rectangle = a
4931
        },
4932
        handleMouseUp: function() {
4933
            var a = this.chart,
4934
                b = a.zoomLevel();
4935
            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)
4936
        }
4937
    })
4938
})();
4939
(function() {
4940
    var d = window.AmCharts;
4941
    d.AreasProcessor = d.Class({
4942
        construct: function(a) {
4943
            this.chart = a
4944
        },
4945
        process: function(a) {
4946
            this.updateAllAreas();
4947
            this.allObjects = [];
4948
            a = a.areas;
4949
            var b = this.chart;
4950
            b.outlines = [];
4951
            var c = a.length,
4952
                d, f, g = 0,
4953
                h = !1,
4954
                k = !1,
4955
                l = 0;
4956
            for (d = 0; d < c; d++)
4957
                if (f = a[d], f.value = Number(f.value), f = f.value, !isNaN(f)) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
4958
                    if (!1 === h || h < f) h = f;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4959
                    if (!1 === k || k > f) k = f;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4960
                    g += Math.abs(f);
4961
                    l++
4962
                }
4963
            this.minValue = k;
4964
            this.maxValue = h;
4965
            isNaN(b.minValue) || (this.minValue = b.minValue);
4966
            isNaN(b.maxValue) || (this.maxValue = b.maxValue);
4967
            b.maxValueReal =
4968
                h;
4969
            b.minValueReal = k;
4970
            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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4971
            for (d = 0; d < c; d++) f = a[d], this.createArea(f);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4972
            b.outlinesToFront()
4973
        },
4974
        updateAllAreas: function() {
4975
            var a = this.chart,
4976
                b = a.areasSettings,
4977
                c = b.unlistedAreasColor,
4978
                e = b.unlistedAreasAlpha,
4979
                f = b.unlistedAreasOutlineColor,
4980
                g = b.unlistedAreasOutlineAlpha,
4981
                h = a.svgAreas,
4982
                k = a.dataProvider,
4983
                l = k.areas,
4984
                m = {},
4985
                n;
4986
            for (n = 0; n < l.length; n++) m[l[n].id] = l[n];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
4987
            for (n = 0; n < h.length; n++) {
4988
                l = h[n];
4989
                if (b.preserveOriginalAttributes) {
4990
                    if (l.customAttr)
4991
                        for (var p in l.customAttr) l.setAttr(p,
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
4992
                            l.customAttr[p])
4993
                } else {
4994
                    void 0 != c && l.setAttr("fill", c);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
4995
                    isNaN(e) || l.setAttr("fill-opacity", e);
4996
                    void 0 != f && l.setAttr("stroke", f);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
4997
                    isNaN(g) || l.setAttr("stroke-opacity", g);
4998
                    var r = b.outlineThickness;
4999
                    b.adjustOutlineThickness && (r = r / a.zoomLevel() / a.mapScale);
5000
                    l.setAttr("stroke-width", r)
5001
                }
5002
                d.setCN(a, l, "map-area-unlisted");
5003
                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))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5004
            }
5005
        },
5006
        createArea: function(a) {
5007
            var b = this.chart,
5008
                c = b.svgAreasById[a.id],
5009
                e = b.areasSettings;
5010
            if (c && c.className) {
5011
                var f = b.areasClasses[c.className];
5012
                f && (e = d.processObject(f, d.AreasSettings, b.theme))
5013
            }
5014
            var g = e.color,
5015
                h = e.alpha,
5016
                k = e.outlineThickness,
5017
                l = e.rollOverColor,
5018
                m = e.selectedColor,
5019
                n = e.rollOverAlpha,
5020
                p = e.rollOverBrightness,
5021
                r = e.outlineColor,
5022
                t = e.outlineAlpha,
5023
                q = e.balloonText,
5024
                y = e.selectable,
5025
                B = e.pattern,
5026
                u = e.rollOverOutlineColor,
5027
                w = e.bringForwardOnHover,
5028
                v = e.preserveOriginalAttributes;
5029
            this.allObjects.push(a);
5030
            a.chart = b;
5031
            a.baseSettings = e;
5032
            a.autoZoomReal = void 0 == a.autoZoom ? e.autoZoom : a.autoZoom;
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5033
            f = a.color;
5034
            void 0 == f && (f = g);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5035
            var A = a.alpha;
5036
            isNaN(A) && (A = h);
5037
            h = a.rollOverAlpha;
5038
            isNaN(h) && (h = n);
5039
            isNaN(h) && (h = A);
5040
            n = a.rollOverColor;
5041
            void 0 == n && (n = l);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5042
            l = a.pattern;
5043
            void 0 == l && (l = B);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5044
            B = a.selectedColor;
5045
            void 0 == B && (B = m);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5046
            m = a.balloonText;
5047
            void 0 === m && (m = q);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5048
            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));
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5049
            void 0 != a.color && (a.colorReal = a.color);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5050
            void 0 == a.selectable && (a.selectable = y);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5051
            void 0 == a.colorReal && (a.colorReal = g);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5052
            g = a.outlineColor;
5053
            void 0 == g && (g = r);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5054
            r = a.outlineAlpha;
5055
            isNaN(r) && (r = t);
5056
            t = a.outlineThickness;
5057
            isNaN(t) && (t = k);
5058
            k = a.rollOverOutlineColor;
5059
            void 0 == k && (k = u);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5060
            u = a.rollOverBrightness;
5061
            void 0 == u && (u = p);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5062
            void 0 == a.bringForwardOnHover && (a.bringForwardOnHover = w);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5063
            void 0 == a.preserveOriginalAttributes && (a.preserveOriginalAttributes = v);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5064
            isNaN(e.selectedBrightness) || (B = d.adjustLuminosity(a.colorReal, e.selectedBrightness / 100));
5065
            a.alphaReal = A;
5066
            a.rollOverColorReal = n;
5067
            a.rollOverAlphaReal = h;
5068
            a.balloonTextReal = m;
5069
            a.selectedColorReal = B;
5070
            a.outlineColorReal = g;
5071
            a.outlineAlphaReal = r;
5072
            a.rollOverOutlineColorReal = k;
5073
            a.outlineThicknessReal = t;
5074
            a.patternReal = l;
5075
            a.rollOverBrightnessReal = u;
5076
            a.accessibleLabel || (a.accessibleLabel = e.accessibleLabel);
5077
            d.processDescriptionWindow(e, a);
5078
            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)) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5079
                c = a.tabIndex;
5080
                void 0 === c && (c = e.tabIndex);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5081
                void 0 !== c && p.setAttr("tabindex", c);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5082
                a.displayObject = p;
5083
                a.outline && (A = 0, a.alphaReal = 0, a.rollOverAlphaReal = 0, a.mouseEnabled = !1, b.outlines.push(p), p.node.setAttribute("pointer-events", "none"));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5084
                a.mouseEnabled && b.addObjectEventListeners(p, a);
5085
                var C;
5086
                void 0 != f && (C = f);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5087
                void 0 != a.colorReal && (C = a.showAsSelected || b.selectedObject == a ? a.selectedColorReal : a.colorReal);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5088
                p.node.setAttribute("class", "");
5089
                d.setCN(b, p, "map-area");
5090
                d.setCN(b, p, "map-area-" + p.id);
5091
                e.adjustOutlineThickness && (t = t / b.zoomLevel() / b.mapScale);
5092
                a.preserveOriginalAttributes ||
5093
                    (p.setAttr("fill", C), p.setAttr("stroke", g), p.setAttr("stroke-opacity", r), p.setAttr("stroke-width", t), p.setAttr("fill-opacity", A));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Bug introduced by
The variable C seems to not be initialized for all possible execution paths. Are you sure setAttr handles undefined variables?
Loading history...
5094
                b.makeObjectAccessible(a);
5095
                l && p.pattern(l, b.mapScale, b.path);
5096
                a.hidden && p.hide()
5097
            }
5098
        }
5099
    })
5100
})();
5101
(function() {
5102
    var d = window.AmCharts;
5103
    d.AreasSettings = d.Class({
5104
        construct: function(a) {
5105
            this.cname = "AreasSettings";
5106
            this.alpha = 1;
5107
            this.autoZoom = !1;
5108
            this.balloonText = "[[title]]";
5109
            this.color = "#FFCC00";
5110
            this.colorSolid = "#990000";
5111
            this.unlistedAreasAlpha = 1;
5112
            this.unlistedAreasColor = "#DDDDDD";
5113
            this.outlineColor = "#FFFFFF";
5114
            this.outlineThickness = this.outlineAlpha = 1;
5115
            this.selectedColor = this.rollOverOutlineColor = "#CC0000";
5116
            this.unlistedAreasOutlineColor = "#FFFFFF";
5117
            this.unlistedAreasOutlineAlpha = 1;
5118
            this.descriptionWindowWidth = 250;
5119
            this.bringForwardOnHover = this.adjustOutlineThickness = !0;
5120
            this.accessibleLabel = "[[title]] [[value]] [[description]]";
5121
            d.applyTheme(this, a, this.cname)
5122
        }
5123
    })
5124
})();
5125
(function() {
5126
    var d = window.AmCharts;
5127
    d.ImagesProcessor = d.Class({
5128
        construct: function(a) {
5129
            this.chart = a;
5130
            this.reset()
5131
        },
5132
        process: function(a) {
5133
            var b = a.images,
5134
                c;
5135
            for (c = b.length - 1; 0 <= c; c--) {
5136
                var d = b[c];
5137
                this.createImage(d, c);
5138
                d.parentArray = b
5139
            }
5140
            this.counter = c;
5141
            a.parentObject && a.remainVisible && this.process(a.parentObject)
5142
        },
5143
        createImage: function(a, b) {
5144
            a = d.processObject(a, d.MapImage);
5145
            a.arrays = [];
5146
            isNaN(b) && (this.counter++, b = this.counter);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5147
            var c = this.chart,
5148
                e = c.container,
5149
                f = c.mapImagesContainer,
5150
                g = c.stageImagesContainer,
5151
                h = c.imagesSettings;
5152
            a.remove && a.remove();
5153
            var k = h.color,
5154
                l = h.alpha,
5155
                m = h.rollOverColor,
5156
                n = h.rollOverOutlineColor,
5157
                p = h.selectedColor,
5158
                r = h.balloonText,
5159
                t = h.outlineColor,
5160
                q = h.outlineAlpha,
5161
                y = h.outlineThickness,
5162
                B = h.selectedScale,
5163
                u = h.rollOverScale,
5164
                w = h.selectable,
5165
                v = h.labelPosition,
5166
                A = h.labelColor,
5167
                C = h.labelFontSize,
5168
                x = h.bringForwardOnHover,
5169
                z = h.labelRollOverColor,
5170
                F = h.rollOverBrightness,
5171
                E = h.selectedLabelColor;
5172
            a.index = b;
5173
            a.chart = c;
5174
            a.baseSettings = c.imagesSettings;
5175
            var H = e.set();
5176
            a.displayObject = H;
5177
            var G = a.color;
5178
            void 0 == G && (G = k);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5179
            k = a.alpha;
5180
            isNaN(k) && (k = l);
5181
            void 0 == a.bringForwardOnHover && (a.bringForwardOnHover = x);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5182
            l = a.outlineAlpha;
5183
            isNaN(l) && (l = q);
5184
            q = a.rollOverColor;
5185
            void 0 == q && (q = m);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5186
            m = a.selectedColor;
5187
            void 0 == m && (m = p);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5188
            p = a.balloonText;
5189
            void 0 === p && (p = r);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5190
            r = a.outlineColor;
5191
            void 0 == r && (r = t);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5192
            a.outlineColorReal = r;
5193
            t = a.outlineThickness;
5194
            isNaN(t) && (t = y);
5195
            (y = a.labelPosition) || (y = v);
5196
            v = a.labelColor;
5197
            void 0 == v && (v = A);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5198
            A = a.labelRollOverColor;
5199
            void 0 == A && (A = z);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5200
            z = a.selectedLabelColor;
5201
            void 0 == z && (z = E);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5202
            E = a.labelFontSize;
5203
            isNaN(E) && (E = C);
5204
            C = a.selectedScale;
5205
            isNaN(C) && (C = B);
5206
            B = a.rollOverScale;
5207
            isNaN(B) && (B = u);
5208
            u = a.rollOverBrightness;
5209
            void 0 == u && (u = F);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5210
            void 0 == a.selectable && (a.selectable = w);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5211
            a.colorReal = G;
5212
            isNaN(h.selectedBrightness) || (m = d.adjustLuminosity(a.colorReal, h.selectedBrightness / 100));
5213
            a.alphaReal = k;
5214
            a.rollOverColorReal = q;
5215
            a.balloonTextReal = p;
5216
            a.selectedColorReal = m;
5217
            a.labelColorReal = v;
5218
            a.labelRollOverColorReal = A;
5219
            a.selectedLabelColorReal = z;
5220
            a.labelFontSizeReal = E;
5221
            a.labelPositionReal = y;
5222
            a.selectedScaleReal = C;
5223
            a.rollOverScaleReal = B;
5224
            a.rollOverOutlineColorReal = n;
5225
            a.rollOverBrightnessReal = u;
5226
            a.accessibleLabel || (a.accessibleLabel = h.accessibleLabel);
5227
            d.processDescriptionWindow(h, a);
5228
            a.centeredReal = void 0 == a.centered ? h.centered : a.centered;
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5229
            n = a.type;
5230
            u = a.imageURL;
5231
            B = a.svgPath;
5232
            C = a.width;
5233
            E = a.height;
5234
            w = a.scale;
5235
            isNaN(a.percentWidth) || (C = a.percentWidth / 100 * c.realWidth);
5236
            isNaN(a.percentHeight) || (E = a.percentHeight / 100 * c.realHeight);
5237
            var D;
5238
            u || n || B || (n = "circle", C = 1, l = k = 0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5239
            q = F = 0;
0 ignored issues
show
Unused Code introduced by
The assignment to variable F seems to be never used. Consider removing it.
Loading history...
Unused Code introduced by
The assignment to variable q seems to be never used. Consider removing it.
Loading history...
5240
            h = a.selectedColorReal;
5241
            if (n) {
5242
                isNaN(C) && (C = 10);
5243
                isNaN(E) && (E = 10);
5244
                "kilometers" == a.widthAndHeightUnits && (C = c.kilometersToPixels(a.width), E = c.kilometersToPixels(a.height));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5245
                "miles" == a.widthAndHeightUnits && (C = c.milesToPixels(a.width), E = c.milesToPixels(a.height));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5246
                if ("circle" == n || "bubble" == n) E = C;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5247
                D = this.createPredefinedImage(G, r, t, n, C, E);
5248
                q = F = 0;
5249
                a.centeredReal ? (isNaN(a.right) || (F = C * w), isNaN(a.bottom) || (q = E * w)) : (F = C * w / 2, q = E * w / 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5250
                D.translate(F, q, w, !0)
5251
            } 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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5252
            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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5253
            G = a.labelColorReal;
5254
            !a.showAsSelected && c.selectedObject != a || void 0 == h || (D && D.setAttr("fill", h), G = a.selectedLabelColorReal);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5255
            D = null;
0 ignored issues
show
Unused Code introduced by
The assignment to D seems to be never used. If you intend to free memory here, this is not necessary since the variable leaves the scope anyway.
Loading history...
5256
            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({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5257
                arr: this.labelsToReposition,
5258
                el: a
5259
            }));
5260
            e = isNaN(a.latitude) || isNaN(a.longitude) ? !0 : !1;
5261
            a.lineId && (D = this.chart.getObjectById(a.lineId)) && 0 < D.longitudes.length && (e = !1);
5262
            e ? g.push(H) : f.push(H);
5263
            H.toBack();
5264
            H && (H.rotation = a.rotation, isNaN(a.rotation) || H.rotate(a.rotation), a.arrays.push({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5265
                arr: this.allSvgObjects,
5266
                el: H
5267
            }), this.allSvgObjects.push(H));
5268
            this.allObjects.push(a);
5269
            c.makeObjectAccessible(a);
5270
            f = a.tabIndex;
5271
            void 0 === f && (f = c.imagesSettings.tabIndex);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5272
            void 0 !== f && H.setAttr("tabindex", f);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5273
            a.arrays.push({
5274
                arr: this.allObjects,
5275
                el: a
5276
            });
5277
            isNaN(a.longitude) || isNaN(a.latitude) || !a.fixedSize || (a.objToResize = {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5278
                image: H,
5279
                mapImage: a,
5280
                scale: 1
5281
            }, this.objectsToResize.push(a.objToResize), a.arrays.push({
5282
                arr: this.objectsToResize,
5283
                el: a.objToResize
5284
            }));
5285
            this.updateSizeAndPosition(a);
5286
            a.mouseEnabled && c.addObjectEventListeners(H, a);
5287
            a.hidden && H.hide();
5288
            d.removeFromArray(c.updatableImages, a);
5289
            a.animateAlongLine && (c.updatableImages.push(a), a.delayAnimateAlong());
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5290
            return a
5291
        },
5292
        updateSizeAndPosition: function(a) {
5293
            var b = this.chart,
5294
                c = a.displayObject,
5295
                e = b.getX(a.left),
5296
                f = b.getY(a.top),
5297
                g, h = a.image.getBBox();
5298
            isNaN(a.right) || (e = b.getX(a.right, !0) - h.width * a.scale);
5299
            isNaN(a.bottom) || (f = b.getY(a.bottom, !0) - h.height * a.scale);
5300
            var k = a.longitude,
5301
                l = a.latitude,
5302
                m = a.positionOnLine,
5303
                h = a.imageLabel,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 5297. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5304
                n = this.chart.zoomLevel(),
5305
                p, r;
5306
            a.lineId && (a.line = this.chart.getObjectById(a.lineId));
5307
            if (a.line && a.line.getCoordinates) {
5308
                a.line.chart = b;
5309
                var t = a.line.getCoordinates(m, a.lineSegment);
5310
                t && (k = b.coordinateToLongitude(t.x), l = b.coordinateToLatitude(t.y), p = t.x, r = t.y, a.animateAngle && (g = d.radiansToDegrees(t.angle)))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5311
            }
5312
            isNaN(g) || c.rotate(g + a.extraAngle);
0 ignored issues
show
Bug introduced by
The variable g seems to not be initialized for all possible execution paths. Are you sure isNaN handles undefined variables?
Loading history...
5313
            if (!isNaN(e) && !isNaN(f)) c.translate(e, f, NaN, !0);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5314
            else if (!isNaN(l) && !isNaN(k))
5315
                if (f = b.coordinatesToXY(k, l), e = f.x, f = f.y, isNaN(p) || (e = p), isNaN(r) || (f = r), a.fixedSize) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Bug introduced by
The variable p seems to not be initialized for all possible execution paths. Are you sure isNaN handles undefined variables?
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Bug introduced by
The variable r seems to not be initialized for all possible execution paths. Are you sure isNaN handles undefined variables?
Loading history...
5316
                    p = a.positionScale;
5317
                    isNaN(p) ? p = 0 : (--p, p *= 1 - 2 * Math.abs(m - .5));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5318
                    if (m = a.objectToResize) m.scale = 1 + p;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5319
                    c.translate(e, f, 1 / n + p, !0)
5320
                } else c.translate(e, f, NaN, !0);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5321
            this.positionLabel(h, a, a.labelPositionReal)
5322
        },
5323
        positionLabel: function(a, b, c) {
5324
            if (a) {
5325
                var d = b.image,
5326
                    f = 0,
5327
                    g = 0,
5328
                    h = 0,
5329
                    k = 0;
5330
                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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5331
                var d = a.getBBox(),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 5325. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5332
                    l = d.width,
5333
                    m = d.height;
5334
                "right" == c && (f += h + l / 2 + 5, g += k / 2 - 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5335
                "left" == c && (f += -l / 2 - 5, g += k / 2 - 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5336
                "top" == c && (g -= m / 2 + 3, f += h / 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5337
                "bottom" == c && (g += k + m / 2, f += h / 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5338
                "middle" == c && (f += h / 2, g += k / 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5339
                a.translate(f + b.labelShiftX, g + b.labelShiftY, NaN, !0);
5340
                a = b.labelFontSizeReal;
5341
                b.labelBG && b.labelBG.translate(f - d.width / 2 + b.labelShiftX - 9, g - a / 2 + b.labelShiftY -
5342
                    4, NaN, !0)
5343
            }
5344
        },
5345
        createPredefinedImage: function(a, b, c, e, f, g) {
5346
            var h = this.chart.container,
5347
                k;
5348
            switch (e) {
0 ignored issues
show
Coding Style introduced by
As per coding-style, switch statements should have a default case.
Loading history...
5349
                case "circle":
5350
                    k = d.circle(h, f / 2, a, 1, c, b, 1);
5351
                    break;
5352
                case "rectangle":
5353
                    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);
5354
                    break;
5355
                case "bubble":
5356
                    k = d.circle(h, f / 2, a, 1, c, b, 1, !0);
5357
                    break;
5358
                case "hexagon":
5359
                    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)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5360
            }
5361
            return k
0 ignored issues
show
Bug introduced by
The variable k seems to not be initialized for all possible execution paths.
Loading history...
5362
        },
5363
        reset: function() {
5364
            this.objectsToResize = [];
5365
            this.allSvgObjects = [];
5366
            this.allObjects = [];
5367
            this.allLabels = [];
5368
            this.labelsToReposition = []
5369
        }
5370
    })
5371
})();
5372
(function() {
5373
    var d = window.AmCharts;
5374
    d.ImagesSettings = d.Class({
5375
        construct: function(a) {
5376
            this.cname = "ImagesSettings";
5377
            this.balloonText = "[[title]]";
5378
            this.alpha = 1;
5379
            this.borderAlpha = 0;
5380
            this.borderThickness = 1;
5381
            this.labelPosition = "right";
5382
            this.labelColor = "#000000";
5383
            this.labelFontSize = 11;
5384
            this.color = "#000000";
5385
            this.labelRollOverColor = "#00CC00";
5386
            this.centered = !0;
5387
            this.rollOverScale = this.selectedScale = 1;
5388
            this.descriptionWindowWidth = 250;
5389
            this.bringForwardOnHover = !0;
5390
            this.outlineColor = "transparent";
5391
            this.adjustAnimationSpeed = !1;
5392
            this.baseAnimationDistance = 500;
5393
            this.pauseDuration = 0;
5394
            this.easingFunction = d.easeInOutQuad;
5395
            this.animationDuration = 3;
5396
            this.positionScale = 1;
5397
            this.accessibleLabel = "[[title]] [[description]]";
5398
            d.applyTheme(this, a, this.cname)
5399
        }
5400
    })
5401
})();
5402
(function() {
5403
    var d = window.AmCharts;
5404
    d.LinesProcessor = d.Class({
5405
        construct: function(a) {
5406
            this.chart = a;
5407
            this.reset()
5408
        },
5409
        process: function(a) {
5410
            var b = a.lines,
5411
                c;
5412
            for (c = 0; c < b.length; c++) {
5413
                var d = b[c];
5414
                this.createLine(d, c);
5415
                d.parentArray = b
5416
            }
5417
            this.counter = c;
5418
            a.parentObject && a.remainVisible && this.process(a.parentObject)
5419
        },
5420
        createLine: function(a, b) {
5421
            a = d.processObject(a, d.MapLine);
5422
            isNaN(b) && (this.counter++, b = this.counter);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5423
            a.index = b;
5424
            a.remove && a.remove();
5425
            var c = this.chart,
5426
                e = c.linesSettings,
5427
                f = this.objectsToResize,
5428
                g = c.mapLinesContainer,
5429
                h = c.stageLinesContainer,
5430
                k = e.thickness,
5431
                l = e.dashLength,
5432
                m = e.arrow,
5433
                n = e.arrowSize,
5434
                p = e.arrowColor,
5435
                r = e.arrowAlpha,
5436
                t = e.color,
5437
                q = e.alpha,
5438
                y = e.rollOverColor,
5439
                B = e.selectedColor,
5440
                u = e.rollOverAlpha,
5441
                w = e.balloonText,
5442
                v = e.bringForwardOnHover,
5443
                A = e.arc,
5444
                C = e.rollOverBrightness,
5445
                x = c.container;
5446
            a.chart = c;
5447
            a.baseSettings = e;
5448
            var z = x.set();
5449
            a.displayObject = z;
5450
            var F = a.tabIndex;
5451
            void 0 === F && (F = e.tabIndex);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5452
            void 0 !== F && z.setAttr("tabindex", F);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5453
            this.allSvgObjects.push(z);
5454
            a.arrays.push({
5455
                arr: this.allSvgObjects,
5456
                el: z
5457
            });
5458
            this.allObjects.push(a);
5459
            a.arrays.push({
5460
                arr: this.allObjects,
5461
                el: a
5462
            });
5463
            a.mouseEnabled && c.addObjectEventListeners(z, a);
5464
            if (a.remainVisible || c.selectedObject == a.parentObject) {
5465
                F = a.thickness;
5466
                isNaN(F) && (F = k);
5467
                k = a.dashLength;
5468
                isNaN(k) && (k = l);
5469
                l = a.color;
5470
                void 0 == l && (l = t);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5471
                t = a.alpha;
5472
                isNaN(t) && (t = q);
5473
                q = a.rollOverAlpha;
5474
                isNaN(q) && (q = u);
5475
                isNaN(q) && (q = t);
5476
                u = a.rollOverColor;
5477
                void 0 == u && (u = y);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5478
                y = a.selectedColor;
5479
                void 0 == y && (y = B);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5480
                B = a.balloonText;
5481
                void 0 === B && (B = w);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5482
                w = a.arc;
5483
                isNaN(w) && (w = A);
5484
                A = a.arrow;
5485
                if (!A || "none" == A && "none" != m) A = m;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5486
                m = a.arrowColor;
5487
                void 0 == m && (m = p);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5488
                void 0 == m && (m = l);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5489
                p = a.arrowAlpha;
5490
                isNaN(p) && (p = r);
5491
                isNaN(p) && (p = t);
5492
                r = a.arrowSize;
5493
                isNaN(r) && (r = n);
5494
                n = a.rollOverBrightness;
5495
                void 0 == n && (n = C);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5496
                a.colorReal = l;
5497
                a.arrowColor = m;
5498
                isNaN(e.selectedBrightness) || (y = d.adjustLuminosity(a.colorReal, e.selectedBrightness / 100));
5499
                a.alphaReal = t;
5500
                a.rollOverColorReal = u;
5501
                a.rollOverAlphaReal = q;
5502
                a.balloonTextReal = B;
5503
                a.selectedColorReal = y;
5504
                a.thicknessReal = F;
5505
                a.rollOverBrightnessReal = n;
5506
                a.accessibleLabel || (a.accessibleLabel = e.accessibleLabel);
5507
                void 0 === a.shiftArrow && (a.shiftArrow = e.shiftArrow);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5508
                void 0 == a.bringForwardOnHover && (a.bringForwardOnHover = v);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5509
                d.processDescriptionWindow(e, a);
5510
                v = this.processCoordinates(a.x, c.realWidth);
5511
                C = this.processCoordinates(a.y, c.realHeight);
5512
                n = a.longitudes;
5513
                e = a.latitudes;
5514
                q = n.length;
5515
                if (0 < q)
5516
                    for (v = [], C = [], u = 0; u < q; u++) B = c.coordinatesToXY(n[u], e[u]), v.push(B.x), C.push(B.y);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5517
                if (0 < v.length) {
5518
                    a.segments = v.length;
5519
                    d.dx = 0;
5520
                    d.dy = 0;
5521
                    var E, H, G, q = 10 * (1 - Math.abs(w));
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable q already seems to be declared on line 5437. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5522
                    10 <= q && (q = NaN);
0 ignored issues
show
Comprehensibility Best Practice introduced by
You seem to be aliasing the built-in name NaN as q. This makes your code very difficult to follow, consider using the built-in name directly.
Loading history...
5523
                    1 > q && (q = 1);
5524
                    a.arcRadius = [];
5525
                    a.distances = [];
5526
                    n = c.mapContainer.scale;
5527
                    if (isNaN(q)) {
5528
                        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;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5529
                        q = d.line(x, v, C, l, 1, F / n, k, !1, !1, !0);
5530
                        l = d.line(x, v, C, l, .001, 5 / n, k, !1, !1, !0);
5531
                        q.setAttr("stroke-linecap", "round")
5532
                    } else {
5533
                        u = 1;
5534
                        0 > w && (u = 0);
5535
                        B = {
5536
                            fill: "none",
5537
                            stroke: l,
5538
                            "stroke-opacity": 1,
5539
                            "stroke-width": F / n,
5540
                            "fill-opacity": 0,
5541
                            "stroke-linecap": "round"
5542
                        };
5543
                        void 0 !== k && 0 < k && (B["stroke-dasharray"] = k);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5544
                        for (var k = "", D = 0; D < v.length - 1; D++) {
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 5430. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5545
                            var K = v[D],
5546
                                J = v[D + 1],
5547
                                L = C[D],
5548
                                O = C[D + 1];
5549
                            H = Math.sqrt(Math.pow(J - K, 2) + Math.pow(O - L, 2));
5550
                            G = H / 2 * q;
5551
                            E = 270 + 180 * Math.acos(H / 2 /
5552
                                G) / Math.PI;
5553
                            isNaN(E) && (E = 270);
5554
                            if (K < J) {
5555
                                var P = K,
5556
                                    K = J,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable K already seems to be declared on line 5545. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5557
                                    J = P,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable J already seems to be declared on line 5546. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5558
                                    P = L,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable P already seems to be declared on line 5555. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5559
                                    L = O,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable L already seems to be declared on line 5547. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5560
                                    O = P;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable O already seems to be declared on line 5548. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5561
                                E = -E
5562
                            }
5563
                            0 < w && (E = -E);
5564
                            k += "M" + K + "," + L + "A" + G + "," + G + ",0,0," + u + "," + J + "," + O;
5565
                            a.arcRadius[D] = G;
5566
                            a.distances[D] = H
5567
                        }
5568
                        q = x.path(k).attr(B);
5569
                        l = x.path(k).attr({
5570
                            "fill-opacity": 0,
5571
                            stroke: l,
5572
                            "stroke-width": 5 / n,
5573
                            //neal opacity
5574
                            "stroke-opacity": 0.1,
5575
                            fill: "none"
5576
                        })
5577
                    }
5578
                    d.setCN(c, q, "map-line");
5579
                    void 0 != a.id && d.setCN(c, q, "map-line-" + a.id);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5580
                    d.dx = .5;
5581
                    d.dy = .5;
5582
                    z.push(q);
5583
                    z.push(l);
5584
                    q.setAttr("opacity", t);
5585
                    if ("none" != A) {
5586
                        var I, M, N;
5587
                        if ("end" == A || "both" == A) u = v[v.length - 1], D = C[C.length - 1], 1 < v.length ?
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
5588
                            (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;
0 ignored issues
show
Bug introduced by
The variable E seems to not be initialized for all possible execution paths. Are you sure isNaN handles undefined variables?
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5589
                        t = [-r / 2 - .5, -.5, r / 2 - .5];
5590
                        k = [r, -.5, r];
5591
                        a.shiftArrow && "middle" != A && (k = [0, 1.2 * -r, 0]);
5592
                        "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));
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Bug introduced by
The variable M does not seem to be initialized in case "end" == A || "both" == A on line 5587 is false. Are you sure the function translate handles undefined variables?
Loading history...
Bug introduced by
The variable N does not seem to be initialized in case "end" == A || "both" == A on line 5587 is false. Are you sure the function translate handles undefined variables?
Loading history...
Bug introduced by
The variable I does not seem to be initialized in case "end" == A || "both" == A on line 5587 is false. Are you sure the function isNaN handles undefined variables?
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5593
                        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 -
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
5594
                            M) / (r - u)) / Math.PI, isNaN(E) || (I -= E), M = r, I = 0 > r - u ? I - 90 : I + 90;
5595
                        "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);
0 ignored issues
show
Bug introduced by
The variable G seems to not be initialized for all possible execution paths.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Bug introduced by
The variable H seems to not be initialized for all possible execution paths.
Loading history...
5596
                        r = d.polygon(x, t, k, m, p, 1, m, p, void 0, !0);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5597
                        d.setCN(c, q, "map-line-arrow");
5598
                        void 0 != a.id && d.setCN(c, q, "map-line-arrow-" + a.id);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5599
                        z.push(r);
5600
                        r.translate(M,
5601
                            N, 1 / n, !0);
5602
                        isNaN(I) || r.rotate(I);
5603
                        a.fixedSize && (f.push(r), a.arrays.push({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5604
                            arr: f,
5605
                            el: r
5606
                        }));
5607
                        a.arrowSvg = r
5608
                    }
5609
                    a.fixedSize && q && (f = {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5610
                        line: q,
5611
                        //neal stroke width
5612
                        thickness: 3
5613
                    }, this.linesToResize.push(f), a.arrays.push({
5614
                        arr: this.linesToResize,
5615
                        el: f
5616
                    }), f = {
5617
                        line: l,
5618
                        thickness: 5
5619
                    }, this.linesToResize.push(f), a.arrays.push({
5620
                        arr: this.linesToResize,
5621
                        el: f
5622
                    }));
5623
                    a.lineSvg = q;
5624
                    a.showAsSelected && !isNaN(y) && q.setAttr("stroke", y);
5625
                    0 < e.length ? g.push(z) : h.push(z);
5626
                    a.hidden && z.hide();
5627
                    c.makeObjectAccessible(a)
5628
                }
5629
            }
5630
        },
5631
        processCoordinates: function(a, b) {
5632
            var c = [],
5633
                d;
5634
            for (d = 0; d < a.length; d++) {
5635
                var f = a[d],
5636
                    g = Number(f);
5637
                isNaN(g) && (g = Number(f.replace("%", "")) * b / 100);
5638
                isNaN(g) || c.push(g)
5639
            }
5640
            return c
5641
        },
5642
        reset: function() {
5643
            this.objectsToResize = [];
5644
            this.allSvgObjects = [];
5645
            this.allObjects = [];
5646
            this.linesToResize = []
5647
        }
5648
    })
5649
})();
5650
(function() {
5651
    var d = window.AmCharts;
5652
    d.LinesSettings = d.Class({
5653
        construct: function(a) {
5654
            this.cname = "LinesSettings";
5655
            this.balloonText = "[[title]]";
5656
            this.thickness = 1;
5657
            this.dashLength = 0;
5658
            this.arrowSize = 10;
5659
            this.arrowAlpha = 1;
5660
            this.arrow = "none";
5661
            this.color = "#990000";
5662
            this.descriptionWindowWidth = 250;
5663
            this.bringForwardOnHover = !0;
5664
            d.applyTheme(this, a, this.cname)
5665
        }
5666
    })
5667
})();
5668
(function() {
5669
    var d = window.AmCharts;
5670
    d.MapObject = d.Class({
5671
        construct: function(a) {
5672
            this.fixedSize = this.mouseEnabled = !0;
5673
            this.images = [];
5674
            this.lines = [];
5675
            this.areas = [];
5676
            this.remainVisible = !0;
5677
            this.passZoomValuesToTarget = !1;
5678
            this.objectType = this.cname;
5679
            d.applyTheme(this, a, "MapObject");
5680
            this.arrays = []
5681
        },
5682
        deleteObject: function() {
5683
            this.remove();
5684
            this.parentArray && d.removeFromArray(this.parentArray, this);
5685
            if (this.arrays)
5686
                for (var a = 0; a < this.arrays.length; a++) d.removeFromArray(this.arrays[a].arr, this.arrays[a].el);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5687
            this.arrays = []
5688
        }
5689
    })
5690
})();
5691
(function() {
5692
    var d = window.AmCharts;
5693
    d.MapArea = d.Class({
5694
        inherits: d.MapObject,
5695
        construct: function(a) {
5696
            this.cname = "MapArea";
5697
            d.MapArea.base.construct.call(this, a);
5698
            d.applyTheme(this, a, this.cname)
5699
        },
5700
        validate: function() {
5701
            this.chart.areasProcessor.createArea(this)
5702
        }
5703
    })
5704
})();
5705
(function() {
5706
    var d = window.AmCharts;
5707
    d.MapLine = d.Class({
5708
        inherits: d.MapObject,
5709
        construct: function(a) {
5710
            this.cname = "MapLine";
5711
            this.longitudes = [];
5712
            this.latitudes = [];
5713
            this.x = [];
5714
            this.y = [];
5715
            this.segments = 0;
5716
            this.arrow = "none";
5717
            d.MapLine.base.construct.call(this, a);
5718
            d.applyTheme(this, a, this.cname)
5719
        },
5720
        validate: function() {
5721
            this.chart.linesProcessor.createLine(this)
5722
        },
5723
        remove: function() {
5724
            var a = this.displayObject;
5725
            a && a.remove()
5726
        },
5727
        getCoordinates: function(a, b) {
5728
            isNaN(b) && (b = 0);
5729
            isNaN(this.arc) || this.isValid || (this.isValid = !0, this.validate());
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5730
            if (!isNaN(a)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if !isNaN(a) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
5731
                var c, e, f, g, h, k;
5732
                if (1 < this.longitudes.length) {
5733
                    e = this.chart.coordinatesToXY(this.longitudes[b], this.latitudes[b]);
5734
                    var l = this.chart.coordinatesToXY(this.longitudes[b + 1], this.latitudes[b + 1]);
5735
                    c = e.x;
5736
                    f = l.x;
5737
                    e = e.y;
5738
                    g = l.y
5739
                } else 1 < this.x.length && (c = this.x[b], f = this.x[b + 1], e = this.y[b], g = this.y[b + 1]);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5740
                l = Math.sqrt(Math.pow(f - c, 2) + Math.pow(g - e, 2));
0 ignored issues
show
Bug introduced by
The variable e does not seem to be initialized in case 1 < this.longitudes.length on line 5732 is false. Are you sure this can never be the case?
Loading history...
Bug introduced by
The variable c does not seem to be initialized in case 1 < this.longitudes.length on line 5732 is false. Are you sure this can never be the case?
Loading history...
Bug introduced by
The variable g does not seem to be initialized in case 1 < this.longitudes.length on line 5732 is false. Are you sure this can never be the case?
Loading history...
Bug introduced by
The variable f does not seem to be initialized in case 1 < this.longitudes.length on line 5732 is false. Are you sure this can never be the case?
Loading history...
5741
                c < f && !isNaN(this.arc) && 0 !== this.arc && (a = 1 - a);
5742
                h = c + (f - c) * a;
5743
                k = e + (g - e) * a;
5744
                var m = Math.atan2(g - e, f - c);
5745
                if (!isNaN(this.arc) && 0 !== this.arc && this.arcRadius) {
5746
                    var n = 0;
5747
                    c < f && (n = c, c = f, f = n, n = e, e = g, g = n, n = Math.PI);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5748
                    k = this.arcRadius[b];
5749
                    0 > this.arc && (l = -l);
5750
                    h = c + (f - c) / 2 + Math.sqrt(k * k - l / 2 * (l / 2)) * (e - g) / l;
5751
                    var p = e + (g - e) / 2 + Math.sqrt(k * k - l / 2 * (l / 2)) * (f - c) / l;
5752
                    c = 180 * Math.atan2(e - p, c - h) / Math.PI;
5753
                    f = 180 * Math.atan2(g - p, f - h) / Math.PI;
5754
                    180 < f - c && (f -= 360);
5755
                    m = d.degreesToRadians(c + (f - c) * a);
5756
                    h += k * Math.cos(m);
5757
                    k = p + k * Math.sin(m);
5758
                    m = 0 < this.arc ? m + Math.PI / 2 : m - Math.PI / 2;
5759
                    m += n
5760
                }
5761
                this.distance = l;
5762
                return {
5763
                    x: h,
5764
                    y: k,
5765
                    angle: m
5766
                }
5767
            }
5768
        },
5769
        fixToStage: function() {
5770
            if (0 < this.latitudes.length) {
5771
                this.y = [];
5772
                for (var a = 0; a < this.latitudes.length; a++) {
5773
                    var b =
5774
                        this.chart.coordinatesToStageXY(this.longitudes[a], this.latitudes[a]);
5775
                    this.y.push(b.y);
5776
                    this.x.push(b.x)
5777
                }
5778
                this.latitudes = [];
5779
                this.longitudes = []
5780
            }
5781
            this.validate()
5782
        },
5783
        fixToMap: function() {
5784
            if (0 < this.y.length) {
5785
                this.latitudes = [];
5786
                for (var a = 0; a < this.y.length; a++) {
5787
                    var b = this.chart.stageXYToCoordinates(this.x[a], this.y[a]);
5788
                    this.latitudes.push(b.latitude);
5789
                    this.longitudes.push(b.longitude)
5790
                }
5791
                this.y = [];
5792
                this.x = []
5793
            }
5794
            this.validate()
5795
        }
5796
    })
5797
})();
5798
(function() {
5799
    var d = window.AmCharts;
5800
    d.MapImage = d.Class({
5801
        inherits: d.MapObject,
5802
        construct: function(a) {
5803
            this.cname = "MapImage";
5804
            this.scale = 1;
5805
            this.widthAndHeightUnits = "pixels";
5806
            this.labelShiftY = this.labelShiftX = 0;
5807
            this.positionOnLine = .5;
5808
            this.direction = 1;
5809
            this.lineSegment = this.extraAngle = 0;
5810
            this.animateAngle = !0;
5811
            this.createEvents("animationStart", "animationEnd");
5812
            d.MapImage.base.construct.call(this, a);
5813
            d.applyTheme(this, a, this.cname);
5814
            this.delayCounter = 0
5815
        },
5816
        validate: function() {
5817
            this.chart.imagesProcessor.createImage(this)
5818
        },
5819
        updatePosition: function() {
5820
            this.chart.imagesProcessor.updateSizeAndPosition(this)
5821
        },
5822
        remove: function() {
5823
            var a = this.displayObject;
5824
            a && a.remove();
5825
            (a = this.imageLabel) && a.remove()
5826
        },
5827
        animateTo: function(a, b, c, d) {
5828
            isNaN(c) || (this.animationDuration = c);
5829
            d && (this.easingFunction = d);
5830
            this.finalX = a;
5831
            this.finalY = b;
5832
            isNaN(this.longitude) || (this.initialX = this.longitude);
5833
            isNaN(this.left) || (this.initialX = this.left);
5834
            isNaN(this.right) || (this.initialX = this.right);
5835
            isNaN(this.latitude) || (this.initialY = this.latitude);
5836
            isNaN(this.top) || (this.initialY = this.top);
5837
            isNaN(this.bottom) || (this.initialY = this.bottom);
5838
            this.animatingAlong = !1;
5839
            this.animate()
5840
        },
5841
        animateAlong: function(a, b, c) {
5842
            1 == this.positionOnLine && this.flipDirection && (this.direction = -1, this.extraAngle = 180);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5843
            isNaN(b) || (this.animationDuration = b);
5844
            c && (this.easingFunction = c);
5845
            a && (this.line = this.chart.getObjectById(a));
5846
            this.animateAlongLine = this.line;
5847
            this.animatingAlong = !0;
5848
            this.animate()
5849
        },
5850
        animate: function() {
5851
            var a = this.chart.imagesSettings,
5852
                b = this.animationDuration;
5853
            isNaN(b) && (b = a.animationDuration);
5854
            this.totalFrames = b * d.updateRate;
5855
            b = 1;
5856
            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));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5857
            this.frame = 0;
5858
            this.fire({
5859
                type: "animationStart",
5860
                chart: this.chart,
5861
                image: this,
5862
                lineSegment: this.lineSegment,
5863
                direction: this.direction
5864
            })
5865
        },
5866
        update: function() {
5867
            var a = this.totalFrames;
5868
            this.frame++;
5869
            this.delayCounter--;
5870
            0 === this.delayCounter && this.animateAlong();
5871
            if (!(0 < this.delayCounter))
5872
                if (this.frame <= a) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5873
                    this.updatePosition();
5874
                    var b = this.chart.imagesSettings,
5875
                        c = this.easingFunction;
5876
                    c || (c = b.easingFunction);
5877
                    a = c(0, this.frame, 0, 1, a); - 1 == this.direction && (a = 1 - a);
5878
                    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))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5879
                } else this.frame == a + 1 && (this.fire({
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
5880
                    type: "animationEnd",
5881
                    chart: this.chart,
5882
                    image: this,
5883
                    lineSegment: this.lineSegment,
5884
                    direction: this.direction
5885
                }), 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()))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5886
        },
5887
        delayAnimateAlong: function() {
5888
            this.animateAlongLine && (this.delayCounter = this.chart.imagesSettings.pauseDuration * d.updateRate)
5889
        },
5890
        fixToStage: function() {
5891
            if (!isNaN(this.longitude)) {
5892
                var a = this.chart.coordinatesToStageXY(this.longitude, this.latitude);
5893
                this.left = a.x;
5894
                this.top = a.y;
5895
                this.latitude = this.longitude = void 0
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5896
            }
5897
            this.validate()
5898
        },
5899
        fixToMap: function() {
5900
            if (!isNaN(this.left)) {
5901
                var a = this.chart.stageXYToCoordinates(this.left, this.top);
5902
                this.longitude = a.longitude;
5903
                this.latitude = a.latitude;
5904
                this.top = this.left = void 0
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
5905
            }
5906
            this.validate()
5907
        }
5908
    })
5909
})();
5910
(function() {
5911
    var d = window.AmCharts;
5912
    d.degreesToRadians = function(a) {
5913
        return a / 180 * Math.PI
5914
    };
5915
    d.radiansToDegrees = function(a) {
5916
        return a / Math.PI * 180
5917
    };
5918
    d.getColorFade = function(a, b, c) {
5919
        var e = d.hex2RGB(b);
5920
        b = e[0];
5921
        var f = e[1],
5922
            e = e[2],
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 5919. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5923
            g = d.hex2RGB(a);
5924
        a = g[0];
5925
        var h = g[1],
5926
            g = g[2];
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable g already seems to be declared on line 5923. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5927
        a += Math.round((b - a) * c);
5928
        h += Math.round((f - h) * c);
5929
        g += Math.round((e - g) * c);
5930
        return "rgb(" + a + "," + h + "," + g + ")"
5931
    };
5932
    d.hex2RGB = function(a) {
5933
        return [parseInt(a.substring(1, 3), 16), parseInt(a.substring(3, 5), 16), parseInt(a.substring(5, 7), 16)]
5934
    };
5935
    d.processDescriptionWindow = function(a, b) {
5936
        isNaN(b.descriptionWindowX) && (b.descriptionWindowX = a.descriptionWindowX);
5937
        isNaN(b.descriptionWindowY) && (b.descriptionWindowY = a.descriptionWindowY);
5938
        isNaN(b.descriptionWindowLeft) && (b.descriptionWindowLeft = a.descriptionWindowLeft);
5939
        isNaN(b.descriptionWindowRight) && (b.descriptionWindowRight = a.descriptionWindowRight);
5940
        isNaN(b.descriptionWindowTop) && (b.descriptionWindowTop = a.descriptionWindowTop);
5941
        isNaN(b.descriptionWindowBottom) && (b.descriptionWindowBottom = a.descriptionWindowBottom);
5942
        isNaN(b.descriptionWindowWidth) && (b.descriptionWindowWidth = a.descriptionWindowWidth);
5943
        isNaN(b.descriptionWindowHeight) && (b.descriptionWindowHeight = a.descriptionWindowHeight)
5944
    };
5945
    d.normalizePath = function(a) {
5946
        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++) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
You seem to be aliasing the built-in name Infinity as g. This makes your code very difficult to follow, consider using the built-in name directly.
Loading history...
5947
            var n = c[m],
5948
                p = n.letter,
5949
                r = n.x,
5950
                n = n.y;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable n already seems to be declared on line 5947. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
5951
            "h" == p && (p = "L", r += e, n = f);
0 ignored issues
show
Bug introduced by
The variable e seems to not be initialized for all possible execution paths.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Bug introduced by
The variable f seems to not be initialized for all possible execution paths.
Loading history...
5952
            "H" == p && (p = "L", n = f);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5953
            "v" == p && (p = "L", r = e, n += f);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5954
            "V" == p && (p = "L", r = e);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5955
            if ("m" === p || "l" === p) p = p.toUpperCase(), r += e, n += f;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5956
            r = d.roundTo(r, 3);
5957
            n = d.roundTo(n, 3);
5958
            e = r;
5959
            f = n;
5960
            r > h && (h = r);
5961
            r < g && (g = r);
5962
            n > l && (l = n);
5963
            n < k && (k = n);
5964
            b = "z" == p.toLowerCase() ? b + "Z " : b + (p + " " + r + " " + n + " ")
5965
        }
5966
        a.setAttribute("d", b);
5967
        return {
5968
            minX: g,
5969
            maxX: h,
5970
            minY: k,
5971
            maxY: l
5972
        }
5973
    };
5974
    d.mercatorLatitudeToRadians = function(a) {
5975
        return Math.log(Math.tan(Math.PI / 4 + d.degreesToRadians(a) / 2))
5976
    };
5977
    d.parsePath = function(a) {
5978
        a = a.match(/([MmLlHhVvZz]{1}[0-9.,\-\s]*)/g);
5979
        for (var b = [], c = 0; c < a.length; c++) {
5980
            var d = a[c].match(/([MmLlHhVvZz]{1})|([0-9.\-]+)/g),
5981
                f = {
5982
                    letter: d[0]
5983
                };
5984
            switch (d[0]) {
5985
                case "Z":
5986
                case "Z":
0 ignored issues
show
Bug introduced by
The test: "Z" is already covered by the case statement in line 5985. This statement will not be executed.
Loading history...
5987
                case "z":
5988
                    break;
5989
                case "V":
5990
                case "v":
5991
                    f.y = Number(d[1]);
5992
                    break;
5993
                case "H":
5994
                case "h":
5995
                    f.x = Number(d[1]);
5996
                    break;
5997
                default:
5998
                    f.x = Number(d[1]), f.y = Number(d[2])
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
5999
            }
6000
            b.push(f)
6001
        }
6002
        return b
6003
    };
6004
    d.acos = function(a) {
6005
        return 1 < a ? 0 : -1 > a ? Math.PI : Math.acos(a)
6006
    };
6007
    d.asin = function(a) {
6008
        return 1 < a ? Math.PI / 2 : -1 > a ? -Math.PI / 2 : Math.asin(a)
6009
    };
6010
    d.sinci = function(a) {
6011
        return a ? a / Math.sin(a) : 1
6012
    };
6013
    d.asqrt = function(a) {
6014
        return 0 < a ? Math.sqrt(a) : 0
6015
    };
6016
    d.winkel3 = function(a, b) {
6017
        var c = d.aitoff(a, b);
6018
        return [(c[0] + a / Math.PI * 2) / 2, (c[1] + b) / 2]
6019
    };
6020
    d.winkel3.invert = function(a, b) {
6021
        var c = a,
6022
            e = b,
6023
            f = 25,
6024
            g = Math.PI / 2;
6025
        do var h = Math.cos(e),
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
6026
            k = Math.sin(e),
6027
            l = Math.sin(2 * e),
6028
            m = k * k,
6029
            n = h * h,
6030
            p = Math.sin(c),
6031
            r = Math.cos(c / 2),
6032
            t = Math.sin(c / 2),
6033
            q = t * t,
6034
            y = 1 - n * r * r,
6035
            B = y ? d.acos(h * r) * Math.sqrt(u = 1 / y) : u = 0,
6036
            u, y = .5 * (2 * B * h * t + c / g) - a,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable y already seems to be declared on line 6034. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
6037
            w = .5 * (B * k + e) - b,
6038
            v = .5 * u * (n * q + B * h * r * m) + .5 / g,
6039
            A = u * (p * l / 4 - B * k * t),
6040
            k = .125 * u * (l * t - B * k * n * p),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable k already seems to be declared on line 6026. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
6041
            m = .5 * u * (m * r + B * q * h) + .5,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable m already seems to be declared on line 6028. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
6042
            h = A * k - m * v,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 6025. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
6043
            A = (w * A - y * m) / h,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable A already seems to be declared on line 6039. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
6044
            y = (y * k - w * v) / h,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable y already seems to be declared on line 6034. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
6045
            c = c - A,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 6021. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
6046
            e = e - y; while ((1E-6 < Math.abs(A) || 1E-6 < Math.abs(y)) && 0 < --f);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 6022. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
6047
        return [c, e]
6048
    };
6049
    d.aitoff = function(a, b) {
6050
        var c = Math.cos(b),
6051
            e = d.sinci(d.acos(c * Math.cos(a /= 2)));
6052
        return [2 * c * Math.sin(a) * e, Math.sin(b) * e]
6053
    };
6054
    d.orthographic =
6055
        function(a, b) {
6056
            return [Math.cos(b) * Math.sin(a), Math.sin(b)]
6057
        };
6058
    d.equirectangular = function(a, b) {
6059
        return [a, b]
6060
    };
6061
    d.equirectangular.invert = function(a, b) {
6062
        return [a, b]
6063
    };
6064
    d.eckert5 = function(a, b) {
6065
        var c = Math.PI;
6066
        return [a * (1 + Math.cos(b)) / Math.sqrt(2 + c), 2 * b / Math.sqrt(2 + c)]
6067
    };
6068
    d.eckert5.invert = function(a, b) {
6069
        var c = Math.sqrt(2 + Math.PI),
6070
            d = b * c / 2;
6071
        return [c * a / (1 + Math.cos(d)), d]
6072
    };
6073
    d.eckert6 = function(a, b) {
6074
        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));
0 ignored issues
show
Comprehensibility Best Practice introduced by
You seem to be aliasing the built-in name Infinity as g. This makes your code very difficult to follow, consider using the built-in name directly.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
6075
        d = Math.sqrt(2 +
6076
            c);
6077
        return [a * (1 + Math.cos(b)) / d, 2 * b / d]
6078
    };
6079
    d.eckert6.invert = function(a, b) {
6080
        var c = 1 + Math.PI / 2,
6081
            e = Math.sqrt(c / 2);
6082
        return [2 * a * e / (1 + Math.cos(b *= e)), d.asin((b + Math.sin(b)) / c)]
6083
    };
6084
    d.mercator = function(a, b) {
6085
        b >= Math.PI / 2 - .02 && (b = Math.PI / 2 - .02);
6086
        b <= -Math.PI / 2 + .02 && (b = -Math.PI / 2 + .02);
6087
        return [a, Math.log(Math.tan(Math.PI / 4 + b / 2))]
6088
    };
6089
    d.mercator.invert = function(a, b) {
6090
        return [a, 2 * Math.atan(Math.exp(b)) - Math.PI / 2]
6091
    };
6092
    d.miller = function(a, b) {
6093
        return [a, 1.25 * Math.log(Math.tan(Math.PI / 4 + .4 * b))]
6094
    };
6095
    d.miller.invert = function(a, b) {
6096
        return [a, 2.5 *
6097
            Math.atan(Math.exp(.8 * b)) - .625 * Math.PI
6098
        ]
6099
    };
6100
    d.eckert3 = function(a, b) {
6101
        var c = Math.PI,
6102
            d = Math.sqrt(c * (4 + c));
6103
        return [2 / d * a * (1 + Math.sqrt(1 - 4 * b * b / (c * c))), 4 / d * b]
6104
    };
6105
    d.eckert3.invert = function(a, b) {
6106
        var c = Math.PI,
6107
            e = Math.sqrt(c * (4 + c)) / 2;
6108
        return [a * e / (1 + d.asqrt(1 - b * b * (4 + c) / (4 * c))), b * e / 2]
6109
    }
6110
})();
6111
(function() {
6112
    var d = window.AmCharts;
6113
    d.MapData = d.Class({
6114
        inherits: d.MapObject,
6115
        construct: function() {
6116
            this.cname = "MapData";
6117
            d.MapData.base.construct.call(this);
6118
            this.projection = "mercator";
6119
            this.topLatitude = 90;
6120
            this.bottomLatitude = -90;
6121
            this.leftLongitude = -180;
6122
            this.rightLongitude = 180;
6123
            this.zoomLevel = 1;
6124
            this.getAreasFromMap = !1
6125
        }
6126
    })
6127
})();
6128
(function() {
6129
    var d = window.AmCharts;
6130
    d.DescriptionWindow = d.Class({
6131
        construct: function() {},
6132
        show: function(a, b, c, d) {
6133
            var f = this;
6134
            f.chart = a;
6135
            var g = document.createElement("div");
6136
            g.style.position = "absolute";
6137
            var h = a.classNamePrefix + "-description-";
6138
            g.className = "ammapDescriptionWindow " + h + "div";
6139
            f.div = g;
6140
            b.appendChild(g);
6141
            var k = ".gif";
6142
            a.svgIcons && (k = ".svg");
6143
            var l = document.createElement("img");
6144
            l.className = "ammapDescriptionWindowCloseButton " + h + "close-img";
6145
            l.src = a.pathToImages + "xIcon" + k;
6146
            l.style.cssFloat = "right";
6147
            l.style.cursor =
6148
                "pointer";
6149
            l.onclick = function() {
6150
                f.close()
6151
            };
6152
            l.onmouseover = function() {
6153
                l.src = a.pathToImages + "xIconH" + k
6154
            };
6155
            l.onmouseout = function() {
6156
                l.src = a.pathToImages + "xIcon" + k
6157
            };
6158
            g.appendChild(l);
6159
            b = document.createElement("div");
6160
            b.className = "ammapDescriptionTitle " + h + "title-div";
6161
            b.onmousedown = function() {
6162
                f.div.style.zIndex = 1E3
6163
            };
6164
            g.appendChild(b);
6165
            b.innerHTML = d;
6166
            d = b.offsetHeight;
6167
            b = document.createElement("div");
6168
            b.className = "ammapDescriptionText " + h + "text-div";
6169
            b.style.maxHeight = f.maxHeight - d - 20 + "px";
6170
            g.appendChild(b);
6171
            b.innerHTML = c
6172
        },
6173
        close: function() {
6174
            try {
6175
                this.div.parentNode.removeChild(this.div), this.chart.fireClosed()
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
6176
            } catch (a) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
6177
        }
6178
    })
6179
})();
6180
(function() {
6181
    var d = window.AmCharts;
6182
    d.ValueLegend = d.Class({
6183
        construct: function(a) {
6184
            this.cname = "ValueLegend";
6185
            this.enabled = !0;
6186
            this.showAsGradient = !1;
6187
            this.minValue = 0;
6188
            this.height = 12;
6189
            this.width = 200;
6190
            this.bottom = this.left = 10;
6191
            this.borderColor = "#FFFFFF";
6192
            this.borderAlpha = this.borderThickness = 1;
6193
            this.color = "#000000";
6194
            this.fontSize = 11;
6195
            d.applyTheme(this, a, this.cname)
6196
        },
6197
        init: function(a, b) {
6198
            if (this.enabled) {
6199
                var c = a.areasSettings.color,
6200
                    e = a.areasSettings.colorSolid,
6201
                    f = a.colorSteps;
6202
                d.remove(this.set);
6203
                var g = b.set();
6204
                this.set = g;
6205
                d.setCN(a, g, "value-legend");
6206
                var h = 0,
6207
                    k = this.minValue,
6208
                    l = this.fontSize,
6209
                    m = a.fontFamily,
6210
                    n = this.color,
6211
                    p = {
6212
                        precision: a.precision,
6213
                        decimalSeparator: a.decimalSeparator,
6214
                        thousandsSeparator: a.thousandsSeparator
6215
                    };
6216
                void 0 == k && (k = d.formatNumber(a.minValueReal, p));
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
6217
                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);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
6218
                k = this.maxValue;
6219
                void 0 === k && (k = d.formatNumber(a.maxValueReal, p));
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
6220
                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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
6221
                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);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
6222
                else
6223
                    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);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
6224
                e = c = 0;
6225
                f = g.getBBox();
6226
                h = a.getY(this.bottom, !0);
6227
                l = a.getY(this.top);
6228
                m = a.getX(this.right, !0);
6229
                n = a.getX(this.left);
6230
                isNaN(l) || (c = l);
6231
                isNaN(h) || (c = h - f.height);
6232
                isNaN(n) || (e = n);
6233
                isNaN(m) || (e = m - f.width);
6234
                g.translate(e, c)
6235
            } else d.remove(this.set)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
6236
        }
6237
    })
6238
})();
6239
(function() {
6240
    var d = window.AmCharts;
6241
    d.ObjectList = d.Class({
6242
        construct: function(a) {
6243
            this.divId = a
6244
        },
6245
        init: function(a) {
6246
            this.chart = a;
6247
            var b = this.divId;
6248
            this.container && (b = this.container);
6249
            this.div = "object" != typeof b ? document.getElementById(b) : b;
6250
            b = document.createElement("div");
6251
            b.className = "ammapObjectList " + a.classNamePrefix + "-object-list-div";
6252
            this.div.appendChild(b);
6253
            this.addObjects(a.dataProvider, b)
6254
        },
6255
        addObjects: function(a, b) {
6256
            var c = this.chart,
6257
                d = document.createElement("ul");
6258
            d.className = c.classNamePrefix + "-object-list-ul";
6259
            var f;
6260
            if (a.areas)
6261
                for (f = 0; f < a.areas.length; f++) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
6262
                    var g = a.areas[f];
6263
                    void 0 === g.showInList && (g.showInList = c.showAreasInList);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
6264
                    this.addObject(g, d)
6265
                }
6266
            if (a.images)
6267
                for (f = 0; f < a.images.length; f++) g = a.images[f], void 0 === g.showInList && (g.showInList = c.showImagesInList), this.addObject(g, d);
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
6268
            if (a.lines)
6269
                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 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
6270
            0 < d.childNodes.length && b.appendChild(d)
6271
        },
6272
        addObject: function(a, b) {
6273
            var c = this;
6274
            if (a.showInList && void 0 !== a.title) {
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
6275
                var d = c.chart,
6276
                    f = document.createElement("li");
6277
                f.className = d.classNamePrefix + "-object-list-li";
6278
                var g = a.titleTr;
6279
                g || (g = a.title);
6280
                var g = document.createTextNode(g),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable g already seems to be declared on line 6278. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
6281
                    h = document.createElement("a");
6282
                h.className = d.classNamePrefix + "-object-list-a";
6283
                h.appendChild(g);
6284
                f.appendChild(h);
6285
                b.appendChild(f);
6286
                this.addObjects(a, f);
6287
                h.onmouseover = function() {
6288
                    c.chart.rollOverMapObject(a, !1)
6289
                };
6290
                h.onmouseout = function() {
6291
                    c.chart.rollOutMapObject(a)
6292
                };
6293
                h.onclick = function() {
6294
                    c.chart.clickMapObject(a)
6295
                }
6296
            }
6297
        }
6298
    })
6299
})();
6300