(function () { "use strict"; /*global extender is, dateExtended*/ function defineExtended(extender) { var merge = (function merger() { function _merge(target, source) { var name, s; for (name in source) { if (source.hasOwnProperty(name)) { s = source[name]; if (!(name in target) || (target[name] !== s)) { target[name] = s; } } } return target; } return function merge(obj) { if (!obj) { obj = {}; } for (var i = 1, l = arguments.length; i < l; i++) { _merge(obj, arguments[i]); } return obj; // Object }; }()); function getExtended() { var loaded = {}; //getInitial instance; var extended = extender.define(); extended.expose({ register: function register(alias, extendWith) { if (!extendWith) { extendWith = alias; alias = null; } var type = typeof extendWith; if (alias) { extended[alias] = extendWith; } else if (extendWith && type === "function") { extended.extend(extendWith); } else if (type === "object") { extended.expose(extendWith); } else { throw new TypeError("extended.register must be called with an extender function"); } return extended; }, define: function () { return extender.define.apply(extender, arguments); } }); return extended; } function extended() { return getExtended(); } extended.define = function define() { return extender.define.apply(extender, arguments); }; return extended; } if ("undefined" !== typeof exports) { if ("undefined" !== typeof module && module.exports) { module.exports = defineExtended(require("extender")); } } else if ("function" === typeof define && define.amd) { define(["extender"], function (extender) { return defineExtended(extender); }); } else { this.extended = defineExtended(this.extender); } }).call(this);