/* NicEdit - Micro Inline WYSIWYG
 * Copyright 2007-2008 Brian Kirchoff
 *
 * NicEdit is distributed under the terms of the MIT license
 * For more information visit http://nicedit.com/
 * Do not remove this copyright message
 */
var bkExtend=function(){
    var A=arguments;if(A.length==1){
        A=[this,A[0]]
        }for(var B in A[1]){
        A[0][B]=A[1][B]
        }return A[0]
    };function bkClass(){}bkClass.prototype.construct=function(){};bkClass.extend=function(C){
    var A=function(){
        if(arguments[0]!==bkClass){
            return this.construct.apply(this,arguments)
            }
        };var B=new this(bkClass);bkExtend(B,C);A.prototype=B;A.extend=this.extend;return A
    };var bkElement=bkClass.extend({
    construct:function(B,A){
        if(typeof (B)=="string"){
            B=(A||document).createElement(B)
            }B=$BK(B);return B
        },
    appendTo:function(A){
        A.appendChild(this);return this
        },
    appendBefore:function(A){
        A.parentNode.insertBefore(this,A);return this
        },
    addEvent:function(B,A){
        bkLib.addEvent(this,B,A);return this
        },
    setContent:function(A){
        this.innerHTML=A;return this
        },
    pos:function(){
        var C=curtop=0;var B=obj=this;if(obj.offsetParent){
            do{
                C+=obj.offsetLeft;curtop+=obj.offsetTop
                }while(obj=obj.offsetParent)
        }var A=(!window.opera)?parseInt(this.getStyle("border-width")||this.style.border)||0:0;return[C+A,curtop+A+this.offsetHeight]
        },
    noSelect:function(){
        bkLib.noSelect(this);return this
        },
    parentTag:function(A){
        var B=this;do{
            if(B&&B.nodeName&&B.nodeName.toUpperCase()==A){
                return B
                }B=B.parentNode
            }while(B);return false
        },
    hasClass:function(A){
        return this.className.match(new RegExp("(\\s|^)nicEdit-"+A+"(\\s|$)"))
        },
    addClass:function(A){
        if(!this.hasClass(A)){
            this.className+=" nicEdit-"+A
            }return this
        },
    removeClass:function(A){
        if(this.hasClass(A)){
            this.className=this.className.replace(new RegExp("(\\s|^)nicEdit-"+A+"(\\s|$)")," ")
            }return this
        },
    setStyle:function(A){
        var B=this.style;for(var C in A){
            switch(C){
                case"float":B.cssFloat=B.styleFloat=A[C];break;case"opacity":B.opacity=A[C];B.filter="alpha(opacity="+Math.round(A[C]*100)+")";break;case"className":this.className=A[C];break;default:B[C]=A[C]
                    }
            }return this
        },
    getStyle:function(A,C){
        var B=(!C)?document.defaultView:C;if(this.nodeType==1){
            return(B&&B.getComputedStyle)?B.getComputedStyle(this,null).getPropertyValue(A):this.currentStyle[bkLib.camelize(A)]
            }
        },
    remove:function(){
        this.parentNode.removeChild(this);return this
        },
    setAttributes:function(A){
        for(var B in A){
            this[B]=A[B]
            }return this
        }
    });var bkLib={
    isMSIE:(navigator.appVersion.indexOf("MSIE")!=-1),
    addEvent:function(C,B,A){
        (C.addEventListener)?C.addEventListener(B,A,false):C.attachEvent("on"+B,A)
        },
    toArray:function(C){
        var B=C.length,A=new Array(B);while(B--){
            A[B]=C[B]
            }return A
        },
    noSelect:function(B){
        if(B.setAttribute&&B.nodeName.toLowerCase()!="input"&&B.nodeName.toLowerCase()!="textarea"){
            B.setAttribute("unselectable","on")
            }for(var A=0;A<B.childNodes.length;A++){
            bkLib.noSelect(B.childNodes[A])
            }
        },
    camelize:function(A){
        return A.replace(/\-(.)/g,function(B,C){
            return C.toUpperCase()
            })
        },
    inArray:function(A,B){
        return(bkLib.search(A,B)!=null)
        },
    search:function(A,C){
        for(var B=0;B<A.length;B++){
            if(A[B]==C){
                return B
                }
            }return null
        },
    cancelEvent:function(A){
        A=A||window.event;if(A.preventDefault&&A.stopPropagation){
            A.preventDefault();A.stopPropagation()
            }return false
        },
    domLoad:[],
    domLoaded:function(){
        if(arguments.callee.done){
            return
        }arguments.callee.done=true;for(i=0;i<bkLib.domLoad.length;i++){
            bkLib.domLoad[i]()
            }
        },
    onDomLoaded:function(A){
        this.domLoad.push(A);if(document.addEventListener){
            document.addEventListener("DOMContentLoaded",bkLib.domLoaded,null)
            }else{
            if(bkLib.isMSIE){
                document.write("<style>.nicEdit-main p { margin: 0; }</style><script id=__ie_onload defer "+((location.protocol=="https:")?"src='javascript:void(0)'":"src=//0")+"><\/script>");$BK("__ie_onload").onreadystatechange=function(){
                    if(this.readyState=="complete"){
                        bkLib.domLoaded()
                        }
                    }
                }
            }window.onload=bkLib.domLoaded
        }
    };function $BK(A){
    if(typeof (A)=="string"){
        A=document.getElementById(A)
        }return(A&&!A.appendTo)?bkExtend(A,bkElement.prototype):A
    }var bkEvent={
    addEvent:function(A,B){
        if(B){
            this.eventList=this.eventList||{};this.eventList[A]=this.eventList[A]||[];this.eventList[A].push(B)
            }return this
        },
    fireEvent:function(){
        var A=bkLib.toArray(arguments),C=A.shift();if(this.eventList&&this.eventList[C]){
            for(var B=0;B<this.eventList[C].length;B++){
                this.eventList[C][B].apply(this,A)
                }
            }
        }
    };function __(A){
    return A
    }Function.prototype.closure=function(){
    var A=this,B=bkLib.toArray(arguments),C=B.shift();return function(){
        if(typeof (bkLib)!="undefined"){
            return A.apply(C,B.concat(bkLib.toArray(arguments)))
            }
        }
    };Function.prototype.closureListener=function(){
    var A=this,C=bkLib.toArray(arguments),B=C.shift();return function(E){
        E=E||window.event;if(E.target){
            var D=E.target
            }else{
            var D=E.srcElement
            }return A.apply(B,[E,D].concat(C))
        }
    };



var nicEditorConfig = bkClass.extend({
    buttons : {
        'bold' : {
            name : __('Жирный'),
            command : 'Bold',
            tags : ['B','STRONG'],
            css : {
                'font-weight' : 'bold'
            },
            key : 'b'
        },
        'italic' : {
            name : __('Курсив'),
            command : 'Italic',
            tags : ['EM','I'],
            css : {
                'font-style' : 'italic'
            },
            key : 'i'
        },
        'underline' : {
            name : __('Подчеркивание'),
            command : 'Underline',
            tags : ['U'],
            css : {
                'text-decoration' : 'underline'
            },
            key : 'u'
        },
        'left' : {
            name : __('Выранивание по левому краю'),
            command : 'justifyleft',
            noActive : true
        },
        'center' : {
            name : __('Выравнивание по центру'),
            command : 'justifycenter',
            noActive : true
        },
        'right' : {
            name : __('Выравнивание по правому краю'),
            command : 'justifyright',
            noActive : true
        },
        'justify' : {
            name : __('Justify Align'),
            command : 'justifyfull',
            noActive : true
        },
        'ol' : {
            name : __('Упорядоченный список'),
            command : 'insertorderedlist',
            tags : ['OL']
            },
        'ul' : 	{
            name : __('Неупорядоченный список'),
            command : 'insertunorderedlist',
            tags : ['UL']
            },
        'subscript' : {
            name : __('Нижний индекс'),
            command : 'subscript',
            tags : ['SUB']
            },
        'superscript' : {
            name : __('Верхний индекс'),
            command : 'superscript',
            tags : ['SUP']
            },
        'strikethrough' : {
            name : __('Перечеркивание'),
            command : 'strikeThrough',
            css : {
                'text-decoration' : 'line-through'
            }
            },
        'removeformat' : {
            name : __('Удаление форматирования'),
            command : 'removeformat',
            noActive : true
        },
        'indent' : {
            name : __('Отступ'),
            command : 'indent',
            noActive : true
        },
        'outdent' : {
            name : __('Удаление отступа'),
            command : 'outdent',
            noActive : true
        },
        'hr' : {
            name : __('Горизонтальная черта'),
            command : 'insertHorizontalRule',
            noActive : true
        }
    },
    iconsPath : '/images/nicEditorIcons.gif',
    buttonList : ['save','bold','italic','underline','left','center','right','justify','ol','ul','fontSize','fontFamily','fontFormat','indent','outdent','image','upload','link','unlink','forecolor','bgcolor', 'smile'],
    iconList : {
        "bgcolor":1,
        "forecolor":2,
        "bold":3,
        "center":4,
        "hr":5,
        "indent":6,
        "italic":7,
        "justify":8,
        "left":9,
        "ol":10,
        "outdent":11,
        "removeformat":12,
        "right":13,
        "save":14,
        "strikethrough":15,
        "subscript":16,
        "superscript":17,
        "ul":18,
        "underline":19,
        "image":20,
        "link":21,
        "unlink":22,
        "close":23,
        "arrow":24,
        "upload":25,
        "smile":27
    }
	
});
;
var nicEditors={
    nicPlugins:[],
    editors:[],
    registerPlugin:function(B,A){
        this.nicPlugins.push({
            p:B,
            o:A
        })
        },
    allTextAreas:function(C){
        var A=document.getElementsByTagName("textarea");for(var B=0;B<A.length;B++){
            nicEditors.editors.push(new nicEditor(C).panelInstance(A[B]))
            }return nicEditors.editors
        },
    findEditor:function(C){
        var B=nicEditors.editors;for(var A=0;A<B.length;A++){
            if(B[A].instanceById(C)){
                return B[A].instanceById(C)
                }
            }
        }
    };var nicEditor=bkClass.extend({
    construct:function(C){
        this.options=new nicEditorConfig();bkExtend(this.options,C);this.nicInstances=new Array();this.loadedPlugins=new Array();var A=nicEditors.nicPlugins;for(var B=0;B<A.length;B++){
            this.loadedPlugins.push(new A[B].p(this,A[B].o))
            }nicEditors.editors.push(this);bkLib.addEvent(document.body,"mousedown",this.selectCheck.closureListener(this))
        },
    panelInstance:function(B,C){
        B=this.checkReplace($BK(B));var A=new bkElement("DIV").setStyle({
            width:(parseInt(B.getStyle("width"))||B.clientWidth)+"px"
            }).appendBefore(B);this.setPanel(A);return this.addInstance(B,C)
        },
    checkReplace:function(B){
        var A=nicEditors.findEditor(B);if(A){
            A.removeInstance(B);A.removePanel()
            }return B
        },
    addInstance:function(B,C){
        B=this.checkReplace($BK(B));if(B.contentEditable||!!window.opera){
            var A=new nicEditorInstance(B,C,this)
            }else{
            var A=new nicEditorIFrameInstance(B,C,this)
            }this.nicInstances.push(A);return this
        },
    removeInstance:function(C){
        C=$BK(C);var B=this.nicInstances;for(var A=0;A<B.length;A++){
            if(B[A].e==C){
                B[A].remove();this.nicInstances.splice(A,1)
                }
            }
        },
    removePanel:function(A){
        if(this.nicPanel){
            this.nicPanel.remove();this.nicPanel=null
            }
        },
    instanceById:function(C){
        C=$BK(C);var B=this.nicInstances;for(var A=0;A<B.length;A++){
            if(B[A].e==C){
                return B[A]
                }
            }
        },
    setPanel:function(A){
        this.nicPanel=new nicEditorPanel($BK(A),this.options,this);this.fireEvent("panel",this.nicPanel);return this
        },
    nicCommand:function(B,A){
        if(this.selectedInstance){
            this.selectedInstance.nicCommand(B,A)
            }
        },
    getIcon:function(D,A){
        var C=this.options.iconList[D];var B=(A.iconFiles)?A.iconFiles[D]:"";return{
            backgroundImage:"url('"+((C)?this.options.iconsPath:B)+"')",
            backgroundPosition:((C)?((C-1)*-18):0)+"px 0px"
            }
        },
    selectCheck:function(C,A){
        var B=false;do{
            if(A.className&&A.className.indexOf("nicEdit")!=-1){
                return false
                }
            }while(A=A.parentNode);this.fireEvent("blur",this.selectedInstance,A);this.lastSelectedInstance=this.selectedInstance;this.selectedInstance=null;return false
        }
    });nicEditor=nicEditor.extend(bkEvent);
var nicEditorInstance=bkClass.extend({
    isSelected:false,
    construct:function(G,D,C){
        this.ne=C;this.elm=this.e=G;this.options=D||{};newX=parseInt(G.getStyle("width"))||G.clientWidth;newY=parseInt(G.getStyle("height"))||G.clientHeight;this.initialHeight=newY-8;var H=(G.nodeName.toLowerCase()=="textarea");if(H||this.options.hasPanel){
            var B=(bkLib.isMSIE&&!((typeof document.body.style.maxHeight!="undefined")&&document.compatMode=="CSS1Compat"));var E={
                width:newX+"px",
                border:"1px solid #ccc",
                borderTop:0,
                overflowY:"auto",
                overflowX:"hidden"
            };E[(B)?"height":"maxHeight"]=(this.ne.options.maxHeight)?this.ne.options.maxHeight+"px":null;this.editorContain=new bkElement("DIV").setStyle(E).appendBefore(G);var A=new bkElement("DIV").setStyle({
                width:(newX-8)+"px",
                margin:"4px",
                minHeight:newY+"px"
                }).addClass("main").appendTo(this.editorContain);G.setStyle({
                display:"none"
            });A.innerHTML=G.innerHTML;if(H){
                A.setContent(G.value);this.copyElm=G;var F=G.parentTag("FORM");if(F){
                    bkLib.addEvent(F,"submit",this.saveContent.closure(this))
                    }
                }A.setStyle((B)?{
                height:newY+"px"
                }:{
                overflow:"hidden"
            });this.elm=A
            }this.ne.addEvent("blur",this.blur.closure(this));this.init();this.blur()
        },
    init:function(){
        this.elm.setAttribute("contentEditable","true");if(this.getContent()==""){
            this.setContent("<br />")
            }this.instanceDoc=document.defaultView;this.elm.addEvent("mousedown",this.selected.closureListener(this)).addEvent("keypress",this.keyDown.closureListener(this)).addEvent("focus",this.selected.closure(this)).addEvent("blur",this.blur.closure(this)).addEvent("keyup",this.selected.closure(this));this.ne.fireEvent("add",this)
        },
    remove:function(){
        this.saveContent();if(this.copyElm||this.options.hasPanel){
            this.editorContain.remove();this.e.setStyle({
                display:"block"
            });this.ne.removePanel()
            }this.disable();this.ne.fireEvent("remove",this)
        },
    disable:function(){
        this.elm.setAttribute("contentEditable","false")
        },
    getSel:function(){
        return(window.getSelection)?window.getSelection():document.selection
        },
    getRng:function(){
        var A=this.getSel();if(!A){
            return null
            }return(A.rangeCount>0)?A.getRangeAt(0):A.createRange()
        },
    selRng:function(A,B){
        if(window.getSelection){
            B.removeAllRanges();B.addRange(A)
            }else{
            A.select()
            }
        },
    selElm:function(){
        var C=this.getRng();if(C.startContainer){
            var D=C.startContainer;if(C.cloneContents().childNodes.length==1){
                for(var B=0;B<D.childNodes.length;B++){
                    var A=D.childNodes[B].ownerDocument.createRange();A.selectNode(D.childNodes[B]);if(C.compareBoundaryPoints(Range.START_TO_START,A)!=1&&C.compareBoundaryPoints(Range.END_TO_END,A)!=-1){
                        return $BK(D.childNodes[B])
                        }
                    }
                }return $BK(D)
            }else{
            return $BK((this.getSel().type=="Control")?C.item(0):C.parentElement())
            }
        },
    saveRng:function(){
        this.savedRange=this.getRng();this.savedSel=this.getSel()
        },
    restoreRng:function(){
        if(this.savedRange){
            this.selRng(this.savedRange,this.savedSel)
            }
        },
    keyDown:function(B,A){
        if(B.ctrlKey){
            this.ne.fireEvent("key",this,B)
            }
        },
    selected:function(C,A){
        if(!A){
            A=this.selElm()
            }if(!C.ctrlKey){
            var B=this.ne.selectedInstance;if(B!=this){
                if(B){
                    this.ne.fireEvent("blur",B,A)
                    }this.ne.selectedInstance=this;this.ne.fireEvent("focus",B,A)
                }this.ne.fireEvent("selected",B,A);this.isFocused=true;this.elm.addClass("selected")
            }return false
        },
    blur:function(){
        this.isFocused=false;this.elm.removeClass("selected")
        },
    saveContent:function(){
        if(this.copyElm||this.options.hasPanel){
            this.ne.fireEvent("save",this);(this.copyElm)?this.copyElm.value=this.getContent():this.e.innerHTML=this.getContent()
            }
        },
    getElm:function(){
        return this.elm
        },
    getContent:function(){
        this.content=this.getElm().innerHTML;this.ne.fireEvent("get",this);return this.content
        },
    setContent:function(A){
        this.content=A;this.ne.fireEvent("set",this);this.elm.innerHTML=this.content
        },
    nicCommand:function(B,A){
        document.execCommand(B,false,A)
        }
    });
var nicEditorIFrameInstance=nicEditorInstance.extend({
    savedStyles:[],
    init:function(){
        var B=this.elm.innerHTML.replace(/^\s+|\s+$/g,"");this.elm.innerHTML="";(!B)?B="<br />":B;this.initialContent=B;this.elmFrame=new bkElement("iframe").setAttributes({
            src:"javascript:;",
            frameBorder:0,
            allowTransparency:"true",
            scrolling:"no"
        }).setStyle({
            height:"100px",
            width:"100%"
        }).addClass("frame").appendTo(this.elm);if(this.copyElm){
            this.elmFrame.setStyle({
                width:(this.elm.offsetWidth-4)+"px"
                })
            }var A=["font-size","font-family","font-weight","color"];for(itm in A){
            this.savedStyles[bkLib.camelize(itm)]=this.elm.getStyle(itm)
            }setTimeout(this.initFrame.closure(this),50)
        },
    disable:function(){
        this.elm.innerHTML=this.getContent()
        },
    initFrame:function(){
        var B=$BK(this.elmFrame.contentWindow.document);B.designMode="on";B.open();var A=this.ne.options.externalCSS;B.write("<html><head>"+((A)?'<link href="'+A+'" rel="stylesheet" type="text/css" />':"")+'</head><body id="nicEditContent" style="margin: 0 !important; background-color: transparent !important;">'+this.initialContent+"</body></html>");B.close();this.frameDoc=B;this.frameWin=$BK(this.elmFrame.contentWindow);this.frameContent=$BK(this.frameWin.document.body).setStyle(this.savedStyles);this.instanceDoc=this.frameWin.document.defaultView;this.heightUpdate();this.frameDoc.addEvent("mousedown",this.selected.closureListener(this)).addEvent("keyup",this.heightUpdate.closureListener(this)).addEvent("keydown",this.keyDown.closureListener(this)).addEvent("keyup",this.selected.closure(this));this.ne.fireEvent("add",this)
        },
    getElm:function(){
        return this.frameContent
        },
    setContent:function(A){
        this.content=A;this.ne.fireEvent("set",this);this.frameContent.innerHTML=this.content;this.heightUpdate()
        },
    getSel:function(){
        return(this.frameWin)?this.frameWin.getSelection():this.frameDoc.selection
        },
    heightUpdate:function(){
        this.elmFrame.style.height=Math.max(this.frameContent.offsetHeight,this.initialHeight)+"px"
        },
    nicCommand:function(B,A){
        this.frameDoc.execCommand(B,false,A);setTimeout(this.heightUpdate.closure(this),100)
        }
    });
var nicEditorPanel=bkClass.extend({
    construct:function(E,B,A){
        this.elm=E;this.options=B;this.ne=A;this.panelButtons=new Array();this.buttonList=bkExtend([],this.ne.options.buttonList);this.panelContain=new bkElement("DIV").setStyle({
            overflow:"hidden",
            width:"100%",
            border:"1px solid #cccccc",
            backgroundColor:"#efefef"
        }).addClass("panelContain");this.panelElm=new bkElement("DIV").setStyle({
            margin:"2px",
            marginTop:"0px",
            zoom:1,
            overflow:"hidden"
        }).addClass("panel").appendTo(this.panelContain);this.panelContain.appendTo(E);var C=this.ne.options;var D=C.buttons;for(button in D){
            this.addButton(button,C,true)
            }this.reorder();E.noSelect()
        },
    addButton:function(buttonName,options,noOrder){
        var button=options.buttons[buttonName];var type=(button.type)?eval("(typeof("+button.type+') == "undefined") ? null : '+button.type+";"):nicEditorButton;var hasButton=bkLib.inArray(this.buttonList,buttonName);if(type&&(hasButton||this.ne.options.fullPanel)){
            this.panelButtons.push(new type(this.panelElm,buttonName,options,this.ne));if(!hasButton){
                this.buttonList.push(buttonName)
                }
            }
        },
    findButton:function(B){
        for(var A=0;A<this.panelButtons.length;A++){
            if(this.panelButtons[A].name==B){
                return this.panelButtons[A]
                }
            }
        },
    reorder:function(){
        var C=this.buttonList;for(var B=0;B<C.length;B++){
            var A=this.findButton(C[B]);if(A){
                this.panelElm.appendChild(A.margin)
                }
            }
        },
    remove:function(){
        this.elm.remove()
        }
    });
var nicEditorButton=bkClass.extend({
    construct:function(D,A,C,B){
        this.options=C.buttons[A];this.name=A;this.ne=B;this.elm=D;this.margin=new bkElement("DIV").setStyle({
            "float":"left",
            marginTop:"2px"
        }).appendTo(D);this.contain=new bkElement("DIV").setStyle({
            width:"20px",
            height:"20px"
        }).addClass("buttonContain").appendTo(this.margin);this.border=new bkElement("DIV").setStyle({
            backgroundColor:"#efefef",
            border:"1px solid #efefef"
        }).appendTo(this.contain);this.button=new bkElement("DIV").setStyle({
            width:"18px",
            height:"18px",
            overflow:"hidden",
            zoom:1,
            cursor:"pointer"
        }).addClass("button").setStyle(this.ne.getIcon(A,C)).appendTo(this.border);this.button.addEvent("mouseover",this.hoverOn.closure(this)).addEvent("mouseout",this.hoverOff.closure(this)).addEvent("mousedown",this.mouseClick.closure(this)).noSelect();if(!window.opera){
            this.button.onmousedown=this.button.onclick=bkLib.cancelEvent
            }B.addEvent("selected",this.enable.closure(this)).addEvent("blur",this.disable.closure(this)).addEvent("key",this.key.closure(this));this.disable();this.init()
        },
    init:function(){},
    hide:function(){
        this.contain.setStyle({
            display:"none"
        })
        },
    updateState:function(){
        if(this.isDisabled){
            this.setBg()
            }else{
            if(this.isHover){
                this.setBg("hover")
                }else{
                if(this.isActive){
                    this.setBg("active")
                    }else{
                    this.setBg()
                    }
                }
            }
        },
    setBg:function(A){
        switch(A){
            case"hover":var B={
                border:"1px solid #666",
                backgroundColor:"#ddd"
            };break;case"active":var B={
                border:"1px solid #666",
                backgroundColor:"#ccc"
            };break;default:var B={
                border:"1px solid #efefef",
                backgroundColor:"#efefef"
            }
            }this.border.setStyle(B).addClass("button-"+A)
        },
    checkNodes:function(A){
        var B=A;do{
            if(this.options.tags&&bkLib.inArray(this.options.tags,B.nodeName)){
                this.activate();return true
                }
            }while(B=B.parentNode&&B.className!="nicEdit");B=$BK(A);while(B.nodeType==3){
            B=$BK(B.parentNode)
            }if(this.options.css){
            for(itm in this.options.css){
                if(B.getStyle(itm,this.ne.selectedInstance.instanceDoc)==this.options.css[itm]){
                    this.activate();return true
                    }
                }
            }this.deactivate();return false
        },
    activate:function(){
        if(!this.isDisabled){
            this.isActive=true;this.updateState();this.ne.fireEvent("buttonActivate",this)
            }
        },
    deactivate:function(){
        this.isActive=false;this.updateState();if(!this.isDisabled){
            this.ne.fireEvent("buttonDeactivate",this)
            }
        },
    enable:function(A,B){
        this.isDisabled=false;this.contain.setStyle({
            opacity:1
        }).addClass("buttonEnabled");this.updateState();this.checkNodes(B)
        },
    disable:function(A,B){
        this.isDisabled=true;this.contain.setStyle({
            opacity:0.6
        }).removeClass("buttonEnabled");this.updateState()
        },
    toggleActive:function(){
        (this.isActive)?this.deactivate():this.activate()
        },
    hoverOn:function(){
        if(!this.isDisabled){
            this.isHover=true;this.updateState();this.ne.fireEvent("buttonOver",this)
            }
        },
    hoverOff:function(){
        this.isHover=false;this.updateState();this.ne.fireEvent("buttonOut",this)
        },
    mouseClick:function(){
        if(this.options.command){
            this.ne.nicCommand(this.options.command,this.options.commandArgs);if(!this.options.noActive){
                this.toggleActive()
                }
            }this.ne.fireEvent("buttonClick",this)
        },
    key:function(A,B){
        if(this.options.key&&B.ctrlKey&&String.fromCharCode(B.keyCode||B.charCode).toLowerCase()==this.options.key){
            this.mouseClick();if(B.preventDefault){
                B.preventDefault()
                }
            }
        }
    });
var nicPlugin=bkClass.extend({
    construct:function(B,A){
        this.options=A;this.ne=B;this.ne.addEvent("panel",this.loadPanel.closure(this));this.init()
        },
    loadPanel:function(C){
        var B=this.options.buttons;for(var A in B){
            C.addButton(A,this.options)
            }C.reorder()
        },
    init:function(){}
    });


var nicPaneOptions = { };

var nicEditorPane=bkClass.extend({
    construct:function(D,C,B,A){
        this.ne=C;this.elm=D;this.pos=D.pos();this.contain=new bkElement("div").setStyle({
            zIndex:"99999",
            overflow:"hidden",
            position:"absolute",
            left:this.pos[0]+"px",
            top:this.pos[1]+"px"
            });this.pane=new bkElement("div").setStyle({
            fontSize:"12px",
            border:"1px solid #ccc",
            overflow:"hidden",
            padding:"4px",
            textAlign:"left",
            backgroundColor:"#ffffc9"
        }).addClass("pane").setStyle(B).appendTo(this.contain);if(A&&!A.options.noClose){
            this.close=new bkElement("div").setStyle({
                "float":"right",
                height:"16px",
                width:"16px",
                cursor:"pointer"
            }).setStyle(this.ne.getIcon("close",nicPaneOptions)).addEvent("mousedown",A.removePane.closure(this)).appendTo(this.pane)
            }this.contain.noSelect().appendTo(document.body);this.position();this.init()
        },
    init:function(){},
    position:function(){
        if(this.ne.nicPanel){
            var B=this.ne.nicPanel.elm;var A=B.pos();var C=A[0]+parseInt(B.getStyle("width"))-(parseInt(this.pane.getStyle("width"))+8);if(C<this.pos[0]){
                this.contain.setStyle({
                    left:C+"px"
                    })
                }
            }
        },
    toggle:function(){
        this.isVisible=!this.isVisible;this.contain.setStyle({
            display:((this.isVisible)?"block":"none")
            })
        },
    remove:function(){
        if(this.contain){
            this.contain.remove();this.contain=null
            }
        },
    append:function(A){
        A.appendTo(this.pane)
        },
    setContent:function(A){
        this.pane.setContent(A)
        }
    });

var nicEditorAdvancedButton=nicEditorButton.extend({
    init:function(){
        this.ne.addEvent("selected",this.removePane.closure(this)).addEvent("blur",this.removePane.closure(this))
        },
    mouseClick:function(){
        if(!this.isDisabled){
            if(this.pane&&this.pane.pane){
                this.removePane()
                }else{
                this.pane=new nicEditorPane(this.contain,this.ne,{
                    width:(this.width||"270px"),
                    backgroundColor:"#fff"
                },this);this.addPane();this.ne.selectedInstance.saveRng()
                }
            }
        },
    addForm:function(C,G){
        this.form=new bkElement("form").addEvent("submit",this.submit.closureListener(this));this.pane.append(this.form);this.inputs={};for(itm in C){
            var D=C[itm];var F="";if(G){
                F=G.getAttribute(itm)
                }if(!F){
                F=D.value||""
                }var A=C[itm].type;if(A=="title"){
                new bkElement("div").setContent(D.txt).setStyle({
                    fontSize:"14px",
                    fontWeight:"bold",
                    padding:"0px",
                    margin:"2px 0"
                }).appendTo(this.form)
                }else{
                var B=new bkElement("div").setStyle({
                    overflow:"hidden",
                    clear:"both"
                }).appendTo(this.form);if(D.txt){
                    new bkElement("label").setAttributes({
                        "for":itm
                    }).setContent(D.txt).setStyle({
                        margin:"2px 4px",
                        fontSize:"13px",
                        width:"100px",
                        lineHeight:"20px",
                        textAlign:"right",
                        "float":"left"
                    }).appendTo(B)
                    }switch(A){
                    case"text":this.inputs[itm]=new bkElement("input").setAttributes({
                        id:itm,
                        value:F,
                        type:"text"
                    }).setStyle({
                        margin:"2px 0",
                        fontSize:"13px",
                        "float":"left",
                        height:"20px",
                        border:"1px solid #ccc",
                        overflow:"hidden"
                    }).setStyle(D.style).appendTo(B);break;case"select":this.inputs[itm]=new bkElement("select").setAttributes({
                        id:itm
                    }).setStyle({
                        border:"1px solid #ccc",
                        "float":"left",
                        margin:"2px 0"
                    }).appendTo(B);for(opt in D.options){
                        var E=new bkElement("option").setAttributes({
                            value:opt,
                            selected:(opt==F)?"selected":""
                            }).setContent(D.options[opt]).appendTo(this.inputs[itm])
                        }break;case"content":this.inputs[itm]=new bkElement("textarea").setAttributes({
                        id:itm
                    }).setStyle({
                        border:"1px solid #ccc",
                        "float":"left"
                    }).setStyle(D.style).appendTo(B);this.inputs[itm].value=F
                        }
                }
            }new bkElement("input").setAttributes({
            type:"submit"
        }).setStyle({
            backgroundColor:"#efefef",
            border:"1px solid #ccc",
            margin:"3px 0",
            "float":"left",
            clear:"both"
        }).appendTo(this.form);this.form.onsubmit=bkLib.cancelEvent
        },
    submit:function(){},
    findElm:function(B,A,E){
        var D=this.ne.selectedInstance.getElm().getElementsByTagName(B);for(var C=0;C<D.length;C++){
            if(D[C].getAttribute(A)==E){
                return $BK(D[C])
                }
            }
        },
    removePane:function(){
        if(this.pane){
            this.pane.remove();this.pane=null;this.ne.selectedInstance.restoreRng()
            }
        }
    });

var nicButtonTips=bkClass.extend({
    construct:function(A){
        this.ne=A;A.addEvent("buttonOver",this.show.closure(this)).addEvent("buttonOut",this.hide.closure(this))
        },
    show:function(A){
        this.timer=setTimeout(this.create.closure(this,A),400)
        },
    create:function(A){
        this.timer=null;if(!this.pane){
            this.pane=new nicEditorPane(A.button,this.ne,{
                fontSize:"12px",
                marginTop:"5px"
            });this.pane.setContent(A.options.name)
            }
        },
    hide:function(A){
        if(this.timer){
            clearTimeout(this.timer)
            }if(this.pane){
            this.pane=this.pane.remove()
            }
        }
    });nicEditors.registerPlugin(nicButtonTips);


var nicSelectOptions = {
    buttons : {
        'fontSize' : {
            name : __('Размер шрифта'),
            type : 'nicEditorFontSizeSelect',
            command : 'fontsize'
        },
        'fontFamily' : {
            name : __('Шрифт'),
            type : 'nicEditorFontFamilySelect',
            command : 'fontname'
        },
        'fontFormat' : {
            name : __('Формат шрифта'),
            type : 'nicEditorFontFormatSelect',
            command : 'formatBlock'
        }
    }
};

var nicEditorSelect=bkClass.extend({
    construct:function(D,A,C,B){
        this.options=C.buttons[A];this.elm=D;this.ne=B;this.name=A;this.selOptions=new Array();this.margin=new bkElement("div").setStyle({
            "float":"left",
            margin:"2px 1px 0 1px"
        }).appendTo(this.elm);this.contain=new bkElement("div").setStyle({
            width:"90px",
            height:"20px",
            cursor:"pointer",
            overflow:"hidden"
        }).addClass("selectContain").addEvent("click",this.toggle.closure(this)).appendTo(this.margin);this.items=new bkElement("div").setStyle({
            overflow:"hidden",
            zoom:1,
            border:"1px solid #ccc",
            paddingLeft:"3px",
            backgroundColor:"#fff"
        }).appendTo(this.contain);this.control=new bkElement("div").setStyle({
            overflow:"hidden",
            "float":"right",
            height:"18px",
            width:"16px"
        }).addClass("selectControl").setStyle(this.ne.getIcon("arrow",C)).appendTo(this.items);this.txt=new bkElement("div").setStyle({
            overflow:"hidden",
            "float":"left",
            width:"66px",
            height:"14px",
            marginTop:"1px",
            fontFamily:"sans-serif",
            textAlign:"center",
            fontSize:"12px"
        }).addClass("selectTxt").appendTo(this.items);if(!window.opera){
            this.contain.onmousedown=this.control.onmousedown=this.txt.onmousedown=bkLib.cancelEvent
            }this.margin.noSelect();this.ne.addEvent("selected",this.enable.closure(this)).addEvent("blur",this.disable.closure(this));this.disable();this.init()
        },
    disable:function(){
        this.isDisabled=true;this.close();this.contain.setStyle({
            opacity:0.6
        })
        },
    enable:function(A){
        this.isDisabled=false;this.close();this.contain.setStyle({
            opacity:1
        })
        },
    setDisplay:function(A){
        this.txt.setContent(A)
        },
    toggle:function(){
        if(!this.isDisabled){
            (this.pane)?this.close():this.open()
            }
        },
    open:function(){
        this.pane=new nicEditorPane(this.items,this.ne,{
            width:"88px",
            padding:"0px",
            borderTop:0,
            borderLeft:"1px solid #ccc",
            borderRight:"1px solid #ccc",
            borderBottom:"0px",
            backgroundColor:"#fff"
        });for(var C=0;C<this.selOptions.length;C++){
            var B=this.selOptions[C];var A=new bkElement("div").setStyle({
                overflow:"hidden",
                borderBottom:"1px solid #ccc",
                width:"88px",
                textAlign:"left",
                overflow:"hidden",
                cursor:"pointer"
            });var D=new bkElement("div").setStyle({
                padding:"0px 4px"
            }).setContent(B[1]).appendTo(A).noSelect();D.addEvent("click",this.update.closure(this,B[0])).addEvent("mouseover",this.over.closure(this,D)).addEvent("mouseout",this.out.closure(this,D)).setAttributes("id",B[0]);this.pane.append(A);if(!window.opera){
                D.onmousedown=bkLib.cancelEvent
                }
            }
        },
    close:function(){
        if(this.pane){
            this.pane=this.pane.remove()
            }
        },
    over:function(A){
        A.setStyle({
            backgroundColor:"#ccc"
        })
        },
    out:function(A){
        A.setStyle({
            backgroundColor:"#fff"
        })
        },
    add:function(B,A){
        this.selOptions.push(new Array(B,A))
        },
    update:function(A){
        this.ne.nicCommand(this.options.command,A);this.close()
        }
    });var nicEditorFontSizeSelect=nicEditorSelect.extend({
    sel:{
        1:"1&nbsp;(8pt)",
        2:"2&nbsp;(10pt)",
        3:"3&nbsp;(12pt)",
        4:"4&nbsp;(14pt)",
        5:"5&nbsp;(18pt)",
        6:"6&nbsp;(24pt)"
    },
    init:function(){
        this.setDisplay("Font&nbsp;Size...");for(itm in this.sel){
            this.add(itm,'<font size="'+itm+'">'+this.sel[itm]+"</font>")
            }
        }
    });var nicEditorFontFamilySelect=nicEditorSelect.extend({
    sel:{
        arial:"Arial",
        "comic sans ms":"Comic Sans",
        "courier new":"Courier New",
        georgia:"Georgia",
        helvetica:"Helvetica",
        impact:"Impact",
        "times new roman":"Times",
        "trebuchet ms":"Trebuchet",
        verdana:"Verdana"
    },
    init:function(){
        this.setDisplay("Font&nbsp;Family...");for(itm in this.sel){
            this.add(itm,'<font face="'+itm+'">'+this.sel[itm]+"</font>")
            }
        }
    });var nicEditorFontFormatSelect=nicEditorSelect.extend({
    sel:{
        p:"Paragraph",
        pre:"Pre",
        h6:"Heading&nbsp;6",
        h5:"Heading&nbsp;5",
        h4:"Heading&nbsp;4",
        h3:"Heading&nbsp;3",
        h2:"Heading&nbsp;2",
        h1:"Heading&nbsp;1"
    },
    init:function(){
        this.setDisplay("Font&nbsp;Format...");for(itm in this.sel){
            var A=itm.toUpperCase();this.add("<"+A+">","<"+itm+' style="padding: 0px; margin: 0px;">'+this.sel[itm]+"</"+A+">")
            }
        }
    });nicEditors.registerPlugin(nicPlugin,nicSelectOptions);


var nicLinkOptions = {
    buttons : {
        'link' : {
            name : 'Добавление ссылки',
            type : 'nicLinkButton',
            tags : ['A']
            },
        'unlink' : {
            name : 'Удаление ссылки',
            command : 'unlink',
            noActive : true
        }
    }
};

var nicLinkButton=nicEditorAdvancedButton.extend({
    addPane:function(){
        this.ln=this.ne.selectedInstance.selElm().parentTag("A");this.addForm({
            "":{
                type:"title",
                txt:"Add/Edit Link"
            },
            href:{
                type:"text",
                txt:"URL",
                value:"http://",
                style:{
                    width:"150px"
                }
                },
            title:{
                type:"text",
                txt:"Title"
            },
            target:{
                type:"select",
                txt:"Open In",
                options:{
                    "":"Current Window",
                    _blank:"New Window"
                },
                style:{
                    width:"100px"
                }
                }
            },this.ln)
        },
    submit:function(C){
        var A=this.inputs.href.value;if(A=="http://"||A==""){
            alert("You must enter a URL to Create a Link");return false
            }this.removePane();if(!this.ln){
            var B="javascript:nicTemp();";this.ne.nicCommand("createlink",B);this.ln=this.findElm("A","href",B)
            }if(this.ln){
            this.ln.setAttributes({
                href:this.inputs.href.value,
                title:this.inputs.title.value,
                target:this.inputs.target.options[this.inputs.target.selectedIndex].value
                })
            }
        }
    });nicEditors.registerPlugin(nicPlugin,nicLinkOptions);


var nicColorOptions = {
    buttons : {
        'forecolor' : {
            name : __('Цвет текста'),
            type : 'nicEditorColorButton',
            noClose : true
        },
        'bgcolor' : {
            name : __('Цвет фона'),
            type : 'nicEditorBgColorButton',
            noClose : true
        }
    }
};

var nicEditorColorButton=nicEditorAdvancedButton.extend({
    addPane:function(){
        var D={
            0:"00",
            1:"33",
            2:"66",
            3:"99",
            4:"CC",
            5:"FF"
        };var H=new bkElement("DIV").setStyle({
            width:"270px"
        });for(var A in D){
            for(var F in D){
                for(var E in D){
                    var I="#"+D[A]+D[E]+D[F];var C=new bkElement("DIV").setStyle({
                        cursor:"pointer",
                        height:"15px",
                        "float":"left"
                    }).appendTo(H);var G=new bkElement("DIV").setStyle({
                        border:"2px solid "+I
                        }).appendTo(C);var B=new bkElement("DIV").setStyle({
                        backgroundColor:I,
                        overflow:"hidden",
                        width:"11px",
                        height:"11px"
                    }).addEvent("click",this.colorSelect.closure(this,I)).addEvent("mouseover",this.on.closure(this,G)).addEvent("mouseout",this.off.closure(this,G,I)).appendTo(G);if(!window.opera){
                        C.onmousedown=B.onmousedown=bkLib.cancelEvent
                        }
                    }
                }
            }this.pane.append(H.noSelect())
        },
    colorSelect:function(A){
        this.ne.nicCommand("foreColor",A);this.removePane()
        },
    on:function(A){
        A.setStyle({
            border:"2px solid #000"
        })
        },
    off:function(A,B){
        A.setStyle({
            border:"2px solid "+B
            })
        }
    });var nicEditorBgColorButton=nicEditorColorButton.extend({
    colorSelect:function(A){
        this.ne.nicCommand("hiliteColor",A);this.removePane()
        }
    });nicEditors.registerPlugin(nicPlugin,nicColorOptions);


var nicImageOptions = {
    buttons : {
        'image' : {
            name : 'Добавить картинку',
            type : 'nicImageButton',
            tags : ['IMG']
            }
    }
	
};

var nicImageButton=nicEditorAdvancedButton.extend({
    addPane:function(){
        this.im=this.ne.selectedInstance.selElm().parentTag("IMG");this.addForm({
            "":{
                type:"title",
                txt:"Добавить/Редактировать картинку"
            },
            src:{
                type:"text",
                txt:"URL",
                value:"http://",
                style:{
                    width:"150px"
                }
                },
            alt:{
                type:"text",
                txt:"Текст",
                style:{
                    width:"100px"
                }
                },
            align:{
                type:"select",
                txt:"Выравнивание",
                options:{
                    none:"По умолчанию",
                    left:"Слева",
                    right:"Справа"
                }
                }
            },this.im)
        },
    submit:function(B){
        var C=this.inputs.src.value;if(C==""||C=="http://"){
            alert("Вы должны ввести URL картинки");return false
            }this.removePane();if(!this.im){
            var A="javascript:nicImTemp();";this.ne.nicCommand("insertImage",A);this.im=this.findElm("IMG","src",A)
            }if(this.im){
            this.im.setAttributes({
                src:this.inputs.src.value,
                alt:this.inputs.alt.value,
                align:this.inputs.align.value
                })
            }
        }
    });nicEditors.registerPlugin(nicPlugin,nicImageOptions);


var nicUploadOptions = {
    buttons : {
        'upload' : {
            name : 'Загрузить куртинку',
            type : 'nicUploadButton'
        }
    }
	
};

var nicUploadButton=nicEditorAdvancedButton.extend({
    nicURI:"http://files.nicedit.com/",
    addPane:function(){
        this.im=this.ne.selectedInstance.selElm().parentTag("IMG");this.myID=Math.round(Math.random()*Math.pow(10,15));this.requestInterval=1000;this.uri=this.ne.options.uploadURI||this.nicURI;nicUploadButton.lastPlugin=this;this.myFrame=new bkElement("iframe").setAttributes({
            width:"100%",
            height:"100px",
            frameBorder:0,
            scrolling:"no"
        }).setStyle({
            border:0
        }).appendTo(this.pane.pane);this.progressWrapper=new bkElement("div").setStyle({
            display:"none",
            width:"100%",
            height:"20px",
            border:"1px solid #ccc"
        }).appendTo(this.pane.pane);this.progress=new bkElement("div").setStyle({
            width:"0%",
            height:"20px",
            backgroundColor:"#ccc"
        }).setContent("&nbsp").appendTo(this.progressWrapper);setTimeout(this.addForm.closure(this),50)
        },
    addForm:function(){
        var A=this.myDoc=this.myFrame.contentWindow.document;A.open();A.write("<html><body>");A.write('<form method="post" action="'+this.uri+"?id="+this.myID+'" enctype="multipart/form-data">');A.write('<input type="hidden" name="APC_UPLOAD_PROGRESS" value="'+this.myID+'" />');if(this.uri==this.nicURI){
            A.write('<div style="position: absolute; margin-left: 160px;"><img src="http://imageshack.us/img/imageshack.png" width="30" style="float: left;" /><div style="float: left; margin-left: 5px; font-size: 10px;"><br /><a href="http://www.imageshack.us/" target="_blank">ImageShack</a></div></div>')
            }A.write('<div style="font-size: 14px; font-weight: bold; padding-top: 5px;">Загрузите картинку</div>');A.write('<input name="nicImage" type="file" style="margin-top: 10px;" />');A.write("</form>");A.write("</body></html>");A.close();this.myBody=A.body;this.myForm=$BK(this.myBody.getElementsByTagName("form")[0]);this.myInput=$BK(this.myBody.getElementsByTagName("input")[1]).addEvent("change",this.startUpload.closure(this));this.myStatus=new bkElement("div",this.myDoc).setStyle({
            textAlign:"center",
            fontSize:"14px"
        }).appendTo(this.myBody)
        },
    startUpload:function(){
        this.myForm.setStyle({
            display:"none"
        });this.myStatus.setContent('<img src="http://files.nicedit.com/ajax-loader.gif" style="float: right; margin-right: 40px;" /><strong>Uploading...</strong><br />Please wait');this.myForm.submit();setTimeout(this.makeRequest.closure(this),this.requestInterval)
        },
    makeRequest:function(){
        if(this.pane&&this.pane.pane){
            nicUploadButton.lastPlugin=this;var A=new bkElement("script").setAttributes({
                type:"text/javascript",
                src:this.uri+"?check="+this.myID+"&rand="+Math.round(Math.random()*Math.pow(10,15))
                }).addEvent("load",function(){
                A.parentNode.removeChild(A)
                }).appendTo(document.getElementsByTagName("head")[0]);if(this.requestInterval){
                setTimeout(this.makeRequest.closure(this),this.requestInterval)
                }
            }
        },
    setProgress:function(A){
        this.progressWrapper.setStyle({
            display:"block"
        });this.progress.setStyle({
            width:A+"%"
            })
        },
    update:function(C){
        if(C==false){
            this.progressWrapper.setStyle({
                display:"none"
            })
            }else{
            if(C.url){
                this.setProgress(100);this.requestInterval=false;if(!this.im){
                    this.ne.selectedInstance.restoreRng();var B="javascript:nicImTemp();";this.ne.nicCommand("insertImage",B);this.im=this.findElm("IMG","src",B)
                    }var A=parseInt(this.ne.selectedInstance.elm.getStyle("width"));if(this.im){
                    this.im.setAttributes({
                        src:C.url,
                        width:(A&&C.width)?Math.min(A,C.width):""
                        })
                    }this.removePane()
                }else{
                if(C.error){
                    this.requestInterval=false;this.setProgress(100);alert("There was an error uploading your image ("+C.error+").");this.removePane()
                    }else{
                    if(C.noprogress){
                        this.progressWrapper.setStyle({
                            display:"none"
                        });if(this.uri.indexOf("http:")==-1||this.uri.indexOf(window.location.host)!=-1){
                            this.requestInterval=false
                            }
                        }else{
                        this.setProgress(Math.round((C.current/C.total)*75));if(C.interval){
                            this.requestInterval=C.interval
                            }
                        }
                    }
                }
            }
        }
    });nicUploadButton.statusCb=function(A){
    nicUploadButton.lastPlugin.update(A)
    };nicEditors.registerPlugin(nicPlugin,nicUploadOptions);

var nicXHTML=bkClass.extend({
    stripAttributes:["_moz_dirty","_moz_resizing","_extended"],
    noShort:["style","title","script","textarea","a"],
    cssReplace:{
        "font-weight:bold;":"strong",
        "font-style:italic;":"em"
    },
    sizes:{
        1:"xx-small",
        2:"x-small",
        3:"small",
        4:"medium",
        5:"large",
        6:"x-large"
    },
    construct:function(A){
        this.ne=A;if(this.ne.options.xhtml){
            A.addEvent("get",this.cleanup.closure(this))
            }
        },
    cleanup:function(A){
        var B=A.getElm();var C=this.toXHTML(B);A.content=C
        },
    toXHTML:function(C,A,L){
        var G="";var O="";var P="";var I=C.nodeType;var Q=C.nodeName.toLowerCase();var N=C.hasChildNodes&&C.hasChildNodes();var B=new Array();switch(I){
            case 1:var H=C.attributes;switch(Q){
                case"b":Q="strong";break;case"i":Q="em";break;case"font":Q="span";break
                    }if(A){
                for(var F=0;F<H.length;F++){
                    var K=H[F];var M=K.nodeName.toLowerCase();var D=K.nodeValue;if(!K.specified||!D||bkLib.inArray(this.stripAttributes,M)||typeof (D)=="function"){
                        continue
                    }switch(M){
                        case"style":var J=D.replace(/ /g,"");for(itm in this.cssReplace){
                            if(J.indexOf(itm)!=-1){
                                B.push(this.cssReplace[itm]);J=J.replace(itm,"")
                                }
                            }P+=J;D="";break;case"class":D=D.replace("Apple-style-span","");break;case"size":P+="font-size:"+this.sizes[D]+";";D="";break
                            }if(D){
                        O+=" "+M+'="'+D+'"'
                        }
                    }if(P){
                    O+=' style="'+P+'"'
                    }for(var F=0;F<B.length;F++){
                    G+="<"+B[F]+">"
                    }if(O==""&&Q=="span"){
                    A=false
                    }if(A){
                    G+="<"+Q;if(Q!="br"){
                        G+=O
                        }
                    }
                }if(!N&&!bkLib.inArray(this.noShort,M)){
                if(A){
                    G+=" />"
                    }
                }else{
                if(A){
                    G+=">"
                    }for(var F=0;F<C.childNodes.length;F++){
                    var E=this.toXHTML(C.childNodes[F],true,true);if(E){
                        G+=E
                        }
                    }
                }if(A&&N){
                G+="</"+Q+">"
                }for(var F=0;F<B.length;F++){
                G+="</"+B[F]+">"
                }break;case 3:G+=C.nodeValue;break
                }return G
        }
    });nicEditors.registerPlugin(nicXHTML);

var nicBBCode=bkClass.extend({
    construct:function(A){
        this.ne=A;if(this.ne.options.bbCode){
            A.addEvent("get",this.bbGet.closure(this));A.addEvent("set",this.bbSet.closure(this));var B=this.ne.loadedPlugins;for(itm in B){
                if(B[itm].toXHTML){
                    this.xhtml=B[itm]
                    }
                }
            }
        },
    bbGet:function(A){
        var B=this.xhtml.toXHTML(A.getElm());A.content=this.toBBCode(B)
        },
    bbSet:function(A){
        A.content=this.fromBBCode(A.content)
        },
    toBBCode:function(B){
        function A(D,C){
            B=B.replace(D,C)
            }A(/\n/gi,"");A(/<strong>(.*?)<\/strong>/gi,"[b]$1[/b]");A(/<em>(.*?)<\/em>/gi,"[i]$1[/i]");A(/<span.*?style="text-decoration:underline;">(.*?)<\/span>/gi,"[u]$1[/u]");A(/<ul>(.*?)<\/ul>/gi,"[list]$1[/list]");A(/<li>(.*?)<\/li>/gi,"[*]$1[]");A(/<ol>(.*?)<\/ol>/gi,"[list=1]$1[/list]");A(/<img.*?src="(.*?)".*?>/gi,"[img]$1[/img]");A(/<a.*?href="(.*?)".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");A(/<br.*?>/gi,"\n");A(/<.*?>.*?<\/.*?>/gi,"");return B
        },
    fromBBCode:function(A){
        function B(D,C){
            A=A.replace(D,C)
            }B(/\[b\](.*?)\[\/b\]/gi,"<strong>$1</strong>");B(/\[i\](.*?)\[\/i\]/gi,"<em>$1</em>");B(/\[u\](.*?)\[\/u\]/gi,'<span style="text-decoration:underline;">$1</span>');B(/\[list\](.*?)\[\/list\]/gi,"<ul>$1</ul>");B(/\[list=1\](.*?)\[\/list\]/gi,"<ol>$1</ol>");B(/\[\*\](.*?)\[\/\*\]/gi,"<li>$1</li>");B(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');B(/\[url=(.*?)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>');B(/\n/gi,"<br />");return A
        }
    });nicEditors.registerPlugin(nicBBCode);

/* START SMILES CONFIG */
var smileOptions = {
    buttons : {
        'smile' : {
            name : 'Add Smile',
            type : 'nicEditorSmileButton',
            noClose : true,
            tags : ['Sm']
            }
    }
};
/* END CONFIG */

var nicEditorSmileButton = nicEditorAdvancedButton.extend({
    addPane : function() {
        var smileList = [1,2,3,4,5,6,7,8,9];
        var smileItems = new bkElement('DIV').setStyle({
            width: '270px'
        });
        var g = 0;
        while(g <= smileList.length) {
            g++;
            var smileSrc = '/images/smile/'+smileList[g]+'.gif';
            var smileImg = '<img src='+smileSrc+' />';
            var smileSquare = new bkElement('DIV').setStyle({
                'cursor' : 'pointer',
                'height' : '17px',
                'width' : '17px',
                'float' : 'left'
            }).appendTo(smileItems);
            var smileBorder = new bkElement('DIV').appendTo(smileSquare);
            var smileInner = new bkElement('DIV').setStyle({
                overflow : 'hidden',
                width : '17px',
                height : '17px'
            }).addEvent('click',this.smileSelect.closure(this,smileSrc)).addEvent('mouseover',this.on.closure(this,smileBorder)).addEvent('mouseout',this.off.closure(this,smileBorder)).appendTo(smileBorder);
            smileInner.innerHTML = smileImg;
            if(!window.opera) {
                smileSquare.onmousedown = smileInner.onmousedown = bkLib.cancelEvent;
            }
        }
        this.pane.append(smileItems.noSelect());
    },

    smileSelect : function(smileSrc) {
        this.ne.nicCommand('insertImage',smileSrc);
        this.removePane();
    },

    on : function(smileBorder) {
        smileBorder.setStyle({
            border : '1px solid #000'
        });
    },

    off : function(smileBorder) {
        smileBorder.setStyle({
            border : 'none'
        });
    }
});
nicEditors.registerPlugin(nicPlugin,smileOptions);

