var fxWindow = Class.create();

fxWindow.prototype = {
  initialize: function(firClass, secClass) {

    // フェードアウト
    var elements = document.getElementsByClassName(firClass);
    for (var i = 0, len = elements.length; i < len; i++) {
      elements[i].n = 100;
      Event.observe(elements[i], 'mouseover', this.addFadeOver.bindAsEventListener(this)); // イベント付加
      Event.observe(elements[i], 'mouseout', this.addFadeOut.bindAsEventListener(this)); // イベント付加
    }

    // ロールオーバー
    var elementB = document.getElementsByClassName(secClass);
    for (var j = 0, len = elementB.length; j < len; j++) {
      this.preLoad(this.getOutImg(elementB[j].src));
      Event.observe(elementB[j], 'mouseout', this.addSwapIn.bindAsEventListener(this)); // イベント付加
      Event.observe(elementB[j], 'mouseover', this.addSwapOut.bindAsEventListener(this)); // イベント付加
    }

    // 別ウインドウ
    $$('a[rel=external]').each(function(e) {
      e.target = "_blank";
    })

    // スクロール
    var scrollFlag = 0;
    Event.observe(document, "mousewheel", function() {scrollFlag++}); // マウスホイールでスクロール停止
    Event.observe(document, "DOMMouseScroll", function() {scrollFlag++}); // for Firefox

    $$('a[href^=#]:not([href=#])').each(function(element) {
      element.observe('click', function(event) {
        var targetElement = $(this.hash.substr(1));
        scrollFlag++;
        var nowFlag = scrollFlag;
        for (var i = 0; i < 10; i++) {
          setTimeout(
            function() {
              Position.prepare();
              var endPoint = Position.cumulativeOffset(targetElement); // スクロール先
              if (Position.deltaY != endPoint[1]) {
                var conH;
                if (window.innerHeight && window.scrollMaxY) {
                  conH = window.innerHeight + window.scrollMaxY;
                } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
                  conH = document.body.scrollHeight;
                } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
                  conH = document.body.offsetHeight;
                }
                var winH = document.documentElement.clientHeight || window.innerHeight || document.body.clientHeight || 0;
                endPoint[1] = ((endPoint[1] + winH) > conH) ? (conH - winH) : endPoint[1];
                var movePoint = (Position.deltaY > endPoint[1]) ? (endPoint[1] + (Position.deltaY - endPoint[1]) / 2) : (Position.deltaY + (endPoint[1] - Position.deltaY) / 2);
                movePoint = Math.ceil(movePoint);
                scrollFlag = endPoint[1] + 1 >= movePoint ? scrollFlag++ : scrollFlag;
                if (nowFlag == scrollFlag) {
                  window.scrollTo(Position.deltaX, movePoint);
                }
              }
            },
            i*80
          );
        }
        Event.stop(event);
      }.bindAsEventListener(element))
    })

    if ($('hall')) {
        $('btn01').src = 'img/hall_btn_01v.jpg';
        $('btn02').src = 'img/hall_btn_02.jpg';
        $('btn03').src = 'img/hall_btn_03.jpg';
        $('btn04').src = 'img/hall_btn_04.jpg';
        $('btn05').src = 'img/hall_btn_05.jpg';
        $('btn06').src = 'img/hall_btn_06.jpg';

        Event.observe($('btn01'), 'click', function() {
          $('mainPhoto').src = 'img/hall_photo_01.jpg';
          $('btn01').src = 'img/hall_btn_01v.jpg';
          $('btn02').src = 'img/hall_btn_02.jpg';
          $('btn03').src = 'img/hall_btn_03.jpg';
          $('btn04').src = 'img/hall_btn_04.jpg';
          $('btn05').src = 'img/hall_btn_05.jpg';
          $('btn06').src = 'img/hall_btn_06.jpg';
        });
        Event.observe($('btn02'), 'click', function() {
          $('mainPhoto').src = 'img/hall_photo_02.jpg';
          $('btn01').src = 'img/hall_btn_01.jpg';
          $('btn02').src = 'img/hall_btn_02v.jpg';
          $('btn03').src = 'img/hall_btn_03.jpg';
          $('btn04').src = 'img/hall_btn_04.jpg';
          $('btn05').src = 'img/hall_btn_05.jpg';
          $('btn06').src = 'img/hall_btn_06.jpg';
        });
        Event.observe($('btn03'), 'click', function() {
          $('mainPhoto').src = 'img/hall_photo_03.jpg';
          $('btn01').src = 'img/hall_btn_01.jpg';
          $('btn02').src = 'img/hall_btn_02.jpg';
          $('btn03').src = 'img/hall_btn_03v.jpg';
          $('btn04').src = 'img/hall_btn_04.jpg';
          $('btn05').src = 'img/hall_btn_05.jpg';
          $('btn06').src = 'img/hall_btn_06.jpg';
        });
        Event.observe($('btn04'), 'click', function() {
          $('mainPhoto').src = 'img/hall_photo_04.jpg';
          $('btn01').src = 'img/hall_btn_01.jpg';
          $('btn02').src = 'img/hall_btn_02.jpg';
          $('btn03').src = 'img/hall_btn_03.jpg';
          $('btn04').src = 'img/hall_btn_04v.jpg';
          $('btn05').src = 'img/hall_btn_05.jpg';
          $('btn06').src = 'img/hall_btn_06.jpg';
        });
        Event.observe($('btn05'), 'click', function() {
          $('mainPhoto').src = 'img/hall_photo_05.jpg';
          $('btn01').src = 'img/hall_btn_01.jpg';
          $('btn02').src = 'img/hall_btn_02.jpg';
          $('btn03').src = 'img/hall_btn_03.jpg';
          $('btn04').src = 'img/hall_btn_04.jpg';
          $('btn05').src = 'img/hall_btn_05v.jpg';
          $('btn06').src = 'img/hall_btn_06.jpg';
        });
        Event.observe($('btn06'), 'click', function() {
          $('mainPhoto').src = 'img/hall_photo_06.jpg';
          $('btn01').src = 'img/hall_btn_01.jpg';
          $('btn02').src = 'img/hall_btn_02.jpg';
          $('btn03').src = 'img/hall_btn_03.jpg';
          $('btn04').src = 'img/hall_btn_04.jpg';
          $('btn05').src = 'img/hall_btn_05.jpg';
          $('btn06').src = 'img/hall_btn_06v.jpg';
        });
     }

     // lightwindow時にフォームのスタイルをhiddenにされて、FFで値を読めなくなるため
     if ($('seat')) {
       Event.observe($('seatBlock'), 'change', function() {
         $('seatBlockH').value = $('seatBlock').value;
       });

       Event.observe($('seatRecord'), 'change', function() {
         $('seatRecordH').value = $('seatRecord').value;
       });

       Event.observe($('seatField'), 'change', function() {
         $('seatFieldH').value = $('seatField').value;
       });
     }
  },

    checkSafari: function() {	// Safari ver2で一部表示がおかしくなったため、追加
      if (navigator.userAgent.toLowerCase().indexOf("safari") == -1) return false;
      var safariVer = navigator.userAgent.split('/');
      var n = safariVer.length - 1;
      var safariNum = safariVer[n].split(".")[0];
      if (safariNum > 500) {
        return false
      } else {
        return true;
      }
    },

    // フェードイン・フェードアウト
    addFadeOut: function(event) {	// マウスアウト処理
      var element = Event.element(event);
      for (var i = 0; i < 10; i++) {
        setTimeout(
          function() {
            element.n += 10;
            element.style.opacity = element.n / 100;
            element.style.mozOpacity = element.n / 100;
            element.style.filter = "alpha(opacity="+element.n+")";
          },
          i*50
        );
      }
    },

    addFadeOver: function(event) {	// マウスオーバー処理
      var element = Event.element(event);
      for (var i = 0; i < 2; i++) {
        setTimeout(
          function() {
            element.n -= 50;
            element.style.opacity = element.n / 100;
            element.style.mozOpacity = element.n / 100;
            element.style.filter = "alpha(opacity="+element.n+")";
          },
          i*50
        );
      }
    },

    // 画像の差し替え
    addSwapOut: function(event) {	// マウスアウト処理
      var element = Event.element(event);
      element.src = this.getOutImg(element.src);
    },

    addSwapIn: function(event) {	// マウスオーバー処理
      var element = Event.element(event);
      element.src = this.getOnImg(element.src);
    },

    getOutImg: function(src) {		// ロールオーバー画像のパス取得
      var fType = src.substring(src.lastIndexOf('.'), src.length);
      var newSrc = src.replace(fType, 'o' + fType);
      return newSrc;
    },

    getOnImg: function(src) {		// ロールアウト画像のパス取得
      var fType = src.substring(src.lastIndexOf('.'), src.length);
      if (src.indexOf('o' + fType) != -1) {
        var newSrc = src.replace('o' + fType, fType);
        return newSrc;
      } else {
        return src;
      }
    },

    preLoad: function(src) {
      var tempImg = new Image();
      tempImg.src = src;
    }
};

Event.observe(window, 'load', function () {
  new fxWindow('fa', 'mo');
});

// マウスホイールイベント取得用

Object.extend(Event, {
  wheel:function (event){
    var delta = 0;
    if (!event) event = window.event;
    if (event.wheelDelta) {
      delta = event.wheelDelta/120; 
      if (window.opera) delta = -delta;
    } else if (event.detail) { delta = -event.detail/3;	}
    return Math.round(delta); //Safari Round
  }
});

// ホールステージビュー

function seatView(image) {
  $('seatImage').src = 'img/hall/' + image + '.jpg';
  $('seatPotision').src = 'img/seat_img_01_' + image.slice(0, 2) + '.gif';
  return void(0);
}

// 座席検索用フォーム
function getSeatNum() {
  var myArray = new Array();
  myArray.push($F('seatBlockH'));
  myArray.push($F('seatRecordH'));
  myArray.push($F('seatFieldH'));
  return myArray;
}

