/*!
 * Plugin: Tabellen-Paging
 * Autor: Michael Retzer
 * ----------------------------------------------------
 * ----------------------------------------------------
 */
;(function($)
{ 
	
	var settings = 
	{
		displayMessage : true,
		displayNavigation : true,
		currentMessage : "Aktuelle Seite:",
		cssMessage : "tablePagerCurrent",
		cssPager : "tablePager",
		cssCurrent : "tablePagingCurrent",
		cssPaging : "tablePaging",
		init : 1,
		lines : 10,
		page : 1,
		pages : 1
	}; 		
	
    //Iframe öffnen, ohne Rückgabewert
    $.fn.tablePaging = (function(lines, options)
    {
    	$.extend(settings, options || {});
    	if (settings.init < 1) settings.init = 1;
    	
    	//Paging einfügen
    	var numRows = $(this).find('tbody tr').length;
    	var numPages = Math.ceil(numRows / lines);
    	settings.pages = numPages;
    	settings.lines = lines;
    	
    	var $pager = $('<div class="' + settings.cssPager + '"></div>');    	
    	for (var page=0; page<numPages; page++)
    	{
    		$('<span class="' + settings.cssPaging + '"><a href="#">' + (page + 1) + '</a></span>')
    		.bind('click', {tb:$(this), pg:page+1, ln:lines}, function(event) { tablePagingChange(event.data.tb, event.data.pg, event.data.ln); return false; })		
    		.appendTo($pager).addClass('clickable');
    	}
    	if (settings.displayNavigation) $pager.insertBefore($(this));
    	$('<div class="' + settings.cssMessage + '"></div>').insertBefore($(this));
    	$('<div style="clear:both"></div>').insertBefore($(this));
    	
    	//Zeilen ausblenden
    	tablePagingChange($(this), settings.init, settings.lines);	
    });	
    
    $.fn.tablePagingNext = (function()
    {
    	if (settings.pages > settings.page) settings.page = settings.page + 1;
    	tablePagingChange($(this), settings.page, settings.lines)
    });
    
    $.fn.tablePagingPrev = (function()
    {
       	if (settings.page > 1) settings.page = settings.page - 1;
       	tablePagingChange($(this), settings.page, settings.lines)
    });    
    
    function tablePagingChange(table, page, lines)
    {
    	//neue Werte setzen	
    	settings.page = page;
    	
    	//style setzen
    	$('div.' + settings.cssPager).find('span').each(
    			function()
    			{
    				if ($(this).find('a').get(0).innerHTML == page) $(this).get(0).className = settings.cssCurrent;
    				else $(this).get(0).className = settings.cssPaging;
    			}
    	)	
    	
    	//Zeilen einblenden/ausblenden
    	var from = ((page * lines) - lines) + 1;
    	var to = (page * lines);
    	var count = 1;
    	$(table).find('tbody tr').each(function() {
    		if (count < from) $(this).hide();
    		else if (count > to) $(this).hide();
    		else $(this).show();
    		count++;
    	});	
    	if (settings.displayMessage) $('div.' + settings.cssMessage).get(0).innerHTML = settings.currentMessage + " " + page;
    }     
	
})(jQuery);


