// JavaScript Document
// KWOKBOX VERSION 1.0 beta max
(function($){
	$.fn.kwokbox = function(options) {
		// this is to keep from overriding our "defaults" object.
		var opts = $.extend({}, $.fn.kwokbox.defaults, options);
		var base = this;
		var firstLoad = true;
		var height = 0;
		var width = 0;
		var paraHeight = 0;
		var contentToLoad = "";
		var galleryText = "";
		
        base.init = function(){
			var bodyHeight = $(document).height();
			var bodyWidth = $(window).width();
			$('body').append('<div id="overlay">&nbsp;</div>');
			$('#overlay').css({
				'opacity':'0',
				'width':bodyWidth,
				'height':bodyHeight
			}).animate({'opacity':'0.5'});
			$(window).resize(function(){
				base.positionImage()
			}).scroll(function(){
				base.positionImage()
			});
			base.loadImage();
		};
		
		base.loadImage = function(){
			imageLink = $('a.selected').attr('href');
			var newImg = new Image();
			newImg.src = imageLink;
			imageHeight = newImg.height;
			imageWidth = newImg.width;
			
			if($('#overlay-content:visible').size() != 1) {
				$('body').append('<div id="overlay-content"><a href="#" class="close">close</a><a href="#" class="next">next</a><a href="#" class="prev">prev</a><img src=" " /><p class="description"></p></div>');
				if(opts.caption==true) {
					base.updateText();
				}

				$('#overlay-content > *').hide();
				
				$('#overlay-content > img').attr('src',imageLink).load(function(){
					base.positionImage();
				});
			
				$('a.next').click(function(){
					base.nextImage();
					return false;
				});
				
				$('a.prev').click(function(){
					base.prevImage();
					return false;	
				});
			} else{
				if(opts.caption==true) {
					base.updateText();
				}

				base.changeImage();
			}
			
			$('#overlay, a.close').click(function(){
				base.hideImage();
				return false;
			});
		};
		
		base.updateText = function(){
			var imagePosition = $('a.selected').index();
			var imageTitle = $('.selected').children('img').attr('alt');
			if(imageTitle != '') {
				imageTitle = '<br />' + imageTitle;
			}
			var totalLinks = base.size();
			$('p.description').html('Image ' + (imagePosition+1) + ' of ' + totalLinks + imageTitle);
			paraHeight = $('#overlay-content p').height();
		};
		
		base.positionImage = function(){
			if ($.browser.msie && $.browser.version.substr(0,1)<7) {
			} else {
				imageHeight = $('#overlay-content > img').height() + parseInt(paraHeight);
				imageWidth = $('#overlay-content > img').width();
			}
			contentLeft = (parseInt($(window).width()) - (parseInt(imageWidth)))/2;
			contentTop = ((parseInt($(window).height()) - parseInt(imageHeight))/2) + $(window).scrollTop();

				
			if(firstLoad==true) {
				$('#overlay-content').css({
					'left': contentLeft,
					'top': contentTop,
					'height':imageHeight,
					'width':imageWidth
				})
				$('#overlay-content > *').fadeIn();
				firstLoad = false;
				
				base.checkLinks();
			} else {
				$('#overlay-content').stop().animate({
					'left': contentLeft,
					'top': contentTop,
					'height':imageHeight,
					'width':imageWidth
				}, function(){
					$('#overlay-content > *').fadeIn();
					base.checkLinks();
				})
				$('#overlay').css({
					'width':$(window).width(),
					'height':$(document).height()
				})
			}
		};

		
		base.writeSizes = function(){
			imageHeight = $('#overlay-content > img').height();
			imageWidth = $('#overlay-content > img').width();
			$('#overlay-content').animate({
				'height':imageHeight,
				'width':imageWidth
			})
		};
		
		base.changeImage = function(){
			base.writeSizes();
			$('p.description').hide();
			$('#overlay-content > img').fadeOut(function(){
				$('#overlay-content > img').attr('src',imageLink).load(function(){
					base.positionImage();
				});
			});
		};
		
		base.hideImage = function(){
			$('#overlay').fadeOut(function(){
				$('#overlay').remove();				   
			});
			$('#overlay-content').fadeOut(function(){
				$('#overlay-content').remove();				   
			});
			$('a.selected').removeClass('selected');
			firstLoad = true;
		};
		
		base.nextImage = function(){
			$('a.selected').removeClass('selected').next().addClass('selected');
			base.loadImage();
		};
		
		base.prevImage = function(){
			$('a.selected').removeClass('selected').prev().addClass('selected');
			base.loadImage();
		};
		
		base.checkLinks = function(){
			if($('a.selected').next().size() != 1) {
				$('a.next').hide();
			} else {
				$('a.next').show();
			}
			if($('a.selected').prev().size() != 1) {
				$('a.prev').hide();
			} else {
				$('a.prev').show();
			}
		};
		
		base.click(function(){
			$(this).addClass('selected');
			base.init();
			return false;
		});
		
	};
	
	$.fn.kwokbox.defaults = {
	  caption: true
	};
})(jQuery);
