(function($) {
   $.dimensions = {
      version : '1.2'}; $.each(['Height', 'Width'], function(i, name) {
      $.fn['inner' + name] = function() {
         if(!this[0])return; var torl = name == 'Height' ? 'Top':'Left', borr = name == 'Height' ? 'Bottom':'Right'; return this.is(':visible') ? this[0]['client' + name] : num(this, name.toLowerCase()) + num(this, 'padding' + torl) + num(this, 'padding' + borr); }; $.fn['outer' + name] = function(options) {
         if(!this[0])return; var torl = name == 'Height' ? 'Top':'Left', borr = name == 'Height' ? 'Bottom':'Right'; options = $.extend( {
            margin : false}
         , options || {
            }
         ); var val = this.is(':visible') ? this[0]['offset' + name] : num(this, name.toLowerCase()) + num(this, 'border' + torl + 'Width') + num(this, 'border' + borr + 'Width') + num(this, 'padding' + torl) + num(this, 'padding' + borr); return val + (options.margin ? (num(this, 'margin' + torl) + num(this, 'margin' + borr)) : 0); }; }
   ); $.each(['Left', 'Top'], function(i, name) {
      $.fn['scroll' + name] = function(val) {
         if(!this[0])return; return val != undefined ? this.each(function() {
            this == window || this == document ? window.scrollTo(name == 'Left' ? val : $(window)['scrollLeft'](), name == 'Top' ? val : $(window)['scrollTop']()) : this['scroll' + name] = val; }
         ) : this[0] == window || this[0] == document ? self[(name == 'Left' ? 'pageXOffset':'pageYOffset')] || $.boxModel && document.documentElement['scroll' + name] || document.body['scroll' + name] : this[0]['scroll' + name]; }; }
   ); $.fn.extend( {
      position : function() {
         var left = 0, top = 0, elem = this[0], offset, parentOffset, offsetParent, results; if(elem) {
            offsetParent = this.offsetParent(); offset = this.offset(); parentOffset = offsetParent.offset(); offset.top -= num(elem, 'marginTop'); offset.left -= num(elem, 'marginLeft'); parentOffset.top += num(offsetParent, 'borderTopWidth'); parentOffset.left += num(offsetParent, 'borderLeftWidth'); results = {
               top : offset.top - parentOffset.top, left : offset.left - parentOffset.left}; }
         return results; }
      , offsetParent : function() {
         var offsetParent = this[0].offsetParent; while(offsetParent && (!/^body|html$/i.test(offsetParent.tagName)&&$.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return $(offsetParent);}});function num(el,prop){return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;};})(jQuery);