﻿
function refreshiframe() {
    window.frames["cboxmain"].location.href = "http://www2.cbox.ws/box/?boxid=1793758&boxtag=2pkw6f&sec=main";
    setTimeout("refreshiframe()", 30000);
}

function showDeckChoice(link, deckID) {
    var menu = new Ext.menu.Menu({
        items: [{
            text: 'Edit',
            iconCls: 'icon-deck-edit',
            href: '../../Yugioh/Decks/CreateDeck.aspx?d=' + deckID
        }, {
            text: 'Delete',
            iconCls: 'icon-deck-delete',
            handler: function () {
                delThisDeck(menu, link, deckID);
            }
        }, {
            text: 'Set Active',
            iconCls: 'icon-deck-active',
            handler: function () {
                changeThisActiveDeck(menu, link, deckID);
            }
        }]
    });
    menu.show(link);
    return false;
}

function delThisDeck(menu, link, deckId) {
    if (link.className == 'a-active') {
        Ext.Msg.alert('Thong bao', "You cannot delete active deck");
        return false;
    }
    Ext.Msg.confirm('Delete Deck?',
			'Are you sure to delete the deck? It will be deleted permanently',
			function (buttonID) {
			    if (buttonID == 'yes') {
			        var myMask = new Ext.LoadMask(Ext.get('DeckList'), {
			            msg: "Please wait..."
			        });
			        myMask.show();
			        Ext.Ajax.request({
			            url: BASE_AJAX_URL + 'ajDeck.aspx?type=del&id=' + deckId,
			            method: 'GET',
			            success: function () {
			                Ext.get(link).setStyle('display', 'none');
			                Ext.get(link).remove();
			                myMask.hide();
			            },
			            failure: function () {
			                Ext.Msg
									.alert('Thong bao',
											"Unable to delete deck. There's problem from server.");
			                myMask.hide();
			            }
			        });
			    }
			});
    menu.hide();
    return false;
}

function changeThisActiveDeck(menu, link, deckID) {
    var myMask = new Ext.LoadMask(Ext.get('DeckList'), {
        msg: "Please wait..."
    });
    myMask.show();
    Ext.Ajax.request({
        url: BASE_AJAX_URL + 'ajDeck.aspx?type=act&id=' + deckID,
        method: 'GET',
        success: function () {
            var ele = $(link);
            ele.parent().find('a.a-active').removeClass('a-active').addClass('a-bullet');
            ele.removeClass('a-bullet').addClass('a-active');
            myMask.hide();
        },
        failure: function () {
            Ext.Msg
					.alert('Thong bao',
							"Unable to change active deck. There's problem from server.");
            myMask.hide();
        }
    });
    menu.hide();
}

var yahooIcons = [["#:-s", "whew"], [">:D<", "bighug"], ["o-:)", "angel"],
		["<:-P", "party"], [":-ss", "nailbiting"], ["<):)", "cowboy"],
		[":!!!", "hurryup!"], [":-bd", "thumpsup"], ["^#(^", "itwasntme"],
		[":ar!", "pirate"], [":-o3", "puppydogeyes"], [":-??", "Idontknow"],
		[">-)", "alien"], ["3:-o", "cow"], [":(|)", "monkey"],
		["@};-", "rose"], ["[-o<", "praying"], [":)>-", "peacesign"],
		["\:D/", "dancing"], ["^:)^", "notworthy"], [";;)", "batting"],
		[":-/", "confused"], [':">', "blushing"], [":-*", "kiss"],
		["=((", "brokenheart"], [":-o", "surprise"], ["b-)", "cool"],
		[":-s", "worried"], [">:)", "devil"], [":((", "crying"],
		[":))", "laughing"], ["b-)", "cool"], ["/:)", "raisedeyebrows"],
		["=))", "rollingonthefloor"], [":-b", "nerd"], [":-c", "callme"],
		[":)]", "onthephone"], ["~x(", "atwitsend"], [":-h", "wave"],
		[":-t", "timeout"], ["8->", "daydreaming"], ["i-)", "sleepy"],
		["8-|", "rollingeyes"], ["l-)", "loser"], [":-&", "sick"],
		[":-$", "donttell"], ["[-(", "notalking"], [":o)", "clown"],
		["8-}", "silly"], ["(:|", "yawn"], ["=p~", "drooling"],
		[":-?", "thinking"], ["#-o", "doh"], ["=D>", "applause"],
		["@-)", "applause"], [":^o", "liar"], [":-w", "waiting"],
		[":-<", "sigh"], [">:p", "phbbbbt"], ["X_X", "Idontwanttosee"],
		["\m/", "rockon"], [":-q", "thumbsdown"], ["%-(", "notlistening"],
		[":@)", "pig"], ["~:>", "chicken"], ["%%-", "goodluck"],
		["~o)", "coffee"], ["*-:)", "idea"], ["8-x", "skull"],
		[":-L", "frustrated"], ["$-)", "moneyeyes"], [':-"', "whistling"],
		["b-(", "feelingbeatup"], ["[-x", "shameonyou"], [">:/", "bringiton"],
		[";))", "heehee"], [":-@", "chatterbox"], [":-j", "ohgoon"],
		[":)", "happy"], [":(", "sad"], [":d", "biggrin"], [";)", "winking"],
		[":x", "lovestruck"], [":p", "tongue"], ["x(", "angry"],
		[":>", "smug"], [":|", "straightface"], ["=;", "talktothehand"]];

$.fn.userlink = function (type) {
    return this.each(function () {
        var element = $(this);

        switch (type) {
            case 'medium':
                mediumLink(element);
                break;
            case 'simple':
                simpleLink(element);
                break;
            default:
                forumLink(element);
                break;
        }
    });


    function forumLink(element) {
        var div = element.find('div');
        if (!div || div == null || div.length == 0) return;
        var temp = div.html().split('|');
        var username = element.find('span').html();
        //id|point|level|slogan
        var data = { id: temp[0], username: username, point: temp[1], level: temp[2], slogan: temp[3] };
        var cls = element.attr('class');
        //element.wrap('<div class="'+cls+'"/>');
        element.attr('class', cls + ' StandardUserLink');
        element.attr('title', data.username);
        element.attr('href', String.format('../../forum.aspx?g=profile&u={0}', data.id));
        element.html('<span class="medal' + data.level + ' std_medal">' + data.username + '</span>');

    };

    function simpleLink(element) {
        var div = element.find('div');
        if (!div || div == null || div.length == 0) return;
        var temp = div.html().split('|');
        var username = element.find('span').html();
        //id|avatar|slogan|point|level|ischampion|
        var data = { id: temp[0], username: username, avatar: temp[1], slogan: temp[2], point: temp[3], level: temp[4], isChampion: temp[5] };
        var cls = element.attr('class');
        //element.wrap('<div class="'+cls+'"/>');
        element.attr('class', cls + ' StandardUserLink');
        element.attr('title', data.username);
        element.attr('href', String.format('../../forum.aspx?g=profile&u={0}', data.id));
        element.mouseover(function () { TagToTip('div-usertip-' + data.id, WIDTH, 300); });
        element.html('<span class="medal' + data.level + ' std_medal">' + data.username + '</span>');

        attachTips(element, data);
    }

    function mediumLink(element) {
        var div = element.find('div');
        if (!div || div == null || div.length == 0) return;
        var temp = div.html().split('|');
        var username = element.find('span').html();
        //id|avatar|slogan|point|level|ischampion|
        var data = { id: temp[0], username: username, avatar: temp[1], slogan: temp[2], point: temp[3], level: temp[4], isChampion: temp[5] };

        var cls = element.attr('class');
        //element.wrap('<div class="'+cls+'"/>');
        element.attr('class', cls + ' StandardUserLink');
        element.attr('title', data.username);
        element.attr('href', "#");
        element.mouseover(function () { TagToTip('div-usertip-' + data.id, WIDTH, 300); });
        element.html('<table><tr><td width="45px"><img src="' + data.avatar + '" class="avt"></td><td valign="middle"><span class="medal' + data.level + ' std_medal" onmouseover="TagToTip(\'div-usertip-' + data.id + '\',WIDTH,300);" onclick="return showUserChoice(this, ' + data.id + ');">' + data.username + '</span></td></tr></table>');

        attachTips(element, data);
    };

    function attachTips(jObject, data) {
        var tpl = '<div style="display: none;" id="div-usertip-{0}"><table width="100%"><tr><td><img src="{1}" class="tip-img"/></td><td>Slogan: {2}<br/>Point:<b>{3}</b><br/> Level:<b class="medal{4} std_medal">{4}</b></td></tr></table></div>';
        jObject.after(String.format(tpl, data.id, data.avatar, data.slogan, data.point, data.level));
    };

}


function showUserChoice(link, userID) {
    var menu = new Ext.menu.Menu({
        items: [{
            text: 'Add as Buddy',
            handler: function () {
                var myMask = new Ext.LoadMask(Ext.getBody(), {
                    msg: "Sending..."
                });
                //ext-el-mask, ext-el-mask-msg
                myMask.show();
                var f = function () {
                    myMask.hide();
                };
                f.defer(5000, this);
                //myMask.el.fadeOut({ duration: 1, callback: function () { myMask.hide(); } });
                $.get('../../ajax/ajCommon.aspx', { p: 'addBuddy', userId: userID }, function (data) {
                    var msg = data ? 'Buddy request sent. Please wait for his response.' : 'Unable to send request. Maybe he has already been your friend.';
                    Ext.Msg.alert('Information', msg);
                }, 'json');
            }
        }, {
            text: 'View Profile',
            href: String.format('../../forum.aspx?g=profile&u={0}', userID)
        }]
    });
    menu.show(link);
    return false;
}

function appealDuelOnRecent(duelId, targetUserId) {
    if (!confirm('Are you sure? It can not be undo')) return;
    $.post('../../ajax/ajCommon.aspx', { p: 'appeal', duelId: duelId, targetUserId: targetUserId }, function () {
        alert('Your appeal has been sent');
    });
}

$.fn.multi_link = function () {
    return this.each(function () {
        var el = $(this);
        var parent = el.parent();
        var href = el.attr('href');
        var cl = el.attr('class');
        var links = href.split('||');
        if (links.length > 1) {
            el.text('Replay 1');
            for (var i = 1; i < links.length; i++) {
                var a = String.format('<a href="{0}" class="{1}">{2}</a>', links[i], cl, (i + 1));
                parent.append(a);
            }
        }
        el.attr('href', links[0]);
    });
}

$.fn.duel_recent = function () {
    return this.each(function () {
        var element = $(this);
        element.css({ fontSize: '8pt' });
        var duelId = element.attr('id').split('-')[1];
        var users = element.find('a');
        var html = element.html();
        var actions = [
			 '<a class="a-btn icon-log" onclick="return showDuelLog({0},\'{1}\',\'{2}\')" href="#">Log</a>',
			 '<a class="a-btn icon-replay" href="../../Yugioh/Duels/StartDuel.aspx?a=replay&gamekey={0}&type=anonymous">Replay</a>',
			 '<a class="a-btn icon-download" href="../../Yugioh/Duels/DownloadDuels.aspx?a=down&gamekey={0}">Download</a>'
		];
        if ($('.allowDel').length > 0)
            actions.push('<a class="a-btn a-icon-cancel" style="color: red;" href="../Duels/ReportDuels.aspx?a=del&id={0}"><u>Del</u></a>');
        if (element.find('.ownerDuel').length > 0)
            actions.push(String.format('<a class="a-btn a-icon-appeal" style="color: red;" href="#" onclick="return appealDuelOnRecent({0}, {1});"><u>Appeal</u></a>', duelId, element.find('.ownerDuel').text()));
        var a = String.format(actions.join('<br/>'), duelId, $(users[0]).text(), $(users[1]).text());
        var tpl = String.format('<div class="grid_13 alpha">{0}</div><div class="grid_2 omega">{1}</div><div class="clear"></div>', html, a);
        element.html(tpl);
        //server side
        //<li class="d-recent d-recent-<%#Eval("Id")%>">
        //      <div><%#Eval("P1User")%> vs <%#Eval("P2User") %> at <%#Eval("DuelTime") %></div>
        //      <div><%#Eval("Result") %></div>
        //</li>



        //        <li class="{5} d-recent">
        //        <div class=r0>
        //            <div class='grid_2 alpha c0'>{0}</div>
        //            <div class='grid_1 c1'><img src='{2}' class='avt'/></div>
        //            <div class='grid_1 c2'>vs</div>
        //            <div class='grid_1 c3'><img src='{3}' class='avt'/></div>
        //            <div class='grid_2 omega c4'>{1}</div>
        //            <div class='clear'></div>
        //        </div>
        //        <div class=r1> at {4}</div>
        //    </li>
        //<div class="r3"><a class="a-btn icon-log" onclick='return showDuelLog(325972,"stealth_ninja03","StarDust-Anti")' href="#">Log</a> <a class="a-btn icon-replay" href="../../Yugioh/Duels/createDuel.aspx?a=replay&amp;gamekey=325972&amp;type=anonymous">Replay</a> <a class="a-btn icon-download" href="../../Yugioh/Duels/DownloadDuels.aspx?a=down&amp;gamekey=325972">Download</a>| <a style="color: red;" href="../Duels/ReportDuels.aspx?a=del&amp;id=325972"><u>Del</u></a> </div>
    });
}


var serverDate = false;
Date.patterns = {
    ISO8601Long: "Y-m-d H:i:s",
    ISO8601Short: "Y-m-d",
    ShortDate: "n/j/Y",
    LongDate: "l, F d, Y",
    FullDateTime: "l, F d, Y g:i:s A",
    MonthDay: "F d",
    ShortTime: "g:i A",
    LongTime: "g:i:s A",
    SortableDateTime: "Y-m-d\\TH:i:s",
    UniversalSortableDateTime: "Y-m-d H:i:sO",
    YearMonth: "F, Y"
};

function updateServerTime() {
    if (!serverDate) {
        var val = $('#serverTime').html();
        // alert(val);
        serverDate = new Date(val);
    }
    serverDate = serverDate.add(Date.SECOND, 1);
    var text = serverDate.format("h:m:s");
    Ext.get('serverTime').update("Server Time: " + text);
}

$.myqueue = {
    _timer: null,
    _queue: [],
    add: function (fn, context, time) {
        var setTimer = function (time) {
            $.myqueue._timer = setTimeout(function () {
                time = $.myqueue.add();
                if ($.myqueue._queue.length) {
                    setTimer(time);
                }
            }, time || 2);
        }

        if (fn) {
            $.myqueue._queue.push([fn, context, time]);
            if ($.myqueue._queue.length == 1) {
                setTimer(time);
            }
            return;
        }

        var next = $.myqueue._queue.shift();
        if (!next) {
            return 0;
        }
        next[0].call(next[1] || window);
        return next[2];
    },
    clear: function () {
        clearTimeout($.myqueue._timer);
        $.myqueue._queue = [];
    }
};


$(document).ready(function () {
    //			Ext.TaskMgr.start({
    //						run : updateServerTime,
    //						interval : 1000
    //					});
    //			Ext.get('serverTime').show();
//    var f1 = function () {
//        var simpleLinks = $('.simple-ulink');
//        if (simpleLinks.length > 0)
//            simpleLinks.userlink('simple').fadeIn('fast');
//    }

//    $.myqueue.add(f1, this);

//    var f2 = function () {
//        var mediumLinks = $('.medium-ulink');
//        if (mediumLinks.length > 0)
//            mediumLinks.userlink('medium').fadeIn('fast');
//    }

//    $.myqueue.add(f2, this);

//    var f3 = function () {
//        var bigLinks = $('.big-ulink');
//        if (bigLinks.length > 0) {
//            bigLinks.hover(function () {
//                $(this).find('.avt').css({ borderColor: '#CCCCCC' });
//            }, function () {
//                $(this).find('.avt').css({ borderColor: '#000000' });
//            });
//        }
//    }

//    $.myqueue.add(f3, this);


    var f4 = function () {
        $('.drow').css({ paddingTop: '5px', paddingBottom: '5px' });
        $('.drow:even').css({borderBottom: 'solid brown 1px'});
        $('.drow:odd').css({ backgroundColor: '#FFFFEE' });
        var recents = $('.d-recent');
        if (recents.length > 0)
            recents.duel_recent();
        var recentevent = $('.d-recent:even');
        if (recentevent.length > 0)
            recentevent.css({ borderBottom: 'solid #A56691 1px', borderTop: 'solid #A56691 1px' });

        var multilink = $('.multi-link');
        if (multilink.length > 0)
            multilink.multi_link();
    }
    $.myqueue.add(f4, this);
});

// my jquery extension functions
String.format = function () {
    var s = arguments[0];
    for (var i = 0; i < arguments.length - 1; i++) {
        var reg = new RegExp("\\{" + i + "\\}", "gm");
        s = s.replace(reg, arguments[i + 1]);
    }

    return s;
}

$.extend({
    isset: function (x) {
        return (x != 'undefined');
    }
});

var gAlternateFootSynch = false;
