(function(){var e=/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|SCRIPT|NOSCRIPT|STYLE)$/i,g=/^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i,l=/<(script|noscript|style)[\u0000-\uFFFF]*?<\/(script|noscript|style)>/g;this.MooEditable=new Class({Implements:[Events,Options],options:{toolbar:true,cleanup:true,paragraphise:true,xhtml:true,semantics:true,actions:"bold italic underline strikethrough | insertunorderedlist insertorderedlist indent outdent | undo redo | createlink unlink | urlimage | toggleview",
handleSubmit:true,handleLabel:true,disabled:false,baseCSS:"html{ height: 100%; cursor: text; } body{ font-family: sans-serif; }",extraCSS:"",externalCSS:"",html:'<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">{BASEHREF}<style>{BASECSS} {EXTRACSS}</style>{EXTERNALCSS}</head><body></body></html>',rootElement:"p",baseURL:"",dimensions:null},initialize:function(a,b){this.setOptions(b);this.textarea=document.id(a);this.textarea.store("MooEditable",this);this.actions=
this.options.actions.clean().split(" ");this.keys={};this.dialogs={};this.protectedElements=[];this.actions.each(function(c){var d=MooEditable.Actions[c];if(d){if(d.options){var h=d.options.shortcut;if(h)this.keys[h]=c}d.dialogs&&$each(d.dialogs,function(f,i){f=f.attempt(this);f.name=c+":"+i;if($type(this.dialogs[c])!="object")this.dialogs[c]={};this.dialogs[c][i]=f},this);d.events&&$each(d.events,function(f,i){this.addEvent(i,f)},this)}}.bind(this));this.render()},toElement:function(){return this.textarea},
render:function(){var a=this,b=this.options.dimensions||this.textarea.getSize();this.container=new Element("div",{id:this.textarea.id?this.textarea.id+"-mooeditable-container":null,"class":"mooeditable-container",styles:{width:b.x}});this.textarea.addClass("mooeditable-textarea").setStyle("height",b.y);this.iframe=new IFrame({"class":"mooeditable-iframe",frameBorder:0,src:'javascript:""',styles:{height:b.y}});this.toolbar=new MooEditable.UI.Toolbar({onItemAction:function(){var c=$splat(arguments);
a.action(c[0].name,c)}});this.attach.delay(1,this);this.options.handleLabel&&this.textarea.id&&$$('label[for="'+this.textarea.id+'"]').addEvent("click",function(c){if(a.mode=="iframe"){c.preventDefault();a.focus()}});if(this.options.handleSubmit){this.form=this.textarea.getParent("form");if(!this.form)return;this.form.addEvent("submit",function(){a.mode=="iframe"&&a.saveContent()})}this.fireEvent("render",this)},attach:function(){var a=this;this.mode="iframe";this.editorDisabled=false;this.container.wraps(this.textarea);
this.textarea.setStyle("display","none");this.iframe.setStyle("display","").inject(this.textarea,"before");$each(this.dialogs,function(d,h){$each(d,function(f){document.id(f).inject(a.iframe,"before");var i;f.addEvents({open:function(){i=a.selection.getRange();a.editorDisabled=true;a.toolbar.disable(h);a.fireEvent("dialogOpen",this)},close:function(){a.toolbar.enable();a.editorDisabled=false;a.focus();i&&a.selection.setRange(i);a.fireEvent("dialogClose",this)}})})});this.win=this.iframe.contentWindow;
this.doc=this.win.document;var b=this.options.html.substitute({BASECSS:this.options.baseCSS,EXTRACSS:this.options.extraCSS,EXTERNALCSS:this.options.externalCSS?'<link rel="stylesheet" href="'+this.options.externalCSS+'">':"",BASEHREF:this.options.baseURL?'<base href="'+this.options.baseURL+'" />':""});this.doc.open();this.doc.write(b);this.doc.close();Browser.Engine.trident?this.doc.body.contentEditable=true:this.doc.designMode="On";this.win.$family||new Window(this.win);this.doc.$family||new Document(this.doc);
document.id(this.doc.body);this.setContent(this.textarea.get("value"));this.doc.addEvents({mouseup:this.editorMouseUp.bind(this),mousedown:this.editorMouseDown.bind(this),mouseover:this.editorMouseOver.bind(this),mouseout:this.editorMouseOut.bind(this),mouseenter:this.editorMouseEnter.bind(this),mouseleave:this.editorMouseLeave.bind(this),contextmenu:this.editorContextMenu.bind(this),click:this.editorClick.bind(this),dbllick:this.editorDoubleClick.bind(this),keypress:this.editorKeyPress.bind(this),
keyup:this.editorKeyUp.bind(this),keydown:this.editorKeyDown.bind(this),focus:this.editorFocus.bind(this),blur:this.editorBlur.bind(this)});this.win.addEvents({focus:this.editorFocus.bind(this),blur:this.editorBlur.bind(this)});["cut","copy","paste"].each(function(d){a.doc.body.addListener(d,a["editor"+d.capitalize()].bind(a))});this.textarea.addEvent("keypress",this.textarea.retrieve("mooeditable:textareaKeyListener",this.keyListener.bind(this)));Browser.Engine.gecko&&Browser.Engine.version==18&&
this.doc.addEvent("focus",function(){a.win.fireEvent("focus").focus()});if(!/trident|presto/i.test(Browser.Engine.name)){var c=function(){a.execute("styleWithCSS",false,false);a.doc.removeEvent("focus",c)};this.win.addEvent("focus",c)}if(this.options.toolbar){document.id(this.toolbar).inject(this.container,"top");this.toolbar.render(this.actions)}this.options.disabled&&this.disable();this.selection=new MooEditable.Selection(this.win);this.oldContent=this.getContent();this.fireEvent("attach",this);
return this},detach:function(){this.saveContent();this.textarea.setStyle("display","").removeClass("mooeditable-textarea").inject(this.container,"before");this.textarea.removeEvent("keypress",this.textarea.retrieve("mooeditable:textareaKeyListener"));this.container.dispose();this.fireEvent("detach",this);return this},enable:function(){this.editorDisabled=false;this.toolbar.enable();return this},disable:function(){this.editorDisabled=true;this.toolbar.disable();return this},editorFocus:function(a){this.oldContent=
"";this.fireEvent("editorFocus",[a,this])},editorBlur:function(a){this.oldContent=this.saveContent().getContent();this.fireEvent("editorBlur",[a,this])},editorMouseUp:function(a){if(this.editorDisabled)a.stop();else{this.options.toolbar&&this.checkStates();this.fireEvent("editorMouseUp",[a,this])}},editorMouseDown:function(a){this.editorDisabled?a.stop():this.fireEvent("editorMouseDown",[a,this])},editorMouseOver:function(a){this.editorDisabled?a.stop():this.fireEvent("editorMouseOver",[a,this])},
editorMouseOut:function(a){this.editorDisabled?a.stop():this.fireEvent("editorMouseOut",[a,this])},editorMouseEnter:function(a){if(this.editorDisabled)a.stop();else{if(this.oldContent&&this.getContent()!=this.oldContent){this.focus();this.fireEvent("editorPaste",[a,this])}this.fireEvent("editorMouseEnter",[a,this])}},editorMouseLeave:function(a){this.editorDisabled?a.stop():this.fireEvent("editorMouseLeave",[a,this])},editorContextMenu:function(a){this.editorDisabled?a.stop():this.fireEvent("editorContextMenu",
[a,this])},editorClick:function(a){if(Browser.Engine.webkit){var b=a.target;if(b.get("tag")=="img"){this.options.baseURL&&b.getProperty("src").indexOf("http://")==-1&&b.setProperty("src",this.options.baseURL+b.getProperty("src"));this.selection.selectNode(b);this.checkStates()}}this.fireEvent("editorClick",[a,this])},editorDoubleClick:function(a){this.fireEvent("editorDoubleClick",[a,this])},editorKeyPress:function(a){if(this.editorDisabled)a.stop();else{this.keyListener(a);this.fireEvent("editorKeyPress",
[a,this])}},editorKeyUp:function(a){if(this.editorDisabled)a.stop();else{var b=a.code;if(this.options.toolbar&&(/^enter|left|up|right|down|delete|backspace$/i.test(a.key)||b>=33&&b<=36||b==45||a.meta||a.control))if(Browser.Engines.trident4){$clear(this.checkStatesDelay);this.checkStatesDelay=this.checkStates.delay(500,this)}else this.checkStates();this.fireEvent("editorKeyUp",[a,this])}},editorKeyDown:function(a){if(this.editorDisabled)a.stop();else{if(a.key=="enter")if(this.options.paragraphise)if(a.shift&&
Browser.Engine.webkit){var b=this.selection,c=b.getRange(),d=this.doc.createElement("br");c.insertNode(d);c.setStartAfter(d);c.setEndAfter(d);b.setRange(c);if(b.getSelection().focusNode==d.previousSibling){c=this.doc.createTextNode("\u00a0");var h=d.parentNode;(d=d.nextSibling)?h.insertBefore(c,d):h.appendChild(c);b.selectNode(c);b.collapse(1)}this.win.scrollTo(0,Element.getOffsets(b.getRange().startContainer).y);a.preventDefault()}else{if(Browser.Engine.gecko||Browser.Engine.webkit){b=this.selection.getNode();
b.getParents().include(b).some(function(f){return f.nodeName.test(e)})||this.execute("insertparagraph")}}else if(Browser.Engine.trident){c=this.selection.getRange();b=this.selection.getNode();if(c&&b.get("tag")!="li"){this.selection.insertContent("<br>");this.selection.collapse(false)}a.preventDefault()}if(Browser.Engine.presto)if((b=a.control||a.meta)&&a.key=="x")this.fireEvent("editorCut",[a,this]);else if(b&&a.key=="c")this.fireEvent("editorCopy",[a,this]);else if(b&&a.key=="v"||a.shift&&a.code==
45)this.fireEvent("editorPaste",[a,this]);this.fireEvent("editorKeyDown",[a,this])}},editorCut:function(a){this.editorDisabled?a.stop():this.fireEvent("editorCut",[a,this])},editorCopy:function(a){this.editorDisabled?a.stop():this.fireEvent("editorCopy",[a,this])},editorPaste:function(a){this.editorDisabled?a.stop():this.fireEvent("editorPaste",[a,this])},keyListener:function(a){if((Browser.Platform.mac?a.meta:a.control)&&this.keys[a.key]){a.preventDefault();this.toolbar.getItem(this.keys[a.key]).action(a)}},
focus:function(){(this.mode=="iframe"?this.win:this.textarea).focus();this.fireEvent("focus",this);return this},action:function(a,b){var c=MooEditable.Actions[a];if(c.command&&$type(c.command)=="function")c.command.run(b,this);else{this.focus();this.execute(a,false,b);this.mode=="iframe"&&this.checkStates()}},execute:function(a,b,c){if(!this.busy){this.busy=true;this.doc.execCommand(a,b,c);this.saveContent();return this.busy=false}},toggleView:function(){this.fireEvent("beforeToggleView",this);if(this.mode==
"textarea"){this.mode="iframe";this.iframe.setStyle("display","");this.setContent(this.textarea.value);this.textarea.setStyle("display","none")}else{this.saveContent();this.mode="textarea";this.textarea.setStyle("display","");this.iframe.setStyle("display","none")}this.fireEvent("toggleView",this);this.focus.delay(10,this);return this},getContent:function(){var a=this.protectedElements;return this.cleanup(this.ensureRootElement(this.doc.body.get("html").replace(/<!-- mooeditable:protect:([0-9]+) --\>/g,
function(b,c){return a[parseInt(c)]})))},setContent:function(a){var b=this.protectedElements;a=a.replace(l,function(c){b.push(c);return"<!-- mooeditable:protect:"+(b.length-1)+" --\>"});this.doc.body.set("html",this.ensureRootElement(a));return this},saveContent:function(){this.mode=="iframe"&&this.textarea.set("value",this.getContent());return this},ensureRootElement:function(a){if(this.options.rootElement){a=new Element("div",{html:a.trim()});for(var b=-1,c=false,d="",h=a.childNodes.length,f=0;f<
h;f++){var i=a.childNodes[f],j=i.nodeName;if(!j.test(e)&&j!=="#comment")if(j==="#text"){if(i.nodeValue.trim()){if(b<0)b=f;d+=i.nodeValue}}else{if(b<0)b=f;d+=(new Element("div")).adopt($(i).clone()).get("html")}else c=true;if(f==h-1)c=true;if(b>=0&&c){c=new Element(this.options.rootElement,{html:d});a.replaceChild(c,a.childNodes[b]);for(b=b+1;b<f;b++){a.removeChild(a.childNodes[b]);h--;f--;b--}b=-1;c=false;d=""}}a=a.get("html").replace(/\n\n/g,"")}return a},checkStates:function(){var a=this.selection.getNode();
a&&$type(a)=="element"&&this.actions.each(function(b){var c=this.toolbar.getItem(b);if(c){c.deactivate();var d=MooEditable.Actions[b].states;if(d)if($type(d)=="function")d.attempt([document.id(a),c],this);else{try{if(this.doc.queryCommandState(b)){c.activate();return}}catch(h){}if(d.tags){b=a;do{var f=b.tagName.toLowerCase();if(d.tags.contains(f)){c.activate(f);break}}while((b=Element.getParent(b))!=null)}if(d.css){b=a;do{f=false;for(var i in d.css){var j=d.css[i];if(Element.getStyle(b,i).contains(j)){c.activate(j);
f=true}}if(f||b.tagName.test(e))break}while((b=Element.getParent(b))!=null)}}}}.bind(this))},cleanup:function(a){if(!this.options.cleanup)return a.trim();do{var b=a;if(this.options.baseURL)a=a.replace('="'+this.options.baseURL,'="');a=a.replace(/<br class\="webkit-block-placeholder">/gi,"<br />");a=a.replace(/<span class="Apple-style-span">(.*)<\/span>/gi,"$1");a=a.replace(/ class="Apple-style-span"/gi,"");a=a.replace(/<span style="">/gi,"");a=a.replace(/<p>\s*<br ?\/?>\s*<\/p>/gi,"<p>\u00a0</p>");
a=a.replace(/<p>(&nbsp;|\s)*<\/p>/gi,"<p>\u00a0</p>");this.options.semantics||(a=a.replace(/\s*<br ?\/?>\s*<\/p>/gi,"</p>"));if(this.options.xhtml)a=a.replace(/<br>/gi,"<br />");if(this.options.semantics){if(Browser.Engine.trident)a=a.replace(/<li>\s*<div>(.+?)<\/div><\/li>/g,"<li>$1</li>");if(Browser.Engine.webkit){a=a.replace(/^([\w\s]+.*?)<div>/i,"<p>$1</p><div>");a=a.replace(/<div>(.+?)<\/div>/ig,"<p>$1</p>")}if(["gecko","presto","webkit"].contains(Browser.Engine.name)){a=a.replace(/<p>[\s\n]*(<(?:ul|ol)>.*?<\/(?:ul|ol)>)(.*?)<\/p>/ig,
"$1<p>$2</p>");a=a.replace(/<\/(ol|ul)>\s*(?!<(?:p|ol|ul|img).*?>)((?:<[^>]*>)?\w.*)$/g,"</$1><p>$2</p>")}a=a.replace(/<br[^>]*><\/p>/g,"</p>");a=a.replace(/<p>\s*(<img[^>]+>)\s*<\/p>/ig,"$1\n");a=a.replace(/<p([^>]*)>(.*?)<\/p>(?!\n)/g,"<p$1>$2</p>\n");a=a.replace(/<\/(ul|ol|p)>(?!\n)/g,"</$1>\n");a=a.replace(/><li>/g,">\n\t<li>");a=a.replace(/([^\n])<\/(ol|ul)>/g,"$1\n</$2>");a=a.replace(/([^\n])<img/ig,"$1\n<img");a=a.replace(/^\s*$/g,"")}a=a.replace(/<br ?\/?>$/gi,"");a=a.replace(/^<br ?\/?>/gi,
"");if(this.options.paragraphise)a=a.replace(/(h[1-6]|p|div|address|pre|li|ol|ul|blockquote|center|dl|dt|dd)><br ?\/?>/gi,"$1>");a=a.replace(/<br ?\/?>\s*<\/(h1|h2|h3|h4|h5|h6|li|p)/gi,"</$1");a=a.replace(/<span style="font-weight: bold;">(.*)<\/span>/gi,"<strong>$1</strong>");a=a.replace(/<span style="font-style: italic;">(.*)<\/span>/gi,"<em>$1</em>");a=a.replace(/<b\b[^>]*>(.*?)<\/b[^>]*>/gi,"<strong>$1</strong>");a=a.replace(/<i\b[^>]*>(.*?)<\/i[^>]*>/gi,"<em>$1</em>");a=a.replace(/<u\b[^>]*>(.*?)<\/u[^>]*>/gi,
'<span style="text-decoration: underline;">$1</span>');a=a.replace(/<strong><span style="font-weight: normal;">(.*)<\/span><\/strong>/gi,"$1");a=a.replace(/<em><span style="font-weight: normal;">(.*)<\/span><\/em>/gi,"$1");a=a.replace(/<span style="text-decoration: underline;"><span style="font-weight: normal;">(.*)<\/span><\/span>/gi,"$1");a=a.replace(/<strong style="font-weight: normal;">(.*)<\/strong>/gi,"$1");a=a.replace(/<em style="font-weight: normal;">(.*)<\/em>/gi,"$1");a=a.replace(/<[^> ]*/g,
function(c){return c.toLowerCase()});a=a.replace(/<[^>]*>/g,function(c){return c=c.replace(/ [^=]+=/g,function(d){return d.toLowerCase()})});a=a.replace(/<[^!][^>]*>/g,function(c){return c=c.replace(/( [^=]+=)([^"][^ >]*)/g,'$1"$2"')});if(this.options.xhtml)a=a.replace(/<img([^>]+)(\s*[^\/])>(<\/img>)*/gi,"<img$1$2 />");a=a.replace(/<p>(?:\s*)<p>/g,"<p>");a=a.replace(/<\/p>\s*<\/p>/g,"</p>");a=a.replace(/<pre[^>]*>.*?<\/pre>/gi,function(c){return c.replace(/<br ?\/?>/gi,"\n")});a=a.trim()}while(a!=
b);return a}});MooEditable.Selection=new Class({initialize:function(a){this.win=a},getSelection:function(){this.win.focus();return this.win.getSelection?this.win.getSelection():this.win.document.selection},getRange:function(){var a=this.getSelection();if(!a)return null;try{return a.rangeCount>0?a.getRangeAt(0):a.createRange?a.createRange():null}catch(b){return this.doc.body.createTextRange()}},setRange:function(a){if(a.select)$try(function(){a.select()});else{var b=this.getSelection();if(b.addRange){b.removeAllRanges();
b.addRange(a)}}},selectNode:function(a,b){var c=this.getRange(),d=this.getSelection();if(c.moveToElementText)$try(function(){c.moveToElementText(a);c.select()});else if(d.addRange){b?c.selectNodeContents(a):c.selectNode(a);d.removeAllRanges();d.addRange(c)}else d.setBaseAndExtent(a,0,a,1);return a},isCollapsed:function(){var a=this.getRange();if(a.item)return false;return a.boundingWidth==0||this.getSelection().isCollapsed},collapse:function(a){var b=this.getRange(),c=this.getSelection();if(b.select){b.collapse(a);
b.select()}else a?c.collapseToStart():c.collapseToEnd()},getContent:function(){var a=this.getRange(),b=new Element("body");if(this.isCollapsed())return"";if(a.cloneContents)b.appendChild(a.cloneContents());else $defined(a.item)||$defined(a.htmlText)?b.set("html",a.item?a.item(0).outerHTML:a.htmlText):b.set("html",a.toString());return b.get("html")},getText:function(){var a=this.getRange(),b=this.getSelection();return this.isCollapsed()?"":a.text||(b.toString?b.toString():"")},getNode:function(){var a=
this.getRange();if(!Browser.Engine.trident){var b=null;if(a){b=a.commonAncestorContainer;if(!a.collapsed)if(a.startContainer==a.endContainer)if(a.startOffset-a.endOffset<2)if(a.startContainer.hasChildNodes())b=a.startContainer.childNodes[a.startOffset];for(;$type(b)!="element";)b=b.parentNode}return document.id(b)}return document.id(a.item?a.item(0):a.parentElement())},insertContent:function(a){if(Browser.Engine.trident){var b=this.getRange();b.pasteHTML(a);b.collapse(false);b.select()}else this.win.document.execCommand("insertHTML",
false,a)}});var k={};MooEditable.lang={set:function(a){MooTools.lang&&MooTools.lang.set("en-US","MooEditable",a);$extend(k,a)},get:function(a){if(MooTools.lang)return MooTools.lang.get("MooEditable",a);return a?k[a]:""}};MooEditable.lang.set({ok:"OK",cancel:"Cancel",bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",unorderedList:"Unordered List",orderedList:"Ordered List",indent:"Indent",outdent:"Outdent",undo:"Undo",redo:"Redo",removeHyperlink:"Remove Hyperlink",addHyperlink:"Add Hyperlink",
selectTextHyperlink:"Please select the text you wish to hyperlink.",enterURL:"Enter URL",enterImageURL:"Enter image URL",addImage:"Add Image",toggleView:"Toggle View"});MooEditable.UI={};MooEditable.UI.Toolbar=new Class({Implements:[Events,Options],options:{"class":""},initialize:function(a){this.setOptions(a);this.el=new Element("div",{"class":"mooeditable-ui-toolbar "+this.options["class"]});this.items={};this.content=null},toElement:function(){return this.el},render:function(a){if(this.content)this.el.adopt(this.content);
else this.content=a.map(function(b){return b=="|"?this.addSeparator():this.addItem(b)}.bind(this));return this},addItem:function(a){var b=MooEditable.Actions[a];if(b){var c=b.options||{};b=new (MooEditable.UI[(b.type||"button").camelCase().capitalize()])($extend(c,{name:a,"class":a+"-item toolbar-item",title:b.title,onAction:this.itemAction.bind(this)}));this.items[a]=b;document.id(b).inject(this.el);return b}},getItem:function(a){return this.items[a]},addSeparator:function(){return(new Element("span",
{"class":"toolbar-separator"})).inject(this.el)},itemAction:function(){this.fireEvent("itemAction",arguments)},disable:function(a){$each(this.items,function(b){b.name==a?b.activate():b.deactivate().disable()});return this},enable:function(){$each(this.items,function(a){a.enable()});return this},show:function(){this.el.setStyle("display","");return this},hide:function(){this.el.setStyle("display","none");return this}});MooEditable.UI.Button=new Class({Implements:[Events,Options],options:{title:"",
name:"",text:"Button","class":"",shortcut:"",mode:"icon"},initialize:function(a){this.setOptions(a);this.name=this.options.name;this.render()},toElement:function(){return this.el},render:function(){var a=Browser.Platform.mac?"Cmd":"Ctrl";a=this.options.shortcut?" ( "+a+"+"+this.options.shortcut.toUpperCase()+" )":"";var b=this.options.title||name;this.el=new Element("button",{"class":"mooeditable-ui-button "+this.options["class"],title:b+a,html:'<span class="button-icon"></span><span class="button-text">'+
b+"</span>",events:{click:this.click.bind(this),mousedown:function(c){c.preventDefault()}}});this.options.mode!="icon"&&this.el.addClass("mooeditable-ui-button-"+this.options.mode);this.disabled=this.active=false;Browser.Engine.trident&&this.el.addEvents({mouseenter:function(){this.addClass("hover")},mouseleave:function(){this.removeClass("hover")}});return this},click:function(a){a.preventDefault();this.disabled||this.action(a)},action:function(){this.fireEvent("action",[this].concat($A(arguments)))},
enable:function(){this.active&&this.el.removeClass("onActive");if(this.disabled){this.disabled=false;this.el.removeClass("disabled").set({disabled:false,opacity:1});return this}},disable:function(){if(!this.disabled){this.disabled=true;this.el.addClass("disabled").set({disabled:true,opacity:0.4});return this}},activate:function(){if(!this.disabled){this.active=true;this.el.addClass("onActive");return this}},deactivate:function(){this.active=false;this.el.removeClass("onActive");return this}});MooEditable.UI.Dialog=
new Class({Implements:[Events,Options],options:{"class":"",contentClass:""},initialize:function(a,b){this.setOptions(b);this.html=a;this.el=new Element("div",{"class":"mooeditable-ui-dialog "+this.options["class"],html:'<div class="dialog-content '+this.options.contentClass+'">'+a+"</div>",styles:{display:"none"},events:{click:this.click.bind(this)}})},toElement:function(){return this.el},click:function(){this.fireEvent("click",arguments);return this},open:function(){this.el.setStyle("display","");
this.fireEvent("open",this);return this},close:function(){this.el.setStyle("display","none");this.fireEvent("close",this);return this}});MooEditable.UI.AlertDialog=function(a){if(a){a=a+' <button class="dialog-ok-button">'+MooEditable.lang.get("ok")+"</button>";return new MooEditable.UI.Dialog(a,{"class":"mooeditable-alert-dialog",onOpen:function(){var b=this.el.getElement(".dialog-ok-button");(function(){b.focus()}).delay(10)},onClick:function(b){b.preventDefault();b.target.tagName.toLowerCase()==
"button"&&document.id(b.target).hasClass("dialog-ok-button")&&this.close()}})}};MooEditable.UI.PromptDialog=function(a,b,c){if(a){a='<label class="dialog-label">'+a+' <input type="text" class="text dialog-input" value="'+b+'"></label> <button class="dialog-button dialog-ok-button">'+MooEditable.lang.get("ok")+'</button><button class="dialog-button dialog-cancel-button">'+MooEditable.lang.get("cancel")+"</button>";return new MooEditable.UI.Dialog(a,{"class":"mooeditable-prompt-dialog",onOpen:function(){var d=
this.el.getElement(".dialog-input");(function(){d.focus();d.select()}).delay(10)},onClick:function(d){d.preventDefault();if(d.target.tagName.toLowerCase()=="button"){var h=document.id(d.target);d=this.el.getElement(".dialog-input");if(h.hasClass("dialog-cancel-button")){d.set("value",b);this.close()}else if(h.hasClass("dialog-ok-button")){h=d.get("value");d.set("value",b);this.close();c&&c.attempt(h,this)}}}})}};MooEditable.Actions=new Hash({bold:{title:MooEditable.lang.get("bold"),options:{shortcut:"b"},
states:{tags:["b","strong"],css:{"font-weight":"bold"}},events:{beforeToggleView:function(){if(Browser.Engine.gecko){var a=this.textarea.get("value"),b=a.replace(/<strong([^>]*)>/gi,"<b$1>").replace(/<\/strong>/gi,"</b>");a!=b&&this.textarea.set("value",b)}},attach:function(){if(Browser.Engine.gecko){var a=this.textarea.get("value"),b=a.replace(/<strong([^>]*)>/gi,"<b$1>").replace(/<\/strong>/gi,"</b>");if(a!=b){this.textarea.set("value",b);this.setContent(b)}}}}},italic:{title:MooEditable.lang.get("italic"),
options:{shortcut:"i"},states:{tags:["i","em"],css:{"font-style":"italic"}},events:{beforeToggleView:function(){if(Browser.Engine.gecko){var a=this.textarea.get("value"),b=a.replace(/<embed([^>]*)>/gi,"<tmpembed$1>").replace(/<em([^>]*)>/gi,"<i$1>").replace(/<tmpembed([^>]*)>/gi,"<embed$1>").replace(/<\/em>/gi,"</i>");a!=b&&this.textarea.set("value",b)}},attach:function(){if(Browser.Engine.gecko){var a=this.textarea.get("value"),b=a.replace(/<embed([^>]*)>/gi,"<tmpembed$1>").replace(/<em([^>]*)>/gi,
"<i$1>").replace(/<tmpembed([^>]*)>/gi,"<embed$1>").replace(/<\/em>/gi,"</i>");if(a!=b){this.textarea.set("value",b);this.setContent(b)}}}}},underline:{title:MooEditable.lang.get("underline"),options:{shortcut:"u"},states:{tags:["u"],css:{"text-decoration":"underline"}}},strikethrough:{title:MooEditable.lang.get("strikethrough"),options:{shortcut:"s"},states:{tags:["s","strike"],css:{"text-decoration":"line-through"}}},insertunorderedlist:{title:MooEditable.lang.get("unorderedList"),states:{tags:["ul"]}},
insertorderedlist:{title:MooEditable.lang.get("orderedList"),states:{tags:["ol"]}},indent:{title:MooEditable.lang.get("indent"),states:{tags:["blockquote"]}},outdent:{title:MooEditable.lang.get("outdent")},undo:{title:MooEditable.lang.get("undo"),options:{shortcut:"z"}},redo:{title:MooEditable.lang.get("redo"),options:{shortcut:"y"}},unlink:{title:MooEditable.lang.get("removeHyperlink")},createlink:{title:MooEditable.lang.get("addHyperlink"),options:{shortcut:"l"},states:{tags:["a"]},dialogs:{alert:MooEditable.UI.AlertDialog.pass(MooEditable.lang.get("selectTextHyperlink")),
prompt:function(a){return MooEditable.UI.PromptDialog(MooEditable.lang.get("enterURL"),"http://",function(b){a.execute("createlink",false,b.trim())})}},command:function(){var a=this.selection,b=this.dialogs.createlink;if(a.isCollapsed()){var c=a.getNode();if(c.get("tag")=="a"&&c.get("href")){a.selectNode(c);b=b.prompt;b.el.getElement(".dialog-input").set("value",c.get("href"));b.open()}else b.alert.open()}else{c=a.getText();b=b.prompt;g.test(c)&&b.el.getElement(".dialog-input").set("value",c);b.open()}}},
urlimage:{title:MooEditable.lang.get("addImage"),options:{shortcut:"m"},dialogs:{prompt:function(a){return MooEditable.UI.PromptDialog(MooEditable.lang.get("enterImageURL"),"http://",function(b){a.execute("insertimage",false,b.trim())})}},command:function(){this.dialogs.urlimage.prompt.open()}},toggleview:{title:MooEditable.lang.get("toggleView"),command:function(){this.mode=="textarea"?this.toolbar.enable():this.toolbar.disable("toggleview");this.toggleView()}}});MooEditable.Actions.Settings={};
Element.Properties.mooeditable={set:function(a){return this.eliminate("mooeditable").store("mooeditable:options",a)},get:function(a){if(a||!this.retrieve("mooeditable")){if(a||!this.retrieve("mooeditable:options"))this.set("mooeditable",a);this.store("mooeditable",new MooEditable(this,this.retrieve("mooeditable:options")))}return this.retrieve("mooeditable")}};Element.implement({mooEditable:function(a){return this.get("mooeditable",a)}})})();MooEditable.UI.MenuList=new Class({Implements:[Events,Options],options:{title:"",name:"","class":"",list:[]},initialize:function(e){this.setOptions(e);this.name=this.options.name;this.render()},toElement:function(){return this.el},render:function(){var e="";this.options.list.each(function(g){e+='<option value="{value}" style="{style}">{text}</option>'.substitute(g)});this.el=new Element("select",{"class":this.options["class"],title:this.options.title,html:e,styles:{height:"21px"},events:{change:this.change.bind(this)}});
this.disabled=false;Browser.Engine.trident&&this.el.addEvents({mouseenter:function(){this.addClass("hover")},mouseleave:function(){this.removeClass("hover")}});return this},change:function(e){e.preventDefault();this.disabled||this.action(e.target.value)},action:function(){this.fireEvent("action",[this].concat($A(arguments)))},enable:function(){if(this.disabled){this.disabled=false;this.el.set("disabled",false).removeClass("disabled").set({disabled:false,opacity:1});return this}},disable:function(){if(!this.disabled){this.disabled=
true;this.el.set("disabled",true).addClass("disabled").set({disabled:true,opacity:0.4});return this}},activate:function(e){if(!this.disabled){var g=0;e&&this.options.list.each(function(l,k){if(l.value==e)g=k});this.el.selectedIndex=g;return this}},deactivate:function(){this.el.selectedIndex=0;this.el.removeClass("onActive");return this}});MooEditable.UI.ButtonOverlay=new Class({Extends:MooEditable.UI.Button,options:{overlayHTML:"",overlayClass:"",overlaySize:{x:150,y:"auto"},overlayContentClass:""},initialize:function(e){this.parent(e);this.render();this.el.addClass("mooeditable-ui-buttonOverlay");this.renderOverlay(this.options.overlayHTML)},renderOverlay:function(e){var g=this;this.overlay=(new Element("div",{"class":"mooeditable-ui-button-overlay "+g.name+"-overlay "+g.options.overlayClass,html:'<div class="overlay-content '+g.options.overlayContentClass+
'">'+e+"</div>",tabindex:0,styles:{left:"-999em",position:"absolute",width:g.options.overlaySize.x,height:g.options.overlaySize.y},events:{mousedown:g.clickOverlay.bind(g),focus:g.openOverlay.bind(g),blur:g.closeOverlay.bind(g)}})).inject(document.body).store("MooEditable.UI.ButtonOverlay",this);this.overlayVisible=false;window.addEvent("resize",function(){g.overlayVisible&&g.positionOverlay()})},openOverlay:function(){if(!this.overlayVisible){this.overlayVisible=true;this.activate();this.fireEvent("openOverlay",
this);return this}},closeOverlay:function(){if(this.overlayVisible){this.overlay.setStyle("left","-999em");this.overlayVisible=false;this.deactivate();this.fireEvent("closeOverlay",this);return this}},clickOverlay:function(e){if(!(e.target==this.overlay||e.target.parentNode==this.overlay)){this.overlay.blur();e.preventDefault();this.action(e)}},click:function(e){e.preventDefault();if(!this.disabled)if(this.overlayVisible)this.overlay.blur();else{this.positionOverlay();this.overlay.focus()}},positionOverlay:function(){var e=
this.el.getCoordinates();this.overlay.setStyles({top:e.bottom,left:e.left});return this}});

