// Slide Image List ÄÁÆ®·Ñ
// ´Ù¼öÀÇ ÀÌ¹ÌÁö¸¦ ÇÑÀå¾¿ ÀÏÁ¤ ½Ã°£ °£°ÝÀ¸·Î È¸Àü½ÃÄÑ¼­ º¸¿©ÁÖ´Â ÄÁÆ®·Ñ. 
function SlideImageList(layerName, className, options)
{
	if (options == null)
	{
		options = {
			speed: 400,
			interval: 4000
		};
	}

	this.pages = [];

	this.forceNextImage = null;
	this.currentImage = null;
	this.nextImage = null;
	this.layerName = layerName;
	this.className = className;
	this.options = options;

	this.layer = $("#" + layerName);

	var leftBtn = $("#" + layerName + ".slideBtnLayer.slideLeftBtn");
	var rightBtn = $("#" + layerName + ".slideBtnLayer..slideRightBtn");
	
	if (null != leftBtn)
	{
		leftBtn.mouseenter(function()
		{
			alert('on');
			this.toggleClass("lefton");
		});
	}
}

SlideImageList.prototype.forceSlide = function(direction, interval, speed)
{
	var _date = new Date;
	var now = _date.getTime();

	if (null == this.lastForceSlideTime)
		this.lastForceSlideTime = 0;

	if (now - this.lastForceSlideTime < this.options.speed + 200) 
		return;

	this.lastForceSlideTime = now;
	this.runSlide(direction, interval, speed);
}

SlideImageList.prototype.runSlide = function(direction, interval, speed)
{
	// ÀÌ¹ÌÁö°¡ ÇÑÀå ¹Ì¸¸ÀÌ¸é ÀÌÆåÆ® ¾øÀ½
	if (this.pages.length < 1)
		return;

	if (interval == null && this.options.interval != null)
		interval = this.options.interval;
	if (speed == null && this.speed != null)
		speed = this.options.speed;

	if (direction == null)
		direction = "left";
		
	// ÀÌ¹Ì ½ÇÇàÁßÀÌ¸é »õ·Î ¼¼ÆÃÇÔ
	if (null != this.slideTimer)
		this.stopSlide();


	var realThis = this;

	this.slideTimer = null;

	var nextImage = realThis.currentImage;
	if (direction == "right")
		nextImage -= 1;
	else
		nextImage += 1;

	if (this.forceNextImage)
	{
		nextImage = this.forceNextImage;
		direction = this.currentImage < nextImage ? "right" : "left";
	}

	if (this.pages.length <= nextImage)
		nextImage = 0;
	if (0 > nextImage)
		nextImage = this.pages.length - 1;

//			alert ('currentImage : ' + realThis.currentImage + ', next: ' + nextImage);

	var currentLayer = realThis.pages[realThis.currentImage].layer;
	var nextLayer = realThis.pages[nextImage].layer;
	var parentLayer = realThis.pages[realThis.currentImage].parent.layer;

	var layerWidth = parentLayer.width();

	nextLayer.show();

	var callback = function() { 
		var nextBtn = $(".page" + (nextImage + 1));
		if (nextBtn)
			nextBtn.addClass("current"); 
		
		var currentBtn = $(".page" + (realThis.currentImage + 1));
		if (currentBtn)
			currentBtn.removeClass("current");

		realThis.currentImage = nextImage; realThis.startSlide();
	};

	realThis.onEndSlideCallback = callback;

	if (direction == "left")
	{
		// right to left			
		currentLayer.animate({left:'-=' + layerWidth}, 400);
		nextLayer.css('left', +layerWidth);
		nextLayer.animate({left:'-=' + layerWidth}, 400, callback);
	}
	else
	{
		// left to right
		currentLayer.animate({left:'+=' + layerWidth}, 400);
		nextLayer.css('left', -layerWidth);
		nextLayer.animate({left:'+=' + layerWidth}, 400, callback);
	}
}

SlideImageList.prototype.startSlide = function(direction, interval, speed)
{
	// ÀÌ¹ÌÁö°¡ ÇÑÀå ¹Ì¸¸ÀÌ¸é ÀÌÆåÆ® ¾øÀ½
	if (this.pages.length < 1)
		return;


	if (interval == null && this.options.interval != null)
		interval = this.options.interval;
	if (speed == null && this.speed != null)
		speed = this.options.speed;

	if (direction == null)
		direction = "left";
		
	// ÀÌ¹Ì ½ÇÇàÁßÀÌ¸é »õ·Î ¼¼ÆÃÇÔ
	if (null != this.slideTimer)
		this.stopSlide();
 
	var realThis = this;

	this.slideTimer = setTimeout(function() 
		{ 
			realThis.runSlide(direction, interval, speed);
		}, 
		interval
	);
}

SlideImageList.prototype.stopSlide = function()
{
	if (null != this.slideTimer)
		clearTimeout(this.slideTimer);
/*
	if (null != this.onEndSlideCallback)
		this.onEndSlideCallback();
		*/
}

SlideImageList.prototype.addImage = function(imgUrl, linkUrl)
{
	if (this.layer == null)
	{
		alert("[SlideImageList::addImage] layer is null!");
	}

	var pageCount = this.pages.length;

	var newPage = jQuery('<div/>', 
		{
			id: this.layerName + "_page_" + pageCount,
			className: this.className,
			text: ''
		}).prependTo(this.layer);

	var pageInfo = 
	{
		parent: this,
		layer: newPage,
		imgURL: imgUrl,
		linkURL: linkUrl
	};

	newPage.addClass("imageLayer");
	newPage.css("background-image", "url(" + imgUrl + ")");
	newPage.css("background-repeat", "no-repeat");
	newPage.css("background-position", "center top");

	if (null != linkUrl)
	{
		newPage.addClass("linked");

		newPage.click(function(e) { document.location.href = linkUrl; });
	}

	if (0 != pageCount)
	{
		// ÀÌ¹Ì Ãß°¡ µÈ ÀÌ¹ÌÁö°¡ ÀÖÀ¸´Ï ÀÌ¹ÌÁö ÀüÈ¯¿ë Å¸ÀÌ¸Ó¶óµç°¡ ±âÅ¸ ¼³Á¤À» ÇÔ.

		// ÀÏ´Ü »õ·Î Ãß°¡µÈ ÆäÀÌÁö´Â ¼û±è
		newPage.hide();
		this.startSlide();
	}
	else
	{
		// Ã¹ ¹øÂ° ÀÌ¹ÌÁö°¡ ¼¼ÆÃ µÈ °Í.
		this.currentImage = 0;
	}

	
	this.pages.push(pageInfo);

	// ÆäÀÌÁö ¼±ÅÃ ¹öÆ° Ãß°¡
	if ($('.pageSelectLayer'))
	{
		var pageName = "page" + (pageCount + 1);
		var pageSelector = jQuery('<div/>');
		pageSelector.addClass("pageBtn");
		pageSelector.addClass(pageName);
		pageSelector.appendTo($('.pageSelectLayer'));

		if (pageCount == 0)
			pageSelector.addClass("current");
	}
	
}

function LayerPopup(layerName, className, cookieName, options)
{
	this.pages = [];
	this.layerName = layerName;
	this.className = className;
	this.cookieName = cookieName;
	this.options = options;

	this.layer = $("#" + layerName);
}

// imgUrl: ÀÌ¹ÌÁö ÁÖ¼Ò, linkUrl: Å¬¸¯ÇÏ¸é ÀÌµ¿ÇÒ ÁÖ¼Ò
LayerPopup.prototype.addPage = function(imgUrl, linkUrl)
{
	var pageInfo = 
	{
		imgURL: imgUrl,
		linkURL: linkUrl
	};
	
	this.pages.push(pageInfo);
}

LayerPopup.prototype.show = function(bMask)
{
	var popup = this.layer;

	var docWidth = $(document).width();
	var docHeight= $(document).height();
	var mask = $('#background_mask');

	if (bMask && mask)
	{
		mask.css({'width' : docWidth, 'height' : docHeight});
		mask.show();
		mask.fadeTo('fast', 0.5);
	}
	popup.show();

	var obj = $("#" + this.layerName + ' .content');
	obj.css('top',  $(window).height()/2-obj.height()/2);
	obj.css('left', $(window).width()/2-obj.width()/2);
}

LayerPopup.prototype.hide = function()
{
	var mask = $('#background_mask');
	var popup = this.layer;
	
	mask.hide();
	popup.hide();
}

LayerPopup.prototype.testFunc = function()
{
//	alert ('layerTest');
}

