/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-12-20 08:43:48 -0600 (Thu, 20 Dec 2007) $
 * $Rev: 4257 $
 *
 * Version: 1.2
 *
 * Requires: jQuery 1.2+
 */
(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);