text: /**
   * jqPlot
   * Pure JavaScript plotting plugin using jQuery
   *
   * Version: 1.0.0b2_r1012
   *
   * Copyright (c) 2009-2011 Chris Leonello
   * jqPlot is currently available for use in all personal or commercial projects
   * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL
   * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can
   * choose the license that best suits your project and use it accordingly.
   *
   * Although not required, the author would appreciate an email letting him
   * know of any substantial use of jqPlot.  You can reach the author at:
   * chris at jqplot dot com or see http://www.jqplot.com/info.php .
   *
   * If you are feeling kind and generous, consider supporting the project by
   * making a donation at: http://www.jqplot.com/donate.php .
   *
   * sprintf functions contained in jqplot.sprintf.js by Ash Searle:
   *
   *     version 2007.04.27
   *     author Ash Searle
   *     http://hexmen.com/blog/2007/03/printf-sprintf/
   *     http://hexmen.com/js/sprintf.js
   *     The author (Ash Searle) has placed this code in the public domain:
   *     "This code is unrestricted: you are free to use it however you like."
   *
   * included jsDate library by Chris Leonello:
   *
   * Copyright (c) 2010-2011 Chris Leonello
   *
   * jsDate is currently available for use in all personal or commercial projects
   * under both the MIT and GPL version 2.0 licenses. This means that you can
   * choose the license that best suits your project and use it accordingly.
   *
   * jsDate borrows many concepts and ideas from the Date Instance
   * Methods by Ken Snyder along with some parts of Ken's actual code.
   *
   * Ken's origianl Date Instance Methods and copyright notice:
   *
   * Ken Snyder (ken d snyder at gmail dot com)
   * 2008-09-10
   * version 2.0.2 (http://kendsnyder.com/sandbox/date/)
   * Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/)
   *
   * jqplotToImage function based on Larry Siden's export-jqplot-to-png.js.
   * Larry has generously given permission to adapt his code for inclusion
   * into jqPlot.
   *
   * Larry's original code can be found here:
   *
   * https://github.com/lsiden/export-jqplot-to-png
   *
   *
   */
  (function (c) {
      c.jqplot.PointLabels = function (e) {
          this.show = c.jqplot.config.enablePlugins;
          this.location = "n";
          this.labelsFromSeries = false;
          this.seriesLabelIndex = null;
          this.labels = [];
          this._labels = [];
          this.stackedValue = false;
          this.ypadding = 6;
          this.xpadding = 6;
          this.escapeHTML = true;
          this.edgeTolerance = -5;
          this.formatter = c.jqplot.DefaultTickFormatter;
          this.formatString = "";
          this.hideZeros = false;
          this._elems = [];
          c.extend(true, this, e)
      };
      var a = ["nw", "n", "ne", "e", "se", "s", "sw", "w"];
      var d = {nw: 0, n: 1, ne: 2, e: 3, se: 4, s: 5, sw: 6, w: 7};
      var b = ["se", "s", "sw", "w", "nw", "n", "ne", "e"];
      c.jqplot.PointLabels.init = function (j, h, f, g, i) {
          var e = c.extend(true, {}, f, g);
          e.pointLabels = e.pointLabels || {};
          if (this.renderer.constructor === c.jqplot.BarRenderer && this.barDirection === "horizontal" && !e.pointLabels.location) {
              e.pointLabels.location = "e"
          }
          this.plugins.pointLabels = new c.jqplot.PointLabels(e.pointLabels);
          this.plugins.pointLabels.setLabels.call(this)
      };
      c.jqplot.PointLabels.prototype.setLabels = function () {
          var f = this.plugins.pointLabels;
          var h;
          if (f.seriesLabelIndex != null) {
              h = f.seriesLabelIndex
          } else {
              if (this.renderer.constructor === c.jqplot.BarRenderer && this.barDirection === "horizontal") {
                  h = 0
              } else {
                  h = (this._plotData.length === 0) ? 0 : this._plotData[0].length - 1
              }
          }
          f._labels = [];
          if (f.labels.length === 0 || f.labelsFromSeries) {
              if (f.stackedValue) {
                  if (this._plotData.length && this._plotData[0].length) {
                      for (var e = 0; e < this._plotData.length; e++) {
                          f._labels.push(this._plotData[e][h])
                      }
                  }
              } else {
                  var g = this._plotData;
                  if (this.renderer.constructor === c.jqplot.BarRenderer && this.waterfall) {
                      g = this._data
                  }
                  if (g.length && g[0].length) {
                      for (var e = 0; e < g.length; e++) {
                          f._labels.push(g[e][h])
                      }
                  }
                  g = null
              }
          } else {
              if (f.labels.length) {
                  f._labels = f.labels
              }
          }
      };
      c.jqplot.PointLabels.prototype.xOffset = function (f, e, g) {
          e = e || this.location;
          g = g || this.xpadding;
          var h;
          switch (e) {
              case"nw":
                  h = -f.outerWidth(true) - this.xpadding;
                  break;
              case"n":
                  h = -f.outerWidth(true) / 2;
                  break;
              case"ne":
                  h = this.xpadding;
                  break;
              case"e":
                  h = this.xpadding;
                  break;
              case"se":
                  h = this.xpadding;
                  break;
              case"s":
                  h = -f.outerWidth(true) / 2;
                  break;
              case"sw":
                  h = -f.outerWidth(true) - this.xpadding;
                  break;
              case"w":
                  h = -f.outerWidth(true) - this.xpadding;
                  break;
              default:
                  h = -f.outerWidth(true) - this.xpadding;
                  break
          }
          return h
      };
      c.jqplot.PointLabels.prototype.yOffset = function (f, e, g) {
          e = e || this.location;
          g = g || this.xpadding;
          var h;
          switch (e) {
              case"nw":
                  h = -f.outerHeight(true) - this.ypadding;
                  break;
              case"n":
                  h = -f.outerHeight(true) - this.ypadding;
                  break;
              case"ne":
                  h = -f.outerHeight(true) - this.ypadding;
                  break;
              case"e":
                  h = -f.outerHeight(true) / 2;
                  break;
              case"se":
                  h = this.ypadding;
                  break;
              case"s":
                  h = this.ypadding;
                  break;
              case"sw":
                  h = this.ypadding;
                  break;
              case"w":
                  h = -f.outerHeight(true) / 2;
                  break;
              default:
                  h = -f.outerHeight(true) - this.ypadding;
                  break
          }
          return h
      };
      c.jqplot.PointLabels.draw = function (x, j, v) {
          var t = this.plugins.pointLabels;
          t.setLabels.call(this);
          for (var w = 0; w < t._elems.length; w++) {
              t._elems[w].emptyForce()
          }
          t._elems.splice(0, t._elems.length);
          if (t.show) {
              var r = "_" + this._stackAxis + "axis";
              if (!t.formatString) {
                  t.formatString = this[r]._ticks[0].formatString;
                  t.formatter = this[r]._ticks[0].formatter
              }
              var D = this._plotData;
              var A = this._xaxis;
              var q = this._yaxis;
              var z, f;
              for (var w = 0, u = t._labels.length; w < u; w++) {
                  var o = t._labels[w];
                  if (t.hideZeros && parseInt(t._labels[w], 10) == 0) {
                      o = ""
                  }
                  if (o != null) {
                      o = t.formatter(t.formatString, o)
                  }
                  f = document.createElement("div");
                  t._elems[w] = c(f);
                  z = t._elems[w];
                  z.addClass("jqplot-point-label jqplot-series-" + this.index + " jqplot-point-" + w);
                  z.css("position", "absolute");
                  z.insertAfter(x.canvas);
                  if (t.escapeHTML) {
                      z.text(o)
                  } else {
                      z.html(o)
                  }
                  var g = t.location;
                  if ((this.fillToZero && D[w][1] < 0) || (this.fillToZero && this._type === "bar" && this.barDirection === "horizontal" && D[w][0] < 0) || (this.waterfall && parseInt(o, 10)) < 0) {
                      g = b[d[g]]
                  }
                  var n = A.u2p(D[w][0]) + t.xOffset(z, g);
                  var h = q.u2p(D[w][1]) + t.yOffset(z, g);
                  if (this.renderer.constructor == c.jqplot.BarRenderer) {
                      if (this.barDirection == "vertical") {
                          n += this._barNudge
                      } else {
                          h -= this._barNudge
                      }
                  }
                  z.css("left", n);
                  z.css("top", h);
                  var k = n + z.width();
                  var s = h + z.height();
                  var C = t.edgeTolerance;
                  var e = c(x.canvas).position().left;
                  var y = c(x.canvas).position().top;
                  var B = x.canvas.width + e;
                  var m = x.canvas.height + y;
                  if (n - C < e || h - C < y || k + C > B || s + C > m) {
                      z.remove()
                  }
                  z = null;
                  f = null
              }
          }
      };
      c.jqplot.postSeriesInitHooks.push(c.jqplot.PointLabels.init);
      c.jqplot.postDrawSeriesHooks.push(c.jqplot.PointLabels.draw)
  })(jQuery);
  