/* Highcharts JS v4.1.3 (2015-02-27) Exporting module (c) 2010-2014 Torstein Honsi License: www.highcharts.com/license */ (function(g) { var z = g.Chart, s = g.addEvent, A = g.removeEvent, B = HighchartsAdapter.fireEvent, j = g.createElement, p = g.discardElement, u = g.css, l = g.merge, m = g.each, q = g.extend, E = g.splat, F = Math.max, k = document, C = window, G = g.isTouchDevice, H = g.Renderer.prototype.symbols, r = g .getOptions(), x; q(r.lang, { printChart : "Print chart", downloadPNG : "Download PNG image", downloadJPEG : "Download JPEG image", downloadPDF : "Download PDF document", downloadSVG : "Download SVG vector image", contextButtonTitle : "Chart context menu" }); r.navigation = { menuStyle : { border : "1px solid #A0A0A0", background : "#FFFFFF", padding : "5px 0" }, menuItemStyle : { padding : "0 10px", background : "none", color : "#303030", fontSize : G ? "14px" : "11px" }, menuItemHoverStyle : { background : "#4572A5", color : "#FFFFFF" }, buttonOptions : { symbolFill : "#E0E0E0", symbolSize : 14, symbolStroke : "#666", symbolStrokeWidth : 3, symbolX : 12.5, symbolY : 10.5, align : "right", buttonSpacing : 3, height : 22, theme : { fill : "white", stroke : "none" }, verticalAlign : "top", width : 24 } }; r.exporting = { type : "image/png", url : "http://export.highcharts.com/", buttons : { contextButton : { menuClassName : "highcharts-contextmenu", symbol : "menu", _titleKey : "contextButtonTitle", menuItems : [ { textKey : "printChart", onclick : function() { this.print() } }, { separator : !0 }, { textKey : "downloadPNG", onclick : function() { this.exportChart() } }, { textKey : "downloadJPEG", onclick : function() { this.exportChart({ type : "image/jpeg" }) } }, { textKey : "downloadPDF", onclick : function() { this.exportChart({ type : "application/pdf" }) } }, { textKey : "downloadSVG", onclick : function() { this.exportChart({ type : "image/svg+xml" }) } } ] } } }; g.post = function(b, a, e) { var c, b = j("form", l({ method : "post", action : b, enctype : "multipart/form-data" }, e), { display : "none" }, k.body); for (c in a) j("input", { type : "hidden", name : c, value : a[c] }, null, b); b.submit(); p(b) }; q( z.prototype, { sanitizeSVG : function(b) { return b .replace(/zIndex="[^"]+"/g, "") .replace(/isShadow="[^"]+"/g, "") .replace(/symbolName="[^"]+"/g, "") .replace(/jQuery[0-9]+="[^"]+"/g, "") .replace(/url\([^#]+#/g, "url(#") .replace(/.*?$/, "") .replace( /(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g, '$1="rgb($2)" $1-opacity="$3"').replace( /(text-shadow:)([^;"]+)([;"])/g, function(a, b, c, f) { c = c.replace(/\([^\)]+\)/g, function(a) { return a.replace(/,/g, "|") }); c = c.split(",")[0]; c = c .replace(/\([^\)]+\)/g, function(a) { return a.replace( /\|/g, ",") }); return b + c + f }).replace(/ /g, " ").replace( /­/g, "­").replace(//g, 'xlink:href="$1"/>').replace( /id=([^" >]+)/g, 'id="$1"').replace( /class=([^" >]+)/g, 'class="$1"').replace( / transform /g, " ").replace( /:(path|rect)/g, "$1").replace( /style="([^"]+)"/g, function(a) { return a.toLowerCase() }) }, getSVG : function(b) { var a = this, e, c, f, y, h, d = l(a.options, b); if (!k.createElementNS) k.createElementNS = function(a, b) { return k.createElement(b) }; c = j("div", null, { position : "absolute", top : "-9999em", width : a.chartWidth + "px", height : a.chartHeight + "px" }, k.body); f = a.renderTo.style.width; h = a.renderTo.style.height; f = d.exporting.sourceWidth || d.chart.width || /px$/.test(f) && parseInt(f, 10) || 600; h = d.exporting.sourceHeight || d.chart.height || /px$/.test(h) && parseInt(h, 10) || 400; q(d.chart, { animation : !1, renderTo : c, forExport : !0, width : f, height : h }); d.exporting.enabled = !1; delete d.data; d.series = []; m(a.series, function(a) { y = l(a.options, { animation : !1, enableMouseTracking : !1, showCheckbox : !1, visible : a.visible }); y.isInternal || d.series.push(y) }); b && m([ "xAxis", "yAxis" ], function(a) { m(E(b[a]), function(b, c) { d[a][c] = l(d[a][c], b) }) }); e = new g.Chart(d, a.callback); m( [ "xAxis", "yAxis" ], function(b) { m( a[b], function(a, c) { var d = e[b][c], f = a .getExtremes(), h = f.userMin, f = f.userMax; d && (h !== void 0 || f !== void 0) && d.setExtremes(h, f, !0, !1) }) }); f = e.container.innerHTML; d = null; e.destroy(); p(c); f = this.sanitizeSVG(f); return f = f.replace(/(url\(#highcharts-[0-9]+)"/g, "$1").replace(/"/g, "'") }, getSVGForExport : function(b, a) { var e = this.options.exporting; return this.getSVG(l({ chart : { borderRadius : 0 } }, e.chartOptions, a, { exporting : { sourceWidth : b && b.sourceWidth || e.sourceWidth, sourceHeight : b && b.sourceHeight || e.sourceHeight } })) }, exportChart : function(b, a) { var e = this.getSVGForExport(b, a), b = l( this.options.exporting, b); g.post(b.url, { filename : b.filename || "chart", type : b.type, width : b.width || 0, scale : b.scale || 2, svg : e }, b.formAttributes) }, print : function() { var b = this, a = b.container, e = [], c = a.parentNode, f = k.body, g = f.childNodes; if (!b.isPrinting) b.isPrinting = !0, B(b, "beforePrint"), m(g, function( a, b) { if (a.nodeType === 1) e[b] = a.style.display, a.style.display = "none" }), f.appendChild(a), C.focus(), C.print(), setTimeout( function() { c.appendChild(a); m(g, function(a, b) { if (a.nodeType === 1) a.style.display = e[b] }); b.isPrinting = !1; B(b, "afterPrint") }, 1E3) }, contextMenu : function(b, a, e, c, f, g, h) { var d = this, l = d.options.navigation, D = l.menuItemStyle, n = d.chartWidth, o = d.chartHeight, k = "cache-" + b, i = d[k], t = F(f, g), v, w, p, r = function(a) { d.pointer.inClass(a.target, b) || w() }; if (!i) d[k] = i = j("div", { className : b }, { position : "absolute", zIndex : 1E3, padding : t + "px" }, d.container), v = j("div", null, q({ MozBoxShadow : "3px 3px 10px #888", WebkitBoxShadow : "3px 3px 10px #888", boxShadow : "3px 3px 10px #888" }, l.menuStyle), i), w = function() { u(i, { display : "none" }); h && h.setState(0); d.openMenu = !1 }, s(i, "mouseleave", function() { p = setTimeout(w, 500) }), s(i, "mouseenter", function() { clearTimeout(p) }), s(document, "mouseup", r), s(d, "destroy", function() { A(document, "mouseup", r) }), m( a, function(a) { if (a) { var b = a.separator ? j("hr", null, null, v) : j( "div", { onmouseover : function() { u( this, l.menuItemHoverStyle) }, onmouseout : function() { u(this, D) }, onclick : function() { w(); a.onclick && a.onclick .apply( d, arguments) }, innerHTML : a.text || d.options.lang[a.textKey] }, q( { cursor : "pointer" }, D), v); d.exportDivElements.push(b) } }), d.exportDivElements.push(v, i), d.exportMenuWidth = i.offsetWidth, d.exportMenuHeight = i.offsetHeight; a = { display : "block" }; e + d.exportMenuWidth > n ? a.right = n - e - f - t + "px" : a.left = e - t + "px"; c + g + d.exportMenuHeight > o && h.alignOptions.verticalAlign !== "top" ? a.bottom = o - c - t + "px" : a.top = c + g - t + "px"; u(i, a); d.openMenu = !0 }, addButton : function(b) { var a = this, e = a.renderer, c = l( a.options.navigation.buttonOptions, b), f = c.onclick, k = c.menuItems, h, d, m = { stroke : c.symbolStroke, fill : c.symbolFill }, j = c.symbolSize || 12; if (!a.btnCount) a.btnCount = 0; if (!a.exportDivElements) a.exportDivElements = [], a.exportSVGElements = []; if (c.enabled !== !1) { var n = c.theme, o = n.states, p = o && o.hover, o = o && o.select, i; delete n.states; f ? i = function() { f.apply(a, arguments) } : k && (i = function() { a.contextMenu(d.menuClassName, k, d.translateX, d.translateY, d.width, d.height, d); d.setState(2) }); c.text && c.symbol ? n.paddingLeft = g.pick( n.paddingLeft, 25) : c.text || q(n, { width : c.width, height : c.height, padding : 0 }); d = e.button(c.text, 0, 0, i, n, p, o).attr({ title : a.options.lang[c._titleKey], "stroke-linecap" : "round" }); d.menuClassName = b.menuClassName || "highcharts-menu-" + a.btnCount++; c.symbol && (h = e.symbol(c.symbol, c.symbolX - j / 2, c.symbolY - j / 2, j, j).attr(q(m, { "stroke-width" : c.symbolStrokeWidth || 1, zIndex : 1 })).add(d)); d.add().align(q(c, { width : d.width, x : g.pick(c.x, x) }), !0, "spacingBox"); x += (d.width + c.buttonSpacing) * (c.align === "right" ? -1 : 1); a.exportSVGElements.push(d, h) } }, destroyExport : function(b) { var b = b.target, a, e; for (a = 0; a < b.exportSVGElements.length; a++) if (e = b.exportSVGElements[a]) e.onclick = e.ontouchstart = null, b.exportSVGElements[a] = e.destroy(); for (a = 0; a < b.exportDivElements.length; a++) e = b.exportDivElements[a], A(e, "mouseleave"), b.exportDivElements[a] = e.onmouseout = e.onmouseover = e.ontouchstart = e.onclick = null, p(e) } }); H.menu = function(b, a, e, c) { return [ "M", b, a + 2.5, "L", b + e, a + 2.5, "M", b, a + c / 2 + 0.5, "L", b + e, a + c / 2 + 0.5, "M", b, a + c - 1.5, "L", b + e, a + c - 1.5 ] }; z.prototype.callbacks.push(function(b) { var a, e = b.options.exporting, c = e.buttons; x = 0; if (e.enabled !== !1) { for (a in c) b.addButton(c[a]); s(b, "destroy", b.destroyExport) } }) })(Highcharts);