/***********************/
/* fireskill@gmail.com */
/* http://blog.bits.kr */
/*          2009/11/25 */
/***********************/

/*
jquery플러그인이므로 jquery를 필수로 사용해야 동작하는 스크립트입니다.

pageAlign : center 또는 left
pageWidth : 컨텐츠 블럭의 폭(필수값)
type      : right 또는 left(pageAlign의 값을 center로 했을때만 left값 사용가능)
topMargin : 페이지 최상단과의 거리
minTop    : 스크롤 했을때 브라우저 상단과의 거리(topMargin과 같은 값을 넣으면 같은 높이 유지)
margin    : 컨텐츠 블럭과의 좌 또는 우의 마진(left일때는 오른쪽 마진, right일때는 왼쪽 마진)
speed     : 따라다니는 속도
easing    : linear 또는 swing (easing plugin 플러그인을 쓴다면 플러그인 옵션값을 모두 사용할 수 있음)
zindex    : 필요하다면...
*/
(function ($)
{
	var $doc = $(document);
	var $win = $(window);
	$.fn.scrollFollower = function (options)
	{
		var options = $.extend({}, $.fn.scrollFollower.defaults, options);
		if (options.pageWidth)
			var pageWidth = parseInt(options.pageWidth);
		else
		{
			alert('pageWidth는 필수 옵션값입니다.');
			return false;
		}
		var $layer = $(this);
		var varType = options.varType;
		var pageAlign = options.pageAlign;
		var offset = pageWidth / 2;
		var layerPositon = options.type;
		var margin = parseInt(options.margin);
		var speed = parseInt(options.speed);
		var easing = options.easing;
		var topMargin = parseInt(options.topMargin);
		var minTop = parseInt(options.minTop);
		var marginResult = offset + margin;
		var settedtop = topMargin + minTop;
		$layer.css('z-index', options.zindex);
		$layer.css("position", "absolute");
		if (layerPositon === 'left')
			varType = 'right';
		function resetXPosition()
		{
			if (pageAlign === 'center')
			{
				var $screenSize = $('body').width();
				var halfScreenSize = $screenSize / 2;
				xPosition = halfScreenSize + marginResult;
			}
			else if (pageAlign === 'left')
			{
				varType = 'left';
				xPosition = pageWidth + margin;
			}
			$layer.css(varType, xPosition);
		}
		resetXPosition();
		$layer.css('top', topMargin);
		$win.resize(resetXPosition);
		$win.scroll(function ()
		{
			$top = $doc.scrollTop();
			yPosition = topMargin;
			if ($top > settedtop)
				yPosition = $top + minTop;
			else if ($top < topMargin)
				yPosition = topMargin;
			$layer.animate({ "top": yPosition }, { duration: speed, easing: easing, queue: false });
		});
	};
	$.fn.scrollFollower.defaults = {
		varType: 'left',
		pageAlign: 'left',
		type: 'left',
		topMargin: 0,
		minTop: 0,
		margin: 0,
		speed: 1000,
		easing: 'linear',
		zindex: 10
	};
})(jQuery);
