Вход Регистрация
Файл: templates/backend/default/assets/plugins/jquery-ricksaw-chart/js/Rickshaw.Class.js
Строк: 250
<?php
/* Adapted from https://github.com/Jakobo/PTClass */

/*
Copyright (c) 2005-2010 Sam Stephenson

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
/* Based on Alex Arnell's inheritance implementation. */
/** section: Language
 * class Class
 *
 *  Manages Prototype's class-based OOP system.
 *
 *  Refer to Prototype's web site for a [tutorial on classes and
 *  inheritance](http://prototypejs.org/learn/class-inheritance).
**/
(function(globalContext) {
/* ------------------------------------ */
/* Import from object.js                */
/* ------------------------------------ */
var _toString Object.prototype.toString,
    
NULL_TYPE 'Null',
    
UNDEFINED_TYPE 'Undefined',
    
BOOLEAN_TYPE 'Boolean',
    
NUMBER_TYPE 'Number',
    
STRING_TYPE 'String',
    
OBJECT_TYPE 'Object',
    
FUNCTION_CLASS '[object Function]';
function 
isFunction(object) {
  return 
_toString.call(object) === FUNCTION_CLASS;
}
function 
extend(destinationsource) {
  for (var 
property in source) if (source.hasOwnProperty(property)) // modify protect primitive slaughter
    
destination[property] = source[property];
  return 
destination;
}
function 
keys(object) {
  if (
Type(object) !== OBJECT_TYPE) { throw new TypeError(); }
  var 
results = [];
  for (var 
property in object) {
    if (
object.hasOwnProperty(property)) {
      
results.push(property);
    }
  }
  return 
results;
}
function 
Type(o) {
  switch(
o) {
    case 
null: return NULL_TYPE;
    case (
void 0): return UNDEFINED_TYPE;
  }
  var 
type typeof o;
  switch(
type) {
    case 
'boolean': return BOOLEAN_TYPE;
    case 
'number':  return NUMBER_TYPE;
    case 
'string':  return STRING_TYPE;
  }
  return 
OBJECT_TYPE;
}
function 
isUndefined(object) {
  return 
typeof object === "undefined";
}
/* ------------------------------------ */
/* Import from Function.js              */
/* ------------------------------------ */
var slice = Array.prototype.slice;
function 
argumentNames(fn) {
  var 
names fn.toString().match(/^[s(]*function[^(]*(([^)]*))/)[1]
    .
replace(///.*?[rn]|/*(?:.|[rn])*?*//g, '')
    
.replace(/s+/g'').split(',');
  return 
names.length == && !names[0] ? [] : names;
}
function 
wrap(fnwrapper) {
  var 
__method fn;
  return function() {
    var 
update([bind(__methodthis)], arguments);
    return 
wrapper.apply(thisa);
  }
}
function 
update(array, args) {
  var 
arrayLength = array.lengthlength args.length;
  while (
length--) array[arrayLength length] = args[length];
  return array;
}
function 
merge(array, args) {
  array = 
slice.call(array, 0);
  return 
update(array, args);
}
function 
bind(fncontext) {
  if (
arguments.length && isUndefined(arguments[0])) return this;
  var 
__method fnargs slice.call(arguments2);
  return function() {
    var 
merge(argsarguments);
    return 
__method.apply(contexta);
  }
}

/* ------------------------------------ */
/* Import from Prototype.js             */
/* ------------------------------------ */
var emptyFunction = function(){};

var Class = (function() {
  
  
// Some versions of JScript fail to enumerate over properties, names of which 
  // correspond to non-enumerable properties in the prototype chain
  
var IS_DONTENUM_BUGGY = (function(){
    for (var 
p in toString}) {
      
// check actual property name, so that it works with augmented Object.prototype
      
if (=== 'toString') return false;
    }
    return 
true;
  })();
  
  function 
subclass() {};
  function 
create() {
    var 
parent nullproperties = [].slice.apply(arguments);
    if (
isFunction(properties[0]))
      
parent properties.shift();

    function 
klass() {
      
this.initialize.apply(thisarguments);
    }

    
extend(klass, Class.Methods);
    
klass.superclass parent;
    
klass.subclasses = [];

    if (
parent) {
      
subclass.prototype parent.prototype;
      
klass.prototype = new subclass;
      try { 
parent.subclasses.push(klass) } catch(e) {}
    }

    for (var 
0length properties.lengthlengthi++)
      
klass.addMethods(properties[i]);

    if (!
klass.prototype.initialize)
      
klass.prototype.initialize emptyFunction;

    
klass.prototype.constructor klass;
    return 
klass;
  }

  function 
addMethods(source) {
    var 
ancestor   this.superclass && this.superclass.prototype,
        
properties keys(source);

    
// IE6 doesn't enumerate `toString` and `valueOf` (among other built-in `Object.prototype`) properties,
    // Force copy if they're not Object.prototype ones.
    // Do not copy other Object.prototype.* for performance reasons
    
if (IS_DONTENUM_BUGGY) {
      if (
source.toString != Object.prototype.toString)
        
properties.push("toString");
      if (
source.valueOf != Object.prototype.valueOf)
        
properties.push("valueOf");
    }

    for (var 
0length properties.lengthlengthi++) {
      var 
property properties[i], value source[property];
      if (
ancestor && isFunction(value) &&
          
argumentNames(value)[0] == "$super") {
        var 
method value;
        
value wrap((function(m) {
          return function() { return 
ancestor[m].apply(thisarguments); };
        })(
property), method);

        
value.valueOf bind(method.valueOfmethod);
        
value.toString bind(method.toStringmethod);
      }
      
this.prototype[property] = value;
    }

    return 
this;
  }

  return {
    
createcreate,
    
Methods: {
      
addMethodsaddMethods
    
}
  };
})();

if (
globalContext.exports) {
  
globalContext.exports.Class = Class;
}
else {
  
globalContext.Class = Class;
}
})(
Rickshaw);
?>
Онлайн: 0
Реклама