
(function($) {

	$.fn.swSidebarBox = function(settings) {
		var objElm = this;
		var pTimeout;
		var iScrollPosition = 0;

		settings = jQuery.extend({
			elmButton: 				'',
			iTop:	 				0,
			iLeft:	 				0,
			iScrollTimeout:	 		50,
			iExpandDuration:	 	500,
			bExpanded: 				false,
			bOnExpand:				false,
			bOnCollapse:			false
		}, settings);

		$(window).scroll(function() { doScroll(); })
		$(window).resize(function() { doScroll(); })

		$(settings.elmButton).click(function() {
			if(!settings.bExpanded) { doExpand(); }
			else { doCollapse(); }
		})


		function doExpand() {
			if(!settings.bOnExpand) {
				$(objElm).animate({ left:"0px" }, settings.iExpandDuration, 'linear', function() { settings.bOnExpand = false; settings.bExpanded = true; } );
				settings.bOnExpand = true;
			}
		}

		function doCollapse() {
			if(!settings.bOnCollapse) {
				$(objElm).animate({ left: settings.iLeft + "px" }, settings.iExpandDuration, 'linear', function() { settings.bOnCollapse = false; settings.bExpanded = false; } );
				settings.bOnCollapse = true;
			}
		}

		function doScroll() {
			clearTimeout(pTimeout);

			var iOldTop = $(objElm).offset().top;
			var iNewTop = $(document).scrollTop() + settings.iTop;
			var iTime = Math.abs(iOldTop - iNewTop);
			iScrollPosition = iNewTop;
			
			pTimeout = setTimeout(function() {
				clearTimeout(pTimeout);
				$(objElm).animate({ top: iScrollPosition + "px" }, iTime);
			}, settings.iScrollTimeout);					
		}
		
		doScroll();
	};

})(jQuery);

