/* 
 * jQuery.dotPagination.js
 * © 2011 kumagaiyusuke
*/

(function ($) {
  
  $.dotPagination = function (length, btnData) {
    
    var $dotPagination = $("<div>", {
      "class" : "dotPagination"
    });
    
    var btnList = [];
    
    var events = $.dotPagination.events;
    
    var currentBtn = length - 1;
    
    
    // !初期化
    
    for (var i = 0; i < length; ++i) {
      
      var $dotBtn = $.dotBtn(btnData.size.width, btnData.size.height, btnData.enter, btnData.leave);

      $dotBtn.bind("click", onClickBtn);
      $dotPagination.append($dotBtn);
      btnList.push($dotBtn);
    }
    
    
    // !イベントハンドラ
    
    function onClickBtn(e) {
      
      var index;
      
      for (var i = 0; i < btnList.length; ++i) {
        if (btnList[i].get(0) === e.currentTarget) {
          index = i;
          break;
        }
      }
      
      $dotPagination.trigger(events.CLICK_ITEM, [index]);
    }
    
    
    // !パブリック
    
    $dotPagination.changeCurrentBtn = function (i) {
      
      if (i < 0 || i >= btnList.length ) {
        throw new Error("ボタン番号は0から" + (btnList.length - 1) + "までの間で指定する必要があります。");
      }
      
      if (i === currentBtn) {
        return;
      }
      
      btnList[i].setCurrent();
      btnList[currentBtn].removeCurrent();
      currentBtn = i;
    };
    
    return $dotPagination;
  };
  
  $.dotPagination.events = {
    CLICK_ITEM : "clickItem"
  };

})(jQuery);

