[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
Zen Cart 源代码 popupwin.js

Zen Cart 源代码 popupwin.js




下载文件

文件名: popupwin.js
文件类型: Javascript文件
文件大小: 3.79 KiB
MD5: 1941e459e9539e9d0bf55d0c603832c7

popupwin.js - 打开高亮
// (c) dynarch.com 2003-2004
// Distributed under the same terms as HTMLArea itself.

function PopupWin(editor, title, handler, initFunction) {
    this.editor = editor;
    this.handler = handler;
    var dlg = window.open("", "__ha_dialog",
                  "toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40" +
                  "scrollbars=no,resizable=no");
    this.window = dlg;
    var doc = dlg.document;
    this.doc = doc;
    var self = this;

    var base = document.baseURI || document.URL;
    if (base && base.match(/(.*)\/([^\/]+)/)) {
        base = RegExp.$1 + "/";
    }
    if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) {
        // _editor_url doesn't start with '/' which means it's relative
        // FIXME: there's a problem here, it could be http:// which
        // doesn't start with slash but it's not relative either.
        base += _editor_url;
    } else
        base = _editor_url;
    if (!/\/$/.test(base)) {
        // base does not end in slash, add it now
        base += '/';
    }
    this.baseURL = base;

    doc.open();
    var html = "<html><head><title>" + title + "</title>\n";
    // html += "<base href='" + base + "htmlarea.js' />\n";
    html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n";
    html += "<body class='dialog popupwin' id='--HA-body'></body></html>";
    doc.write(html);
    doc.close();

    // sometimes I Hate Mozilla... ;-(
    function init2() {
        var body = doc.body;
        if (!body) {
            setTimeout(init2, 25);
            return false;
        }
        dlg.title = title;
        doc.documentElement.style.padding = "0px";
        doc.documentElement.style.margin = "0px";
        var content = doc.createElement("div");
        content.className = "content";
        self.content = content;
        body.appendChild(content);
        self.element = body;
        initFunction(self);
        dlg.focus();
    };
    init2();
};

PopupWin.prototype.callHandler = function() {
    var tags = ["input", "textarea", "select"];
    var params = new Object();
    for (var ti in tags) {
        var tag = tags[ti];
        var els = this.content.getElementsByTagName(tag);
        for (var j = 0; j < els.length; ++j) {
            var el = els[j];
            var val = el.value;
            if (el.tagName.toLowerCase() == "input") {
                if (el.type == "checkbox") {
                    val = el.checked;
                }
            }
            params[el.name] = val;
        }
    }
    this.handler(this, params);
    return false;
};

PopupWin.prototype.close = function() {
    this.window.close();
};

PopupWin.prototype.addButtons = function() {
    var self = this;
    var div = this.doc.createElement("div");
    this.content.appendChild(div);
    div.className = "buttons";
    for (var i = 0; i < arguments.length; ++i) {
        var btn = arguments[i];
        var button = this.doc.createElement("button");
        div.appendChild(button);
        button.innerHTML = HTMLArea.I18N.buttons[btn];
        switch (btn) {
            case "ok":
            button.onclick = function() {
                self.callHandler();
                self.close();
                return false;
            };
            break;
            case "cancel":
            button.onclick = function() {
                self.close();
                return false;
            };
            break;
        }
    }
};

PopupWin.prototype.showAtElement = function() {
    var self = this;
    // Mozilla needs some time to realize what's goin' on..
    setTimeout(function() {
        var w = self.content.offsetWidth + 4;
        var h = self.content.offsetHeight + 4;
        // size to content -- buggy in all browsers!!!
        // so that we set a larger size for the dialog window and then center
        // the element inside... 

        // center...
        var el = self.content;
        var s = el.style;
        // s.width = el.offsetWidth + "px";
        // s.height = el.offsetHeight + "px";
        s.position = "absolute";
        s.left = (w - el.offsetWidth) / 2 + "px";
        s.top = (h - el.offsetHeight) / 2 + "px";
        if (HTMLArea.is_gecko) {
            self.window.innerWidth = w;
            self.window.innerHeight = h;
        } else {
            self.window.resizeTo(w + 8, h + 35);
        }
    }, 25);
};