﻿/*
Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/

(function(){
    if(!window.CKEDITOR)window.CKEDITOR=(function(){
        var a={
            timestamp:'99GE',
            version:'3.0.1',
            revision:'4391',
            _:{},
            status:'unloaded',
            basePath:(function(){
                var d=window.CKEDITOR_BASEPATH||'';
                if(!d){
                    var e=document.getElementsByTagName('script');
                    for(var f=0;f<e.length;f++){
                        var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);
                        if(g){
                            d=g[1];
                            break;
                        }
                    }
                    }
                if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;
            return d;
        })(),
        getUrl:function(d){
        if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;
        if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;
        return d;
    }
    },b=window.CKEDITOR_GETURL;
    if(b){
        var c=a.getUrl;
        a.getUrl=function(d){
            return b.call(a,d)||c.call(a,d);
        };

}
return a;
})();
var a=CKEDITOR;
if(!a.event){
    a.event=function(){};

    a.event.implementOn=function(b,c){
        var d=a.event.prototype;
        for(var e in d)if(b[e]==undefined)b[e]=d[e];
            };

    a.event.prototype=(function(){
        var b=function(d){
            var e=d.getPrivate&&d.getPrivate()||d._||(d._={});
            return e.events||(e.events={});
        },c=function(d){
            this.name=d;
            this.listeners=[];
        };

        c.prototype={
            getListenerIndex:function(d){
                for(var e=0,f=this.listeners;e<f.length;e++)if(f[e].fn==d)return e;return-1;
            }
        };

    return{
        on:function(d,e,f,g,h){
            var i=b(this),j=i[d]||(i[d]=new c(d));
            if(j.getListenerIndex(e)<0){
                var k=j.listeners;
                if(!f)f=this;
                if(isNaN(h))h=10;
                var l=this,m=function(o,p,q,r){
                    var s={
                        name:d,
                        sender:this,
                        editor:o,
                        data:p,
                        listenerData:g,
                        stop:q,
                        cancel:r,
                        removeListener:function(){
                            l.removeListener(d,e);
                        }
                    };

                e.call(f,s);
                return s.data;
            };

            m.fn=e;
            m.priority=h;
            for(var n=k.length-1;n>=0;n--)if(k[n].priority<=h){
                k.splice(n+1,0,m);
                return;
            }
            k.unshift(m);
        }
    },
    fire:(function(){
        var d=false,e=function(){
            d=true;
        },f=false,g=function(){
            f=true;
        };

        return function(h,i,j){
            var k=b(this)[h],l=d,m=f;
            d=f=false;
            if(k){
                var n=k.listeners;
                if(n.length){
                    n=n.slice(0);
                    for(var o=0;o<n.length;o++){
                        var p=n[o].call(this,j,i,e,g);
                        if(typeof p!='undefined')i=p;
                        if(d||f)break;
                    }
                    }
                }
        var q=f||(typeof i=='undefined'?false:i);
        d=l;
        f=m;
        return q;
    };

})(),
fireOnce:function(d,e,f){
    var g=this.fire(d,e,f);
    delete b(this)[d];
    return g;
},
removeListener:function(d,e){
    var f=b(this)[d];
    if(f){
        var g=f.getListenerIndex(e);
        if(g>=0)f.listeners.splice(g,1);
    }
},
hasListeners:function(d){
    var e=b(this)[d];
    return e&&e.listeners.length>0;
}
};

})();
}
if(!a.editor){
    a.ELEMENT_MODE_NONE=0;
    a.ELEMENT_MODE_REPLACE=1;
    a.ELEMENT_MODE_APPENDTO=2;
    a.editor=function(b,c,d){
        var e=this;
        e._={
            instanceConfig:b,
            element:c
        };
        e.elementMode=d||0;
        a.event.call(e);
        e._init();
    };

    a.editor.replace=function(b,c){
        var d=b;
        if(typeof d!='object'){
            d=document.getElementById(b);
            if(!d){
                var e=0,f=document.getElementsByName(b);
                while((d=f[e++])&&(d.tagName.toLowerCase()!='textarea')){}
        }
        if(!d)throw '[CKEDITOR.editor.replace] The element with id or name "'+b+'" was not found.';
    }
    d.style.visibility='hidden';
    return new a.editor(c,d,1);
};

a.editor.appendTo=function(b,c){
    if(typeof b!='object'){
        b=document.getElementById(b);
        if(!b)throw '[CKEDITOR.editor.appendTo] The element with id "'+b+'" was not found.';
    }
    return new a.editor(c,b,2);
};

a.editor.prototype={
    _init:function(){
        var b=a.editor._pending||(a.editor._pending=[]);
        b.push(this);
    },
    fire:function(b,c){
        return a.event.prototype.fire.call(this,b,c,this);
    },
    fireOnce:function(b,c){
        return a.event.prototype.fireOnce.call(this,b,c,this);
    }
};

a.event.implementOn(a.editor.prototype,true);
}
if(!a.env)a.env=(function(){
    var b=navigator.userAgent.toLowerCase(),c=window.opera,d={
        ie:/*@cc_on!@*/false,
        opera:!!c&&c.version,
        webkit:b.indexOf(' applewebkit/')>-1,
        air:b.indexOf(' adobeair/')>-1,
        mac:b.indexOf('macintosh')>-1,
        quirks:document.compatMode=='BackCompat',
        isCustomDomain:function(){
            return this.ie&&document.domain!=window.location.hostname;
        }
    };

d.gecko=navigator.product=='Gecko'&&!d.webkit&&!d.opera;
var e=0;
if(d.ie){
    e=parseFloat(b.match(/msie (\d+)/)[1]);
    d.ie8=!!document.documentMode;
    d.ie8Compat=document.documentMode==8;
    d.ie7Compat=e==7&&!document.documentMode||document.documentMode==7;
    d.ie6Compat=e<7||d.quirks;
}
if(d.gecko){
    var f=b.match(/rv:([\d\.]+)/);
    if(f){
        f=f[1].split('.');
        e=f[0]*10000+(f[1]||0)*(100)+ +(f[2]||0);
    }
}
if(d.opera)e=parseFloat(c.version());
    if(d.air)e=parseFloat(b.match(/ adobeair\/(\d+)/)[1]);
    if(d.webkit)e=parseFloat(b.match(/ applewebkit\/(\d+)/)[1]);
    d.version=e;
    d.isCompatible=d.ie&&e>=6||d.gecko&&e>=10801||d.opera&&e>=9.5||d.air&&e>=1||d.webkit&&e>=522||false;
    d.cssClass='cke_browser_'+(d.ie?'ie':d.gecko?'gecko':d.opera?'opera':d.air?'air':d.webkit?'webkit':'unknown');
    if(d.quirks)d.cssClass+=' cke_browser_quirks';
    if(d.ie){
    d.cssClass+=' cke_browser_ie'+(d.version<7?'6':d.version>=8?'8':'7');
    if(d.quirks)d.cssClass+=' cke_browser_iequirks';
}
if(d.gecko&&e<10900)d.cssClass+=' cke_browser_gecko18';
    return d;
})();
var b=a.env;
var c=b.ie;
if(a.status=='unloaded')(function(){
    a.event.implementOn(a);
    a.loadFullCore=function(){
        if(a.status!='basic_ready'){
            a.loadFullCore._load=true;
            return;
        }
        delete a.loadFullCore;
        var e=document.createElement('script');
        e.type='text/javascript';
        e.src=a.basePath+'ckeditor.js';
        document.getElementsByTagName('head')[0].appendChild(e);
    };

    a.loadFullCoreTimeout=0;
    a.replaceClass='ckeditor';
    a.replaceByClassEnabled=true;
    var d=function(e,f,g){
        if(b.isCompatible){
            if(a.loadFullCore)a.loadFullCore();
            var h=g(e,f);
            a.add(h);
            return h;
        }
        return null;
    };

    a.replace=function(e,f){
        return d(e,f,a.editor.replace);
    };

    a.appendTo=function(e,f){
        return d(e,f,a.editor.appendTo);
    };

    a.add=function(e){
        var f=this._.pending||(this._.pending=[]);
        f.push(e);
    };

    a.replaceAll=function(){
        var e=document.getElementsByTagName('textarea');
        for(var f=0;f<e.length;f++){
            var g=null,h=e[f],i=h.name;
            if(!h.name&&!h.id)continue;
            if(typeof arguments[0]=='string'){
                var j=new RegExp('(?:^| )'+arguments[0]+'(?:$| )');
                if(!j.test(h.className))continue;
            }else if(typeof arguments[0]=='function'){
                g={};

                if(arguments[0](h,g)===false)continue;
            }
            this.replace(h,g);
        }
        };
(function(){
    var e=function(){
        var f=a.loadFullCore,g=a.loadFullCoreTimeout;
        if(a.replaceByClassEnabled)a.replaceAll(a.replaceClass);
        a.status='basic_ready';
        if(f&&f._load)f();
        else if(g)setTimeout(function(){
            if(a.loadFullCore)a.loadFullCore();
        },g*1000);
    };

    if(window.addEventListener)window.addEventListener('load',e,false);
    else if(window.attachEvent)window.attachEvent('onload',e);
})();
    a.status='basic_loaded';
    })();
a.dom={};

var d=a.dom;
(function(){
    var e=[];
    a.tools={
        arrayCompare:function(f,g){
            if(!f&&!g)return true;
            if(!f||!g||f.length!=g.length)return false;
            for(var h=0;h<f.length;h++)if(f[h]!=g[h])return false;return true;
        },
        clone:function(f){
            var g;
            if(f&&f instanceof Array){
                g=[];
                for(var h=0;h<f.length;h++)g[h]=this.clone(f[h]);
                return g;
            }
            if(f===null||typeof f!='object'||f instanceof String||f instanceof Number||f instanceof Boolean||f instanceof Date)return f;
            g=new f.constructor();
            for(var i in f){
                var j=f[i];
                g[i]=this.clone(j);
            }
            return g;
        },
        extend:function(f){
            var g=arguments.length,h,i;
            if(typeof (h=arguments[g-1])=='boolean')g--;
            else if(typeof (h=arguments[g-2])=='boolean'){
                i=arguments[g-1];
                g-=2;
            }
            for(var j=1;j<g;j++){
                var k=arguments[j];
                for(var l in k)if(h===true||f[l]==undefined)if(!i||l in i)f[l]=k[l];
                    }
                    return f;
        },
        prototypedCopy:function(f){
            var g=function(){};

            g.prototype=f;
            return new g();
        },
        isArray:function(f){
            return!!f&&f instanceof Array;
        },
        cssStyleToDomStyle:(function(){
            var f=document.createElement('div').style,g=typeof f.cssFloat!='undefined'?'cssFloat':typeof f.styleFloat!='undefined'?'styleFloat':'float';
            return function(h){
                if(h=='float')return g;else return h.replace(/-./g,function(i){
                    return i.substr(1).toUpperCase();
                });
            };

        })(),
    htmlEncode:function(f){
        var g=function(k){
            var l=new d.element('span');
            l.setText(k);
            return l.getHtml();
        },h=g('\n').toLowerCase()=='<br>'?function(k){
            return g(k).replace(/<br>/gi,'\n');
        }:g,i=g('>')=='>'?function(k){
            return h(k).replace(/>/g,'&gt;');
        }:h,j=g('  ')=='&nbsp; '?function(k){
            return i(k).replace(/&nbsp;/g,' ');
        }:i;
        this.htmlEncode=j;
        return this.htmlEncode(f);
    },
    getNextNumber:(function(){
        var f=0;
        return function(){
            return++f;
        };

    })(),
    override:function(f,g){
    return g(f);
},
setTimeout:function(f,g,h,i,j){
    if(!j)j=window;
    if(!h)h=j;
    return j.setTimeout(function(){
        if(i)f.apply(h,[].concat(i));else f.apply(h);
    },g||0);
},
trim:(function(){
    var f=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;
    return function(g){
        return g.replace(f,'');
    };

})(),
ltrim:(function(){
    var f=/^[ \t\n\r]+/g;
    return function(g){
        return g.replace(f,'');
    };

})(),
rtrim:(function(){
    var f=/[ \t\n\r]+$/g;
    return function(g){
        return g.replace(f,'');
    };

})(),
indexOf:Array.prototype.indexOf?function(f,g){
    return f.indexOf(g);
}:function(f,g){
    for(var h=0,i=f.length;h<i;h++)if(f[h]===g)return h;return-1;
},
bind:function(f,g){
    return function(){
        return f.apply(g,arguments);
    };

},
createClass:function(f){
    var g=f.$,h=f.base,i=f.privates||f._,j=f.proto,k=f.statics;
    if(i){
        var l=g;
        g=function(){
            var p=this;
            var m=p._||(p._={});
            for(var n in i){
                var o=i[n];
                m[n]=typeof o=='function'?a.tools.bind(o,p):o;
            }
            l.apply(p,arguments);
        };

}
if(h){
    g.prototype=this.prototypedCopy(h.prototype);
    g.prototype['constructor']=g;
    g.prototype.base=function(){
        this.base=h.prototype.base;
        h.apply(this,arguments);
        this.base=arguments.callee;
    };

}
if(j)this.extend(g.prototype,j,true);
if(k)this.extend(g,k,true);
return g;
},
addFunction:function(f,g){
    return e.push(function(){
        f.apply(g||this,arguments);
    })-1;
},
callFunction:function(f){
    var g=e[f];
    return g.apply(window,Array.prototype.slice.call(arguments,1));
},
cssLength:(function(){
    var f=/^\d+(?:\.\d+)?$/;
    return function(g){
        return g+(f.test(g)?'px':'');
    };

})(),
repeat:function(f,g){
    return new Array(g+1).join(f);
}
};

})();
var e=a.tools;
a.dtd=(function(){
    var f=e.extend,g={
        isindex:1,
        fieldset:1
    },h={
        input:1,
        button:1,
        select:1,
        textarea:1,
        label:1
    },i=f({
        a:1
    },h),j=f({
        iframe:1
    },i),k={
        hr:1,
        ul:1,
        menu:1,
        div:1,
        blockquote:1,
        noscript:1,
        table:1,
        center:1,
        address:1,
        dir:1,
        pre:1,
        h5:1,
        dl:1,
        h4:1,
        noframes:1,
        h6:1,
        ol:1,
        h1:1,
        h3:1,
        h2:1
    },l={
        ins:1,
        del:1,
        script:1
    },m=f({
        b:1,
        acronym:1,
        bdo:1,
        'var':1,
        '#':1,
        abbr:1,
        code:1,
        br:1,
        i:1,
        cite:1,
        kbd:1,
        u:1,
        strike:1,
        s:1,
        tt:1,
        strong:1,
        q:1,
        samp:1,
        em:1,
        dfn:1,
        span:1
    },l),n=f({
        sub:1,
        img:1,
        object:1,
        sup:1,
        basefont:1,
        map:1,
        applet:1,
        font:1,
        big:1,
        small:1
    },m),o=f({
        p:1
    },n),p=f({
        iframe:1
    },n,h),q={
        img:1,
        noscript:1,
        br:1,
        kbd:1,
        center:1,
        button:1,
        basefont:1,
        h5:1,
        h4:1,
        samp:1,
        h6:1,
        ol:1,
        h1:1,
        h3:1,
        h2:1,
        form:1,
        font:1,
        '#':1,
        select:1,
        menu:1,
        ins:1,
        abbr:1,
        label:1,
        code:1,
        table:1,
        script:1,
        cite:1,
        input:1,
        iframe:1,
        strong:1,
        textarea:1,
        noframes:1,
        big:1,
        small:1,
        span:1,
        hr:1,
        sub:1,
        bdo:1,
        'var':1,
        div:1,
        object:1,
        sup:1,
        strike:1,
        dir:1,
        map:1,
        dl:1,
        applet:1,
        del:1,
        isindex:1,
        fieldset:1,
        ul:1,
        b:1,
        acronym:1,
        a:1,
        blockquote:1,
        i:1,
        u:1,
        s:1,
        tt:1,
        address:1,
        q:1,
        pre:1,
        p:1,
        em:1,
        dfn:1
    },r=f({
        a:1
    },p),s={
        tr:1
    },t={
        '#':1
    },u=f({
        param:1
    },q),v=f({
        form:1
    },g,j,k,o),w={
        li:1
    },x={
        address:1,
        blockquote:1,
        center:1,
        dir:1,
        div:1,
        dl:1,
        fieldset:1,
        form:1,
        h1:1,
        h2:1,
        h3:1,
        h4:1,
        h5:1,
        h6:1,
        hr:1,
        isindex:1,
        menu:1,
        noframes:1,
        ol:1,
        p:1,
        pre:1,
        table:1,
        ul:1
    };
    return{
        $block:x,
        $body:f({
            script:1
        },x),
        $cdata:{
            script:1,
            style:1
        },
        $empty:{
            area:1,
            base:1,
            br:1,
            col:1,
            hr:1,
            img:1,
            input:1,
            link:1,
            meta:1,
            param:1
        },
        $listItem:{
            dd:1,
            dt:1,
            li:1
        },
        $list:{
            ul:1,
            ol:1,
            dl:1
        },
        $nonEditable:{
            applet:1,
            button:1,
            embed:1,
            iframe:1,
            map:1,
            object:1,
            option:1,
            script:1,
            textarea:1
        },
        $removeEmpty:{
            abbr:1,
            acronym:1,
            address:1,
            b:1,
            bdo:1,
            big:1,
            cite:1,
            code:1,
            del:1,
            dfn:1,
            em:1,
            font:1,
            i:1,
            ins:1,
            label:1,
            kbd:1,
            q:1,
            s:1,
            samp:1,
            small:1,
            span:1,
            strike:1,
            strong:1,
            sub:1,
            sup:1,
            tt:1,
            u:1,
            'var':1
        },
        $tabIndex:{
            a:1,
            area:1,
            button:1,
            input:1,
            object:1,
            select:1,
            textarea:1
        },
        $tableContent:{
            caption:1,
            col:1,
            colgroup:1,
            tbody:1,
            td:1,
            tfoot:1,
            th:1,
            thead:1,
            tr:1
        },
        col:{},
        tr:{
            td:1,
            th:1
        },
        img:{},
        colgroup:{
            col:1
        },
        noscript:v,
        td:v,
        br:{},
        th:v,
        center:v,
        kbd:r,
        button:f(o,k),
        basefont:{},
        h5:r,
        h4:r,
        samp:r,
        h6:r,
        ol:w,
        h1:r,
        h3:r,
        option:t,
        h2:r,
        form:f(g,j,k,o),
        select:{
            optgroup:1,
            option:1
        },
        font:r,
        ins:v,
        menu:w,
        abbr:r,
        label:r,
        table:{
            thead:1,
            col:1,
            tbody:1,
            tr:1,
            colgroup:1,
            caption:1,
            tfoot:1
        },
        code:r,
        script:t,
        tfoot:s,
        cite:r,
        li:v,
        input:{},
        iframe:v,
        strong:r,
        textarea:t,
        noframes:v,
        big:r,
        small:r,
        span:r,
        hr:{},
        dt:r,
        sub:r,
        optgroup:{
            option:1
        },
        param:{},
        bdo:r,
        'var':r,
        div:v,
        object:u,
        sup:r,
        dd:v,
        strike:r,
        area:{},
        dir:w,
        map:f({
            area:1,
            form:1,
            p:1
        },g,l,k),
        applet:u,
        dl:{
            dt:1,
            dd:1
        },
        del:v,
        isindex:{},
        fieldset:f({
            legend:1
        },q),
        thead:s,
        ul:w,
        acronym:r,
        b:r,
        a:p,
        blockquote:v,
        caption:r,
        i:r,
        u:r,
        tbody:s,
        s:r,
        address:f(j,o),
        tt:r,
        legend:r,
        q:r,
        pre:f(m,i),
        p:r,
        em:r,
        dfn:r
    };

})();
var f=a.dtd;
d.event=function(g){
    this.$=g;
};

d.event.prototype={
    getKey:function(){
        return this.$.keyCode||this.$.which;
    },
    getKeystroke:function(){
        var h=this;
        var g=h.getKey();
        if(h.$.ctrlKey||h.$.metaKey)g+=1000;
        if(h.$.shiftKey)g+=2000;
        if(h.$.altKey)g+=4000;
        return g;
    },
    preventDefault:function(g){
        var h=this.$;
        if(h.preventDefault)h.preventDefault();else h.returnValue=false;
        if(g)this.stopPropagation();
    },
    stopPropagation:function(){
        var g=this.$;
        if(g.stopPropagation)g.stopPropagation();else g.cancelBubble=true;
    },
    getTarget:function(){
        var g=this.$.target||this.$.srcElement;
        return g?new d.node(g):null;
    }
};

a.CTRL=1000;
a.SHIFT=2000;
a.ALT=4000;
d.domObject=function(g){
    if(g)this.$=g;
};

d.domObject.prototype=(function(){
    var g=function(h,i){
        return function(j){
            if(typeof a!='undefined')h.fire(i,new d.event(j));
        };

};

return{
    getPrivate:function(){
        var h;
        if(!(h=this.getCustomData('_')))this.setCustomData('_',h={});
        return h;
    },
    on:function(h){
        var k=this;
        var i=k.getCustomData('_cke_nativeListeners');
        if(!i){
            i={};

            k.setCustomData('_cke_nativeListeners',i);
        }
        if(!i[h]){
            var j=i[h]=g(k,h);
            if(k.$.addEventListener)k.$.addEventListener(h,j,!!a.event.useCapture);
            else if(k.$.attachEvent)k.$.attachEvent('on'+h,j);
        }
        return a.event.prototype.on.apply(k,arguments);
    },
    removeListener:function(h){
        var k=this;
        a.event.prototype.removeListener.apply(k,arguments);
        if(!k.hasListeners(h)){
            var i=k.getCustomData('_cke_nativeListeners'),j=i&&i[h];
            if(j){
                if(k.$.removeEventListener)k.$.removeEventListener(h,j,false);
                else if(k.$.detachEvent)k.$.detachEvent('on'+h,j);
                delete i[h];
            }
        }
    }
};

})();
(function(g){
    var h={};

    g.equals=function(i){
        return i&&i.$===this.$;
    };

    g.setCustomData=function(i,j){
        var k=this.getUniqueId(),l=h[k]||(h[k]={});
        l[i]=j;
        return this;
    };

    g.getCustomData=function(i){
        var j=this.$._cke_expando,k=j&&h[j];
        return k&&k[i];
    };

    g.removeCustomData=function(i){
        var j=this.$._cke_expando,k=j&&h[j],l=k&&k[i];
        if(typeof l!='undefined')delete k[i];
        return l||null;
    };

    g.getUniqueId=function(){
        return this.$._cke_expando||(this.$._cke_expando=e.getNextNumber());
    };

    a.event.implementOn(g);
})(d.domObject.prototype);
d.window=function(g){
    d.domObject.call(this,g);
};

d.window.prototype=new d.domObject();
e.extend(d.window.prototype,{
    focus:function(){
        if(b.webkit&&this.$.parent)this.$.parent.focus();
        this.$.focus();
    },
    getViewPaneSize:function(){
        var g=this.$.document,h=g.compatMode=='CSS1Compat';
        return{
            width:(h?g.documentElement.clientWidth:g.body.clientWidth)||(0),
            height:(h?g.documentElement.clientHeight:g.body.clientHeight)||(0)
            };

},
getScrollPosition:function(){
    var g=this.$;
    if('pageXOffset' in g)return{
        x:g.pageXOffset||0,
        y:g.pageYOffset||0
        };
    else{
        var h=g.document;
        return{
            x:h.documentElement.scrollLeft||h.body.scrollLeft||0,
            y:h.documentElement.scrollTop||h.body.scrollTop||0
            };

}
}
});
d.document=function(g){
    d.domObject.call(this,g);
};

var g=d.document;
g.prototype=new d.domObject();
e.extend(g.prototype,{
    appendStyleSheet:function(h){
        if(this.$.createStyleSheet)this.$.createStyleSheet(h);
        else{
            var i=new d.element('link');
            i.setAttributes({
                rel:'stylesheet',
                type:'text/css',
                href:h
            });
            this.getHead().append(i);
        }
    },
createElement:function(h,i){
    var j=new d.element(h,this);
    if(i){
        if(i.attributes)j.setAttributes(i.attributes);
        if(i.styles)j.setStyles(i.styles);
    }
    return j;
},
createText:function(h){
    return new d.text(h,this);
},
focus:function(){
    this.getWindow().focus();
},
getById:function(h){
    var i=this.$.getElementById(h);
    return i?new d.element(i):null;
},
getByAddress:function(h,i){
    var j=this.$.documentElement;
    for(var k=0;j&&k<h.length;k++){
        var l=h[k];
        if(!i){
            j=j.childNodes[l];
            continue;
        }
        var m=-1;
        for(var n=0;n<j.childNodes.length;n++){
            var o=j.childNodes[n];
            if(i===true&&o.nodeType==3&&o.previousSibling&&o.previousSibling.nodeType==3)continue;
            m++;
            if(m==l){
                j=o;
                break;
            }
        }
        }
    return j?new d.node(j):null;
},
getElementsByTag:function(h,i){
    if(!c&&i)h=i+':'+h;
    return new d.nodeList(this.$.getElementsByTagName(h));
},
getHead:function(){
    var h=this.$.getElementsByTagName('head')[0];
    h=new d.element(h);
    return(this.getHead=function(){
        return h;
    })();
},
getBody:function(){
    var h=new d.element(this.$.body);
    return(this.getBody=function(){
        return h;
    })();
},
getDocumentElement:function(){
    var h=new d.element(this.$.documentElement);
    return(this.getDocumentElement=function(){
        return h;
    })();
},
getWindow:function(){
    var h=new d.window(this.$.parentWindow||this.$.defaultView);
    return(this.getWindow=function(){
        return h;
    })();
}
});
d.node=function(h){
    if(h){
        switch(h.nodeType){
            case 1:
                return new d.element(h);
            case 3:
                return new d.text(h);
        }
        d.domObject.call(this,h);
    }
    return this;
};

d.node.prototype=new d.domObject();
a.NODE_ELEMENT=1;
a.NODE_TEXT=3;
a.NODE_COMMENT=8;
a.NODE_DOCUMENT_FRAGMENT=11;
a.POSITION_IDENTICAL=0;
a.POSITION_DISCONNECTED=1;
a.POSITION_FOLLOWING=2;
a.POSITION_PRECEDING=4;
a.POSITION_IS_CONTAINED=8;
a.POSITION_CONTAINS=16;
e.extend(d.node.prototype,{
    appendTo:function(h,i){
        h.append(this,i);
        return h;
    },
    clone:function(h,i){
        var j=this.$.cloneNode(h);
        if(!i){
            var k=function(l){
                if(l.nodeType!=1)return;
                l.removeAttribute('id',false);
                l.removeAttribute('_cke_expando',false);
                var m=l.childNodes;
                for(var n=0;n<m.length;n++)k(m[n]);
            };

            k(j);
        }
        return new d.node(j);
    },
    hasPrevious:function(){
        return!!this.$.previousSibling;
    },
    hasNext:function(){
        return!!this.$.nextSibling;
    },
    insertAfter:function(h){
        h.$.parentNode.insertBefore(this.$,h.$.nextSibling);
        return h;
    },
    insertBefore:function(h){
        h.$.parentNode.insertBefore(this.$,h.$);
        return h;
    },
    insertBeforeMe:function(h){
        this.$.parentNode.insertBefore(h.$,this.$);
        return h;
    },
    getAddress:function(h){
        var i=[],j=this.getDocument().$.documentElement,k=this.$;
        while(k&&k!=j){
            var l=k.parentNode,m=-1;
            for(var n=0;n<l.childNodes.length;n++){
                var o=l.childNodes[n];
                if(h&&o.nodeType==3&&o.previousSibling&&o.previousSibling.nodeType==3)continue;
                m++;
                if(o==k)break;
            }
            i.unshift(m);
            k=k.parentNode;
        }
        return i;
    },
    getDocument:function(){
        var h=new g(this.$.ownerDocument||this.$.parentNode.ownerDocument);
        return(this.getDocument=function(){
            return h;
        })();
    },
    getIndex:function(){
        var h=this.$,i=h.parentNode&&h.parentNode.firstChild,j=-1;
        while(i){
            j++;
            if(i==h)return j;
            i=i.nextSibling;
        }
        return-1;
    },
    getNextSourceNode:function(h,i,j){
        if(j&&!j.call){
            var k=j;
            j=function(n){
                return!n.equals(k);
            };

    }
    var l=!h&&this.getFirst&&this.getFirst(),m;
    if(!l){
        if(this.type==1&&j&&j(this,true)===false)return null;
        l=this.getNext();
    }while(!l&&(m=(m||this).getParent())){
        if(j&&j(m,true)===false)return null;
        l=m.getNext();
    }
    if(!l)return null;
    if(j&&j(l)===false)return null;
    if(i&&i!=l.type)return l.getNextSourceNode(false,i,j);
    return l;
},
getPreviousSourceNode:function(h,i,j){
    if(j&&!j.call){
        var k=j;
        j=function(n){
            return!n.equals(k);
        };

}
var l=!h&&this.getLast&&this.getLast(),m;
    if(!l){
    if(this.type==1&&j&&j(this,true)===false)return null;
    l=this.getPrevious();
}while(!l&&(m=(m||this).getParent())){
    if(j&&j(m,true)===false)return null;
    l=m.getPrevious();
}
if(!l)return null;
    if(j&&j(l)===false)return null;
    if(i&&l.type!=i)return l.getPreviousSourceNode(false,i,j);
    return l;
},
getPrevious:function(h){
    var i=this.$,j;
    do{
        i=i.previousSibling;
        j=i&&new d.node(i);
    }while(j&&h&&!h(j))return j;
},
getNext:function(h){
    var i=this.$,j;
    do{
        i=i.nextSibling;
        j=i&&new d.node(i);
    }while(j&&h&&!h(j))return j;
},
getParent:function(){
    var h=this.$.parentNode;
    return h&&h.nodeType==1?new d.node(h):null;
},
getParents:function(h){
    var i=this,j=[];
    do j[h?'push':'unshift'](i);while(i=i.getParent())return j;
},
getCommonAncestor:function(h){
    var j=this;
    if(h.equals(j))return j;
    if(h.contains&&h.contains(j))return h;
    var i=j.contains?j:j.getParent();
    do if(i.contains(h))return i;while(i=i.getParent())return null;
},
getPosition:function(h){
    var i=this.$,j=h.$;
    if(i.compareDocumentPosition)return i.compareDocumentPosition(j);
    if(i==j)return 0;
    if(this.type==1&&h.type==1){
        if(i.contains){
            if(i.contains(j))return 16+4;
            if(j.contains(i))return 8+2;
        }
        if('sourceIndex' in i)return i.sourceIndex<0||j.sourceIndex<0?1:i.sourceIndex<j.sourceIndex?4:2;
    }
    var k=this.getAddress(),l=h.getAddress(),m=Math.min(k.length,l.length);
    for(var n=0;n<=m-1;n++)if(k[n]!=l[n]){
        if(n<m)return k[n]<l[n]?4:2;
        break;
    }
    return k.length<l.length?16+4:8+2;
},
getAscendant:function(h,i){
    var j=this.$;
    if(!i)j=j.parentNode;
    while(j){
        if(j.nodeName&&j.nodeName.toLowerCase()==h)return new d.node(j);
        j=j.parentNode;
    }
    return null;
},
hasAscendant:function(h,i){
    var j=this.$;
    if(!i)j=j.parentNode;
    while(j){
        if(j.nodeName&&j.nodeName.toLowerCase()==h)return true;
        j=j.parentNode;
    }
    return false;
},
move:function(h,i){
    h.append(this.remove(),i);
},
remove:function(h){
    var i=this.$,j=i.parentNode;
    if(j){
        if(h)for(var k;k=i.firstChild;)j.insertBefore(i.removeChild(k),i);
        j.removeChild(i);
    }
    return this;
},
replace:function(h){
    this.insertBefore(h);
    h.remove();
},
trim:function(){
    this.ltrim();
    this.rtrim();
},
ltrim:function(){
    var k=this;
    var h;
    while(k.getFirst&&(h=k.getFirst())){
        if(h.type==3){
            var i=e.ltrim(h.getText()),j=h.getLength();
            if(!i){
                h.remove();
                continue;
            }else if(i.length<j){
                h.split(j-i.length);
                k.$.removeChild(k.$.firstChild);
            }
        }
        break;
}
},
rtrim:function(){
    var k=this;
    var h;
    while(k.getLast&&(h=k.getLast())){
        if(h.type==3){
            var i=e.rtrim(h.getText()),j=h.getLength();
            if(!i){
                h.remove();
                continue;
            }else if(i.length<j){
                h.split(i.length);
                k.$.lastChild.parentNode.removeChild(k.$.lastChild);
            }
        }
        break;
}
if(!c&&!b.opera){
    h=k.$.lastChild;
    if(h&&h.type==1&&h.nodeName.toLowerCase()=='br')h.parentNode.removeChild(h);
}
}
});
d.nodeList=function(h){
    this.$=h;
};

d.nodeList.prototype={
    count:function(){
        return this.$.length;
    },
    getItem:function(h){
        var i=this.$[h];
        return i?new d.node(i):null;
    }
};

d.element=function(h,i){
    if(typeof h=='string')h=(i?i.$:document).createElement(h);
    d.domObject.call(this,h);
};

var h=d.element;
h.get=function(i){
    return i&&(i.$?i:new h(i));
};

h.prototype=new d.node();
h.createFromHtml=function(i,j){
    var k=new h('div',j);
    k.setHtml(i);
    return k.getFirst().remove();
};

h.setMarker=function(i,j,k,l){
    var m=j.getCustomData('list_marker_id')||j.setCustomData('list_marker_id',e.getNextNumber()).getCustomData('list_marker_id'),n=j.getCustomData('list_marker_names')||j.setCustomData('list_marker_names',{}).getCustomData('list_marker_names');
    i[m]=j;
    n[k]=1;
    return j.setCustomData(k,l);
};

h.clearAllMarkers=function(i){
    for(var j in i)h.clearMarkers(i,i[j],true);
    };

h.clearMarkers=function(i,j,k){
    var l=j.getCustomData('list_marker_names'),m=j.getCustomData('list_marker_id');
    for(var n in l)j.removeCustomData(n);j.removeCustomData('list_marker_names');
    if(k){
        j.removeCustomData('list_marker_id');
        delete i[m];
    }
};

e.extend(h.prototype,{
    type:1,
    addClass:function(i){
        var j=this.$.className;
        if(j){
            var k=new RegExp('(?:^|\\s)'+i+'(?:\\s|$)','');
            if(!k.test(j))j+=' '+i;
        }
        this.$.className=j||i;
    },
    removeClass:function(i){
        var j=this.getAttribute('class');
        if(j){
            var k=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','i');
            if(k.test(j)){
                j=j.replace(k,'').replace(/^\s+/,'');
                if(j)this.setAttribute('class',j);else this.removeAttribute('class');
            }
        }
    },
hasClass:function(i){
    var j=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','');
    return j.test(this.getAttribute('class'));
},
append:function(i,j){
    var k=this;
    if(typeof i=='string')i=k.getDocument().createElement(i);
    if(j)k.$.insertBefore(i.$,k.$.firstChild);else k.$.appendChild(i.$);
    return i;
},
appendHtml:function(i){
    var k=this;
    if(!k.$.childNodes.length)k.setHtml(i);
    else{
        var j=new h('div',k.getDocument());
        j.setHtml(i);
        j.moveChildren(k);
    }
},
appendText:function(i){
    if(this.$.text!=undefined)this.$.text+=i;else this.append(new d.text(i));
},
appendBogus:function(){
    var j=this;
    var i=j.getLast();
    while(i&&i.type==3&&!e.rtrim(i.getText()))i=i.getPrevious();
    if(!i||!i.is||!i.is('br'))j.append(b.opera?j.getDocument().createText(''):j.getDocument().createElement('br'));
},
breakParent:function(i){
    var l=this;
    var j=new d.range(l.getDocument());
    j.setStartAfter(l);
    j.setEndAfter(i);
    var k=j.extractContents();
    j.insertNode(l.remove());
    k.insertAfterNode(l);
},
contains:c||b.webkit?function(i){
    var j=this.$;
    return i.type!=1?j.contains(i.getParent().$):j!=i.$&&j.contains(i.$);
}:function(i){
    return!!(this.$.compareDocumentPosition(i.$)&16);
},
focus:function(){
    try{
        this.$.focus();
    }catch(i){}
},
getHtml:function(){
    return this.$.innerHTML;
},
getOuterHtml:function(){
    var j=this;
    if(j.$.outerHTML)return j.$.outerHTML.replace(/<\?[^>]*>/,'');
    var i=j.$.ownerDocument.createElement('div');
    i.appendChild(j.$.cloneNode(true));
    return i.innerHTML;
},
setHtml:function(i){
    return this.$.innerHTML=i;
},
setText:function(i){
    h.prototype.setText=this.$.innerText!=undefined?function(j){
        return this.$.innerText=j;
    }:function(j){
        return this.$.textContent=j;
    };

    return this.setText(i);
},
getAttribute:(function(){
    var i=function(j){
        return this.$.getAttribute(j,2);
    };

    if(c&&(b.ie7Compat||b.ie6Compat))return function(j){
        var l=this;
        switch(j){
            case 'class':
                j='className';
                break;
            case 'tabindex':
                var k=i.call(l,j);
                if(k!==0&&l.$.tabIndex===0)k=null;
                return k;
                break;
            case 'checked':
                return l.$.checked;
                break;
            case 'style':
                return l.$.style.cssText;
        }
        return i.call(l,j);
    };else return i;
})(),
getChildren:function(){
    return new d.nodeList(this.$.childNodes);
},
getComputedStyle:c?function(i){
    return this.$.currentStyle[e.cssStyleToDomStyle(i)];
}:function(i){
    return this.getWindow().$.getComputedStyle(this.$,'').getPropertyValue(i);
},
getDtd:function(){
    var i=f[this.getName()];
    this.getDtd=function(){
        return i;
    };

    return i;
},
getElementsByTag:g.prototype.getElementsByTag,
getTabIndex:c?function(){
    var i=this.$.tabIndex;
    if(i===0&&!f.$tabIndex[this.getName()]&&parseInt(this.getAttribute('tabindex'),10)!==0)i=-1;
    return i;
}:b.webkit?function(){
    var i=this.$.tabIndex;
    if(i==undefined){
        i=parseInt(this.getAttribute('tabindex'),10);
        if(isNaN(i))i=-1;
    }
    return i;
}:function(){
    return this.$.tabIndex;
},
getText:function(){
    return this.$.textContent||this.$.innerText||'';
},
getWindow:function(){
    return this.getDocument().getWindow();
},
getId:function(){
    return this.$.id||null;
},
getNameAtt:function(){
    return this.$.name||null;
},
getName:function(){
    var i=this.$.nodeName.toLowerCase();
    if(c){
        var j=this.$.scopeName;
        if(j!='HTML')i=j.toLowerCase()+':'+i;
    }
    return(this.getName=function(){
        return i;
    })();
},
getValue:function(){
    return this.$.value;
},
getFirst:function(){
    var i=this.$.firstChild;
    return i?new d.node(i):null;
},
getLast:function(i){
    var j=this.$.lastChild,k=j&&new d.node(j);
    if(k&&i&&!i(k))k=k.getPrevious(i);
    return k;
},
getStyle:function(i){
    return this.$.style[e.cssStyleToDomStyle(i)];
},
is:function(){
    var i=this.getName();
    for(var j=0;j<arguments.length;j++)if(arguments[j]==i)return true;return false;
},
isEditable:function(){
    var i=this.getName(),j=!f.$nonEditable[i]&&(f[i]||f.span);
    return j&&j['#'];
},
isIdentical:function(i){
    if(this.getName()!=i.getName())return false;
    var j=this.$.attributes,k=i.$.attributes,l=j.length,m=k.length;
    if(!c&&l!=m)return false;
    for(var n=0;n<l;n++){
        var o=j[n];
        if((!c||o.specified&&o.nodeName!='_cke_expando')&&(o.nodeValue!=i.getAttribute(o.nodeName)))return false;
    }
    if(c)for(n=0;n<m;n++){
        o=k[n];
        if((!c||o.specified&&o.nodeName!='_cke_expando')&&(o.nodeValue!=j.getAttribute(o.nodeName)))return false;
    }
    return true;
},
isVisible:function(){
    return this.$.offsetWidth&&this.$.style.visibility!='hidden';
},
hasAttributes:c&&(b.ie7Compat||b.ie6Compat)?function(){
    var i=this.$.attributes;
    for(var j=0;j<i.length;j++){
        var k=i[j];
        switch(k.nodeName){
            case 'class':
                if(this.getAttribute('class'))return true;case '_cke_expando':
                continue;
            default:
                if(k.specified)return true;
                }
            }
    return false;
}:function(){
    var i=this.$.attributes;
    return i.length>1||i.length==1&&i[0].nodeName!='_cke_expando';
},
hasAttribute:function(i){
    var j=this.$.attributes.getNamedItem(i);
    return!!(j&&j.specified);
},
hide:function(){
    this.setStyle('display','none');
},
moveChildren:function(i,j){
    var k=this.$;
    i=i.$;
    if(k==i)return;
    var l;
    if(j)while(l=k.lastChild)i.insertBefore(k.removeChild(l),i.firstChild);else while(l=k.firstChild)i.appendChild(k.removeChild(l));
},
show:function(){
    this.setStyles({
        display:'',
        visibility:''
    });
},
setAttribute:(function(){
    var i=function(j,k){
        this.$.setAttribute(j,k);
        return this;
    };

    if(c&&(b.ie7Compat||b.ie6Compat))return function(j,k){
        var l=this;
        if(j=='class')l.$.className=k;
        else if(j=='style')l.$.style.cssText=k;
        else if(j=='tabindex')l.$.tabIndex=k;
        else if(j=='checked')l.$.checked=k;else i.apply(l,arguments);
        return l;
    };else return i;
})(),
setAttributes:function(i){
    for(var j in i)this.setAttribute(j,i[j]);return this;
},
setValue:function(i){
    this.$.value=i;
    return this;
},
removeAttribute:(function(){
    var i=function(j){
        this.$.removeAttribute(j);
    };

    if(c&&(b.ie7Compat||b.ie6Compat))return function(j){
        if(j=='class')j='className';
        else if(j=='tabindex')j='tabIndex';
        i.call(this,j);
    };else return i;
})(),
removeAttributes:function(i){
    for(var j=0;j<i.length;j++)this.removeAttribute(i[j]);
},
removeStyle:function(i){
    var j=this;
    if(j.$.style.removeAttribute)j.$.style.removeAttribute(e.cssStyleToDomStyle(i));else j.setStyle(i,'');
    if(!j.$.style.cssText)j.removeAttribute('style');
},
setStyle:function(i,j){
    this.$.style[e.cssStyleToDomStyle(i)]=j;
    return this;
},
setStyles:function(i){
    for(var j in i)this.setStyle(j,i[j]);return this;
},
setOpacity:function(i){
    if(c){
        i=Math.round(i*100);
        this.setStyle('filter',i>=100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+i+')');
    }else this.setStyle('opacity',i);
},
unselectable:b.gecko?function(){
    this.$.style.MozUserSelect='none';
}:b.webkit?function(){
    this.$.style.KhtmlUserSelect='none';
}:function(){
    if(c||b.opera){
        var i=this.$,j,k=0;
        i.unselectable='on';
        while(j=i.all[k++])switch(j.tagName.toLowerCase()){
            case 'iframe':case 'textarea':case 'input':case 'select':
                break;
            default:
                j.unselectable='on';
        }
        }
    },
getPositionedAncestor:function(){
    var i=this;
    while(i.getName()!='html'){
        if(i.getComputedStyle('position')!='static')return i;
        i=i.getParent();
    }
    return null;
},
getDocumentPosition:function(i){
    var D=this;
    var j=0,k=0,l=D.getDocument().getBody(),m=D.getDocument().$.compatMode=='BackCompat',n=D.getDocument();
    if(document.documentElement.getBoundingClientRect){
        var o=D.$.getBoundingClientRect(),p=n.$,q=p.documentElement,r=q.clientTop||l.$.clientTop||0,s=q.clientLeft||l.$.clientLeft||0,t=true;
        if(c){
            var u=n.getDocumentElement().contains(D),v=n.getBody().contains(D);
            t=m&&v||!m&&u;
        }
        if(t){
            j=o.left+(!m&&q.scrollLeft||l.$.scrollLeft);
            j-=s;
            k=o.top+(!m&&q.scrollTop||l.$.scrollTop);
            k-=r;
        }
    }else{
    var w=D,x=null,y;
    while(w&&!(w.getName()=='body'||w.getName()=='html')){
        j+=w.$.offsetLeft-w.$.scrollLeft;
        k+=w.$.offsetTop-w.$.scrollTop;
        if(!w.equals(D)){
            j+=w.$.clientLeft||0;
            k+=w.$.clientTop||0;
        }
        var z=x;
        while(z&&!z.equals(w)){
            j-=z.$.scrollLeft;
            k-=z.$.scrollTop;
            z=z.getParent();
        }
        x=w;
        w=(y=w.$.offsetParent)?new h(y):null;
    }
}
if(i){
    var A=D.getWindow(),B=i.getWindow();
    if(!A.equals(B)&&A.$.frameElement){
        var C=new h(A.$.frameElement).getDocumentPosition(i);
        j+=C.x;
        k+=C.y;
    }
}
if(!document.documentElement.getBoundingClientRect)if(b.gecko&&!m){
    j+=D.$.clientLeft?1:0;
    k+=D.$.clientTop?1:0;
}
return{
    x:j,
    y:k
};

},
scrollIntoView:function(i){
    var o=this;
    var j=o.getWindow(),k=j.getViewPaneSize().height,l=k*-1;
    if(i)l+=k;
    else{
        l+=o.$.offsetHeight||0;
        l+=parseInt(o.getComputedStyle('marginBottom')||0,10)||0;
    }
    var m=o.getDocumentPosition();
    l+=m.y;
    l=l<0?0:l;
    var n=j.getScrollPosition().y;
    if(l>n||l<n-k)j.$.scrollTo(0,l);
},
setState:function(i){
    var j=this;
    switch(i){
        case 1:
            j.addClass('cke_on');
            j.removeClass('cke_off');
            j.removeClass('cke_disabled');
            break;
        case 0:
            j.addClass('cke_disabled');
            j.removeClass('cke_off');
            j.removeClass('cke_on');
            break;
        default:
            j.addClass('cke_off');
            j.removeClass('cke_on');
            j.removeClass('cke_disabled');
            break;
    }
},
getFrameDocument:function(){
    var i=this.$;
    try{
        i.contentWindow.document;
    }catch(j){
        i.src=i.src;
        if(c&&b.version<7)window.showModalDialog('javascript:document.write("<script>window.setTimeout(function(){window.close();},50);</script>")');
    }
    return i&&new g(i.contentWindow.document);
},
copyAttributes:function(i,j){
    var p=this;
    var k=p.$.attributes;
    j=j||{};

    for(var l=0;l<k.length;l++){
        var m=k[l];
        if(m.specified||c&&m.nodeValue&&m.nodeName.toLowerCase()=='value'){
            var n=m.nodeName;
            if(n in j)continue;
            var o=p.getAttribute(n);
            if(o===null)o=m.nodeValue;
            i.setAttribute(n,o);
        }
    }
    if(p.$.style.cssText!=='')i.$.style.cssText=p.$.style.cssText;
},
renameNode:function(i){
    var l=this;
    if(l.getName()==i)return;
    var j=l.getDocument(),k=new h(i,j);
    l.copyAttributes(k);
    l.moveChildren(k);
    l.$.parentNode.replaceChild(k.$,l.$);
    k.$._cke_expando=l.$._cke_expando;
    l.$=k.$;
},
getChild:function(i){
    var j=this.$;
    if(!i.slice)j=j.childNodes[i];else while(i.length>0&&j)j=j.childNodes[i.shift()];
    return j?new d.node(j):null;
},
getChildCount:function(){
    return this.$.childNodes.length;
},
disableContextMenu:function(){
    this.on('contextmenu',function(i){
        if(!i.data.getTarget().hasClass('cke_enable_context_menu'))i.data.preventDefault();
    });
}
});
a.command=function(i,j){
    this.uiItems=[];
    this.exec=function(k){
        if(this.state==0)return false;
        if(this.editorFocus)i.focus();
        return j.exec.call(this,i,k)!==false;
    };

    e.extend(this,j,{
        modes:{
            wysiwyg:1
        },
        editorFocus:true,
        state:2
    });
    a.event.call(this);
};

a.command.prototype={
    enable:function(){
        var i=this;
        if(i.state==0)i.setState(!i.preserveState||typeof i.previousState=='undefined'?2:i.previousState);
    },
    disable:function(){
        this.setState(0);
    },
    setState:function(i){
        var j=this;
        if(j.state==i)return false;
        j.previousState=j.state;
        j.state=i;
        j.fire('state');
        return true;
    },
    toggleState:function(){
        var i=this;
        if(i.state==2)i.setState(1);
        else if(i.state==1)i.setState(2);
    }
};

a.event.implementOn(a.command.prototype,true);
a.ENTER_P=1;
a.ENTER_BR=2;
a.ENTER_DIV=3;
a.config={
    customConfig:a.getUrl('config.js'),
    autoUpdateElement:true,
    baseHref:'',
    contentsCss:a.basePath+'contents.css',
    contentsLangDirection:'ltr',
    language:'',
    defaultLanguage:'en',
    enterMode:1,
    shiftEnterMode:2,
    corePlugins:'',
    docType:'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
    fullPage:false,
    height:200,
    plugins:'about,basicstyles,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',
    extraPlugins:'',
    removePlugins:'',
    protectedSource:[],
    tabIndex:0,
    theme:'default',
    skin:'kama',
    width:'',
    baseFloatZIndex:10000
};
var i=a.config;
a.focusManager=function(j){
    if(j.focusManager)return j.focusManager;
    this.hasFocus=false;
    this._={
        editor:j
    };

    return this;
};

a.focusManager.prototype={
    focus:function(){
        var k=this;
        if(k._.timer)clearTimeout(k._.timer);
        if(!k.hasFocus){
            if(a.currentInstance)a.currentInstance.focusManager.forceBlur();
            var j=k._.editor;
            j.container.getFirst().addClass('cke_focus');
            k.hasFocus=true;
            j.fire('focus');
        }
    },
blur:function(){
    var j=this;
    if(j._.timer)clearTimeout(j._.timer);
    j._.timer=setTimeout(function(){
        delete j._.timer;
        j.forceBlur();
    },100);
},
forceBlur:function(){
    if(this.hasFocus){
        var j=this._.editor;
        j.container.getFirst().removeClass('cke_focus');
        this.hasFocus=false;
        j.fire('blur');
    }
}
};
(function(){
    var j={};

    a.lang={
        languages:{
            af:1,
            ar:1,
            bg:1,
            bn:1,
            bs:1,
            ca:1,
            cs:1,
            da:1,
            de:1,
            el:1,
            'en-au':1,
            'en-ca':1,
            'en-uk':1,
            en:1,
            eo:1,
            es:1,
            et:1,
            eu:1,
            fa:1,
            fi:1,
            fo:1,
            'fr-ca':1,
            fr:1,
            gl:1,
            gu:1,
            he:1,
            hi:1,
            hr:1,
            hu:1,
            is:1,
            it:1,
            ja:1,
            km:1,
            ko:1,
            lt:1,
            lv:1,
            mn:1,
            ms:1,
            nb:1,
            nl:1,
            no:1,
            pl:1,
            'pt-br':1,
            pt:1,
            ro:1,
            ru:1,
            sk:1,
            sl:1,
            'sr-latn':1,
            sr:1,
            sv:1,
            th:1,
            tr:1,
            uk:1,
            vi:1,
            'zh-cn':1,
            zh:1
        },
        load:function(k,l,m){
            if(!k||!a.lang.languages[k])k=this.detect(l,k);
            if(!this[k])a.scriptLoader.load(a.getUrl('lang/'+k+'.js'),function(){
                m(k,this[k]);
            },this);else m(k,this[k]);
        },
        detect:function(k,l){
            var m=this.languages;
            l=l||navigator.userLanguage||navigator.language;
            var n=l.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),o=n[1],p=n[2];
            if(m[o+'-'+p])o=o+'-'+p;
            else if(!m[o])o=null;
            a.lang.detect=o?function(){
                return o;
            }:function(q){
                return q;
            };

            return o||k;
        }
    };

})();
a.scriptLoader=(function(){
    var j={},k={};

    return{
        load:function(l,m,n,o){
            var p=typeof l=='string';
            if(p)l=[l];
            if(!n)n=a;
            var q=l.length,r=[],s=[],t=function(y){
                if(m)if(p)m.call(n,y);else m.call(n,r,s);
            };

            if(q===0){
                t(true);
                return;
            }
            var u=function(y,z){
                (z?r:s).push(y);
                if(--q<=0)t(z);
            },v=function(y,z){
                j[y]=1;
                var A=k[y];
                delete k[y];
                for(var B=0;B<A.length;B++)A[B](y,z);
            },w=function(y){
                if(o!==true&&j[y]){
                    u(y,true);
                    return;
                }
                var z=k[y]||(k[y]=[]);
                z.push(u);
                if(z.length>1)return;
                var A=new h('script');
                A.setAttributes({
                    type:'text/javascript',
                    src:y
                });
                if(m)if(c)A.$.onreadystatechange=function(){
                    if(A.$.readyState=='loaded'||A.$.readyState=='complete'){
                        A.$.onreadystatechange=null;
                        v(y,true);
                    }
                };
                else{
                    A.$.onload=function(){
                        setTimeout(function(){
                            v(y,true);
                        },0);
                    };

                    A.$.onerror=function(){
                        v(y,false);
                    };

            }
            A.appendTo(a.document.getHead());
    };

    for(var x=0;x<q;x++)w(l[x]);
},
loadCode:function(l){
    var m=new h('script');
    m.setAttribute('type','text/javascript');
    m.appendText(l);
    m.appendTo(a.document.getHead());
}
};

})();
a.resourceManager=function(j,k){
    var l=this;
    l.basePath=j;
    l.fileName=k;
    l.registered={};

    l.loaded={};

    l.externals={};

    l._={
        waitingList:{}
};

};

a.resourceManager.prototype={
    add:function(j,k){
        if(this.registered[j])throw '[CKEDITOR.resourceManager.add] The resource name "'+j+'" is already registered.';
        this.registered[j]=k||{};

},
get:function(j){
    return this.registered[j]||null;
},
getPath:function(j){
    var k=this.externals[j];
    return a.getUrl(k&&k.dir||this.basePath+j+'/');
},
getFilePath:function(j){
    var k=this.externals[j];
    return a.getUrl(this.getPath(j)+(k&&k.file||this.fileName+'.js'));
},
addExternal:function(j,k,l){
    j=j.split(',');
    for(var m=0;m<j.length;m++){
        var n=j[m];
        this.externals[n]={
            dir:k,
            file:l
        };

    }
},
load:function(j,k,l){
    if(!e.isArray(j))j=j?[j]:[];
    var m=this.loaded,n=this.registered,o=[],p={},q={};

    for(var r=0;r<j.length;r++){
        var s=j[r];
        if(!s)continue;
        if(!m[s]&&!n[s]){
            var t=this.getFilePath(s);
            o.push(t);
            if(!(t in p))p[t]=[];
            p[t].push(s);
        }else q[s]=this.get(s);
    }
    a.scriptLoader.load(o,function(u,v){
        if(v.length)throw '[CKEDITOR.resourceManager.load] Resource name "'+p[v[0]].join(',')+'" was not found at "'+v[0]+'".';
        for(var w=0;w<u.length;w++){
            var x=p[u[w]];
            for(var y=0;y<x.length;y++){
                var z=x[y];
                q[z]=this.get(z);
                m[z]=1;
            }
            }
            k.call(l,q);
    },this);
}
};

a.plugins=new a.resourceManager('plugins/','plugin');
var j=a.plugins;
j.load=e.override(j.load,function(k){
    return function(l,m,n){
        var o={},p=function(q){
            k.call(this,q,function(r){
                e.extend(o,r);
                var s=[];
                for(var t in r){
                    var u=r[t],v=u&&u.requires;
                    if(v)for(var w=0;w<v.length;w++)if(!o[v[w]])s.push(v[w]);
                        }
                        if(s.length)p.call(this,s);
                else{
                    for(t in o){
                        u=o[t];
                        if(u.onLoad&&!u.onLoad._called){
                            u.onLoad();
                            u.onLoad._called=1;
                        }
                    }
                    if(m)m.call(n||window,o);
            }
            },this);
};

p.call(this,l);
};

});
j.setLang=function(k,l,m){
    var n=this.get(k);
    n.lang[l]=m;
};
(function(){
    var k={},l=function(m,n){
        var o=function(){
            k[m]=1;
            n();
        },p=new h('img');
        p.on('load',o);
        p.on('error',o);
        p.setAttribute('src',m);
    };

    a.imageCacher={
        load:function(m,n){
            var o=m.length,p=function(){
                if(--o===0)n();
            };

            for(var q=0;q<m.length;q++){
                var r=m[q];
                if(k[r])p();else l(r,p);
            }
            }
        };

})();
a.skins=(function(){
    var k={},l={},m={},n=function(o,p,q){
        var r=k[o],s=function(A){
            for(var B=0;B<A.length;B++)A[B]=a.getUrl(m[o]+A[B]);
        };

        if(!l[o]){
            var t=r.preload;
            if(t&&t.length>0){
                s(t);
                a.imageCacher.load(t,function(){
                    l[o]=1;
                    n(o,p,q);
                });
                return;
            }
            l[o]=1;
        }
        p=r[p];
        var u=!p||!!p._isLoaded;
        if(u)q&&q();
        else{
            var v=p._pending||(p._pending=[]);
            v.push(q);
            if(v.length>1)return;
            var w=!p.css||!p.css.length,x=!p.js||!p.js.length,y=function(){
                if(w&&x){
                    p._isLoaded=1;
                    for(var A=0;A<v.length;A++)if(v[A])v[A]();
                }
            };

        if(!w){
            s(p.css);
            for(var z=0;z<p.css.length;z++)a.document.appendStyleSheet(p.css[z]);
            w=1;
        }
        if(!x){
            s(p.js);
            a.scriptLoader.load(p.js,function(){
                x=1;
                y();
            });
        }
        y();
    }
};

return{
    add:function(o,p){
        k[o]=p;
        p.skinPath=m[o]||(m[o]=a.getUrl('skins/'+o+'/'));
    },
    load:function(o,p,q){
        var r=o.skinName,s=o.skinPath;
        if(k[r]){
            n(r,p,q);
            var t=k[r];
            if(t.init)t.init(o);
        }else{
            m[r]=s;
            a.scriptLoader.load(s+'skin.js',function(){
                n(r,p,q);
                var u=k[r];
                if(u.init)u.init(o);
            });
        }
    }
};

})();
a.themes=new a.resourceManager('themes/','theme');
a.ui=function(k){
    if(k.ui)return k.ui;
    this._={
        handlers:{},
        items:{},
        editor:k
    };

    return this;
};

var k=a.ui;
k.prototype={
    add:function(l,m,n){
        this._.items[l]={
            type:m,
            command:n.command||null,
            args:Array.prototype.slice.call(arguments,2)
            };

},
create:function(l){
    var q=this;
    var m=q._.items[l],n=m&&q._.handlers[m.type],o=m&&m.command&&q._.editor.getCommand(m.command),p=n&&n.create.apply(q,m.args);
    if(o)o.uiItems.push(p);
    return p;
},
addHandler:function(l,m){
    this._.handlers[l]=m;
}
};
(function(){
    var l=0,m=function(){
        var x='editor'+ ++l;
        return a.instances&&a.instances[x]?m():x;
    },n={},o=function(x){
        var y=x.config.customConfig;
        if(!y)return false;
        var z=n[y]||(n[y]={});
        if(z.fn){
            z.fn.call(x,x.config);
            if(x.config.customConfig==y||!o(x))x.fireOnce('customConfigLoaded');
        }else a.scriptLoader.load(y,function(){
            if(a.editorConfig)z.fn=a.editorConfig;else z.fn=function(){};

            o(x);
        });
        return true;
    },p=function(x,y){
        x.on('customConfigLoaded',function(){
            if(y){
                if(y.on)for(var z in y.on)x.on(z,y.on[z]);e.extend(x.config,y,true);
                delete x.config.on;
            }
            q(x);
        });
        if(y&&y.customConfig!=undefined)x.config.customConfig=y.customConfig;
        if(!o(x))x.fireOnce('customConfigLoaded');
    },q=function(x){
        var y=x.config.skin.split(','),z=y[0],A=a.getUrl(y[1]||'skins/'+z+'/');
        x.skinName=z;
        x.skinPath=A;
        x.skinClass='cke_skin_'+z;
        x.fireOnce('configLoaded');
        r(x);
    },r=function(x){
        a.lang.load(x.config.language,x.config.defaultLanguage,function(y,z){
            x.langCode=y;
            x.lang=e.prototypedCopy(z);
            if(b.gecko&&b.version<10900&&x.lang.dir=='rtl')x.lang.dir='ltr';
            s(x);
        });
    },s=function(x){
        var y=x.config,z=y.plugins,A=y.extraPlugins,B=y.removePlugins;
        if(A){
            var C=new RegExp('(?:^|,)(?:'+A.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');
            z=z.replace(C,'');
            z+=','+A;
        }
        if(B){
            C=new RegExp('(?:^|,)(?:'+B.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');
            z=z.replace(C,'');
        }
        j.load(z.split(','),function(D){
            var E=[],F=[],G=[];
            x.plugins=D;
            for(var H in D){
                var I=D[H],J=I.lang,K=j.getPath(H),L=null;
                I.path=K;
                if(J){
                    L=e.indexOf(J,x.langCode)>=0?x.langCode:J[0];
                    if(!I.lang[L])G.push(a.getUrl(K+'lang/'+L+'.js'));
                    else{
                        e.extend(x.lang,I.lang[L]);
                        L=null;
                    }
                }
                F.push(L);
                E.push(I);
                }
                a.scriptLoader.load(G,function(){
            var M=['beforeInit','init','afterInit'];
            for(var N=0;N<M.length;N++)for(var O=0;O<E.length;O++){
                var P=E[O];
                if(N===0&&F[O]&&P.lang)e.extend(x.lang,P.lang[F[O]]);
                if(P[M[N]])P[M[N]](x);
            }
            x.fire('pluginsLoaded');
            t(x);
        });
        });
},t=function(x){
    a.skins.load(x,'editor',function(){
        u(x);
    });
},u=function(x){
    var y=x.config.theme;
    a.themes.load(y,function(){
        var z=x.theme=a.themes.get(y);
        z.path=a.themes.getPath(y);
        z.build(x);
        if(x.config.autoUpdateElement)v(x);
    });
},v=function(x){
    var y=x.element;
    if(x.elementMode==1&&y.is('textarea')){
        var z=y.$.form&&new h(y.$.form);
        if(z){
            function A(){
                x.updateElement();
            };

            z.on('submit',A);
            if(!z.$.submit.nodeName)z.$.submit=e.override(z.$.submit,function(B){
                return function(){
                    x.updateElement();
                    if(B.apply)B.apply(this,arguments);else B();
                };

            });
        x.on('destroy',function(){
            z.removeListener('submit',A);
        });
    }
}
};

function w(){
    var x,y=this._.commands,z=this.mode;
    for(var A in y){
        x=y[A];
        x[x.modes[z]?'enable':'disable']();
    }
    };

a.editor.prototype._init=function(){
    var z=this;
    var x=h.get(z._.element),y=z._.instanceConfig;
    delete z._.element;
    delete z._.instanceConfig;
    z._.commands={};

    z._.styles=[];
    z.element=x;
    z.name=x&&z.elementMode==1&&(x.getId()||x.getNameAtt())||m();
    if(z.name in a.instances)throw '[CKEDITOR.editor] The instance "'+z.name+'" already exists.';
    z.config=e.prototypedCopy(i);
    z.ui=new k(z);
    z.focusManager=new a.focusManager(z);
    a.fire('instanceCreated',null,z);
    z.on('mode',w,null,null,1);
    p(z,y);
};

})();
e.extend(a.editor.prototype,{
    addCommand:function(l,m){
        return this._.commands[l]=new a.command(this,m);
    },
    addCss:function(l){
        this._.styles.push(l);
    },
    destroy:function(l){
        var m=this;
        if(!l)m.updateElement();
        m.theme.destroy(m);
        m.fire('destroy');
        a.remove(m);
    },
    execCommand:function(l,m){
        var n=this.getCommand(l),o={
            name:l,
            commandData:m,
            command:n
        };

        if(n&&n.state!=0)if(this.fire('beforeCommandExec',o)!==true){
            o.returnValue=n.exec(o.commandData);
            if(!n.async&&this.fire('afterCommandExec',o)!==true)return o.returnValue;
        }
        return false;
    },
    getCommand:function(l){
        return this._.commands[l];
    },
    getData:function(){
        var n=this;
        n.fire('beforeGetData');
        var l=n._.data;
        if(typeof l!='string'){
            var m=n.element;
            if(m&&n.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();else l='';
        }
        l={
            dataValue:l
        };

        n.fire('getData',l);
        return l.dataValue;
    },
    getSnapshot:function(){
        var l=this.fire('getSnapshot');
        if(typeof l!='string'){
            var m=this.element;
            if(m&&this.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();
        }
        return l;
    },
    loadSnapshot:function(l){
        this.fire('loadSnapshot',l);
    },
    setData:function(l,m){
        if(m)this.on('dataReady',function(o){
            o.removeListener();
            m.call(o.editor);
        });
        var n={
            dataValue:l
        };

        this.fire('setData',n);
        this._.data=n.dataValue;
        this.fire('afterSetData',n);
    },
    insertHtml:function(l){
        this.fire('insertHtml',l);
    },
    insertElement:function(l){
        this.fire('insertElement',l);
    },
    checkDirty:function(){
        return this.mayBeDirty&&this._.previousValue!==this.getSnapshot();
    },
    resetDirty:function(){
        if(this.mayBeDirty)this._.previousValue=this.getSnapshot();
    },
    updateElement:function(){
        var m=this;
        var l=m.element;
        if(l&&m.elementMode==1)if(l.is('textarea'))l.setValue(m.getData());else l.setHtml(m.getData());
    }
});
a.on('loaded',function(){
    var l=a.editor._pending;
    if(l){
        delete a.editor._pending;
        for(var m=0;m<l.length;m++)l[m]._init();
    }
});
a.htmlParser=function(){
    this._={
        htmlPartsRegex:new RegExp("<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s>]+)\\s*((?:(?:[^\"'>]+)|(?:\"[^\"]*\")|(?:'[^']*'))*)\\/?>))",'g')
        };

};
(function(){
    var l=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,m={
        checked:1,
        compact:1,
        declare:1,
        defer:1,
        disabled:1,
        ismap:1,
        multiple:1,
        nohref:1,
        noresize:1,
        noshade:1,
        nowrap:1,
        readonly:1,
        selected:1
    };

    a.htmlParser.prototype={
        onTagOpen:function(){},
        onTagClose:function(){},
        onText:function(){},
        onCDATA:function(){},
        onComment:function(){},
        parse:function(n){
            var A=this;
            var o,p,q=0,r;
            while(o=A._.htmlPartsRegex.exec(n)){
                var s=o.index;
                if(s>q){
                    var t=n.substring(q,s);
                    if(r)r.push(t);else A.onText(t);
                }
                q=A._.htmlPartsRegex.lastIndex;
                if(p=o[1]){
                    p=p.toLowerCase();
                    if(r&&f.$cdata[p]){
                        A.onCDATA(r.join(''));
                        r=null;
                    }
                    if(!r){
                        A.onTagClose(p);
                        continue;
                    }
                }
                if(r){
                r.push(o[0]);
                continue;
            }
            if(p=o[3]){
                p=p.toLowerCase();
                var u={},v,w=o[4],x=!!(w&&w.charAt(w.length-1)=='/');
                if(w)while(v=l.exec(w)){
                    var y=v[1].toLowerCase(),z=v[2]||v[3]||v[4]||'';
                    if(!z&&m[y])u[y]=y;else u[y]=z;
                }
                A.onTagOpen(p,u,x);
                if(!r&&f.$cdata[p])r=[];
                continue;
            }
            if(p=o[2])A.onComment(p);
        }
        if(n.length>q)A.onText(n.substring(q,n.length));
    }
};

})();
a.htmlParser.comment=function(l){
    this.value=l;
    this._={
        isBlockLike:false
    };

};

a.htmlParser.comment.prototype={
    type:8,
    writeHtml:function(l,m){
        var n=this.value;
        if(m){
            if(!(n=m.onComment(n)))return;
            if(typeof n!='string'){
                n.writeHtml(l,m);
                return;
            }
        }
        l.comment(n);
}
};
(function(){
    var l=/[\t\r\n ]{2,}|[\t\r\n]/g;
    a.htmlParser.text=function(m){
        this.value=m;
        this._={
            isBlockLike:false
        };

};

a.htmlParser.text.prototype={
    type:3,
    writeHtml:function(m,n){
        var o=this.value;
        if(n&&!(o=n.onText(o,this)))return;
        m.text(o);
    }
};

})();
(function(){
    a.htmlParser.cdata=function(l){
        this.value=l;
    };

    a.htmlParser.cdata.prototype={
        type:3,
        writeHtml:function(l){
            l.write(this.value);
        }
    };

})();
a.htmlParser.fragment=function(){
    this.children=[];
    this.parent=null;
    this._={
        isBlockLike:true,
        hasInlineStarted:false
    };

};
(function(){
    var l={
        colgroup:1,
        dd:1,
        dt:1,
        li:1,
        option:1,
        p:1,
        td:1,
        tfoot:1,
        th:1,
        thead:1,
        tr:1
    },m=e.extend({
        table:1,
        ul:1,
        ol:1,
        dl:1
    },f.table,f.ul,f.ol,f.dl),n=f.$list,o=f.$listItem;
    a.htmlParser.fragment.fromHtml=function(p,q){
        var r=new a.htmlParser(),s=[],t=new a.htmlParser.fragment(),u=[],v=t,w=false,x;
        function y(C){
            if(u.length>0)for(var D=0;D<u.length;D++){
                var E=u[D],F=E.name,G=f[F],H=v.name&&f[v.name];
                if((!H||H[F])&&(!C||!G||G[C]||!f[C])){
                    E=E.clone();
                    E.parent=v;
                    v=E;
                    u.splice(D,1);
                    D--;
                }
            }
            };

function z(C,D,E){
    D=D||v||t;
    if(q&&!D.type){
        var F,G;
        if(C.attributes&&(G=C.attributes._cke_real_element_type))F=G;else F=C.name;
        if(!(F in f.$body)){
            var H=v;
            v=D;
            r.onTagOpen(q,{});
            D=v;
            if(E)v=H;
        }
    }
    if(C._.isBlockLike&&C.name!='pre'){
    var I=C.children.length,J=C.children[I-1],K;
    if(J&&J.type==3)if(!(K=e.rtrim(J.value)))C.children.length=I-1;else J.value=K;
}
D.add(C);
    if(C.returnPoint){
    v=C.returnPoint;
    delete C.returnPoint;
}
};

r.onTagOpen=function(C,D,E){
    var F=new a.htmlParser.element(C,D);
    if(F.isUnknown&&E)F.isEmpty=true;
    if(f.$removeEmpty[C]){
        u.push(F);
        return;
    }else if(C=='pre')w=true;
    else if(C=='br'&&w){
        v.add(new a.htmlParser.text('\n'));
        return;
    }
    var G=v.name,H=G&&f[G]||(v._.isBlockLike?f.div:f.span);
    if(!F.isUnknown&&!v.isUnknown&&!H[C]){
        if(!G)return;
        var I=false,J;
        if(C in n&&G in n){
            var K=v.children,L=K[K.length-1];
            if(L&&L.name in o)x=v,J=L;else z(v,v.parent);
        }else if(C==G)z(v,v.parent);
        else{
            if(m[G]){
                if(!x)x=v;
            }else{
                z(v,v.parent,true);
                if(!l[G])u.unshift(v);
            }
            I=true;
        }
        if(J)v=J;else v=v.returnPoint||v.parent;
        if(I){
            r.onTagOpen.apply(this,arguments);
            return;
        }
    }
    y(C);
F.parent=v;
F.returnPoint=x;
x=0;
if(F.isEmpty)z(F);else v=F;
};

r.onTagClose=function(C){
    var D=0,E=[],F=v;
    while(F.type&&F.name!=C){
        if(!F._.isBlockLike){
            u.unshift(F);
            D++;
        }
        E.push(F);
        F=F.parent;
    }
    if(F.type){
        for(var G=0;G<E.length;G++){
            var H=E[G];
            z(H,H.parent);
        }
        v=F;
        if(v.name=='pre')w=false;
        z(F,F.parent);
        if(F==v)v=v.parent;
    }else{
        u.splice(0,D);
        D=0;
    }
    for(;D<u.length;D++)if(C==u[D].name){
        u.splice(D,1);
        D--;
    }
    };

r.onText=function(C){
    if(!v._.hasInlineStarted&&!w){
        C=e.ltrim(C);
        if(C.length===0)return;
    }
    y();
    if(q&&!v.type)this.onTagOpen(q,{});
    if(!w)C=C.replace(/[\t\r\n ]{2,}|[\t\r\n]/g,' ');
    v.add(new a.htmlParser.text(C));
};

r.onCDATA=function(C){
    v.add(new a.htmlParser.cdata(C));
};

r.onComment=function(C){
    v.add(new a.htmlParser.comment(C));
};

r.parse(p);
while(v.type){
    var A=v.parent,B=v;
    if(q&&!A.type&&!f.$body[B.name]){
        v=A;
        r.onTagOpen(q,{});
        A=v;
    }
    A.add(B);
    v=A;
}
return t;
};

a.htmlParser.fragment.prototype={
    add:function(p){
        var s=this;
        var q=s.children.length,r=q>0&&s.children[q-1]||null;
        if(r){
            if(p._.isBlockLike&&r.type==3){
                r.value=e.rtrim(r.value);
                if(r.value.length===0){
                    s.children.pop();
                    s.add(p);
                    return;
                }
            }
            r.next=p;
    }
    p.previous=r;
    p.parent=s;
    s.children.push(p);
    s._.hasInlineStarted=p.type==3||p.type==1&&!p._.isBlockLike;
},
writeHtml:function(p,q){
    for(var r=0,s=this.children.length;r<s;r++)this.children[r].writeHtml(p,q);
}
};

})();
a.htmlParser.element=function(l,m){
    var q=this;
    q.name=l;
    q.attributes=m;
    q.children=[];
    var n=f,o=!!(n.$block[l]||n.$listItem[l]||n.$tableContent[l]),p=!!n.$empty[l];
    q.isEmpty=p;
    q.isUnknown=!n[l];
    q._={
        isBlockLike:o,
        hasInlineStarted:p||!o
        };

};
(function(){
    var l=function(m,n){
        m=m[0];
        n=n[0];
        return m<n?-1:m>n?1:0;
    };

    a.htmlParser.element.prototype={
        type:1,
        add:a.htmlParser.fragment.prototype.add,
        clone:function(){
            return new a.htmlParser.element(this.name,this.attributes);
        },
        writeHtml:function(m,n){
            var o=this.attributes;
            if(o._cke_replacedata){
                m.write(o._cke_replacedata);
                return;
            }
            var p=this,q=p.name,r,s;
            if(n){
                for(;;){
                    if(!(q=n.onElementName(q)))return;
                    p.name=q;
                    if(!(p=n.onElement(p)))return;
                    if(p.name==q)break;
                    q=p.name;
                    if(!q){
                        a.htmlParser.fragment.prototype.writeHtml.apply(p,arguments);
                        return;
                    }
                }
                o=p.attributes;
        }
        m.openTag(q,o);
        if(m.sortAttributes){
            var t=[];
            for(r in o){
                s=o[r];
                if(n&&(!(r=n.onAttributeName(r))||(s=n.onAttribute(p,r,s))===(false)))continue;
                t.push([r,s]);
            }
            t.sort(l);
            for(var u=0,v=t.length;u<v;u++){
                var w=t[u];
                m.attribute(w[0],w[1]);
            }
            }else for(r in o){
        s=o[r];
        if(n&&(!(r=n.onAttributeName(r))||(s=n.onAttribute(p,r,s))===(false)))continue;
        m.attribute(r,s);
    }
    m.openTagClose(q,p.isEmpty);
    if(!p.isEmpty){
        a.htmlParser.fragment.prototype.writeHtml.apply(p,arguments);
        m.closeTag(q);
    }
}
};

})();
(function(){
    a.htmlParser.filter=e.createClass({
        $:function(q){
            this._={
                elementNames:[],
                attributeNames:[],
                elements:{
                    $length:0
                },
                attributes:{
                    $length:0
                }
            };

        if(q)this.addRules(q,10);
    },
    proto:{
        addRules:function(q,r){
            var s=this;
            if(typeof r!='number')r=10;
            m(s._.elementNames,q.elementNames,r);
            m(s._.attributeNames,q.attributeNames,r);
            n(s._.elements,q.elements,r);
            n(s._.attributes,q.attributes,r);
            s._.text=o(s._.text,q.text,r)||s._.text;
            s._.comment=o(s._.comment,q.comment,r)||s._.comment;
        },
        onElementName:function(q){
            return l(q,this._.elementNames);
        },
        onAttributeName:function(q){
            return l(q,this._.attributeNames);
        },
        onText:function(q){
            var r=this._.text;
            return r?r.filter(q):q;
        },
        onComment:function(q){
            var r=this._.comment;
            return r?r.filter(q):q;
        },
        onElement:function(q){
            var v=this;
            var r=[v._.elements[q.name],v._.elements.$],s,t;
            for(var u=0;u<2;u++){
                s=r[u];
                if(s){
                    t=s.filter(q,v);
                    if(t===false)return null;
                    if(t&&t!=q)return v.onElement(t);
                }
            }
            return q;
    },
    onAttribute:function(q,r,s){
        var t=this._.attributes[r];
        if(t){
            var u=t.filter(s,q,this);
            if(u===false)return false;
            if(typeof u!='undefined')return u;
        }
        return s;
    }
    }
});
function l(q,r){
    for(var s=0;q&&s<r.length;s++){
        var t=r[s];
        q=q.replace(t[0],t[1]);
    }
    return q;
};

function m(q,r,s){
    var t,u,v=q.length,w=r&&r.length;
    if(w){
        for(t=0;t<v&&q[t].pri<s;t++){}
        for(u=w-1;u>=0;u--){
            var x=r[u];
            x.pri=s;
            q.splice(t,0,x);
        }
        }
    };

function n(q,r,s){
    if(r)for(var t in r){
        var u=q[t];
        q[t]=o(u,r[t],s);
        if(!u)q.$length++;
    }
    };

function o(q,r,s){
    if(r){
        r.pri=s;
        if(q){
            if(!q.splice){
                if(q.pri>s)q=[r,q];else q=[q,r];
                q.filter=p;
            }else m(q,r,s);
            return q;
        }else{
            r.filter=r;
            return r;
        }
    }
};

function p(q){
    var r=typeof q=='object';
    for(var s=0;s<this.length;s++){
        var t=this[s],u=t.apply(window,arguments);
        if(typeof u!='undefined'){
            if(u===false)return false;
            if(r&&u!=q)return u;
        }
    }
    return null;
};

})();
a.htmlParser.basicWriter=e.createClass({
    $:function(){
        this._={
            output:[]
        };

},
proto:{
    openTag:function(l,m){
        this._.output.push('<',l);
    },
    openTagClose:function(l,m){
        if(m)this._.output.push(' />');else this._.output.push('>');
    },
    attribute:function(l,m){
        this._.output.push(' ',l,'="',m,'"');
    },
    closeTag:function(l){
        this._.output.push('</',l,'>');
    },
    text:function(l){
        this._.output.push(l);
    },
    comment:function(l){
        this._.output.push('<!--',l,'-->');
    },
    write:function(l){
        this._.output.push(l);
    },
    reset:function(){
        this._.output=[];
    },
    getHtml:function(l){
        var m=this._.output.join('');
        if(l)this.reset();
        return m;
    }
}
});
delete a.loadFullCore;
a.instances={};

a.document=new g(document);
a.add=function(l){
    a.instances[l.name]=l;
    l.on('focus',function(){
        if(a.currentInstance!=l){
            a.currentInstance=l;
            a.fire('currentInstance');
        }
    });
l.on('blur',function(){
    if(a.currentInstance==l){
        a.currentInstance=null;
        a.fire('currentInstance');
    }
});
};

a.remove=function(l){
    delete a.instances[l.name];
};

a.TRISTATE_ON=1;
a.TRISTATE_OFF=2;
a.TRISTATE_DISABLED=0;
(function(){
    var l={
        address:1,
        blockquote:1,
        dl:1,
        h1:1,
        h2:1,
        h3:1,
        h4:1,
        h5:1,
        h6:1,
        p:1,
        pre:1,
        li:1,
        dt:1,
        de:1
    },m={
        body:1,
        div:1,
        table:1,
        tbody:1,
        tr:1,
        td:1,
        th:1,
        caption:1,
        form:1
    },n=function(o){
        var p=o.getChildren();
        for(var q=0,r=p.count();q<r;q++){
            var s=p.getItem(q);
            if(s.type==1&&f.$block[s.getName()])return true;
        }
        return false;
    };

    d.elementPath=function(o){
        var u=this;
        var p=null,q=null,r=[],s=o;
        while(s){
            if(s.type==1){
                if(!u.lastElement)u.lastElement=s;
                var t=s.getName();
                if(c&&s.$.scopeName!='HTML')t=s.$.scopeName.toLowerCase()+':'+t;
                if(!q){
                    if(!p&&l[t])p=s;
                    if(m[t])if(!p&&t=='div'&&!n(s))p=s;else q=s;
                }
                r.push(s);
                if(t=='body')break;
            }
            s=s.getParent();
        }
        u.block=p;
        u.blockLimit=q;
        u.elements=r;
    };

})();
d.elementPath.prototype={
    compare:function(l){
        var m=this.elements,n=l&&l.elements;
        if(!n||m.length!=n.length)return false;
        for(var o=0;o<m.length;o++)if(!m[o].equals(n[o]))return false;return true;
    }
};

d.text=function(l,m){
    if(typeof l=='string')l=(m?m.$:document).createTextNode(l);
    this.$=l;
};

d.text.prototype=new d.node();
e.extend(d.text.prototype,{
    type:3,
    getLength:function(){
        return this.$.nodeValue.length;
    },
    getText:function(){
        return this.$.nodeValue;
    },
    split:function(l){
        var q=this;
        if(c&&l==q.getLength()){
            var m=q.getDocument().createText('');
            m.insertAfter(q);
            return m;
        }
        var n=q.getDocument(),o=new d.text(q.$.splitText(l),n);
        if(b.ie8){
            var p=new d.text('',n);
            p.insertAfter(o);
            p.remove();
        }
        return o;
    },
    substring:function(l,m){
        if(typeof m!='number')return this.$.nodeValue.substr(l);else return this.$.nodeValue.substring(l,m);
    }
});
d.documentFragment=function(l){
    l=l||a.document;
    this.$=l.$.createDocumentFragment();
};

e.extend(d.documentFragment.prototype,h.prototype,{
    type:11,
    insertAfterNode:function(l){
        l=l.$;
        l.parentNode.insertBefore(this.$,l.nextSibling);
    }
},true,{
    append:1,
    appendBogus:1,
    getFirst:1,
    getLast:1,
    appendTo:1,
    moveChildren:1,
    insertBefore:1,
    insertAfterNode:1,
    replace:1,
    trim:1,
    type:1,
    ltrim:1,
    rtrim:1,
    getDocument:1,
    getChildCount:1,
    getChild:1,
    getChildren:1
});
(function(){
    function l(p,q){
        if(this._.end)return null;
        var r,s=this.range,t,u=this.guard,v=this.type,w=p?'getPreviousSourceNode':'getNextSourceNode';
        if(!this._.start){
            this._.start=1;
            s.trim();
            if(s.collapsed){
                this.end();
                return null;
            }
        }
        if(!p&&!this._.guardLTR){
        var x=s.endContainer,y=x.getChild(s.endOffset);
        this._.guardLTR=function(C,D){
            return(!D||!x.equals(C))&&((!y||!C.equals(y))&&(C.type!=1||C.getName()!='body'));
        };

}
if(p&&!this._.guardRTL){
    var z=s.startContainer,A=s.startOffset>0&&z.getChild(s.startOffset-1);
    this._.guardRTL=function(C,D){
        return(!D||!z.equals(C))&&((!A||!C.equals(A))&&(C.type!=1||C.getName()!='body'));
    };

}
var B=p?this._.guardRTL:this._.guardLTR;
if(u)t=function(C,D){
    if(B(C,D)===false)return false;
    return u(C);
};else t=B;
if(this.current)r=this.current[w](false,v,t);
else if(p){
    r=s.endContainer;
    if(s.endOffset>0){
        r=r.getChild(s.endOffset-1);
        if(t(r)===false)r=null;
    }else r=t(r)===false?null:r.getPreviousSourceNode(true,v,t);
}else{
    r=s.startContainer;
    r=r.getChild(s.startOffset);
    if(r){
        if(t(r)===false)r=null;
    }else r=t(s.startContainer)===false?null:s.startContainer.getNextSourceNode(true,v,t);
}while(r&&!this._.end){
    this.current=r;
    if(!this.evaluator||this.evaluator(r)!==false){
        if(!q)return r;
    }else if(q&&this.evaluator)return false;
    r=r[w](false,v,t);
}
this.end();
return this.current=null;
};

function m(p){
    var q,r=null;
    while(q=l.call(this,p))r=q;
    return r;
};

d.walker=e.createClass({
    $:function(p){
        this.range=p;
        this._={};

},
proto:{
    end:function(){
        this._.end=1;
    },
    next:function(){
        return l.call(this);
    },
    previous:function(){
        return l.call(this,true);
    },
    checkForward:function(){
        return l.call(this,false,true)!==false;
    },
    checkBackward:function(){
        return l.call(this,true,true)!==false;
    },
    lastForward:function(){
        return m.call(this);
    },
    lastBackward:function(){
        return m.call(this,true);
    },
    reset:function(){
        delete this.current;
        this._={};

}
}
});
var n={
    block:1,
    'list-item':1,
    table:1,
    'table-row-group':1,
    'table-header-group':1,
    'table-footer-group':1,
    'table-row':1,
    'table-column-group':1,
    'table-column':1,
    'table-cell':1,
    'table-caption':1
},o={
    hr:1
};

h.prototype.isBlockBoundary=function(p){
    var q=e.extend({},o,p||{});
    return n[this.getComputedStyle('display')]||q[this.getName()];
};

d.walker.blockBoundary=function(p){
    return function(q,r){
        return!(q.type==1&&q.isBlockBoundary(p));
    };

};

d.walker.listItemBoundary=function(){
    return this.blockBoundary({
        br:1
    });
};

d.walker.bookmarkContents=function(p){},d.walker.bookmark=function(p,q){
    function r(s){
        return s&&s.getName&&s.getName()=='span'&&s.hasAttribute('_fck_bookmark');
    };

    return function(s){
        var t,u;
        t=s&&!s.getName&&(u=s.getParent())&&(r(u));
        t=p?t:t||r(s);
        return q^t;
    };

};

d.walker.whitespaces=function(p){
    return function(q){
        var r=q&&q.type==3&&!e.trim(q.getText());
        return p^r;
    };

};

})();
d.range=function(l){
    var m=this;
    m.startContainer=null;
    m.startOffset=null;
    m.endContainer=null;
    m.endOffset=null;
    m.collapsed=true;
    m.document=l;
};
(function(){
    var l=function(q){
        q.collapsed=q.startContainer&&q.endContainer&&q.startContainer.equals(q.endContainer)&&q.startOffset==q.endOffset;
    },m=function(q,r,s){
        q.optimizeBookmark();
        var t=q.startContainer,u=q.endContainer,v=q.startOffset,w=q.endOffset,x,y;
        if(u.type==3)u=u.split(w);
        else if(u.getChildCount()>0)if(w>=u.getChildCount()){
            u=u.append(q.document.createText(''));
            y=true;
        }else u=u.getChild(w);
        if(t.type==3){
            t.split(v);
            if(t.equals(u))u=t.getNext();
        }else if(!v){
            t=t.getFirst().insertBeforeMe(q.document.createText(''));
            x=true;
        }else if(v>=t.getChildCount()){
            t=t.append(q.document.createText(''));
            x=true;
        }else t=t.getChild(v).getPrevious();
        var z=t.getParents(),A=u.getParents(),B,C,D;
        for(B=0;B<z.length;B++){
            C=z[B];
            D=A[B];
            if(!C.equals(D))break;
        }
        var E=s,F,G,H,I;
        for(var J=B;J<z.length;J++){
            F=z[J];
            if(E&&!F.equals(t))G=E.append(F.clone());
            H=F.getNext();
            while(H){
                if(H.equals(A[J])||H.equals(u))break;
                I=H.getNext();
                if(r==2)E.append(H.clone(true));
                else{
                    H.remove();
                    if(r==1)E.append(H);
                }
                H=I;
            }
            if(E)E=G;
        }
        E=s;
        for(var K=B;K<A.length;K++){
            F=A[K];
            if(r>0&&!F.equals(u))G=E.append(F.clone());
            if(!z[K]||F.$.parentNode!=z[K].$.parentNode){
                H=F.getPrevious();
                while(H){
                    if(H.equals(z[K])||H.equals(t))break;
                    I=H.getPrevious();
                    if(r==2)E.$.insertBefore(H.$.cloneNode(true),E.$.firstChild);
                    else{
                        H.remove();
                        if(r==1)E.$.insertBefore(H.$,E.$.firstChild);
                    }
                    H=I;
                }
            }
            if(E)E=G;
        }
        if(r==2){
        var L=q.startContainer;
        if(L.type==3){
            L.$.data+=L.$.nextSibling.data;
            L.$.parentNode.removeChild(L.$.nextSibling);
        }
        var M=q.endContainer;
        if(M.type==3&&M.$.nextSibling){
            M.$.data+=M.$.nextSibling.data;
            M.$.parentNode.removeChild(M.$.nextSibling);
        }
    }else{
    if(C&&D&&(t.$.parentNode!=C.$.parentNode||u.$.parentNode!=D.$.parentNode)){
        var N=D.getIndex();
        if(x&&D.$.parentNode==t.$.parentNode)N--;
        q.setStart(D.getParent(),N);
    }
    q.collapse(true);
}
if(x)t.remove();
    if(y&&u.$.parentNode)u.remove();
},n={
    abbr:1,
    acronym:1,
    b:1,
    bdo:1,
    big:1,
    cite:1,
    code:1,
    del:1,
    dfn:1,
    em:1,
    font:1,
    i:1,
    ins:1,
    label:1,
    kbd:1,
    q:1,
    samp:1,
    small:1,
    span:1,
    strike:1,
    strong:1,
    sub:1,
    sup:1,
    tt:1,
    u:1,
    'var':1
};

function o(q){
    var r=false,s=d.walker.bookmark(true);
    return function(t){
        if(s(t))return true;
        if(t.type==3){
            if(e.trim(t.getText()).length)return false;
        }else if(!n[t.getName()])if(!q&&!c&&t.getName()=='br'&&!r)r=true;else return false;
        return true;
    };

};

function p(q){
    return q.type!=3&&q.getName() in f.$removeEmpty||!e.trim(q.getText())||q.getParent().hasAttribute('_fck_bookmark');
};

d.range.prototype={
    clone:function(){
        var r=this;
        var q=new d.range(r.document);
        q.startContainer=r.startContainer;
        q.startOffset=r.startOffset;
        q.endContainer=r.endContainer;
        q.endOffset=r.endOffset;
        q.collapsed=r.collapsed;
        return q;
    },
    collapse:function(q){
        var r=this;
        if(q){
            r.endContainer=r.startContainer;
            r.endOffset=r.startOffset;
        }else{
            r.startContainer=r.endContainer;
            r.startOffset=r.endOffset;
        }
        r.collapsed=true;
    },
    cloneContents:function(){
        var q=new d.documentFragment(this.document);
        if(!this.collapsed)m(this,2,q);
        return q;
    },
    deleteContents:function(){
        if(this.collapsed)return;
        m(this,0);
    },
    extractContents:function(){
        var q=new d.documentFragment(this.document);
        if(!this.collapsed)m(this,1,q);
        return q;
    },
    createBookmark:function(q){
        var v=this;
        var r,s,t,u;
        r=v.document.createElement('span');
        r.setAttribute('_fck_bookmark',1);
        r.setStyle('display','none');
        r.setHtml('&nbsp;');
        if(q){
            t='cke_bm_'+e.getNextNumber();
            r.setAttribute('id',t+'S');
        }
        if(!v.collapsed){
            s=r.clone();
            s.setHtml('&nbsp;');
            if(q)s.setAttribute('id',t+'E');
            u=v.clone();
            u.collapse();
            u.insertNode(s);
        }
        u=v.clone();
        u.collapse(true);
        u.insertNode(r);
        if(s){
            v.setStartAfter(r);
            v.setEndBefore(s);
        }else v.moveToPosition(r,4);
        return{
            startNode:q?t+'S':r,
            endNode:q?t+'E':s,
            serializable:q
        };

},
createBookmark2:function(q){
    var x=this;
    var r=x.startContainer,s=x.endContainer,t=x.startOffset,u=x.endOffset,v,w;
    if(!r||!s)return{
        start:0,
        end:0
    };

    if(q){
        if(r.type==1){
            v=r.getChild(t);
            if(v&&v.type==3&&t>0&&v.getPrevious().type==3){
                r=v;
                t=0;
            }
        }while(r.type==3&&(w=r.getPrevious())&&(w.type==3)){
        r=w;
        t+=w.getLength();
    }
    if(!x.isCollapsed){
        if(s.type==1){
            v=s.getChild(u);
            if(v&&v.type==3&&u>0&&v.getPrevious().type==3){
                s=v;
                u=0;
            }
        }while(s.type==3&&(w=s.getPrevious())&&(w.type==3)){
        s=w;
        u+=w.getLength();
    }
}
}
return{
    start:r.getAddress(q),
    end:x.isCollapsed?null:s.getAddress(q),
    startOffset:t,
    endOffset:u,
    normalized:q,
    is2:true
};

},
moveToBookmark:function(q){
    var y=this;
    if(q.is2){
        var r=y.document.getByAddress(q.start,q.normalized),s=q.startOffset,t=q.end&&y.document.getByAddress(q.end,q.normalized),u=q.endOffset;
        y.setStart(r,s);
        if(t)y.setEnd(t,u);else y.collapse(true);
    }else{
        var v=q.serializable,w=v?y.document.getById(q.startNode):q.startNode,x=v?y.document.getById(q.endNode):q.endNode;
        y.setStartBefore(w);
        w.remove();
        if(x){
            y.setEndBefore(x);
            x.remove();
        }else y.collapse(true);
    }
},
getBoundaryNodes:function(){
    var v=this;
    var q=v.startContainer,r=v.endContainer,s=v.startOffset,t=v.endOffset,u;
    if(q.type==1){
        u=q.getChildCount();
        if(u>s)q=q.getChild(s);
        else if(u<1)q=q.getPreviousSourceNode();
        else{
            q=q.$;
            while(q.lastChild)q=q.lastChild;
            q=new d.node(q);
            q=q.getNextSourceNode()||q;
        }
    }
    if(r.type==1){
    u=r.getChildCount();
    if(u>t)r=r.getChild(t).getPreviousSourceNode(true);
    else if(u<1)r=r.getPreviousSourceNode();
    else{
        r=r.$;
        while(r.lastChild)r=r.lastChild;
        r=new d.node(r);
    }
}
if(q.getPosition(r)&2)q=r;
return{
    startNode:q,
    endNode:r
};

},
getCommonAncestor:function(q,r){
    var v=this;
    var s=v.startContainer,t=v.endContainer,u;
    if(s.equals(t)){
        if(q&&s.type==1&&v.startOffset==v.endOffset-1)u=s.getChild(v.startOffset);else u=s;
    }else u=s.getCommonAncestor(t);
    return r&&!u.is?u.getParent():u;
},
optimize:function(){
    var s=this;
    var q=s.startContainer,r=s.startOffset;
    if(q.type!=1)if(!r)s.setStartBefore(q);
        else if(r>=q.getLength())s.setStartAfter(q);
    q=s.endContainer;
    r=s.endOffset;
    if(q.type!=1)if(!r)s.setEndBefore(q);
        else if(r>=q.getLength())s.setEndAfter(q);
},
optimizeBookmark:function(){
    var s=this;
    var q=s.startContainer,r=s.endContainer;
    if(q.is&&q.is('span')&&q.hasAttribute('_fck_bookmark'))s.setStartAt(q,3);
    if(r&&r.is&&r.is('span')&&r.hasAttribute('_fck_bookmark'))s.setEndAt(r,4);
},
trim:function(q,r){
    var y=this;
    var s=y.startContainer,t=y.startOffset,u=y.collapsed;
    if((!q||u)&&(s&&s.type==3)){
        if(!t){
            t=s.getIndex();
            s=s.getParent();
        }else if(t>=s.getLength()){
            t=s.getIndex()+1;
            s=s.getParent();
        }else{
            var v=s.split(t);
            t=s.getIndex()+1;
            s=s.getParent();
            if(!u&&y.startContainer.equals(y.endContainer))y.setEnd(v,y.endOffset-y.startOffset);
        }
        y.setStart(s,t);
        if(u)y.collapse(true);
    }
    var w=y.endContainer,x=y.endOffset;
    if(!(r||u)&&w&&w.type==3){
        if(!x){
            x=w.getIndex();
            w=w.getParent();
        }else if(x>=w.getLength()){
            x=w.getIndex()+1;
            w=w.getParent();
        }else{
            w.split(x);
            x=w.getIndex()+1;
            w=w.getParent();
        }
        y.setEnd(w,x);
    }
},
enlarge:function(q){
    switch(q){
        case 1:
            if(this.collapsed)return;
            var r=this.getCommonAncestor(),s=this.document.getBody(),t,u,v,w,x,y=false,z,A,B=this.startContainer,C=this.startOffset;
            if(B.type==3){
            if(C){
                B=!e.trim(B.substring(0,C)).length&&B;
                y=!!B;
            }
            if(B)if(!(w=B.getPrevious()))v=B.getParent();
        }else{
            if(C)w=B.getChild(C-1)||B.getLast();
            if(!w)v=B;
        }while(v||w){
            if(v&&!w){
                if(!x&&v.equals(r))x=true;
                if(!s.contains(v))break;
                if(!y||v.getComputedStyle('display')!='inline'){
                    y=false;
                    if(x)t=v;else this.setStartBefore(v);
                }
                w=v.getPrevious();
            }while(w){
                z=false;
                if(w.type==3){
                    A=w.getText();
                    if(/[^\s\ufeff]/.test(A))w=null;
                    z=/[\s\ufeff]$/.test(A);
                }else if(w.$.offsetWidth>0&&!w.getAttribute('_fck_bookmark'))if(y&&f.$removeEmpty[w.getName()]){
                    A=w.getText();
                    if(!/[^\s\ufeff]/.test(A))w=null;
                    else{
                        var D=w.$.all||w.$.getElementsByTagName('*');
                        for(var E=0,F;F=D[E++];)if(!f.$removeEmpty[F.nodeName.toLowerCase()]){
                            w=null;
                            break;
                        }
                        }
                        if(w)z=!!A.length;
                }else w=null;
            if(z)if(y){
                if(x)t=v;
                else if(v)this.setStartBefore(v);
            }else y=true;
            if(w){
                var G=w.getPrevious();
                if(!v&&!G){
                    v=w;
                    w=null;
                    break;
                }
                w=G;
            }else v=null;
        }
        if(v)v=v.getParent();
        }
        B=this.endContainer;
        C=this.endOffset;
        v=w=null;
        x=y=false;
        if(B.type==3){
            B=!e.trim(B.substring(C)).length&&B;
            y=!(B&&B.getLength());
            if(B)if(!(w=B.getNext()))v=B.getParent();
        }else{
            w=B.getChild(C);
            if(!w)v=B;
        }while(v||w){
            if(v&&!w){
                if(!x&&v.equals(r))x=true;
                if(!s.contains(v))break;
                if(!y||v.getComputedStyle('display')!='inline'){
                    y=false;
                    if(x)u=v;
                    else if(v)this.setEndAfter(v);
                }
                w=v.getNext();
            }while(w){
                z=false;
                if(w.type==3){
                    A=w.getText();
                    if(/[^\s\ufeff]/.test(A))w=null;
                    z=/^[\s\ufeff]/.test(A);
                }else if(w.$.offsetWidth>0&&!w.getAttribute('_fck_bookmark'))if(y&&f.$removeEmpty[w.getName()]){
                    A=w.getText();
                    if(!/[^\s\ufeff]/.test(A))w=null;
                    else{
                        D=w.$.all||w.$.getElementsByTagName('*');
                        for(E=0;F=D[E++];)if(!f.$removeEmpty[F.nodeName.toLowerCase()]){
                            w=null;
                            break;
                        }
                        }
                        if(w)z=!!A.length;
                }else w=null;
            if(z)if(y)if(x)u=v;else this.setEndAfter(v);
            if(w){
                G=w.getNext();
                if(!v&&!G){
                    v=w;
                    w=null;
                    break;
                }
                w=G;
            }else v=null;
        }
        if(v)v=v.getParent();
    }
    if(t&&u){
        r=t.contains(u)?u:t;
        this.setStartBefore(r);
        this.setEndAfter(r);
    }
    break;
case 2:case 3:
    var H=new d.range(this.document);
    s=this.document.getBody();
    H.setStartAt(s,1);
    H.setEnd(this.startContainer,this.startOffset);
    var I=new d.walker(H),J,K,L=d.walker.blockBoundary(q==3?{
    br:1
}:null),M=function(O){
    var P=L(O);
    if(!P)J=O;
    return P;
},N=function(O){
    var P=M(O);
    if(!P&&O.is&&O.is('br'))K=O;
    return P;
};

I.guard=M;
v=I.lastBackward();
    J=J||s;
    this.setStartAt(J,!J.is('br')&&(!v||J.contains(v))?1:4);
    H=this.clone();
    H.collapse();
    H.setEndAt(s,2);
    I=new d.walker(H);
    I.guard=q==3?N:M;
    J=null;
    v=I.lastForward();
    J=J||s;
    this.setEndAt(J,!J.is('br')&&(!v||J.contains(v))?2:3);
    if(K)this.setEndAfter(K);
    }
},
insertNode:function(q){
    var u=this;
    u.optimizeBookmark();
    u.trim(false,true);
    var r=u.startContainer,s=u.startOffset,t=r.getChild(s);
    if(t)q.insertBefore(t);else r.append(q);
    if(q.getParent().equals(u.endContainer))u.endOffset++;
    u.setStartBefore(q);
},
moveToPosition:function(q,r){
    this.setStartAt(q,r);
    this.collapse(true);
},
selectNodeContents:function(q){
    this.setStart(q,0);
    this.setEnd(q,q.type==3?q.getLength():q.getChildCount());
},
setStart:function(q,r){
    var s=this;
    s.startContainer=q;
    s.startOffset=r;
    if(!s.endContainer){
        s.endContainer=q;
        s.endOffset=r;
    }
    l(s);
},
setEnd:function(q,r){
    var s=this;
    s.endContainer=q;
    s.endOffset=r;
    if(!s.startContainer){
        s.startContainer=q;
        s.startOffset=r;
    }
    l(s);
},
setStartAfter:function(q){
    this.setStart(q.getParent(),q.getIndex()+1);
},
setStartBefore:function(q){
    this.setStart(q.getParent(),q.getIndex());
},
setEndAfter:function(q){
    this.setEnd(q.getParent(),q.getIndex()+1);
},
setEndBefore:function(q){
    this.setEnd(q.getParent(),q.getIndex());
},
setStartAt:function(q,r){
    var s=this;
    switch(r){
        case 1:
            s.setStart(q,0);
            break;
        case 2:
            if(q.type==3)s.setStart(q,q.getLength());else s.setStart(q,q.getChildCount());
            break;
        case 3:
            s.setStartBefore(q);
            break;
        case 4:
            s.setStartAfter(q);
    }
    l(s);
},
setEndAt:function(q,r){
    var s=this;
    switch(r){
        case 1:
            s.setEnd(q,0);
            break;
        case 2:
            if(q.type==3)s.setEnd(q,q.getLength());else s.setEnd(q,q.getChildCount());
            break;
        case 3:
            s.setEndBefore(q);
            break;
        case 4:
            s.setEndAfter(q);
    }
    l(s);
},
fixBlock:function(q,r){
    var u=this;
    var s=u.createBookmark(),t=u.document.createElement(r);
    u.collapse(q);
    u.enlarge(2);
    u.extractContents().appendTo(t);
    t.trim();
    if(!c)t.appendBogus();
    u.insertNode(t);
    u.moveToBookmark(s);
    return t;
},
splitBlock:function(q){
    var B=this;
    var r=new d.elementPath(B.startContainer),s=new d.elementPath(B.endContainer),t=r.blockLimit,u=s.blockLimit,v=r.block,w=s.block,x=null;
    if(!t.equals(u))return null;
    if(q!='br'){
        if(!v){
            v=B.fixBlock(true,q);
            w=new d.elementPath(B.endContainer).block;
        }
        if(!w)w=B.fixBlock(false,q);
    }
    var y=v&&B.checkStartOfBlock(),z=w&&B.checkEndOfBlock();
    B.deleteContents();
    if(v&&v.equals(w))if(z){
        x=new d.elementPath(B.startContainer);
        B.moveToPosition(w,4);
        w=null;
    }else if(y){
        x=new d.elementPath(B.startContainer);
        B.moveToPosition(v,3);
        v=null;
    }else{
        B.setEndAt(v,2);
        var A=B.extractContents();
        w=v.clone(false);
        A.appendTo(w);
        w.insertAfter(v);
        B.moveToPosition(v,4);
        if(!c&&!v.is('ul','ol'))v.appendBogus();
    }
    return{
        previousBlock:v,
        nextBlock:w,
        wasStartOfBlock:y,
        wasEndOfBlock:z,
        elementPath:x
    };

},
checkBoundaryOfElement:function(q,r){
    var s=this.clone();
    s[r==1?'setStartAt':'setEndAt'](q,r==1?1:2);
    var t=new d.walker(s),u=false;
    t.evaluator=p;
    return t[r==1?'checkBackward':'checkForward']();
},
checkStartOfBlock:function(){
    var w=this;
    var q=w.startContainer,r=w.startOffset;
    if(r&&q.type==3){
        var s=e.ltrim(q.substring(0,r));
        if(s.length)return false;
    }
    w.trim();
    var t=new d.elementPath(w.startContainer),u=w.clone();
    u.collapse(true);
    u.setStartAt(t.block||t.blockLimit,1);
    var v=new d.walker(u);
    v.evaluator=o(true);
    return v.checkBackward();
},
checkEndOfBlock:function(){
    var w=this;
    var q=w.endContainer,r=w.endOffset;
    if(q.type==3){
        var s=e.rtrim(q.substring(r));
        if(s.length)return false;
    }
    w.trim();
    var t=new d.elementPath(w.endContainer),u=w.clone();
    u.collapse(false);
    u.setEndAt(t.block||t.blockLimit,2);
    var v=new d.walker(u);
    v.evaluator=o(false);
    return v.checkForward();
},
moveToElementEditStart:function(q){
    var r;
    while(q&&q.type==1){
        if(q.isEditable())r=q;
        else if(r)break;
        q=q.getFirst();
    }
    if(r){
        this.moveToPosition(r,1);
        return true;
    }else return false;
},
getEnclosedNode:function(){
    var q=this.clone(),r=new d.walker(q),s=d.walker.bookmark(true),t=d.walker.whitespaces(true),u=function(w){
        return t(w)&&s(w);
    };

    q.evaluator=u;
    var v=r.next();
    r.reset();
    return v&&v.equals(r.previous())?v:null;
},
getTouchedStartNode:function(){
    var q=this.startContainer;
    if(this.collapsed||q.type!=1)return q;
    return q.getChild(this.startOffset)||q;
},
getTouchedEndNode:function(){
    var q=this.endContainer;
    if(this.collapsed||q.type!=1)return q;
    return q.getChild(this.endOffset-1)||q;
}
};

})();
a.POSITION_AFTER_START=1;
a.POSITION_BEFORE_END=2;
a.POSITION_BEFORE_START=3;
a.POSITION_AFTER_END=4;
a.ENLARGE_ELEMENT=1;
a.ENLARGE_BLOCK_CONTENTS=2;
a.ENLARGE_LIST_ITEM_CONTENTS=3;
a.START=1;
a.END=2;
a.STARTEND=3;
(function(){
    var l=c&&b.version<7?a.basePath+'images/spacer.gif':'about:blank',m=h.createFromHtml('<div style="width:0px;height:0px;position:absolute;left:-10000px;background-image:url('+l+')"></div>',a.document);
    m.appendTo(a.document.getHead());
    try{
        b.hc=m.getComputedStyle('background-image')=='none';
    }catch(n){
        b.hc=false;
    }
    if(b.hc)b.cssClass+=' cke_hc';
    m.remove();
})();
j.load(i.corePlugins.split(','),function(){
    a.status='loaded';
    a.fire('loaded');
    var l=a._.pending;
    if(l){
        delete a._.pending;
        for(var m=0;m<l.length;m++)a.add(l[m]);
    }
});
j.add('about',{
    init:function(l){
        var m=l.addCommand('about',new a.dialogCommand('about'));
        m.modes={
            wysiwyg:1,
            source:1
        };

        m.canUndo=false;
        l.ui.addButton('About',{
            label:l.lang.about.title,
            command:'about'
        });
        a.dialog.add('about',this.path+'dialogs/about.js');
    }
});
j.add('basicstyles',{
    requires:['styles','button'],
    init:function(l){
        var m=function(p,q,r,s){
            var t=new a.style(s);
            l.attachStyleStateChange(t,function(u){
                l.getCommand(r).setState(u);
            });
            l.addCommand(r,new a.styleCommand(t));
            l.ui.addButton(p,{
                label:q,
                command:r
            });
        },n=l.config,o=l.lang;
        m('Bold',o.bold,'bold',n.coreStyles_bold);
        m('Italic',o.italic,'italic',n.coreStyles_italic);
        m('Underline',o.underline,'underline',n.coreStyles_underline);
        m('Strike',o.strike,'strike',n.coreStyles_strike);
        m('Subscript',o.subscript,'subscript',n.coreStyles_subscript);
        m('Superscript',o.superscript,'superscript',n.coreStyles_superscript);
    }
});
i.coreStyles_bold={
    element:'strong',
    overrides:'b'
};

i.coreStyles_italic={
    element:'em',
    overrides:'i'
};

i.coreStyles_underline={
    element:'u'
};

i.coreStyles_strike={
    element:'strike'
};

i.coreStyles_subscript={
    element:'sub'
};

i.coreStyles_superscript={
    element:'sup'
};
(function(){
    function l(p,q){
        var r=q.block||q.blockLimit;
        if(!r||r.getName()=='body')return 2;
        if(r.getAscendant('blockquote',true))return 1;
        return 2;
    };

    function m(p){
        var q=p.editor,r=q.getCommand('blockquote');
        r.state=l(q,p.data.path);
        r.fire('state');
    };

    function n(p){
        for(var q=0,r=p.getChildCount(),s;q<r&&(s=p.getChild(q));q++)if(s.type==1&&s.isBlockBoundary())return false;return true;
    };

    var o={
        exec:function(p){
            var q=p.getCommand('blockquote').state,r=p.getSelection(),s=r&&r.getRanges()[0];
            if(!s)return;
            var t=r.createBookmarks();
            if(c){
                var u=t[0].startNode,v=t[0].endNode,w;
                if(u&&u.getParent().getName()=='blockquote'){
                    w=u;
                    while(w=w.getNext())if(w.type==1&&w.isBlockBoundary()){
                        u.move(w,true);
                        break;
                    }
                    }
                    if(v&&v.getParent().getName()=='blockquote'){
                w=v;
                while(w=w.getPrevious())if(w.type==1&&w.isBlockBoundary()){
                    v.move(w);
                    break;
                }
                }
            }
    var x=s.createIterator(),y;
    if(q==2){
    var z=[];
    while(y=x.getNextParagraph())z.push(y);
    if(z.length<1){
        var A=p.document.createElement(p.config.enterMode==1?'p':'div'),B=t.shift();
        s.insertNode(A);
        A.append(new d.text('﻿',p.document));
        s.moveToBookmark(B);
        s.selectNodeContents(A);
        s.collapse(true);
        B=s.createBookmark();
        z.push(A);
        t.unshift(B);
    }
    var C=z[0].getParent(),D=[];
    for(var E=0;E<z.length;E++){
        y=z[E];
        C=C.getCommonAncestor(y.getParent());
    }
    var F={
        table:1,
        tbody:1,
        tr:1,
        ol:1,
        ul:1
    };
    while(F[C.getName()])C=C.getParent();
    var G=null;
    while(z.length>0){
        y=z.shift();
        while(!y.getParent().equals(C))y=y.getParent();
        if(!y.equals(G))D.push(y);
        G=y;
    }while(D.length>0){
        y=D.shift();
        if(y.getName()=='blockquote'){
            var H=new d.documentFragment(p.document);
            while(y.getFirst()){
                H.append(y.getFirst().remove());
                z.push(H.getLast());
            }
            H.replace(y);
        }else z.push(y);
    }
    var I=p.document.createElement('blockquote');
    I.insertBefore(z[0]);
    while(z.length>0){
        y=z.shift();
        I.append(y);
    }
}else if(q==1){
    var J=[],K={};
    while(y=x.getNextParagraph()){
        var L=null,M=null;
        while(y.getParent()){
            if(y.getParent().getName()=='blockquote'){
                L=y.getParent();
                M=y;
                break;
            }
            y=y.getParent();
        }
        if(L&&M&&!M.getCustomData('blockquote_moveout')){
            J.push(M);
            h.setMarker(K,M,'blockquote_moveout',true);
        }
    }
    h.clearAllMarkers(K);
var N=[],O=[];
K={};
while(J.length>0){
    var P=J.shift();
    I=P.getParent();
    if(!P.getPrevious())P.remove().insertBefore(I);
    else if(!P.getNext())P.remove().insertAfter(I);
    else{
        P.breakParent(P.getParent());
        O.push(P.getNext());
    }
    if(!I.getCustomData('blockquote_processed')){
        O.push(I);
        h.setMarker(K,I,'blockquote_processed',true);
    }
    N.push(P);
}
h.clearAllMarkers(K);
for(E=O.length-1;E>=0;E--){
    I=O[E];
    if(n(I))I.remove();
}
if(p.config.enterMode==2){
    var Q=true;
    while(N.length){
        P=N.shift();
        if(P.getName()=='div'){
            H=new d.documentFragment(p.document);
            var R=Q&&P.getPrevious()&&!(P.getPrevious().type==1&&P.getPrevious().isBlockBoundary());
            if(R)H.append(p.document.createElement('br'));
            var S=P.getNext()&&!(P.getNext().type==1&&P.getNext().isBlockBoundary());
            while(P.getFirst())P.getFirst().remove().appendTo(H);
            if(S)H.append(p.document.createElement('br'));
            H.replace(P);
            Q=false;
        }
    }
}
}
r.selectBookmarks(t);
p.focus();
}
};

j.add('blockquote',{
    init:function(p){
        p.addCommand('blockquote',o);
        p.ui.addButton('Blockquote',{
            label:p.lang.blockquote,
            command:'blockquote'
        });
        p.on('selectionChange',m);
    },
    requires:['domiterator']
    });
})();
j.add('button',{
    beforeInit:function(l){
        l.ui.addHandler(1,k.button.handler);
    }
});
a.UI_BUTTON=1;
k.button=function(l){
    e.extend(this,l,{
        title:l.label,
        className:l.className||l.command&&'cke_button_'+l.command||'',
        click:l.click||(function(m){
            m.execCommand(l.command);
        })
        });
    this._={};

};

k.button.handler={
    create:function(l){
        return new k.button(l);
    }
};

k.button.prototype={
    canGroup:true,
    render:function(l,m){
        var n=b,o=this._.id='cke_'+e.getNextNumber();
        this._.editor=l;
        var p={
            id:o,
            button:this,
            editor:l,
            focus:function(){
                var v=a.document.getById(o);
                v.focus();
            },
            execute:function(){
                this.button.click(l);
            }
        },q=e.addFunction(p.execute,p),r=k.button._.instances.push(p)-1,s='',t=this.command;
    if(this.modes)l.on('mode',function(){
        this.setState(this.modes[l.mode]?2:0);
    },this);
    else if(t){
        t=l.getCommand(t);
        if(t){
            t.on('state',function(){
                this.setState(t.state);
            },this);
            s+='cke_'+(t.state==1?'on':t.state==0?'disabled':'off');
        }
    }
    if(!t)s+='cke_off';
if(this.className)s+=' '+this.className;
m.push('<span class="cke_button">','<a id="',o,'" class="',s,'" href="javascript:void(\'',(this.title||'').replace("'",''),'\')" title="',this.title,'" tabindex="-1" hidefocus="true"');
if(n.opera||n.gecko&&n.mac)m.push(' onkeypress="return false;"');
if(n.gecko)m.push(' onblur="this.style.cssText = this.style.cssText;"');
m.push(' onkeydown="return CKEDITOR.ui.button._.keydown(',r,', event);" onfocus="return CKEDITOR.ui.button._.focus(',r,', event);" onclick="CKEDITOR.tools.callFunction(',q,', this); return false;"><span class="cke_icon"');
if(this.icon){
    var u=(this.iconOffset||0)*(-16);
    m.push(' style="background-image:url(',a.getUrl(this.icon),');background-position:0 '+u+'px;"');
}
m.push('></span><span class="cke_label">',this.label,'</span>');
if(this.hasArrow)m.push('<span class="cke_buttonarrow"></span>');
m.push('</a>','</span>');
if(this.onRender)this.onRender();
return p;
},
setState:function(l){
    var q=this;
    if(q._.state==l)return;
    var m=a.document.getById(q._.id);
    if(m){
        m.setState(l);
        var n=q.title,o=q._.editor.lang.common.unavailable,p=m.getChild(1);
        if(l==0)n=o.replace('%1',q.title);
        p.setHtml(n);
    }
    q._.state=l;
}
};

k.button._={
    instances:[],
    keydown:function(l,m){
        var n=k.button._.instances[l];
        if(n.onkey){
            m=new d.event(m);
            return n.onkey(n,m.getKeystroke())!==false;
        }
    },
focus:function(l,m){
    var n=k.button._.instances[l],o;
    if(n.onfocus)o=n.onfocus(n,new d.event(m))!==false;
    if(b.gecko&&b.version<10900)m.preventBubble();
    return o;
}
};

k.prototype.addButton=function(l,m){
    this.add(l,1,m);
};
(function(){
    var l=function(q,r){
        var s=q.document,t=s.getBody(),u=false,v=function(){
            u=true;
        };

        t.on(r,v);
        s.$.execCommand(r);
        t.removeListener(r,v);
        return u;
    },m=c?function(q,r){
        return l(q,r);
    }:function(q,r){
        try{
            return q.document.$.execCommand(r);
        }catch(s){
            return false;
        }
    },n=function(q){
    this.type=q;
    this.canUndo=this.type=='cut';
};

n.prototype={
    exec:function(q,r){
        var s=m(q,this.type);
        if(!s)alert(q.lang.clipboard[this.type+'Error']);
        return s;
    }
};

var o=c?{
    exec:function(q,r){
        q.focus();
        if(!q.fire('beforePaste')&&!l(q,'paste'))q.openDialog('paste');
    }
}:{
    exec:function(q){
        try{
            if(!q.fire('beforePaste')&&!q.document.$.execCommand('Paste',false,null))throw 0;
        }catch(r){
            q.openDialog('paste');
        }
    }
},p=function(q){
    switch(q.data.keyCode){
        case 1000+86:case 2000+45:
            var r=this;
            r.fire('saveSnapshot');
            if(r.fire('beforePaste'))q.cancel();
            setTimeout(function(){
            r.fire('saveSnapshot');
        },0);
        return;
        case 1000+88:case 2000+46:
            r=this;
            r.fire('saveSnapshot');
            setTimeout(function(){
            r.fire('saveSnapshot');
        },0);
    }
};

j.add('clipboard',{
    init:function(q){
        function r(t,u,v,w){
            var x=q.lang[u];
            q.addCommand(u,v);
            q.ui.addButton(t,{
                label:x,
                command:u
            });
            if(q.addMenuItems)q.addMenuItem(u,{
                label:x,
                command:u,
                group:'clipboard',
                order:w
            });
        };

        r('Cut','cut',new n('cut'),1);
        r('Copy','copy',new n('copy'),4);
        r('Paste','paste',o,8);
        a.dialog.add('paste',a.getUrl(this.path+'dialogs/paste.js'));
        q.on('key',p,q);
        if(q.contextMenu){
            function s(t){
                return q.document.$.queryCommandEnabled(t)?2:0;
            };

            q.contextMenu.addListener(function(){
                return{
                    cut:s('Cut'),
                    copy:s('Cut'),
                    paste:b.webkit?2:s('Paste')
                    };

            });
    }
}
});
})();
j.add('colorbutton',{
    requires:['panelbutton','floatpanel','styles'],
    init:function(l){
        var m=l.config,n=l.lang.colorButton,o;
        if(!b.hc){
            p('TextColor','fore',n.textColorTitle);
            p('BGColor','back',n.bgColorTitle);
        }
        function p(r,s,t){
            l.ui.add(r,4,{
                label:t,
                title:t,
                className:'cke_button_'+r.toLowerCase(),
                modes:{
                    wysiwyg:1
                },
                panel:{
                    css:[a.getUrl(l.skinPath+'editor.css')]
                    },
                onBlock:function(u,v){
                    var w=u.addBlock(v);
                    w.autoSize=true;
                    w.element.addClass('cke_colorblock');
                    w.element.setHtml(q(u,s));
                    var x=w.keys;
                    x[39]='next';
                    x[9]='next';
                    x[37]='prev';
                    x[2000+9]='prev';
                    x[32]='click';
                }
            });
    };

    function q(r,s){
        var t=[],u=m.colorButton_colors.split(','),v=e.addFunction(function(z,A){
            if(z=='?')return;
            l.focus();
            r.hide();
            var B=new a.style(m['colorButton_'+A+'Style'],z&&{
                color:z
            });
            l.fire('saveSnapshot');
            if(z)B.apply(l.document);else B.remove(l.document);
            l.fire('saveSnapshot');
        });
        t.push('<a class="cke_colorauto" _cke_focus=1 hidefocus=true title="',n.auto,'" onclick="CKEDITOR.tools.callFunction(',v,",null,'",s,"');return false;\" href=\"javascript:void('",n.auto,'\')"><table cellspacing=0 cellpadding=0 width="100%"><tr><td><span class="cke_colorbox" style="background-color:#000"></span></td><td colspan=7 align=center>',n.auto,'</td></tr></table></a><table cellspacing=0 cellpadding=0 width="100%">');
        for(var w=0;w<u.length;w++){
            if(w%8===0)t.push('</tr><tr>');
            var x=u[w],y=l.lang.colors[x]||x;
            t.push('<td><a class="cke_colorbox" _cke_focus=1 hidefocus=true title="',y,'" onclick="CKEDITOR.tools.callFunction(',v,",'#",x,"','",s,"'); return false;\" href=\"javascript:void('",y,'\')"><span class="cke_colorbox" style="background-color:#',x,'"></span></a></td>');
        }
        if(m.colorButton_enableMore)t.push('</tr><tr><td colspan=8 align=center><a class="cke_colormore" _cke_focus=1 hidefocus=true title="',n.more,'" onclick="CKEDITOR.tools.callFunction(',v,",'?','",s,"');return false;\" href=\"javascript:void('",n.more,"')\">",n.more,'</a></td>');
        t.push('</tr></table>');
        return t.join('');
    };

}
});
i.colorButton_enableMore=false;
i.colorButton_colors='000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF';
i.colorButton_foreStyle={
    element:'span',
    styles:{
        color:'#(color)'
    },
    overrides:[{
        element:'font',
        attributes:{
            color:null
        }
    }]
};

i.colorButton_backStyle={
    element:'span',
    styles:{
        'background-color':'#(color)'
    }
};
(function(){
    j.colordialog={
        init:function(l){
            l.addCommand('colordialog',new a.dialogCommand('colordialog'));
            a.dialog.add('colordialog',this.path+'dialogs/colordialog.js');
        }
    };

j.add('colordialog',j.colordialog);
})();
j.add('contextmenu',{
    requires:['menu'],
    beforeInit:function(l){
        l.contextMenu=new j.contextMenu(l);
        l.addCommand('contextMenu',{
            exec:function(){
                l.contextMenu.show(l.document.getBody());
            }
        });
}
});
j.contextMenu=e.createClass({
    $:function(l){
        this.id='cke_'+e.getNextNumber();
        this.editor=l;
        this._.listeners=[];
        this._.functionId=e.addFunction(function(m){
            this._.panel.hide();
            l.focus();
            l.execCommand(m);
        },this);
    },
    _:{
        onMenu:function(l,m,n,o){
            var p=this._.menu,q=this.editor;
            if(p){
                p.hide();
                p.removeAll();
            }else{
                p=this._.menu=new a.menu(q);
                p.onClick=e.bind(function(z){
                    var A=true;
                    p.hide();
                    if(c)p.onEscape();
                    if(z.onClick)z.onClick();
                    else if(z.command)q.execCommand(z.command);
                    A=false;
                },this);
                p.onEscape=function(){
                    q.focus();
                    if(c)q.getSelection().unlock(true);
                };

        }
        var r=this._.listeners,s=[],t=this.editor.getSelection(),u=t&&t.getStartElement();
        if(c)t.lock();
        p.onHide=e.bind(function(){
            p.onHide=null;
            if(c)q.getSelection().unlock();
            this.onHide&&this.onHide();
        },this);
        for(var v=0;v<r.length;v++){
            var w=r[v](u,t);
            if(w)for(var x in w){
                var y=this.editor.getMenuItem(x);
                if(y){
                    y.state=w[x];
                    p.add(y);
                }
            }
            }
            p.show(l,m||(q.lang.dir=='rtl'?2:1),n,o);
}
},
proto:{
    addTarget:function(l){
        l.on('contextmenu',function(m){
            var n=m.data;
            n.preventDefault();
            var o=n.getTarget().getDocument().getDocumentElement(),p=n.$.clientX,q=n.$.clientY;
            e.setTimeout(function(){
                this._.onMenu(o,null,p,q);
            },0,this);
        },this);
    },
    addListener:function(l){
        this._.listeners.push(l);
    },
    show:function(l,m,n,o){
        this.editor.focus();
        this._.onMenu(l||a.document.getDocumentElement(),m,n||0,o||0);
    }
}
});
(function(){
    var l={
        toolbarFocus:{
            exec:function(n){
                var o=n._.elementsPath.idBase,p=a.document.getById(o+'0');
                if(p)p.focus();
            }
        }
    },m='<span class="cke_empty">&nbsp;</span>';
j.add('elementspath',{
    requires:['selection'],
    init:function(n){
        var o='cke_path_'+n.name,p,q=function(){
            if(!p)p=a.document.getById(o);
            return p;
        },r='cke_elementspath_'+e.getNextNumber()+'_';
        n._.elementsPath={
            idBase:r
        };

        n.on('themeSpace',function(s){
            if(s.data.space=='bottom')s.data.html+='<div id="'+o+'" class="cke_path">'+m+'</div>';
        });
        n.on('selectionChange',function(s){
            var t=b,u=s.data.selection,v=u.getStartElement(),w=[],x=this._.elementsPath.list=[];
            while(v){
                var y=x.push(v)-1,z;
                if(v.getAttribute('_cke_real_element_type'))z=v.getAttribute('_cke_real_element_type');else z=v.getName();
                var A='';
                if(t.opera||t.gecko&&t.mac)A+=' onkeypress="return false;"';
                if(t.gecko)A+=' onblur="this.style.cssText = this.style.cssText;"';
                w.unshift('<a id="',r,y,'" href="javascript:void(\'',z,'\')" tabindex="-1" title="',n.lang.elementsPath.eleTitle.replace(/%1/,z),'"'+(b.gecko&&b.version<10900?' onfocus="event.preventBubble();"':'')+' hidefocus="true" '+" onkeydown=\"return CKEDITOR._.elementsPath.keydown('",this.name,"',",y,', event);"'+A," onclick=\"return CKEDITOR._.elementsPath.click('",this.name,"',",y,');">',z,'</a>');
                if(z=='body')break;
                v=v.getParent();
            }
            q().setHtml(w.join('')+m);
        });
        n.on('contentDomUnload',function(){
            q().setHtml(m);
        });
        n.addCommand('elementsPathFocus',l.toolbarFocus);
    }
});
})();
a._.elementsPath={
    click:function(l,m){
        var n=a.instances[l];
        n.focus();
        var o=n._.elementsPath.list[m];
        n.getSelection().selectElement(o);
        return false;
    },
    keydown:function(l,m,n){
        var o=k.button._.instances[m],p=a.instances[l],q=p._.elementsPath.idBase,r;
        n=new d.event(n);
        switch(n.getKeystroke()){
            case 37:case 9:
                r=a.document.getById(q+(m+1));
                if(!r)r=a.document.getById(q+'0');
                r.focus();
                return false;
            case 39:case 2000+9:
                r=a.document.getById(q+(m-1));
                if(!r)r=a.document.getById(q+(p._.elementsPath.list.length-1));
                r.focus();
                return false;
            case 27:
                p.focus();
                return false;
            case 13:case 32:
                this.click(l,m);
                return false;
        }
        return true;
    }
};
(function(){
    j.add('enterkey',{
        requires:['keystrokes','indent'],
        init:function(s){
            var t=s.specialKeys;
            t[13]=o;
            t[2000+13]=n;
        }
    });
var l,m=/^h[1-6]$/;
function n(s){
    l=1;
    return o(s,s.config.shiftEnterMode);
};

function o(s,t){
    if(s.mode!='wysiwyg')return false;
    if(!t)t=s.config.enterMode;
    setTimeout(function(){
        s.fire('saveSnapshot');
        if(t==2||s.getSelection().getStartElement().hasAscendant('pre',true))q(s,t);else p(s,t);
        l=0;
    },0);
    return true;
};

function p(s,t,u){
    u=u||r(s);
    var v=u.document,w=t==3?'div':'p',x=u.splitBlock(w);
    if(!x)return;
    var y=x.previousBlock,z=x.nextBlock,A=x.wasStartOfBlock,B=x.wasEndOfBlock,C;
    if(z){
        C=z.getParent();
        if(C.is('li')){
            z.breakParent(C);
            z.move(z.getNext(),true);
        }
    }else if(y&&(C=y.getParent())&&(C.is('li'))){
    y.breakParent(C);
    u.moveToElementEditStart(y.getNext());
    y.move(y.getPrevious());
}
if(!A&&!B){
    if(z.is('li')&&(C=z.getFirst())&&(C.is&&C.is('ul','ol')))z.insertBefore(v.createText('\xa0'),C);
    if(z)u.moveToElementEditStart(z);
}else{
    if(A&&B&&y.is('li')){
        s.execCommand('outdent');
        return;
    }
    var D;
    if(y){
        if(!l&&!m.test(y.getName()))D=y.clone();
    }else if(z)D=z.clone();
    if(!D)D=v.createElement(w);
    var E=x.elementPath;
    if(E)for(var F=0,G=E.elements.length;F<G;F++){
        var H=E.elements[F];
        if(H.equals(E.block)||H.equals(E.blockLimit))break;
        if(f.$removeEmpty[H.getName()]){
            H=H.clone();
            D.moveChildren(H);
            D.append(H);
        }
    }
    if(!c)D.appendBogus();
    u.insertNode(D);
    if(c&&A&&(!B||!y.getChildCount())){
    u.moveToElementEditStart(B?y:D);
    u.select();
}
u.moveToElementEditStart(A&&!B?z:D);
}
if(!c)if(z){
    var I=v.createElement('span');
    I.setHtml('&nbsp;');
    u.insertNode(I);
    I.scrollIntoView();
    u.deleteContents();
}else D.scrollIntoView();
u.select();
};

function q(s,t){
    var u=r(s),v=u.document,w=t==3?'div':'p',x=u.checkEndOfBlock(),y=new d.elementPath(s.getSelection().getStartElement()),z=y.block,A=z&&y.block.getName(),B=false;
    if(!l&&A=='li'){
        p(s,t,u);
        return;
    }
    if(!l&&x&&m.test(A)){
        v.createElement('br').insertAfter(z);
        if(b.gecko)v.createText('').insertAfter(z);
        u.setStartAt(z.getNext(),c?3:1);
    }else{
        var C;
        B=A=='pre';
        if(B)C=v.createText(c?'\r':'\n');else C=v.createElement('br');
        u.deleteContents();
        u.insertNode(C);
        if(!c)v.createText('﻿').insertAfter(C);
        if(x&&!c)C.getParent().appendBogus();
        if(!c)C.getNext().$.nodeValue='';
        if(c)u.setStartAt(C,4);else u.setStartAt(C.getNext(),1);
        if(!c){
            var D=null;
            if(!b.gecko){
                D=v.createElement('span');
                D.setHtml('&nbsp;');
            }else D=v.createElement('br');
            D.insertBefore(C.getNext());
            D.scrollIntoView();
            D.remove();
        }
    }
    u.collapse(true);
u.select(B);
};

function r(s){
    var t=s.getSelection().getRanges();
    for(var u=t.length-1;u>0;u--)t[u].deleteContents();
    return t[0];
};

})();
(function(){
    var l='nbsp,gt,lt,quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro',m='Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml',n='Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv';
    function o(p){
        var q={},r=[],s={
            nbsp:'\xa0',
            shy:'­',
            gt:'>',
            lt:'<'
        };

        p=p.replace(/\b(nbsp|shy|gt|lt|amp)(?:,|$)/g,function(x,y){
            q[s[y]]='&'+y+';';
            r.push(s[y]);
            return '';
        });
        p=p.split(',');
        var t=document.createElement('div'),u;
        t.innerHTML='&'+p.join(';&')+';';
        u=t.innerHTML;
        t=null;
        for(var v=0;v<u.length;v++){
            var w=u.charAt(v);
            q[w]='&'+p[v]+';';
            r.push(w);
        }
        q.regex=r.join('');
        return q;
    };

    j.add('entities',{
        afterInit:function(p){
            var q=p.config;
            if(!q.entities)return;
            var r=p.dataProcessor,s=r&&r.htmlFilter;
            if(s){
                var t=l;
                if(q.entities_latin)t+=','+m;
                if(q.entities_greek)t+=','+n;
                if(q.entities_additional)t+=','+q.entities_additional;
                var u=o(t),v='['+u.regex+']';
                delete u.regex;
                if(q.entities_processNumerical)v='[^ -~]|'+v;
                v=new RegExp(v,'g');
                function w(x){
                    return u[x]||'&#'+x.charCodeAt(0)+';';
                };

                s.addRules({
                    text:function(x){
                        return x.replace(v,w);
                    }
                });
        }
    }
    });
})();
i.entities=true;
i.entities_latin=true;
i.entities_greek=true;
i.entities_processNumerical=false;
i.entities_additional='#39';
(function(){
    function l(u,v){
        var w=[];
        if(!v)return u;else for(var x in v)w.push(x+'='+encodeURIComponent(v[x]));return u+(u.indexOf('?')!=-1?'&':'?')+w.join('&');
    };

    function m(u){
        u+='';
        var v=u.charAt(0).toUpperCase();
        return v+u.substr(1);
    };

    function n(u){
        var B=this;
        var v=B.getDialog(),w=v.getParentEditor();
        w._.filebrowserSe=B;
        var x=w.config['filebrowser'+m(v.getName())+'WindowWidth']||w.config.filebrowserWindowWidth||'80%',y=w.config['filebrowser'+m(v.getName())+'WindowHeight']||w.config.filebrowserWindowHeight||'70%',z=B.filebrowser.params||{};

        z.CKEditor=w.name;
        z.CKEditorFuncNum=w._.filebrowserFn;
        if(!z.langCode)z.langCode=w.langCode;
        var A=l(B.filebrowser.url,z);
        w.popup(A,x,y);
    };

    function o(u){
        var x=this;
        var v=x.getDialog(),w=v.getParentEditor();
        w._.filebrowserSe=x;
        if(!v.getContentElement(x['for'][0],x['for'][1]).getInputElement().$.value)return false;
        if(!v.getContentElement(x['for'][0],x['for'][1]).getAction())return false;
        return true;
    };

    function p(u,v,w){
        var x=w.params||{};

        x.CKEditor=u.name;
        x.CKEditorFuncNum=u._.filebrowserFn;
        if(!x.langCode)x.langCode=u.langCode;
        v.action=l(w.url,x);
        v.filebrowser=w;
    };

    function q(u,v,w,x){
        var y,z;
        for(var A in x){
            y=x[A];
            if(y.type=='hbox'||y.type=='vbox')q(u,v,w,y.children);
            if(!y.filebrowser)continue;
            if(typeof y.filebrowser=='string'){
                var B={
                    action:y.type=='fileButton'?'QuickUpload':'Browse',
                    target:y.filebrowser
                    };

                y.filebrowser=B;
            }
            if(y.filebrowser.action=='Browse'){
                var C=y.filebrowser.url||u.config['filebrowser'+m(v)+'BrowseUrl']||u.config.filebrowserBrowseUrl;
                if(C){
                    y.onClick=n;
                    y.filebrowser.url=C;
                    y.hidden=false;
                }
            }else if(y.filebrowser.action=='QuickUpload'&&y['for']){
            C=y.filebrowser.url||u.config['filebrowser'+m(v)+'UploadUrl']||u.config.filebrowserUploadUrl;
            if(C){
                y.onClick=o;
                y.filebrowser.url=C;
                y.hidden=false;
                p(u,w.getContents(y['for'][0]).get(y['for'][1]),y.filebrowser);
            }
        }
        }
    };

function r(u,v){
    var w=v.getDialog(),x=v.filebrowser.target||null;
    u=u.replace(/#/g,'%23');
    if(x){
        var y=x.split(':'),z=w.getContentElement(y[0],y[1]);
        if(z){
            z.setValue(u);
            w.selectPage(y[0]);
        }
    }
};

function s(u,v,w){
    if(w.indexOf(';')!==-1){
        var x=w.split(';');
        for(var y=0;y<x.length;y++)if(s(u,v,x[y]))return true;return false;
    }
    return u.getContents(v).get(w).filebrowser&&u.getContents(v).get(w).filebrowser.url;
};

function t(u,v){
    var z=this;
    var w=z._.filebrowserSe.getDialog(),x=z._.filebrowserSe['for'],y=z._.filebrowserSe.filebrowser.onSelect;
    if(x)w.getContentElement(x[0],x[1]).reset();
    if(y&&y.call(z._.filebrowserSe,u,v)===false)return;
    if(typeof v=='string'&&v)alert(v);
    if(u)r(u,z._.filebrowserSe);
};

j.add('filebrowser',{
    init:function(u,v){
        u._.filebrowserFn=e.addFunction(t,u);
        a.on('dialogDefinition',function(w){
            for(var x in w.data.definition.contents){
                q(w.editor,w.data.name,w.data.definition,w.data.definition.contents[x].elements);
                if(w.data.definition.contents[x].hidden&&w.data.definition.contents[x].filebrowser)w.data.definition.contents[x].hidden=!s(w.data.definition,w.data.definition.contents[x].id,w.data.definition.contents[x].filebrowser);
            }
            });
}
});
})();
j.add('find',{
    init:function(l){
        var m=j.find;
        l.ui.addButton('Find',{
            label:l.lang.findAndReplace.find,
            command:'find'
        });
        var n=l.addCommand('find',new a.dialogCommand('find'));
        n.canUndo=false;
        l.ui.addButton('Replace',{
            label:l.lang.findAndReplace.replace,
            command:'replace'
        });
        var o=l.addCommand('replace',new a.dialogCommand('replace'));
        o.canUndo=false;
        a.dialog.add('find',this.path+'dialogs/find.js');
        a.dialog.add('replace',this.path+'dialogs/find.js');
    },
    requires:['styles']
    });
i.find_highlight={
    element:'span',
    styles:{
        'background-color':'#004',
        color:'#fff'
    }
};
(function(){
    var l=/\.swf(?:$|\?)/i,m=/^\d+(?:\.\d+)?$/;
    function n(q){
        if(m.test(q))return q+'px';
        return q;
    };

    function o(q){
        var r=q.attributes;
        return r.type=='application/x-shockwave-flash'||l.test(r.src||'');
    };

    function p(q,r){
        var s=q.createFakeParserElement(r,'cke_flash','flash',true),t=s.attributes.style||'',u=r.attributes.width,v=r.attributes.height;
        if(typeof u!='undefined')t=s.attributes.style=t+'width:'+n(u)+';';
        if(typeof v!='undefined')t=s.attributes.style=t+'height:'+n(v)+';';
        return s;
    };

    j.add('flash',{
        init:function(q){
            q.addCommand('flash',new a.dialogCommand('flash'));
            q.ui.addButton('Flash',{
                label:q.lang.common.flash,
                command:'flash'
            });
            a.dialog.add('flash',this.path+'dialogs/flash.js');
            q.addCss('img.cke_flash{background-image: url('+a.getUrl(this.path+'images/placeholder.png')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 80px;'+'height: 80px;'+'}');
            if(q.addMenuItems)q.addMenuItems({
                flash:{
                    label:q.lang.flash.properties,
                    command:'flash',
                    group:'flash'
                }
            });
        if(q.contextMenu)q.contextMenu.addListener(function(r,s){
            if(r&&r.is('img')&&r.getAttribute('_cke_real_element_type')=='flash')return{
                flash:2
            };

        });
    },
    afterInit:function(q){
        var r=q.dataProcessor,s=r&&r.dataFilter;
        if(s)s.addRules({
            elements:{
                'cke:object':function(t){
                    var u=t.attributes,v=u.classid&&String(u.classid).toLowerCase();
                    if(!v){
                        for(var w=0;w<t.children.length;w++)if(t.children[w].name=='embed'){
                            if(!o(t.children[w]))return null;
                            return p(q,t);
                        }
                        return null;
                    }
                    return p(q,t);
                },
                'cke:embed':function(t){
                    if(!o(t))return null;
                    return p(q,t);
                }
            }
        },5);
},
requires:['fakeobjects']
});
})();
e.extend(i,{
    flashEmbedTagOnly:false,
    flashAddEmbedTag:true,
    flashConvertOnEdit:false
});
(function(){
    function l(m,n,o,p,q,r,s){
        var t=m.config,u=q.split(';'),v=[],w={};

        for(var x=0;x<u.length;x++){
            var y={},z=u[x].split('/'),A=u[x]=z[0];
            y[o]=v[x]=z[1]||A;
            w[A]=new a.style(s,y);
        }
        m.ui.addRichCombo(n,{
            label:p.label,
            title:p.panelTitle,
            voiceLabel:p.voiceLabel,
            className:'cke_'+(o=='size'?'fontSize':'font'),
            multiSelect:false,
            panel:{
                css:[a.getUrl(m.skinPath+'editor.css')].concat(t.contentsCss),
                voiceLabel:p.panelVoiceLabel
                },
            init:function(){
                this.startGroup(p.panelTitle);
                for(var B=0;B<u.length;B++){
                    var C=u[B];
                    this.add(C,'<span style="font-'+o+':'+v[B]+'">'+C+'</span>',C);
                }
                },
        onClick:function(B){
            m.focus();
            m.fire('saveSnapshot');
            var C=w[B];
            if(this.getValue()==B)C.remove(m.document);else C.apply(m.document);
            m.fire('saveSnapshot');
        },
        onRender:function(){
            m.on('selectionChange',function(B){
                var C=this.getValue(),D=B.data.path,E=D.elements;
                for(var F=0,G;F<E.length;F++){
                    G=E[F];
                    for(var H in w)if(w[H].checkElementRemovable(G,true)){
                        if(H!=C)this.setValue(H);
                        return;
                    }
                    }
                    this.setValue('',r);
            },this);
        }
    });
};

j.add('font',{
    requires:['richcombo','styles'],
    init:function(m){
        var n=m.config;
        l(m,'Font','family',m.lang.font,n.font_names,n.font_defaultLabel,n.font_style);
        l(m,'FontSize','size',m.lang.fontSize,n.fontSize_sizes,n.fontSize_defaultLabel,n.fontSize_style);
    }
});
})();
i.font_names='Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif';
i.font_defaultLabel='';
i.font_style={
    element:'span',
    styles:{
        'font-family':'#(family)'
    },
    overrides:[{
        element:'font',
        attributes:{
            face:null
        }
    }]
};

i.fontSize_sizes='8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px';
i.fontSize_defaultLabel='';
i.fontSize_style={
    element:'span',
    styles:{
        'font-size':'#(size)'
    },
    overrides:[{
        element:'font',
        attributes:{
            size:null
        }
    }]
};

j.add('format',{
    requires:['richcombo','styles'],
    init:function(l){
        var m=l.config,n=l.lang.format,o=m.format_tags.split(';'),p={};

        for(var q=0;q<o.length;q++){
            var r=o[q];
            p[r]=new a.style(m['format_'+r]);
        }
        l.ui.addRichCombo('Format',{
            label:n.label,
            title:n.panelTitle,
            voiceLabel:n.voiceLabel,
            className:'cke_format',
            multiSelect:false,
            panel:{
                css:[a.getUrl(l.skinPath+'editor.css')].concat(m.contentsCss),
                voiceLabel:n.panelVoiceLabel
                },
            init:function(){
                this.startGroup(n.panelTitle);
                for(var s in p){
                    var t=n['tag_'+s];
                    this.add(s,'<'+s+'>'+t+'</'+s+'>',t);
                }
                },
        onClick:function(s){
            l.focus();
            l.fire('saveSnapshot');
            p[s].apply(l.document);
            l.fire('saveSnapshot');
        },
        onRender:function(){
            l.on('selectionChange',function(s){
                var t=this.getValue(),u=s.data.path;
                for(var v in p)if(p[v].checkActive(u)){
                    if(v!=t)this.setValue(v,l.lang.format['tag_'+v]);
                    return;
                }
                this.setValue('');
            },this);
        }
        });
}
});
i.format_tags='p;h1;h2;h3;h4;h5;h6;pre;address;div';
i.format_p={
    element:'p'
};

i.format_div={
    element:'div'
};

i.format_pre={
    element:'pre'
};

i.format_address={
    element:'address'
};

i.format_h1={
    element:'h1'
};

i.format_h2={
    element:'h2'
};

i.format_h3={
    element:'h3'
};

i.format_h4={
    element:'h4'
};

i.format_h5={
    element:'h5'
};

i.format_h6={
    element:'h6'
};

j.add('forms',{
    init:function(l){
        var m=l.lang;
        l.addCss('form{border: 1px dotted #FF0000;padding: 2px;}');
        var n=function(p,q,r){
            l.addCommand(q,new a.dialogCommand(q));
            l.ui.addButton(p,{
                label:m.common[p.charAt(0).toLowerCase()+p.slice(1)],
                command:q
            });
            a.dialog.add(q,r);
        },o=this.path+'dialogs/';
        n('Form','form',o+'form.js');
        n('Checkbox','checkbox',o+'checkbox.js');
        n('Radio','radio',o+'radio.js');
        n('TextField','textfield',o+'textfield.js');
        n('Textarea','textarea',o+'textarea.js');
        n('Select','select',o+'select.js');
        n('Button','button',o+'button.js');
        n('ImageButton','imagebutton',j.getPath('image')+'dialogs/image.js');
        n('HiddenField','hiddenfield',o+'hiddenfield.js');
        if(l.addMenuItems)l.addMenuItems({
            form:{
                label:m.form.menu,
                command:'form',
                group:'form'
            },
            checkbox:{
                label:m.checkboxAndRadio.checkboxTitle,
                command:'checkbox',
                group:'checkbox'
            },
            radio:{
                label:m.checkboxAndRadio.radioTitle,
                command:'radio',
                group:'radio'
            },
            textfield:{
                label:m.textfield.title,
                command:'textfield',
                group:'textfield'
            },
            hiddenfield:{
                label:m.hidden.title,
                command:'hiddenfield',
                group:'hiddenfield'
            },
            imagebutton:{
                label:m.image.titleButton,
                command:'imagebutton',
                group:'imagebutton'
            },
            button:{
                label:m.button.title,
                command:'button',
                group:'button'
            },
            select:{
                label:m.select.title,
                command:'select',
                group:'select'
            },
            textarea:{
                label:m.textarea.title,
                command:'textarea',
                group:'textarea'
            }
        });
    if(l.contextMenu){
        l.contextMenu.addListener(function(p){
            if(p&&p.hasAscendant('form'))return{
                form:2
            };

        });
    l.contextMenu.addListener(function(p){
        if(p){
            var q=p.getName();
            if(q=='select')return{
                select:2
            };

            if(q=='textarea')return{
                textarea:2
            };

            if(q=='input'){
                var r=p.getAttribute('type');
                if(r=='text'||r=='password')return{
                    textfield:2
                };

                if(r=='button'||r=='submit'||r=='reset')return{
                    button:2
                };

                if(r=='checkbox')return{
                    checkbox:2
                };

                if(r=='radio')return{
                    radio:2
                };

                if(r=='image')return{
                    imagebutton:2
                };

        }
        if(q=='img'&&p.getAttribute('_cke_real_element_type')=='hiddenfield')return{
            hiddenfield:2
        };

    }
});
}
},
requires:['image']
});
if(c)h.prototype.hasAttribute=function(l){
    var o=this;
    var m=o.$.attributes.getNamedItem(l);
    if(o.getName()=='input')switch(l){
        case 'class':
            return o.$.className.length>0;
        case 'checked':
            return!!o.$.checked;
        case 'value':
            var n=o.getAttribute('type');
            if(n=='checkbox'||n=='radio')return o.$.value!='on';
            break;default:
    }
    return!!(m&&m.specified);
};
(function(){
    var l={
        exec:function(n){
            n.insertElement(n.document.createElement('hr'));
        }
    },m='horizontalrule';
j.add(m,{
    init:function(n){
        n.addCommand(m,l);
        n.ui.addButton('HorizontalRule',{
            label:n.lang.horizontalrule,
            command:m
        });
    }
});
})();
(function(){
    var l=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,m='{cke_protected}';
    function n(M){
        var N=M.children.length,O=M.children[N-1];
        while(O&&O.type==3&&!e.trim(O.value))O=M.children[--N];
        return O;
    };

    function o(M,N){
        var O=M.children,P=n(M);
        if(P){
            if((N||!c)&&(P.type==1&&P.name=='br'))O.pop();
            if(P.type==3&&l.test(P.value))O.pop();
        }
    };

function p(M){
    var N=n(M);
    return!N||N.type==1&&N.name=='br';
};

function q(M){
    o(M,true);
    if(p(M))if(c)M.add(new a.htmlParser.text('\xa0'));else M.add(new a.htmlParser.element('br',{}));
};

function r(M){
    o(M);
    if(p(M))M.add(new a.htmlParser.text('\xa0'));
};

var s=f,t=e.extend({},s.$block,s.$listItem,s.$tableContent);
    for(var u in t)if(!('br' in s[u]))delete t[u];delete t.pre;
    var v={
    attributeNames:[[/^on/,'_cke_pa_on']]
    },w={
    elements:{}
};

for(u in t)w.elements[u]=q;var x={
    elementNames:[[/^cke:/,''],[/^\?xml:namespace$/,'']],
    attributeNames:[[/^_cke_(saved|pa)_/,''],[/^_cke.*/,'']],
    elements:{$:function(M){var N=M.attributes;if(N){var O=['name','href','src'],P;for(var Q=0;Q<O.length;Q++){P='_cke_saved_'+O[Q];P in N&&delete N[O[Q]];}}},
        embed:function(M){var N=M.parent;if(N&&N.name=='object'){var O=N.attributes.width,P=N.attributes.height;O&&(M.attributes.width=O);P&&(M.attributes.height=P);}},
        param:function(M){M.children=[];M.isEmpty=true;return M;},
        a:function(M){if(!(M.children.length||M.attributes.name||M.attributes._cke_saved_name))return false;
        }
    },
attributes:{
    'class':function(M,N){
        return e.ltrim(M.replace(/(?:^|\s+)cke_[^\s]*/g,''))||false;
    }

}
},y={
    elements:{}
};

for(u in t)y.elements[u]=r;if(c)x.attributes.style=function(M,N){
    return M.toLowerCase();
};

var z=/<(?:a|area|img|input).*?\s((?:href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))/gi;
function A(M){
    return M.replace(z,'$& _cke_saved_$1');
};

var B=/<(style)(?=[ >])[^>]*>[^<]*<\/\1>/gi,C=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,D=/(<\/?)((?:object|embed|param).*?>)/gi,E=/<cke:param(.*?)\/>/gi;
function F(M){
    return '<cke:encoded>'+encodeURIComponent(M)+'</cke:encoded>';
};

function G(M){
    return M.replace(B,F);
};

function H(M){
    return M.replace(D,'$1cke:$2');
};

function I(M){
    return M.replace(E,'<cke:param$1></cke:param>');
};

function J(M,N){
    return decodeURIComponent(N);
};

function K(M){
    return M.replace(C,J);
};

function unprotectSource( html ) 
 { 
              html = html.replace( /<!--\{cke_protected\}([\s\S]+)-->/g, function( match, data ) 
                    { 
                                return decodeURIComponent( data ); 
                        }); 

          // If the protected source was set on an attribute, the < and > will be encoded 
           return html.replace( /&lt;!--\{cke_protected\}([\s\S]+?)--&gt;/g, function( match, data ) 
                       { 
                                return decodeURIComponent( data ); 
                       }); 
       } 

function L(M,N){
    var O=[],
    P=/<\!--\{cke_temp\}(\d*?)-->/g,
    Q=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi].concat(N);
    for(var R=0;R<Q.length;R++)
    	M=M.replace(Q[R],function(S){S=S.replace(P,function(T,U){return O[U];});
    	return '<!--{cke_temp}'+(O.push(S)-1)+'-->';});
    M=M.replace(P,function(S,T){return '<!--'+m+encodeURIComponent(O[T]).replace(/--/g,'%2D%2D')+'-->';});return M;};
    j.add('htmldataprocessor',{requires:['htmlwriter'],
    init:function(M){
    	var N=M.dataProcessor=new a.htmlDataProcessor(M);
    	N.writer.forceSimpleAmpersand=M.config.forceSimpleAmpersand;
    	N.dataFilter.addRules(v);
    	N.dataFilter.addRules(w);
    	N.htmlFilter.addRules(x);
    	N.htmlFilter.addRules(y);
    	}});a.htmlDataProcessor=function(M){var N=this;N.editor=M;N.writer=new a.htmlWriter();N.dataFilter=new a.htmlParser.filter();N.htmlFilter=new a.htmlParser.filter();};a.htmlDataProcessor.prototype={toHtml:function(M,N){M=L(M,this.editor.config.protectedSource);M=A(M);if(c)M=G(M);M=H(M);M=I(M);var O=document.createElement('div');O.innerHTML='a'+M;M=O.innerHTML.substr(1);if(c)M=K(M);var P=a.htmlParser.fragment.fromHtml(M,N),Q=new a.htmlParser.basicWriter();P.writeHtml(Q,this.dataFilter);return Q.getHtml(true);},
    toDataFormat:
    	function(M,N){
    		var O=this.writer,
    		P=a.htmlParser.fragment.fromHtml(M,N);
    		O.reset();
    		P.writeHtml(O,this.htmlFilter);
    	
    	 var data = O.getHtml( true ); 
	 	 
          // Restore the data that has been protected 
         // data = unprotectRealComments( data ); 
         data = unprotectSource( data ); 

        return data; }
    	};})();i.forceSimpleAmpersand=false;j.add('image',{init:function(l){var m='image';a.dialog.add(m,this.path+'dialogs/image.js');l.addCommand(m,new a.dialogCommand(m));l.ui.addButton('Image',{label:l.lang.common.image,
    command:m});
    if(l.addMenuItems)l.addMenuItems({
    image:{
        label:l.lang.image.menu,
        command:'image',
        group:'image'
    }
});
if(l.contextMenu)l.contextMenu.addListener(function(n,o){
    if(!n||!n.is('img')||n.getAttribute('_cke_realelement'))return null;
    return{
        image:2
    };

});
}
});
i.image_removeLinkByEmptyURL=true;
(function(){
    var l={
        ol:1,
        ul:1
    };

    function m(r,s){
        r.getCommand(this.name).setState(s);
    };

    function n(r){
        var C=this;
        var s=r.data.path.elements,t,u,v=r.editor;
        for(var w=0;w<s.length;w++){
            if(s[w].getName()=='li'){
                u=s[w];
                continue;
            }
            if(l[s[w].getName()]){
                t=s[w];
                break;
            }
        }
        if(t)if(C.name=='outdent')return m.call(C,v,2);
        else{
        while(u&&(u=u.getPrevious(d.walker.whitespaces(true))))if(u.getName&&u.getName()=='li')return m.call(C,v,2);
        return m.call(C,v,0);
    }
    if(!C.useIndentClasses&&C.name=='indent')return m.call(C,v,2);
    var x=r.data.path,y=x.block||x.blockLimit;
    if(!y)return m.call(C,v,0);
    if(C.useIndentClasses){
        var z=y.$.className.match(C.classNameRegex),A=0;
        if(z){
            z=z[1];
            A=C.indentClassMap[z];
        }
        if(C.name=='outdent'&&!A||C.name=='indent'&&A==v.config.indentClasses.length)return m.call(C,v,0);
        return m.call(C,v,2);
    }else{
        var B=parseInt(y.getStyle(C.indentCssProperty),10);
        if(isNaN(B))B=0;
        if(B<=0)return m.call(C,v,0);
        return m.call(C,v,2);
    }
};

function o(r,s,t){
    var u=s.startContainer,v=s.endContainer;
    while(u&&!u.getParent().equals(t))u=u.getParent();
    while(v&&!v.getParent().equals(t))v=v.getParent();
    if(!u||!v)return;
    var w=u,x=[],y=false;
    while(!y){
        if(w.equals(v))y=true;
        x.push(w);
        w=w.getNext();
    }
    if(x.length<1)return;
    var z=t.getParents(true);
    for(var A=0;A<z.length;A++)if(z[A].getName&&l[z[A].getName()]){
        t=z[A];
        break;
    }
    var B=this.name=='indent'?1:-1,C=x[0],D=x[x.length-1],E={},F=j.list.listToArray(t,E),G=F[D.getCustomData('listarray_index')].indent;
    for(A=C.getCustomData('listarray_index');A<=D.getCustomData('listarray_index');A++)F[A].indent+=B;
    for(A=D.getCustomData('listarray_index')+1;A<F.length&&F[A].indent>G;A++)F[A].indent+=B;
    var H=j.list.arrayToList(F,E,null,r.config.enterMode,0);
    if(this.name=='outdent'){
        var I;
        if((I=t.getParent())&&(I.is('li'))){
            var J=H.listNode.getChildren(),K=[],L=J.count(),M;
            for(A=L-1;A>=0;A--)if((M=J.getItem(A))&&(M.is&&M.is('li')))K.push(M);
            }
        }
    if(H)H.listNode.replace(t);
if(K&&K.length)for(A=0;A<K.length;A++){
    var N=K[A],O=N;
    while((O=O.getNext())&&(O.is&&O.getName() in l))N.append(O);
    N.insertAfter(I);
}
h.clearAllMarkers(E);
};

function p(r,s){
    var A=this;
    var t=s.createIterator(),u=r.config.enterMode;
    t.enforceRealBlocks=true;
    t.enlargeBr=u!=2;
    var v;
    while(v=t.getNextParagraph())if(A.useIndentClasses){
        var w=v.$.className.match(A.classNameRegex),x=0;
        if(w){
            w=w[1];
            x=A.indentClassMap[w];
        }
        if(A.name=='outdent')x--;else x++;
        x=Math.min(x,r.config.indentClasses.length);
        x=Math.max(x,0);
        var y=e.ltrim(v.$.className.replace(A.classNameRegex,''));
        if(x<1)v.$.className=y;else v.addClass(r.config.indentClasses[x-1]);
    }else{
        var z=parseInt(v.getStyle(A.indentCssProperty),10);
        if(isNaN(z))z=0;
        z+=(A.name=='indent'?1:-1)*(r.config.indentOffset);
        z=Math.max(z,0);
        z=Math.ceil(z/r.config.indentOffset)*r.config.indentOffset;
        v.setStyle(A.indentCssProperty,z?z+r.config.indentUnit:'');
        if(v.getAttribute('style')==='')v.removeAttribute('style');
    }
    };

function q(r,s){
    var u=this;
    u.name=s;
    u.useIndentClasses=r.config.indentClasses&&r.config.indentClasses.length>0;
    if(u.useIndentClasses){
        u.classNameRegex=new RegExp('(?:^|\\s+)('+r.config.indentClasses.join('|')+')(?=$|\\s)');
        u.indentClassMap={};

        for(var t=0;t<r.config.indentClasses.length;t++)u.indentClassMap[r.config.indentClasses[t]]=t+1;
    }else u.indentCssProperty=r.config.contentsLangDirection=='ltr'?'margin-left':'margin-right';
};

q.prototype={
    exec:function(r){
        var s=r.getSelection(),t=s&&s.getRanges()[0];
        if(!s||!t)return;
        var u=s.createBookmarks(true),v=t.getCommonAncestor();
        while(v&&!(v.type==1&&l[v.getName()]))v=v.getParent();
        if(v)o.call(this,r,t,v);else p.call(this,r,t);
        r.focus();
        r.forceNextSelectionCheck();
        s.selectBookmarks(u);
    }
};

j.add('indent',{
    init:function(r){
        var s=new q(r,'indent'),t=new q(r,'outdent');
        r.addCommand('indent',s);
        r.addCommand('outdent',t);
        r.ui.addButton('Indent',{
            label:r.lang.indent,
            command:'indent'
        });
        r.ui.addButton('Outdent',{
            label:r.lang.outdent,
            command:'outdent'
        });
        r.on('selectionChange',e.bind(n,s));
        r.on('selectionChange',e.bind(n,t));
    },
    requires:['domiterator','list']
    });
})();
e.extend(i,{
    indentOffset:40,
    indentUnit:'px',
    indentClasses:null
});
(function(){
    var l=/(-moz-|-webkit-|start|auto)/i;
    function m(p,q){
        var r=q.block||q.blockLimit;
        if(!r||r.getName()=='body')return 2;
        var s=r.getComputedStyle('text-align').replace(l,'');
        if(!s&&this.isDefaultAlign||s==this.value)return 1;
        return 2;
    };

    function n(p){
        var q=p.editor.getCommand(this.name);
        q.state=m.call(this,p.editor,p.data.path);
        q.fire('state');
    };

    function o(p,q,r){
        var u=this;
        u.name=q;
        u.value=r;
        var s=p.config.contentsLangDirection;
        u.isDefaultAlign=r=='left'&&s=='ltr'||r=='right'&&s=='rtl';
        var t=p.config.justifyClasses;
        if(t){
            switch(r){
                case 'left':
                    u.cssClassName=t[0];
                    break;
                case 'center':
                    u.cssClassName=t[1];
                    break;
                case 'right':
                    u.cssClassName=t[2];
                    break;
                case 'justify':
                    u.cssClassName=t[3];
                    break;
            }
            u.cssClassRegex=new RegExp('(?:^|\\s+)(?:'+t.join('|')+')(?=$|\\s)');
        }
    };

o.prototype={
    exec:function(p){
        var y=this;
        var q=p.getSelection();
        if(!q)return;
        var r=q.createBookmarks(),s=q.getRanges(),t=y.cssClassName,u,v;
        for(var w=s.length-1;w>=0;w--){
            u=s[w].createIterator();
            while(v=u.getNextParagraph()){
                v.removeAttribute('align');
                if(t){
                    var x=v.$.className=e.ltrim(v.$.className.replace(y.cssClassRegex,''));
                    if(y.state==2&&!y.isDefaultAlign)v.addClass(t);
                    else if(!x)v.removeAttribute('class');
                }else if(y.state==2&&!y.isDefaultAlign)v.setStyle('text-align',y.value);else v.removeStyle('text-align');
            }
        }
        p.focus();
    p.forceNextSelectionCheck();
    q.selectBookmarks(r);
}
};

j.add('justify',{
    init:function(p){
        var q=new o(p,'justifyleft','left'),r=new o(p,'justifycenter','center'),s=new o(p,'justifyright','right'),t=new o(p,'justifyblock','justify');
        p.addCommand('justifyleft',q);
        p.addCommand('justifycenter',r);
        p.addCommand('justifyright',s);
        p.addCommand('justifyblock',t);
        p.ui.addButton('JustifyLeft',{
            label:p.lang.justify.left,
            command:'justifyleft'
        });
        p.ui.addButton('JustifyCenter',{
            label:p.lang.justify.center,
            command:'justifycenter'
        });
        p.ui.addButton('JustifyRight',{
            label:p.lang.justify.right,
            command:'justifyright'
        });
        p.ui.addButton('JustifyBlock',{
            label:p.lang.justify.block,
            command:'justifyblock'
        });
        p.on('selectionChange',e.bind(n,q));
        p.on('selectionChange',e.bind(n,s));
        p.on('selectionChange',e.bind(n,r));
        p.on('selectionChange',e.bind(n,t));
    },
    requires:['domiterator']
    });
})();
e.extend(i,{
    justifyClasses:null
});
j.add('keystrokes',{
    beforeInit:function(l){
        l.keystrokeHandler=new a.keystrokeHandler(l);
        l.specialKeys={};

},
init:function(l){
    var m=l.config.keystrokes,n=l.config.blockedKeystrokes,o=l.keystrokeHandler.keystrokes,p=l.keystrokeHandler.blockedKeystrokes;
    for(var q=0;q<m.length;q++)o[m[q][0]]=m[q][1];
    for(q=0;q<n.length;q++)p[n[q]]=1;
}
});
a.keystrokeHandler=function(l){
    var m=this;
    if(l.keystrokeHandler)return l.keystrokeHandler;
    m.keystrokes={};

    m.blockedKeystrokes={};

    m._={
        editor:l
    };

    return m;
};
(function(){
    var l,m=function(o){
        o=o.data;
        var p=o.getKeystroke(),q=this.keystrokes[p],r=this._.editor;
        l=r.fire('key',{
            keyCode:p
        })===true;
        if(!l){
            if(q){
                var s={
                    from:'keystrokeHandler'
                };

                l=r.execCommand(q,s)!==false;
            }
            if(!l){
                var t=r.specialKeys[p];
                l=t&&t(r)===true;
                if(!l)l=!!this.blockedKeystrokes[p];
            }
        }
        if(l)o.preventDefault(true);
    return!l;
},n=function(o){
    if(l){
        l=false;
        o.data.preventDefault(true);
    }
};

a.keystrokeHandler.prototype={
    attach:function(o){
        o.on('keydown',m,this);
        if(b.opera||b.gecko&&b.mac)o.on('keypress',n,this);
    }
};

})();
i.blockedKeystrokes=[1000+66,1000+73,1000+85];
i.keystrokes=[[4000+121,'toolbarFocus'],[4000+122,'elementsPathFocus'],[2000+121,'contextMenu'],[1000+2000+121,'contextMenu'],[1000+90,'undo'],[1000+89,'redo'],[1000+2000+90,'redo'],[1000+76,'link'],[1000+66,'bold'],[1000+73,'italic'],[1000+85,'underline'],[4000+109,'toolbarCollapse']];
j.add('link',{
    init:function(l){
        l.addCommand('link',new a.dialogCommand('link'));
        l.addCommand('anchor',new a.dialogCommand('anchor'));
        l.addCommand('unlink',new a.unlinkCommand());
        l.ui.addButton('Link',{
            label:l.lang.link.toolbar,
            command:'link'
        });
        l.ui.addButton('Unlink',{
            label:l.lang.unlink,
            command:'unlink'
        });
        l.ui.addButton('Anchor',{
            label:l.lang.anchor.toolbar,
            command:'anchor'
        });
        a.dialog.add('link',this.path+'dialogs/link.js');
        a.dialog.add('anchor',this.path+'dialogs/anchor.js');
        l.addCss('img.cke_anchor{background-image: url('+a.getUrl(this.path+'images/anchor.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 18px;'+'height: 18px;'+'}\n'+'a.cke_anchor'+'{'+'background-image: url('+a.getUrl(this.path+'images/anchor.gif')+');'+'background-position: 0 center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'padding-left: 18px;'+'}');
        l.on('selectionChange',function(m){
            var n=l.getCommand('unlink'),o=m.data.path.lastElement.getAscendant('a',true);
            if(o&&o.getName()=='a'&&o.getAttribute('href'))n.setState(2);else n.setState(0);
        });
        if(l.addMenuItems)l.addMenuItems({
            anchor:{
                label:l.lang.anchor.menu,
                command:'anchor',
                group:'anchor'
            },
            link:{
                label:l.lang.link.menu,
                command:'link',
                group:'link',
                order:1
            },
            unlink:{
                label:l.lang.unlink,
                command:'unlink',
                group:'link',
                order:5
            }
        });
    if(l.contextMenu)l.contextMenu.addListener(function(m,n){
        if(!m)return null;
        var o=m.is('img')&&m.getAttribute('_cke_real_element_type')=='anchor';
        if(!o){
            if(!(m=m.getAscendant('a',true)))return null;
            o=m.getAttribute('name')&&!m.getAttribute('href');
        }
        return o?{
            anchor:2
        }:{
            link:2,
            unlink:2
        };

    });
},
afterInit:function(l){
    var m=l.dataProcessor,n=m&&m.dataFilter;
    if(n)n.addRules({
        elements:{
            a:function(o){
                var p=o.attributes;
                if(p.name&&!p.href)return l.createFakeParserElement(o,'cke_anchor','anchor');
            }
        }
    });
},
requires:['fakeobjects']
});
a.unlinkCommand=function(){};

a.unlinkCommand.prototype={
    exec:function(l){
        var m=l.getSelection(),n=m.createBookmarks(),o=m.getRanges(),p,q;
        for(var r=0;r<o.length;r++){
            p=o[r].getCommonAncestor(true);
            q=p.getAscendant('a',true);
            if(!q)continue;
            o[r].selectNodeContents(q);
        }
        m.selectRanges(o);
        l.document.$.execCommand('unlink',false,null);
        m.selectBookmarks(n);
    }
};

e.extend(i,{
    linkShowAdvancedTab:true,
    linkShowTargetTab:true
});
(function(){
    var l={
        ol:1,
        ul:1
    },m=/^[\n\r\t ]*$/;
    j.list={
        listToArray:function(t,u,v,w,x){
            if(!l[t.getName()])return[];
            if(!w)w=0;
            if(!v)v=[];
            for(var y=0,z=t.getChildCount();y<z;y++){
                var A=t.getChild(y);
                if(A.$.nodeName.toLowerCase()!='li')continue;
                var B={
                    parent:t,
                    indent:w,
                    contents:[]
                };

                if(!x){
                    B.grandparent=t.getParent();
                    if(B.grandparent&&B.grandparent.$.nodeName.toLowerCase()=='li')B.grandparent=B.grandparent.getParent();
                }else B.grandparent=x;
                if(u)h.setMarker(u,A,'listarray_index',v.length);
                v.push(B);
                for(var C=0,D=A.getChildCount();C<D;C++){
                    var E=A.getChild(C);
                    if(E.type==1&&l[E.getName()])j.list.listToArray(E,u,v,w+1,B.grandparent);else B.contents.push(E);
                }
                }
                return v;
    },
    arrayToList:function(t,u,v,w){
        if(!v)v=0;
        if(!t||t.length<v+1)return null;
        var x=t[v].parent.getDocument(),y=new d.documentFragment(x),z=null,A=v,B=Math.max(t[v].indent,0),C=null,D=w==1?'p':'div';
        for(;;){
            var E=t[A];
            if(E.indent==B){
                if(!z||t[A].parent.getName()!=z.getName()){
                    z=t[A].parent.clone(false,true);
                    y.append(z);
                }
                C=z.append(x.createElement('li'));
                for(var F=0;F<E.contents.length;F++)C.append(E.contents[F].clone(true,true));
                A++;
            }else if(E.indent==Math.max(B,0)+1){
                var G=j.list.arrayToList(t,null,A,w);
                C.append(G.listNode);
                A=G.nextIndex;
            }else if(E.indent==-1&&!v&&E.grandparent){
                C;
                if(l[E.grandparent.getName()])C=x.createElement('li');
                else if(w!=2&&E.grandparent.getName()!='td')C=x.createElement(D);else C=new d.documentFragment(x);
                for(F=0;F<E.contents.length;F++)C.append(E.contents[F].clone(true,true));
                if(C.type==11&&A!=t.length-1){
                    if(C.getLast()&&C.getLast().type==1&&C.getLast().getAttribute('type')=='_moz')C.getLast().remove();
                    C.appendBogus();
                }
                if(C.type==1&&C.getName()==D&&C.$.firstChild){
                    C.trim();
                    var H=C.getFirst();
                    if(H.type==1&&H.isBlockBoundary()){
                        var I=new d.documentFragment(x);
                        C.moveChildren(I);
                        C=I;
                    }
                }
                var J=C.$.nodeName.toLowerCase();
            if(!c&&(J=='div'||J=='p'))C.appendBogus();
            y.append(C);
            z=null;
            A++;
        }else return null;
            if(t.length<=A||Math.max(t[A].indent,0)<B)break;
        }
        if(u){
        var K=y.getFirst();
        while(K){
            if(K.type==1)h.clearMarkers(u,K);
            K=K.getNextSourceNode();
        }
    }
    return{
    listNode:y,
    nextIndex:A
};

}
};

function n(t,u){
    t.getCommand(this.name).setState(u);
};

function o(t){
    var u=t.data.path,v=u.blockLimit,w=u.elements,x;
    for(var y=0;y<w.length&&(x=w[y])&&(!x.equals(v));y++)if(l[w[y].getName()])return n.call(this,t.editor,this.type==w[y].getName()?1:2);return n.call(this,t.editor,2);
};

function p(t,u,v,w){
    var x=j.list.listToArray(u.root,v),y=[];
    for(var z=0;z<u.contents.length;z++){
        var A=u.contents[z];
        A=A.getAscendant('li',true);
        if(!A||A.getCustomData('list_item_processed'))continue;
        y.push(A);
        h.setMarker(v,A,'list_item_processed',true);
    }
    var B=u.root.getDocument().createElement(this.type);
    for(z=0;z<y.length;z++){
        var C=y[z].getCustomData('listarray_index');
        x[C].parent=B;
    }
    var D=j.list.arrayToList(x,v,null,t.config.enterMode),E,F=D.listNode.getChildCount();
    for(z=0;z<F&&(E=D.listNode.getChild(z));z++)if(E.getName()==this.type)w.push(E);D.listNode.replace(u.root);
};

function q(t,u,v){
    var w=u.contents,x=u.root.getDocument(),y=[];
    if(w.length==1&&w[0].equals(u.root)){
        var z=x.createElement('div');
        w[0].moveChildren&&w[0].moveChildren(z);
        w[0].append(z);
        w[0]=z;
    }
    var A=u.contents[0].getParent();
    for(var B=0;B<w.length;B++)A=A.getCommonAncestor(w[B].getParent());
    for(B=0;B<w.length;B++){
        var C=w[B],D;
        while(D=C.getParent()){
            if(D.equals(A)){
                y.push(C);
                break;
            }
            C=D;
        }
    }
    if(y.length<1)return;
var E=y[y.length-1].getNext(),F=x.createElement(this.type);
v.push(F);
while(y.length){
    var G=y.shift(),H=x.createElement('li');
    G.moveChildren(H);
    G.remove();
    H.appendTo(F);
    if(!c)H.appendBogus();
}
if(E)F.insertBefore(E);else F.appendTo(A);
};

function r(t,u,v){
    var w=j.list.listToArray(u.root,v),x=[];
    for(var y=0;y<u.contents.length;y++){
        var z=u.contents[y];
        z=z.getAscendant('li',true);
        if(!z||z.getCustomData('list_item_processed'))continue;
        x.push(z);
        h.setMarker(v,z,'list_item_processed',true);
    }
    var A=null;
    for(y=0;y<x.length;y++){
        var B=x[y].getCustomData('listarray_index');
        w[B].indent=-1;
        A=B;
    }
    for(y=A+1;y<w.length;y++)if(w[y].indent>w[y-1].indent+1){
        var C=w[y-1].indent+1-w[y].indent,D=w[y].indent;
        while(w[y]&&w[y].indent>=D){
            w[y].indent+=C;
            y++;
        }
        y--;
    }
    var E=j.list.arrayToList(w,v,null,t.config.enterMode),F=E.listNode,G,H;
    function I(K){
        if((G=F[K?'getFirst':'getLast']())&&(!(G.is&&G.isBlockBoundary())&&(H=u.root[K?'getPrevious':'getNext'](d.walker.whitespaces(true)))&&(!(H.is&&H.isBlockBoundary({
            br:1
        })))))t.document.createElement('br')[K?'insertBefore':'insertAfter'](G);
    };

    I(true);
    I();
    var J=u.root.getParent();
    F.replace(u.root);
};

function s(t,u){
    this.name=t;
    this.type=u;
};

s.prototype={
    exec:function(t){
        t.focus();
        var u=t.document,v=t.getSelection(),w=v&&v.getRanges();
        if(!w||w.length<1)return;
        if(this.state==2){
            var x=u.getBody();
            x.trim();
            if(!x.getFirst()){
                var y=u.createElement(t.config.enterMode==1?'p':t.config.enterMode==3?'div':'br');
                y.appendTo(x);
                w=[new d.range(u)];
                if(y.is('br')){
                    w[0].setStartBefore(y);
                    w[0].setEndAfter(y);
                }else w[0].selectNodeContents(y);
                v.selectRanges(w);
            }else{
                var z=w.length==1&&w[0],A=z&&z.getEnclosedNode();
                if(A&&A.is&&this.type==A.getName())n.call(this,t,1);
            }
        }
        var B=v.createBookmarks(true),C=[],D={};
    while(w.length>0){
        z=w.shift();
        var E=z.getBoundaryNodes(),F=E.startNode,G=E.endNode;
        if(F.type==1&&F.getName()=='td')z.setStartAt(E.startNode,1);
        if(G.type==1&&G.getName()=='td')z.setEndAt(E.endNode,2);
        var H=z.createIterator(),I;
        H.forceBrBreak=this.state==2;
        while(I=H.getNextParagraph()){
            var J=new d.elementPath(I),K=null,L=false,M=J.blockLimit,N;
            for(var O=0;O<J.elements.length&&(N=J.elements[O])&&(!N.equals(M));O++)if(l[N.getName()]){
                M.removeCustomData('list_group_object');
                var P=N.getCustomData('list_group_object');
                if(P)P.contents.push(I);
                else{
                    P={
                        root:N,
                        contents:[I]
                        };

                    C.push(P);
                    h.setMarker(D,N,'list_group_object',P);
                }
                L=true;
                break;
            }
            if(L)continue;
            var Q=M;
            if(Q.getCustomData('list_group_object'))Q.getCustomData('list_group_object').contents.push(I);
            else{
                P={
                    root:Q,
                    contents:[I]
                    };

                h.setMarker(D,Q,'list_group_object',P);
                C.push(P);
            }
        }
    }
var R=[];
while(C.length>0){
    P=C.shift();
    if(this.state==2){
        if(l[P.root.getName()])p.call(this,t,P,D,R);else q.call(this,t,P,R);
    }else if(this.state==1&&l[P.root.getName()])r.call(this,t,P,D);
}
for(O=0;O<R.length;O++){
    K=R[O];
    var S,T=this;
    (S=function(U){
        var V=K[U?'getPrevious':'getNext'](d.walker.whitespaces(true));
        if(V&&V.getName&&V.getName()==T.type){
            V.remove();
            V.moveChildren(K,U?true:false);
        }
    })();
    S(true);
}
h.clearAllMarkers(D);
v.selectBookmarks(B);
t.focus();
}
};

j.add('list',{
    init:function(t){
        var u=new s('numberedlist','ol'),v=new s('bulletedlist','ul');
        t.addCommand('numberedlist',u);
        t.addCommand('bulletedlist',v);
        t.ui.addButton('NumberedList',{
            label:t.lang.numberedlist,
            command:'numberedlist'
        });
        t.ui.addButton('BulletedList',{
            label:t.lang.bulletedlist,
            command:'bulletedlist'
        });
        t.on('selectionChange',e.bind(o,u));
        t.on('selectionChange',e.bind(o,v));
    },
    requires:['domiterator']
    });
})();
(function(){
    function l(q){
        if(!q||q.type!=1||q.getName()!='form')return[];
        var r=[],s=['style','className'];
        for(var t=0;t<s.length;t++){
            var u=s[t],v=q.$.elements.namedItem(u);
            if(v){
                var w=new h(v);
                r.push([w,w.nextSibling]);
                w.remove();
            }
        }
        return r;
};

function m(q,r){
    if(!q||q.type!=1||q.getName()!='form')return;
    if(r.length>0)for(var s=r.length-1;s>=0;s--){
        var t=r[s][0],u=r[s][1];
        if(u)t.insertBefore(u);else t.appendTo(q);
    }
    };

function n(q,r){
    var s=l(q),t={},u=q.$;
    if(!r){
        t['class']=u.className||'';
        u.className='';
    }
    t.inline=u.style.cssText||'';
    if(!r)u.style.cssText='position: static; overflow: visible';
    m(s);
    return t;
};

function o(q,r){
    var s=l(q),t=q.$;
    if('class' in r)t.className=r['class'];
    if('inline' in r)t.style.cssText=r.inline;
    m(s);
};

function p(q,r){
    return function(){
        var s=q.getViewPaneSize();
        r.resize(s.width,s.height,null,true);
    };

};

j.add('maximize',{
    init:function(q){
        var r=q.lang,s=a.document,t=s.getWindow(),u,v,w,x=p(t,q),y=2;
        q.addCommand('maximize',{
            modes:{
                wysiwyg:1,
                source:1
            },
            editorFocus:false,
            exec:function(){
                var M=this;
                var z=q.container.getChild([0,0]),A=q.getThemeSpace('contents');
                if(q.mode=='wysiwyg'){
                    var B=q.getSelection();
                    u=B&&B.getRanges();
                    v=t.getScrollPosition();
                }else{
                    var C=q.textarea.$;
                    u=!c&&[C.selectionStart,C.selectionEnd];
                    v=[C.scrollLeft,C.scrollTop];
                }
                if(M.state==2){
                    t.on('resize',x);
                    w=t.getScrollPosition();
                    var D=q.container;
                    while(D=D.getParent()){
                        D.setCustomData('maximize_saved_styles',n(D));
                        D.setStyle('z-index',q.config.baseFloatZIndex-1);
                    }
                    A.setCustomData('maximize_saved_styles',n(A,true));
                    z.setCustomData('maximize_saved_styles',n(z,true));
                    if(c)s.$.documentElement.style.overflow=s.getBody().$.style.overflow='hidden';else s.getBody().setStyles({
                        overflow:'hidden',
                        width:'0px',
                        height:'0px'
                    });
                    t.$.scrollTo(0,0);
                    var E=t.getViewPaneSize();
                    z.setStyle('position','absolute');
                    z.$.offsetLeft;
                    z.setStyles({
                        'z-index':q.config.baseFloatZIndex-1,
                        left:'0px',
                        top:'0px'
                    });
                    q.resize(E.width,E.height,null,true);
                    var F=z.getDocumentPosition();
                    z.setStyles({
                        left:-1*F.x+'px',
                        top:-1*F.y+'px'
                        });
                    z.addClass('cke_maximized');
                }else if(M.state==1){
                    t.removeListener('resize',x);
                    var G=[A,z];
                    for(var H=0;H<G.length;H++){
                        o(G[H],G[H].getCustomData('maximize_saved_styles'));
                        G[H].removeCustomData('maximize_saved_styles');
                    }
                    D=q.container;
                    while(D=D.getParent()){
                        o(D,D.getCustomData('maximize_saved_styles'));
                        D.removeCustomData('maximize_saved_styles');
                    }
                    t.$.scrollTo(w.x,w.y);
                    z.removeClass('cke_maximized');
                    q.fire('resize');
                }
                M.toggleState();
                var I=M.uiItems[0],J=M.state==2?r.maximize:r.minimize,K=q.element.getDocument().getById(I._.id);
                K.getChild(1).setHtml(J);
                K.setAttribute('title',J);
                K.setAttribute('href','javascript:void("'+J+'");');
                if(q.mode=='wysiwyg'){
                    if(u){
                        q.getSelection().selectRanges(u);
                        var L=q.getSelection().getStartElement();
                        L&&L.scrollIntoView(true);
                    }else t.$.scrollTo(v.x,v.y);
                }else{
                    if(u){
                        C.selectionStart=u[0];
                        C.selectionEnd=u[1];
                    }
                    C.scrollLeft=v[0];
                    C.scrollTop=v[1];
                }
                u=v=null;
                y=M.state;
            },
            canUndo:false
        });
        q.ui.addButton('Maximize',{
            label:r.maximize,
            command:'maximize'
        });
        q.on('mode',function(){
            q.getCommand('maximize').setState(y);
        },null,null,100);
    }
});
})();
j.add('newpage',{
    init:function(l){
        l.addCommand('newpage',{
            modes:{
                wysiwyg:1,
                source:1
            },
            exec:function(m){
                var n=this;
                m.setData(m.config.newpage_html,function(){
                    m.fire('afterCommandExec',{
                        name:n.name,
                        command:n
                    });
                });
                m.focus();
            },
            async:true
        });
        l.ui.addButton('NewPage',{
            label:l.lang.newPage,
            command:'newpage'
        });
    }
});
i.newpage_html='';
j.add('pagebreak',{
    init:function(l){
        l.addCommand('pagebreak',j.pagebreakCmd);
        l.ui.addButton('PageBreak',{
            label:l.lang.pagebreak,
            command:'pagebreak'
        });
        l.addCss('img.cke_pagebreak{background-image: url('+a.getUrl(this.path+'images/pagebreak.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'clear: both;'+'display: block;'+'float: none;'+'width: 100%;'+'border-top: #999999 1px dotted;'+'border-bottom: #999999 1px dotted;'+'height: 5px;'+'}');
    },
    afterInit:function(l){
        var m=l.dataProcessor,n=m&&m.dataFilter;
        if(n)n.addRules({
            elements:{
                div:function(o){
                    var p=o.attributes.style,q=p&&o.children.length==1&&o.children[0],r=q&&q.name=='span'&&q.attributes.style;
                    if(r&&/page-break-after\s*:\s*always/i.test(p)&&/display\s*:\s*none/i.test(r))return l.createFakeParserElement(o,'cke_pagebreak','div');
                }
            }
        });
},
requires:['fakeobjects']
});
j.pagebreakCmd={
    exec:function(l){
        var m=h.createFromHtml('<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>');
        m=l.createFakeElement(m,'cke_pagebreak','div');
        var n=l.getSelection().getRanges();
        for(var o,p=0;p<n.length;p++){
            o=n[p];
            if(p>0)m=m.clone(true);
            o.splitBlock('p');
            o.insertNode(m);
        }
        }
    };

j.add('pastefromword',{
    init:function(l){
        l.addCommand('pastefromword',new a.dialogCommand('pastefromword'));
        l.ui.addButton('PasteFromWord',{
            label:l.lang.pastefromword.toolbar,
            command:'pastefromword'
        });
        a.dialog.add('pastefromword',this.path+'dialogs/pastefromword.js');
    }
});
i.pasteFromWordIgnoreFontFace=true;
i.pasteFromWordRemoveStyle=false;
i.pasteFromWordKeepsStructure=false;
(function(){
    var l={
        exec:function(n){
            if(a.getClipboardData()===false||!window.clipboardData){
                n.openDialog('pastetext');
                return;
            }
            n.insertText(window.clipboardData.getData('Text'));
        }
    };

j.add('pastetext',{
    init:function(n){
        var o='pastetext',p=n.addCommand(o,l);
        n.ui.addButton('PasteText',{
            label:n.lang.pasteText.button,
            command:o
        });
        a.dialog.add(o,a.getUrl(this.path+'dialogs/pastetext.js'));
        if(n.config.forcePasteAsPlainText)n.on('beforePaste',function(q){
            if(n.mode=='wysiwyg'){
                setTimeout(function(){
                    p.exec();
                },0);
                q.cancel();
            }
        },null,null,20);
},
requires:['clipboard']
});
var m;
a.getClipboardData=function(){
    if(!c)return false;
    var n=a.document,o=n.getBody();
    if(!m){
        m=n.createElement('div',{
            attributes:{
                id:'cke_hiddenDiv'
            },
            styles:{
                position:'absolute',
                visibility:'hidden',
                overflow:'hidden',
                width:'1px',
                height:'1px'
            }
        });
    m.setHtml('');
    m.appendTo(o);
}
var p=false,q=function(){
    p=true;
};

o.on('paste',q);
var r=o.$.createTextRange();
r.moveToElementText(m.$);
r.execCommand('Paste');
var s=m.getHtml();
m.setHtml('');
o.removeListener('paste',q);
return p&&s;
};

})();
a.editor.prototype.insertText=function(l){
    l=e.htmlEncode(l);
    l=l.replace(/(?:\r\n)|\n|\r/g,'<br>');
    this.insertHtml(l);
};

i.forcePasteAsPlainText=false;
j.add('popup');
e.extend(a.editor.prototype,{
    popup:function(l,m,n){
        m=m||'80%';
        n=n||'70%';
        if(typeof m=='string'&&m.length>1&&m.substr(m.length-1,1)=='%')m=parseInt(window.screen.width*parseInt(m,10)/100,10);
        if(typeof n=='string'&&n.length>1&&n.substr(n.length-1,1)=='%')n=parseInt(window.screen.height*parseInt(n,10)/100,10);
        if(m<640)m=640;
        if(n<420)n=420;
        var o=parseInt((window.screen.height-n)/(2),10),p=parseInt((window.screen.width-m)/(2),10),q='location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,width='+m+',height='+n+',top='+o+',left='+p,r=window.open('',null,q,true);
        if(!r)return false;
        try{
            r.moveTo(p,o);
            r.resizeTo(m,n);
            r.focus();
            r.location.href=l;
        }catch(s){
            r=window.open(l,null,q,true);
        }
        return true;
    }
});
(function(){
    var l={
        modes:{
            wysiwyg:1,
            source:1
        },
        canUndo:false,
        exec:function(n){
            var o,p=b.isCustomDomain();
            if(n.config.fullPage)o=n.getData();
            else{
                var q='<body ',r=a.document.getBody(),s=n.config.baseHref.length>0?'<base href="'+n.config.baseHref+'" _cktemp="true"></base>':'';
                if(r.getAttribute('id'))q+='id="'+r.getAttribute('id')+'" ';
                if(r.getAttribute('class'))q+='class="'+r.getAttribute('class')+'" ';
                q+='>';
                o=n.config.docType+'<html dir="'+n.config.contentsLangDirection+'">'+'<head>'+s+'<title>'+n.lang.preview+'</title>'+'<link type="text/css" rel="stylesheet" href="'+[].concat(n.config.contentsCss).join('"><link type="text/css" rel="stylesheet" href="')+'">'+'</head>'+q+n.getData()+'</body></html>';
            }
            var t=640,u=420,v=80;
            try{
                var w=window.screen;
                t=Math.round(w.width*0.8);
                u=Math.round(w.height*0.7);
                v=Math.round(w.width*0.1);
            }catch(z){}
            var x='';
            if(p){
                window._cke_htmlToLoad=o;
                x='javascript:void( (function(){document.open();document.domain="'+document.domain+'";'+'document.write( window.opener._cke_htmlToLoad );'+'document.close();'+'window.opener._cke_htmlToLoad = null;'+'})() )';
            }
            var y=window.open(x,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+t+',height='+u+',left='+v);
            if(!p){
                y.document.write(o);
                y.document.close();
            }
        }
    },m='preview';
j.add(m,{
    init:function(n){
        n.addCommand(m,l);
        n.ui.addButton('Preview',{
            label:n.lang.preview,
            command:m
        });
    }
});
})();
j.add('print',{
    init:function(l){
        var m='print',n=l.addCommand(m,j.print);
        l.ui.addButton('Print',{
            label:l.lang.print,
            command:m
        });
    }
});
j.print={
    exec:function(l){
        if(b.opera)return;
        else if(b.gecko)l.window.$.print();else l.document.$.execCommand('Print');
    },
    canUndo:false,
    modes:{
        wysiwyg:!b.opera
        }
    };

j.add('removeformat',{
    requires:['selection'],
    init:function(l){
        l.addCommand('removeFormat',j.removeformat.commands.removeformat);
        l.ui.addButton('RemoveFormat',{
            label:l.lang.removeFormat,
            command:'removeFormat'
        });
    }
});
j.removeformat={
    commands:{
        removeformat:{
            exec:function(l){
                var m=l._.removeFormatRegex||(l._.removeFormatRegex=new RegExp('^(?:'+l.config.removeFormatTags.replace(/,/g,'|')+')$','i')),n=l._.removeAttributes||(l._.removeAttributes=l.config.removeFormatAttributes.split(',')),o=l.getSelection().getRanges();
                for(var p=0,q;q=o[p];p++){
                    if(q.collapsed)continue;
                    q.enlarge(1);
                    var r=q.createBookmark(),s=r.startNode,t=r.endNode,u=function(x){
                        var y=new d.elementPath(x),z=y.elements;
                        for(var A=1,B;B=z[A];A++){
                            if(B.equals(y.block)||B.equals(y.blockLimit))break;
                            if(m.test(B.getName()))x.breakParent(B);
                        }
                        };

                u(s);
                    u(t);
                    var v=s.getNextSourceNode(true,1);
                    while(v){
                    if(v.equals(t))break;
                    var w=v.getNextSourceNode(false,1);
                    if(v.getName()!='img'||!v.getAttribute('_cke_protected_html'))if(m.test(v.getName()))v.remove(true);else v.removeAttributes(n);
                    v=w;
                }
                q.moveToBookmark(r);
                }
                l.getSelection().selectRanges(o);
        }
    }
}
};

i.removeFormatTags='b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var';
i.removeFormatAttributes='class,style,lang,width,height,align,hspace,valign';
j.add('resize',{
    init:function(l){
        var m=l.config;
        if(m.resize_enabled){
            var n=null,o,p;
            function q(t){
                var u=t.data.$.screenX-o.x,v=t.data.$.screenY-o.y,w=p.width+u*(l.lang.dir=='rtl'?-1:1),x=p.height+v;
                l.resize(Math.max(m.resize_minWidth,Math.min(w,m.resize_maxWidth)),Math.max(m.resize_minHeight,Math.min(x,m.resize_maxHeight)));
            };

            function r(t){
                a.document.removeListener('mousemove',q);
                a.document.removeListener('mouseup',r);
                if(l.document){
                    l.document.removeListener('mousemove',q);
                    l.document.removeListener('mouseup',r);
                }
            };

        var s=e.addFunction(function(t){
            if(!n)n=l.getResizable();
            p={
                width:n.$.offsetWidth||0,
                height:n.$.offsetHeight||0
                };

            o={
                x:t.screenX,
                y:t.screenY
                };

            a.document.on('mousemove',q);
            a.document.on('mouseup',r);
            if(l.document){
                l.document.on('mousemove',q);
                l.document.on('mouseup',r);
            }
        });
    l.on('themeSpace',function(t){
        if(t.data.space=='bottom')t.data.html+='<div class="cke_resizer" title="'+e.htmlEncode(l.lang.resize)+'"'+' onmousedown="CKEDITOR.tools.callFunction('+s+', event)"'+'></div>';
    },l,null,100);
}
}
});
i.resize_minWidth=750;
i.resize_minHeight=250;
i.resize_maxWidth=3000;
i.resize_maxHeight=3000;
i.resize_enabled=true;
(function(){
    var l={
        modes:{
            wysiwyg:1,
            source:1
        },
        exec:function(n){
            var o=n.element.$.form;
            if(o)try{
                o.submit();
            }catch(p){
                if(o.submit.click)o.submit.click();
            }
            }
        },m='save';
j.add(m,{
    init:function(n){
        var o=n.addCommand(m,l);
        o.modes={
            wysiwyg:!!n.element.$.form
            };

        n.ui.addButton('Save',{
            label:n.lang.save,
            command:m
        });
    }
});
})();
(function(){
    var l='scaytcheck',m='',n=function(){
        var r=this,s=function(){
            var v={};

            v.srcNodeRef=r.document.getWindow().$.frameElement;
            v.assocApp='CKEDITOR.'+a.version+'@'+a.revision;
            v.customerid=r.config.scayt_customerid||'1:11111111111111111111111111111111111111';
            v.customDictionaryName=r.config.scayt_customDictionaryName;
            v.userDictionaryName=r.config.scayt_userDictionaryName;
            v.defLang=r.scayt_defLang;
            if(a._scaytParams)for(var w in a._scaytParams)v[w]=a._scaytParams[w];var x=new window.scayt(v),y=o.instances[r.name];
            if(y){
                x.sLang=y.sLang;
                x.option(y.option());
                x.paused=y.paused;
            }
            o.instances[r.name]=x;
            try{
                x.setDisabled(x.paused===false);
            }catch(z){}
            r.fire('showScaytState');
        };

        r.on('contentDom',s);
        r.on('contentDomUnload',function(){
            var v=a.document.getElementsByTag('script'),w=/^dojoIoScript(\d+)$/i,x=/^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;
            for(var y=0;y<v.count();y++){
                var z=v.getItem(y),A=z.getId(),B=z.getAttribute('src');
                if(A&&B&&A.match(w)&&B.match(x))z.remove();
            }
            });
    r.on('beforeCommandExec',function(v){
        if((v.data.name=='source'||v.data.name=='newpage')&&(r.mode=='wysiwyg')){
            var w=o.getScayt(r);
            if(w){
                w.paused=!w.disabled;
                w.destroy();
                delete o.instances[r.name];
            }
        }
    });
r.on('afterSetData',function(){
    if(o.isScaytEnabled(r))o.getScayt(r).refresh();
});
r.on('insertElement',function(){
    var v=o.getScayt(r);
    if(o.isScaytEnabled(r)){
        if(c)r.getSelection().unlock(true);
        try{
            v.refresh();
        }catch(w){}
    }
},this,null,50);
r.on('scaytDialog',function(v){
    v.data.djConfig=window.djConfig;
    v.data.scayt_control=o.getScayt(r);
    v.data.tab=m;
    v.data.scayt=window.scayt;
});
var t=r.dataProcessor,u=t&&t.htmlFilter;
if(u)u.addRules({
    elements:{
        span:function(v){
            if(v.attributes.scayt_word&&v.attributes.scaytid){
                delete v.name;
                return v;
            }
        }
    }
});
if(r.document)s();
};

j.scayt={
    engineLoaded:false,
    instances:{},
    getScayt:function(r){
        return this.instances[r.name];
    },
    isScaytReady:function(r){
        return this.engineLoaded===true&&'undefined'!==typeof window.scayt&&this.getScayt(r);
    },
    isScaytEnabled:function(r){
        var s=this.getScayt(r);
        return s?s.disabled===false:false;
    },
    loadEngine:function(r){
        if(this.engineLoaded===true)return n.apply(r);
        else if(this.engineLoaded==-1)return a.on('scaytReady',function(){
            n.apply(r);
        });
        a.on('scaytReady',n,r);
        a.on('scaytReady',function(){
            this.engineLoaded=true;
        },this,null,0);
        this.engineLoaded=-1;
        var s=document.location.protocol;
        s=s.search(/https?:/)!=-1?s:'http:';
        var t='svc.spellchecker.net/spellcheck/lf/scayt/scayt1.js',u=r.config.scayt_srcUrl||s+'//'+t,v=o.parseUrl(u).path+'/';
        a._djScaytConfig={
            baseUrl:v,
            addOnLoad:[function(){
                a.fireOnce('scaytReady');
            }],
            isDebug:false
        };

        a.document.getHead().append(a.document.createElement('script',{
            attributes:{
                type:'text/javascript',
                src:u
            }
        }));
    return null;
},
parseUrl:function(r){
    var s;
    if(r.match&&(s=r.match(/(.*)[\/\\](.*?\.\w+)$/)))return{
        path:s[1],
        file:s[2]
        };else return r;
}
};

var o=j.scayt,p=function(r,s,t,u,v,w,x){
    r.addCommand(u,v);
    r.addMenuItem(u,{
        label:t,
        command:u,
        group:w,
        order:x
    });
},q={
    preserveState:true,
    editorFocus:false,
    exec:function(r){
        if(o.isScaytReady(r)){
            var s=o.isScaytEnabled(r);
            this.setState(s?2:1);
            var t=o.getScayt(r);
            t.setDisabled(s);
        }else if(!r.config.scayt_autoStartup&&o.engineLoaded>=0){
            this.setState(0);
            r.on('showScaytState',function(){
                this.removeListener();
                this.setState(o.isScaytEnabled(r)?1:2);
            },this);
            o.loadEngine(r);
        }
    }
};

j.add('scayt',{
    requires:['menubutton'],
    beforeInit:function(r){
        r.config.menu_groups='scayt_suggest,scayt_moresuggest,scayt_control,'+r.config.menu_groups;
    },
    init:function(r){
        var s={},t={},u=r.addCommand(l,q);
        a.dialog.add(l,a.getUrl(this.path+'dialogs/options.js'));
        var v='scaytButton';
        r.addMenuGroup(v);
        r.addMenuItems({
            scaytToggle:{
                label:r.lang.scayt.enable,
                command:l,
                group:v
            },
            scaytOptions:{
                label:r.lang.scayt.options,
                group:v,
                onClick:function(){
                    m='options';
                    r.openDialog(l);
                }
            },
        scaytLangs:{
            label:r.lang.scayt.langs,
            group:v,
            onClick:function(){
                m='langs';
                r.openDialog(l);
            }
        },
        scaytAbout:{
            label:r.lang.scayt.about,
            group:v,
            onClick:function(){
                m='about';
                r.openDialog(l);
            }
        }
    });
r.ui.add('Scayt',5,{
    label:r.lang.scayt.title,
    title:r.lang.scayt.title,
    className:'cke_button_scayt',
    onRender:function(){
        u.on('state',function(){
            this.setState(u.state);
        },this);
    },
    onMenu:function(){
        var x=o.isScaytEnabled(r);
        r.getMenuItem('scaytToggle').label=r.lang.scayt[x?'disable':'enable'];
        return{
            scaytToggle:2,
            scaytOptions:x?2:0,
            scaytLangs:x?2:0,
            scaytAbout:x?2:0
            };

}
});
if(r.contextMenu&&r.addMenuItems)r.contextMenu.addListener(function(x){
    if(!(o.isScaytEnabled(r)&&x))return null;
    var y=o.getScayt(r),z=y.getWord(x.$);
    if(!z)return null;
    var A=y.getLang(),B={},C=window.scayt.getSuggestion(z,A);
    if(!C||!C.length)return null;
    for(i in s){
        delete r._.menuItems[i];
        delete r._.commands[i];
    }
    for(i in t){
        delete r._.menuItems[i];
        delete r._.commands[i];
    }
    s={};

    t={};

    var D=false;
    for(var E=0,F=C.length;E<F;E+=1){
        var G='scayt_suggestion_'+C[E].replace(' ','_'),H=(function(L,M){
            return{
                exec:function(){
                    y.replace(L,M);
                }
            };

    })(x.$,C[E]);
    if(E<r.config.scayt_maxSuggestions){
        p(r,'button_'+G,C[E],G,H,'scayt_suggest',E+1);
        B[G]=2;
        t[G]=2;
    }else{
        p(r,'button_'+G,C[E],G,H,'scayt_moresuggest',E+1);
        s[G]=2;
        D=true;
    }
}
if(D)r.addMenuItem('scayt_moresuggest',{
    label:r.lang.scayt.moreSuggestions,
    group:'scayt_moresuggest',
    order:10,
    getItems:function(){
        return s;
    }
});
var I={
    exec:function(){
        y.ignore(x.$);
    }
},J={
    exec:function(){
        y.ignoreAll(x.$);
    }
},K={
    exec:function(){
        window.scayt.addWordToUserDictionary(x.$);
    }
};

p(r,'ignore',r.lang.scayt.ignore,'scayt_ignore',I,'scayt_control',1);
p(r,'ignore_all',r.lang.scayt.ignoreAll,'scayt_ignore_all',J,'scayt_control',2);
p(r,'add_word',r.lang.scayt.addWord,'scayt_add_word',K,'scayt_control',3);
t.scayt_moresuggest=2;
t.scayt_ignore=2;
t.scayt_ignore_all=2;
t.scayt_add_word=2;
if(y.fireOnContextMenu)y.fireOnContextMenu(r);
return t;
});
if(r.config.scayt_autoStartup){
    var w=function(){
        r.removeListener('showScaytState',w);
        u.setState(o.isScaytEnabled(r)?1:2);
    };

    r.on('showScaytState',w);
    o.loadEngine(r);
}
}
});
})();
i.scayt_maxSuggestions=5;
i.scayt_autoStartup=false;
j.add('smiley',{
    requires:['dialog'],
    init:function(l){
        l.addCommand('smiley',new a.dialogCommand('smiley'));
        l.ui.addButton('Smiley',{
            label:l.lang.smiley.toolbar,
            command:'smiley'
        });
        a.dialog.add('smiley',this.path+'dialogs/smiley.js');
    }
});
i.smiley_path=a.basePath+'plugins/smiley/images/';
i.smiley_images=['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'];
i.smiley_descriptions=[':)',':(',';)',':D',':/',':P','','','','','','','',';(','','','','','',':kiss',''];
(function(){
    var l='.%2 p,.%2 div,.%2 pre,.%2 address,.%2 blockquote,.%2 h1,.%2 h2,.%2 h3,.%2 h4,.%2 h5,.%2 h6{background-repeat: no-repeat;border: 1px dotted gray;padding-top: 8px;padding-left: 8px;}.%2 p{%1p.png);}.%2 div{%1div.png);}.%2 pre{%1pre.png);}.%2 address{%1address.png);}.%2 blockquote{%1blockquote.png);}.%2 h1{%1h1.png);}.%2 h2{%1h2.png);}.%2 h3{%1h3.png);}.%2 h4{%1h4.png);}.%2 h5{%1h5.png);}.%2 h6{%1h6.png);}',m=/%1/g,n=/%2/g,o={
        preserveState:true,
        editorFocus:false,
        exec:function(p){
            this.toggleState();
            this.refresh(p);
        },
        refresh:function(p){
            var q=this.state==1?'addClass':'removeClass';
            p.document.getBody()[q]('cke_show_blocks');
        }
    };

j.add('showblocks',{
    requires:['wysiwygarea'],
    init:function(p){
        var q=p.addCommand('showblocks',o);
        q.canUndo=false;
        if(p.config.startupOutlineBlocks)q.setState(1);
        p.addCss(l.replace(m,'background-image: url('+a.getUrl(this.path)+'images/block_').replace(n,'cke_show_blocks '));
        p.ui.addButton('ShowBlocks',{
            label:p.lang.showBlocks,
            command:'showblocks'
        });
        p.on('mode',function(){
            if(q.state!=0)q.refresh(p);
        });
        p.on('contentDom',function(){
            if(q.state!=0)q.refresh(p);
        });
    }
});
})();
i.startupOutlineBlocks=false;
j.add('sourcearea',{
    requires:['editingblock'],
    init:function(l){
        var m=j.sourcearea;
        l.on('editingBlockReady',function(){
            var n,o;
            l.addMode('source',{
                load:function(p,q){
                    if(c&&b.version<8)p.setStyle('position','relative');
                    l.textarea=n=new h('textarea');
                    n.setAttributes({
                        dir:'ltr',
                        tabIndex:-1
                    });
                    n.addClass('cke_source');
                    n.addClass('cke_enable_context_menu');
                    var r={
                        width:b.ie7Compat?'99%':'100%',
                        height:'100%',
                        resize:'none',
                        outline:'none',
                        'text-align':'left'
                    };

                    if(c){
                        if(!b.ie8Compat){
                            o=function(){
                                n.hide();
                                n.setStyle('height',p.$.clientHeight+'px');
                                n.show();
                            };

                            l.on('resize',o);
                            l.on('afterCommandExec',function(t){
                                if(t.data.name=='toolbarCollapse')o();
                            });
                            r.height=p.$.clientHeight+'px';
                        }
                    }else n.on('mousedown',function(t){
                    t.data.stopPropagation();
                });
                p.setHtml('');
                p.append(n);
                n.setStyles(r);
                n.on('blur',function(){
                    l.focusManager.blur();
                });
                n.on('focus',function(){
                    l.focusManager.focus();
                });
                l.mayBeDirty=true;
                this.loadData(q);
                var s=l.keystrokeHandler;
                if(s)s.attach(n);
                setTimeout(function(){
                    l.mode='source';
                    l.fire('mode');
                },b.gecko||b.webkit?100:0);
            },
            loadData:function(p){
                n.setValue(p);
                l.fire('dataReady');
            },
            getData:function(){
                return n.getValue();
            },
            getSnapshotData:function(){
                return n.getValue();
            },
            unload:function(p){
                l.textarea=n=null;
                if(o)l.removeListener('resize',o);
                if(c&&b.version<8)p.removeStyle('position');
            },
            focus:function(){
                n.focus();
            }
            });
    });
l.addCommand('source',m.commands.source);
    if(l.ui.addButton)l.ui.addButton('Source',{
    label:l.lang.source,
    command:'source'
});
l.on('mode',function(){
    l.getCommand('source').setState(l.mode=='source'?1:2);
});
}
});
j.sourcearea={
    commands:{
        source:{
            modes:{
                wysiwyg:1,
                source:1
            },
            exec:function(l){
                if(l.mode=='wysiwyg')l.fire('saveSnapshot');
                l.getCommand('source').setState(0);
                l.setMode(l.mode=='source'?'wysiwyg':'source');
            },
            canUndo:false
        }
    }
};
(function(){
    j.add('stylescombo',{
        requires:['richcombo','styles'],
        init:function(o){
            var p=o.config,q=o.lang.stylesCombo,r=this.path,s;
            o.ui.addRichCombo('Styles',{
                label:q.label,
                title:q.panelTitle,
                voiceLabel:q.voiceLabel,
                className:'cke_styles',
                multiSelect:true,
                panel:{
                    css:[a.getUrl(o.skinPath+'editor.css')].concat(p.contentsCss),
                    voiceLabel:q.panelVoiceLabel
                    },
                init:function(){
                    var t=this,u=p.stylesCombo_stylesSet.split(':'),v=u[1]?u.slice(1).join(':'):a.getUrl(r+'styles/'+u[0]+'.js');
                    u=u[0];
                    a.loadStylesSet(u,v,function(w){
                        var x,y,z=[];
                        s={};

                        for(var A=0;A<w.length;A++){
                            var B=w[A];
                            y=B.name;
                            x=s[y]=new a.style(B);
                            x._name=y;
                            z.push(x);
                        }
                        z.sort(n);
                        var C;
                        for(A=0;A<z.length;A++){
                            x=z[A];
                            y=x._name;
                            var D=x.type;
                            if(D!=C){
                                t.startGroup(q['panelTitle'+String(D)]);
                                C=D;
                            }
                            t.add(y,x.type==3?y:m(x._.definition),y);
                        }
                        t.commit();
                        t.onOpen();
                    });
                },
                onClick:function(t){
                    o.focus();
                    o.fire('saveSnapshot');
                    var u=s[t],v=o.getSelection();
                    if(u.type==3){
                        var w=v.getSelectedElement();
                        if(w)u.applyToObject(w);
                        return;
                    }
                    var x=new d.elementPath(v.getStartElement());
                    if(u.type==2&&u.checkActive(x))u.remove(o.document);else u.apply(o.document);
                    o.fire('saveSnapshot');
                },
                onRender:function(){
                    o.on('selectionChange',function(t){
                        var u=this.getValue(),v=t.data.path,w=v.elements;
                        for(var x=0,y;x<w.length;x++){
                            y=w[x];
                            for(var z in s)if(s[z].checkElementRemovable(y,true)){
                                if(z!=u)this.setValue(z);
                                return;
                            }
                            }
                            this.setValue('');
                    },this);
            },
            onOpen:function(){
                var B=this;
                if(c)o.focus();
                var t=o.getSelection(),u=t.getSelectedElement(),v=u&&u.getName(),w=new d.elementPath(u||t.getStartElement()),x=[0,0,0,0];
                B.showAll();
                B.unmarkAll();
                for(var y in s){
                    var z=s[y],A=z.type;
                    if(A==3){
                        if(u&&z.element==v){
                            if(z.checkElementRemovable(u,true))B.mark(y);
                            x[A]++;
                        }else B.hideItem(y);
                    }else{
                        if(z.checkActive(w))B.mark(y);
                        x[A]++;
                    }
                }
                if(!x[1])B.hideGroup(q['panelTitle'+String(1)]);
                if(!x[2])B.hideGroup(q['panelTitle'+String(2)]);
                if(!x[3])B.hideGroup(q['panelTitle'+String(3)]);
            }
        });
}
});
var l={};

a.addStylesSet=function(o,p){
    l[o]=p;
};

a.loadStylesSet=function(o,p,q){
    var r=l[o];
    if(r){
        q(r);
        return;
    }
    a.scriptLoader.load(p,function(){
        q(l[o]);
    });
};

function m(o){
    var p=[],q=o.element;
    if(q=='bdo')q='span';
    p=['<',q];
    var r=o.attributes;
    if(r)for(var s in r)p.push(' ',s,'="',r[s],'"');var t=a.style.getStyleText(o);
    if(t)p.push(' style="',t,'"');
    p.push('>',o.name,'</',q,'>');
    return p.join('');
};

function n(o,p){
    var q=o.type,r=p.type;
    return q==r?0:q==3?-1:r==3?1:r==1?1:-1;
};

})();
i.stylesCombo_stylesSet='default';
j.add('table',{
    init:function(l){
        var m=j.table,n=l.lang.table;
        l.addCommand('table',new a.dialogCommand('table'));
        l.addCommand('tableProperties',new a.dialogCommand('tableProperties'));
        l.ui.addButton('Table',{
            label:n.toolbar,
            command:'table'
        });
        a.dialog.add('table',this.path+'dialogs/table.js');
        a.dialog.add('tableProperties',this.path+'dialogs/table.js');
        if(l.addMenuItems)l.addMenuItems({
            table:{
                label:n.menu,
                command:'tableProperties',
                group:'table',
                order:5
            },
            tabledelete:{
                label:n.deleteTable,
                command:'tableDelete',
                group:'table',
                order:1
            }
        });
    if(l.contextMenu)l.contextMenu.addListener(function(o,p){
        if(!o)return null;
        var q=o.is('table')||o.hasAscendant('table');
        if(q)return{
            tabledelete:2,
            table:2
        };

        return null;
    });
}
});
(function(){
    function l(y,z){
        if(c)y.removeAttribute(z);else delete y[z];
    };

    var m=/^(?:td|th)$/;
    function n(y){
        var z=y.createBookmarks(),A=y.getRanges(),B=[],C={};

        function D(L){
            if(B.length>0)return;
            if(L.type==1&&m.test(L.getName())&&!L.getCustomData('selected_cell')){
                h.setMarker(C,L,'selected_cell',true);
                B.push(L);
            }
        };

    for(var E=0;E<A.length;E++){
        var F=A[E];
        if(F.collapsed){
            var G=F.getCommonAncestor(),H=G.getAscendant('td',true)||G.getAscendant('th',true);
            if(H)B.push(H);
        }else{
            var I=new d.walker(F),J;
            I.guard=D;
            while(J=I.next()){
                var K=J.getParent();
                if(K&&m.test(K.getName())&&!K.getCustomData('selected_cell')){
                    h.setMarker(C,K,'selected_cell',true);
                    B.push(K);
                }
            }
        }
    }
h.clearAllMarkers(C);
y.selectBookmarks(z);
return B;
};

function o(y){
    var z=new h(y),A=(z.getName()=='table'?y:z.getAscendant('table')).$,B=A.rows,C=-1,D=[];
    for(var E=0;E<B.length;E++){
        C++;
        if(!D[C])D[C]=[];
        var F=-1;
        for(var G=0;G<B[E].cells.length;G++){
            var H=B[E].cells[G];
            F++;
            while(D[C][F])F++;
            var I=isNaN(H.colSpan)?1:H.colSpan,J=isNaN(H.rowSpan)?1:H.rowSpan;
            for(var K=0;K<J;K++){
                if(!D[C+K])D[C+K]=[];
                for(var L=0;L<I;L++)D[C+K][F+L]=B[E].cells[G];
            }
            F+=I-1;
        }
        }
        return D;
};

function p(y,z){
    var A=c?'_cke_rowspan':'rowSpan';
    for(var B=0;B<y.length;B++)for(var C=0;C<y[B].length;C++){
        var D=y[B][C];
        if(D.parentNode)D.parentNode.removeChild(D);
        D.colSpan=D[A]=1;
    }
    var E=0;
    for(B=0;B<y.length;B++)for(C=0;C<y[B].length;C++){
        D=y[B][C];
        if(!D)continue;
        if(C>E)E=C;
        if(D._cke_colScanned)continue;
        if(y[B][C-1]==D)D.colSpan++;
        if(y[B][C+1]!=D)D._cke_colScanned=1;
    }
    for(B=0;B<=E;B++)for(C=0;C<y.length;C++){
        if(!y[C])continue;
        D=y[C][B];
        if(!D||D._cke_rowScanned)continue;
        if(y[C-1]&&y[C-1][B]==D)D[A]++;
        if(!y[C+1]||y[C+1][B]!=D)D._cke_rowScanned=1;
    }
    for(B=0;B<y.length;B++)for(C=0;C<y[B].length;C++){
        D=y[B][C];
        l(D,'_cke_colScanned');
        l(D,'_cke_rowScanned');
    }
    for(B=0;B<y.length;B++){
        var F=z.ownerDocument.createElement('tr');
        for(C=0;C<y[B].length;){
            D=y[B][C];
            if(y[B-1]&&y[B-1][C]==D){
                C+=D.colSpan;
                continue;
            }
            F.appendChild(D);
            if(A!='rowSpan'){
                D.rowSpan=D[A];
                D.removeAttribute(A);
            }
            C+=D.colSpan;
            if(D.colSpan==1)D.removeAttribute('colSpan');
            if(D.rowSpan==1)D.removeAttribute('rowSpan');
        }
        if(c)z.rows[B].replaceNode(F);
        else{
            var G=new h(z.rows[B]),H=new h(F);
            G.setHtml('');
            H.moveChildren(G);
        }
    }
    };

function q(y){
    var z=y.cells;
    for(var A=0;A<z.length;A++){
        z[A].innerHTML='';
        if(!c)new h(z[A]).appendBogus();
    }
    };

function r(y,z){
    var A=y.getStartElement().getAscendant('tr');
    if(!A)return;
    var B=A.clone(true);
    B.insertBefore(A);
    q(z?B.$:A.$);
};

function s(y){
    if(y instanceof d.selection){
        var z=n(y),A=[];
        for(var B=0;B<z.length;B++){
            var C=z[B].getParent();
            A[C.$.rowIndex]=C;
        }
        for(B=A.length;B>=0;B--)if(A[B])s(A[B]);
        }else if(y instanceof h){
        var D=y.getAscendant('table');
        if(D.$.rows.length==1)D.remove();else y.remove();
    }
};

function t(y,z){
    var A=y.getStartElement(),B=A.getAscendant('td',true)||A.getAscendant('th',true);
    if(!B)return;
    var C=B.getAscendant('table'),D=B.$.cellIndex;
    for(var E=0;E<C.$.rows.length;E++){
        var F=C.$.rows[E];
        if(F.cells.length<D+1)continue;
        B=new h(F.cells[D].cloneNode(false));
        if(!c)B.appendBogus();
        var G=new h(F.cells[D]);
        if(z)B.insertBefore(G);else B.insertAfter(G);
    }
    };

function u(y){
    if(y instanceof d.selection){
        var z=n(y);
        for(var A=z.length;A>=0;A--)if(z[A])u(z[A]);
        }else if(y instanceof h){
        var B=y.getAscendant('table'),C=y.$.cellIndex;
        for(A=B.$.rows.length-1;A>=0;A--){
            var D=new h(B.$.rows[A]);
            if(!C&&D.$.cells.length==1){
                s(D);
                continue;
            }
            if(D.$.cells[C])D.$.removeChild(D.$.cells[C]);
        }
        }
    };

function v(y,z){
    var A=y.getStartElement(),B=A.getAscendant('td',true)||A.getAscendant('th',true);
    if(!B)return;
    var C=B.clone();
    if(!c)C.appendBogus();
    if(z)C.insertBefore(B);else C.insertAfter(B);
};

function w(y){
    if(y instanceof d.selection){
        var z=n(y);
        for(var A=z.length-1;A>=0;A--)w(z[A]);
    }else if(y instanceof h)if(y.getParent().getChildCount()==1)y.getParent().remove();else y.remove();
};

var x={
    thead:1,
    tbody:1,
    tfoot:1,
    td:1,
    tr:1,
    th:1
};

j.tabletools={
    init:function(y){
        var z=y.lang.table;
        y.addCommand('cellProperties',new a.dialogCommand('cellProperties'));
        a.dialog.add('cellProperties',this.path+'dialogs/tableCell.js');
        y.addCommand('tableDelete',{
            exec:function(A){
                var B=A.getSelection(),C=B&&B.getStartElement(),D=C&&C.getAscendant('table',true);
                if(!D)return;
                B.selectElement(D);
                var E=B.getRanges()[0];
                E.collapse();
                B.selectRanges([E]);
                if(D.getParent().getChildCount()==1)D.getParent().remove();else D.remove();
            }
        });
    y.addCommand('rowDelete',{
        exec:function(A){
            var B=A.getSelection();
            s(B);
        }
    });
y.addCommand('rowInsertBefore',{
    exec:function(A){
        var B=A.getSelection();
        r(B,true);
    }
});
y.addCommand('rowInsertAfter',{
    exec:function(A){
        var B=A.getSelection();
        r(B);
    }
});
y.addCommand('columnDelete',{
    exec:function(A){
        var B=A.getSelection();
        u(B);
    }
});
y.addCommand('columnInsertBefore',{
    exec:function(A){
        var B=A.getSelection();
        t(B,true);
    }
});
y.addCommand('columnInsertAfter',{
    exec:function(A){
        var B=A.getSelection();
        t(B);
    }
});
y.addCommand('cellDelete',{
    exec:function(A){
        var B=A.getSelection();
        w(B);
    }
});
y.addCommand('cellInsertBefore',{
    exec:function(A){
        var B=A.getSelection();
        v(B,true);
    }
});
y.addCommand('cellInsertAfter',{
    exec:function(A){
        var B=A.getSelection();
        v(B);
    }
});
if(y.addMenuItems)y.addMenuItems({
    tablecell:{
        label:z.cell.menu,
        group:'tablecell',
        order:1,
        getItems:function(){
            var A=n(y.getSelection());
            return{
                tablecell_insertBefore:2,
                tablecell_insertAfter:2,
                tablecell_delete:2,
                tablecell_properties:A.length>0?2:0
                };

    }
},
tablecell_insertBefore:{
    label:z.cell.insertBefore,
    group:'tablecell',
    command:'cellInsertBefore',
    order:5
},
tablecell_insertAfter:{
    label:z.cell.insertAfter,
    group:'tablecell',
    command:'cellInsertAfter',
    order:10
},
tablecell_delete:{
    label:z.cell.deleteCell,
    group:'tablecell',
    command:'cellDelete',
    order:15
},
tablecell_properties:{
    label:z.cell.title,
    group:'tablecellproperties',
    command:'cellProperties',
    order:20
},
tablerow:{
    label:z.row.menu,
    group:'tablerow',
    order:1,
    getItems:function(){
        return{
            tablerow_insertBefore:2,
            tablerow_insertAfter:2,
            tablerow_delete:2
        };

}
},
tablerow_insertBefore:{
    label:z.row.insertBefore,
    group:'tablerow',
    command:'rowInsertBefore',
    order:5
},
tablerow_insertAfter:{
    label:z.row.insertAfter,
    group:'tablerow',
    command:'rowInsertAfter',
    order:10
},
tablerow_delete:{
    label:z.row.deleteRow,
    group:'tablerow',
    command:'rowDelete',
    order:15
},
tablecolumn:{
    label:z.column.menu,
    group:'tablecolumn',
    order:1,
    getItems:function(){
        return{
            tablecolumn_insertBefore:2,
            tablecolumn_insertAfter:2,
            tablecolumn_delete:2
        };

}
},
tablecolumn_insertBefore:{
    label:z.column.insertBefore,
    group:'tablecolumn',
    command:'columnInsertBefore',
    order:5
},
tablecolumn_insertAfter:{
    label:z.column.insertAfter,
    group:'tablecolumn',
    command:'columnInsertAfter',
    order:10
},
tablecolumn_delete:{
    label:z.column.deleteColumn,
    group:'tablecolumn',
    command:'columnDelete',
    order:15
}
});
if(y.contextMenu)y.contextMenu.addListener(function(A,B){
    if(!A)return null;
    while(A){
        if(A.getName() in x)return{
            tablecell:2,
            tablerow:2,
            tablecolumn:2
        };

        A=A.getParent();
    }
    return null;
});
},
getSelectedCells:n
};

j.add('tabletools',j.tabletools);
})();
j.add('specialchar',{
    init:function(l){
        var m='specialchar';
        a.dialog.add(m,this.path+'dialogs/specialchar.js');
        l.addCommand(m,new a.dialogCommand(m));
        l.ui.addButton('SpecialChar',{
            label:l.lang.specialChar.toolbar,
            command:m
        });
    }
});
(function(){
    var l={
        exec:function(n){
            n.container.focusNext(true);
        }
    },m={
    exec:function(n){
        n.container.focusPrevious(true);
    }
};

j.add('tab',{
    requires:['keystrokes'],
    init:function(n){
        var o=n.keystrokeHandler.keystrokes;
        o[9]='tab';
        o[2000+9]='shiftTab';
        var p=n.config.tabSpaces,q='';
        while(p--)q+='\xa0';
        n.addCommand('tab',{
            exec:function(r){
                if(!r.fire('tab'))if(q.length>0)r.insertHtml(q);
                    else return r.execCommand('blur');
                return true;
            }
        });
    n.addCommand('shiftTab',{
        exec:function(r){
            if(!r.fire('shiftTab'))return r.execCommand('blurBack');
            return true;
        }
    });
n.addCommand('blur',l);
    n.addCommand('blurBack',m);
}
});
})();
h.prototype.focusNext=function(l){
    var u=this;
    var m=u.$,n=u.getTabIndex(),o,p,q,r,s,t;
    if(n<=0){
        s=u.getNextSourceNode(l,1);
        while(s){
            if(s.isVisible()&&s.getTabIndex()===0){
                q=s;
                break;
            }
            s=s.getNextSourceNode(false,1);
        }
    }else{
    s=u.getDocument().getBody().getFirst();
    while(s=s.getNextSourceNode(false,1)){
        if(!o)if(!p&&s.equals(u)){
            p=true;
            if(l){
                if(!(s=s.getNextSourceNode(true,1)))break;
                o=1;
            }
        }else if(p&&!u.contains(s))o=1;
    if(!s.isVisible()||(t=s.getTabIndex())<(0))continue;
    if(o&&t==n){
        q=s;
        break;
    }
    if(t>n&&(!q||!r||t<r)){
        q=s;
        r=t;
    }else if(!q&&t===0){
        q=s;
        r=t;
    }
}
}
if(q)q.focus();
};

h.prototype.focusPrevious=function(l){
    var u=this;
    var m=u.$,n=u.getTabIndex(),o,p,q,r=0,s,t=u.getDocument().getBody().getLast();
    while(t=t.getPreviousSourceNode(false,1)){
        if(!o)if(!p&&t.equals(u)){
            p=true;
            if(l){
                if(!(t=t.getPreviousSourceNode(true,1)))break;
                o=1;
            }
        }else if(p&&!u.contains(t))o=1;
    if(!t.isVisible()||(s=t.getTabIndex())<(0))continue;
    if(n<=0){
        if(o&&s===0){
            q=t;
            break;
        }
        if(s>r){
            q=t;
            r=s;
        }
    }else{
    if(o&&s==n){
        q=t;
        break;
    }
    if(s<n&&(!q||s>r)){
        q=t;
        r=s;
    }
}
}
if(q)q.focus();
};

i.tabSpaces=0;
(function(){
    j.add('templates',{
        requires:['dialog'],
        init:function(n){
            a.dialog.add('templates',a.getUrl(this.path+'dialogs/templates.js'));
            n.addCommand('templates',new a.dialogCommand('templates'));
            n.ui.addButton('Templates',{
                label:n.lang.templates.button,
                command:'templates'
            });
        }
    });
var l={},m={};

a.addTemplates=function(n,o){
    l[n]=o;
};

a.getTemplates=function(n){
    return l[n];
};

a.loadTemplates=function(n,o){
    var p=[];
    for(var q=0;q<n.length;q++)if(!m[n[q]]){
        p.push(n[q]);
        m[n[q]]=1;
    }
    if(p.length>0)a.scriptLoader.load(p,o);else setTimeout(o,0);
};

})();
i.templates='default';
i.templates_files=[a.getUrl('plugins/templates/templates/default.js')];
i.templates_replaceContent=true;
(function(){
    var l=function(){
        this.toolbars=[];
        this.focusCommandExecuted=false;
    };

    l.prototype.focus=function(){
        for(var n=0,o;o=this.toolbars[n++];)for(var p=0,q;q=o.items[p++];)if(q.focus){
            q.focus();
            return;
        }
        };

var m={
    toolbarFocus:{
        modes:{
            wysiwyg:1,
            source:1
        },
        exec:function(n){
            if(n.toolbox){
                n.toolbox.focusCommandExecuted=true;
                if(c)setTimeout(function(){
                    n.toolbox.focus();
                },100);else n.toolbox.focus();
            }
        }
    }
};

j.add('toolbar',{
    init:function(n){
        var o=function(p,q){
            switch(q){
                case 39:case 9:
                    while((p=p.next||p.toolbar.next&&p.toolbar.next.items[0])&&(!p.focus)){}
                    if(p)p.focus();
                    else n.toolbox.focus();
                    return false;
                case 37:case 2000+9:
                    while((p=p.previous||p.toolbar.previous&&p.toolbar.previous.items[p.toolbar.previous.items.length-1])&&(!p.focus)){}
                    if(p)p.focus();
                    else{
                    var r=n.toolbox.toolbars[n.toolbox.toolbars.length-1].items;
                    r[r.length-1].focus();
                }
                return false;
                case 27:
                    n.focus();
                    return false;
                case 13:case 32:
                    p.execute();
                    return false;
            }
            return true;
        };

        n.on('themeSpace',function(p){
            if(p.data.space==n.config.toolbarLocation){
                n.toolbox=new l();
                var q=['<div class="cke_toolbox"'],r=n.config.toolbarStartupExpanded,s;
                q.push(r?'>':' style="display:none">');
                var t=n.toolbox.toolbars,u=n.config.toolbar instanceof Array?n.config.toolbar:n.config['toolbar_'+n.config.toolbar];
                for(var v=0;v<u.length;v++){
                    var w=u[v];
                    if(!w)continue;
                    var x='cke_'+e.getNextNumber(),y={
                        id:x,
                        items:[]
                    };

                    if(s){
                        q.push('</div>');
                        s=0;
                    }
                    if(w==='/'){
                        q.push('<div class="cke_break"></div>');
                        continue;
                    }
                    q.push('<span id="',x,'" class="cke_toolbar"><span class="cke_toolbar_start"></span>');
                    var z=t.push(y)-1;
                    if(z>0){
                        y.previous=t[z-1];
                        y.previous.next=y;
                    }
                    for(var A=0;A<w.length;A++){
                        var B,C=w[A];
                        if(C=='-')B=k.separator;else B=n.ui.create(C);
                        if(B){
                            if(B.canGroup){
                                if(!s){
                                    q.push('<span class="cke_toolgroup">');
                                    s=1;
                                }
                            }else if(s){
                            q.push('</span>');
                            s=0;
                        }
                        var D=B.render(n,q);
                        z=y.items.push(D)-1;
                        if(z>0){
                            D.previous=y.items[z-1];
                            D.previous.next=D;
                        }
                        D.toolbar=y;
                        D.onkey=o;
                        D.onfocus=function(){
                            if(!n.toolbox.focusCommandExecuted)n.focus();
                        };

                    }
                }
                if(s){
                q.push('</span>');
                s=0;
            }
            q.push('<span class="cke_toolbar_end"></span></span>');
        }
        q.push('</div>');
        if(n.config.toolbarCanCollapse){
            var E=e.addFunction(function(){
                n.execCommand('toolbarCollapse');
            }),F='cke_'+e.getNextNumber();
            n.addCommand('toolbarCollapse',{
                exec:function(G){
                    var H=a.document.getById(F),I=H.getPrevious(),J=G.getThemeSpace('contents'),K=I.getParent(),L=parseInt(J.$.style.height,10),M=K.$.offsetHeight;
                    if(I.isVisible()){
                        I.hide();
                        H.addClass('cke_toolbox_collapser_min');
                    }else{
                        I.show();
                        H.removeClass('cke_toolbox_collapser_min');
                    }
                    var N=K.$.offsetHeight-M;
                    J.setStyle('height',L-N+'px');
                },
                modes:{
                    wysiwyg:1,
                    source:1
                }
            });
        q.push('<a id="'+F+'" class="cke_toolbox_collapser');
        if(!r)q.push(' cke_toolbox_collapser_min');
        q.push('" onclick="CKEDITOR.tools.callFunction('+E+')"></a>');
    }
    p.data.html+=q.join('');
}
});
n.addCommand('toolbarFocus',m.toolbarFocus);
}
});
})();
k.separator={
    render:function(l,m){
        m.push('<span class="cke_separator"></span>');
        return{};

}
};

i.toolbarLocation='top';
i.toolbar_Basic=[['Bold','Italic','-','NumberedList','BulletedList','-','Link','Unlink','-','About']];
i.toolbar_Full=[['Source','-','Save','NewPage','Preview','-','Templates'],['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print','SpellChecker','Scayt'],['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],'/',['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],['Link','Unlink','Anchor'],['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],'/',['Styles','Format','Font','FontSize'],['TextColor','BGColor'],['Maximize','ShowBlocks','-','About']];
i.toolbar='Full';
i.toolbarCanCollapse=true;
i.toolbarStartupExpanded=true;
(function(){
    j.add('undo',{
        requires:['selection','wysiwygarea'],
        init:function(n){
            var o=new m(n),p=n.addCommand('undo',{
                exec:function(){
                    if(o.undo()){
                        n.selectionChange();
                        this.fire('afterUndo');
                    }
                },
            state:0,
            canUndo:false
            }),q=n.addCommand('redo',{
            exec:function(){
                if(o.redo()){
                    n.selectionChange();
                    this.fire('afterRedo');
                }
            },
        state:0,
        canUndo:false
        });
    o.onChange=function(){
        p.setState(o.undoable()?2:0);
        q.setState(o.redoable()?2:0);
    };

    function r(s){
        if(o.enabled&&s.data.command.canUndo!==false)o.save();
    };

    n.on('beforeCommandExec',r);
        n.on('afterCommandExec',r);
        n.on('saveSnapshot',function(){
        o.save();
    });
    n.on('contentDom',function(){
        n.document.on('keydown',function(s){
            if(!s.data.$.ctrlKey&&!s.data.$.metaKey)o.type(s);
        });
    });
    n.on('beforeModeUnload',function(){
        n.mode=='wysiwyg'&&o.save(true);
    });
    n.on('mode',function(){
        o.enabled=n.mode=='wysiwyg';
        o.onChange();
    });
    n.ui.addButton('Undo',{
        label:n.lang.undo,
        command:'undo'
    });
    n.ui.addButton('Redo',{
        label:n.lang.redo,
        command:'redo'
    });
    n.resetUndo=function(){
        o.reset();
        n.fire('saveSnapshot');
    };

}
});
function l(n){
    var p=this;
    var o=n.getSelection();
    p.contents=n.getSnapshot();
    p.bookmarks=o&&o.createBookmarks2(true);
    if(c)p.contents=p.contents.replace(/\s+_cke_expando=".*?"/g,'');
};

l.prototype={
    equals:function(n,o){
        if(this.contents!=n.contents)return false;
        if(o)return true;
        var p=this.bookmarks,q=n.bookmarks;
        if(p||q){
            if(!p||!q||p.length!=q.length)return false;
            for(var r=0;r<p.length;r++){
                var s=p[r],t=q[r];
                if(s.startOffset!=t.startOffset||s.endOffset!=t.endOffset||!e.arrayCompare(s.start,t.start)||!e.arrayCompare(s.end,t.end))return false;
            }
            }
            return true;
}
};

function m(n){
    this.editor=n;
    this.reset();
};

m.prototype={
    type:function(n){
        var o=n&&n.data.getKeystroke(),p={
            8:1,
            46:1
        },q=o in p,r=this.lastKeystroke in p,s=q&&o==this.lastKeystroke,t={
            37:1,
            38:1,
            39:1,
            40:1
        },u=o in t,v=this.lastKeystroke in t,w=!q&&!u,x=q&&!s,y=!this.typing||w&&(r||v);
        if(y||x){
            var z=new l(this.editor);
            e.setTimeout(function(){
                var B=this;
                var A=B.editor.getSnapshot();
                if(c)A=A.replace(/\s+_cke_expando=".*?"/g,'');
                if(z.contents!=A){
                    if(!B.save(false,z,false))B.snapshots.splice(B.index+1,B.snapshots.length-B.index-1);
                    B.hasUndo=true;
                    B.hasRedo=false;
                    B.typesCount=1;
                    B.modifiersCount=1;
                    B.onChange();
                }
            },0,this);
    }
    this.lastKeystroke=o;
    if(q){
        this.typesCount=0;
        this.modifiersCount++;
        if(this.modifiersCount>25){
            this.save();
            this.modifiersCount=1;
        }
    }else if(!u){
    this.modifiersCount=0;
    this.typesCount++;
    if(this.typesCount>25){
        this.save();
        this.typesCount=1;
    }
}
this.typing=true;
},
reset:function(){
    var n=this;
    n.lastKeystroke=0;
    n.snapshots=[];
    n.index=-1;
    n.limit=n.editor.config.undoStackSize;
    n.currentImage=null;
    n.hasUndo=false;
    n.hasRedo=false;
    n.resetType();
},
resetType:function(){
    var n=this;
    n.typing=false;
    delete n.lastKeystroke;
    n.typesCount=0;
    n.modifiersCount=0;
},
fireChange:function(){
    var n=this;
    n.hasUndo=!!n.getNextImage(true);
    n.hasRedo=!!n.getNextImage(false);
    n.resetType();
    n.onChange();
},
save:function(n,o,p){
    var r=this;
    var q=r.snapshots;
    if(!o)o=new l(r.editor);
    if(r.currentImage&&o.equals(r.currentImage,n))return false;
    q.splice(r.index+1,q.length-r.index-1);
    if(q.length==r.limit)q.shift();
    r.index=q.push(o)-1;
    r.currentImage=o;
    if(p!==false)r.fireChange();
    return true;
},
restoreImage:function(n){
    var p=this;
    p.editor.loadSnapshot(n.contents);
    if(n.bookmarks)p.editor.getSelection().selectBookmarks(n.bookmarks);
    else if(c){
        var o=p.editor.document.getBody().$.createTextRange();
        o.collapse(true);
        o.select();
    }
    p.index=n.index;
    p.currentImage=n;
    p.fireChange();
},
getNextImage:function(n){
    var s=this;
    var o=s.snapshots,p=s.currentImage,q,r;
    if(p)if(n)for(r=s.index-1;r>=0;r--){
        q=o[r];
        if(!p.equals(q,true)){
            q.index=r;
            return q;
        }
    }else for(r=s.index+1;r<o.length;r++){
        q=o[r];
        if(!p.equals(q,true)){
            q.index=r;
            return q;
        }
    }
    return null;
},
redoable:function(){
    return this.enabled&&this.hasRedo;
},
undoable:function(){
    return this.enabled&&this.hasUndo;
},
undo:function(){
    var o=this;
    if(o.undoable()){
        o.save(true);
        var n=o.getNextImage(true);
        if(n)return o.restoreImage(n),true;
    }
    return false;
},
redo:function(){
    var o=this;
    if(o.redoable()){
        o.save(true);
        if(o.redoable()){
            var n=o.getNextImage(false);
            if(n)return o.restoreImage(n),true;
        }
    }
    return false;
}
};

})();
i.undoStackSize=20;
(function(){
    var l={
        table:1,
        pre:1
    },m=/\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>|&nbsp;|&#160;)\s*(:?<\/\1>)?\s*$/gi;
    function n(r){
        var w=this;
        if(w.mode=='wysiwyg'){
            w.focus();
            var s=w.getSelection(),t=r.data;
            if(w.dataProcessor)t=w.dataProcessor.toHtml(t);
            if(c){
                var u=s.isLocked;
                if(u)s.unlock();
                var v=s.getNative();
                if(v.type=='Control')v.clear();
                v.createRange().pasteHTML(t);
                if(u)w.getSelection().lock();
            }else w.document.$.execCommand('inserthtml',false,t);
        }
    };

function o(r){
    if(this.mode=='wysiwyg'){
        this.focus();
        this.fire('saveSnapshot');
        var s=r.data,t=s.getName(),u=f.$block[t],v=this.getSelection(),w=v.getRanges(),x=v.isLocked;
        if(x)v.unlock();
        var y,z,A,B;
        for(var C=w.length-1;C>=0;C--){
            y=w[C];
            y.deleteContents();
            z=!C&&s||s.clone(true);
            var D,E;
            if(u)while((D=y.getCommonAncestor(false,true))&&((E=f[D.getName()])&&(!(E&&E[t]))))if(y.checkStartOfBlock()&&y.checkEndOfBlock()){
                y.setStartBefore(D);
                y.collapse(true);
                D.remove();
            }else y.splitBlock();
            y.insertNode(z);
            if(!A)A=z;
        }
        y.moveToPosition(A,4);
        var F=A.getNextSourceNode(true);
        if(F&&F.type==1)y.moveToElementEditStart(F);
        v.selectRanges([y]);
        if(x)this.getSelection().lock();
        e.setTimeout(function(){
            this.fire('saveSnapshot');
        },0,this);
    }
};

function p(r){
    if(!r.checkDirty())setTimeout(function(){
        r.resetDirty();
    });
};

function q(r){
    var s=r.editor,t=r.data.path,u=t.blockLimit,v=r.data.selection,w=v.getRanges()[0],x=s.document.getBody(),y=s.config.enterMode;
    if(y!=2&&w.collapsed&&u.getName()=='body'&&!t.block){
        p(s);
        var z=v.createBookmarks(),A=w.fixBlock(true,s.config.enterMode==3?'div':'p');
        if(c){
            var B=A.getElementsByTag('br'),C;
            for(var D=0;D<B.count();D++)if((C=B.getItem(D))&&(C.hasAttribute('_cke_bogus')))C.remove();
            }
            v.selectBookmarks(z);
        var E=A.getChildren(),F=E.count(),G,H=d.walker.whitespaces(true),I=A.getPrevious(H),J=A.getNext(H),K;
        if(I&&I.getName&&!(I.getName() in l))K=I;
        else if(J&&J.getName&&!(J.getName() in l))K=J;
        if((!F||(G=E.getItem(0))&&(G.is&&G.is('br')))&&(K&&w.moveToElementEditStart(K))){
            A.remove();
            w.select();
        }
    }
    var L=x.getLast(d.walker.whitespaces(true));
if(L&&L.getName&&L.getName() in l){
    p(s);
    var M=s.document.createElement(c&&y!=2?'<br _cke_bogus="true" />':'br');
    x.append(M);
}
};

j.add('wysiwygarea',{
    requires:['editingblock'],
    init:function(r){
        var s=r.config.enterMode!=2?r.config.enterMode==3?'div':'p':false;
        r.on('editingBlockReady',function(){
            var t,u,v,w,x,y,z,A=b.isCustomDomain(),B=function(){
                if(v)v.remove();
                if(u)u.remove();
                y=0;
                var E='void( '+(b.gecko?'setTimeout':'')+'( function(){'+'document.open();'+(c&&A?'document.domain="'+document.domain+'";':'')+'document.write( window.parent[ "_cke_htmlToLoad_'+r.name+'" ] );'+'document.close();'+'window.parent[ "_cke_htmlToLoad_'+r.name+'" ] = null;'+'}'+(b.gecko?', 0 )':')()')+' )';
                if(b.opera)E='void(0);';
                v=h.createFromHtml('<iframe style="width:100%;height:100%" frameBorder="0" tabIndex="-1" allowTransparency="true" src="javascript:'+encodeURIComponent(E)+'"'+'></iframe>');
                var F=r.lang.editorTitle.replace('%1',r.name);
                if(b.gecko){
                    v.on('load',function(G){
                        G.removeListener();
                        D(v.$.contentWindow);
                    });
                    t.setAttributes({
                        role:'region',
                        title:F
                    });
                    v.setAttributes({
                        role:'region',
                        title:' '
                    });
                }else if(b.webkit){
                    v.setAttribute('title',F);
                    v.setAttribute('name',F);
                }else if(c){
                    u=h.createFromHtml('<fieldset style="height:100%'+(c&&b.quirks?';position:relative':'')+'">'+'<legend style="display:block;width:0;height:0;overflow:hidden;'+(c&&b.quirks?'position:absolute':'')+'">'+e.htmlEncode(F)+'</legend>'+'</fieldset>',a.document);
                    v.appendTo(u);
                    u.appendTo(t);
                }
                if(!c)t.append(v);
            },C='<script id="cke_actscrpt" type="text/javascript">window.onload = function(){window.parent.CKEDITOR._["contentDomReady'+r.name+'"]( window );'+'}'+'</script>',D=function(E){
                if(y)return;
                y=1;
                var F=E.document,G=F.body,H=F.getElementById('cke_actscrpt');
                H.parentNode.removeChild(H);
                delete a._['contentDomReady'+r.name];
                G.spellcheck=!r.config.disableNativeSpellChecker;
                if(c){
                    G.hideFocus=true;
                    G.disabled=true;
                    G.contentEditable=true;
                    G.removeAttribute('disabled');
                }else F.designMode='on';
                try{
                    F.execCommand('enableObjectResizing',false,!r.config.disableObjectResizing);
                }catch(K){}
                try{
                    F.execCommand('enableInlineTableEditing',false,!r.config.disableNativeTableHandles);
                }catch(L){}
                E=r.window=new d.window(E);
                F=r.document=new g(F);
                if(!(c||b.opera))F.on('mousedown',function(M){
                    var N=M.data.getTarget();
                    if(N.is('img','hr','input','textarea','select'))r.getSelection().selectElement(N);
                });
                if(b.webkit){
                    F.on('click',function(M){
                        if(M.data.getTarget().is('input','select'))M.data.preventDefault();
                    });
                    F.on('mouseup',function(M){
                        if(M.data.getTarget().is('input','textarea'))M.data.preventDefault();
                    });
                }
                var I=c||b.webkit?E:F;
                I.on('blur',function(){
                    r.focusManager.blur();
                });
                I.on('focus',function(){
                    if(b.gecko){
                        var M=G;
                        while(M.firstChild)M=M.firstChild;
                        if(!M.nextSibling&&'BR'==M.tagName&&M.hasAttribute('_moz_editor_bogus_node')){
                            var N=F.$.createEvent('KeyEvents');
                            N.initKeyEvent('keypress',true,true,E.$,false,false,false,false,0,32);
                            F.$.dispatchEvent(N);
                            var O=F.getBody().getFirst();
                            if(r.config.enterMode==2)F.createElement('br',{
                                attributes:{
                                    _moz_dirty:''
                                }
                            }).replace(O);else O.remove();
                    }
                }
                r.focusManager.focus();
            });
        var J=r.keystrokeHandler;
        if(J)J.attach(F);
            if(c)r.on('key',function(M){
            var N=M.data.keyCode==8&&r.getSelection().getSelectedElement();
            if(N){
                r.fire('saveSnapshot');
                N.remove();
                r.fire('saveSnapshot');
                M.cancel();
            }
        });
        if(r.contextMenu)r.contextMenu.addTarget(F);
        setTimeout(function(){
            r.fire('contentDom');
            if(z){
                r.mode='wysiwyg';
                r.fire('mode');
                z=false;
            }
            w=false;
            if(x){
                r.focus();
                x=false;
            }
            setTimeout(function(){
                r.fire('dataReady');
            },0);
            if(c)setTimeout(function(){
                if(r.document){
                    var M=r.document.$.body;
                    M.runtimeStyle.marginBottom='0px';
                    M.runtimeStyle.marginBottom='';
                }
            },1000);
        },0);
};

r.addMode('wysiwyg',{
    load:function(E,F,G){
        t=E;
        if(c&&b.quirks)E.setStyle('position','relative');
        r.mayBeDirty=true;
        z=true;
        if(G)this.loadSnapshotData(F);else this.loadData(F);
    },
    loadData:function(E){
        w=true;
        if(r.dataProcessor)E=r.dataProcessor.toHtml(E,s);
        E=r.config.docType+'<html dir="'+r.config.contentsLangDirection+'">'+'<head>'+'<link type="text/css" rel="stylesheet" href="'+[].concat(r.config.contentsCss).join('"><link type="text/css" rel="stylesheet" href="')+'">'+'<style type="text/css" _fcktemp="true">'+r._.styles.join('\n')+'</style>'+'</head>'+'<body>'+E+'</body>'+'</html>'+C;
        window['_cke_htmlToLoad_'+r.name]=E;
        a._['contentDomReady'+r.name]=D;
        B();
        if(b.opera){
            var F=v.$.contentWindow.document;
            F.open();
            F.write(E);
            F.close();
        }
    },
getData:function(){
    var E=v.getFrameDocument().getBody().getHtml();
    if(r.dataProcessor)E=r.dataProcessor.toDataFormat(E,s);
    if(r.config.ignoreEmptyParagraph)E=E.replace(m,'');
    return E;
},
getSnapshotData:function(){
    return v.getFrameDocument().getBody().getHtml();
},
loadSnapshotData:function(E){
    v.getFrameDocument().getBody().setHtml(E);
},
unload:function(E){
    r.window=r.document=v=t=x=null;
    r.fire('contentDomUnload');
},
focus:function(){
    if(w)x=true;
    else if(r.window){
        r.window.focus();
        r.selectionChange();
    }
}
});
r.on('insertHtml',n,null,null,20);
r.on('insertElement',o,null,null,20);
r.on('selectionChange',q,null,null,1);
});
}
});
})();
i.disableObjectResizing=false;
i.disableNativeTableHandles=true;
i.disableNativeSpellChecker=true;
i.ignoreEmptyParagraph=true;
j.add('wsc',{
    init:function(l){
        var m='checkspell',n=l.addCommand(m,new a.dialogCommand(m));
        n.modes={
            wysiwyg:!b.opera&&document.domain==window.location.hostname
            };

        l.ui.addButton('SpellChecker',{
            label:l.lang.spellCheck.toolbar,
            command:m
        });
        a.dialog.add(m,this.path+'dialogs/wsc.js');
    }
});
i.wsc_customerId=i.wsc_customerId||'1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk';
i.wsc_customLoaderScript=i.wsc_customLoaderScript||null;
j.add('styles',{
    requires:['selection']
    });
a.editor.prototype.attachStyleStateChange=function(l,m){
    var n=this._.styleStateChangeCallbacks;
    if(!n){
        n=this._.styleStateChangeCallbacks=[];
        this.on('selectionChange',function(o){
            for(var p=0;p<n.length;p++){
                var q=n[p],r=q.style.checkActive(o.data.path)?1:2;
                if(q.state!==r){
                    q.fn.call(this,r);
                    q.state!==r;
                }
            }
            });
}
n.push({
    style:l,
    fn:m
});
};

a.STYLE_BLOCK=1;
a.STYLE_INLINE=2;
a.STYLE_OBJECT=3;
(function(){
    var l={
        address:1,
        div:1,
        h1:1,
        h2:1,
        h3:1,
        h4:1,
        h5:1,
        h6:1,
        p:1,
        pre:1
    },m={
        a:1,
        embed:1,
        hr:1,
        img:1,
        li:1,
        object:1,
        ol:1,
        table:1,
        td:1,
        tr:1,
        ul:1
    },n=/\s*(?:;\s*|$)/;
    a.style=function(L,M){
        if(M){
            L=e.clone(L);
            G(L.attributes,M);
            G(L.styles,M);
        }
        var N=this.element=(L.element||'*').toLowerCase();
        this.type=N=='#'||l[N]?1:m[N]?3:2;
        this._={
            definition:L
        };

};

a.style.prototype={
    apply:function(L){
        K.call(this,L,false);
    },
    remove:function(L){
        K.call(this,L,true);
    },
    applyToRange:function(L){
        var M=this;
        return(M.applyToRange=M.type==2?o:M.type==1?q:null).call(M,L);
    },
    removeFromRange:function(L){
        return(this.removeFromRange=this.type==2?p:null).call(this,L);
    },
    applyToObject:function(L){
        E(L,this);
    },
    checkActive:function(L){
        switch(this.type){
            case 1:
                return this.checkElementRemovable(L.block||L.blockLimit,true);
            case 2:
                var M=L.elements;
                for(var N=0,O;N<M.length;N++){
                O=M[N];
                if(O==L.block||O==L.blockLimit)continue;
                if(this.checkElementRemovable(O,true))return true;
            }
            }
            return false;
},
checkElementRemovable:function(L,M){
    if(!L)return false;
    var N=this._.definition,O;
    if(L.getName()==this.element){
        if(!M&&!L.hasAttributes())return true;
        O=H(N);
        if(O._length){
            for(var P in O){
                if(P=='_length')continue;
                var Q=L.getAttribute(P);
                if(O[P]==(P=='style'?J(Q,false):Q)){
                    if(!M)return true;
                }else if(M)return false;
            }
            if(M)return true;
        }else return true;
    }
    var R=I(this)[L.getName()];
    if(R){
        if(!(O=R.attributes))return true;
        for(var S=0;S<O.length;S++){
            P=O[S][0];
            var T=L.getAttribute(P);
            if(T){
                var U=O[S][1];
                if(U===null||typeof U=='string'&&T==U||U.test(T))return true;
            }
        }
        }
    return false;
}
};

a.style.getStyleText=function(L){
    var M=L._ST;
    if(M)return M;
    M=L.styles;
    var N=L.attributes&&L.attributes.style||'';
    if(N.length)N=N.replace(n,';');
    for(var O in M)N+=(O+':'+M[O]).replace(n,';');if(N.length)N=J(N);
    return L._ST=N;
};

function o(L){
    var al=this;
    var M=L.document;
    if(L.collapsed){
        var N=D(al,M);
        L.insertNode(N);
        L.moveToPosition(N,2);
        return;
    }
    var O=al.element,P=al._.definition,Q,R=f[O]||(Q=true,f.span),S=L.createBookmark();
    L.enlarge(1);
    L.trim();
    var T=L.getBoundaryNodes(),U=T.startNode,V=T.endNode.getNextSourceNode(true);
    if(!V){
        var W;
        V=W=M.createText('');
        V.insertAfter(L.endContainer);
    }
    var X=V.getParent();
    if(X&&X.getAttribute('_fck_bookmark'))V=X;
    if(V.equals(U)){
        V=V.getNextSourceNode(true);
        if(!V){
            V=W=M.createText('');
            V.insertAfter(U);
        }
    }
    var Y=U,Z,aa;
while(Y){
    var ab=false;
    if(Y.equals(V)){
        Y=null;
        ab=true;
    }else{
        var ac=Y.type,ad=ac==1?Y.getName():null;
        if(ad&&Y.getAttribute('_fck_bookmark')){
            Y=Y.getNextSourceNode(true);
            continue;
        }
        if(!ad||R[ad]&&(Y.getPosition(V)|4|0|8)==(4+0+8)){
            var ae=Y.getParent();
            if(ae&&((ae.getDtd()||f.span)[O]||Q)){
                if(!Z&&(!ad||!f.$removeEmpty[ad]||(Y.getPosition(V)|4|0|8)==(4+0+8))){
                    Z=new d.range(M);
                    Z.setStartBefore(Y);
                }
                if(ac==3||ac==1&&!Y.getChildCount()){
                    var af=Y,ag;
                    while(!af.$.nextSibling&&(ag=af.getParent(),R[ag.getName()])&&((ag.getPosition(U)|2|0|8)==(2+0+8)))af=ag;
                    Z.setEndAfter(af);
                    if(!af.$.nextSibling)ab=true;
                    if(!aa)aa=ac!=3||/[^\s\ufeff]/.test(Y.getText());
                }
            }else ab=true;
    }else ab=true;
    Y=Y.getNextSourceNode();
}
if(ab&&aa&&Z&&!Z.collapsed){
    var ah=D(al,M),ai=Z.getCommonAncestor();
    while(ah&&ai){
        if(ai.getName()==O){
            for(var aj in P.attributes)if(ah.getAttribute(aj)==ai.getAttribute(aj))ah.removeAttribute(aj);for(var ak in P.styles)if(ah.getStyle(ak)==ai.getStyle(ak))ah.removeStyle(ak);if(!ah.hasAttributes()){
                ah=null;
                break;
            }
        }
        ai=ai.getParent();
}
if(ah){
    Z.extractContents().appendTo(ah);
    y(al,ah);
    Z.insertNode(ah);
    B(ah);
    if(!c)ah.$.normalize();
}
Z=null;
}
}
W&&W.remove();
L.moveToBookmark(S);
};

function p(L){
    L.enlarge(1);
    var M=L.createBookmark(),N=M.startNode;
    if(L.collapsed){
        var O=new d.elementPath(N.getParent()),P;
        for(var Q=0,R;Q<O.elements.length&&(R=O.elements[Q]);Q++){
            if(R==O.block||R==O.blockLimit)break;
            if(this.checkElementRemovable(R)){
                var S=L.checkBoundaryOfElement(R,2),T=!S&&L.checkBoundaryOfElement(R,1);
                if(T||S){
                    P=R;
                    P.match=T?'start':'end';
                }else{
                    B(R);
                    x(this,R);
                }
            }
        }
        if(P){
    var U=N;
    for(Q=0;true;Q++){
        var V=O.elements[Q];
        if(V.equals(P))break;
        else if(V.match)continue;else V=V.clone();
        V.append(U);
        U=V;
    }
    U[P.match=='start'?'insertBefore':'insertAfter'](P);
}
}else{
    var W=M.endNode,X=this;
    function Y(){
        var ab=new d.elementPath(N.getParent()),ac=new d.elementPath(W.getParent()),ad=null,ae=null;
        for(var af=0;af<ab.elements.length;af++){
            var ag=ab.elements[af];
            if(ag==ab.block||ag==ab.blockLimit)break;
            if(X.checkElementRemovable(ag))ad=ag;
        }
        for(af=0;af<ac.elements.length;af++){
            ag=ac.elements[af];
            if(ag==ac.block||ag==ac.blockLimit)break;
            if(X.checkElementRemovable(ag))ae=ag;
        }
        if(ae)W.breakParent(ae);
        if(ad)N.breakParent(ad);
    };

    Y();
    var Z=N.getNext();
    while(!Z.equals(W)){
        var aa=Z.getNextSourceNode();
        if(Z.type==1&&this.checkElementRemovable(Z)){
            if(Z.getName()==this.element)x(this,Z);else z(Z,I(this)[Z.getName()]);
            if(aa.type==1&&aa.contains(N)){
                Y();
                aa=N.getNext();
            }
        }
        Z=aa;
}
}
L.moveToBookmark(M);
};

function q(L){
    var M=L.createBookmark(true),N=L.createIterator();
    N.enforceRealBlocks=true;
    var O,P=L.document,Q;
    while(O=N.getNextParagraph()){
        var R=D(this,P);
        r(O,R);
    }
    L.moveToBookmark(M);
};

function r(L,M){
    var N=M.is('pre'),O=L.is('pre'),P=N&&!O,Q=!N&&O;
    if(P)M=w(L,M);
    else if(Q)M=v(t(L),M);else L.moveChildren(M);
    M.replace(L);
    if(N)s(M);
};

function s(L){
    var M;
    if(!((M=L.getPreviousSourceNode(true,1))&&(M.is&&M.is('pre'))))return;
    var N=u(M.getHtml(),/\n$/,'')+'\n\n'+u(L.getHtml(),/^\n/,'');
    if(c)L.$.outerHTML='<pre>'+N+'</pre>';else L.setHtml(N);
    M.remove();
};

function t(L){
    var M=/(\S\s*)\n(?:\s|(<span[^>]+_fck_bookmark.*?\/span>))*\n(?!$)/gi,N=L.getName(),O=u(L.getOuterHtml(),M,function(Q,R,S){
        return R+'</pre>'+S+'<pre>';
    }),P=[];
    O.replace(/<pre>([\s\S]*?)<\/pre>/gi,function(Q,R){
        P.push(R);
    });
    return P;
};

function u(L,M,N){
    var O='',P='';
    L=L.replace(/(^<span[^>]+_fck_bookmark.*?\/span>)|(<span[^>]+_fck_bookmark.*?\/span>$)/gi,function(Q,R,S){
        R&&(O=R);
        S&&(P=S);
        return '';
    });
    return O+L.replace(M,N)+P;
};

function v(L,M){
    var N=new d.documentFragment(M.getDocument());
    for(var O=0;O<L.length;O++){
        var P=L[O];
        P=P.replace(/(\r\n|\r)/g,'\n');
        P=u(P,/^[ \t]*\n/,'');
        P=u(P,/\n$/,'');
        P=u(P,/^[ \t]+|[ \t]+$/g,function(R,S,T){
            if(R.length==1)return '&nbsp;';
            else if(!S)return e.repeat('&nbsp;',R.length-1)+' ';else return ' '+e.repeat('&nbsp;',R.length-1);
        });
        P=P.replace(/\n/g,'<br>');
        P=P.replace(/[ \t]{2,}/g,function(R){
            return e.repeat('&nbsp;',R.length-1)+' ';
        });
        var Q=M.clone();
        Q.setHtml(P);
        N.append(Q);
    }
    return N;
};

function w(L,M){
    var N=L.getHtml();
    N=u(N,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,'');
    N=N.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'$1');
    N=N.replace(/([ \t\n\r]+|&nbsp;)/g,' ');
    N=N.replace(/<br\b[^>]*>/gi,'\n');
    if(c){
        var O=L.getDocument().createElement('div');
        O.append(M);
        M.$.outerHTML='<pre>'+N+'</pre>';
        M=O.getFirst().remove();
    }else M.setHtml(N);
    return M;
};

function x(L,M){
    var N=L._.definition,O=N.attributes,P=N.styles,Q=I(L);
    function R(){
        for(var T in O){
            if(T=='class'&&M.getAttribute(T)!=O[T])continue;
            M.removeAttribute(T);
        }
        };

R();
for(var S in P)M.removeStyle(S);O=Q[M.getName()];
if(O)R();
A(M);
};

function y(L,M){
    var N=L._.definition,O=N.attributes,P=N.styles,Q=I(L),R=M.getElementsByTag(L.element);
    for(var S=R.count();--S>=0;)x(L,R.getItem(S));
    for(var T in Q)if(T!=L.element){
        R=M.getElementsByTag(T);
        for(S=R.count()-1;S>=0;S--){
            var U=R.getItem(S);
            z(U,Q[T]);
        }
        }
    };

function z(L,M){
    var N=M&&M.attributes;
    if(N)for(var O=0;O<N.length;O++){
        var P=N[O][0],Q;
        if(Q=L.getAttribute(P)){
            var R=N[O][1];
            if(R===null||R.test&&R.test(Q)||typeof R=='string'&&Q==R)L.removeAttribute(P);
        }
    }
    A(L);
};

function A(L){
    if(!L.hasAttributes()){
        var M=L.getFirst(),N=L.getLast();
        L.remove(true);
        if(M){
            B(M);
            if(N&&!M.equals(N))B(N);
        }
    }
};

function B(L){
    if(!L||L.type!=1||!f.$removeEmpty[L.getName()])return;
    C(L,L.getNext(),true);
    C(L,L.getPrevious());
};

function C(L,M,N){
    if(M&&M.type==1){
        var O=M.getAttribute('_fck_bookmark');
        if(O)M=N?M.getNext():M.getPrevious();
        if(M&&M.type==1&&L.isIdentical(M)){
            var P=N?L.getLast():L.getFirst();
            if(O)(N?M.getPrevious():M.getNext()).move(L,!N);
            M.moveChildren(L,!N);
            M.remove();
            if(P)B(P);
        }
    }
};

function D(L,M){
    var N,O=L._.definition,P=L.element;
    if(P=='*')P='span';
    N=new h(P,M);
    return E(N,L);
};

function E(L,M){
    var N=M._.definition,O=N.attributes,P=a.style.getStyleText(N);
    if(O)for(var Q in O)L.setAttribute(Q,O[Q]);if(P)L.setAttribute('style',P);
    return L;
};

var F=/#\((.+?)\)/g;
function G(L,M){
    for(var N in L)L[N]=L[N].replace(F,function(O,P){
        return M[P];
    });
    };

function H(L){
    var M=L._AC;
    if(M)return M;
    M={};

    var N=0,O=L.attributes;
    if(O)for(var P in O){
        N++;
        M[P]=O[P];
    }
    var Q=a.style.getStyleText(L);
    if(Q){
        if(!M.style)N++;
        M.style=Q;
    }
    M._length=N;
    return L._AC=M;
};

function I(L){
    if(L._.overrides)return L._.overrides;
    var M=L._.overrides={},N=L._.definition.overrides;
    if(N){
        if(!e.isArray(N))N=[N];
        for(var O=0;O<N.length;O++){
            var P=N[O],Q,R,S;
            if(typeof P=='string')Q=P.toLowerCase();
            else{
                Q=P.element?P.element.toLowerCase():L.element;
                S=P.attributes;
            }
            R=M[Q]||(M[Q]={});
            if(S){
                var T=R.attributes=R.attributes||[];
                for(var U in S)T.push([U.toLowerCase(),S[U]]);
                }
            }
        }
    return M;
};

function J(L,M){
    var N;
    if(M!==false){
        var O=new h('span');
        O.setAttribute('style',L);
        N=O.getAttribute('style');
    }else N=L;
    return N.replace(/\s*([;:])\s*/,'$1').replace(/([^\s;])$/,'$1;').replace(/,\s+/g,',').toLowerCase();
};

function K(L,M){
    var N=L.getSelection(),O=N.getRanges(),P=M?this.removeFromRange:this.applyToRange;
    for(var Q=0;Q<O.length;Q++)P.call(this,O[Q]);
    N.selectRanges(O);
};

})();
a.styleCommand=function(l){
    this.style=l;
};

a.styleCommand.prototype.exec=function(l){
    var n=this;
    l.focus();
    var m=l.document;
    if(m)if(n.state==2)n.style.apply(m);
        else if(n.state==1)n.style.remove(m);
    return!!m;
};

j.add('domiterator');
(function(){
    var l=function(n){
        var o=this;
        if(arguments.length<1)return;
        o.range=n;
        o.forceBrBreak=false;
        o.enlargeBr=true;
        o.enforceRealBlocks=false;
        o._||(o._={});
    },m=/^[\r\n\t ]+$/;
    l.prototype={
        getNextParagraph:function(n){
            var O=this;
            var o,p,q,r,s;
            if(!O._.lastNode){
                p=O.range.clone();
                p.enlarge(O.forceBrBreak||!O.enlargeBr?3:2);
                var t=new d.walker(p),u=d.walker.bookmark(true,true);
                t.evaluator=u;
                O._.nextNode=t.next();
                t=new d.walker(p);
                t.evaluator=u;
                var v=t.previous();
                O._.lastNode=v.getNextSourceNode(true);
                if(O._.lastNode&&O._.lastNode.type==3&&!e.trim(O._.lastNode.getText())&&O._.lastNode.getParent().isBlockBoundary()){
                    var w=new d.range(p.document);
                    w.moveToPosition(O._.lastNode,4);
                    if(w.checkEndOfBlock()){
                        var x=new d.elementPath(w.endContainer),y=x.block||x.blockLimit;
                        O._.lastNode=y.getNextSourceNode(true);
                    }
                }
                if(!O._.lastNode){
                O._.lastNode=O._.docEndMarker=p.document.createText('');
                O._.lastNode.insertAfter(v);
            }
            p=null;
        }
        var z=O._.nextNode;
        v=O._.lastNode;
        O._.nextNode=null;
        while(z){
            var A=false,B=z.type!=1,C=false;
            if(!B){
                var D=z.getName();
                if(z.isBlockBoundary(O.forceBrBreak&&{
                    br:1
                })){
                    if(D=='br')B=true;
                    else if(!p&&!z.getChildCount()&&D!='hr'){
                        o=z;
                        q=z.equals(v);
                        break;
                    }
                    if(p){
                        p.setEndAt(z,3);
                        if(D!='br')O._.nextNode=z;
                    }
                    A=true;
                }else{
                    if(z.getFirst()){
                        if(!p){
                            p=new d.range(O.range.document);
                            p.setStartAt(z,3);
                        }
                        z=z.getFirst();
                        continue;
                    }
                    B=true;
                }
            }else if(z.type==3)if(m.test(z.getText()))B=false;
        if(B&&!p){
            p=new d.range(O.range.document);
            p.setStartAt(z,3);
        }
        q=(!A||B)&&(z.equals(v));
        if(p&&!A)while(!z.getNext()&&!q){
            var E=z.getParent();
            if(E.isBlockBoundary(O.forceBrBreak&&{
                br:1
            })){
                A=true;
                q=q||E.equals(v);
                break;
            }
            z=E;
            B=true;
            q=z.equals(v);
            C=true;
        }
        if(B)p.setEndAt(z,4);
        z=z.getNextSourceNode(C,null,v);
        q=!z;
        if((A||q)&&(p)){
            var F=p.getBoundaryNodes(),G=new d.elementPath(p.startContainer),H=new d.elementPath(p.endContainer);
            if(F.startNode.equals(F.endNode)&&F.startNode.getParent().equals(G.blockLimit)&&F.startNode.type==1&&F.startNode.getAttribute('_fck_bookmark')){
                p=null;
                O._.nextNode=null;
            }else break;
        }
        if(q)break;
    }
    if(!o){
        if(!p){
            O._.docEndMarker&&O._.docEndMarker.remove();
            O._.nextNode=null;
            return null;
        }
        G=new d.elementPath(p.startContainer);
        var I=G.blockLimit,J={
            div:1,
            th:1,
            td:1
        };

        o=G.block;
        if(!o&&!O.enforceRealBlocks&&J[I.getName()]&&p.checkStartOfBlock()&&p.checkEndOfBlock())o=I;
        else if(!o||O.enforceRealBlocks&&o.getName()=='li'){
            o=O.range.document.createElement(n||'p');
            p.extractContents().appendTo(o);
            o.trim();
            p.insertNode(o);
            r=s=true;
        }else if(o.getName()!='li'){
            if(!p.checkStartOfBlock()||!p.checkEndOfBlock()){
                o=o.clone(false);
                p.extractContents().appendTo(o);
                o.trim();
                var K=p.splitBlock();
                r=!K.wasStartOfBlock;
                s=!K.wasEndOfBlock;
                p.insertNode(o);
            }
        }else if(!q)O._.nextNode=o.equals(v)?null:p.getBoundaryNodes().endNode.getNextSourceNode(true,null,v);
}
if(r){
    var L=o.getPrevious();
    if(L&&L.type==1)if(L.getName()=='br')L.remove();
        else if(L.getLast()&&L.getLast().$.nodeName.toLowerCase()=='br')L.getLast().remove();
}
if(s){
    var M=d.walker.bookmark(false,true),N=o.getLast();
    if(N&&N.type==1&&N.getName()=='br')if(c||N.getPrevious(M)||N.getNext(M))N.remove();
}
if(!O._.nextNode)O._.nextNode=q||o.equals(v)?null:o.getNextSourceNode(true,null,v);
    return o;
}
};

d.range.prototype.createIterator=function(){
    return new l(this);
};

})();
j.add('panelbutton',{
    requires:['button'],
    beforeInit:function(l){
        l.ui.addHandler(4,k.panelButton.handler);
    }
});
a.UI_PANELBUTTON=4;
(function(){
    var l=function(m){
        var o=this;
        var n=o._;
        if(n.state==0)return;
        o.createPanel(m);
        if(n.on){
            n.panel.hide();
            return;
        }
        n.panel.showBlock(o._.id,o.document.getById(o._.id),4);
    };

    k.panelButton=e.createClass({
        base:k.button,
        $:function(m){
            var o=this;
            var n=m.panel;
            delete m.panel;
            o.base(m);
            o.document=n&&n.parent&&n.parent.getDocument()||a.document;
            o.hasArrow=true;
            o.click=l;
            o._={
                panelDefinition:n
            };

    },
    statics:{
        handler:{
            create:function(m){
                return new k.panelButton(m);
            }
        }
    },
proto:{
    createPanel:function(m){
        var n=this._;
        if(n.panel)return;
        var o=this._.panelDefinition||{},p=o.parent||a.document.getBody(),q=this._.panel=new k.floatPanel(m,p,o),r=this;
        q.onShow=function(){
            if(r.className)this.element.getFirst().addClass(r.className+'_panel');
            n.oldState=r._.state;
            r.setState(1);
            n.on=1;
            if(r.onOpen)r.onOpen();
        };

        q.onHide=function(){
            if(r.className)this.element.getFirst().removeClass(r.className+'_panel');
            r.setState(n.oldState);
            n.on=0;
            if(r.onClose)r.onClose();
        };

        q.onEscape=function(){
            q.hide();
            r.document.getById(n.id).focus();
        };

        if(this.onBlock)this.onBlock(q,n.id);
        q.getBlock(n.id).onHide=function(){
            n.on=0;
            r.setState(2);
        };

}
}
});
})();
j.add('floatpanel',{
    requires:['panel']
    });
(function(){
    var l={},m=false;
    function n(o,p,q,r,s){
        var t=p.getUniqueId()+'-'+q.getUniqueId()+'-'+o.skinName+'-'+o.lang.dir+(o.uiColor&&'-'+o.uiColor||'')+(r.css&&'-'+r.css||'')+(s&&'-'+s||''),u=l[t];
        if(!u){
            u=l[t]=new k.panel(p,r);
            u.element=q.append(h.createFromHtml(u.renderHtml(o),p));
            u.element.setStyles({
                display:'none',
                position:'absolute'
            });
        }
        return u;
    };

    k.floatPanel=e.createClass({
        $:function(o,p,q,r){
            q.forceIFrame=true;
            var s=p.getDocument(),t=n(o,s,p,q,r||0),u=t.element,v=u.getFirst().getFirst();
            this.element=u;
            o.panels?o.panels.push(u):o.panels=[u];
            this._={
                panel:t,
                parentElement:p,
                definition:q,
                document:s,
                iframe:v,
                children:[],
                dir:o.lang.dir
                };

    },
    proto:{
        addBlock:function(o,p){
            return this._.panel.addBlock(o,p);
        },
        addListBlock:function(o,p){
            return this._.panel.addListBlock(o,p);
        },
        getBlock:function(o){
            return this._.panel.getBlock(o);
        },
        showBlock:function(o,p,q,r,s){
            var t=this._.panel,u=t.showBlock(o);
            this.allowBlur(false);
            m=true;
            var v=this.element,w=this._.iframe,x=this._.definition,y=p.getDocumentPosition(v.getDocument()),z=this._.dir=='rtl',A=y.x+(r||0),B=y.y+(s||0);
            if(z&&(q==1||q==4))A+=p.$.offsetWidth;
            else if(!z&&(q==2||q==3))A+=p.$.offsetWidth-1;
            if(q==3||q==4)B+=p.$.offsetHeight-1;
            this._.panel._.offsetParentId=p.getId();
            v.setStyles({
                top:B+'px',
                left:'-3000px',
                visibility:'hidden',
                opacity:'0',
                display:''
            });
            if(!this._.blurSet){
                var C=c?w:new d.window(w.$.contentWindow);
                a.event.useCapture=true;
                C.on('blur',function(D){
                    var G=this;
                    if(c&&!G.allowBlur())return;
                    var E=D.data.getTarget(),F=E.getWindow&&E.getWindow();
                    if(F&&F.equals(C))return;
                    if(G.visible&&!G._.activeChild&&!m)G.hide();
                },this);
                C.on('focus',function(){
                    this._.focused=true;
                    this.hideChild();
                    this.allowBlur(true);
                },this);
                a.event.useCapture=false;
                this._.blurSet=1;
            }
            t.onEscape=e.bind(function(){
                this.onEscape&&this.onEscape();
            },this);
            e.setTimeout(function(){
                if(z)A-=v.$.offsetWidth;
                v.setStyles({
                    left:A+'px',
                    visibility:'',
                    opacity:'1'
                });
                if(u.autoSize){
                    function D(){
                        var E=v.getFirst(),F=u.element.$.scrollHeight;
                        if(c&&b.quirks&&F>0)F+=(E.$.offsetHeight||0)-(E.$.clientHeight||0);
                        E.setStyle('height',F+'px');
                        t._.currentBlock.element.setStyle('display','none').removeStyle('display');
                    };

                    if(t.isLoaded)D();else t.onLoad=D;
                }else v.getFirst().removeStyle('height');
                e.setTimeout(function(){
                    if(x.voiceLabel)if(b.gecko){
                        var E=w.getParent();
                        E.setAttribute('role','region');
                        E.setAttribute('title',x.voiceLabel);
                        w.setAttribute('role','region');
                        w.setAttribute('title',' ');
                    }
                    if(c&&b.quirks)w.focus();else w.$.contentWindow.focus();
                    if(c&&!b.quirks)this.allowBlur(true);
                },0,this);
            },0,this);
            this.visible=1;
            if(this.onShow)this.onShow.call(this);
            m=false;
        },
        hide:function(){
            var o=this;
            if(o.visible&&(!o.onHide||o.onHide.call(o)!==true)){
                o.hideChild();
                o.element.setStyle('display','none');
                o.visible=0;
            }
        },
    allowBlur:function(o){
        var p=this._.panel;
        if(o!=undefined)p.allowBlur=o;
        return p.allowBlur;
    },
    showAsChild:function(o,p,q,r,s,t){
        if(this._.activeChild==o&&o._.panel._.offsetParentId==q.getId())return;
        this.hideChild();
        o.onHide=e.bind(function(){
            e.setTimeout(function(){
                if(!this._.focused)this.hide();
            },0,this);
        },this);
        this._.activeChild=o;
        this._.focused=false;
        o.showBlock(p,q,r,s,t);
        if(b.ie7Compat||b.ie8&&b.ie6Compat)setTimeout(function(){
            o.element.getChild(0).$.style.cssText+='';
        },100);
    },
    hideChild:function(){
        var o=this._.activeChild;
        if(o){
            delete o.onHide;
            delete this._.activeChild;
            o.hide();
        }
    }
    }
});
})();
j.add('menu',{
    beforeInit:function(l){
        var m=l.config.menu_groups.split(','),n={};

        for(var o=0;o<m.length;o++)n[m[o]]=o+1;
        l._.menuGroups=n;
        l._.menuItems={};

},
requires:['floatpanel']
});
e.extend(a.editor.prototype,{
    addMenuGroup:function(l,m){
        this._.menuGroups[l]=m||100;
    },
    addMenuItem:function(l,m){
        if(this._.menuGroups[m.group])this._.menuItems[l]=new a.menuItem(this,l,m);
    },
    addMenuItems:function(l){
        for(var m in l)this.addMenuItem(m,l[m]);
    },
    getMenuItem:function(l){
        return this._.menuItems[l];
    }
});
(function(){
    a.menu=e.createClass({
        $:function(m,n){
            var o=this;
            o.id='cke_'+e.getNextNumber();
            o.editor=m;
            o.items=[];
            o._.level=n||1;
        },
        _:{
            showSubMenu:function(m){
                var s=this;
                var n=s._.subMenu,o=s.items[m],p=o.getItems&&o.getItems();
                if(!p){
                    s._.panel.hideChild();
                    return;
                }
                if(n)n.removeAll();
                else{
                    n=s._.subMenu=new a.menu(s.editor,s._.level+1);
                    n.parent=s;
                    n.onClick=e.bind(s.onClick,s);
                }
                for(var q in p)n.add(s.editor.getMenuItem(q));var r=s._.panel.getBlock(s.id).element.getDocument().getById(s.id+String(m));
                n.show(r,2);
            }
        },
    proto:{
        add:function(m){
            if(!m.order)m.order=this.items.length;
            this.items.push(m);
        },
        removeAll:function(){
            this.items=[];
        },
        show:function(m,n,o,p){
            var q=this.items,r=this.editor,s=this._.panel,t=this._.element;
            if(!s){
                s=this._.panel=new k.floatPanel(this.editor,a.document.getBody(),{
                    css:[a.getUrl(r.skinPath+'editor.css')],
                    level:this._.level-1,
                    className:r.skinClass+' cke_contextmenu'
                    },this._.level);
                s.onEscape=e.bind(function(){
                    this.onEscape&&this.onEscape();
                    this.hide();
                },this);
                s.onHide=e.bind(function(){
                    this.onHide&&this.onHide();
                },this);
                var u=s.addBlock(this.id);
                u.autoSize=true;
                var v=u.keys;
                v[40]='next';
                v[9]='next';
                v[38]='prev';
                v[2000+9]='prev';
                v[32]='click';
                v[39]='click';
                t=this._.element=u.element;
                t.addClass(r.skinClass);
                var w=t.getDocument();
                w.getBody().setStyle('overflow','hidden');
                w.getElementsByTag('html').getItem(0).setStyle('overflow','hidden');
                this._.itemOverFn=e.addFunction(function(C){
                    var D=this;
                    clearTimeout(D._.showSubTimeout);
                    D._.showSubTimeout=e.setTimeout(D._.showSubMenu,r.config.menu_subMenuDelay,D,[C]);
                },this);
                this._.itemOutFn=e.addFunction(function(C){
                    clearTimeout(this._.showSubTimeout);
                },this);
                this._.itemClickFn=e.addFunction(function(C){
                    var E=this;
                    var D=E.items[C];
                    if(D.state==0){
                        E.hide();
                        return;
                    }
                    if(D.getItems)E._.showSubMenu(C);else E.onClick&&E.onClick(D);
                },this);
            }
            l(q);
            var x=['<div class="cke_menu">'],y=q.length,z=y&&q[0].group;
            for(var A=0;A<y;A++){
                var B=q[A];
                if(z!=B.group){
                    x.push('<div class="cke_menuseparator"></div>');
                    z=B.group;
                }
                B.render(this,A,x);
            }
            x.push('</div>');
            t.setHtml(x.join(''));
            if(this.parent)this.parent._.panel.showAsChild(s,this.id,m,n,o,p);else s.showBlock(this.id,m,n,o,p);
            r.fire('menuShow',[s]);
        },
        hide:function(){
            this._.panel&&this._.panel.hide();
        }
    }
    });
function l(m){
    m.sort(function(n,o){
        if(n.group<o.group)return-1;
        else if(n.group>o.group)return 1;
        return n.order<o.order?-1:n.order>o.order?1:0;
    });
};

})();
a.menuItem=e.createClass({
    $:function(l,m,n){
        var o=this;
        e.extend(o,n,{
            order:0,
            className:'cke_button_'+m
            });
        o.group=l._.menuGroups[o.group];
        o.editor=l;
        o.name=m;
    },
    proto:{
        render:function(l,m,n){
            var t=this;
            var o=l.id+String(m),p=typeof t.state=='undefined'?2:t.state,q=' cke_'+(p==1?'on':p==0?'disabled':'off'),r=t.label;
            if(p==0)r=t.editor.lang.common.unavailable.replace('%1',r);
            if(t.className)q+=' '+t.className;
            n.push('<span class="cke_menuitem"><a id="',o,'" class="',q,'" href="javascript:void(\'',(t.label||'').replace("'",''),'\')" title="',t.label,'" tabindex="-1"_cke_focus=1 hidefocus="true"');
            if(b.opera||b.gecko&&b.mac)n.push(' onkeypress="return false;"');
            if(b.gecko)n.push(' onblur="this.style.cssText = this.style.cssText;"');
            var s=(t.iconOffset||0)*(-16);
            n.push(' onmouseover="CKEDITOR.tools.callFunction(',l._.itemOverFn,',',m,');" onmouseout="CKEDITOR.tools.callFunction(',l._.itemOutFn,',',m,');" onclick="CKEDITOR.tools.callFunction(',l._.itemClickFn,',',m,'); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"'+(t.icon?' style="background-image:url('+a.getUrl(t.icon)+');background-position:0 '+s+'px;"':'')+'></span></span>'+'<span class="cke_label">');
            if(t.getItems)n.push('<span class="cke_menuarrow"></span>');
            n.push(r,'</span></a></span>');
        }
    }
});
i.menu_subMenuDelay=400;
i.menu_groups='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea';
(function(){
    function l(){
        var v=this;
        try{
            var s=v.getSelection();
            if(!s)return;
            var t=s.getStartElement(),u=new d.elementPath(t);
            if(!u.compare(v._.selectionPreviousPath)){
                v._.selectionPreviousPath=u;
                v.fire('selectionChange',{
                    selection:s,
                    path:u,
                    element:t
                });
            }
        }catch(w){}
};

var m,n;
function o(){
    n=true;
    if(m)return;
    p.call(this);
    m=e.setTimeout(p,200,this);
};

function p(){
    m=null;
    if(n){
        e.setTimeout(l,0,this);
        n=false;
    }
};

var q={
    exec:function(s){
        switch(s.mode){
            case 'wysiwyg':
                s.document.$.execCommand('SelectAll',false,null);
                break;
            case 'source':
        }
    },
canUndo:false
};

j.add('selection',{
    init:function(s){
        s.on('contentDom',function(){
            var t=s.document;
            if(c){
                var u,v;
                t.on('focusin',function(){
                    if(u){
                        try{
                            u.select();
                        }catch(y){}
                        u=null;
                    }
                });
            s.window.on('focus',function(){
                v=true;
                x();
            });
            s.document.on('beforedeactivate',function(){
                v=false;
                s.document.$.execCommand('Unselect');
            });
            t.on('mousedown',w);
            t.on('mouseup',function(){
                v=true;
                setTimeout(function(){
                    x(true);
                },0);
            });
            t.on('keydown',w);
            t.on('keyup',function(){
                v=true;
                x();
            });
            t.on('selectionchange',x);
            function w(){
                v=false;
            };

            function x(y){
                if(v){
                    var z=s.document,A=z&&z.$.selection;
                    if(y&&A&&A.type=='None')if(!z.$.queryCommandEnabled('InsertImage')){
                        e.setTimeout(x,50,this,true);
                        return;
                    }
                    u=A&&A.createRange();
                    o.call(s);
                }
            };

    }else{
        t.on('mouseup',o,s);
        t.on('keyup',o,s);
    }
});
s.addCommand('selectAll',q);
s.ui.addButton('SelectAll',{
    label:s.lang.selectAll,
    command:'selectAll'
});
s.selectionChange=o;
}
});
a.editor.prototype.getSelection=function(){
    return this.document&&this.document.getSelection();
};

a.editor.prototype.forceNextSelectionCheck=function(){
    delete this._.selectionPreviousPath;
};

g.prototype.getSelection=function(){
    var s=new d.selection(this);
    return!s||s.isInvalid?null:s;
};

a.SELECTION_NONE=1;
a.SELECTION_TEXT=2;
a.SELECTION_ELEMENT=3;
d.selection=function(s){
    var v=this;
    var t=s.getCustomData('cke_locked_selection');
    if(t)return t;
    v.document=s;
    v.isLocked=false;
    v._={
        cache:{}
};

if(c){
    var u=v.getNative().createRange();
    if(!u||u.item&&u.item(0).ownerDocument!=v.document.$||u.parentElement&&u.parentElement().ownerDocument!=v.document.$)v.isInvalid=true;
}
return v;
};

var r={
    img:1,
    hr:1,
    li:1,
    table:1,
    tr:1,
    td:1,
    embed:1,
    object:1,
    ol:1,
    ul:1,
    a:1,
    input:1,
    form:1,
    select:1,
    textarea:1,
    button:1,
    fieldset:1,
    th:1,
    thead:1,
    tfoot:1
};

d.selection.prototype={
    getNative:c?function(){
        return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.$.selection);
    }:function(){
        return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.getWindow().$.getSelection());
    },
    getType:c?function(){
        var s=this._.cache;
        if(s.type)return s.type;
        var t=1;
        try{
            var u=this.getNative(),v=u.type;
            if(v=='Text')t=2;
            if(v=='Control')t=3;
            if(u.createRange().parentElement)t=2;
        }catch(w){}
        return s.type=t;
    }:function(){
        var s=this._.cache;
        if(s.type)return s.type;
        var t=2,u=this.getNative();
        if(!u)t=1;
        else if(u.rangeCount==1){
            var v=u.getRangeAt(0),w=v.startContainer;
            if(w==v.endContainer&&w.nodeType==1&&v.endOffset-v.startOffset==1&&r[w.childNodes[v.startOffset].nodeName.toLowerCase()])t=3;
        }
        return s.type=t;
    },
    getRanges:c?(function(){
        var s=function(t,u){
            t=t.duplicate();
            t.collapse(u);
            var v=t.parentElement(),w=v.childNodes,x;
            for(var y=0;y<w.length;y++){
                var z=w[y];
                if(z.nodeType==1){
                    x=t.duplicate();
                    x.moveToElementText(z);
                    x.collapse();
                    var A=x.compareEndPoints('StartToStart',t);
                    if(A>0)break;
                    else if(A===0)return{
                        container:v,
                        offset:y
                    };

                    x=null;
                }
            }
            if(!x){
            x=t.duplicate();
            x.moveToElementText(v);
            x.collapse(false);
        }
        x.setEndPoint('StartToStart',t);
        var B=x.text.replace(/(\r\n|\r)/g,'\n').length;
        while(B>0)B-=w[--y].nodeValue.length;
        if(B===0)return{
            container:v,
            offset:y
        };else return{
            container:w[y],
            offset:-B
            };

    };

    return function(){
        var E=this;
        var t=E._.cache;
        if(t.ranges)return t.ranges;
        var u=E.getNative(),v=u&&u.createRange(),w=E.getType(),x;
        if(!u)return[];
        if(w==2){
            x=new d.range(E.document);
            var y=s(v,true);
            x.setStart(new d.node(y.container),y.offset);
            y=s(v);
            x.setEnd(new d.node(y.container),y.offset);
            return t.ranges=[x];
        }else if(w==3){
            var z=E._.cache.ranges=[];
            for(var A=0;A<v.length;A++){
                var B=v.item(A),C=B.parentNode,D=0;
                x=new d.range(E.document);
                for(;D<C.childNodes.length&&C.childNodes[D]!=B;D++){}
                x.setStart(new d.node(C),D);
                x.setEnd(new d.node(C),D+1);
                z.push(x);
            }
            return z;
        }
        return t.ranges=[];
    };

})():function(){
    var s=this._.cache;
    if(s.ranges)return s.ranges;
    var t=[],u=this.getNative();
    if(!u)return[];
    for(var v=0;v<u.rangeCount;v++){
        var w=u.getRangeAt(v),x=new d.range(this.document);
        x.setStart(new d.node(w.startContainer),w.startOffset);
        x.setEnd(new d.node(w.endContainer),w.endOffset);
        t.push(x);
    }
    return s.ranges=t;
},
getStartElement:function(){
    var z=this;
    var s=z._.cache;
    if(s.startElement!==undefined)return s.startElement;
    var t,u=z.getNative();
    switch(z.getType()){
        case 3:
            return z.getSelectedElement();
        case 2:
            var v=z.getRanges()[0];
            if(v)if(!v.collapsed){
            v.optimize();
            for(;;){
                var w=v.startContainer,x=v.startOffset;
                if(x==(w.getChildCount?w.getChildCount():w.getLength()))v.setStartAfter(w);else break;
            }
            t=v.startContainer;
            if(t.type!=1)return t.getParent();
            t=t.getChild(v.startOffset);
            if(!t||t.type!=1)return v.startContainer;
            var y=t.getFirst();
            while(y&&y.type==1){
                t=y;
                y=y.getFirst();
            }
            return t;
        }
        if(c){
            v=u.createRange();
            v.collapse(true);
            t=v.parentElement();
        }else{
            t=u.anchorNode;
            if(t&&t.nodeType!=1)t=t.parentNode;
        }
        }
        return s.startElement=t?new h(t):null;
},
getSelectedElement:function(){
    var s=this._.cache;
    if(s.selectedElement!==undefined)return s.selectedElement;
    var t;
    if(this.getType()==3){
        var u=this.getNative();
        if(c)try{
            t=u.createRange().item(0);
        }catch(w){}else{
            var v=u.getRangeAt(0);
            t=v.startContainer.childNodes[v.startOffset];
        }
    }
    return s.selectedElement=t?new h(t):null;
},
lock:function(){
    var s=this;
    s.getRanges();
    s.getStartElement();
    s.getSelectedElement();
    s._.cache.nativeSel={};

    s.isLocked=true;
    s.document.setCustomData('cke_locked_selection',s);
},
unlock:function(s){
    var x=this;
    var t=x.document,u=t.getCustomData('cke_locked_selection');
    if(u){
        t.setCustomData('cke_locked_selection',null);
        if(s){
            var v=u.getSelectedElement(),w=!v&&u.getRanges();
            x.isLocked=false;
            x.reset();
            t.getBody().focus();
            if(v)x.selectElement(v);else x.selectRanges(w);
        }
    }
    if(!u||!s){
    x.isLocked=false;
    x.reset();
}
},
reset:function(){
    this._.cache={};

},
selectElement:function(s){
    var v=this;
    if(v.isLocked){
        var t=new d.range(v.document);
        t.setStartBefore(s);
        t.setEndAfter(s);
        v._.cache.selectedElement=s;
        v._.cache.startElement=s;
        v._.cache.ranges=[t];
        v._.cache.type=3;
        return;
    }
    if(c){
        v.getNative().empty();
        try{
            t=v.document.$.body.createControlRange();
            t.addElement(s.$);
            t.select();
        }catch(w){
            t=v.document.$.body.createTextRange();
            t.moveToElementText(s.$);
            t.select();
        }
        v.reset();
    }else{
        t=v.document.$.createRange();
        t.selectNode(s.$);
        var u=v.getNative();
        u.removeAllRanges();
        u.addRange(t);
        v.reset();
    }
},
selectRanges:function(s){
    var y=this;
    if(y.isLocked){
        y._.cache.selectedElement=null;
        y._.cache.startElement=s[0].getTouchedStartNode();
        y._.cache.ranges=s;
        y._.cache.type=2;
        return;
    }
    if(c){
        if(s[0])s[0].select();
        y.reset();
    }else{
        var t=y.getNative();
        t.removeAllRanges();
        for(var u=0;u<s.length;u++){
            var v=s[u],w=y.document.$.createRange(),x=v.startContainer;
            if(v.collapsed&&b.gecko&&b.version<10900&&x.type==1&&!x.getChildCount())x.appendText('');
            w.setStart(x.$,v.startOffset);
            w.setEnd(v.endContainer.$,v.endOffset);
            t.addRange(w);
        }
        y.reset();
    }
},
createBookmarks:function(s){
    var t=[],u=this.getRanges(),v=u.length,w;
    for(var x=0;x<v;x++){
        t.push(w=u[x].createBookmark(s,true));
        s=w.serializable;
        var y=s?this.document.getById(w.startNode):w.startNode,z=s?this.document.getById(w.endNode):w.endNode;
        for(var A=x+1;A<v;A++){
            var B=u[A],C=B.startContainer,D=B.endContainer;
            C.equals(y.getParent())&&B.startOffset++;
            C.equals(z.getParent())&&B.startOffset++;
            D.equals(y.getParent())&&B.endOffset++;
            D.equals(z.getParent())&&B.endOffset++;
        }
        }
        return t;
},
createBookmarks2:function(s){
    var t=[],u=this.getRanges();
    for(var v=0;v<u.length;v++)t.push(u[v].createBookmark2(s));
    return t;
},
selectBookmarks:function(s){
    var t=[];
    for(var u=0;u<s.length;u++){
        var v=new d.range(this.document);
        v.moveToBookmark(s[u]);
        t.push(v);
    }
    this.selectRanges(t);
    return this;
}
};

})();
d.range.prototype.select=c?function(l){
    var u=this;
    var m=u.collapsed,n,o,p=u.createBookmark(),q=p.startNode,r;
    if(!m)r=p.endNode;
    var s=u.document.$.body.createTextRange();
    s.moveToElementText(q.$);
    s.moveStart('character',1);
    if(r){
        var t=u.document.$.body.createTextRange();
        t.moveToElementText(r.$);
        s.setEndPoint('EndToEnd',t);
        s.moveEnd('character',-1);
    }else{
        n=l||!q.hasPrevious()||q.getPrevious().is&&q.getPrevious().is('br');
        o=u.document.createElement('span');
        o.setHtml('&#65279;');
        o.insertBefore(q);
        if(n)u.document.createText('﻿').insertBefore(q);
    }
    u.setStartBefore(q);
    q.remove();
    if(m){
        if(n){
            s.moveStart('character',-1);
            s.select();
            u.document.$.selection.clear();
        }else s.select();
        o.remove();
    }else{
        u.setEndBefore(r);
        r.remove();
        s.select();
    }
}:function(){
    var o=this;
    var l=o.startContainer;
    if(o.collapsed&&l.type==1&&!l.getChildCount())l.append(new d.text(''));
    var m=o.document.$.createRange();
    m.setStart(l.$,o.startOffset);
    try{
        m.setEnd(o.endContainer.$,o.endOffset);
    }catch(p){
        if(p.toString().indexOf('NS_ERROR_ILLEGAL_VALUE')>=0){
            o.collapse(true);
            m.setEnd(o.endContainer.$,o.endOffset);
        }else throw p;
    }
    var n=o.document.getSelection().getNative();
    n.removeAllRanges();
    n.addRange(m);
};
(function(){
    var l={
        elements:{
            $:function(m){
                var n=m.attributes._cke_realelement,o=n&&new a.htmlParser.fragment.fromHtml(decodeURIComponent(n)),p=o&&o.children[0];
                if(p){
                    var q=m.attributes.style;
                    if(q){
                        var r=/(?:^|\s)width\s*:\s*(\d+)/.exec(q),s=r&&r[1];
                        r=/(?:^|\s)height\s*:\s*(\d+)/.exec(q);
                        var t=r&&r[1];
                        if(s)p.attributes.width=s;
                        if(t)p.attributes.height=t;
                    }
                }
                return p;
        }
    }
};

j.add('fakeobjects',{
    requires:['htmlwriter'],
    afterInit:function(m){
        var n=m.dataProcessor,o=n&&n.htmlFilter;
        if(o)o.addRules(l);
    }
});
})();
a.editor.prototype.createFakeElement=function(l,m,n,o){
    var p=this.lang.fakeobjects,q={
        'class':m,
        src:a.getUrl('images/spacer.gif'),
        _cke_realelement:encodeURIComponent(l.getOuterHtml()),
        alt:p[n]||p.unknown
        };

    if(n)q._cke_real_element_type=n;
    if(o)q._cke_resizable=o;
    return this.document.createElement('img',{
        attributes:q
    });
};

a.editor.prototype.createFakeParserElement=function(l,m,n,o){
    var p=new a.htmlParser.basicWriter();
    l.writeHtml(p);
    var q=p.getHtml(),r=this.lang.fakeobjects,s={
        'class':m,
        src:a.getUrl('images/spacer.gif'),
        _cke_realelement:encodeURIComponent(q),
        alt:r[n]||r.unknown
        };

    if(n)s._cke_real_element_type=n;
    if(o)s._cke_resizable=o;
    return new a.htmlParser.element('img',s);
};

a.editor.prototype.restoreRealElement=function(l){
    var m=decodeURIComponent(l.getAttribute('_cke_realelement'));
    return h.createFromHtml(m,this.document);
};

j.add('richcombo',{
    requires:['floatpanel','listblock','button'],
    beforeInit:function(l){
        l.ui.addHandler(3,k.richCombo.handler);
    }
});
a.UI_RICHCOMBO=3;
k.richCombo=e.createClass({
    $:function(l){
        var n=this;
        e.extend(n,l,{
            title:l.label,
            modes:{
                wysiwyg:1
            }
        });
    var m=n.panel||{};

    delete n.panel;
    n.id=e.getNextNumber();
    n.document=m&&m.parent&&m.parent.getDocument()||a.document;
    m.className=(m.className||'')+(' cke_rcombopanel');
    n._={
        panelDefinition:m,
        items:{},
        state:2
    };

},
statics:{
    handler:{
        create:function(l){
            return new k.richCombo(l);
        }
    }
},
proto:{
    renderHtml:function(l){
        var m=[];
        this.render(l,m);
        return m.join('');
    },
    render:function(l,m){
        var n='cke_'+this.id,o=e.addFunction(function(r){
            var u=this;
            var s=u._;
            if(s.state==0)return;
            u.createPanel(l);
            if(s.on){
                s.panel.hide();
                return;
            }
            if(!s.committed){
                s.list.commit();
                s.committed=1;
            }
            var t=u.getValue();
            if(t)s.list.mark(t);else s.list.unmarkAll();
            s.panel.showBlock(u.id,new h(r),4);
        },this),p={
            id:n,
            combo:this,
            focus:function(){
                var r=a.document.getById(n).getChild(1);
                r.focus();
            },
            execute:o
        };

        l.on('mode',function(){
            this.setState(this.modes[l.mode]?2:0);
        },this);
        var q=e.addFunction(function(r,s){
            r=new d.event(r);
            var t=r.getKeystroke();
            switch(t){
                case 13:case 32:case 40:
                    e.callFunction(o,s);
                    break;
                default:
                    p.onkey(p,t);
            }
            r.preventDefault();
        });
        m.push('<span class="cke_rcombo">','<span id=',n);
        if(this.className)m.push(' class="',this.className,' cke_off"');
        m.push('><span class=cke_label>',this.label,'</span><a hidefocus=true title="',this.title,'" tabindex="-1" href="javascript:void(\'',this.label,"')\"");
        if(b.opera||b.gecko&&b.mac)m.push(' onkeypress="return false;"');
        if(b.gecko)m.push(' onblur="this.style.cssText = this.style.cssText;"');
        m.push(' onkeydown="CKEDITOR.tools.callFunction( ',q,', event, this );" onclick="CKEDITOR.tools.callFunction(',o,', this); return false;"><span><span class="cke_accessibility">'+(this.voiceLabel?this.voiceLabel+' ':'')+'</span>'+'<span id="'+n+'_text" class="cke_text cke_inline_label">'+this.label+'</span>'+'</span>'+'<span class=cke_openbutton></span>'+'</a>'+'</span>'+'</span>');
        if(this.onRender)this.onRender();
        return p;
    },
    createPanel:function(l){
        if(this._.panel)return;
        var m=this._.panelDefinition,n=m.parent||a.document.getBody(),o=new k.floatPanel(l,n,m),p=o.addListBlock(this.id,this.multiSelect),q=this;
        o.onShow=function(){
            if(q.className)this.element.getFirst().addClass(q.className+'_panel');
            q.setState(1);
            p.focus(!q.multiSelect&&q.getValue());
            q._.on=1;
            if(q.onOpen)q.onOpen();
        };

        o.onHide=function(){
            if(q.className)this.element.getFirst().removeClass(q.className+'_panel');
            q.setState(2);
            q._.on=0;
            if(q.onClose)q.onClose();
        };

        o.onEscape=function(){
            o.hide();
            q.document.getById('cke_'+q.id).getFirst().getNext().focus();
        };

        p.onClick=function(r,s){
            q.document.getWindow().focus();
            if(q.onClick)q.onClick.call(q,r,s);
            if(s)q.setValue(r,q._.items[r]);else q.setValue('');
            o.hide();
        };

        this._.panel=o;
        this._.list=p;
        o.getBlock(this.id).onHide=function(){
            q._.on=0;
            q.setState(2);
        };

        if(this.init)this.init();
    },
    setValue:function(l,m){
        var o=this;
        o._.value=l;
        var n=o.document.getById('cke_'+o.id+'_text');
        if(!l){
            m=o.label;
            n.addClass('cke_inline_label');
        }else n.removeClass('cke_inline_label');
        n.setHtml(typeof m!='undefined'?m:l);
    },
    getValue:function(){
        return this._.value||'';
    },
    unmarkAll:function(){
        this._.list.unmarkAll();
    },
    mark:function(l){
        this._.list.mark(l);
    },
    hideItem:function(l){
        this._.list.hideItem(l);
    },
    hideGroup:function(l){
        this._.list.hideGroup(l);
    },
    showAll:function(){
        this._.list.showAll();
    },
    add:function(l,m,n){
        this._.items[l]=n||l;
        this._.list.add(l,m,n);
    },
    startGroup:function(l){
        this._.list.startGroup(l);
    },
    commit:function(){
        this._.list.commit();
    },
    setState:function(l){
        var m=this;
        if(m._.state==l)return;
        m.document.getById('cke_'+m.id).setState(l);
        m._.state=l;
    }
}
});
k.prototype.addRichCombo=function(l,m){
    this.add(l,3,m);
};

j.add('htmlwriter');
a.htmlWriter=e.createClass({
    base:a.htmlParser.basicWriter,
    $:function(){
        var n=this;
        n.base();
        n.indentationChars='\t';
        n.selfClosingEnd=' />';
        n.lineBreakChars='\n';
        n.forceSimpleAmpersand=false;
        n.sortAttributes=true;
        n._.indent=false;
        n._.indentation='';
        n._.rules={};

        var l=f;
        for(var m in e.extend({},l.$block,l.$listItem,l.$tableContent))n.setRules(m,{
            indent:true,
            breakBeforeOpen:true,
            breakAfterOpen:true,
            breakBeforeClose:!l[m]['#'],
            breakAfterClose:true
        });n.setRules('br',{
            breakAfterOpen:true
        });
        n.setRules('pre',{
            indent:false
        });
    },
    proto:{
        openTag:function(l,m){
            var o=this;
            var n=o._.rules[l];
            if(o._.indent)o.indentation();
            else if(n&&n.breakBeforeOpen){
                o.lineBreak();
                o.indentation();
            }
            o._.output.push('<',l);
        },
        openTagClose:function(l,m){
            var o=this;
            var n=o._.rules[l];
            if(m)o._.output.push(o.selfClosingEnd);
            else{
                o._.output.push('>');
                if(n&&n.indent)o._.indentation+=o.indentationChars;
            }
            if(n&&n.breakAfterOpen)o.lineBreak();
        },
        attribute:function(l,m){
            if(this.forceSimpleAmpersand)m=m.replace(/&amp;/,'&');
            this._.output.push(' ',l,'="',m,'"');
        },
        closeTag:function(l){
            var n=this;
            var m=n._.rules[l];
            if(m&&m.indent)n._.indentation=n._.indentation.substr(n.indentationChars.length);
            if(n._.indent)n.indentation();
            else if(m&&m.breakBeforeClose){
                n.lineBreak();
                n.indentation();
            }
            n._.output.push('</',l,'>');
            if(m&&m.breakAfterClose)n.lineBreak();
        },
        text:function(l){
            if(this._.indent){
                this.indentation();
                l=e.ltrim(l);
            }
            this._.output.push(l);
        },
        comment:function(l){
            if(this._.indent)this.indentation();
            this._.output.push('<!--',l,'-->');
        },
        lineBreak:function(){
            var l=this;
            if(l._.output.length>0)l._.output.push(l.lineBreakChars);
            l._.indent=true;
        },
        indentation:function(){
            this._.output.push(this._.indentation);
            this._.indent=false;
        },
        setRules:function(l,m){
            this._.rules[l]=m;
        }
    }
});
j.add('menubutton',{
    requires:['button','contextmenu'],
    beforeInit:function(l){
        l.ui.addHandler(5,k.menuButton.handler);
    }
});
a.UI_MENUBUTTON=5;
(function(){
    var l=function(m){
        var n=this._;
        if(n.state===0)return;
        n.previousState=n.state;
        var o=n.menu;
        if(!o){
            o=n.menu=new j.contextMenu(m);
            o.onHide=e.bind(function(){
                this.setState(n.previousState);
            },this);
            if(this.onMenu)o.addListener(this.onMenu);
        }
        if(n.on){
            o.hide();
            return;
        }
        this.setState(1);
        o.show(a.document.getById(this._.id),4);
    };

    k.menuButton=e.createClass({
        base:k.button,
        $:function(m){
            var n=m.panel;
            delete m.panel;
            this.base(m);
            this.hasArrow=true;
            this.click=l;
        },
        statics:{
            handler:{
                create:function(m){
                    return new k.menuButton(m);
                }
            }
        }
    });
})();
j.add('dialog',{
    requires:['dialogui']
    });
a.DIALOG_RESIZE_NONE=0;
a.DIALOG_RESIZE_WIDTH=1;
a.DIALOG_RESIZE_HEIGHT=2;
a.DIALOG_RESIZE_BOTH=3;
(function(){
    function l(L){
        return!!this._.tabs[L][0].$.offsetHeight;
    };

    function m(){
        var P=this;
        var L=P._.currentTabId,M=P._.tabIdList.length,N=e.indexOf(P._.tabIdList,L)+M;
        for(var O=N-1;O>N-M;O--)if(l.call(P,P._.tabIdList[O%M]))return P._.tabIdList[O%M];return null;
    };

    function n(){
        var P=this;
        var L=P._.currentTabId,M=P._.tabIdList.length,N=e.indexOf(P._.tabIdList,L);
        for(var O=N+1;O<N+M;O++)if(l.call(P,P._.tabIdList[O%M]))return P._.tabIdList[O%M];return null;
    };

    var o={};

    a.dialog=function(L,M){
        var N=a.dialog._.dialogDefinitions[M];
        if(!N){
            console.log('Error: The dialog "'+M+'" is not defined.');
            return;
        }
        N=e.extend(N(L),q);
        N=e.clone(N);
        N=new u(this,N);
        this.definition=N=a.fire('dialogDefinition',{
            name:M,
            definition:N
        },L).definition;
        var O=a.document,P=L.theme.buildDialog(L);
        this._={
            editor:L,
            element:P.element,
            name:M,
            contentSize:{
                width:0,
                height:0
            },
            size:{
                width:0,
                height:0
            },
            updateSize:false,
            contents:{},
            buttons:{},
            accessKeyMap:{},
            tabs:{},
            tabIdList:[],
            currentTabId:null,
            currentTabIndex:null,
            pageCount:0,
            lastTab:null,
            tabBarMode:false,
            focusList:[],
            currentFocusIndex:0,
            hasFocus:false
        };

        this.parts=P.parts;
        this.parts.dialog.setStyles({
            position:b.ie6Compat?'absolute':'fixed',
            top:0,
            left:0,
            visibility:'hidden'
        });
        a.event.call(this);
        if(N.onLoad)this.on('load',N.onLoad);
        if(N.onShow)this.on('show',N.onShow);
        if(N.onHide)this.on('hide',N.onHide);
        if(N.onOk)this.on('ok',function(Z){
            if(N.onOk.call(this,Z)===false)Z.data.hide=false;
        });
        if(N.onCancel)this.on('cancel',function(Z){
            if(N.onCancel.call(this,Z)===false)Z.data.hide=false;
        });
        var Q=this,R=function(Z){
            var aa=Q._.contents,ab=false;
            for(var ac in aa)for(var ad in aa[ac]){
                ab=Z.call(this,aa[ac][ad]);
                if(ab)return;
            }
            };

    this.on('ok',function(Z){
        R(function(aa){
            if(aa.validate){
                var ab=aa.validate(this);
                if(typeof ab=='string'){
                    alert(ab);
                    ab=false;
                }
                if(ab===false){
                    if(aa.select)aa.select();else aa.focus();
                    Z.data.hide=false;
                    Z.stop();
                    return true;
                }
            }
        });
},this,null,0);
this.on('cancel',function(Z){
    R(function(aa){
        if(aa.isChanged()){
            if(!confirm(L.lang.common.confirmCancel))Z.data.hide=false;
            return true;
        }
    });
},this,null,0);
this.parts.close.on('click',function(Z){
    if(this.fire('cancel',{
        hide:true
    }).hide!==false)this.hide();
},this);
function S(Z){
    var aa=Q._.focusList,ab=Z?1:-1;
    if(aa.length<1)return;
    var ac=(Q._.currentFocusIndex+ab+aa.length)%(aa.length);
    while(!aa[ac].isFocusable()){
        ac=(ac+ab+aa.length)%(aa.length);
        if(ac==Q._.currentFocusIndex)break;
    }
    aa[ac].focus();
    if(aa[ac].type=='text')aa[ac].select();
};

function T(Z){
    if(Q!=a.dialog._.currentTop)return;
    var aa=Z.data.getKeystroke(),ab=false;
    if(aa==9||aa==2000+9){
        var ac=aa==2000+9;
        if(Q._.tabBarMode){
            var ad=ac?m.call(Q):n.call(Q);
            Q.selectPage(ad);
            Q._.tabs[ad][0].focus();
        }else S(!ac);
        ab=true;
    }else if(aa==4000+121&&!Q._.tabBarMode){
        Q._.tabBarMode=true;
        Q._.tabs[Q._.currentTabId][0].focus();
        ab=true;
    }else if((aa==37||aa==39)&&(Q._.tabBarMode)){
        ad=aa==37?m.call(Q):n.call(Q);
        Q.selectPage(ad);
        Q._.tabs[ad][0].focus();
        ab=true;
    }
    if(ab){
        Z.stop();
        Z.data.preventDefault();
    }
};

this.on('show',function(){
    a.document.on('keydown',T,this,null,0);
    if(b.ie6Compat){
        var Z=z.getChild(0).getFrameDocument();
        Z.on('keydown',T,this,null,0);
    }
});
this.on('hide',function(){
    a.document.removeListener('keydown',T);
});
this.on('iframeAdded',function(Z){
    var aa=new g(Z.data.iframe.$.contentWindow.document);
    aa.on('keydown',T,this,null,0);
});
this.on('show',function(){
    var ac=this;
    if(!ac._.hasFocus){
        ac._.currentFocusIndex=-1;
        S(true);
        if(ac._.editor.mode=='wysiwyg'&&c){
            var Z=L.document.$.selection,aa=Z.createRange();
            if(aa)if(aa.parentElement&&aa.parentElement().ownerDocument==L.document.$||aa.item&&aa.item(0).ownerDocument==L.document.$){
                var ab=document.body.createTextRange();
                ab.moveToElementText(ac.getElement().getFirst().$);
                ab.collapse(true);
                ab.select();
            }
            }
        }
},this,null,4294967295);
if(b.ie6Compat)this.on('load',function(Z){
    var aa=this.getElement(),ab=aa.getFirst();
    ab.remove();
    ab.appendTo(aa);
},this);
w(this);
x(this);
new d.text(N.title,a.document).appendTo(this.parts.title);
for(var U=0;U<N.contents.length;U++)this.addPage(N.contents[U]);
var V=/cke_dialog_tab(\s|$|_)/,W=/cke_dialog_tab(\s|$)/;
this.parts.tabs.on('click',function(Z){
    var ae=this;
    var aa=Z.data.getTarget(),ab=aa,ac,ad;
    if(!(V.test(aa.$.className)||aa.getName()=='a'))return;
    ac=aa.$.id.substr(0,aa.$.id.lastIndexOf('_'));
    ae.selectPage(ac);
    if(ae._.tabBarMode){
        ae._.tabBarMode=false;
        ae._.currentFocusIndex=-1;
        S(true);
    }
    Z.data.preventDefault();
},this);
var X=[],Y=a.dialog._.uiElementBuilders.hbox.build(this,{
    type:'hbox',
    className:'cke_dialog_footer_buttons',
    widths:[],
    children:N.buttons
    },X).getChild();
this.parts.footer.setHtml(X.join(''));
for(U=0;U<Y.length;U++)this._.buttons[Y[U].id]=Y[U];
a.skins.load(L,'dialog');
};

function p(L,M,N){
    this.element=M;
    this.focusIndex=N;
    this.isFocusable=function(){
        return true;
    };

    this.focus=function(){
        L._.currentFocusIndex=this.focusIndex;
        this.element.focus();
    };

    M.on('keydown',function(O){
        if(O.data.getKeystroke() in {
            32:1,
            13:1
        })this.fire('click');
    });
    M.on('focus',function(){
        this.fire('mouseover');
    });
    M.on('blur',function(){
        this.fire('mouseout');
    });
};

a.dialog.prototype={
    resize:(function(){
        return function(L,M){
            var N=this;
            if(N._.contentSize&&N._.contentSize.width==L&&N._.contentSize.height==M)return;
            a.dialog.fire('resize',{
                dialog:N,
                skin:N._.editor.skinName,
                width:L,
                height:M
            },N._.editor);
            N._.contentSize={
                width:L,
                height:M
            };

            N._.updateSize=true;
        };

    })(),
getSize:function(){
    var N=this;
    if(!N._.updateSize)return N._.size;
    var L=N._.element.getFirst(),M=N._.size={
        width:L.$.offsetWidth||0,
        height:L.$.offsetHeight||0
        };

    N._.updateSize=!M.width||!M.height;
    return M;
},
move:(function(){
    var L;
    return function(M,N){
        var Q=this;
        var O=Q._.element.getFirst();
        if(L===undefined)L=O.getComputedStyle('position')=='fixed';
        if(L&&Q._.position&&Q._.position.x==M&&Q._.position.y==N)return;
        Q._.position={
            x:M,
            y:N
        };

        if(!L){
            var P=a.document.getWindow().getScrollPosition();
            M+=P.x;
            N+=P.y;
        }
        O.setStyles({
            left:(M>0?M:0)+('px'),
            top:(N>0?N:0)+('px')
            });
    };

})(),
getPosition:function(){
    return e.extend({},this._.position);
},
show:function(){
    if(this._.editor.mode=='wysiwyg'&&c)this._.editor.getSelection().lock();
    var L=this._.element,M=this.definition;
    if(!(L.getParent()&&L.getParent().equals(a.document.getBody())))L.appendTo(a.document.getBody());else return;
    if(b.gecko&&b.version<10900){
        var N=this.parts.dialog;
        N.setStyle('position','absolute');
        setTimeout(function(){
            N.setStyle('position','fixed');
        },0);
    }
    this.resize(M.minWidth,M.minHeight);
    this.selectPage(this.definition.contents[0].id);
    this.reset();
    if(a.dialog._.currentZIndex===null)a.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex;
    this._.element.getFirst().setStyle('z-index',a.dialog._.currentZIndex+=10);
    if(a.dialog._.currentTop===null){
        a.dialog._.currentTop=this;
        this._.parentDialog=null;
        A(this._.editor);
        a.document.on('keydown',D);
        a.document.on('keyup',E);
        for(var O in {
            keyup:1,
            keydown:1,
            keypress:1
        })a.document.on(O,K);
        }else{
        this._.parentDialog=a.dialog._.currentTop;
        var P=this._.parentDialog.getElement().getFirst();
        P.$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2);
        a.dialog._.currentTop=this;
    }
    F(this,this,'\x1b',null,function(){
        this.getButton('cancel')&&this.getButton('cancel').click();
    });
    this._.hasFocus=false;
    e.setTimeout(function(){
        var Q=a.document.getWindow().getViewPaneSize(),R=this.getSize();
        this.move((Q.width-M.minWidth)/(2),(Q.height-R.height)/(2));
        this.parts.dialog.setStyle('visibility','');
        this.fireOnce('load',{});
        this.fire('show',{});
        this.foreach(function(S){
            S.setInitValue&&S.setInitValue();
        });
    },100,this);
},
foreach:function(L){
    var O=this;
    for(var M in O._.contents)for(var N in O._.contents[M])L(O._.contents[M][N]);return O;
},
reset:(function(){
    var L=function(M){
        if(M.reset)M.reset();
    };

    return function(){
        this.foreach(L);
        return this;
    };

})(),
setupContent:function(){
    var L=arguments;
    this.foreach(function(M){
        if(M.setup)M.setup.apply(M,L);
    });
},
commitContent:function(){
    var L=arguments;
    this.foreach(function(M){
        if(M.commit)M.commit.apply(M,L);
    });
},
hide:function(){
    this.fire('hide',{});
    var L=this._.element;
    if(!L.getParent())return;
    L.remove();
    this.parts.dialog.setStyle('visibility','hidden');
    G(this);
    if(!this._.parentDialog)B();
    else{
        var M=this._.parentDialog.getElement().getFirst();
        M.setStyle('z-index',parseInt(M.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2));
    }
    a.dialog._.currentTop=this._.parentDialog;
    if(!this._.parentDialog){
        a.dialog._.currentZIndex=null;
        a.document.removeListener('keydown',D);
        a.document.removeListener('keyup',E);
        a.document.removeListener('keypress',E);
        for(var N in {
            keyup:1,
            keydown:1,
            keypress:1
        })a.document.removeListener(N,K);var O=this._.editor;
        O.focus();
        if(O.mode=='wysiwyg'&&c)O.getSelection().unlock(true);
    }else a.dialog._.currentZIndex-=10;
    this.foreach(function(P){
        P.resetInitValue&&P.resetInitValue();
    });
},
addPage:function(L){
    var V=this;
    var M=[],N=L.label?' title="'+e.htmlEncode(L.label)+'"':'',O=L.elements,P=a.dialog._.uiElementBuilders.vbox.build(V,{
        type:'vbox',
        className:'cke_dialog_page_contents',
        children:L.elements,
        expand:!!L.expand,
        padding:L.padding,
        style:L.style||'width: 100%; height: 100%;'
        },M),Q=h.createFromHtml(M.join('')),R=h.createFromHtml(['<a class="cke_dialog_tab"',V._.pageCount>0?' cke_last':'cke_first',N,!!L.hidden?' style="display:none"':'',' id="',L.id+'_',e.getNextNumber(),'" href="javascript:void(0)"',' hidefocus="true">',L.label,'</a>'].join(''));
    if(V._.pageCount===0)V.parts.dialog.addClass('cke_single_page');else V.parts.dialog.removeClass('cke_single_page');
    V._.tabs[L.id]=[R,Q];
    V._.tabIdList.push(L.id);
    V._.pageCount++;
    V._.lastTab=R;
    var S=V._.contents[L.id]={},T,U=P.getChild();
    while(T=U.shift()){
        S[T.id]=T;
        if(typeof T.getChild=='function')U.push.apply(U,T.getChild());
    }
    Q.setAttribute('name',L.id);
    Q.appendTo(V.parts.contents);
    R.unselectable();
    V.parts.tabs.append(R);
    if(L.accessKey){
        F(V,V,'CTRL+'+L.accessKey,I,H);
        V._.accessKeyMap['CTRL+'+L.accessKey]=L.id;
    }
},
selectPage:function(L){
    var Q=this;
    for(var M in Q._.tabs){
        var N=Q._.tabs[M][0],O=Q._.tabs[M][1];
        if(M!=L){
            N.removeClass('cke_dialog_tab_selected');
            O.hide();
        }
    }
    var P=Q._.tabs[L];
P[0].addClass('cke_dialog_tab_selected');
P[1].show();
Q._.currentTabId=L;
Q._.currentTabIndex=e.indexOf(Q._.tabIdList,L);
},
hidePage:function(L){
    var M=this._.tabs[L]&&this._.tabs[L][0];
    if(!M)return;
    M.hide();
},
showPage:function(L){
    var M=this._.tabs[L]&&this._.tabs[L][0];
    if(!M)return;
    M.show();
},
getElement:function(){
    return this._.element;
},
getName:function(){
    return this._.name;
},
getContentElement:function(L,M){
    return this._.contents[L][M];
},
getValueOf:function(L,M){
    return this.getContentElement(L,M).getValue();
},
setValueOf:function(L,M,N){
    return this.getContentElement(L,M).setValue(N);
},
getButton:function(L){
    return this._.buttons[L];
},
click:function(L){
    return this._.buttons[L].click();
},
disableButton:function(L){
    return this._.buttons[L].disable();
},
enableButton:function(L){
    return this._.buttons[L].enable();
},
getPageCount:function(){
    return this._.pageCount;
},
getParentEditor:function(){
    return this._.editor;
},
getSelectedElement:function(){
    return this.getParentEditor().getSelection().getSelectedElement();
},
addFocusable:function(L,M){
    var O=this;
    if(typeof M=='undefined'){
        M=O._.focusList.length;
        O._.focusList.push(new p(O,L,M));
    }else{
        O._.focusList.splice(M,0,new p(O,L,M));
        for(var N=M+1;N<O._.focusList.length;N++)O._.focusList[N].focusIndex++;
    }
}
};

e.extend(a.dialog,{
    add:function(L,M){
        if(!this._.dialogDefinitions[L]||typeof M=='function')this._.dialogDefinitions[L]=M;
    },
    exists:function(L){
        return!!this._.dialogDefinitions[L];
    },
    getCurrent:function(){
        return a.dialog._.currentTop;
    },
    okButton:(function(){
        var L=function(M,N){
            N=N||{};

            return e.extend({
                id:'ok',
                type:'button',
                label:M.lang.common.ok,
                'class':'cke_dialog_ui_button_ok',
                onClick:function(O){
                    var P=O.data.dialog;
                    if(P.fire('ok',{
                        hide:true
                    }).hide!==false)P.hide();
                }
            },N,true);
    };

    L.type='button';
    L.override=function(M){
        return e.extend(function(N){
            return L(N,M);
        },{
            type:'button'
        },true);
    };

    return L;
    })(),
    cancelButton:(function(){
    var L=function(M,N){
        N=N||{};

        return e.extend({
            id:'cancel',
            type:'button',
            label:M.lang.common.cancel,
            'class':'cke_dialog_ui_button_cancel',
            onClick:function(O){
                var P=O.data.dialog;
                if(P.fire('cancel',{
                    hide:true
                }).hide!==false)P.hide();
            }
        },N,true);
};

L.type='button';
L.override=function(M){
    return e.extend(function(N){
        return L(N,M);
    },{
        type:'button'
    },true);
};

return L;
})(),
addUIElement:function(L,M){
    this._.uiElementBuilders[L]=M;
}
});
a.dialog._={
    uiElementBuilders:{},
    dialogDefinitions:{},
    currentTop:null,
    currentZIndex:null
};

a.event.implementOn(a.dialog);
a.event.implementOn(a.dialog.prototype,true);
var q={
    resizable:0,
    minWidth:600,
    minHeight:400,
    buttons:[a.dialog.okButton,a.dialog.cancelButton]
    },r=function(L,M,N){
    for(var O=0,P;P=L[O];O++){
        if(P.id==M)return P;
        if(N&&P[N]){
            var Q=r(P[N],M,N);
            if(Q)return Q;
        }
    }
    return null;
},s=function(L,M,N,O,P){
    if(N){
        for(var Q=0,R;R=L[Q];Q++){
            if(R.id==N){
                L.splice(Q,0,M);
                return M;
            }
            if(O&&R[O]){
                var S=s(R[O],M,N,O,true);
                if(S)return S;
            }
        }
        if(P)return null;
}
L.push(M);
return M;
},t=function(L,M,N){
    for(var O=0,P;P=L[O];O++){
        if(P.id==M)return L.splice(O,1);
        if(N&&P[N]){
            var Q=t(P[N],M,N);
            if(Q)return Q;
        }
    }
    return null;
},u=function(L,M){
    this.dialog=L;
    var N=M.contents;
    for(var O=0,P;P=N[O];O++)N[O]=new v(L,P);
    e.extend(this,M);
};

u.prototype={
    getContents:function(L){
        return r(this.contents,L);
    },
    getButton:function(L){
        return r(this.buttons,L);
    },
    addContents:function(L,M){
        return s(this.contents,L,M);
    },
    addButton:function(L,M){
        return s(this.buttons,L,M);
    },
    removeContents:function(L){
        t(this.contents,L);
    },
    removeButton:function(L){
        t(this.buttons,L);
    }
};

function v(L,M){
    this._={
        dialog:L
    };

    e.extend(this,M);
};

v.prototype={
    get:function(L){
        return r(this.elements,L,'children');
    },
    add:function(L,M){
        return s(this.elements,L,M,'children');
    },
    remove:function(L){
        t(this.elements,L,'children');
    }
};

function w(L){
    var M=null,N=null,O=L.getElement().getFirst(),P=L.getParentEditor(),Q=P.config.dialog_magnetDistance,R=o[P.skinName].margins||[0,0,0,0];
    if(typeof Q=='undefined')Q=20;
    function S(U){
        var V=L.getSize(),W=a.document.getWindow().getViewPaneSize(),X=U.data.$.screenX,Y=U.data.$.screenY,Z=X-M.x,aa=Y-M.y,ab,ac;
        M={
            x:X,
            y:Y
        };

        N.x+=Z;
        N.y+=aa;
        if(N.x+R[3]<Q)ab=-R[3];
        else if(N.x-R[1]>W.width-V.width-Q)ab=W.width-V.width+R[1];else ab=N.x;
        if(N.y+R[0]<Q)ac=-R[0];
        else if(N.y-R[2]>W.height-V.height-Q)ac=W.height-V.height+R[2];else ac=N.y;
        L.move(ab,ac);
        U.data.preventDefault();
    };

    function T(U){
        a.document.removeListener('mousemove',S);
        a.document.removeListener('mouseup',T);
        if(b.ie6Compat){
            var V=z.getChild(0).getFrameDocument();
            V.removeListener('mousemove',S);
            V.removeListener('mouseup',T);
        }
    };

L.parts.title.on('mousedown',function(U){
    L._.updateSize=true;
    M={
        x:U.data.$.screenX,
        y:U.data.$.screenY
        };

    a.document.on('mousemove',S);
    a.document.on('mouseup',T);
    N=L.getPosition();
    if(b.ie6Compat){
        var V=z.getChild(0).getFrameDocument();
        V.on('mousemove',S);
        V.on('mouseup',T);
    }
    U.data.preventDefault();
},L);
};

function x(L){
    var M=L.definition,N=M.minWidth||0,O=M.minHeight||0,P=M.resizable,Q=o[L.getParentEditor().skinName].margins||[0,0,0,0];
    function R(ac,ad){
        ac.y+=ad;
    };

    function S(ac,ad){
        ac.x2+=ad;
    };

    function T(ac,ad){
        ac.y2+=ad;
    };

    function U(ac,ad){
        ac.x+=ad;
    };

    var V=null,W=null,X=L._.editor.config.magnetDistance,Y=['tl','t','tr','l','r','bl','b','br'];
    function Z(ac){
        var ad=ac.listenerData.part,ae=L.getSize();
        W=L.getPosition();
        e.extend(W,{
            x2:W.x+ae.width,
            y2:W.y+ae.height
            });
        V={
            x:ac.data.$.screenX,
            y:ac.data.$.screenY
            };

        a.document.on('mousemove',aa,L,{
            part:ad
        });
        a.document.on('mouseup',ab,L,{
            part:ad
        });
        if(b.ie6Compat){
            var af=z.getChild(0).getFrameDocument();
            af.on('mousemove',aa,L,{
                part:ad
            });
            af.on('mouseup',ab,L,{
                part:ad
            });
        }
        ac.data.preventDefault();
    };

    function aa(ac){
        var ad=ac.data.$.screenX,ae=ac.data.$.screenY,af=ad-V.x,ag=ae-V.y,ah=a.document.getWindow().getViewPaneSize(),ai=ac.listenerData.part;
        if(ai.search('t')!=-1)R(W,ag);
        if(ai.search('l')!=-1)U(W,af);
        if(ai.search('b')!=-1)T(W,ag);
        if(ai.search('r')!=-1)S(W,af);
        V={
            x:ad,
            y:ae
        };

        var aj,ak,al,am;
        if(W.x+Q[3]<X)aj=-Q[3];
        else if(ai.search('l')!=-1&&W.x2-W.x<N+X)aj=W.x2-N;else aj=W.x;
        if(W.y+Q[0]<X)ak=-Q[0];
        else if(ai.search('t')!=-1&&W.y2-W.y<O+X)ak=W.y2-O;else ak=W.y;
        if(W.x2-Q[1]>ah.width-X)al=ah.width+Q[1];
        else if(ai.search('r')!=-1&&W.x2-W.x<N+X)al=W.x+N;else al=W.x2;
        if(W.y2-Q[2]>ah.height-X)am=ah.height+Q[2];
        else if(ai.search('b')!=-1&&W.y2-W.y<O+X)am=W.y+O;else am=W.y2;
        L.move(aj,ak);
        L.resize(al-aj,am-ak);
        ac.data.preventDefault();
    };

    function ab(ac){
        a.document.removeListener('mouseup',ab);
        a.document.removeListener('mousemove',aa);
        if(b.ie6Compat){
            var ad=z.getChild(0).getFrameDocument();
            ad.removeListener('mouseup',ab);
            ad.removeListener('mousemove',aa);
        }
    };

};

var y,z,A=function(L){
    var M=a.document.getWindow();
    if(!z){
        var N=['<div style="position: ',b.ie6Compat?'absolute':'fixed','; z-index: ',L.config.baseFloatZIndex,'; top: 0px; left: 0px; ','background-color: ',L.config.dialog_backgroundCoverColor||'white','" id="cke_dialog_background_cover">'];
        if(b.ie6Compat){
            var O=b.isCustomDomain();
            N.push('<iframe hidefocus="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:');
            N.push(O?"void((function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})())':"''");
            N.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>');
        }
        N.push('</div>');
        z=h.createFromHtml(N.join(''));
    }
    var P=z,Q=function(){
        var U=M.getViewPaneSize();
        P.setStyles({
            width:U.width+'px',
            height:U.height+'px'
            });
    },R=function(){
        var U=M.getScrollPosition(),V=a.dialog._.currentTop;
        P.setStyles({
            left:U.x+'px',
            top:U.y+'px'
            });
        do{
            var W=V.getPosition();
            V.move(W.x,W.y);
        }while(V=V._.parentDialog)
    };

    y=Q;
    M.on('resize',Q);
    Q();
    if(b.ie6Compat){
        var S=function(){
            R();
            arguments.callee.prevScrollHandler.apply(this,arguments);
        };

        M.$.setTimeout(function(){
            S.prevScrollHandler=window.onscroll||(function(){});
            window.onscroll=S;
        },0);
        R();
    }
    var T=L.config.dialog_backgroundCoverOpacity;
    P.setOpacity(typeof T!='undefined'?T:0.5);
    P.appendTo(a.document.getBody());
},B=function(){
    if(!z)return;
    var L=a.document.getWindow();
    z.remove();
    L.removeListener('resize',y);
    if(b.ie6Compat)L.$.setTimeout(function(){
        var M=window.onscroll&&window.onscroll.prevScrollHandler;
        window.onscroll=M||null;
    },0);
    y=null;
},C={},D=function(L){
    var M=L.data.$.ctrlKey||L.data.$.metaKey,N=L.data.$.altKey,O=L.data.$.shiftKey,P=String.fromCharCode(L.data.$.keyCode),Q=C[(M?'CTRL+':'')+(N?'ALT+':'')+(O?'SHIFT+':'')+P];
    if(!Q||!Q.length)return;
    Q=Q[Q.length-1];
    Q.keydown&&Q.keydown.call(Q.uiElement,Q.dialog,Q.key);
    L.data.preventDefault();
},E=function(L){
    var M=L.data.$.ctrlKey||L.data.$.metaKey,N=L.data.$.altKey,O=L.data.$.shiftKey,P=String.fromCharCode(L.data.$.keyCode),Q=C[(M?'CTRL+':'')+(N?'ALT+':'')+(O?'SHIFT+':'')+P];
    if(!Q||!Q.length)return;
    Q=Q[Q.length-1];
    Q.keyup&&Q.keyup.call(Q.uiElement,Q.dialog,Q.key);
    L.data.preventDefault();
},F=function(L,M,N,O,P){
    var Q=C[N]||(C[N]=[]);
    Q.push({
        uiElement:L,
        dialog:M,
        key:N,
        keyup:P||L.accessKeyUp,
        keydown:O||L.accessKeyDown
        });
},G=function(L){
    for(var M in C){
        var N=C[M];
        for(var O=N.length-1;O>=0;O--)if(N[O].dialog==L||N[O].uiElement==L)N.splice(O,1);if(N.length===0)delete C[M];
    }
    },H=function(L,M){
    if(L._.accessKeyMap[M])L.selectPage(L._.accessKeyMap[M]);
},I=function(L,M){},J={
    27:1,
    13:1
},K=function(L){
    if(L.data.getKeystroke() in J)L.data.stopPropagation();
};
(function(){
    k.dialog={
        uiElement:function(L,M,N,O,P,Q,R){
            if(arguments.length<4)return;
            var S=(O.call?O(M):O)||('div'),T=['<',S,' '],U=(P&&P.call?P(M):P)||({}),V=(Q&&Q.call?Q(M):Q)||({}),W=(R&&R.call?R(L,M):R)||(''),X=this.domId=V.id||e.getNextNumber()+'_uiElement',Y=this.id=M.id,Z;
            V.id=X;
            var aa={};

            if(M.type)aa['cke_dialog_ui_'+M.type]=1;
            if(M.className)aa[M.className]=1;
            var ab=V['class']&&V['class'].split?V['class'].split(' '):[];
            for(Z=0;Z<ab.length;Z++)if(ab[Z])aa[ab[Z]]=1;var ac=[];
            for(Z in aa)ac.push(Z);V['class']=ac.join(' ');
            if(M.title)V.title=M.title;
            var ad=(M.style||'').split(';');
            for(Z in U)ad.push(Z+':'+U[Z]);
            if(M.hidden)ad.push('display:none');
            for(Z=ad.length-1;Z>=0;Z--)if(ad[Z]==='')ad.splice(Z,1);if(ad.length>0)V.style=(V.style?V.style+'; ':'')+(ad.join('; '));
            for(Z in V)T.push(Z+'="'+e.htmlEncode(V[Z])+'" ');T.push('>',W,'</',S,'>');
            N.push(T.join(''));
            (this._||(this._={})).dialog=L;
            if(typeof M.isChanged=='boolean')this.isChanged=function(){
                return M.isChanged;
            };

            if(typeof M.isChanged=='function')this.isChanged=M.isChanged;
            a.event.implementOn(this);
            this.registerEvents(M);
            if(this.accessKeyUp&&this.accessKeyDown&&M.accessKey)F(this,L,'CTRL+'+M.accessKey);
            var ae=this;
            L.on('load',function(){
                if(ae.getInputElement())ae.getInputElement().on('focus',function(){
                    L._.tabBarMode=false;
                    L._.hasFocus=true;
                    ae.fire('focus');
                },ae);
            });
            if(this.keyboardFocusable){
                this.focusIndex=L._.focusList.push(this)-1;
                this.on('focus',function(){
                    L._.currentFocusIndex=ae.focusIndex;
                });
            }
            e.extend(this,M);
        },
        hbox:function(L,M,N,O,P){
            if(arguments.length<4)return;
            this._||(this._={});
            var Q=this._.children=M,R=P&&P.widths||null,S=P&&P.height||null,T={},U,V=function(){
                var W=['<tbody><tr class="cke_dialog_ui_hbox">'];
                for(U=0;U<N.length;U++){
                    var X='cke_dialog_ui_hbox_child',Y=[];
                    if(U===0)X='cke_dialog_ui_hbox_first';
                    if(U==N.length-1)X='cke_dialog_ui_hbox_last';
                    W.push('<td class="',X,'" ');
                    if(R){
                        if(R[U])Y.push('width:'+e.cssLength(R[U]));
                    }else Y.push('width:'+Math.floor(100/N.length)+'%');
                    if(S)Y.push('height:'+e.cssLength(S));
                    if(P&&P.padding!=undefined)Y.push('padding:'+e.cssLength(P.padding));
                    if(Y.length>0)W.push('style="'+Y.join('; ')+'" ');
                    W.push('>',N[U],'</td>');
                }
                W.push('</tr></tbody>');
                return W.join('');
            };

            k.dialog.uiElement.call(this,L,P||{
                type:'hbox'
            },O,'table',T,P&&P.align&&{
                align:P.align
                }||null,V);
        },
        vbox:function(L,M,N,O,P){
            if(arguments.length<3)return;
            this._||(this._={});
            var Q=this._.children=M,R=P&&P.width||null,S=P&&P.heights||null,T=function(){
                var U=['<table cellspacing="0" border="0" '];
                U.push('style="');
                if(P&&P.expand)U.push('height:100%;');
                U.push('width:'+e.cssLength(R||'100%'),';');
                U.push('"');
                U.push('align="',e.htmlEncode(P&&P.align||(L.getParentEditor().lang.dir=='ltr'?'left':'right')),'" ');
                U.push('><tbody>');
                for(var V=0;V<N.length;V++){
                    var W=[];
                    U.push('<tr><td ');
                    if(R)W.push('width:'+e.cssLength(R||'100%'));
                    if(S)W.push('height:'+e.cssLength(S[V]));
                    else if(P&&P.expand)W.push('height:'+Math.floor(100/N.length)+'%');
                    if(P&&P.padding!=undefined)W.push('padding:'+e.cssLength(P.padding));
                    if(W.length>0)U.push('style="',W.join('; '),'" ');
                    U.push(' class="cke_dialog_ui_vbox_child">',N[V],'</td></tr>');
                }
                U.push('</tbody></table>');
                return U.join('');
            };

            k.dialog.uiElement.call(this,L,P||{
                type:'vbox'
            },O,'div',null,null,T);
        }
    };

})();
k.dialog.uiElement.prototype={
    getElement:function(){
        return a.document.getById(this.domId);
    },
    getInputElement:function(){
        return this.getElement();
    },
    getDialog:function(){
        return this._.dialog;
    },
    setValue:function(L){
        this.getInputElement().setValue(L);
        this.fire('change',{
            value:L
        });
        return this;
    },
    getValue:function(){
        return this.getInputElement().getValue();
    },
    isChanged:function(){
        return false;
    },
    selectParentTab:function(){
        var O=this;
        var L=O.getInputElement(),M=L,N;
        while((M=M.getParent())&&(M.$.className.search('cke_dialog_page_contents')==-1)){}
        if(!M)return O;
        N=M.getAttribute('name');
        if(O._.dialog._.currentTabId!=N)O._.dialog.selectPage(N);
        return O;
    },
    focus:function(){
        this.selectParentTab().getInputElement().focus();
        return this;
    },
    registerEvents:function(L){
        var M=/^on([A-Z]\w+)/,N,O=function(Q,R,S,T){
            R.on('load',function(){
                Q.getInputElement().on(S,T,Q);
            });
        };

        for(var P in L){
            if(!(N=P.match(M)))continue;
            if(this.eventProcessors[P])this.eventProcessors[P].call(this,this._.dialog,L[P]);else O(this,this._.dialog,N[1].toLowerCase(),L[P]);
        }
        return this;
    },
    eventProcessors:{
        onLoad:function(L,M){
            L.on('load',M,this);
        },
        onShow:function(L,M){
            L.on('show',M,this);
        },
        onHide:function(L,M){
            L.on('hide',M,this);
        }
    },
accessKeyDown:function(L,M){
    this.focus();
},
accessKeyUp:function(L,M){},
disable:function(){
    var L=this.getInputElement();
    L.setAttribute('disabled','true');
    L.addClass('cke_disabled');
},
enable:function(){
    var L=this.getInputElement();
    L.removeAttribute('disabled');
    L.removeClass('cke_disabled');
},
isEnabled:function(){
    return!this.getInputElement().getAttribute('disabled');
},
isVisible:function(){
    return!!this.getInputElement().$.offsetHeight;
},
isFocusable:function(){
    if(!this.isEnabled()||!this.isVisible())return false;
    return true;
}
};

k.dialog.hbox.prototype=e.extend(new k.dialog.uiElement(),{
    getChild:function(L){
        var M=this;
        if(arguments.length<1)return M._.children.concat();
        if(!L.splice)L=[L];
        if(L.length<2)return M._.children[L[0]];else return M._.children[L[0]]&&M._.children[L[0]].getChild?M._.children[L[0]].getChild(L.slice(1,L.length)):null;
    }
},true);
k.dialog.vbox.prototype=new k.dialog.hbox();
(function(){
    var L={
        build:function(M,N,O){
            var P=N.children,Q,R=[],S=[];
            for(var T=0;T<P.length&&(Q=P[T]);T++){
                var U=[];
                R.push(U);
                S.push(a.dialog._.uiElementBuilders[Q.type].build(M,Q,U));
            }
            return new k.dialog[N.type](M,S,R,O,N);
        }
    };

a.dialog.addUIElement('hbox',L);
    a.dialog.addUIElement('vbox',L);
})();
a.dialogCommand=function(L){
    this.dialogName=L;
};

a.dialogCommand.prototype={
    exec:function(L){
        L.openDialog(this.dialogName);
    },
    canUndo:false
};
(function(){
    var L=/^([a]|[^a])+$/,M=/^\d*$/,N=/^\d*(?:\.\d+)?$/;
    a.VALIDATE_OR=1;
    a.VALIDATE_AND=2;
    a.dialog.validate={
        functions:function(){
            return function(){
                var U=this;
                var O=U&&U.getValue?U.getValue():arguments[0],P=undefined,Q=2,R=[],S;
                for(S=0;S<arguments.length;S++)if(typeof arguments[S]=='function')R.push(arguments[S]);else break;if(S<arguments.length&&typeof arguments[S]=='string'){
                    P=arguments[S];
                    S++;
                }
                if(S<arguments.length&&typeof arguments[S]=='number')Q=arguments[S];
                var T=Q==2?true:false;
                for(S=0;S<R.length;S++)if(Q==2)T=T&&R[S](O);else T=T||R[S](O);if(!T){
                    if(P!==undefined)alert(P);
                    if(U&&(U.select||U.focus))U.select||U.focus();
                    return false;
                }
                return true;
            };

    },
    regex:function(O,P){
        return function(){
            var R=this;
            var Q=R&&R.getValue?R.getValue():arguments[0];
            if(!O.test(Q)){
                if(P!==undefined)alert(P);
                if(R&&(R.select||R.focus))if(R.select)R.select();else R.focus();
                return false;
            }
            return true;
        };

},
notEmpty:function(O){
    return this.regex(L,O);
},
integer:function(O){
    return this.regex(M,O);
},
number:function(O){
    return this.regex(N,O);
},
equals:function(O,P){
    return this.functions(function(Q){
        return Q==O;
    },P);
},
notEqual:function(O,P){
    return this.functions(function(Q){
        return Q!=O;
    },P);
}
};

})();
a.skins.add=(function(){
    var L=a.skins.add;
    return function(M,N){
        o[M]={
            margins:N.margins
            };

        return L.apply(this,arguments);
    };

})();
})();
e.extend(a.editor.prototype,{
    openDialog:function(l){
        var m=a.dialog._.dialogDefinitions[l];
        if(typeof m=='function'){
            var n=this._.storedDialogs||(this._.storedDialogs={}),o=n[l]||(n[l]=new a.dialog(this,l));
            o.show();
            return o;
        }else if(m=='failed')throw new Error('[CKEDITOR.dialog.openDialog] Dialog "'+l+'" failed when loading definition.');
        var p=a.document.getBody(),q=p.$.style.cursor,r=this;
        p.setStyle('cursor','wait');
        a.scriptLoader.load(a.getUrl(m),function(){
            if(typeof a.dialog._.dialogDefinitions[l]!='function')a.dialog._.dialogDefinitions[l]='failed';
            r.openDialog(l);
            p.setStyle('cursor',q);
        });
        return null;
    }
});
(function(){
    var l=function(n,o){
        return n._.modes&&n._.modes[o||n.mode];
    },m;
    j.add('editingblock',{
        init:function(n){
            if(!n.config.editingBlock)return;
            n.on('themeSpace',function(o){
                if(o.data.space=='contents')o.data.html+='<br>';
            });
            n.on('themeLoaded',function(){
                n.fireOnce('editingBlockReady');
            });
            n.on('uiReady',function(){
                n.setMode(n.config.startupMode);
            });
            n.on('afterSetData',function(){
                if(!m){
                    function o(){
                        m=true;
                        l(n).loadData(n.getData());
                        m=false;
                    };

                    if(n.mode)o();else n.on('mode',function(){
                        o();
                        n.removeListener('mode',arguments.callee);
                    });
                }
            });
        n.on('beforeGetData',function(){
            if(!m&&n.mode){
                m=true;
                n.setData(l(n).getData());
                m=false;
            }
        });
    n.on('getSnapshot',function(o){
        if(n.mode)o.data=l(n).getSnapshotData();
    });
    n.on('loadSnapshot',function(o){
        if(n.mode)l(n).loadSnapshotData(o.data);
    });
    n.on('mode',function(o){
        o.removeListener();
        var p=n.container;
        if(b.webkit&&b.version<528){
            var q=n.config.tabIndex||n.element.getAttribute('tabindex')||0;
            p=p.append(h.createFromHtml('<input tabindex="'+q+'"'+' style="position:absolute; left:-10000">'));
        }
        p.on('focus',function(){
            n.focus();
        });
        if(n.config.startupFocus)n.focus();
        setTimeout(function(){
            n.fireOnce('instanceReady');
            a.fire('instanceReady',null,n);
        });
    });
    }
});
a.editor.prototype.mode='';
a.editor.prototype.addMode=function(n,o){
    o.name=n;
    (this._.modes||(this._.modes={}))[n]=o;
};

a.editor.prototype.setMode=function(n){
    var o,p=this.getThemeSpace('contents'),q=this.checkDirty();
    if(this.mode){
        if(n==this.mode)return;
        this.fire('beforeModeUnload');
        var r=l(this);
        o=r.getData();
        r.unload(p);
        this.mode='';
    }
    p.setHtml('');
    var s=l(this,n);
    if(!s)throw '[CKEDITOR.editor.setMode] Unknown mode "'+n+'".';
    if(!q)this.on('mode',function(){
        this.resetDirty();
        this.removeListener('mode',arguments.callee);
    });
    s.load(p,typeof o!='string'?this.getData():o);
};

a.editor.prototype.focus=function(){
    var n=l(this);
    if(n)n.focus();
};

})();
i.startupMode='wysiwyg';
i.startupFocus=false;
i.editingBlock=true;
j.add('panel',{
    beforeInit:function(l){
        l.ui.addHandler(2,k.panel.handler);
    }
});
a.UI_PANEL=2;
k.panel=function(l,m){
    var n=this;
    if(m)e.extend(n,m);
    e.extend(n,{
        className:'',
        css:[]
    });
    n.id=e.getNextNumber();
    n.document=l;
    n._={
        blocks:{}
};

};

k.panel.handler={
    create:function(l){
        return new k.panel(l);
    }
};

k.panel.prototype={
    renderHtml:function(l){
        var m=[];
        this.render(l,m);
        return m.join('');
    },
    render:function(l,m){
        var o=this;
        var n='cke_'+o.id;
        m.push('<div class="',l.skinClass,'" lang="',l.langCode,'" style="display:none;z-index:'+(l.config.baseFloatZIndex+1)+'">'+'<div'+' id=',n,' dir=',l.lang.dir,' class="cke_panel cke_',l.lang.dir);
        if(o.className)m.push(' ',o.className);
        m.push('">');
        if(o.forceIFrame||o.css.length){
            m.push('<iframe id="',n,'_frame" frameborder="0" src="javascript:void(');
            m.push(b.isCustomDomain()?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');
            m.push(')"></iframe>');
        }
        m.push('</div></div>');
        return n;
    },
    getHolderElement:function(){
        var l=this._.holder;
        if(!l){
            if(this.forceIFrame||this.css.length){
                var m=this.document.getById('cke_'+this.id+'_frame'),n=m.getParent(),o=n.getAttribute('dir'),p=n.getParent().getAttribute('class'),q=n.getParent().getAttribute('lang'),r=m.getFrameDocument();
                r.$.open();
                if(b.isCustomDomain())r.$.domain=document.domain;
                var s=e.addFunction(e.bind(function(u){
                    this.isLoaded=true;
                    if(this.onLoad)this.onLoad();
                },this));
                r.$.write('<!DOCTYPE html><html dir="'+o+'" class="'+p+'_container" lang="'+q+'">'+'<head>'+'<style>.'+p+'_container{visibility:hidden}</style>'+'</head>'+'<body class="cke_'+o+' cke_panel_frame '+b.cssClass+'" style="margin:0;padding:0"'+' onload="( window.CKEDITOR || window.parent.CKEDITOR ).tools.callFunction('+s+');">'+'</body>'+'<link type="text/css" rel=stylesheet href="'+this.css.join('"><link type="text/css" rel="stylesheet" href="')+'">'+'</html>');
                r.$.close();
                var t=r.getWindow();
                t.$.CKEDITOR=a;
                r.on('keydown',function(u){
                    var w=this;
                    var v=u.data.getKeystroke();
                    if(w._.onKeyDown&&w._.onKeyDown(v)===false){
                        u.data.preventDefault();
                        return;
                    }
                    if(v==27)w.onEscape&&w.onEscape();
                },this);
                l=r.getBody();
            }else l=this.document.getById('cke_'+this.id);
            this._.holder=l;
        }
        return l;
    },
    addBlock:function(l,m){
        var n=this;
        m=n._.blocks[l]=m||new k.panel.block(n.getHolderElement());
        if(!n._.currentBlock)n.showBlock(l);
        return m;
    },
    getBlock:function(l){
        return this._.blocks[l];
    },
    showBlock:function(l){
        var p=this;
        var m=p._.blocks,n=m[l],o=p._.currentBlock;
        if(o)o.hide();
        p._.currentBlock=n;
        n._.focusIndex=-1;
        p._.onKeyDown=n.onKeyDown&&e.bind(n.onKeyDown,n);
        n.show();
        return n;
    }
};

k.panel.block=e.createClass({
    $:function(l){
        var m=this;
        m.element=l.append(l.getDocument().createElement('div',{
            attributes:{
                'class':'cke_panel_block'
            },
            styles:{
                display:'none'
            }
        }));
    m.keys={};

    m._.focusIndex=-1;
    m.element.disableContextMenu();
},
_:{},
proto:{
    show:function(){
        this.element.setStyle('display','');
    },
    hide:function(){
        var l=this;
        if(!l.onHide||l.onHide.call(l)!==true)l.element.setStyle('display','none');
    },
    onKeyDown:function(l){
        var q=this;
        var m=q.keys[l];
        switch(m){
            case 'next':
                var n=q._.focusIndex,o=q.element.getElementsByTag('a'),p;
                while(p=o.getItem(++n))if(p.getAttribute('_cke_focus')&&p.$.offsetWidth){
                q._.focusIndex=n;
                p.focus();
                break;
            }
            return false;
            case 'prev':
                n=q._.focusIndex;
                o=q.element.getElementsByTag('a');
                while(n>0&&(p=o.getItem(--n)))if(p.getAttribute('_cke_focus')&&p.$.offsetWidth){
                q._.focusIndex=n;
                p.focus();
                break;
            }
            return false;
            case 'click':
                n=q._.focusIndex;
                p=n>=0&&q.element.getElementsByTag('a').getItem(n);
                if(p)p.$.click?p.$.click():p.$.onclick();
                return false;
        }
        return true;
    }
}
});
j.add('listblock',{
    requires:['panel'],
    onLoad:function(){
        k.panel.prototype.addListBlock=function(l,m){
            return this.addBlock(l,new k.listBlock(this.getHolderElement(),m));
        };

        k.listBlock=e.createClass({
            base:k.panel.block,
            $:function(l,m){
                var o=this;
                o.base(l);
                o.multiSelect=!!m;
                var n=o.keys;
                n[40]='next';
                n[9]='next';
                n[38]='prev';
                n[2000+9]='prev';
                n[32]='click';
                o._.pendingHtml=[];
                o._.items={};

                o._.groups={};

        },
        _:{
            close:function(){
                if(this._.started){
                    this._.pendingHtml.push('</ul>');
                    delete this._.started;
                }
            },
        getClick:function(){
            if(!this._.click)this._.click=e.addFunction(function(l){
                var n=this;
                var m=true;
                if(n.multiSelect)m=n.toggle(l);else n.mark(l);
                if(n.onClick)n.onClick(l,m);
            },this);
            return this._.click;
        }
        },
    proto:{
        add:function(l,m,n){
            var q=this;
            var o=q._.pendingHtml,p='cke_'+e.getNextNumber();
            if(!q._.started){
                o.push('<ul class=cke_panel_list>');
                q._.started=1;
            }
            q._.items[l]=p;
            o.push('<li id=',p,' class=cke_panel_listItem><a _cke_focus=1 hidefocus=true title="',n||l,'" href="javascript:void(\'',l,'\')" onclick="CKEDITOR.tools.callFunction(',q._.getClick(),",'",l,"'); return false;\">",m||l,'</a></li>');
        },
        startGroup:function(l){
            this._.close();
            var m='cke_'+e.getNextNumber();
            this._.groups[l]=m;
            this._.pendingHtml.push('<h1 id=',m,' class=cke_panel_grouptitle>',l,'</h1>');
        },
        commit:function(){
            var l=this;
            l._.close();
            l.element.appendHtml(l._.pendingHtml.join(''));
            l._.pendingHtml=[];
        },
        toggle:function(l){
            var m=this.isMarked(l);
            if(m)this.unmark(l);else this.mark(l);
            return!m;
        },
        hideGroup:function(l){
            var m=this.element.getDocument().getById(this._.groups[l]),n=m&&m.getNext();
            if(m){
                m.setStyle('display','none');
                if(n&&n.getName()=='ul')n.setStyle('display','none');
            }
        },
    hideItem:function(l){
        this.element.getDocument().getById(this._.items[l]).setStyle('display','none');
    },
    showAll:function(){
        var l=this._.items,m=this._.groups,n=this.element.getDocument();
        for(var o in l)n.getById(l[o]).setStyle('display','');for(var p in m){
            var q=n.getById(m[p]),r=q.getNext();
            q.setStyle('display','');
            if(r&&r.getName()=='ul')r.setStyle('display','');
        }
        },
mark:function(l){
    var m=this;
    if(!m.multiSelect)m.unmarkAll();
    m.element.getDocument().getById(m._.items[l]).addClass('cke_selected');
},
unmark:function(l){
    this.element.getDocument().getById(this._.items[l]).removeClass('cke_selected');
},
unmarkAll:function(){
    var l=this._.items,m=this.element.getDocument();
    for(var n in l)m.getById(l[n]).removeClass('cke_selected');
    },
isMarked:function(l){
    return this.element.getDocument().getById(this._.items[l]).hasClass('cke_selected');
},
focus:function(l){
    this._.focusIndex=-1;
    if(l){
        var m=this.element.getDocument().getById(this._.items[l]).getFirst(),n=this.element.getElementsByTag('a'),o,p=-1;
        while(o=n.getItem(++p))if(o.equals(m)){
            this._.focusIndex=p;
            break;
        }
        setTimeout(function(){
            m.focus();
        },0);
    }
}
}
});
}
});
j.add('dialogui');
(function(){
    var l=function(s){
        var v=this;
        v._||(v._={});
        v._['default']=v._.initValue=s['default']||'';
        var t=[v._];
        for(var u=1;u<arguments.length;u++)t.push(arguments[u]);
        t.push(true);
        e.extend.apply(e,t);
        return v._;
    },m={
        build:function(s,t,u){
            return new k.dialog.textInput(s,t,u);
        }
    },n={
    build:function(s,t,u){
        return new k.dialog[t.type](s,t,u);
    }
},o={
    isChanged:function(){
        return this.getValue()!=this.getInitValue();
    },
    reset:function(){
        this.setValue(this.getInitValue());
    },
    setInitValue:function(){
        this._.initValue=this.getValue();
    },
    resetInitValue:function(){
        this._.initValue=this._['default'];
    },
    getInitValue:function(){
        return this._.initValue;
    }
},p=e.extend({},k.dialog.uiElement.prototype.eventProcessors,{
    onChange:function(s,t){
        if(!this._.domOnChangeRegistered){
            s.on('load',function(){
                this.getInputElement().on('change',function(){
                    this.fire('change',{
                        value:this.getValue()
                        });
                },this);
            },this);
            this._.domOnChangeRegistered=true;
        }
        this.on('change',t);
    }
},true),q=/^on([A-Z]\w+)/,r=function(s){
    for(var t in s)if(q.test(t)||t=='title'||t=='type')delete s[t];return s;
};

e.extend(k.dialog,{
    labeledElement:function(s,t,u,v){
        if(arguments.length<4)return;
        var w=l.call(this,t);
        w.labelId=e.getNextNumber()+'_label';
        var x=this._.children=[],y=function(){
            var z=[];
            if(t.labelLayout!='horizontal')z.push('<div class="cke_dialog_ui_labeled_label" id="',w.labelId,'" >',t.label,'</div>','<div class="cke_dialog_ui_labeled_content">',v(s,t),'</div>');
            else{
                var A={
                    type:'hbox',
                    widths:t.widths,
                    padding:0,
                    children:[{
                        type:'html',
                        html:'<span class="cke_dialog_ui_labeled_label" id="'+w.labelId+'">'+e.htmlEncode(t.label)+'</span>'
                        },{
                        type:'html',
                        html:'<span class="cke_dialog_ui_labeled_content">'+v(s,t)+'</span>'
                        }]
                    };

                a.dialog._.uiElementBuilders.hbox.build(s,A,z);
            }
            return z.join('');
        };

        k.dialog.uiElement.call(this,s,t,u,'div',null,null,y);
    },
    textInput:function(s,t,u){
        if(arguments.length<3)return;
        l.call(this,t);
        var v=this._.inputId=e.getNextNumber()+'_textInput',w={
            'class':'cke_dialog_ui_input_'+t.type,
            id:v,
            type:'text'
        },x;
        if(t.validate)this.validate=t.validate;
        if(t.maxLength)w.maxlength=t.maxLength;
        if(t.size)w.size=t.size;
        var y=this,z=false;
        s.on('load',function(){
            y.getInputElement().on('keydown',function(B){
                if(B.data.getKeystroke()==13)z=true;
            });
            y.getInputElement().on('keyup',function(B){
                if(B.data.getKeystroke()==13&&z){
                    s.getButton('ok')&&s.getButton('ok').click();
                    z=false;
                }
            },null,null,1000);
        });
    var A=function(){
        var B=['<div class="cke_dialog_ui_input_',t.type,'"'];
        if(t.width)B.push('style="width:'+t.width+'" ');
        B.push('><input ');
        for(var C in w)B.push(C+'="'+w[C]+'" ');B.push(' /></div>');
        return B.join('');
    };

    k.dialog.labeledElement.call(this,s,t,u,A);
},
textarea:function(s,t,u){
    if(arguments.length<3)return;
    l.call(this,t);
    var v=this,w=this._.inputId=e.getNextNumber()+'_textarea',x={};

    if(t.validate)this.validate=t.validate;
    x.rows=t.rows||5;
    x.cols=t.cols||20;
    var y=function(){
        var z=['<div class="cke_dialog_ui_input_textarea"><textarea class="cke_dialog_ui_input_textarea" id="',w,'" '];
        for(var A in x)z.push(A+'="'+e.htmlEncode(x[A])+'" ');z.push('>',e.htmlEncode(v._['default']),'</textarea></div>');
        return z.join('');
    };

    k.dialog.labeledElement.call(this,s,t,u,y);
},
checkbox:function(s,t,u){
    if(arguments.length<3)return;
    var v=l.call(this,t,{
        'default':!!t['default']
        });
    if(t.validate)this.validate=t.validate;
    var w=function(){
        var x=e.extend({},t,{
            id:t.id?t.id+'_checkbox':e.getNextNumber()+'_checkbox'
            },true),y=[],z={
            'class':'cke_dialog_ui_checkbox_input',
            type:'checkbox'
        };

        r(x);
        if(t['default'])z.checked='checked';
        v.checkbox=new k.dialog.uiElement(s,x,y,'input',null,z);
        y.push(' <label for="',z.id,'">',e.htmlEncode(t.label),'</label>');
        return y.join('');
    };

    k.dialog.uiElement.call(this,s,t,u,'span',null,null,w);
},
radio:function(s,t,u){
    if(arguments.length<3)return;
    l.call(this,t);
    if(!this._['default'])this._['default']=this._.initValue=t.items[0][1];
    if(t.validate)this.validate=t.valdiate;
    var v=[],w=this,x=function(){
        var y=[],z=[],A={
            'class':'cke_dialog_ui_radio_item'
        },B=t.id?t.id+'_radio':e.getNextNumber()+'_radio';
        for(var C=0;C<t.items.length;C++){
            var D=t.items[C],E=D[2]!==undefined?D[2]:D[0],F=D[1]!==undefined?D[1]:D[0],G=e.extend({},t,{
                id:e.getNextNumber()+'_radio_input',
                title:null,
                type:null
            },true),H=e.extend({},G,{
                id:null,
                title:E
            },true),I={
                type:'radio',
                'class':'cke_dialog_ui_radio_input',
                name:B,
                value:F
            },J=[];
            if(w._['default']==F)I.checked='checked';
            r(G);
            r(H);
            v.push(new k.dialog.uiElement(s,G,J,'input',null,I));
            J.push(' ');
            new k.dialog.uiElement(s,H,J,'label',null,{
                'for':I.id
                },D[0]);
            y.push(J.join(''));
        }
        new k.dialog.hbox(s,[],y,z);
        return z.join('');
    };

    k.dialog.labeledElement.call(this,s,t,u,x);
    this._.children=v;
},
button:function(s,t,u){
    if(!arguments.length)return;
    if(typeof t=='function')t=t(s.getParentEditor());
    l.call(this,t,{
        disabled:t.disabled||false
        });
    a.event.implementOn(this);
    var v=this;
    s.on('load',function(x){
        var y=this.getElement();
        (function(){
            y.on('click',function(z){
                v.fire('click',{
                    dialog:v.getDialog()
                    });
                z.data.preventDefault();
            });
        })();
        y.unselectable();
    },this);
    var w=e.extend({},t);
    delete w.style;
    k.dialog.uiElement.call(this,s,w,u,'a',null,{
        style:t.style,
        href:'javascript:void(0)',
        title:t.label,
        hidefocus:'true',
        'class':t['class']
        },'<span class="cke_dialog_ui_button">'+e.htmlEncode(t.label)+'</span>');
},
select:function(s,t,u){
    if(arguments.length<3)return;
    var v=l.call(this,t);
    if(t.validate)this.validate=t.validate;
    var w=function(){
        var x=e.extend({},t,{
            id:t.id?t.id+'_select':e.getNextNumber()+'_select'
            },true),y=[],z=[],A={
            'class':'cke_dialog_ui_input_select'
        };

        if(t.size!=undefined)A.size=t.size;
        if(t.multiple!=undefined)A.multiple=t.multiple;
        r(x);
        for(var B=0,C;B<t.items.length&&(C=t.items[B]);B++)z.push('<option value="',e.htmlEncode(C[1]!==undefined?C[1]:C[0]),'" /> ',e.htmlEncode(C[0]));
        v.select=new k.dialog.uiElement(s,x,y,'select',null,A,z.join(''));
        return y.join('');
    };

    k.dialog.labeledElement.call(this,s,t,u,w);
},
file:function(s,t,u){
    if(arguments.length<3)return;
    if(t['default']===undefined)t['default']='';
    var v=e.extend(l.call(this,t),{
        definition:t,
        buttons:[]
    });
    if(t.validate)this.validate=t.validate;
    var w=function(){
        v.frameId=e.getNextNumber()+'_fileInput';
        var x=b.isCustomDomain(),y=['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" id="',v.frameId,'" title="',t.label,'" src="javascript:void('];
        y.push(x?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');
        y.push(')"></iframe>');
        return y.join('');
    };

    s.on('load',function(){
        var x=a.document.getById(v.frameId),y=x.getParent();
        y.addClass('cke_dialog_ui_input_file');
    });
    k.dialog.labeledElement.call(this,s,t,u,w);
},
fileButton:function(s,t,u){
    if(arguments.length<3)return;
    var v=l.call(this,t),w=this;
    if(t.validate)this.validate=t.validate;
    var x=e.extend({},t),y=x.onClick;
    x.className=(x.className?x.className+' ':'')+('cke_dialog_ui_button');
    x.onClick=function(z){
        var A=t['for'];
        if(!y||y.call(this,z)!==false){
            s.getContentElement(A[0],A[1]).submit();
            this.disable();
        }
    };

s.on('load',function(){
    s.getContentElement(t['for'][0],t['for'][1])._.buttons.push(w);
});
k.dialog.button.call(this,s,x,u);
},
html:(function(){
    var s=/^\s*<[\w:]+\s+([^>]*)?>/,t=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,u=/\/$/;
    return function(v,w,x){
        if(arguments.length<3)return;
        var y=[],z,A=w.html,B,C;
        if(A.charAt(0)!='<')A='<span>'+A+'</span>';
        if(w.focus){
            var D=this.focus;
            this.focus=function(){
                D.call(this);
                w.focus.call(this);
                this.fire('focus');
            };

            if(w.isFocusable){
                var E=this.isFocusable;
                this.isFocusable=E;
            }
            this.keyboardFocusable=true;
        }
        k.dialog.uiElement.call(this,v,w,y,'span',null,null,'');
        z=y.join('');
        B=z.match(s);
        C=A.match(t)||['','',''];
        if(u.test(C[1])){
            C[1]=C[1].slice(0,-1);
            C[2]='/'+C[2];
        }
        x.push([C[1],' ',B[1]||'',C[2]].join(''));
    };

})()
},true);
k.dialog.html.prototype=new k.dialog.uiElement();
k.dialog.labeledElement.prototype=e.extend(new k.dialog.uiElement(),{
    setLabel:function(s){
        var t=a.document.getById(this._.labelId);
        if(t.getChildCount()<1)new d.text(s,a.document).appendTo(t);else t.getChild(0).$.nodeValue=s;
        return this;
    },
    getLabel:function(){
        var s=a.document.getById(this._.labelId);
        if(!s||s.getChildCount()<1)return '';else return s.getChild(0).getText();
    },
    eventProcessors:p
},true);
k.dialog.button.prototype=e.extend(new k.dialog.uiElement(),{
    click:function(){
        var s=this;
        if(!s._.disabled)return s.fire('click',{
            dialog:s._.dialog
            });
        s.getElement().$.blur();
        return false;
    },
    enable:function(){
        this._.disabled=false;
        var s=this.getElement();
        s&&s.removeClass('disabled');
    },
    disable:function(){
        this._.disabled=true;
        this.getElement().addClass('disabled');
    },
    isVisible:function(){
        return!!this.getElement().$.firstChild.offsetHeight;
    },
    isEnabled:function(){
        return!this._.disabled;
    },
    eventProcessors:e.extend({},k.dialog.uiElement.prototype.eventProcessors,{
        onClick:function(s,t){
            this.on('click',t);
        }
    },true),
accessKeyUp:function(){
    this.click();
},
accessKeyDown:function(){
    this.focus();
},
keyboardFocusable:true
},true);
k.dialog.textInput.prototype=e.extend(new k.dialog.labeledElement(),{
    getInputElement:function(){
        return a.document.getById(this._.inputId);
    },
    focus:function(){
        var s=this.selectParentTab();
        setTimeout(function(){
            var t=s.getInputElement();
            t&&t.$.focus();
        },0);
    },
    select:function(){
        var s=this.selectParentTab();
        setTimeout(function(){
            var t=s.getInputElement();
            if(t){
                t.$.focus();
                t.$.select();
            }
        },0);
},
accessKeyUp:function(){
    this.select();
},
setValue:function(s){
    s=s||'';
    return k.dialog.uiElement.prototype.setValue.call(this,s);
},
keyboardFocusable:true
},o,true);
k.dialog.textarea.prototype=new k.dialog.textInput();
k.dialog.select.prototype=e.extend(new k.dialog.labeledElement(),{
    getInputElement:function(){
        return this._.select.getElement();
    },
    add:function(s,t,u){
        var v=new h('option',this.getDialog().getParentEditor().document),w=this.getInputElement().$;
        v.$.text=s;
        v.$.value=t===undefined||t===null?s:t;
        if(u===undefined||u===null){
            if(c)w.add(v.$);else w.add(v.$,null);
        }else w.add(v.$,u);
        return this;
    },
    remove:function(s){
        var t=this.getInputElement().$;
        t.remove(s);
        return this;
    },
    clear:function(){
        var s=this.getInputElement().$;
        while(s.length>0)s.remove(0);
        return this;
    },
    keyboardFocusable:true
},o,true);
k.dialog.checkbox.prototype=e.extend(new k.dialog.uiElement(),{
    getInputElement:function(){
        return this._.checkbox.getElement();
    },
    setValue:function(s){
        this.getInputElement().$.checked=s;
        this.fire('change',{
            value:s
        });
    },
    getValue:function(){
        return this.getInputElement().$.checked;
    },
    accessKeyUp:function(){
        this.setValue(!this.getValue());
    },
    eventProcessors:{
        onChange:function(s,t){
            if(!c)return p.onChange.apply(this,arguments);
            else{
                s.on('load',function(){
                    var u=this._.checkbox.getElement();
                    u.on('propertychange',function(v){
                        v=v.data.$;
                        if(v.propertyName=='checked')this.fire('change',{
                            value:u.$.checked
                            });
                    },this);
                },this);
                this.on('change',t);
            }
            return null;
        }
    },
keyboardFocusable:true
},o,true);
k.dialog.radio.prototype=e.extend(new k.dialog.uiElement(),{
    setValue:function(s){
        var t=this._.children,u;
        for(var v=0;v<t.length&&(u=t[v]);v++)u.getElement().$.checked=u.getValue()==s;
        this.fire('change',{
            value:s
        });
    },
    getValue:function(){
        var s=this._.children;
        for(var t=0;t<s.length;t++)if(s[t].getElement().$.checked)return s[t].getValue();return null;
    },
    accessKeyUp:function(){
        var s=this._.children,t;
        for(t=0;t<s.length;t++)if(s[t].getElement().$.checked){
            s[t].getElement().focus();
            return;
        }
        s[0].getElement().focus();
    },
    eventProcessors:{
        onChange:function(s,t){
            if(!c)return p.onChange.apply(this,arguments);
            else{
                s.on('load',function(){
                    var u=this._.children,v=this;
                    for(var w=0;w<u.length;w++){
                        var x=u[w].getElement();
                        x.on('propertychange',function(y){
                            y=y.data.$;
                            if(y.propertyName=='checked'&&this.$.checked)v.fire('change',{
                                value:this.getAttribute('value')
                                });
                        });
                    }
                    },this);
            this.on('change',t);
        }
        return null;
    }
},
keyboardFocusable:true
},o,true);
k.dialog.file.prototype=e.extend(new k.dialog.labeledElement(),o,{
    getInputElement:function(){
        var s=a.document.getById(this._.frameId).getFrameDocument();
        return s.$.forms.length>0?new h(s.$.forms[0].elements[0]):this.getElement();
    },
    submit:function(){
        this.getInputElement().getParent().$.submit();
        return this;
    },
    getAction:function(s){
        return this.getInputElement().getParent().$.action;
    },
    reset:function(){
        var s=a.document.getById(this._.frameId),t=s.getFrameDocument(),u=this._.definition,v=this._.buttons;
        function w(){
            t.$.open();
            if(b.isCustomDomain())t.$.domain=document.domain;
            var x='';
            if(u.size)x=u.size-(c?7:0);
            t.$.write(['<html><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">','<form enctype="multipart/form-data" method="POST" action="',e.htmlEncode(u.action),'">','<input type="file" name="',e.htmlEncode(u.id||'cke_upload'),'" size="',e.htmlEncode(x>0?x:''),'" />','</form>','</body></html>'].join(''));
            t.$.close();
            for(var y=0;y<v.length;y++)v[y].enable();
        };

        if(b.gecko)setTimeout(w,500);else w();
    },
    getValue:function(){
        return '';
    },
    eventProcessors:p,
    keyboardFocusable:true
},true);
k.dialog.fileButton.prototype=new k.dialog.button();
a.dialog.addUIElement('text',m);
a.dialog.addUIElement('password',m);
a.dialog.addUIElement('textarea',n);
a.dialog.addUIElement('checkbox',n);
a.dialog.addUIElement('radio',n);
a.dialog.addUIElement('button',n);
a.dialog.addUIElement('select',n);
a.dialog.addUIElement('file',n);
a.dialog.addUIElement('fileButton',n);
a.dialog.addUIElement('html',n);
})();
a.skins.add('kama',(function(){
    var l=[];
    if(c&&b.version<7)l.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');
    return{
        preload:l,
        editor:{
            css:['editor.css']
            },
        dialog:{
            css:['dialog.css']
            },
        templates:{
            css:['templates.css']
            },
        margins:[0,0,0,0],
        init:function(m){
            if(m.config.width&&!isNaN(m.config.width))m.config.width-=12;
            var n=[],o=/\$color/g,p='/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';
            if(b.webkit){
                p=p.split('}').slice(0,-1);
                for(var q=0;q<p.length;q++)p[q]=p[q].split('{');
            }
            function r(u){
                var v=u.getHead().append('style');
                v.setAttribute('id','cke_ui_color');
                v.setAttribute('type','text/css');
                return v;
            };

            function s(u,v,w){
                var x,y,z;
                for(var A=0;A<u.length;A++)if(b.webkit){
                    for(y=0;y<u[A].$.sheet.rules.length;y++)u[A].$.sheet.removeRule(y);
                    for(y=0;y<v.length;y++){
                        z=v[y][1];
                        for(x=0;x<w.length;x++)z=z.replace(w[x][0],w[x][1]);
                        u[A].$.sheet.addRule(v[y][0],z);
                    }
                    }else{
                    z=v;
                    for(x=0;x<w.length;x++)z=z.replace(w[x][0],w[x][1]);
                    if(c)u[A].$.styleSheet.cssText=z;else u[A].setHtml(z);
                }
            };

    var t=/\$color/g;
    e.extend(m,{
        uiColor:null,
        getUiColor:function(){
            return this.uiColor;
        },
        setUiColor:function(u){
            var v,w=r(a.document),x='#cke_'+m.name.replace('.','\\.'),y=[x+' .cke_wrapper',x+'_dialog .cke_dialog_contents',x+'_dialog a.cke_dialog_tab',x+'_dialog .cke_dialog_footer'].join(','),z='background-color: $color !important;';
            if(b.webkit)v=[[y,z]];else v=y+'{'+z+'}';
            return(this.setUiColor=function(A){
                var B=[[t,A]];
                m.uiColor=A;
                s([w],v,B);
                s(n,p,B);
            })(u);
        }
    });
m.on('menuShow',function(u){
    var v=u.data[0],w=v.element.getElementsByTag('iframe').getItem(0).getFrameDocument();
    if(!w.getById('cke_ui_color')){
        var x=r(w);
        n.push(x);
        var y=m.getUiColor();
        if(y)s([x],p,[[t,y]]);
    }
});
if(m.config.uiColor)m.setUiColor(m.config.uiColor);
}
};

})());
if(a.dialog)a.dialog.on('resize',function(l){
    var m=l.data,n=m.width,o=m.height,p=m.dialog,q=p.parts.contents,r=!b.quirks;
    if(m.skin!='kama')return;
    q.setStyles(c||b.gecko&&b.version<10900?{
        width:n+'px',
        height:o+'px'
        }:{
        'min-width':n+'px',
        'min-height':o+'px'
        });
    if(!c)return;
    setTimeout(function(){
        var s=q.getParent(),t=s.getParent(),u=t.getChild(2);
        u.setStyle('width',s.$.offsetWidth+'px');
        u=t.getChild(7);
        u.setStyle('width',s.$.offsetWidth-28+'px');
        u=t.getChild(4);
        u.setStyle('height',s.$.offsetHeight-31-14+'px');
        u=t.getChild(5);
        u.setStyle('height',s.$.offsetHeight-31-14+'px');
    },100);
});
a.themes.add('default',(function(){
    return{
        build:function(l,m){
            var n=l.name,o=l.element,p=l.elementMode;
            if(!o||p==0)return;
            if(p==1)o.hide();
            var q=l.fire('themeSpace',{
                space:'top',
                html:''
            }).html,r=l.fire('themeSpace',{
                space:'contents',
                html:''
            }).html,s=l.fireOnce('themeSpace',{
                space:'bottom',
                html:''
            }).html,t=r&&l.config.height,u=l.config.tabIndex||l.element.getAttribute('tabindex')||0;
            if(!r)t='auto';
            else if(!isNaN(t))t+='px';
            var v='',w=l.config.width;
            if(w){
                if(!isNaN(w))w+='px';
                v+='width: '+w+';';
            }
            var x=h.createFromHtml(['<span id="cke_',n,'" onmousedown="return false;" class="',l.skinClass,'" dir="',l.lang.dir,'" title="',b.gecko?' ':'','" lang="',l.langCode,'" tabindex="'+u+'"'+(v?' style="'+v+'"':'')+'>'+'<span class="',b.cssClass,'"><span class="cke_wrapper cke_',l.lang.dir,'"><table class="cke_editor" border="0" cellspacing="0" cellpadding="0"><tbody><tr',q?'':' style="display:none"','><td id="cke_top_',n,'" class="cke_top">',q,'</td></tr><tr',r?'':' style="display:none"','><td id="cke_contents_',n,'" class="cke_contents" style="height:',t,'">',r,'</td></tr><tr',s?'':' style="display:none"','><td id="cke_bottom_',n,'" class="cke_bottom">',s,'</td></tr></tbody></table><style>.',l.skinClass,'{visibility:hidden;}</style></span></span></span>'].join(''));
            x.getChild([0,0,0,0,0]).unselectable();
            x.getChild([0,0,0,0,2]).unselectable();
            if(p==1)x.insertAfter(o);else o.append(x);
            l.container=x;
            x.disableContextMenu();
            l.fireOnce('themeLoaded');
            l.fireOnce('uiReady');
        },
        buildDialog:function(l){
            var m=e.getNextNumber(),n=h.createFromHtml(['<div id="cke_'+l.name.replace('.','\\.')+'_dialog" class="cke_skin_',l.skinName,'" dir="',l.lang.dir,'" lang="',l.langCode,'"><div class="cke_dialog',' '+b.cssClass,' cke_',l.lang.dir,'" style="position:absolute"><div class="%body"><div id="%title#" class="%title"></div><div id="%close_button#" class="%close_button"><span>X</span></div><div id="%tabs#" class="%tabs"></div><div id="%contents#" class="%contents"></div><div id="%footer#" class="%footer"></div></div><div id="%tl#" class="%tl"></div><div id="%tc#" class="%tc"></div><div id="%tr#" class="%tr"></div><div id="%ml#" class="%ml"></div><div id="%mr#" class="%mr"></div><div id="%bl#" class="%bl"></div><div id="%bc#" class="%bc"></div><div id="%br#" class="%br"></div></div>',c?'':'<style>.cke_dialog{visibility:hidden;}</style>','</div>'].join('').replace(/#/g,'_'+m).replace(/%/g,'cke_dialog_')),o=n.getChild([0,0]);
            o.getChild(0).unselectable();
            o.getChild(1).unselectable();
            return{
                element:n,
                parts:{
                    dialog:n.getChild(0),
                    title:o.getChild(0),
                    close:o.getChild(1),
                    tabs:o.getChild(2),
                    contents:o.getChild(3),
                    footer:o.getChild(4)
                    }
                };

},
destroy:function(l){
    var m=l.container,n=l.panels;
    if(c){
        m.setStyle('display','none');
        var o=document.body.createTextRange();
        o.moveToElementText(m.$);
        try{
            o.select();
        }catch(q){}
    }
    if(m)m.remove();
    for(var p=0;n&&p<n.length;p++)n[p].remove();
    if(l.elementMode==1){
    l.element.show();
    delete l.element;
}
}
};

})());
a.editor.prototype.getThemeSpace=function(l){
    var m='cke_'+l,n=this._[m]||(this._[m]=a.document.getById(m+'_'+this.name));
    return n;
};

a.editor.prototype.resize=function(l,m,n,o){
    var p=/^\d+$/;
    if(p.test(l))l+='px';
    var q=a.document.getById('cke_contents_'+this.name),r=o?q.getAscendant('table').getParent():q.getAscendant('table').getParent().getParent().getParent();
    b.webkit&&r.setStyle('display','none');
    r.setStyle('width',l);
    if(b.webkit){
        r.$.offsetWidth;
        r.setStyle('display','');
    }
    var s=n?0:(r.$.offsetHeight||0)-(q.$.clientHeight||0);
    q.setStyle('height',Math.max(m-s,0)+'px');
    this.fire('resize');
};

a.editor.prototype.getResizable=function(){
    return this.container.getChild([0,0]);
};

})();

