﻿
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();

    var webpartHeaders = $j(".webpart-header");
    webpartHeaders.find("div:first").addClass("webpart-title");
    webpartHeaders.find("span[id$=Verbs]").addClass("webpart-verbs");
    webpartHeaders.find("div[id$=VerbsMenu]").addClass("webpart-verbsmenu");

    $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("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>");


    if (typeof ($j.prototype.ThreeDots) != "undefined") {
        $j(".onerow").ThreeDots({ max_rows: 2, whole_word: false, alt_text_t: true, text_span_class: 'fieldvalue' });
        $j(".tworows").ThreeDots({ max_rows: 3, whole_word: false, alt_text_t: true, text_span_class: 'fieldvalue' });
        $j(".threerows").ThreeDots({ max_rows: 4, whole_word: false, alt_text_t: true, text_span_class: 'fieldvalue' });
    }
});

$load(function() {

    $j("[id$=_dropWrapper] :first-child").addClass("ContextMenuTarget");
    $j("[id$=_dropWrapper] + br").remove();
    $j("[id$=_dropWrapper]").css("display", "block");
});

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 loadCss(url) {
    if (document.createStyleSheet) {
        try { document.createStyleSheet(url); } catch (e) { };
    }
    else {
        var newSS = document.createElement('link');
        newSS.rel = 'stylesheet';
        newSS.type = 'text/css';
        newSS.media = "all";
        newSS.href = url;
        // var styles	= "@import url(' " + url + " ');";
        // newSS.href	='data:text/css,'+escape(styles);
        document.getElementsByTagName("head")[0].appendChild(newSS);
        return newSS.styleSheet;
    }
}

/* 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[rel=login], .register a").click(function() {
        var loginmenu = $j(".LoginDialog");
        loginmenu.dialog({
            modal: true,
            width: 800,
            resizable: false,
            title: "登录"
        });
        loginmenu.dialog("open");
        var container = $j("form:first");
        if (loginmenu.parent().parent().attr("id") != container.attr("id")) {
            loginmenu.parent().prev().appendTo(container);
            loginmenu.parent().appendTo(container);
        }
        var readTerm = loginmenu.find("[id$=_ReadTerm]");
        readTerm.click(function() {
            var button = loginmenu.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: "advimageupload,emotions,mediaupload,contextmenu,fullscreen",
        theme_advanced_buttons1: "fontsizeselect,|,bold,italic,underline,strikethrough,|,backcolor,forecolor,|,removeformat,|,bullist,numlist,outdent,indent,|,link,unlink,image,media,emotions,|,code,fullscreen",
        theme_advanced_buttons2: "",
        theme_advanced_buttons3: "",
        theme_advanced_buttons4: "",
        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 ul").superfish({ autoArrows: false, dropShadows: false });
}

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: "/" } });
}

