| // Generated by CoffeeScript 1.6.3 | 
| var common; | 
|   | 
| module.exports = common = { | 
|   /* | 
|       Checks to see if o is an object, and it isn't an instance | 
|       of some class. | 
|   */ | 
|   | 
|   isBareObject: function(o) { | 
|     if ((o != null) && o.constructor === Object) { | 
|       return true; | 
|     } | 
|     return false; | 
|   }, | 
|   /* | 
|       Returns type of an object, including: | 
|       undefined, null, string, number, array, | 
|       arguments, element, textnode, whitespace, and object | 
|   */ | 
|   | 
|   typeOf: function(item) { | 
|     var _ref; | 
|     if (item === null) { | 
|       return 'null'; | 
|     } | 
|     if (typeof item !== 'object') { | 
|       return typeof item; | 
|     } | 
|     if (Array.isArray(item)) { | 
|       return 'array'; | 
|     } | 
|     if (item.nodeName) { | 
|       if (item.nodeType === 1) { | 
|         return 'element'; | 
|       } | 
|       if (item.nodeType === 3) { | 
|         return (_ref = /\S/.test(item.nodeValue)) != null ? _ref : { | 
|           'textnode': 'whitespace' | 
|         }; | 
|       } | 
|     } else if (typeof item.length === 'number') { | 
|       if (item.callee) { | 
|         return 'arguments'; | 
|       } | 
|     } | 
|     return typeof item; | 
|   }, | 
|   clone: function(item, includePrototype) { | 
|     if (includePrototype == null) { | 
|       includePrototype = false; | 
|     } | 
|     switch (common.typeOf(item)) { | 
|       case 'array': | 
|         return common._cloneArray(item, includePrototype); | 
|       case 'object': | 
|         return common._cloneObject(item, includePrototype); | 
|       default: | 
|         return item; | 
|     } | 
|   }, | 
|   /* | 
|       Deep clone of an object. | 
|       From MooTools | 
|   */ | 
|   | 
|   _cloneObject: function(o, includePrototype) { | 
|     var clone, key; | 
|     if (includePrototype == null) { | 
|       includePrototype = false; | 
|     } | 
|     if (common.isBareObject(o)) { | 
|       clone = {}; | 
|       for (key in o) { | 
|         clone[key] = common.clone(o[key], includePrototype); | 
|       } | 
|       return clone; | 
|     } else { | 
|       if (!includePrototype) { | 
|         return o; | 
|       } | 
|       if (o instanceof Function) { | 
|         return o; | 
|       } | 
|       clone = Object.create(o.constructor.prototype); | 
|       for (key in o) { | 
|         if (o.hasOwnProperty(key)) { | 
|           clone[key] = common.clone(o[key], includePrototype); | 
|         } | 
|       } | 
|       return clone; | 
|     } | 
|   }, | 
|   /* | 
|       Deep clone of an array. | 
|       From MooTools | 
|   */ | 
|   | 
|   _cloneArray: function(a, includePrototype) { | 
|     var clone, i; | 
|     if (includePrototype == null) { | 
|       includePrototype = false; | 
|     } | 
|     i = a.length; | 
|     clone = new Array(i); | 
|     while (i--) { | 
|       clone[i] = common.clone(a[i], includePrototype); | 
|     } | 
|     return clone; | 
|   } | 
| }; |