// リアルタイム情報

$(function($){
    var queue = [];
    var temp  = '';

    var realtimeInfo01 = setInterval(
        (function() {
            $.ajax({
                url: "/api/activity",
                ifModified: true,
                dataType: "json",
                success: function(json) {
                    $.each(json||[], function(i, user) {
                        user.elementid = (user.username + user.time).replace(/-|:|\s/g, '');

                        if (new RegExp('\\b' + user.elementid + '\\b').test(temp)) {
                            return true;
                        }

                        var date = new Date(user.time * 1000);
                        user.timeinfo = date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();

                        if (user.type === 'join') {
                            user.statusinfo = '<a href="/profile/' + user.host.username + '"></a>さんのライブに参加しました';
                        } else if (user.type === "live") {
                            user.statusinfo = "ライブを開始しました";
                        } else if (user.type === "chat") {
                            user.statusinfo = "チャットルームに参加しました";
                        } else {
                            user.statusinfo = "ログインしました";
                        }

                        queue.push(user);

                        temp += user.elementid + ' ';
                    });
                }
            });

            return arguments.callee;
        })(),
    2 * 60 * 1000);

    var realtimeInfo02 = setInterval(
        (function() {
            if (queue.length) {
                setTimeout(function(){
                    var user = queue.pop();

                    user.profile_image = user.profile_image.indexOf('static') ? user.profile_image.replace('live', 'thumb') : user.profile_image.replace('na_160x120', 'na_80x60');

                    var hasPrm = false;
                    var divRoleImages = $('<div class="prem_badge"></div>');
                    var imgSrc = {
                        'prefix': '<img src="/images/ja/member/premium_icon_mini_',
                        'suffix': '.png" />'
                    };
                    if ($.inArray('mystyle', user.roles) !== -1) {
                        hasPrm = true;
                        divRoleImages.append($(imgSrc.prefix + 'mystyle' + imgSrc.suffix));
                    }
                    if ($.inArray('yy', user.roles) !== -1) {
                        hasPrm = true;
                        divRoleImages.append($(imgSrc.prefix + 'yy' + imgSrc.suffix));
                    }
                    if ($.inArray('professional', user.roles) !== -1) {
                        hasPrm = true;
                        divRoleImages.append($(imgSrc.prefix + 'pro' + imgSrc.suffix));
                    }

                    $('<li id="' + user.elementid + '" class="list ' + (hasPrm ? 'hasPrm' : '') + ' "></li>')
                    .append(divRoleImages)
                    .append(
                        $('<a href="/profile/' + user.username + '"></a>')
                        .html(
                            $('<img src="' + user.profile_image + '" class="profileImage" width="60" height="45" />').attr('alt', user.display_name)
                        )
                    )
                    .append('<div class="userInfo"><a href="/profile/' + user.username + '"></a><p class="info01">' + user.statusinfo + '</p><p class="info02">' + user.timeinfo + '</p></div>')
                    .prependTo('#feedList')
                    .hide();

                    $('.userInfo a:first').text(user.display_name);
                    if (user.host != null) {
                        $('.info01 a:first').text(user.host.display_name);
                    }

                    $('#' + user.elementid).animate({height: 'show', marginTop: 'show', marginBottom: 'show', paddingTop: 'show', paddingBottom: 'show',
                                                     opacity: 'show'},
                                                     1000);

                    $("ul#feedList li.list:gt(19)").remove();
                }, Math.random() * 3.5 * 1000 + 500);
            }
            return arguments.callee;
        })(),
    4 * 1000);

    $('#realtimeBtn').click(function(){
        clearInterval(realtimeInfo01);
        clearInterval(realtimeInfo02);
    }).mouseover(function(){
        $(this).addClass('over');
    }).mouseout(function(){
        $(this).removeClass('over');
    });
});

