/**
 * jQuery.nexInfiniteDisplay
 * Copyright (c) 2009 Christof Haemmerle - Nex9 - http://www.nex9.com
 * Dual licensed under MIT and GPL.
 *
 * @author Christof Haemmerle
 * @version 0.1
 *
**/


(function() {

var ver = '0.1';

$.fn.nexInfiniteDisplay = function (options) {

	var defaults = {
		initialPage: 0,
		batchSize: 3,
		time: 1000
		
	};
	
	var settings = $.extend(true, {}, defaults, options);
	
	return this.each(function () {
		
		
		// define some wars
		var $this = $(this),
			$items = $this.find('li'),
			currentPage = 0,
			totalItems = $items.length;
		
		// hide all elements
		$items.hide().find('img').hide().load(function() {
			$(this).fadeIn();
		});
		
		// show only the the number we want
		
		// functions
		gotoPage = function(page) {
			
			if ( page > -1 && page < totalItems/settings.batchSize ) {
			
				var start = settings.batchSize ? settings.batchSize * page : 0,
					stop = start + settings.batchSize;
			
				$items.hide().slice(start,stop).fadeIn("slow");
			
				currentPage = page;
				logger(currentPage);
				
				if ( page === 0) {
					$this.find('a.back').hide();
				} else {
					$this.find('a.back').show();
				};
				
				if ( page === parseInt(totalItems/settings.batchSize, 0) ) {
					$this.find('a.forward').hide();
				} else {
					$this.find('a.forward').show();
				};
				
			};
		};
		
		// bind the back and forward links
		$('a.back', this).click(function () {
			gotoPage(currentPage - 1);
			return false;
		});
		
		$('a.forward', this).click(function () {
			gotoPage(currentPage + 1);
			return false;
		});
		
		$(this).bind('goto', function (event, page) {
			gotoPage(page);
		});
		
		$(this).bind('next', function () {
			gotoPage(currentPage + 1);
		});
		
		// show initial items
		gotoPage(settings.initialPage);
		
	});

	
	$.fn.test.ver = function() {
		return ver;
	};

};

})(jQuery);
