$.fn.ccgallery = function(options)
{
	
	var defaults = {
						modalID:		'modal-gallery',
						modalWidth:		600,
						shadowColor:	"#000000",
						shadowOpacity:	0.6
						
	};
	
	var opts = $.extend(defaults, options);

	return this.each(
		function()
		{
			var $this = $(this);
			$.fn.ccgallery.bindModal(opts, $this);			
			
					
			$this.find("li a").click(
				function()
				{					
					$.fn.ccgallery.showShadow(opts);
					
					$(this).parent().parent().find("li.active").removeClass("active");
					$(this).parent().addClass("active");
					
					$("body div#"+opts.modalID+" img.large").attr("src", $(this).attr("href")).load(
							function()
							{
								$.fn.ccgallery.showModal(opts);
							}
					);
					
					return false;
				}
			);
		}
	);
}

$.fn.ccgallery.showShadow = function(opts)
{
	if ($("body div#ccSHADOW").length == 0)
	{
		var shadow = $("<div></div>").attr("id", "ccSHADOW")
										.css({
												background: opts.shadowColor,
												opacity: opts.shadowOpacity,
												position: "absolute",
												left: "0",
												top: "0",
												'z-index': 900
										});
		
		var iWidth = $("body").width();
		var iHeight = $(document).height();
		shadow.width(iWidth+"px");
		shadow.height(iHeight+"px");
		$("body").append(shadow);
	}
	else
	{
		var shadow = $("body div#ccSHADOW");
	}	
	
	shadow.show();
}

$.fn.ccgallery.showModal = function(opts)
{
	var modal = $("#"+opts.modalID);
	
	modal.css({
					"z-index":	1000,
					background:	"#FFFFFF",
					position: "absolute"
			});
	
	$.fn.ccgallery.repositionModal(opts);
	modal.show();
}

$.fn.ccgallery.repositionModal = function(opts)
{
	var modal = $("#"+opts.modalID);	
	var left = ($("body").width()-opts.modalWidth)/2;
	var top = 150;//($(document).height()-modal.height())/2;
	
	top = $(window).scrollTop() + 150;

	
	modal.css({
				left: left+"px",
				top: top+"px"
	});
}

$.fn.ccgallery.bindModal = function(opts, oBlock)
{
	$(window).scroll(
			function ()
			{
				$.fn.ccgallery.repositionModal(opts);
			}
	);
	
	var modal = $("#"+opts.modalID);
	
	modal.hide();
	
	modal.find(".next").click(
			function()
			{
				$.fn.ccgallery.doNext(opts, oBlock);
				return false;
			}
	);
	
	modal.find(".prev").click(
			function()
			{
				$.fn.ccgallery.doPrevious(opts, oBlock);
				return false;
			}
	);
	
	modal.find(".close").click(
			function()
			{
				$.fn.ccgallery.doClose(opts);
				return false;
			}
	);
	
	modal.hide(); 
}

$.fn.ccgallery.doClose = function(opts)
{
	$("body div#ccSHADOW").fadeOut();
	$("body div#"+opts.modalID).fadeOut();
}

$.fn.ccgallery.doNext = function(opts, oBlock)
{
	var next = oBlock.find("li.active + li");
	
	if (next.length == 0)
	{
		next = oBlock.find("li:first");
	}
	
	oBlock.find("li.active").removeClass("active");
	next.addClass("active");
	
	$("body div#"+opts.modalID+" img.large").attr("src", next.find("a").attr("href"));
	
	$.fn.ccgallery.repositionModal(opts);
}

$.fn.ccgallery.doPrevious = function(opts, oBlock)
{
	var next = oBlock.find("li.active").prev();
	
	if (next.length == 0)
	{
		next = oBlock.find("li:last");
	}
	
	oBlock.find("li.active").removeClass("active");
	next.addClass("active");
	
	$("body div#"+opts.modalID+" img.large").attr("src", next.find("a").attr("href"));
	
	$.fn.ccgallery.repositionModal(opts);
}