var sktv = {
    objTv : {},
    nowWeekday : '',         // 現在の曜日
    nowTimeZone : '',        // 現在の時間帯
    viewChannel : 'program', // 表示しているチャンネル(デフォルト「番組をみる」)
    viewTimeZone : '',       // 表示している時間帯
    viewWeekday : '',        // 表示している曜日
    pageCountMax : 10,       // 1ページあたりの表示データMAX件数
    pageCount : 0,           // 現在表示している件数
    pageAll : 0,             // 取得したデータの全ページ数
    pageNow : 1,             // 現在の表示しているページ
    allData : 0,             // 取得したデータの全件数
    weekdayData : [          // 曜日データ
        {'id':'1', 'name':'月曜日'},
        {'id':'2', 'name':'火曜日'},
        {'id':'3', 'name':'水曜日'},
        {'id':'4', 'name':'木曜日'},
        {'id':'5', 'name':'金曜日'},
        {'id':'6', 'name':'土曜日'},
        {'id':'0', 'name':'日曜日'}
    ],
    timezoneData : [         // 時間帯データ
        {'id': '6-11', 'name':'06:00-12:00'},
        {'id':'12-17', 'name':'12:00-18:00'},
        {'id':'18-23', 'name':'18:00-24:00'},
        {'id':'0-5' , 'name':'24:00-06:00'}
    ],
    submenu_html : function(type) { // サブメニュー作成
        var data = eval('sktv.' + type + 'Data');
        var html = '';
        for(var i=0; i < data.length; i++) {
            html += '<li class="channel-sub-off" id="' + type + data[i].id + '">' +
                    '<a href="javascript:void(0)" title="' + data[i].name + '" onclick="sktv.narrow_' + type + '(\'' + data[i].id + '\');return false;">' + data[i].name + '</a></li>';
        }
        return html;
    },
    create_script : function() { // API呼び出し
        var s = document.createElement('script');
        var u = '/api/tv?callback=sktv.get_data&per_page=' + sktv.pageCountMax + '&page=' + sktv.pageNow + '&channel=' + sktv.viewChannel;
        if(sktv.viewChannel == 'ranking') {
            u += '&order_by=popular';
        } else {
            u += '&order_by=start';
        }
        if(sktv.viewTimeZone) {
            u += '&upper_start=' + sktv.viewTimeZone.split('-')[0] + '&lower_start=' + sktv.viewTimeZone.split('-')[1];
        }
        if(sktv.viewWeekday) {
            u += '&week_day=' + sktv.viewWeekday;
        }

        u += '&' + (new Date()).getTime();
        s.src = u;
        s.type = 'text/javascript';
        s.charset = 'utf-8';
        document.getElementsByTagName('head')[0].appendChild(s);

        /* 画面リセット */
        document.getElementById('mainContentsData').innerHTML = '<div style="text-align:center;color:#FFF;"><img src="/images/ja/tv_cast/loading.gif" /><br />データ読み込み中</div>';
        document.getElementById('mainContentsNum').innerHTML = '　';
        document.getElementById('mainContentsNumB').innerHTML = '　';
    },
    get_timezone : function(time) { // 時間帯取得
        var nowtime = new Date(time * 1000).getHours();
        if((nowtime >= 6) && (nowtime <= 11)) {
            return '6-11';
        } else if((nowtime >= 12) && (nowtime <= 17)) {
            return '12-17';
        } else if((nowtime >= 18) && (nowtime <= 23)) {
            return '18-23';
        } else {
            return '0-5';
        }
    },
    get_weekday : function (date) {
        var weekday = String(new Date(date * 1000).getDay());
        for(var i in sktv.weekdayData) {
            if(sktv.weekdayData[i].id == weekday) {
                return sktv.weekdayData[i].name;
            }
        }
        return sktv.nowWeekday;
    },
    onair_time : function(starttime, endtime) {
        /* 放送日時設定 */
        var onairTime;
        var startDate = ('0' + String(new Date(starttime * 1000).getMonth()+1)).slice(-2) + '月' +
                        ('0' + new Date(starttime * 1000).getDate()).slice(-2) + '日';
        var startWeekDay = sktv.get_weekday(starttime).replace('曜日', '');
        var endDate = ('0' + String(new Date(endtime * 1000).getMonth()+1)).slice(-2) + '月' +
                        ('0' + new Date(endtime * 1000).getDate()).slice(-2) + '日';
        var endWeekDay = sktv.get_weekday(endtime).replace('曜日', '');
        var todayDate = ('0' + String(new Date().getMonth()+1)).slice(-2) + '月' +
                        ('0' + new Date().getDate()).slice(-2) + '日';
        if(startDate == endDate) {
            onairTime = (startDate == todayDate) ? '本日(' + startDate + ')' : startDate + '(' + startWeekDay + ')' + ' ';
            onairTime += new Date(starttime * 1000).getHours() + ':' + ('0' + String(new Date(starttime * 1000).getMinutes())).slice(-2) + '～' +
                        new Date(endtime * 1000).getHours() + ':' + ('0' + String(new Date(endtime * 1000).getMinutes())).slice(-2);
        } else {
            onairTime = (startDate == todayDate) ? '本日(' + startDate + ')' : startDate + '(' + startWeekDay + ')';
            onairTime += new Date(starttime * 1000).getHours() + ':' + ('0' + String(new Date(starttime * 1000).getMinutes())).slice(-2) + ' ～ ' +
                        endDate + '(' + endWeekDay + ')' + ('0' + String(new Date(endtime * 1000).getHours())).slice(-2) + ':' + ('0' + String(new Date(endtime * 1000).getMinutes())).slice(-2);
        }
        return onairTime;
    },
    view_item : function(data) { // データ表示
        var html = '';
        if(!data.length) {
            html = '<p style="text-align:center;color:#FFF;">該当データはありません。</p>';
        } else {
            for(var i=0; i<sktv.pageCount; i++){
                /* ライブログ部分作成 */
                var thumbList = '過去動画はありません';
                if(data[i].media_list) {
                    thumbList = '<ul>';
                    for(var j=0; j < data[i].media_list.length; j++) {
                        thumbList += '<li><dl><dt><a class="mediaThumb" href="/video/' + data[i].media_list[j].media_id + ' "><img width="100" height="75" src="' + data[i].media_list[j].thumb + '" /></a></dt><dd>' + data[i].media_list[j].media_title + '</dd></dl></li>';
                        if (j==3) {break;}
                    }
                    thumbList += '</ul>';
                }

                /* メインデータ作成 */
                html += '<div class="InfoTop"></div>' +
                        '<div class="Info">' +
                            '<ul class="info-form">' +
                            '<li>' +
                                '<div class="member-cell"><dl class="title">' + data[i].title + '</dl>' +
                                '<div class="member-left">' +
                                    '<a class="thumb" href="/profile/' + data[i].user_name + '"><img width="160" height="120" alt="' + data[i].title + '" src="' + data[i].profile_image + '" /></a><br />' +
                                    '<div class="message"><a href="/message/send/' + data[i].user_name + '">メッセージを送信</a></div>' +
                                    '<div class="favorite"><a href="/favorite/add/' + data[i].user_name +'" onclick="return addFavorite(\'' + data[i].user_name +'\')">お気に入りに追加</a></div>' +
                                '</div>' +
                                '<div class="member-right">' +
                                    '<dl>' +
                                        '<dt>出演者 : </dt><dd class="name"><a href="/profile/' + data[i].user_name + '">' + data[i].screen_name + '</a></dd>' +
                                        '<dt>次回予定 : </dt><dd class="date">' + sktv.onair_time(data[i].start, data[i].end) + '</dd>' +
                                        '<dt class="msg">メッセージ : </dt><dd class="description">' + data[i].description.replace(/(\r\n|\n|\r)/g, "<br />") + '</dd>' +
                                        '<dt>過去動画 : </dt><dd class="archive">' + thumbList + '</dd>' +
                                    '</dl>' +
                                '</div>' +
                                '</div>' +
                            '</li>' +
                            '</ul>' +
                        '</div>' +
                        '<div class="InfoBottom"></div>';
            }
        }
        document.getElementById('mainContentsData').innerHTML = html;
    },
    get_data : function(data) { // APIデータ取得
        sktv.objTv = '';
        sktv.nowWeekday = String(new Date(data.now_time * 1000).getDay());
        sktv.nowTimeZone = sktv.get_timezone(data.now_time);
        sktv.pageCount = data.count;
        sktv.pageAll = data.all_page;
        sktv.pageNow = data.page;
        sktv.allData = data.all;
        if(data.tv_list.length) {
            sktv.objTv = data.tv_list;
        }
        sktv.screen_control(1);
    },
    screen_control : function(type) {
        //大項目制御
        var allChannel = document.getElementById('channel').getElementsByTagName('li');
        for(var i=0; i < allChannel.length; i++) {
            allChannel[i].className = (allChannel[i].className.match(sktv.viewChannel)) ? allChannel[i].className.replace(/-off/, '-on') : allChannel[i].className.replace(/-on/, '-off');
        }

        //サブメニュー制御
        if(sktv.viewChannel == 'youbi') {
            document.getElementById('channel-sub').style.height = '35px';
            document.getElementById('channel-sub').innerHTML = sktv.submenu_html('weekday');
            //曜日制御
            var allWeekday = document.getElementById('channel-sub').getElementsByTagName('li');
            for(var i=0; i < allWeekday.length; i++) {
                switch(allWeekday[i].id.replace(/weekday/, '')) {
                    case sktv.viewWeekday:
                        allWeekday[i].className = 'channel-sub-on';
                        break;
                    case '6':
                        allWeekday[i].className = 'channel-sub-sat';
                        break;
                    case '0':
                        allWeekday[i].className = 'channel-sub-sun';
                        break;
                    default:
                        allWeekday[i].className = 'channel-sub-off';
                        break;
                }
            }
        } else if(sktv.viewChannel == 'time') {
            document.getElementById('channel-sub').style.height = '35px';
            document.getElementById('channel-sub').innerHTML = sktv.submenu_html('timezone');
            //時間帯制御
            var allTime = document.getElementById('channel-sub').getElementsByTagName('li');
            for(var i=0; i < allTime.length; i++) {
                allTime[i].className = (allTime[i].id == ('timezone' + sktv.viewTimeZone)) ? allTime[i].className.replace(/-off/, '-on') : allTime[i].className.replace(/-on/, '-off');
            }
        } else {
            document.getElementById('channel-sub').style.height = '0';
            document.getElementById('channel-sub').innerHTML = '';
        }

        //ページング制御
        if(type) {
            var prevPageHtml = (sktv.pageNow > 1) ? '<a href="javascript:void(0)" onclick="sktv.paging(' + eval(Number(sktv.pageNow)-1)  + ');return false;" title="前へ">&lt; 前へ</a>' + ' | ' : '';
            var nextPageHtml = (sktv.pageNow < sktv.pageAll) ? ' | <a href="javascript:void(0)" onclick="sktv.paging(' + eval(Number(sktv.pageNow)+1)  + ');return false;" title="次へ">次へ &gt;</a>' : '';
            var pagingTopHtml = (sktv.allData > 0) ? eval(sktv.pageCountMax * sktv.pageNow - sktv.pageCountMax + 1) + ' - ' + eval(sktv.pageCountMax * sktv.pageNow - sktv.pageCountMax + sktv.pageCount) + ' of ' + sktv.allData : '　';

            var pagingBtmHtml = '';
            var wide = 5;
            var pageNum = Number(sktv.pageNow);
            var pageAll = Number(sktv.pageAll);

            if (pageAll > 1) {

                pagingBtmHtml += (1 == sktv.pageNow) ? '<strong>' + 1 + '</strong>&nbsp;&nbsp;' : '<a href="javascript:void(0)" onclick="sktv.paging(' + 1 + ');return false;" >' + 1 + '</a>&nbsp;&nbsp;';

                if (pageNum - wide > 2) {
                    pagingBtmHtml += "...";
                }

                var low = pageNum - wide;
                low = (low < 2) ? 2 : low;
                var high = pageNum + wide;

                for(var i = 2; i < pageAll; i++) {
                    if (i >= low && i <= high) {
                        pagingBtmHtml += (i == sktv.pageNow) ? '<strong>' + i + '</strong>&nbsp;&nbsp;' : '<a href="javascript:void(0)" onclick="sktv.paging(' + i + ');return false;" >' + i + '</a>&nbsp;&nbsp;';
                    }
                }

                if (pageAll - (pageNum + wide) > 1) {
                    pagingBtmHtml += "...";
                }

                pagingBtmHtml += (sktv.pageAll == sktv.pageNow) ? '<strong>' + sktv.pageAll + '</strong>&nbsp;&nbsp;' : '<a href="javascript:void(0)" onclick="sktv.paging(' + sktv.pageAll + ');return false;" >' + sktv.pageAll + '</a>&nbsp;&nbsp;';
            }

            document.getElementById('mainContentsNum').innerHTML = prevPageHtml + pagingTopHtml + nextPageHtml;
            document.getElementById('mainContentsNumB').innerHTML = prevPageHtml + pagingBtmHtml + nextPageHtml;

            sktv.view_item(sktv.objTv);
        }
    },
    narrow_timezone : function(time) { // 時間帯の絞込み
        sktv.viewTimeZone = time;
        sktv.pageNow = 1;
        sktv.create_script();
    },
    narrow_weekday : function(weekday) { // 曜日の絞込み
        sktv.viewWeekday = weekday;
        sktv.pageNow = 1;
        sktv.create_script();
    },
    paging : function(page) { // ページング
        sktv.pageNow = page;
        sktv.create_script();
    },
    view_program : function(channel) { // チャンネル設定
        sktv.viewChannel = channel;
        sktv.nowWeekday = String(new Date().getDay()); // デフォルト曜日(ローカル時間)
        sktv.nowTimeZone = sktv.get_timezone(Math.floor((new Date()).getTime()/1000)); // デフォルト時間帯(ローカル時間)
        sktv.viewWeekday = (channel == 'youbi') ? String(sktv.nowWeekday) : ''; //「曜日で見る」の場合のみ現在の曜日をデフォルト設定
        sktv.viewTimeZone = (channel == 'time') ? sktv.nowTimeZone : ''; //「時間帯で見る」の場合のみ現在の時間帯をデフォルト設定
        sktv.pageNow = 1;
        sktv.create_script();
    }
};

(function(){ // パラメータ取得
    document.getElementById('channel-sub').style.height = '0';
//    sktv.create_script();
    sktv.screen_control(0);
})();


