/* ------------------------------------------------------------ */
/*                                                              */
/*                        ajax driven pages                     */
/*                                                              */
/* ------------------------------------------------------------ */

(function($) {

  // Newslist ------------------------------------------------------------
  getTickerlist = function() {
    $.ajax({
      type:"GET",
      url: '/jsp/ticker_list.jsp',
      data: 'CHANNEL_ID=6',
      cache: false,
      dataType: 'xml',
      timeout: 30000,
      error: function() {
        $('div#ticker').remove();
//        alert('ティッカーニュースのデータ読み込みに失敗しました。お手数ですが、ブラウザの再読み込みを行ってください。');
      },
      success: function(xml) {
        ajaxXML = xml;
        setTickerlist();
      }
    });
  };
  var setTickerlist = function() {
    var targ = $('div#ticker');
    targ.empty().append('<ol></ol>');
    $(ajaxXML).find('ticker headline').each(function(j) {
      var link     = $.fn.setLink($('link',this).text());
      var window   = ($('window',this).text() == '') ? '' : ' target="'+$('window',this).text()+'"';
      var tracking = $.fn.setTracking($('ticker_id',this).text(), 'ticker');
      targ.children('ol').append('<li><a href="'+link+'"'+window+tracking+'>'+$('text',this).text()+'</a></li>');
    });
    ($('ticker headline',ajaxXML).size()<1) ? targ.remove() : targ.startTicker();
  };





  // Toppageinfolist ------------------------------------------------------------
  getToppageinfolist = function(blockNum) {
    var paramBlock = (typeof blockNum != 'undefined') ? ('&block='+blockNum) : '';
    $.ajax({
      type:"GET",
      url: '/jsp/toppageinfo_list.jsp',
      data: 'TOP_ID=6'+paramBlock,
      cache: false,
      dataType: 'xml',
      timeout: 30000,
      error: function() {
        // alert('おすすめ情報のデータ読み込みに失敗しました。お手数ですが、ブラウザの再読み込みを行ってください。');
      },
      success: function(xml) {
        ajaxXML = xml;
        setToppageinfolist();
      }
    });
  };
  var setToppageinfolist = function() {
    var infoItems = [
      {areaId:'programlist',block:1,carousel:1},
      {areaId:'pickup',block:2,carousel:0},
      {areaId:'related',block:3,carousel:1}
    ];
    for (var i in infoItems) {
      var item = infoItems[i];
      // if(item.areaId=='related') return false;

      // Carouselの場合
      if (item.carousel) {
        var targ = $('div#mod-'+item.areaId+' div.carousel');
        targ.empty().append('<ol></ol>');
        $(ajaxXML).find('toppageinfo info').filter(function() {return $('block',this).text()==item.block}).each(function(j) {
          var link     = $.fn.setLink($('link',this).text());
          var window   = $.fn.setWindow($('window',this).text());
          var tracking = $.fn.setTracking($('info_id',this).text(), item.areaId);
          targ.children('ol').append('<li class="item'+(j+1)+'"><a href="'+link+'"'+window+tracking+'><img src="./_common/thumb/'+item.areaId+'/'+$('info_id',this).text()+'.jpg" alt="" width="72" height="60" />'+$.fn.doTrim($('title',this).text(),20)+'</a></li>');
        });
        var itemLength = targ.children('ol').children().size();
        if (itemLength<1) {
          $('div#mod-'+item.areaId).remove();
        } else {
          var restCnt = ((5-itemLength%5)==5) ? 0:(5-itemLength%5);
          for (var j=1;j<=restCnt;j++){
            targ.children('ol').append('<li class="nobg"></li>');
          }
          targ.startCarousel(item.areaId,itemLength);
        }
      } else {
      // pickupの場合
        var targ = $('div#mod-'+item.areaId+' div.body');
        targ.empty();
        $(ajaxXML).find('toppageinfo info').filter(function() {return $('block',this).text()==item.block}).each(function(j) {
          if (j%3<1) targ.append('<ol class="ol'+Math.floor(j/3)+'"></ol>');
          var link     = $.fn.setLink($('link',this).text());
          var window   = $.fn.setWindow($('window',this).text());
          var tracking = $.fn.setTracking($('info_id',this).text(), item.areaId);
          targ.children('ol.ol'+Math.floor(j/3)).append('<li><a href="'+link+'"'+window+tracking+'><img src="./_common/thumb/'+item.areaId+'/'+$('info_id',this).text()+'.jpg" alt="" width="144" height="120" />'+$('title',this).text()+'</a><p>'+$('text',this).text()+'</p><p class="more"><a class="smlbtn smlbtn-more" href="'+link+'"'+window+tracking+'>もっと見る</a></p></li>');
        });
        (targ.children('ol').children().size()<1) ? $('div#mod-'+item.areaId).remove() : targ.find('ol').each(function(){
          $(this).children('li').flatHeights();
        });
      }
    }
  };


  $.fn.extend({
    setLink: function(val) {
      return ((val.length)&&(val!='cms')) ? val : '#';
    },
    setWindow: function(val) {
      return (val == '1') ? '' : ' target="_blank"';
    },
    setTracking: function(val, id) {
      return (val == '') ? '' : ' name="jupiter_tv_'+id+'-'+val+'" type="custom" onclick="cto.tracklink(this)"';
    },
    doTrim: function(val,threshold) {
      if (val.length>threshold) {
        return val.substr(0,threshold)+'...';
      } else {
        return val;
      }
    },
    // Remove "undefined" & Trim
    doClean: function(val) {
      return (val == null) ? '' : val.replace(/(^\s+)|(\s+$)/g,'');
    }
  });





  // NowOnAirlist ------------------------------------------------------------
  getNowonairlist = function(chId) {
    $.ajax({
      type:"GET",
      url: '/jsp/nowonair_list.jsp',
      data: 'COUNT=3&CHANNEL_ID='+chId,
      cache: false,
      dataType: 'xml',
      timeout: 30000,
      error: function() {
//        alert('放送中の番組のデータ読み込みに失敗しました。お手数ですが、ブラウザの再読み込みを行ってください。');
      },
      success: function(xml) {
        ajaxXML = xml;
        setNowonairlist(chId);
      }
    });
  };
  var setNowonairlist = function(chId) {
    var targ;
    switch (chId) {
      case 1: targ = $('div#tab-dc .nowonairlist'); break;
      case 4: targ = $('div#tab-xd .nowonairlist'); break;
    }
    targ.empty().append('<dl class="list-time"></dl>');
    $('#mod-onair .extra').empty();
    $(ajaxXML).find('onair program').each(function(j) {
      $('#mod-onair .extra:empty').text(formatDate($(this).attr('air_date')).format);
      var t = $(this).attr('air_time');
      var class_first = (j<1) ? ' class="first"':'';
      targ.children('dl').append('<dt'+class_first+'>'+t.substr(0,2)+':'+t.substr(2,2)+'～</dt><dd'+class_first+'><span>'+$('title_ja',this).text()+'</span></dd>');
    });
  };





  // Utility ------------------------------------------------------------
  var wd    = new Array('(日)','(月)','(火)','(水)','(木)','(金)','(土)');
  var wd_en = new Array('(Sun)','(Mon)','(Tue)','(Web)','(Thu)','(Fri)','(Sat)');
  
  formatDate = function(ymd,days) {
    var ret = {};
    var d = new Date(ymd.substr(0,4),ymd.substr(4,2)-1,ymd.substr(6,2));
    if (days) d.setDate(d.getDate()+days);
    ret.ymd = (days) ? (d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate()) : ymd;
    ret.format = d.getFullYear()+'/'+(d.getMonth()+1)+'/'+d.getDate()+wd[d.getDay()];
    return ret;
  }
})(jQuery);

