// JavaScript Document
// コンストラクタ関数
// target = 対象になるエレメントid属性値(配列)
// fade = フェードイン／フェードアウトのタイム(秒)
// show = 要素の表示時間(秒)
function fader (target, fade, show) {
  this.targetelements = target;
  this.fadingtime = fade;
  this.showingtime = show;
}

// 実行関数start()をラップするクラスメソッド
fader.prototype.execfade = function () {
  // インスタンス変数の取り込み
  var elements = this.targetelements;
  var fade = this.fadingtime;
  var show = this.showingtime;
  // スライドの実行
  start ();

  // スライドの実行関数
  function start () {
    // 最初の要素はフェードなしで表示
    new Effect.Appear(elements[0], {duration:0, delay:0});
    // 繰り返し表示
    for (var i = 0; i < elements.length; i++) {
      new Effect.Fade(elements[i], {duration:fade, delay:i * fade + (i + 1) * show});
      if (i == elements.length - 1) {
        // 最後に最初の要素のフェードイン部分だけを付加
        new Effect.Appear(elements[0], {duration:fade, delay:i * fade + (i + 1) * show, afterFinish:start});
      } else {
        new Effect.Appear(elements[i + 1], {duration:fade, delay:i * fade + (i + 1) * show});
      }
    }
  }
}