Вход Регистрация
Файл: mailist/wys/jscripts/tiny_mce/tiny_mce_popup.js
Строк: 408
<?php
// Some global instances, this will be filled later
var tinyMCE = null, tinyMCELang = null;

function 
TinyMCE_Popup() {
};

TinyMCE_Popup.prototype = {
    
findWin : function(w) {
        var 
c;

        
// Check parents
        
c = w;
        while (
c && (c = c.parent) != null) {
            if (
typeof(c.tinyMCE) != "undefined")
                return 
c;
        }

        
// Check openers
        
c = w;
        while (
c && (c = c.opener) != null) {
            if (
typeof(c.tinyMCE) != "undefined")
                return 
c;
        }

        
// Try top
        
if (typeof(top.tinyMCE) != "undefined")
            return 
top;

        return 
null;
    },

    
init : function() {
        var 
win = window.opener ? window.opener : window.dialogArguments, c;
        var 
inst, re, title, divElm;

        if (!
win)
            
win = this.findWin(window);

        if (!
win) {
            
alert("tinyMCE object reference not found from popup.");
            return;
        }

        
window.opener = win;
        
this.windowOpener = win;
        
this.onLoadEval = "";

        
// Setup parent references
        
tinyMCE = win.tinyMCE;
        
tinyMCELang = win.tinyMCELang;

        
inst = tinyMCE.selectedInstance;
        
this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;
        
this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true);

        if (
this.isWindow)
            
window.focus();

        
// Store selection
        
if (this.storeSelection)
            
inst.selectionBookmark = inst.selection.getBookmark(true);

        
// Setup dir
        
if (tinyMCELang.lang_dir)
            
document.dir = tinyMCELang.lang_dir;

        
// Setup title
        
re = new RegExp('{|\$|}', 'g');
        
title = document.title.replace(re, "");
        if (
typeof(tinyMCELang[title]) != "undefined") {
            
divElm = document.createElement("div");
            
divElm.innerHTML = tinyMCELang[title];
            
document.title = divElm.innerHTML;

            if (
typeof(tinyMCE.setWindowTitle) != 'undefined')
                
tinyMCE.setWindowTitle(window, divElm.innerHTML);
        }

        
// Output Popup CSS class
        
document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">');

        if (
tinyMCE.getParam("popups_css_add")) {
            
c = tinyMCE.getParam("popups_css_add");

            
// Is relative
            
if (c.indexOf('://') == -1 && c.charAt(0) != '/')
                
c = tinyMCE.documentBasePath + "/" + c;

            
document.write('<link href="' + c + '" rel="stylesheet" type="text/css">');
        }

        
tinyMCE.addEvent(window, "load", this.onLoad);
    },

    
onLoad : function() {
        var 
dir, i, elms, body = document.body;

        if (
tinyMCE.getWindowArg('mce_replacevariables', true))
            
body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs);

        
dir = tinyMCE.selectedInstance.settings.directionality;
        if (
dir == "rtl" && document.forms && document.forms.length > 0) {
            
elms = document.forms[0].elements;
            for (
i=0; i<elms.length; i++) {
                if ((
elms[i].type == "text" || elms[i].type == "textarea") && elms[i].getAttribute("dir") != "ltr")
                    
elms[i].dir = dir;
            }
        }

        if (
body.style.display == 'none')
            
body.style.display = 'block';

        
// Execute real onload (Opera fix)
        
if (tinyMCEPopup.onLoadEval !== '')
            eval(
tinyMCEPopup.onLoadEval);
    },

    
executeOnLoad : function(str) {
        if (
tinyMCE.isOpera)
            
this.onLoadEval = str;
        else
            eval(
str);
    },

    
resizeToInnerSize : function() {
        var 
i, doc, body, oldMargin, wrapper, iframe, nodes, dx, dy;

        
// Netscape 7.1 workaround
        
if (this.isWindow && tinyMCE.isNS71) {
            
window.resizeBy(0, 10);
            return;
        }

        if (
this.isWindow) {
            
doc = document;
            
body = doc.body;

            if (
body.style.display == 'none')
                
body.style.display = 'block';

            
// Remove margin
            
oldMargin = body.style.margin;
            
body.style.margin = '0';

            
// Create wrapper
            
wrapper = doc.createElement("div");
            
wrapper.id = 'mcBodyWrapper';
            
wrapper.style.display = 'none';
            
wrapper.style.margin = '0';

            
// Wrap body elements
            
nodes = doc.body.childNodes;
            for (
i=nodes.length-1; i>=0; i--) {
                if (
wrapper.hasChildNodes())
                    
wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild);
                else
                    
wrapper.appendChild(nodes[i].cloneNode(true));

                
nodes[i].parentNode.removeChild(nodes[i]);
            }

            
// Add wrapper
            
doc.body.appendChild(wrapper);

            
// Create iframe
            
iframe = document.createElement("iframe");
            
iframe.id = "mcWinIframe";
            
iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings.default_document;
            
iframe.width = "100%";
            
iframe.height = "100%";
            
iframe.style.margin = '0';

            
// Add iframe
            
doc.body.appendChild(iframe);

            
// Measure iframe
            
iframe = document.getElementById('mcWinIframe');
            
dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth;
            
dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight;

            
// Resize window
            // tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);
            
window.resizeBy(dx, dy);

            
// Hide iframe and show wrapper
            
body.style.margin = oldMargin;
            
iframe.style.display = 'none';
            
wrapper.style.display = 'block';
        }
    },

    
resizeToContent : function() {
        var 
isMSIE = (navigator.appName == "Microsoft Internet Explorer");
        var 
isOpera = (navigator.userAgent.indexOf("Opera") != -1);
        var 
elm, width, height, x, y, dx, dy;

        if (
isOpera)
            return;

        if (
isMSIE) {
            try { 
window.resizeTo(10, 10); } catch (e) {}

            
elm = document.body;
            
width = elm.offsetWidth;
            
height = elm.offsetHeight;
            
dx = (elm.scrollWidth - width) + 4;
            
dy = elm.scrollHeight - height;

            try { 
window.resizeBy(dx, dy); } catch (e) {}
        } else {
            
window.scrollBy(1000, 1000);
            if (
window.scrollX > 0 || window.scrollY > 0) {
                
window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
                
window.sizeToContent();
                
window.scrollTo(0, 0);
                
x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
                
y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
                
window.moveTo(x, y);
            }
        }
    },

    
getWindowArg : function(name, default_value) {
        return 
tinyMCE.getWindowArg(name, default_value);
    },

    
restoreSelection : function() {
        var 
inst;

        if (
this.storeSelection) {
            
inst = tinyMCE.selectedInstance;

            
inst.getWin().focus();

            if (
inst.selectionBookmark)
                
inst.selection.moveToBookmark(inst.selectionBookmark);
        }
    },

    
execCommand : function(command, user_interface, value) {
        var 
inst = tinyMCE.selectedInstance;

        
this.restoreSelection();
        
inst.execCommand(command, user_interface, value);

        
// Store selection
        
if (this.storeSelection)
            
inst.selectionBookmark = inst.selection.getBookmark(true);
    },

    
close : function() {
        
tinyMCE.closeWindow(window);
    },

    
pickColor : function(e, element_id) {
        
tinyMCE.selectedInstance.execCommand('mceColorPicker', true, {
            
element_id : element_id,
            
document : document,
            
window : window,
            
store_selection : false
        
});
    },

    
openBrowser : function(element_id, type, option) {
        var 
cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
        var 
url = document.getElementById(element_id).value;

        
tinyMCE.setWindowArg("window", window);
        
tinyMCE.setWindowArg("document", document);

        
// Call to external callback
        
if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined")
            
alert("Callback function: " + cb + " could not be found.");
        else
            eval(
"tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);");
    },

    
importClass : function(c) {
        var 
n;

        
window[c] = function() {};

        for (
n in window.opener[c].prototype)
            
window[c].prototype[n] = window.opener[c].prototype[n];

        
window[c].constructor = window.opener[c].constructor;
    }

    };

// Setup global instance
var tinyMCEPopup = new TinyMCE_Popup();

tinyMCEPopup.init();
?>
Онлайн: 1
Реклама