(function(j){var m=0,b={_create:function(){j.extend(this.options,j.ui.htmlInput.defaults)},_init:function(){var p=this;this.toolbar=new k("<div class='ui-widget-header'></div>",function(v,u){switch(u.attr("name")){case"link":var t=o(p.selectedElement,["a"]);if(t&&!j.browser.msie){p.setSelected(t)}p.options.editLink(v,p,t,"insertLink");break;case"image":p.options.editImage(v,p,o(p.selectedElement,["img"]),"insertImage");break;default:var s=u.attr("value")?u.attr("value").split("."):"";p._applyCommand(u.attr("name"),s[0]);if(s.length==2){j(p.getSelected()).addClass(s[1])}break}});this.toolbar.addButtons(this.options);if(j.browser.safari){this.toolbar.element.css("height","21px")}this.container=j("<div class='ui-htmlInput ui-widget' style='position:relative;overflow:hidden;'></div>").addClass(this.element.attr("class")).attr("id",this.element.attr("id").concat("_container")).append(this.toolbar.element);this.element.after(this.container);var r=this.toolbar.element.outerHeight();if(!this.options.showToolbar){this.toolbar.element.css("display","none");r=0}var q=this.element.outerHeight()-r-1;m++;this._frameId="htmlInput_".concat(m);this._frame=j("<iframe frameborder='no' border='0' marginWidth='0' marginHeight='0' leftMargin='0' topMargin='0' rightMargin='0' bottomMargin='0' width='100%' height='".concat(q,"px' allowTransparency='true' scroll='yes'>")).attr("id",this._frameId).attr("src",j.browser.msie?"javascript:false;":"javascript:;");if(!this.options.debug){this.element.css("display","none")}this.container.append(j("<div class='ui-widget-content'/>").append(this._frame));this._setContent(this.element.val());this.container.height(this.element.outerHeight()).width(this.options.widthAuto?"auto":this.element.width());this._frame.css({width:"100%",height:q-1+"px"});q=this._frame.height();this._bindEvents();if(j.browser.mozilla||j.browser.safari){this._frame.parents().bind("DOMNodeInserted.htmlInput",function(s){if(j(s.target).find("#".concat(p._frameId)).length==1){setTimeout(function(){p._setContent(p.element.val());p._bindEvents()},0);s.stopPropagation()}})}if(window.getSelection){this.bookmark=function(){p._bookmark=p._window.getSelection()};this.restoreBookmark=function(){if(p._bookmark){var s=p._window.getSelection();s.removeAllRanges();s.addRange(p._bookmark);p._bookmark=null}};this.getSelected=function(){var u=p._window.getSelection();if(u.rangeCount>0){var s=u.getRangeAt(0);var t=s.collapsed||s.startContainer.childNodes.length==0?u.focusNode:s.startContainer.childNodes[s.startOffset];return t.tagName==undefined?t.parentNode:t}};this.getSelectedHTML=function(){var u=p._window.getSelection();if(u.rangeCount>0){var s=u.getRangeAt(0);var t=document.createElement("div");t.appendChild(s.cloneContents());return t.innerHTML}};this.setSelected=function(u){var t=p._window.getSelection();t.removeAllRanges();if(u){var s=p._document.createRange();s.selectNodeContents(u);t.addRange(s)}};this.insertHtml=function(s){p._document.execCommand("insertHTML",null,s);p._update()}}else{this.bookmark=function(){try{p._bookmark=p._document.selection.createRange()}catch(s){}};this.getSelected=function(){p._window.focus();var s=p._document.selection.createRange();return s.item?s.item(0):s.parentElement()};this.getSelectedHTML=function(){p._window.focus();var s=p._document.selection.createRange();return s.htmlText?s.htmlText:s.item?s.item(0).outerHTML:""};this.setSelected=function(t){try{p._window.focus();var s=p._document.selection.createRange();s=p._document.body.createTextRange();s.moveToElementText(t);s.select()}catch(u){}};this.insertHtml=function(t){var s=this._document.selection.createRange();if(s.item){s.item(0).outerHTML=t}else{s.pasteHTML(t)}p._update()};this.restoreBookmark=function(){if(p._bookmark){p._bookmark.select();p._bookmark=null}}}},value:function(p){if(arguments.length){p=this._htmlClean(p);if(p!=this.element.val()){this.element.val(p);this._document.body.innerHTML=p;this._triggerChange()}return this}return this._htmlClean(this._document.body.innerHTML)},clean:function(){html=this._htmlClean(this.value());if(html!=this.element.val()){this.element.val(html);this._document.body.innerHTML=html;this._triggerChange()}},insertLink:function(v,t,q){if(v=="http:/".concat("/")||v==""){v==null}this._window.focus();var s=o(this.selectedElement,["a"]);if(v==null){if(s!=null){this._document.execCommand("unLink",false,null)}return}else{if(s==null){var r=this.selectedHTML,u="",p=r.length-/\s*$/.exec(r).length;if(p>-1){u=r.substring(p);r=r.substring(0,p)}this.insertHtml("<a href='".concat(v,"'>",r,"</a>",u));s=o(this.getSelected(),["a"])}}s=j(s);s.attr("href",v);t!=null&&t.length>0?s.attr("target",t):s.removeAttr("target");q!=null&&q.length>0?s.attr("type",q):s.removeAttr("type");this._update()},insertImage:function(q){this._window.focus();var p=o(this.selectedElement,["img"]);if(p==null&&q!=null){this._document.execCommand("insertimage",false,q);this.selectedElement=this.getSelected();p=o(this.selectedElement,["img"])}else{if(p!=null&&q==null){return}}p=j(p);p.attr("src",q);p.attr("alt",p.attr("alt")||"");this._update()},focus:function(){this._window.focus()},destroy:function(){j.widget.prototype.destroy.apply(this,arguments);j(this._document).add(this._document.body).add(this._frame).unbind(".htmlInput")},_update:function(){if(this.getSelected().tagName=="BODY"||(j.browser.safari&&this.getSelected().tagName=="DIV")){this._document.execCommand("formatblock",false,"<p>")}this.selectedElement=this.getSelected();this.selectedHTML=this.getSelectedHTML();if(this.options.debug){this._showStatus("_update")}for(var q in this.toolbar.tools){var t=this.toolbar.tools[q];var r=false;var p=true;switch(q){case h.bulletList.command:case h.numberList.command:var s=i(this.selectedElement,["ul","ol"]);r=(q==h.bulletList.command&&s=="ul")||(q==h.numberList.command&&s=="ol");break;case h.bold.command:r=o(this.selectedElement,["strong","b",["span",{style:/weight:\s*bold/i}]]);break;case h.italic.command:r=o(this.selectedElement,["em","i",["span",{style:/style:\s*italic/i}]]);break;case h.superscript.command:r=o(this.selectedElement,["sup",["span",{style:/-align:\s*super/i}]]);break;case h.subscript.command:r=o(this.selectedElement,["sub",["span",{style:/-align:\s*sub/i}]]);break;case h.block.command:t.command.val(i(this.selectedElement,t.data("tags")));continue;case h.link.command:r=o(this.selectedElement,["a"]);p=r||(this.selectedHTML&&this.selectedHTML.length>0)||o(this.selectedElement,["img"]);break;case h.image.command:r=o(this.selectedElement,["img"]);break;case h.leftAlign.command:r=j(o(this.selectedElement,this.options.canAlign)).hasClass("left");break;case h.middleAlign.command:r=j(o(this.selectedElement,this.options.canAlign)).hasClass("middle");break;case h.rightAlign.command:r=j(o(this.selectedElement,this.options.canAlign)).hasClass("right");break}r?t.addClass("ui-state-active"):t.removeClass("ui-state-active");p?t.removeClass("ui-state-disabled"):t.addClass("ui-state-disabled")}},_updateElement:function(){var p=this._htmlClean(this._document.body.innerHTML);if(p!=this.element.val()){this.element.val(p);this._triggerChange()}},_showStatus:function(p){window.status=p.concat(": selected html: '",this.selectedHTML,"' element: ",(this.selectedElement?this.selectedElement.tagName==undefined?this.selectedElement.toString():this.selectedElement.tagName:""))},_htmlClean:function(q,p){return this.options.clean&&j.htmlClean?j.htmlClean(q,{allowedClasses:this.options.allowedClasses,replace:p,format:this.options.format,formatIndent:this.options.formatIndent}):q},_triggerChange:function(p){this.element.trigger("change",p,{value:this.value()});if(this.options.debug){this._showStatus("changed")}},_bindEvents:function(){var p=this;j(this._document).unbind(".htmlInput").bind("keydown.htmlInput keypress.htmlInput keyup.htmlInput mouseup.htmlInput focus.htmlInput blur.htmlInput",function(r){p._bubbleEvent(r)});if(this.element[0].form){j(this.element[0].form).unbind(".htmlInput").bind("submit.htmlInput",function(){p.clean()})}if(j.browser.msie){this._frame.unbind(".htmlInput").bind("focus.htmlInput blur.htmlInput",function(r){p._bubbleEvent(r)});this._document.body.onpaste=function(){setTimeout(function(){p.clean()},0)};this._document.onbeforedeactivate=function(){p.bookmark()};this._document.onactivate=function(){p.restoreBookmark()}}if(j.browser.safari){j.each("keydown keypress keyup mouseup focus blur".split(" "),function(r){p._window.removeEventListener(this);p._window.addEventListener(this,function(s){p._bubbleEvent(s)},false)})}if(j.browser.mozilla){try{j(this._document.body).unbind(".htmlInput").bind("input.htmlInput",function(){p.clean()})}catch(q){}}},_bubbleEvent:function(p){if(p){switch(p.type){case"blur":this._updateElement();break;case"mouseup":case"keyup":this._update();break}this.element.triggerHandler(p.type,p)}},_setContent:function(q){this._window=this._frame.attr("contentWindow")?this._frame.attr("contentWindow"):window.frames[this._frameId].window;this._document=this._window.document;q="<html><head>".concat("<link href='",this.options.styleUrl,"' rel='stylesheet' type='text/css' />",this.options.baseUrl?"<base href='".concat(this.options.baseUrl,"' />"):"","<style type='text/css'>body{overflow:auto;}</style></head><body class='editor'>",this._htmlClean(q,[[["strong","big",/span.*?weight:\s*bold/i],"b"],[["em",/span.*?style:\s*italic/i],"i"],[[/span.*?-align:\s*super/i],"sup"],[[/span.*?-align:\s*sub/i],"sub"]]),"</body></html>");try{this._document.designMode="on";this._document.open();this._document.write(q);this._document.close()}catch(r){}try{this._document.execCommand("useCSS",false,true);this._document.execCommand("styleWithCSS",false,false)}catch(p){}},_applyCommand:function(q,p){this.focus();switch(q){default:this._document.execCommand(q,false,null);break;case h.block.command:this._document.execCommand(q,false,"<"+p+">");break;case h.leftAlign.command:j(o(this.selectedElement,this.options.canAlign)).removeClass(h.middleAlign.command).removeClass(h.rightAlign.command).toggleClass(q);break;case h.middleAlign.command:j(o(this.selectedElement,this.options.canAlign)).removeClass(h.leftAlign.command).removeClass(h.rightAlign.command).toggleClass(q);break;case h.rightAlign.command:j(o(this.selectedElement,this.options.canAlign)).removeClass(h.leftAlign.command).removeClass(h.middleAlign.command).toggleClass(q);break;case h.bulletList.command:case h.numberList.command:this._document.execCommand(q,false,null);break}}};function i(q,p){while(q!=null){var r=e(q,p);if(r>-1){return p[r]}q=q.parentNode}return""}function o(q,p){while(q!=null&&(e(q,p)==-1)){q=q.parentNode}return q}function e(u,r){if(u.tagName){var p=u.tagName.toLowerCase();for(var t=0;t<r.length;t++){if(r[t].constructor==Array){if(r[t][0]==p){var v=true;for(var q in r[t][1]){if(!r[t][1][q].test(u.getAttribute(q))){v=false;continue}}if(v){return t}}}else{var s=r[t].split(".");if(p==s[0]&&(s.length==1||u.getAttribute("class")==s[1])){return t}}}}return -1}function d(p){p=o(p,["a"]);return p==null?"":p.href}var c;function g(u,t,q,w,s,r){if(!c){c=j("<div id='Popup' style='position:relative;zoom:1;overflow:auto'><label style='float:left;width:35px;padding:3px 5px 0 0;text-align:right'>".concat(t.options.textUrl,"</label></div>"));c.input=j("<input style='float:left;height:100%' />");c.ok=j("<span class='ui-tool ui-state-default'><a style='width:55px'>".concat(t.options.textOk,"</a></span>"));c.cancel=j("<span class='ui-tool ui-state-default'><a style='width:55px'></a></span>");c.append(c.input).append(c.ok).append(c.cancel).bind("click.htmlInput",function(x){x.stopPropagation()})}var p=t.toolbar.element.width(),v=t.toolbar.element.outerHeight();t.toolbar.element.append(c);c.input.width(p>500?335:p-175);c.width(p-2);c.cancel.contents("a").text(t.options.textCancel);if(q){if(s){c.cancel.contents("a").text(t.options.textRemove)}c.input.val(q[w])}else{c.input.val("")}t.toolbar.element.contents("span").animate({marginTop:-v},{duration:500,complete:function(){c.input.focus()}});c.buttons=c.ok.add(c.cancel);c.buttons.bind("mouseover.htmlInput",function(){j(this).addClass("ui-state-hover")}).bind("mouseout.htmlInput",function(){j(this).removeClass("ui-state-hover")}).bind("click.htmlInput",function(x){t[r](j(this).contents("a").text()=="ok"?c.input.val():null);t.toolbar.element.contents("span").animate({marginTop:0},{duration:250,complete:function(){j(document).add(t.document).add(c.buttons).add(c.input).add(c).unbind(".htmlInput");c.remove()}});x.preventDefault()});j(document).add(t.document).bind("click.htmlInput",function(){c.cancel.click()});c.input.keydown(function(x){switch(x.which){case j.ui.keyCode.ENTER:c.ok.click();break;case j.ui.keyCode.ESCAPE:c.cancel.click();break}})}function f(s,r,p,q){g(s,r,p,"href",true,q)}function l(s,r,q,p){g(s,r,q,"src",false,p)}function k(q,p){this.element=j(q);this.tools={};this.element.bind("click.htmlInput",function(r){r.stopPropagation()}).addClass("ui-toolbar");this.add=function(s,t,r){var u=j("<span class='ui-tool ".concat(s,"'></span>"));this.element.append(u);if(t){u.append(t);t.attr("name",s);u.command=t}if(r){u.data("tags",r)}this.tools[s]=u;return u};this.addButton=function(r){var s=j("<a title='".concat(r.tooltip,"' tabindex='1000'>",r.content,"</a>"));var t=this.add(r.command,s).addClass("ui-state-default");s.bind("click.htmlInput",function(u){t.hasClass("ui-state-disabled")||p(u,s)});t.mouseover(function(){j(this).addClass("ui-state-hover")});t.mouseout(function(){j(this).removeClass("ui-state-hover")})};this.addList=function(r){var t=j("<select title='".concat(r.tooltip,"' tabindex='1000' style='height:100%'></select>"));var v=this.add(r.command,t,[]).addClass("ui-state-default");t.bind("change.htmlInput",function(w){v.hasClass("ui-state-disabled")||p(w,t)});for(var u in r.content){var s="<option value='".concat(u,"'>",r.content[u],"</option>");t.append(s);v.data("tags").push(u)}};this.addSeparator=function(r){this.add(r.command,null)};this.addButtons=function(t){for(var s in t.tools){var r=t.tools[s];if(r.add){this["add"+r.type](r)}}}}function n(p,s,q,r){this.type=p;this.command=s;this.content=q;this.add=true;this.tooltip=r}var a={Button:"Button",List:"List",Separator:"Separator"};var h={bold:new n(a.Button,"bold","<strong>B</strong>","selection bold"),italic:new n(a.Button,"italic","<em>I</em>","selection itallic"),superscript:new n(a.Button,"superscript","X<sup>2</sup>","selection superscript"),subscript:new n(a.Button,"subscript","X<sub>2</sub>","selection subscript"),subSeparator:new n(a.Separator),removeFormat:new n(a.Button,"removeformat","~","remove selection formatting"),removeFormatSeparator:new n(a.Separator),block:new n(a.List,"formatBlock",{p:"Normal",h1:"Heading 1",h2:"Heading 2",h3:"Heading 3",h4:"Heading 4",h5:"Heading 5",h6:"Heading 6",pre:"Preformatted"},"Format selection as..."),blockSeparator:new n(a.Separator),leftAlign:new n(a.Button,"left","&lArr;","left align"),middleAlign:new n(a.Button,"middle","&hArr;","middle align"),rightAlign:new n(a.Button,"right","&rArr;","right align"),rightAlignSeparator:new n(a.Separator),bulletList:new n(a.Button,"insertUnorderedList","&bull;&equiv;","selection as a bulleted list"),numberList:new n(a.Button,"insertOrderedList","1&equiv;","selection as a numbered list"),increaseIndent:new n(a.Button,"indent","&gt;&equiv;","increase indent"),decreaseIndent:new n(a.Button,"outdent","&lt;&equiv;","decrease indent"),decreaseIndentSeparator:new n(a.Separator),link:new n(a.Button,"link","<strong>&infin;</strong>","add/edit link"),image:new n(a.Button,"image","&#10065;","add/edit image")};j.widget("ui.htmlInput",b);j.extend(j.ui.htmlInput,{getter:"value",version:"1.3.0",eventPrefix:"htmlInput",defaults:{debug:false,clean:true,format:true,formatIndent:0,styleUrl:"/content/editor.css",editLink:f,editImage:l,showToolbar:true,tools:h,widthAuto:false,baseUrl:false,allowedClasses:["left","middle","right"],canAlign:["img","p","h1","h2","h3","h4","h5","h6","th","td","li","dt"],textCancel:"cancel",textOk:"ok",textRemove:"remove",textUrl:"url"}})})(jQuery);