gyorgy@0: (function($) { gyorgy@0: gyorgy@0: // borrowed from jQuery (no deep, bad fake object detection) gyorgy@0: $.ender({extend: function() { gyorgy@0: var options, name, src, copy, gyorgy@0: target = arguments[0] || {}, gyorgy@0: i = 1, gyorgy@0: length = arguments.length; gyorgy@0: gyorgy@0: // Handle case when target is a string or something (possible in deep copy) gyorgy@0: if ( typeof target !== "object" && typeof target !== "function" ) { gyorgy@0: target = {}; gyorgy@0: } gyorgy@0: gyorgy@0: for ( ; i < length; i++ ) { gyorgy@0: // Only deal with non-null/undefined values gyorgy@0: if ( (options = arguments[ i ]) != null ) { gyorgy@0: // Extend the base object gyorgy@0: for ( name in options ) { gyorgy@0: src = target[ name ]; gyorgy@0: copy = options[ name ]; gyorgy@0: gyorgy@0: // Prevent never-ending loop gyorgy@0: if ( target === copy ) { gyorgy@0: continue; gyorgy@0: } gyorgy@0: gyorgy@0: if ( copy !== undefined ) { gyorgy@0: target[ name ] = copy; gyorgy@0: } gyorgy@0: } gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: // Return the modified object gyorgy@0: return target; gyorgy@0: }}); gyorgy@0: gyorgy@0: // outerWidth gyorgy@0: $.ender({outerWidth: function(margin) { gyorgy@0: var fp = parseFloat; gyorgy@0: return fp(this.width()) gyorgy@0: + (margin ? fp(this.css('margin-left')) + fp(this.css('margin-right')) : 0) gyorgy@0: + fp(this.css('padding-left'))+ fp(this.css('padding-right')) gyorgy@0: + fp(this.css('border-left-width')) + fp(this.css('border-right-width')) gyorgy@0: ; gyorgy@0: }}, true); gyorgy@0: gyorgy@0: })(ender);