Subversion Repositories Sites.tela-botanica.org

Rev

Rev 609 | Blame | Compare with Previous | Last modification | View Log | RSS feed

var tinyMCE_GZ = {
        settings : {
                plugins : 'style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras',
                themes : 'simple,advanced',
                languages : 'en',
                disk_cache : true,
                page_name : 'tiny_mce_gzip.php',
                debug : false
        },

        init : function(s) {
                var n, d = document, nl, i, b = '', sr, db;

                this.isIE = (navigator.appName == "Microsoft Internet Explorer");
                this.isOpera = navigator.userAgent.indexOf('Opera') != -1;

                for (n in s)
                        this.settings[n] = s[n];

                for (i=0, nl = d.getElementsByTagName('base'); i<nl.length; i++) {
                        if (nl[i].href)
                                b = nl[i].href;
                }

                for (i=0, nl = d.getElementsByTagName('script'); i<nl.length; i++) {
                        if (nl[i].src && nl[i].src.indexOf('tiny_mce_gzip') != -1) {
                                sr = nl[i].src;
                                sr = sr.substring(0, sr.lastIndexOf('/'));

                                if (b != '' && b.indexOf('://') == -1)
                                        b += sr;
                                else
                                        b = sr;
                        }
                }

                db = document.location.href;

                if (db.indexOf('?') != -1)
                        db = db.substring(0, db.indexOf('?'));

                db = db.substring(0, db.lastIndexOf('/'));

                if (b.indexOf('://') == -1 && b.charAt(0) != '/')
                        b = db + "/" + b;

                this.baseURL = b + '/';
                this.load(this.settings.page_name);
        },

        load : function(v) {
                var s = this.settings, h, d = document, sp2;

                v += '?js=true&plugins=' + escape(s.plugins);
                v += '&themes=' + escape(s.themes);
                v += '&languages=' + escape(s.languages);
                v += '&diskcache=' + (s.disk_cache ? 'true' : 'false');
                //v += this.checkCompress() ? '' : '&compress=false';

                this.loadFile(this.baseURL + v);
        },

        checkCompress : function() {
                var sp2, ver, na = navigator, ua = navigator.userAgent;

                // Non IE browsers are fine
                if (!this.isIE)
                        return 1;

                sp2 = na.appMinorVersion.indexOf('SP2') != -1;
                ver = parseFloat(ua.match(/MSIE\s+([0-9\.]+)/)[1]);

                // IE 6.0+ with SP2 seems fine
                if (ver >= 6 && sp2)
                        return 1;

                // IE 7.0+ seems fine
                if (ver >= 7)
                        return 1;

                // All others might fail
                return 0;
        },

        loadFile : function(u) {
                var x, ex;

                if (this.settings['debug'])
                        alert('JS: ' + u);

                if (this.isIE) {
                        // Synchronous AJAX load gzip JS file
                        try {
                                x = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (ex) {
                                x = new ActiveXObject("Msxml2.XMLHTTP");
                        }

                        x.open("GET", u.replace(/%2C/g, ','), false);
                        x.send(null);

                        this.scriptData = x.responseText;

                        document.write('<script type="text/javascript">eval(tinyMCE_GZ.scriptData);</script>');
                } else
                        document.write('<script type="text/javascript" src="' + u + '"></script>');
        },

        start : function() {
                var s = this.settings, p = TinyMCE_Engine.prototype;

                p.__loadScript = p.loadScript;
                p.__importThemeLanguagePack = p.importThemeLanguagePack;
                p.__importPluginLanguagePack = p.importPluginLanguagePack;
                p.__loadNextScript = p.loadNextScript;
                p.loadScript = p.importThemeLanguagePack = p.importPluginLanguagePack = p.loadNextScript = function() {};
                tinyMCE.baseURL = this.baseURL.substring(0, this.baseURL.length - 1);
                tinyMCE.settings = {};
                tinyMCE.srcMode = '';
        },

        end : function() {
                var s = this.settings, l = tinyMCE.loadedFiles, la, i, p = TinyMCE_Engine.prototype;

                this.addFiles(s.plugins, 'plugins', 'editor_plugin.js');
                this.addFiles(s.themes, 'themes', 'editor_template.js');

                la = s.languages.replace(/\s+/, '').split(',')
                for (i=0; i<la.length; i++)
                        l[l.length] = this.baseURL + 'langs/' + la[i] + '.js';

                p.loadScript = p.__loadScript;
                p.importThemeLanguagePack = p.__importThemeLanguagePack;
                p.importPluginLanguagePack = p.__importPluginLanguagePack;
                p.loadNextScript = p.__loadNextScript;
        },

        addFiles : function(f, c, e) {
                var i, a, s = this.settings, l = tinyMCE.loadedFiles, la, x;

                a = f.replace(/\s+/, '').split(',');
                for (i=0; i<a.length; i++) {
                        if (a[i]) {
                                l[l.length] = this.baseURL + c + '/' +  a[i] + '/' + e;

                                la = s.languages.replace(/\s+/, '').split(',')
                                for (x=0; x<la.length; x++)
                                        l[l.length] = this.baseURL + c + '/' +  a[i] + '/langs/' + la[x] + '.js';
                        }
                }
        }
};