jQuery.fn.rte=function(a){$(this).each(function(){new lwRTE(this,a)})};var lwRTE=function(a,b){this.css_url=b.css;this.css_class=b.frame_class;this.base_url=b.base_url;this.width=b.width||"100%";this.height=b.height||350;this.iframe=null;this.iframe_doc=null;this.textarea=null;this.event=null;this.range=null;this.toolbars={rte:"",html:""};this.controls={rte:{disable:{hint:"Source editor"}},html:{enable:{hint:"Visual editor"}}};$.extend(this.controls.rte,b.controls_rte);$.extend(this.controls.html,b.controls_html);if(document.designMode||document.contentEditable){$(a).wrap($("<div></div>").addClass("rte-zone").width(this.width));this.textarea=a;this.enable_design_mode()}};lwRTE.prototype.editor_cmd=function(c,a){this.iframe.contentWindow.focus();try{this.iframe_doc.execCommand(c,false,a)}catch(b){console.log(b)}this.iframe.contentWindow.focus()};lwRTE.prototype.get_toolbar=function(){var a=(this.iframe)?$(this.iframe):$(this.textarea);return(a.prev().hasClass("rte-toolbar"))?a.prev():null};lwRTE.prototype.activate_toolbar=function(c,a){var b=this.get_toolbar();if(b){b.remove()}$(c).before($(a).clone(true))};lwRTE.prototype.enable_design_mode=function(){var a=this;a.iframe=document.createElement("iframe");a.iframe.frameBorder=0;a.iframe.frameMargin=0;a.iframe.framePadding=0;a.iframe.width="100%";a.iframe.height=a.height||"100%";if($(a.textarea).attr("class")){a.iframe.className=$(a.textarea).attr("class")}if($(a.textarea).attr("id")){a.iframe.id=$(a.textarea).attr("id")}if($(a.textarea).attr("name")){a.iframe.title=$(a.textarea).attr("name")}var d=$(a.textarea).val();$(a.textarea).hide().after(a.iframe).remove();a.textarea=null;var b=(a.css_url)?"<link type='text/css' rel='stylesheet' href='"+a.css_url+"' />":"";var f=(a.base_url)?"<base href='"+a.base_url+"' />":"";var c=(a.css_class)?"class='"+a.css_class+"'":"";if($.trim(d)==""){d="<br>"}var h="<html><head>"+f+b+"</head><body "+c+" style='padding:5px'>"+d+"</body></html>";a.iframe_doc=a.iframe.contentWindow.document;try{a.iframe_doc.designMode="on"}catch(g){$(a.iframe_doc).focus(function(){a.iframe_doc.designMode()})}a.iframe_doc.open();a.iframe_doc.write(h);a.iframe_doc.close();if(!a.toolbars.rte){a.toolbars.rte=a.create_toolbar(a.controls.rte)}a.activate_toolbar(a.iframe,a.toolbars.rte);$(a.iframe).parents("form").submit(function(){a.disable_design_mode(true)});$(a.iframe_doc).mouseup(function(e){if(a.iframe_doc.selection){a.range=a.iframe_doc.selection.createRange()}a.set_selected_controls((e.target)?e.target:e.srcElement,a.controls.rte)});$(a.iframe_doc).keyup(function(e){a.set_selected_controls(a.get_selected_element(),a.controls.rte)});if(!$.browser.msie){a.editor_cmd("styleWithCSS",false)}};lwRTE.prototype.disable_design_mode=function(b){var a=this;a.textarea=(b)?$('<input type="hidden" />').get(0):$("<textarea></textarea>").width("100%").height(a.height).get(0);if(a.iframe.className){a.textarea.className=a.iframe.className}if(a.iframe.id){a.textarea.id=a.iframe.id}if(a.iframe.title){a.textarea.name=a.iframe.title}$(a.textarea).val($("body",a.iframe_doc).html());$(a.iframe).before(a.textarea);if(!a.toolbars.html){a.toolbars.html=a.create_toolbar(a.controls.html)}if(b!=true){$(a.iframe).remove();a.iframe=null;a.activate_toolbar(a.textarea,a.toolbars.html)}};lwRTE.prototype.toolbar_click=function(d,c){var b=c.exec;$(".rte-panel",this.get_toolbar()).remove();if(b){b.apply(this)}else{if(this.iframe&&c.command){var a=c.args;if(d.tagName.toUpperCase()=="SELECT"){a=d.options[d.selectedIndex].value;if(a.length<=0){return}}this.editor_cmd(c.command,a)}}};lwRTE.prototype.create_toolbar=function(d){var c=this;var b=$("<div></div>").addClass("rte-toolbar").width("100%").append($("<ul></ul>")).append($("<div></div>").addClass("clear"));var f,a;for(var e in d){if(d[e].separator){a=$("<li></li>").addClass("separator")}else{if(d[e].select){f=$(d[e].select).change(function(g){c.event=g;c.toolbar_click(this,d[this.className]);return false})}else{f=$("<a href='#'></a>").attr("title",(d[e].hint)?d[e].hint:e).attr("rel",e).click(function(g){c.event=g;c.toolbar_click(this,d[this.rel]);return false})}a=$("<li></li>").append(f.addClass(e))}$("ul",b).append(a)}$(".enable",b).click(function(){c.enable_design_mode();return false});$(".disable",b).click(function(){c.disable_design_mode();return false});return b.get(0)};lwRTE.prototype.create_panel=function(h,c){var i=this;var e=i.get_toolbar();if(!e){return false}$(".rte-panel",e).remove();var f,b;var d=i.event.pageX;var g=i.event.pageY;var a=$("<div></div>").hide().addClass("rte-panel").css({left:d,top:g});$("<div></div>").addClass("rte-panel-title").html(h).append($("<a class='close' href='#'>X</a>").click(function(){a.remove();return false})).mousedown(function(){f=true;return false}).mouseup(function(){f=false;return false}).mousemove(function(j){if(f&&b){d-=b.pageX-j.pageX;g-=b.pageY-j.pageY;a.css({left:d,top:g})}b=j;return false}).appendTo(a);if(c){a.width(c)}e.append(a);return a};lwRTE.prototype.get_content=function(){return(this.iframe)?$("body",this.iframe_doc).html():$(this.textarea).val()};lwRTE.prototype.set_content=function(a){(this.iframe)?$("body",this.iframe_doc).html(a):$(this.textarea).val(a)};lwRTE.prototype.set_selected_controls=function(b,j){var f=this.get_toolbar();if(!f){return false}var h,a,d,e,k,c,g;for(h in j){e=j[h];d=$("."+h,f);d.removeClass("active");if(!e.tags){continue}a=b;do{if(a.nodeType!=1){continue}k=a.nodeName.toLowerCase();if($.inArray(k,e.tags)<0){continue}if(e.select){d=d.get(0);if(d.tagName.toUpperCase()=="SELECT"){d.selectedIndex=0;for(c=0;c<d.options.length;c++){g=d.options[c].value;if(g&&((e.arg_cmp&&e.arg_cmp(a,g))||k==g)){d.selectedIndex=c;break}}}}else{d.addClass("active")}}while(a=a.parentNode)}return true};lwRTE.prototype.get_selected_element=function(){var c,b,a;var d=this.iframe.contentWindow;if(d.getSelection){try{b=d.getSelection();a=b.getRangeAt(0);c=a.commonAncestorContainer}catch(f){return false}}else{try{b=d.document.selection;a=b.createRange();c=a.parentElement()}catch(f){return false}}return c};lwRTE.prototype.get_selection_range=function(){var a=null;var c=this.iframe.contentWindow;this.iframe.focus();if(c.getSelection){a=c.getSelection().getRangeAt(0);if($.browser.opera){var b=a.startContainer;if(b.nodeType===Node.TEXT_NODE){a.setStartBefore(b.parentNode)}}}else{this.range.select();a=this.iframe_doc.selection.createRange()}return a};lwRTE.prototype.get_selected_text=function(){var a=this.iframe.contentWindow;if(a.getSelection){return a.getSelection().toString()}this.range.select();return a.document.selection.createRange().text};lwRTE.prototype.get_selected_html=function(){var b=null;var d=this.iframe.contentWindow;var a=this.get_selection_range();if(a){if(d.getSelection){var c=document.createElement("div");c.appendChild(a.cloneContents());b=c.innerHTML}else{b=a.htmlText}}return b};lwRTE.prototype.selection_replace_with=function(b){var a=this.get_selection_range();var c=this.iframe.contentWindow;if(!a){return}this.editor_cmd("removeFormat");if(c.getSelection){a.deleteContents();a.insertNode(a.createContextualFragment(b));this.editor_cmd("delete")}else{this.editor_cmd("delete");a.pasteHTML(b)}};