/**
 * Autor: Grzegorz Zawadzki  
 * jQuery Pagination
 *
 * podział na strony dla diva
 *                 
 * Infoman S.C. 2010
 */
(function($) {
  $.fn.PaginationAdvanced = function(inOptions)
  {
        //defaults
        var options = $.extend({}, $.fn.PaginationAdvanced.defaults, inOptions);
        //basic checks
        if( options.ScrollID == null ) return;
        if( options.PaginationID == null ) return;
        //internal stuff
        var content = $(options.ScrollID).html();
        var pages = content.split(options.PageSelector);
        var NumberOfPages = pages.length;
        var CurrentPosition=0;

        //updates div position
        function UpdatePosition(iPosition)
        {
           CurrentPosition = iPosition;

           switch(options.Effect.type)
           {
               case 'slide':
                   $(options.ScrollID).slideUp(options.Effect.speed, function()
                   {
                      $(options.ScrollID).html(pages[iPosition]);
                      $(options.ScrollID).slideDown(options.Effect.speed);
                   });                   
               break;
               case 'fade':
                   $(options.ScrollID).fadeOut(options.Effect.speed, function()
                   {
                      $(options.ScrollID).html(pages[iPosition]);
                      $(options.ScrollID).fadeIn(options.Effect.speed);
                   });                   
               break;
               default:
                   $(options.ScrollID).html(pages[iPosition]);
               break;           
           }
           RefreshPagination();
           
           if( options.OnPositionChange != null )
               options.OnPositionChange(iPosition, pages[iPosition]);
        }
        //refresh pagination
        function RefreshPagination()
        {
           var result = '';

           if( NumberOfPages > 1 )
           {
              result = '<table style="margin-left: 380px;" cellpadding="0" cellspacing="0" border="0"><tr>';

              //prev
              if( options.bUseNav && CurrentPosition > 0 && options.prev_gfx != null )
                  result += '<td><a href="#" onclick="return false;" id="page_'+(CurrentPosition-1)+'" class="jq_pagination"><img src="'+options.prev_gfx+'" alt="" border="0" /></a></td>';
              
              //numbers
              var lnk_class = options.NormalLink;
              for( var i=0; i<NumberOfPages; i++ )
              {
                 lnk_class = ( i == CurrentPosition ) ? options.SelectedLink : options.NormalLink;
                 result += '<td><a href="#" onclick="return false;" class="'+lnk_class+' jq_pagination" id="page_'+(i)+'">'+(i+1)+'</a></td><td style="width: 5px;"></td>';
              }
              
              //next
              if( options.bUseNav && CurrentPosition < (NumberOfPages-1) && options.next_gfx != null )
                  result+='<td><a href="#" onclick="return false;" id="page_'+(CurrentPosition+1)+'" class="jq_pagination"><img src="'+options.next_gfx+'" alt="" border="0" /></a></td>';

              result += '</tr></table>';
           }
           //appends nav
           $(options.PaginationID).html(result);
           //click
           $('.jq_pagination').click(function()
           {
               var page = $(this).attr('id');
               var arr = page.split('_');
               UpdatePosition(arr[1]);
           });
        }
        if( NumberOfPages > 1 )
        {
            RefreshPagination();
            $(options.ScrollID).html(pages[0]);
        }
	}
  //defaults
  $.fn.PaginationAdvanced.defaults =
  {
     ScrollID: null,                                                // id div'a z treścią
     PaginationID: null,                                            // id div'a z numerami stron
     Effect:                                                        // efekt
     {
        type: 'slide',                                              // rodzaj animacji
        speed: 400                                                  // szybkość animacji
     },
     NormalLink: 'pagination_link',                                 // link
     SelectedLink: 'pagination_link-selected',                      // link aktualny
     next_gfx: null,                                                // następny
     prev_gfx: null,                                                // poprzedni
     bUseNav: false,                                                // nawigacja (next/prev)
     PageSelector: /<p.*><!-- pagebreak --><\/p>/,                  // znak nowego wiersza
     OnPositionChange: function (iPageNumber, sPageContent) {}      // funkcja wywoływana przy zmiane strony
  }
})(jQuery);        
