
(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);
