admin
2020-05-06 24a8d17e007545f7426c48352109aa1a9c6587ee
fanli/src/main/webapp/admin/new/js/third-party/highcharts/adapters/standalone-framework.src.js
@@ -1,583 +1,583 @@
/**
 * @license Highcharts JS v3.0.6 (2013-10-04)
 *
 * Standalone Highcharts Framework
 *
 * License: MIT License
 */
/*global Highcharts */
var HighchartsAdapter = (function () {
var UNDEFINED,
   doc = document,
   emptyArray = [],
   timers = [],
   timerId,
   Fx;
Math.easeInOutSine = function (t, b, c, d) {
   return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
};
/**
 * Extend given object with custom events
 */
function augment(obj) {
   function removeOneEvent(el, type, fn) {
      el.removeEventListener(type, fn, false);
   }
   function IERemoveOneEvent(el, type, fn) {
      fn = el.HCProxiedMethods[fn.toString()];
      el.detachEvent('on' + type, fn);
   }
   function removeAllEvents(el, type) {
      var events = el.HCEvents,
         remove,
         types,
         len,
         n;
      if (el.removeEventListener) {
         remove = removeOneEvent;
      } else if (el.attachEvent) {
         remove = IERemoveOneEvent;
      } else {
         return; // break on non-DOM events
      }
      if (type) {
         types = {};
         types[type] = true;
      } else {
         types = events;
      }
      for (n in types) {
         if (events[n]) {
            len = events[n].length;
            while (len--) {
               remove(el, n, events[n][len]);
            }
         }
      }
   }
   if (!obj.HCExtended) {
      Highcharts.extend(obj, {
         HCExtended: true,
         HCEvents: {},
         bind: function (name, fn) {
            var el = this,
               events = this.HCEvents,
               wrappedFn;
            // handle DOM events in modern browsers
            if (el.addEventListener) {
               el.addEventListener(name, fn, false);
            // handle old IE implementation
            } else if (el.attachEvent) {
               wrappedFn = function (e) {
                  fn.call(el, e);
               };
               if (!el.HCProxiedMethods) {
                  el.HCProxiedMethods = {};
               }
               // link wrapped fn with original fn, so we can get this in removeEvent
               el.HCProxiedMethods[fn.toString()] = wrappedFn;
               el.attachEvent('on' + name, wrappedFn);
            }
            if (events[name] === UNDEFINED) {
               events[name] = [];
            }
            events[name].push(fn);
         },
         unbind: function (name, fn) {
            var events,
               index;
            if (name) {
               events = this.HCEvents[name] || [];
               if (fn) {
                  index = HighchartsAdapter.inArray(fn, events);
                  if (index > -1) {
                     events.splice(index, 1);
                     this.HCEvents[name] = events;
                  }
                  if (this.removeEventListener) {
                     removeOneEvent(this, name, fn);
                  } else if (this.attachEvent) {
                     IERemoveOneEvent(this, name, fn);
                  }
               } else {
                  removeAllEvents(this, name);
                  this.HCEvents[name] = [];
               }
            } else {
               removeAllEvents(this);
               this.HCEvents = {};
            }
         },
         trigger: function (name, args) {
            var events = this.HCEvents[name] || [],
               target = this,
               len = events.length,
               i,
               preventDefault,
               fn;
            // Attach a simple preventDefault function to skip default handler if called
            preventDefault = function () {
               args.defaultPrevented = true;
            };
            for (i = 0; i < len; i++) {
               fn = events[i];
               // args is never null here
               if (args.stopped) {
                  return;
               }
               args.preventDefault = preventDefault;
               args.target = target;
               args.type = name; // #2297
               // If the event handler return false, prevent the default handler from executing
               if (fn.call(this, args) === false) {
                  args.preventDefault();
               }
            }
         }
      });
   }
   return obj;
}
return {
   /**
    * Initialize the adapter. This is run once as Highcharts is first run.
    */
   init: function (pathAnim) {
      /**
       * Compatibility section to add support for legacy IE. This can be removed if old IE
       * support is not needed.
       */
      if (!doc.defaultView) {
         this._getStyle = function (el, prop) {
            var val;
            if (el.style[prop]) {
               return el.style[prop];
            } else {
               if (prop === 'opacity') {
                  prop = 'filter';
               }
               /*jslint unparam: true*/
               val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b) { return b.toUpperCase(); })];
               if (prop === 'filter') {
                  val = val.replace(
                     /alpha\(opacity=([0-9]+)\)/,
                     function (a, b) {
                        return b / 100;
                     }
                  );
               }
               /*jslint unparam: false*/
               return val === '' ? 1 : val;
            }
         };
         this.adapterRun = function (elem, method) {
            var alias = { width: 'clientWidth', height: 'clientHeight' }[method];
            if (alias) {
               elem.style.zoom = 1;
               return elem[alias] - 2 * parseInt(HighchartsAdapter._getStyle(elem, 'padding'), 10);
            }
         };
      }
      if (!Array.prototype.forEach) {
         this.each = function (arr, fn) { // legacy
            var i = 0,
               len = arr.length;
            for (; i < len; i++) {
               if (fn.call(arr[i], arr[i], i, arr) === false) {
                  return i;
               }
            }
         };
      }
      if (!Array.prototype.indexOf) {
         this.inArray = function (item, arr) {
            var len,
               i = 0;
            if (arr) {
               len = arr.length;
               for (; i < len; i++) {
                  if (arr[i] === item) {
                     return i;
                  }
               }
            }
            return -1;
         };
      }
      if (!Array.prototype.filter) {
         this.grep = function (elements, callback) {
            var ret = [],
               i = 0,
               length = elements.length;
            for (; i < length; i++) {
               if (!!callback(elements[i], i)) {
                  ret.push(elements[i]);
               }
            }
            return ret;
         };
      }
      //--- End compatibility section ---
      /**
       * Start of animation specific code
       */
      Fx = function (elem, options, prop) {
         this.options = options;
         this.elem = elem;
         this.prop = prop;
      };
      Fx.prototype = {
         update: function () {
            var styles,
               paths = this.paths,
               elem = this.elem,
               elemelem = elem.element; // if destroyed, it is null
            // Animating a path definition on SVGElement
            if (paths && elemelem) {
               elem.attr('d', pathAnim.step(paths[0], paths[1], this.now, this.toD));
            // Other animations on SVGElement
            } else if (elem.attr) {
               if (elemelem) {
                  elem.attr(this.prop, this.now);
               }
            // HTML styles
            } else {
               styles = {};
               styles[elem] = this.now + this.unit;
               Highcharts.css(elem, styles);
            }
            if (this.options.step) {
               this.options.step.call(this.elem, this.now, this);
            }
         },
         custom: function (from, to, unit) {
            var self = this,
               t = function (gotoEnd) {
                  return self.step(gotoEnd);
               },
               i;
            this.startTime = +new Date();
            this.start = from;
            this.end = to;
            this.unit = unit;
            this.now = this.start;
            this.pos = this.state = 0;
            t.elem = this.elem;
            if (t() && timers.push(t) === 1) {
               timerId = setInterval(function () {
                  for (i = 0; i < timers.length; i++) {
                     if (!timers[i]()) {
                        timers.splice(i--, 1);
                     }
                  }
                  if (!timers.length) {
                     clearInterval(timerId);
                  }
               }, 13);
            }
         },
         step: function (gotoEnd) {
            var t = +new Date(),
               ret,
               done,
               options = this.options,
               i;
            if (this.elem.stopAnimation) {
               ret = false;
            } else if (gotoEnd || t >= options.duration + this.startTime) {
               this.now = this.end;
               this.pos = this.state = 1;
               this.update();
               this.options.curAnim[this.prop] = true;
               done = true;
               for (i in options.curAnim) {
                  if (options.curAnim[i] !== true) {
                     done = false;
                  }
               }
               if (done) {
                  if (options.complete) {
                     options.complete.call(this.elem);
                  }
               }
               ret = false;
            } else {
               var n = t - this.startTime;
               this.state = n / options.duration;
               this.pos = options.easing(n, 0, 1, options.duration);
               this.now = this.start + ((this.end - this.start) * this.pos);
               this.update();
               ret = true;
            }
            return ret;
         }
      };
      /**
       * The adapter animate method
       */
      this.animate = function (el, prop, opt) {
         var start,
            unit = '',
            end,
            fx,
            args,
            name;
         el.stopAnimation = false; // ready for new
         if (typeof opt !== 'object' || opt === null) {
            args = arguments;
            opt = {
               duration: args[2],
               easing: args[3],
               complete: args[4]
            };
         }
         if (typeof opt.duration !== 'number') {
            opt.duration = 400;
         }
         opt.easing = Math[opt.easing] || Math.easeInOutSine;
         opt.curAnim = Highcharts.extend({}, prop);
         for (name in prop) {
            fx = new Fx(el, opt, name);
            end = null;
            if (name === 'd') {
               fx.paths = pathAnim.init(
                  el,
                  el.d,
                  prop.d
               );
               fx.toD = prop.d;
               start = 0;
               end = 1;
            } else if (el.attr) {
               start = el.attr(name);
            } else {
               start = parseFloat(HighchartsAdapter._getStyle(el, name)) || 0;
               if (name !== 'opacity') {
                  unit = 'px';
               }
            }
            if (!end) {
               end = parseFloat(prop[name]);
            }
            fx.custom(start, end, unit);
         }
      };
   },
   /**
    * Internal method to return CSS value for given element and property
    */
   _getStyle: function (el, prop) {
      return window.getComputedStyle(el).getPropertyValue(prop);
   },
   /**
    * Downloads a script and executes a callback when done.
    * @param {String} scriptLocation
    * @param {Function} callback
    */
   getScript: function (scriptLocation, callback) {
      // We cannot assume that Assets class from mootools-more is available so instead insert a script tag to download script.
      var head = doc.getElementsByTagName('head')[0],
         script = doc.createElement('script');
      script.type = 'text/javascript';
      script.src = scriptLocation;
      script.onload = callback;
      head.appendChild(script);
   },
   /**
    * Return the index of an item in an array, or -1 if not found
    */
   inArray: function (item, arr) {
      return arr.indexOf ? arr.indexOf(item) : emptyArray.indexOf.call(arr, item);
   },
   /**
    * A direct link to adapter methods
    */
   adapterRun: function (elem, method) {
      return parseInt(HighchartsAdapter._getStyle(elem, method), 10);
   },
   /**
    * Filter an array
    */
   grep: function (elements, callback) {
      return emptyArray.filter.call(elements, callback);
   },
   /**
    * Map an array
    */
   map: function (arr, fn) {
      var results = [], i = 0, len = arr.length;
      for (; i < len; i++) {
         results[i] = fn.call(arr[i], arr[i], i, arr);
      }
      return results;
   },
   offset: function (el) {
      var left = 0,
         top = 0;
      while (el) {
         left += el.offsetLeft;
         top += el.offsetTop;
         el = el.offsetParent;
      }
      return {
         left: left,
         top: top
      };
   },
   /**
    * Add an event listener
    */
   addEvent: function (el, type, fn) {
      augment(el).bind(type, fn);
   },
   /**
    * Remove event added with addEvent
    */
   removeEvent: function (el, type, fn) {
      augment(el).unbind(type, fn);
   },
   /**
    * Fire an event on a custom object
    */
   fireEvent: function (el, type, eventArguments, defaultFunction) {
      var e;
      if (doc.createEvent && (el.dispatchEvent || el.fireEvent)) {
         e = doc.createEvent('Events');
         e.initEvent(type, true, true);
         e.target = el;
         Highcharts.extend(e, eventArguments);
         if (el.dispatchEvent) {
            el.dispatchEvent(e);
         } else {
            el.fireEvent(type, e);
         }
      } else if (el.HCExtended === true) {
         eventArguments = eventArguments || {};
         el.trigger(type, eventArguments);
      }
      if (eventArguments && eventArguments.defaultPrevented) {
         defaultFunction = null;
      }
      if (defaultFunction) {
         defaultFunction(eventArguments);
      }
   },
   washMouseEvent: function (e) {
      return e;
   },
   /**
    * Stop running animation
    */
   stop: function (el) {
      el.stopAnimation = true;
   },
   /**
    * Utility for iterating over an array. Parameters are reversed compared to jQuery.
    * @param {Array} arr
    * @param {Function} fn
    */
   each: function (arr, fn) { // modern browsers
      return Array.prototype.forEach.call(arr, fn);
   }
};
}());
/**
 * @license Highcharts JS v3.0.6 (2013-10-04)
 *
 * Standalone Highcharts Framework
 *
 * License: MIT License
 */
/*global Highcharts */
var HighchartsAdapter = (function () {
var UNDEFINED,
   doc = document,
   emptyArray = [],
   timers = [],
   timerId,
   Fx;
Math.easeInOutSine = function (t, b, c, d) {
   return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
};
/**
 * Extend given object with custom events
 */
function augment(obj) {
   function removeOneEvent(el, type, fn) {
      el.removeEventListener(type, fn, false);
   }
   function IERemoveOneEvent(el, type, fn) {
      fn = el.HCProxiedMethods[fn.toString()];
      el.detachEvent('on' + type, fn);
   }
   function removeAllEvents(el, type) {
      var events = el.HCEvents,
         remove,
         types,
         len,
         n;
      if (el.removeEventListener) {
         remove = removeOneEvent;
      } else if (el.attachEvent) {
         remove = IERemoveOneEvent;
      } else {
         return; // break on non-DOM events
      }
      if (type) {
         types = {};
         types[type] = true;
      } else {
         types = events;
      }
      for (n in types) {
         if (events[n]) {
            len = events[n].length;
            while (len--) {
               remove(el, n, events[n][len]);
            }
         }
      }
   }
   if (!obj.HCExtended) {
      Highcharts.extend(obj, {
         HCExtended: true,
         HCEvents: {},
         bind: function (name, fn) {
            var el = this,
               events = this.HCEvents,
               wrappedFn;
            // handle DOM events in modern browsers
            if (el.addEventListener) {
               el.addEventListener(name, fn, false);
            // handle old IE implementation
            } else if (el.attachEvent) {
               wrappedFn = function (e) {
                  fn.call(el, e);
               };
               if (!el.HCProxiedMethods) {
                  el.HCProxiedMethods = {};
               }
               // link wrapped fn with original fn, so we can get this in removeEvent
               el.HCProxiedMethods[fn.toString()] = wrappedFn;
               el.attachEvent('on' + name, wrappedFn);
            }
            if (events[name] === UNDEFINED) {
               events[name] = [];
            }
            events[name].push(fn);
         },
         unbind: function (name, fn) {
            var events,
               index;
            if (name) {
               events = this.HCEvents[name] || [];
               if (fn) {
                  index = HighchartsAdapter.inArray(fn, events);
                  if (index > -1) {
                     events.splice(index, 1);
                     this.HCEvents[name] = events;
                  }
                  if (this.removeEventListener) {
                     removeOneEvent(this, name, fn);
                  } else if (this.attachEvent) {
                     IERemoveOneEvent(this, name, fn);
                  }
               } else {
                  removeAllEvents(this, name);
                  this.HCEvents[name] = [];
               }
            } else {
               removeAllEvents(this);
               this.HCEvents = {};
            }
         },
         trigger: function (name, args) {
            var events = this.HCEvents[name] || [],
               target = this,
               len = events.length,
               i,
               preventDefault,
               fn;
            // Attach a simple preventDefault function to skip default handler if called
            preventDefault = function () {
               args.defaultPrevented = true;
            };
            for (i = 0; i < len; i++) {
               fn = events[i];
               // args is never null here
               if (args.stopped) {
                  return;
               }
               args.preventDefault = preventDefault;
               args.target = target;
               args.type = name; // #2297
               // If the event handler return false, prevent the default handler from executing
               if (fn.call(this, args) === false) {
                  args.preventDefault();
               }
            }
         }
      });
   }
   return obj;
}
return {
   /**
    * Initialize the adapter. This is run once as Highcharts is first run.
    */
   init: function (pathAnim) {
      /**
       * Compatibility section to add support for legacy IE. This can be removed if old IE
       * support is not needed.
       */
      if (!doc.defaultView) {
         this._getStyle = function (el, prop) {
            var val;
            if (el.style[prop]) {
               return el.style[prop];
            } else {
               if (prop === 'opacity') {
                  prop = 'filter';
               }
               /*jslint unparam: true*/
               val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b) { return b.toUpperCase(); })];
               if (prop === 'filter') {
                  val = val.replace(
                     /alpha\(opacity=([0-9]+)\)/,
                     function (a, b) {
                        return b / 100;
                     }
                  );
               }
               /*jslint unparam: false*/
               return val === '' ? 1 : val;
            }
         };
         this.adapterRun = function (elem, method) {
            var alias = { width: 'clientWidth', height: 'clientHeight' }[method];
            if (alias) {
               elem.style.zoom = 1;
               return elem[alias] - 2 * parseInt(HighchartsAdapter._getStyle(elem, 'padding'), 10);
            }
         };
      }
      if (!Array.prototype.forEach) {
         this.each = function (arr, fn) { // legacy
            var i = 0,
               len = arr.length;
            for (; i < len; i++) {
               if (fn.call(arr[i], arr[i], i, arr) === false) {
                  return i;
               }
            }
         };
      }
      if (!Array.prototype.indexOf) {
         this.inArray = function (item, arr) {
            var len,
               i = 0;
            if (arr) {
               len = arr.length;
               for (; i < len; i++) {
                  if (arr[i] === item) {
                     return i;
                  }
               }
            }
            return -1;
         };
      }
      if (!Array.prototype.filter) {
         this.grep = function (elements, callback) {
            var ret = [],
               i = 0,
               length = elements.length;
            for (; i < length; i++) {
               if (!!callback(elements[i], i)) {
                  ret.push(elements[i]);
               }
            }
            return ret;
         };
      }
      //--- End compatibility section ---
      /**
       * Start of animation specific code
       */
      Fx = function (elem, options, prop) {
         this.options = options;
         this.elem = elem;
         this.prop = prop;
      };
      Fx.prototype = {
         update: function () {
            var styles,
               paths = this.paths,
               elem = this.elem,
               elemelem = elem.element; // if destroyed, it is null
            // Animating a path definition on SVGElement
            if (paths && elemelem) {
               elem.attr('d', pathAnim.step(paths[0], paths[1], this.now, this.toD));
            // Other animations on SVGElement
            } else if (elem.attr) {
               if (elemelem) {
                  elem.attr(this.prop, this.now);
               }
            // HTML styles
            } else {
               styles = {};
               styles[elem] = this.now + this.unit;
               Highcharts.css(elem, styles);
            }
            if (this.options.step) {
               this.options.step.call(this.elem, this.now, this);
            }
         },
         custom: function (from, to, unit) {
            var self = this,
               t = function (gotoEnd) {
                  return self.step(gotoEnd);
               },
               i;
            this.startTime = +new Date();
            this.start = from;
            this.end = to;
            this.unit = unit;
            this.now = this.start;
            this.pos = this.state = 0;
            t.elem = this.elem;
            if (t() && timers.push(t) === 1) {
               timerId = setInterval(function () {
                  for (i = 0; i < timers.length; i++) {
                     if (!timers[i]()) {
                        timers.splice(i--, 1);
                     }
                  }
                  if (!timers.length) {
                     clearInterval(timerId);
                  }
               }, 13);
            }
         },
         step: function (gotoEnd) {
            var t = +new Date(),
               ret,
               done,
               options = this.options,
               i;
            if (this.elem.stopAnimation) {
               ret = false;
            } else if (gotoEnd || t >= options.duration + this.startTime) {
               this.now = this.end;
               this.pos = this.state = 1;
               this.update();
               this.options.curAnim[this.prop] = true;
               done = true;
               for (i in options.curAnim) {
                  if (options.curAnim[i] !== true) {
                     done = false;
                  }
               }
               if (done) {
                  if (options.complete) {
                     options.complete.call(this.elem);
                  }
               }
               ret = false;
            } else {
               var n = t - this.startTime;
               this.state = n / options.duration;
               this.pos = options.easing(n, 0, 1, options.duration);
               this.now = this.start + ((this.end - this.start) * this.pos);
               this.update();
               ret = true;
            }
            return ret;
         }
      };
      /**
       * The adapter animate method
       */
      this.animate = function (el, prop, opt) {
         var start,
            unit = '',
            end,
            fx,
            args,
            name;
         el.stopAnimation = false; // ready for new
         if (typeof opt !== 'object' || opt === null) {
            args = arguments;
            opt = {
               duration: args[2],
               easing: args[3],
               complete: args[4]
            };
         }
         if (typeof opt.duration !== 'number') {
            opt.duration = 400;
         }
         opt.easing = Math[opt.easing] || Math.easeInOutSine;
         opt.curAnim = Highcharts.extend({}, prop);
         for (name in prop) {
            fx = new Fx(el, opt, name);
            end = null;
            if (name === 'd') {
               fx.paths = pathAnim.init(
                  el,
                  el.d,
                  prop.d
               );
               fx.toD = prop.d;
               start = 0;
               end = 1;
            } else if (el.attr) {
               start = el.attr(name);
            } else {
               start = parseFloat(HighchartsAdapter._getStyle(el, name)) || 0;
               if (name !== 'opacity') {
                  unit = 'px';
               }
            }
            if (!end) {
               end = parseFloat(prop[name]);
            }
            fx.custom(start, end, unit);
         }
      };
   },
   /**
    * Internal method to return CSS value for given element and property
    */
   _getStyle: function (el, prop) {
      return window.getComputedStyle(el).getPropertyValue(prop);
   },
   /**
    * Downloads a script and executes a callback when done.
    * @param {String} scriptLocation
    * @param {Function} callback
    */
   getScript: function (scriptLocation, callback) {
      // We cannot assume that Assets class from mootools-more is available so instead insert a script tag to download script.
      var head = doc.getElementsByTagName('head')[0],
         script = doc.createElement('script');
      script.type = 'text/javascript';
      script.src = scriptLocation;
      script.onload = callback;
      head.appendChild(script);
   },
   /**
    * Return the index of an item in an array, or -1 if not found
    */
   inArray: function (item, arr) {
      return arr.indexOf ? arr.indexOf(item) : emptyArray.indexOf.call(arr, item);
   },
   /**
    * A direct link to adapter methods
    */
   adapterRun: function (elem, method) {
      return parseInt(HighchartsAdapter._getStyle(elem, method), 10);
   },
   /**
    * Filter an array
    */
   grep: function (elements, callback) {
      return emptyArray.filter.call(elements, callback);
   },
   /**
    * Map an array
    */
   map: function (arr, fn) {
      var results = [], i = 0, len = arr.length;
      for (; i < len; i++) {
         results[i] = fn.call(arr[i], arr[i], i, arr);
      }
      return results;
   },
   offset: function (el) {
      var left = 0,
         top = 0;
      while (el) {
         left += el.offsetLeft;
         top += el.offsetTop;
         el = el.offsetParent;
      }
      return {
         left: left,
         top: top
      };
   },
   /**
    * Add an event listener
    */
   addEvent: function (el, type, fn) {
      augment(el).bind(type, fn);
   },
   /**
    * Remove event added with addEvent
    */
   removeEvent: function (el, type, fn) {
      augment(el).unbind(type, fn);
   },
   /**
    * Fire an event on a custom object
    */
   fireEvent: function (el, type, eventArguments, defaultFunction) {
      var e;
      if (doc.createEvent && (el.dispatchEvent || el.fireEvent)) {
         e = doc.createEvent('Events');
         e.initEvent(type, true, true);
         e.target = el;
         Highcharts.extend(e, eventArguments);
         if (el.dispatchEvent) {
            el.dispatchEvent(e);
         } else {
            el.fireEvent(type, e);
         }
      } else if (el.HCExtended === true) {
         eventArguments = eventArguments || {};
         el.trigger(type, eventArguments);
      }
      if (eventArguments && eventArguments.defaultPrevented) {
         defaultFunction = null;
      }
      if (defaultFunction) {
         defaultFunction(eventArguments);
      }
   },
   washMouseEvent: function (e) {
      return e;
   },
   /**
    * Stop running animation
    */
   stop: function (el) {
      el.stopAnimation = true;
   },
   /**
    * Utility for iterating over an array. Parameters are reversed compared to jQuery.
    * @param {Array} arr
    * @param {Function} fn
    */
   each: function (arr, fn) { // modern browsers
      return Array.prototype.forEach.call(arr, fn);
   }
};
}());