/*
jQuery AjaxPager Plugin
Version 0.8 (05/01/2010)

Usage: $("someSelector").ajaxPager();
Options: startPage (Default: 1)
         PagesCount (Default: 10)
		 ChangeSiteEvent (Default: null)
*/
(function($) {
     $.fn.extend({
	     ajaxPager: function(options) {
		     var defaults = {
			     startPage: 1,
				 PagesCount: 10,
				 ChangeSiteEvent: null,
				 ShowFirstLast: false,
				 ShowGoBack : true
			 };
			 var options = $.extend(defaults, options);
			 
			 return this.each(function() {
			     var obj = $(this);
				 if(options.PagesCount > 1) {
				     obj.empty().append(CalculatePages(parseInt(options.startPage), parseInt(options.PagesCount), options.ShowGoBack, options.ShowFirstLast));
		         
				     if($.isFunction(options.ChangeSiteEvent)) {    
					     options.ChangeSiteEvent(options.startPage);
			         }
				 
				     var eventHandler = function() { 
				         $(".pageButton").click(function(event) {
				             event.preventDefault();
				             var activePage = $(this).find("a").attr("href");
					         if($.isFunction(options.ChangeSiteEvent)) {
						         obj.empty().append(CalculatePages(parseInt(activePage), parseInt(options.PagesCount),options.ShowGoBack, options.ShowFirstLast));
						         eventHandler();
					             options.ChangeSiteEvent(activePage);
					         }
				         });
				     }
				 
				     eventHandler();
				 }
				 else {
				     if($.isFunction(options.ChangeSiteEvent)) {    
					     options.ChangeSiteEvent(options.startPage);
			         }
				 }
				 
				 
			 });
		 }
     });
	 
	 function CalculatePages(pageIndex, pageCount, ShowGoBack, ShowFirstLast) {
	     var startPoint = pageIndex - 2;
		 var endPoint = pageIndex + 2;
		 
		 if(pageIndex < 5) {
		     startPoint = 1;
			 if(pageCount > 5) {
			     endPoint = 5;
			 }
			 else {
			     endPoint = pageCount;
			 }
		 }
		 
		 if(endPoint > pageCount) {
		     var minus = endPoint - pageCount;
			 startPoint = startPoint - minus;
			 endPoint = endPoint - minus;
		 }
		 
		 var $pager = $('<ul class="pages"></ul>');
		
		 
		 if(pageIndex > 1) {
		     if(ShowFirstLast) {
		         $('<li class="pageButton firstButton"><a href="1">Erste</a></li>').appendTo($pager);
			 }
			 if(ShowGoBack) {
		         var backButton = $('<li class="pageButton backButton"><a href="' + (pageIndex - 1) + '">Zur�ck</a></li>');
			     backButton.appendTo($pager);
			 }
		 }
		 
		 for(var page = startPoint; page <= endPoint; page++) {
		     if(page != pageIndex) {
		         var currentButton = $('<li class="pageButton"><a href="' + page + '">' 
			                           + page + '</a></li>');
			 }
			 else {
			     var currentButton = $('<li class="activeButton"><a href="' + page + '">'
				                       + page + '</a></li>');
			 }
			 currentButton.appendTo($pager);
		 }
		 
		 if(pageIndex != pageCount) {
		     if(ShowGoBack) {
		         var goButton = $('<li class="pageButton goButton"><a href="' + (pageIndex + 1) + '">Vorw�rts</a></li>');
			     goButton.appendTo($pager);
			 }
			 if(ShowFirstLast) {
			     $('<li class="pageButton lastButton"><a href="' + pageCount + '">Letzte</a></li>').appendTo($pager);
			 }
		 }
		 
		 return $pager;
	 }
})(jQuery);
