/*
	jQuery Paging plugin
	2008, Paul van Dam
*/

(function($){
$.fn.paging = function (options) {

	var opt = {
		itemsPerPage: 5,
		elementType: 'li',
		prevText: __paging_prev,
		nextText: __paging_next,
		selectedClass: 'active',
		navClass: 'paging',
		prevClass: 'prev',
		nextClass: 'next',
		disabledClass: 'disabled',
		addNav: 'after',
		showPageNumbers: true
	};

	if (options) $.extend(opt, options);

	if (opt.elementType == 'tr') opt.elementType = 'tbody>tr';

	return this.each (function () {

		var self = this;
		var pages = Math.ceil($('>'+opt.elementType,$(this)).length/opt.itemsPerPage);
		var currentPage = 1;
		
		if (pages > 1) {
			var html = '<a href="" class="'+opt.prevClass+'" rel="prev">'+opt.prevText+'</a>';
			if (opt.showPageNumbers) {
				for (var i=1; i<=pages; i++)
					html += '<a href="" rel="'+i+'">'+i+'</a>';
			}
			html += '<a href="" class="'+opt.nextClass+'" rel="next">'+opt.nextText+'</a>';
			var pagenav = $('<div class="'+opt.navClass+'">'+html+'</div>');
			
			if (opt.addNav == 'before')
				pagenav.insertBefore($(this));
			else
				pagenav.insertAfter($(this));

			$('a',pagenav).click(function(){
				showPage($(this).attr('rel'));
				$(this).blur();
				return false;
			});

			showPage(currentPage);
		}

		function showPage(nr) {
			$(self).triggerHandler('pagingBeforePageChange');

			if (nr == 'next') {
				if (currentPage == pages) return;
				currentPage ++;
			} else if (nr == 'prev') {
				if (currentPage == 1) return;
				currentPage --;
			} else
				currentPage = nr;
			
			if (currentPage == 1)
				$('a[rel=prev]',pagenav).addClass(opt.disabledClass);
			else
				$('a[rel=prev]',pagenav).removeClass(opt.disabledClass);

			if (currentPage == pages)
				$('a[rel=next]',pagenav).addClass(opt.disabledClass);
			else
				$('a[rel=next]',pagenav).removeClass(opt.disabledClass);

			$('>'+opt.elementType+':visible',self).hide();
			$('>'+opt.elementType+':gt('+(((currentPage-1)*opt.itemsPerPage)-1)+'):lt('+opt.itemsPerPage+')',self).show();

			$('a',pagenav).removeClass(opt.selectedClass);
			$('a[rel='+currentPage+']',pagenav).addClass(opt.selectedClass);

			$(self).triggerHandler('pagingAfterPageChange');
		};

	});
};
})(jQuery);