/*
 * jquery-latestranking.js
*/

(function () {

  $(function () {

/* !jQuery Object */

    var $latestRanking = $('#latestRanking');
    var $latestRankingNav = $latestRanking.find('.category');
    var $latestRankingNavBtn = $latestRankingNav.find('a');


/*  */
    var dataURL = encodeURIComponent('http://mu-mo.net/index.php?__mode=get_rank_rss&type=1');
    
    var contentsDataIndex = [
      'full',
      'uta',
      'kisekae',
      'asia',
      'call',
      'cd',
      'dvd',
      'goods'
    ];
    
    var contentsData = {
      full : {
        title : '着うたフル(R)',
        dataURL : encodeURIComponent('http://mu-mo.net/index.php?__mode=get_rank_rss&type=2')
      },
      uta : {
        title : '着うた(R)',
        dataURL : encodeURIComponent('http://mu-mo.net/index.php?__mode=get_rank_rss&type=1')
      },
      kisekae : {
        title : 'キセカエ',
        dataURL : encodeURIComponent('http://mu-mo.net/index.php?__mode=get_rank_rss&type=5')
      },
      asia : {
        title : 'Asia',
        dataURL : encodeURIComponent('http://mu-mo.net/index.php?__mode=get_rank_rss&type=6')
      },
      call : {
        title : '呼び出し音',
        dataURL : encodeURIComponent('http://mu-mo.net/index.php?__mode=get_rank_rss&type=3')
      },
      cd : {
        title : 'CD',
        dataURL : encodeURIComponent('http://shop.mu-mo.net/avx/sv/rank2?template_id=rankXmlWeeklyCd')
      },
      dvd : {
        title : 'DVD',
        dataURL : encodeURIComponent('http://shop.mu-mo.net/avx/sv/rank2?template_id=rankXmlWeeklyDvd')
      },
      goods : {
        title : 'グッズ',
        dataURL : encodeURIComponent('http://shop.mu-mo.net/avx/sv/rank2?template_id=rankXmlWeeklyGoods')
      }
    };
    
    var count = 0;


/* !初期化 */
    
    loadingContents();


/* イベント */

    // ナビのボタンがクリックされとき
    $latestRankingNavBtn.live('click', function (evt) {

      // プロパティ
      var $currentTarget = $(evt.currentTarget);
      var href = $currentTarget.attr('href');

      // ナビのボタンの切り替え
      $latestRankingNavBtn.filter('.current').removeClass('current');
      $currentTarget.addClass('current');
      
      // 一覧の切り替え
//*/
      $latestRanking.children('section')
        .filter(':visible').hide()
      .end()
        .filter(href).show()
      .end();
//*/

      return false;
    });
    
    $('#latestRanking-full a,' +
    '#latestRanking-uta a,' +
    '#latestRanking-kisekae a,' +
    '#latestRanking-asia a,' +
    '#latestRanking-call a').live('click',function (evt) {
      evt.preventDefault();
      var $currentTarget = $(evt.currentTarget);
      window.open($currentTarget.attr('href'), 'mumo_qr_page', 'top=0,left=0,width=600,height=583');
    });


/* メソッド */    

    // コンテンツを読み込む
    function loadingContents() {
      
      $.ajax({
        url: 'loadingxml.php?request=' + contentsData[contentsDataIndex[count]].dataURL,
        dataType: 'xml',
        error: function (jqXHR, textStatus, errorThrown) {
          /* エラーの処理 */
        },
        success: function (data) {

          var $data = $(data);
          var $items = $data.find('item');
          var $section;

          var listHTML = '';
      
          // 10アイテム分繰り返し
          for (var i = 0; i < 10; i++) {
          
            // jQuery Object
            var $item = $items.eq(i);
            var $title = $item.find('title');
            var $description = $item.find('description');
            var $link = $item.find('link');

            var titleText  = $title.text();
            var artistText = $description.text();
            var linkText   = $link.text();
            
            var popupTitle = encodeURIComponent(titleText + '/' + artistText);
            
            // URLを変換する
            if (/(full|uta|kisekae|asia|call)/.test(contentsDataIndex[count])) {
              linkText = 'http://mu-mo.net/index.php?__mode=urldlg&f=api&type=page&url=' + 
                         encodeURIComponent($link.text()) +
                         '&title=' +
                         popupTitle +
                         '&popup=1';
            }
          
            // 上位3件以内の時
            if (i < 3) {
              listHTML += '    <li class="rank' + (i + 1) + ' top3"><a href="' + linkText + '" target="_blank"><div class="title">' + titleText + '<br><small>' + artistText + '</small></div></a></li>\n';
            }
            // 4件目以降の時
            else {
              listHTML += '    <li class="rank' + (i + 1) + '"><a href="' + linkText + '" target="_blank">' + titleText + ' / ' + artistText + '</a></li>\n';
            }
    
          }
    
          // セクションを生成
          $section = $('<section>').attr({
            'class' : 'ranking',
            'id' : 'latestRanking-' + contentsDataIndex[count]
          }).html('  <h3>' + contentsData[contentsDataIndex[count]].title + '</h3>\n' +
            '  <ol>\n' +
            listHTML +
            '  </ol>\n'
          );

          // HTMLを追加
          $latestRanking.append($section);
          
          // マーキーさせる
          $('#latestRanking-' + contentsDataIndex[count] + ' li.top3 a .title').marquee();
          $('#latestRanking-' + contentsDataIndex[count] + ' li:not(.top3) a').marquee();
          
          // 最初のセクション以外は非表示にする
          if (count != 0) {
            $section.css({ display : 'none' });
          }
          
          ++count;
          
          // 全て読み込み完了していない場合は繰り返す
          if (count != contentsDataIndex.length) {
            loadingContents();
          }

        }
      });

    }

  });

})(jQuery);

