//
//  module name : ticker.js
//
//  Last update : 2009/03/24 27:10
//
//
//  (当スクリプトはjquery.jsの使用を前提とする)
//

  //
  // XML表示制御変数定義
  //
  var xmlObj; // XMLオブジェクト
  var xmlCnt; // XML表示カウンタ
  var dspMod; // タイトル表示フェーズ
  var dspPer; // タイトル表示透明度

  //
  // ティッカー初期処理
  // (ページがロードされると以下のイベント実行)
  //
  $(function(){
    requestTicker();
  });

  //
  // TickerXMLにアクセスし受信内容を確認します
  //
  function requestTicker() {
    //XMLHttpRequestオブジェクト生成
    var obj = createHttpRequest();
    //open メソッド
    obj.open('GET', './xml/ticker.xml' , true);
    //受信時に起動するイベント
    obj.onreadystatechange = function() {
      //readyState値は4で受信完了
      if(obj.readyState==4) {
        //コールバック
        loadTicker(obj);
      }
    }
    //send メソッド
    obj.send(null);
  }

  //
  // TickerXMLアクセスコールバック関数(受信時に実行されます )
  //
  function loadTicker(obj) {
    xmlObj = obj.responseXML;
    xmlCnt = 0;
    dspMod = 'fi';
    dspPer = 0;
    setAlpha(dspPer);
    dispTicker();
  }

  //
  // XML表示(5秒後にタイマーコールバック実行)
  //
  function dispTicker() {
    var tickerData = xmlObj.getElementsByTagName('Ticker');
    var titleData = xmlObj.getElementsByTagName('Title');
    var urlData = xmlObj.getElementsByTagName('Url');
    var targetData = xmlObj.getElementsByTagName('Target');

    if(xmlCnt >= tickerData.length) {
      xmlCnt = 0;
    }
    if(tickerData.length > 0) {
      // Fade In 0%でニュースタイトル切り替え
      if((dspMod == 'fi')&&(dspPer == 0)) {
        var buf = titleData[xmlCnt].childNodes[0].nodeValue;
        if(urlData[xmlCnt].childNodes[0] != null ) {
          buf = '<a href="' + urlData[xmlCnt].childNodes[0].nodeValue + '"';
          if(targetData[xmlCnt].childNodes[0] != null ) {
            buf = buf + ' target="' + targetData[xmlCnt].childNodes[0].nodeValue + '"';
          }
          buf = buf + '>' + titleData[xmlCnt].childNodes[0].nodeValue + '</a>';
        }
        document.getElementById('tickerDiv').innerHTML = buf;
        xmlCnt ++;
      }
      var dur = 20; // Fade間隔20msec(増減2%でトータル1sec)
      // Fede In フェーズ
      if(dspMod == 'fi') {
        setAlpha(dspPer);
        dspPer += 2; // Fade増分2%
        if(dspPer > 100) {
          dspMod = 'still';
          dur = 4000; // 静止時間4sec
        }
      }
      // 静止フェーズ
      if(dspMod == 'still') {
        dspMod = 'fo';
        dspPer = 100;
      }
      // Fede Out フェーズ
      if(dspMod == 'fo') {
        setAlpha(dspPer);
        dspPer -= 2; // Fade減分2%
        if(dspPer < 0) {
          dspMod = 'fi';
          dspPer = 0;
        }
      }
      // 次回タイマー割り込み設定
      setTimeout('dispTicker()', dur);
    }
  }

  //
  // 透明度設定
  //
  function setAlpha(p) {
    //Win ie用
    if(window.ActiveXObject) {
      document.getElementById('tickerDiv').filters.alpha.opacity = p;
    }
    else {
      //Win ie以外
      document.getElementById('tickerDiv').style.opacity = p/100;
    }
  }

  //
  // XMLHttpRequestオブジェクト生成
  //
  function createHttpRequest() {
    //Win ie用
    if(window.ActiveXObject) {
        try {
            //MSXML2以降用
            return new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch (e) {
            try {
                //旧MSXML用
                return new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch (e2) {
                return null;
            }
         }
    }
    else {
      if(window.XMLHttpRequest) {
        //Win ie以外のXMLHttpRequestオブジェクト実装ブラウザ用
        return new XMLHttpRequest();
      }
      else {
        return null;
      }
    }
  }



  //
  // CampaignXMLアクセスコールバック関数(受信時に実行されます )
  //
  function loadCampaign(obj) {
    var xml = obj.responseXML;
    if(xml != null) {
      var campaignData = xml.getElementsByTagName('Campaign')[0];
      if(campaignData != null) {
        document.getElementById('campaignDiv').innerHTML = campaignData.childNodes[0].nodeValue;
      }
    }
  }

