/*
* Copyright (c) 2008-2009 Jon Paul Davies
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
	
	/**
	* jquery.checkbox.css
	* @author  	   Business/Development: Adam Lee & Yaakov Albietz
	* @credit   	3rd Party Development: Seth Benjamin
	* @copyright   Copyright Eject Core 2009-2010. All rights reserved.
	* @license 	   end-user license agreements (EULAs)
	* @package     Filter Search Pro
	* @version 	   v1.7 Final
	*
	*/

(function($) {
  $.fn.pager   = function(options) {
    var opts = $.extend({}, $.fn.pager.defaults, options);
    return this.each(function() {
      $(this).empty().append(renderpager(parseInt(options.pagenumber), parseInt(options.pagecount), options.buttonClickCallback));
      $('.pages li').mouseover(function() { document.body.style.cursor = "pointer"; }).mouseout(function() { document.body.style.cursor = "auto"; });
    });
  };

  function renderpager(pagenumber, pagecount, buttonClickCallback) {
    var $pager = $('<ul class="pages"></ul>');
    $pager.append(renderButton(pagingFirst, pagenumber, pagecount, buttonClickCallback)).append(renderButton(pagingPrevious, pagenumber, pagecount, buttonClickCallback));
    var startPoint = 1;
    var endPoint   = 9;
    if(pagenumber > 4) {
      startPoint = pagenumber - 4;
      endPoint   = pagenumber + 4;
    }

    if(endPoint > pagecount) {
      startPoint = pagecount - 8;
      endPoint   = pagecount;
    }

    if(startPoint < 1) {
      startPoint = 1;
    }

    for(var page = startPoint; page <= endPoint; page++) {
      var currentButton = $('<li class="page-number">' + (page) + '</li>');
      if(page == pagenumber) {
        currentButton.addClass('pgCurrent');
        if(haltRequest == false) {
        	productPaging(undefined, pagenumber, 'plugin', false, Math.ceil(orgProdCount/n));
        } else {
        	haltRequest = true;
         }
        if(ajax_scroll == true) 
        	$.scrollTo('.category_title', 1200);
      } else {
        currentButton.click(function() { buttonClickCallback(this.firstChild.data); });
      }
      currentButton.appendTo($pager);
    }

    $pager.append(renderButton(pagingNext, pagenumber, pagecount, buttonClickCallback)).append(renderButton(pagingLast, pagenumber, pagecount, buttonClickCallback));
    return $pager;
  }

    // renders and returns a 'specialized' button, ie 'next', 'previous' etc. rather than a page number button
    function renderButton(buttonLabel, pagenumber, pagecount, buttonClickCallback) {

        var $Button = $('<li class="pgNext">' + buttonLabel + '</li>');

        var destPage = 1;

        // work out destination page for required button type
        switch (buttonLabel) {
            case pagingFirst:
                destPage = 1;
                break;
            case pagingPrevious:
                destPage = pagenumber - 1;
                break;
            case pagingNext:
                destPage = pagenumber + 1;
                break;
            case pagingLast:
                destPage = pagecount;
                break;
        }

        // disable and 'grey' out buttons if not needed.
        if (buttonLabel == pagingFirst || buttonLabel == pagingPrevious) {
            pagenumber <= 1 ? $Button.addClass('pgEmpty') : $Button.click(function() { buttonClickCallback(destPage); });
        }
        else {
            pagenumber >= pagecount ? $Button.addClass('pgEmpty') : $Button.click(function() { buttonClickCallback(destPage);  });
        }

        return $Button;
    }

    // pager defaults. hardly worth bothering with in this case but used as placeholder for expansion in the next version
    $.fn.pager.defaults = {
        pagenumber: 1,
        pagecount: 1
    };

})(jQuery);
