--- /dev/null
+//<script type="text/javascript">
+
+/**
+ * Similar to Prototype / jQuery API
+ * implements standard object/class constructor tools
+ *
+ *
+ */
+
+//usage:
+//imports['Object.js'].load(Object);
+
+
+if (imports) {
+ load = false; // declare global for gnome langs.
+}
+(function() {
+
+
+ object = {
+ /**
+ * Copies all the properties of config to obj.
+ *
+ * Pretty much the same as JQuery/Prototype..
+ * @param {Object} obj The receiver of the properties
+ * @param {Object} config The source of the properties
+ * @param {Object} defaults A different object that will also be applied for default values
+ * @return {Object} returns obj
+ * @member Object extend
+ */
+
+
+ extend : function(o, c, defaults){
+ if(defaults){
+ // no "this" reference for friendly out of scope calls
+ Object.extend(o, defaults);
+ }
+ if(o && c && typeof c == 'object'){
+ for(var p in c){
+ o[p] = c[p];
+ }
+ }
+ return o;
+ },
+
+
+ /**
+ * Copies all the properties of config to obj, if the do not exist.
+ * @param {Object} obj The receiver of the properties
+ * @param {Object} config The source of the properties
+ * @return {Object} returns obj
+ * @member Object extendIf
+ */
+
+
+ extendIf : function(o, c){
+
+ if(!o || !c || typeof c != 'object'){
+ return o;
+ }
+ for(var p in c){
+ if (typeof(o[p]) != 'undefined') {
+ continue;
+ }
+ o[p] = c[p];
+ }
+ return o;
+ },
+
+
+ /**
+ * Extends one class with another class and optionally overrides members with the passed literal. This class
+ * also adds the function "override()" to the class that can be used to override
+ * members on an instance.
+ *
+ * usage:
+ * MyObject = Object.define(
+ * function(...) {
+ * ....
+ * },
+ * parentClass, // or Object
+ * {
+ * ... methods and properties.
+ * }
+ * });
+ * @param {Function} constructor The class inheriting the functionality
+ * @param {Object} superclass The class being extended
+ * @param {Object} overrides (optional) A literal with members
+ * @return {Function} constructor (eg. class
+ * @method define
+ */
+ define : function(){
+ // inline overrides
+ var io = function(o){
+ for(var m in o){
+ this[m] = o[m];
+ }
+ };
+ return function(sb, sp, overrides) {
+ if (typeof(sp) == 'undefined') {
+ // error condition - try and dump..
+ throw "Missing superclass: when applying: " + sb
+ }
+
+ var F = function(){}, sbp, spp = sp.prototype;
+ F.prototype = spp;
+ sbp = sb.prototype = new F();
+ sbp.constructor=sb;
+ sb.superclass=spp;
+
+ // extends Object.
+ if(spp.constructor == Object.prototype.constructor){
+ spp.constructor=sp;
+ }
+
+ sb.override = function(o){
+ Object.extend(sb.prototype, o);
+ };
+ sbp.override = io;
+ Object.extend(sb.prototype, overrides);
+ return sb;
+ };
+ }(),
+
+
+ /**
+ * returns a list of keys of the object.
+ * @param {Object} obj object to inspect
+ * @return {Array} returns list of kyes
+ * @member Object keys
+ */
+ keys : function(o)
+ {
+ var ret = [];
+ for(var i in o) {
+ ret.push[i];
+ }
+ return ret;
+ }
+
+
+ };
+
+
+ if (imports) {
+ load = function(ar) {
+ Object = ar;
+ imports.lang.copyPropertiesNoOverwrite( object,ar);
+
+ };
+ } else {
+ // non imports version.
+
+ for(i in object) {
+ if (!Object[i]) {
+ Object[i] = object[i];
+ }
+ }
+ }
+})();
\ No newline at end of file