﻿/*
  Methee Ruetaichetcharoen
  jquery.paginizer plugin
  options
    pageCount: the total pages
    example: $(".paginizer").paginizer({pageCount: 5});
    
  jquery.articlepaginizer plugin
  options
     pageCount: the total pages
     pageURLs: the list of the urls
*/
(function($){
          
  $.fn.paginizer = function(options){
    options = $.extend({}, $.fn.paginizer.defaults, options);
    
    return this.each(function(){
      var nodeName = this.nodeName.toLowerCase();
      if(nodeName != 'input') return;
      var $input = $(this);
      var KEY = { RETURN: 13 };
      var qs = '';
      var anchor = '#'+ options.anchor;
      var url =  window.location.protocol + "//" + window.location.host + window.location.pathname;
      
      //if the url doesn't make sense then redirect to firstpage
      if(isNaN($input.val())){
        qs = "?page=1";
        $input.val('1');
        window.location = url + qs + anchor;
      }
                  
      $input.bind(($.browser.opera ? "keypress" : "keydown") + ".paginizer", function(event){
        switch(event.keyCode){
          case KEY.RETURN:
            event.preventDefault();
            var pageNum = $input.val();
            pageNum = isNaN(pageNum)? 1:parseInt(pageNum);
            var pageCount = options.pageCount;
            pageCount = isNaN(pageCount)? 1:parseInt(pageCount);
            if(pageNum <= 0){
              qs = "?page=1";
              $input.val(1);
            }else if(pageNum < pageCount){
              qs = "?page=" + pageNum;
              $input.val(pageNum);
            }else if(pageNum >= pageCount){
              qs = "?page=" + pageCount;
              $input.val(pageCount);
            }
            
            window.location = url + qs + anchor;
            return false;
          break;
        }
      });
      
    });
  };
  
  $.fn.paginizer.defaults = {
    pageCount: 0,
    anchor: "listing"
  };
})(jQuery);


(function($){
          
  $.fn.articlepaginizer = function(options){
    options = $.extend({}, $.fn.articlepaginizer.defaults, options);
    
    return this.each(function(){
      var nodeName = this.nodeName.toLowerCase();
      if(nodeName != 'input') return;
      var $input = $(this);
      var KEY = { RETURN: 13 };
      
      $input.bind(($.browser.opera ? "keypress" : "keydown") + ".paginizer", function(event){
        switch(event.keyCode){
          case KEY.RETURN:
            event.preventDefault();
            var ix = 0;
            var pageNum = $input.val();
            pageNum = isNaN(pageNum)? 1:parseInt(pageNum);
            var pageCount = options.pageCount;
            pageCount = isNaN(pageCount)? 1:parseInt(pageCount);
            var pageURLs = options.pageURLs; 
            
            if(pageNum <= 0){
                ix = 0;
            }else if(pageNum < pageCount){
                ix = pageNum - 1;
            }else if(pageNum >= pageCount){
                ix = pageCount - 1;
            }
            var url = window.location.protocol + "//" + window.location.host + pageURLs[ix];
            
            window.location = url;
            return false;
          break;
        }
      });
      
    });
  };
  
  $.fn.articlepaginizer.defaults = {
    pageCount: 0,
    pageURLs: []
  };
})(jQuery);

