﻿
function $init(handler) {
    $j(handler);
}

function $ready(handler) {
    $j(handler);
    if (typeof (Sys) != "undefined") {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(handler);
    }
}

function $load(handler) {
    if (typeof (Sys) != "undefined") {
        Sys.Application.add_load(handler);
    }
}

$init(function() {

    if (typeof (Sys) != "undefined") {
        var requestManager = Sys.WebForms.PageRequestManager.getInstance();
        requestManager._form.action = window.location.href.replace(window.location.hash, "");
        requestManager._form._initialAction = requestManager._form.action;
        requestManager.add_endRequest(errorbox);

        requestManager.add_beginRequest(function() { $j(".spinner").fadeIn(); });
        requestManager.add_endRequest(function() { $j(".spinner").fadeOut(); });
    }
});

$ready(function() {

    if (typeof (_gat) != "undefined") {
        var pageTracker = _gat._getTracker(window.gaAccount);
        pageTracker._trackPageview();
    }

    if (typeof (AvatarTracker) != "undefined") {
        AvatarTracker.track();
    }

    registerLoginPanel();
    registerFileUpload();
    registerTinyMCEEditors();
    registerMcDropdowns();
    registerLightbox();
    registerSuperfish();
    registerControlbarTabs();

    $j(".filters br.clear + span.button").fadeIn("slow");
    $j(".filters br.clear + span.button").prev().remove();

    $j(".ContextMenuPanel hr + hr").remove();
    $j(".ContextMenuPanel :last-child, .ContextMenuPanel :first-child").filter("hr").remove();
    $j(".ContextMenuPanel").css("display", "none");

    $j(".navmenu li.emphasis.activeitem").addClass("emphasisactiveitem");

    $j("fieldset").each(function() {
        var item = $j(this);
        if (item.children().length == 1
            && item.children(":first").is("legend")) {
            item.hide();
        }
    });

    $j(".gridview").filter(function() { return $j(this).parent(".gridview-chrome-r").length == 0; }).wrap("<div class='gridview-chrome'><div class='gridview-chrome-l'><div class='gridview-chrome-r'></div></div></div>");


    $j(".body h1").each(function() {
        var h1 = $j(this);
        var text = h1.text();
        h1.html("<span class=\"underline\">" + text + "</span>");
    });

    $j(".graphlist dd").each(function() {
        $j(this).after("<br class=\"clear\" />");
    });

    $j("a:contains('添加部件')").hide();

    if (typeof (TopUp) != "undefined") {
        TopUp.images_path = "/App_Themes/Common/plugins/top_up/";
        TopUp.players_path = "/App_Themes/Common/plugins/top_up/";
        TopUp.defaultPreset({
            overlayClose: 1
        });
    }
});

$load(function() {

    $j("[id$=_dropWrapper] :first-child").addClass("ContextMenuTarget");
    $j("[id$=_dropWrapper] + br").remove();
    $j("[id$=_dropWrapper]").css("display", "block");

    $j(".documentshow img").each(function() {
        if ($j(this).width() > 800) {
            $j(this).css('width', 800);
        }
    });

    $j(".ThreadShow img").each(function() {
        if ($j(this).width() > 620) {
            $j(this).css('width', 620);
        }
    });

    $j(".cell-content img").each(function() {
        if ($j(this).width() > 620) {
            $j(this).css('width', 620);
        }
    });
});

function errorbox(sender, args) {

    if (args.get_error() == undefined) {
        return;
    }

    var parts = args.get_error().message.split(":");
    var message = "";
    for (var i = 1; i < parts.length - 1; i++) {
        message += parts[i];
        message += ":";
    }
    message += parts[parts.length - 1];

    messageBox(message);
    args.set_errorHandled(true);
}

function messageBox(message, redirectUrl) {

    var dialog = $j("#messagebox");
    dialog.html(message);
    dialog.data("redirectUrl", redirectUrl);

    dialog.dialog({
        show: "clip",
        hide: "explode",
        modal: true,
        buttons: {
            "确定": function() {
                dialog.dialog("close");
            }
        },
        close: function() {
            var redirectUrl = dialog.data("redirectUrl");
            if (redirectUrl != null && redirectUrl != "") {
                window.location = redirectUrl;
            }
        }
    });
    dialog.dialog("open");
}

function growl(title, message, sticky, icon) {

    var options = {
        title: title,
        text: message,
        sticky: sticky,
        time: 1000
    };
    if (icon != null) {
        options.image = icon;
    }

    $j.gritter.add(options);
}

/* Selection */

function selectAll() {
    $j(".selection input:checkbox").attr("checked", true);
}

function selectNone() {
    $j(".selection input:checkbox").attr("checked", false);
}

function selectInvert() {
    $j(".selection input:checkbox").each(function() {
        var item = $j(this);
        item.attr("checked", !item.attr("checked"));
    });
}

function registerLoginPanel() {

    $j(".login a[id$=_LoginLink], .register a").click(function() {

        var controlbar = $j(".LoginDialog");

        controlbar.dialog({
            modal: true,
            width: 400,
            resizable: false,
            title: "登录"
        });

        var container = $j("form:first");
        controlbar.parent().prev().appendTo(container);
        controlbar.parent().appendTo(container);


        var readTerm = controlbar.find("[id$=_ReadTerm]");

        readTerm.click(function() {
            var button = controlbar.find("[id$=_RegisterButton]");
            button.attr("disabled", !readTerm.attr("checked"));
        });

        readTerm.attr("checked", true);
    });
}

function registerFileUpload() {

    if (typeof ($j.prototype.uploadify) == "undefined") {
        return;
    }

    function complete(event, queueID, fileObj, response) {
        var result = window.eval("(" + response + ")");
        var target = $j("#" + event.target.rel);

        if (typeof (tinymce) != "undefined") {
            var editor = tinymce.EditorManager.get(target.attr("id"));
            if (editor != null) {
                if (/^\.(jpg|jpeg|gif|png)$/.test(fileObj.type.toLowerCase())) {
                    editor.execCommand("mceInsertContent", false, "<img src=\"" + result.path + "\" alt=\"" + fileObj.name + "\" /><br />");
                }
                else {
                    editor.execCommand("mceInsertContent", false, "<a href=\"" + result.path + "\">" + fileObj.name + "</a><br />");
                }
                return;
            }
        }

        if (target.is("img")) {
            target.attr("src", result.path + "?thumbnail=&version=" + Math.random());
            return;
        }

        target.val(result.path);
    }

    $j(".fileupload").each(function() {
        var link = $j(this);
        if (link.data("uploadify") == "loaded") {
            return;
        }
        link.uploadify({
            uploader: "/jscripts/uploadify.swf",
            script: "/Common/FileUploadHandler.ashx",
            scriptData: {
                overwrite: link.hasClass("overwrite"),
                avatar: link.hasClass("avatar")
            },
            cancelImg: "/App_Themes/Common/plugins/uploadify/cancel.png",
            buttonImg: "/App_Themes/Common/Images/" + (link.hasClass("overwrite") ? "Overwrite.gif" : "Upload.gif"),
            width: 85,
            heigth: 18,
            multi: true,
            auto: true,
            onComplete: complete
        });
        link.data("uploadify", "loaded");
    });
}

function registerTinyMCEEditors() {

    if (typeof ($j.prototype.tinymce) == "undefined") {
        return;
    }

    $j("textarea.tinymce").tinymce({
        script_url: "/jscripts/tiny_mce/tiny_mce.js",
        theme: "advanced",
        skin: "o2k7",
        language: "ii",
        plugins: "style,table,advimageupload,emotions,inlinepopups,mediaupload,searchreplace,print,contextmenu,paste,fullscreen,nonbreaking",
        theme_advanced_buttons1: "print,fullscreen,|,cut,copy,paste,|,undo,redo,|,search,replace,|,nonbreaking,hr,link,unlink,image,media,emotions,|,tablecontrols",
        theme_advanced_buttons2: "styleprops,formatselect,fontselect,fontsizeselect,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,outdent,indent,|,backcolor,forecolor,|,code",
        theme_advanced_buttons3: "",
        theme_advanced_buttons4: "",
        theme_advanced_fonts: "宋体=宋体;新宋体=新宋体;黑体=黑体;andale mono=andale mono,times;arial=arial,helvetica,sans-serif;arial black=arial black,avant garde;book antiqua=book antiqua,palatino;comic sans ms=comic sans ms,sans-serif;courier new=courier new,courier;georgia=georgia,palatino;helvetica=helvetica;impact=impact,chicago;symbol=symbol;tahoma=tahoma,arial,helvetica,sans-serif;terminal=terminal,monaco;times new roman=times new roman,times;trebuchet ms=trebuchet ms,geneva;verdana=verdana,geneva;webdings=webdings;wingdings=wingdings,zapf dingbats",
        fullscreen_settings: {
            plugins: "style,layer,table,advimageupload,emotions,inlinepopups,mediaupload,searchreplace,print,contextmenu,paste,fullscreen,nonbreaking,xhtmlxtras",
            theme_advanced_buttons1: "print,|,undo,redo,|,search,replace,|,blockquote,hr,link,unlink,image,media,emotions,nonbreaking,|,tablecontrols,|,insertlayer,moveforward,movebackward,absolute,|,styleprops,attribs,code",
            theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,formatselect,fontsizeselect,|,bold,italic,underline,strikethrough,|,backcolor,forecolor,|,removeformat,|,bullist,numlist,outdent,indent,|,justifyleft,justifycenter,justifyright,justifyfull,|,fullscreen"
        },
        theme_advanced_toolbar_location: "top",
        theme_advanced_toolbar_align: "left",
        relative_urls: false,
        extended_valid_elements: "iframe[*],a[*]",
        encoding: "xml",
        width: "600px",
        height: "300px"
    });
}

function registerMcDropdowns() {

    if (typeof ($j.prototype.mcDropdown) == "undefined") {
        return;
    }

    $j(".treefield").each(function() {
        var field = $j(this);
        var handle = $j("#" + field.attr("rel"));
        var menu = field.find(".mcdropdown_menu");
        if (menu.length == 0) {
            field.append("<ul class='mcdropdown_menu'><li>目前没有已定义的选项...</li></ul>");
            menu = field.find(".mcdropdown_menu");
        }
        handle.mcDropdown(menu, {
            delim: " > ",
            allowParentSelect: handle.attr("AllowParent"),
            showACOnEmptyFocus: true,
            select: typeof (mcDropdownSelected) == "undefined" ? null : mcDropdownSelected
        });
        var css = handle.attr("class");
        if (css != "") {
            handle.parent().parent().attr("class", css);
            handle.attr("class", "");
        }
    });
}

function registerLightbox() {

    if (typeof ($j.prototype.lightBox) == "undefined") {
        return;
    }

    $j("a[rel=lightbox]").lightBox();
}

function registerSuperfish() {

    if (typeof ($j.prototype.superfish) == "undefined") {
        return;
    }

    $j(".adminpage .navmenu li").each(function() {
        var item = $j(this);
        if (item.find("a[href]").length == 0) {
            item.hide();
        }
    });

    $j(".adminpage .navmenu ul").superfish({ autoArrows: false, dropShadows: false });

    var activeitem = $j(".navmenu li.activeitem");
    activeitem.parents("li").addClass("activeitem");
    activeitem.parent("ul").css("display", "block");

    $j(".navmenu ul").superfish({
        dropShadows: false,
        pathClass: "activeitem"
    });
}

function registerControlbarTabs() {

    var controlbar = $j(".controlbar");
    if (controlbar.length == 0) {
        return;
    }
    controlbar.prepend("<ul></ul>");

    controlbar.find("legend").each(function(i) {

        var legend = $j(this);
        var tab = legend.parent();

        var tabid = "controlbar-tab" + i;
        tab.attr("id", tabid);

        controlbar.find("ul:first").append("<li><a href='#" + tabid + "'>" + legend.html() + "</a></li>");
    });
    controlbar.find("legend").remove();

    controlbar.tabs({ cookie: { expires: 1, path: "/"} });
}
