(function($){
  $.fn.galleryBox = function(options){
    var defaults = {
      'activePos': 1,
      'startPos': 1,
      'displayCount': 4
    };
    var config = defaults;
    if(options) $.extend(config,options);
    
    function updateDisplay(jQueryObj){
      if(config.activePos < config.startPos) config.activePos = config.startPos; 
      if(config.activePos >= config.startPos + config.displayCount) config.activePos = config.startPos + config.displayCount - 1; 
      $('div.galleryBoxImageBlock',jQueryObj).css('display','none');
      $('div.galleryBoxImageSubText',jQueryObj).css('display','none');
      for(var i = config.startPos - 1; i < config.displayCount + config.startPos - 1; i++){
        $('div.galleryBoxImageBlock:eq(' + i + ')',jQueryObj).css('display','block');
        if(i == config.activePos - 1){
          $('div.galleryBoxImageBlock:eq(' + i + ')',jQueryObj).children('div.galleryBoxImageSubText').css('display','block');
        }
      }
    }

    function _updateDisplay(){
      setActivePos(this);
      updateDisplay($(this).parents('div.galleryBox'));
    }

    function setActivePos(jQueryObj){
      containerObj = $(jQueryObj).parents('div.galleryBox');
      config.activePos = 0;
      for(var i = 0; i < $('div.galleryBoxImageBlock',containerObj).length; i++){
        config.activePos++;
        if($(jQueryObj).attr('src') == $('div.galleryBoxImage:eq(' + i + ') img',containerObj).attr('src')) break;
      }
    }

    function increaseStartPos(){
      containerObj = $(this).parents('div.galleryBox');
      if(config.startPos <= $('div.galleryBoxImageBlock',containerObj).length - config.displayCount){
        config.startPos += 1;
        updateDisplay(containerObj);
      }
      return false;
    }
    
    function decreaseStartPos(){
      if(config.startPos > 1){
        config.startPos -= 1;
        updateDisplay($(this).parents('div.galleryBox'));
      }
      return false;
    }
        
    updateDisplay(this);

    $('div.galleryBoxImage img',this).unbind('mouseenter').mouseenter(_updateDisplay);
    $('div.galleryBoxNav a:eq(0)',this).unbind('click').click(decreaseStartPos);
    $('div.galleryBoxNav a:eq(1)',this).unbind('click').click(increaseStartPos);

    return this;
  };
})(jQuery);

