if (!Stickam || typeof Stickam === 'undefined') {var Stickam = {};};
if (!Stickam.player || typeof Stickam.player === 'undefined') {Stickam.player = {};};

Stickam.player.writeCommentedMediaPlayer = function(swfFile, FlashVars, width) {
    var htmls = ['<embed',
                 ' allowFullScreen="true"',
                 ' allowScriptAccess="always"',
                 ' class="flash_movieplayer"',
                 ' flashVars="', FlashVars, '"',
                 ' height="', Math.round(width * 0.75), '"',
                 ' name="movie_player"',
                 ' pluginspage="http://www.macromedia.com/go/getflashplayer"',
                 ' quality="high"',
                 ' scale="noscale"',
                 ' src="', swfFile, '"',
                 ' type="application/x-shockwave-flash"',
                 ' width="', width, '"',
                 '></embed>'];

    document.writeln(htmls.join(''));
};

Stickam.player.writeCommentedVideoPlayer = function(swfFile, FlashVars, height, width) {
    var htmls = ['<embed',
                 ' allowFullScreen="true"',
                 ' allowScriptAccess="always"',
                 ' class="flash_movieplayer"',
                 ' flashVars="', FlashVars, '"',
                 ' height="', height, '"',
                 ' name="movie_player"',
                 ' pluginspage="http://www.macromedia.com/go/getflashplayer"',
                 ' quality="high"',
                 ' src="', swfFile, '"',
                 ' type="application/x-shockwave-flash"',
                 ' width="', width, '"',
                 '></embed>'];

    document.writeln(htmls.join(''));
};

Stickam.player.writeHostChat = function(width, height, swfFile, FlashVars, bgcolor, wmode, age) {
    var token = $.cookie('token');
    wmode = wmode || 'window';

    if (token) {
        FlashVars = FlashVars.replace(/(.*)\b(webID=)(.*)/, '$1$2' + token + '$3').replace(/(.*)\b(userType=)\d*\b(.*)/, '$1$2' + 205 + '$3');
    } else {
        FlashVars = FlashVars.replace(/(.*)\b(userType=)\d*\b(.*)/, '$1$2' + 204 + '$3');
    }

    var htmls = ['<object',
                 ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"',
                 ' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"',
                 ' width="', width, '"',
                 ' height="', height, '"',
                 ' align=""',
                 '>',
                 '<param name="allowScriptAccess" value="always" />',
                 '<param name="bgcolor" value="', bgcolor, '" />',
                 '<param name="FlashVars" value="', FlashVars, '" />',
                 '<param name="movie" value="', swfFile, '" />',
                 '<param name="quality" value="hight" />',
                 '<param name="scale" value="noscale" />',
                 '<param name="wmode" value="', wmode, '" />',
                 '<embed',
                 ' bgcolor="', bgcolor, '"',
                 ' allowScriptAccess="always"',
                 ' FlashVars="', FlashVars, '"',
                 ' height="', height, '"',
                 ' quality="high"',
                 ' scale="noscale"',
                 ' src="', swfFile, '"',
                 ' type="application/x-shockwave-flash"',
                 ' width="', width, '"',
                 ' wmode="', wmode, '"',
                 '></embed>',
                 '</object>'];

    if (typeof age === 'number') {
        Stickam.player.confirmViewerAge(age, htmls.join(''));
    } else {
        document.writeln(htmls.join(''));
    }
};

Stickam.player.confirmViewerAge = function(age, html, callback) {
    var id_confirm = ('confirm-age-' + Math.random()).replace('.', '');

    document.writeln('<div id="' + id_confirm + '" class="confirm-age"></div>');

    var output = function() {
        if (age === 0
            || (birthday.year < today.getFullYear() - age
                || (birthday.year === today.getFullYear() - age
                    && ((birthday.month - 1) < today.getMonth() || (birthday.month - 1) === today.getMonth() && birthday.date <= today.getDate())))
        ) {
            if (callback) {
                eval(callback);
            } else {
                $('div#' + id_confirm).after(html);
            }

            $('div#' + id_confirm).remove();
        } else {
            $('div#' + id_confirm).html('<div><h2>この配信は' + age + '歳以上の視聴制限が設けられています。</h2><p>この配信は視聴できません。</p></div>');
        }

        if (age && birthday) {
            $.each(birthday, function(key, val) {
                $.jStorage.set('user.birthday.' + key, val);
            });
        }
    };

    if (!html && !callback) {
        return false;
    }

    var today = new Date(),
        birthday = {'year': 0,
                    'month': 0,
                    'date': 0},
        interval_time = 500;

    $.each(['year', 'month', 'date'], function(i, key) {
        birthday[key] = $.jStorage.get('user.birthday.' + key);
    });

    if (age && birthday.year) {
        $.each(birthday, function(key, val) {
            $.jStorage.set('user.birthday.' + key, val);
        });
    }

    if (age === 0 || (birthday.year && birthday.month && birthday.date)) {
        output();
    } else if ($.cookie('token')) {
        var confirm_interval_id = setInterval(function() {
            if ($.cookie(Stickam._COOKIE.PROFILE.KEY)) {
                clearInterval(confirm_interval_id);

                if ($.cookie(Stickam._COOKIE.PROFILE.KEY).split(Stickam._COOKIE.PROFILE.SEPARATOR)[Stickam._COOKIE.PROFILE.INDEX.BIRTHDAY].match(/(\d{4})-(\d{1,2})-(\d{1,2})/)) {
                    birthday = {'year': parseInt(RegExp.$1),
                                'month': parseInt(RegExp.$2),
                                'date': parseInt(RegExp.$3)};
                    output();
                }
            }
        }, interval_time);
    } else {
        var min_age = 14;

        $(['<div>',
           '<h2>この配信は' + age + '歳以上の視聴制限が設けられています。</h2>',
           '<p>視聴するには下記のフォームからあなたの生年月日を選択し、「設定する」ボタンを押してください。</p>',
           '<p>一度設定した誕生日はあとから変更できませんのでご注意ください。</p>',
           '<fieldset>',
           'あなたの生年月日<select id="birthday-year">',
           '<option value"">選択</option>',
           (function() {
            var htmls = new Array();
            for (var min_year = 1900, i = today.getFullYear() - min_age; min_year <= i; --i) {
                htmls[htmls.length] = '<option value="' + i + '">' + i + '</option>';
            }
            return htmls.join('');
           })(),
           '</select>年',
           '<select id="birthday-month">',
           '<option value"">選択</option>',
           (function() {
            var htmls = new Array();
            for (var i = 1, max_month = 12; i <= max_month; ++i) {
                htmls[i - 1] = '<option value="' + i + '">' + i + '</option>';
            }
            return htmls.join('');
           })(),
           '</select>月',
           '<select id="birthday-date">',
           '<option value"">選択</option>',
           (function() {
            var htmls = new Array();
            for (var i = 1, max_date = 31; i <= max_date; ++i) {
                htmls[i - 1] = '<option value="' + i + '">' + i + '</option>';
            }
            return htmls.join('');
           })(),
           '</select>日',
           '</fieldset>',
           '</div>'].join('')
        ).appendTo('div#' + id_confirm);

        $('<button>設定する</button>')
            .appendTo('div#' + id_confirm + ' div fieldset')
            .click(function() {
                birthday = {'year': parseInt($('#birthday-year').val()),
                            'month': parseInt($('#birthday-month').val()),
                            'date': parseInt($('#birthday-date').val())};

                if (new Date(birthday.year, (birthday.month - 1), birthday.date).getDate() !== birthday.date) {
                    alert('選択された年月日が正しくありません。選択内容を確認してください。');
                    return false;
                }

                output();
            });
    }
};

Stickam.player.startChat = function(width, height, Fid, swfFile, FlashVars, quality, bgcolor, wmode, scale, age) {
    scale = scale || 'showAll'

    var htmls = ['<object',
                 ' align=""',
                 ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"',
                 ' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"',
                 ' height="', height, '"',
                 ' id="', Fid, '"',
                 ' width="', width, '"',
                 '>',
                 '<param name="allowScriptAccess" value="always"/>',
                 '<param name="bgcolor" value=', bgcolor, '>',
                 '<param name="FlashVars" value=', FlashVars, ' />',
                 '<param name="movie" value=', swfFile, '>',
                 '<param name="quality" value=', quality, '>',
                 '<param name="scale" value="', scale, '" />',
                 (wmode ? ('<param name="wmode" value="', wmode, '" />') : ''),
                 '<embed',
                 ' allowScriptAccess="always"',
                 ' bgcolor="', bgcolor, '"',
                 ' FlashVars="', FlashVars, '"',
                 ' height="', height, '"',
                 ' quality="', quality, '"',
                 ' scale="', scale, '"',
                 ' src="', swfFile, '"',
                 ' type="application/x-shockwave-flash"',
                 ' width="', width, '"',
                 (wmode ? (' wmode="', wmode, '"') : ''),
                 '></embed>',
                 '</object>'];

    if (typeof age === 'number') {
        Stickam.player.confirmViewerAge(age, htmls.join(''));
    } else {
        document.writeln(htmls.join(''));
    }
};

Stickam.player.confirmTesterChat = function(age, callback) {
    if (typeof age === 'number') {
        Stickam.player.confirmViewerAge(age, '', callback);
    } else {
        eval(callback);
    }
};

Stickam.player.writeMiniPlayerAdmin2 = function(userId, sessionId, userName, hostName, langCd, sessionType, userType, staticServer, siteID, adminType) {
    var htmls = ['<object',
                 ' classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"',
                 ' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"',
                 ' width="120"',
                 ' height="120"',
                 ' id="stickam_player"',
                 ' align=""',
                 '>',
                 '<param name="movie" value="', staticServer, '/flash/stickam/stickam_player.swf?app=stickam_monitor_player.swf&userID=', userId, '" />',
                 '<param name="FlashVars" value="mute=1&webID=', sessionId, '&userName=', userName, '&userID=', userId, '&userType=', userType, '&sessionType=', sessionType, '&langID=', langCd, '&userSiteID=', siteID, '&hostName=', hostName, '&adminType=', adminType, '" />',
                 '<param name="allowScriptAccess" value="always"/>',
                 '<param name="quality" value="high" />',
                 '<param name="bgcolor" value="#FFFFFF" />',
                 '<embed',
                 ' align=""',
                 ' allowScriptAccess="always"',
                 ' bgcolor="#FFFFFF"',
                 ' height="120"',
                 ' name="stickam_player"',
                 ' pluginspage="http://www.macromedia.com/go/getflashplayer"',
                 ' quality="high"',
                 ' src="', staticServer, '/flash/stickam/stickam_player.swf?app=stickam_monitor_player.swf" FlashVars="mute=1&webID=', sessionId, '&userName=', userName, '&userID=', userId, '&userType=', userType, '&sessionType=', sessionType, '&langID=', langCd, '&userSiteID=', siteID, '&hostName=', hostName, '&adminType=', adminType, '"',
                 ' type="application/x-shockwave-flash"',
                 ' width="120"',
                 '></embed>',
                 '</object>'];

    document.writeln(htmls.join(''));
};

Stickam.player.writeViewerChat = function(width, height, Fid, swfFile, FlashVars, quality, bgcolor, wmode) {
    var htmls = ['<object',
                 ' align=""',
                 ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"',
                 ' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"',
                 ' height="', height, '"',
                 ' id=', Fid, '"',
                 ' width="', width, '"',
                 '>',
                 '<param name="FlashVars" value="', FlashVars, '" />',
                 '<param name="allowScriptAccess" value="always" />',
                 '<param name="bgcolor" value="', bgcolor, '" />',
                 '<param name="movie" value="', swfFile, '" />',
                 '<param name="quality" value="', quality, '" />',
                 '<param name="scale" value="noscale" />',
                 (wmode ? ('<param name="wmode" value="', wmode, '" />') : ''),
                 '<embed',
                 ' allowScriptAccess="always"',
                 ' bgcolor="', bgcolor, '"',
                 ' FlashVars="', FlashVars, '"',
                 ' height="', height, '"',
                 ' quality="', quality, '"',
                 ' scale="noscale"',
                 ' src="', swfFile, '"',
                 ' type="application/x-shockwave-flash"',
                 ' width="', width, '"',
                 (wmode ? (' wmode="', wmode, '"') : ''),
                 '></embed>',
                 '</object>'];

    document.writeln(htmls.join(''));
};

function writeViewerChat(width, height, Fid, swfFile, FlashVars, quality, bgcolor, wmode) {
    Stickam.player.writeViewerChat(width, height, Fid, swfFile, FlashVars, quality, bgcolor, wmode);
};

