function ContentEditor(n,t){this.outer=n;this.origHtml=null;this.callback=t;this.oldkeydown=-1;this.$bar=null;this.$raw=null;this.frames=[];this.mm=null;this.init()}ContentEditor.prototype={init:function(){var n=$(this.outer).css("position");n!=="absolute"&&n!=="relative"&&$(this.outer).css("position","relative")},createToolbar:function(){var t=this,i=this.outer,n=$('<div class="contentEditorToolbarAnchor"><div class="contentEditorToolbar" style="display: none"><button action="endEdit"     arg="true"                raw-mode="true" ><img title="Ok"              src="/images/editor/ok.png"        alt="Ok"            width="25" height="24" border="0"/><\/button><button action="endEdit"     arg="false"               raw-mode="true" ><img title="Cancel"          src="/images/editor/cancel.png"    alt="Cancel"        width="25" height="24" border="0"/><\/button> &nbsp; <button action="execCommand" arg="bold"                raw-mode="false"><img title="Bold"            src="/images/editor/bold.gif"      alt="Bold"          width="25" height="24" border="0"/><\/button><button action="execCommand" arg="underline"           raw-mode="false"><img title="Underline"       src="/images/editor/underline.gif" alt="Underline"     width="25" height="24" border="0"/><\/button><button action="execCommand" arg="italic"              raw-mode="false"><img title="Italic"          src="/images/editor/italic.gif"    alt="Italic"        width="25" height="24" border="0"/><\/button><select action="fontSize" raw-mode="false"><option value="">Size<\/option><option value="1">1<\/option><option value="2">2<\/option><option value="3">3<\/option><option value="4">4<\/option><option value="5">5<\/option><option value="6">6<\/option><option value="7">7<\/option><\/select> &nbsp; <button action="insertHyperlink"                       raw-mode="false"><img title="Hyperlink"       src="/images/editor/href.png"      alt="Hyperlink"     width="25" height="24" border="0"/><\/button><button action="editRaw"                               raw-mode="true" ><img title="Toggle Raw View" src="/images/editor/raw.png"       alt="Raw View"      width="25" height="24" border="0"/><\/button><\/div><\/div>').insertBefore(i).css({height:"0"}).find(".contentEditorToolbar").css({position:"relative",top:"5px",height:"64px","z-index":1});this.mm||$("button[action=newMedia]",n).hide();$("button",n).css({padding:"0","vertical-align":"middle"});$("button[action]",n).click(function(n){var i=this,r=i.getAttribute("action"),u=i.getAttribute("arg");t[r](u);n.cancelBubble=!0;n.stopPropagation&&n.stopPropagation()});$("select[action]").css({"vertical-align":"middle"}).change(function(){var n=$(this);t.execCommand(n.attr("action"),n.val());$(this).val("")});this.$bar=n},showToolbar:function(n){n===!1||this.$bar||this.createToolbar();this.$bar&&this.$bar.toggle(n!==!1)},enableToolbar:function(n){$("[raw-mode=false]").prop("disabled",n?!1:"disabled")},beginEdit:function(){this.editLayout(!0);this.showToolbar(!0)},endEdit:function(n){var n=n==="true"||n===!0;this.editRaw(!1);this.editLayout(!1);this.showToolbar(!1);n||this.origHtml===null||(this.outer.innerHTML=this.origHtml);this.callback&&this.callback(this.outer,n)},editLayout:function(n){var r=this,i=this.frames,t=this.outer,n=n!==!1;if(n)this.mapAttributes("onclick","editor-onclick"),this.lockKeydown(!0),this.origHtml=t.innerHTML,$(t).children().each(function(n,t){i.push(r.createLayoutFrame(t))}),t.onmousedown=function(){r.applyAll("deselect")},t.ondragstart=function(){return!1};else{while(i.length>0)i.pop().deselect().destroy();t.onmousedown=null;t.onkeydown=null;t.ondragstart=null;this.lockKeydown(!1);this.mapAttributes("editor-onclick","onclick")}},editRaw:function(n){n!==!1&&this.$raw===null?(this.editLayout(!1),this.$raw=$('<textarea class="contentEditorRawMode" style="position: absolute; left: 0; top: 0; width: 100%; height: 100%;">').val(this.outer.innerHTML).appendTo(this.outer),this.enableToolbar(!1)):n!==!0&&this.$raw!==null&&(this.outer.innerHTML=this.$raw.val(),this.$raw.remove(),this.$raw=null,this.editLayout(!0),this.enableToolbar(!0))},mapAttributes:function(n,t){$(this.outer).children().each(function(i,r){r.hasAttribute(n)&&(r.setAttribute(t,r.getAttribute(n)),r.removeAttribute(n))})},lockKeydown:function(n){var t=this;n!==!1?(this.oldkeydown===-1&&(this.oldkeydown=document.onkeydown),document.onkeydown=function(n){var n=n||window.event;switch(n.which||n.keyCode){case 8:return t.deleteElement(),n.preventDefault&&n.preventDefault(),!1}}):this.oldkeydown!==-1&&(document.onkeydown=this.oldkeydown,this.oldkeydown=-1)},createLayoutFrame:function(n){var t=this,i={deselectAll:function(){t.applyAll("deselect")},prepareTransformAll:function(n){t.applyAll("prepareTransform",n)},transformAll:function(n,i,r,u){t.applyAll("transform",n,i,r,u)},lockKeydown:function(n){t.lockKeydown(n)}};return new ContentEditor.LayoutFrame(n,i)},editingFrame:function(){for(var t=this.frames,n=0;n<t.length;n+=1)if(t[n].isEditing)return t[n];return null},execCommand:function(n,t){var i,r;if(this.editingFrame())document.execCommand(n,!1,t||"");else for(i=0;i<this.frames.length;i+=1)r=this.frames[i],r.isSelected&&r.execCommandFrame(n,t)},insertHyperlink:function(){var n=prompt("Hyperlink URL:","http://"),t=this.frames,i=this.editingFrame();n!==null&&this.execCommand("CreateLink",n)},arrange:function(n){var i,r=this.outer,t=this.frames,u=function(n,i){if(n!==i){var u=t.splice(n,1)[0],f=u.targetElement;i<n?(r.insertBefore(f,t[i].targetElement),t.splice(i,0,u)):i<t.length-1?(r.insertBefore(f,t[i+1].targetElement),t.splice(i-1,0,u)):(r.appendChild(f),t.push(u))}};switch(n){case"back":for(i=0;i<t.length;i+=1)t[i].isSelected&&u(i,0);break;case"front":for(i=t.length-1;i>=0;i-=1)t[i].isSelected&&u(i,t.length-1)}},applyAll:function(n){for(var i=this.frames,t=0;t<i.length;t+=1)i[t].isSelected&&i[t][n].apply(i[t],Array.prototype.slice.call(arguments,1))},newCell:function(){var t=document.createElement("div"),n=this.createLayoutFrame(t);this.applyAll("deselect");this.outer.appendChild(t);t.style.overflow="hidden";n.setRect({x:10,y:10,w:200,h:50});n.select();n.contentEdit();this.frames.push(n)},newMedia:function(){var t=this,n=t.editingFrame();n?n.destroyHandles():this.applyAll("deselect");$(this.mm.containerDiv).show().css({width:this.outer.offsetWidth+"px",height:this.outer.offsetHeight+"px"}).offset($(this.outer).offset());this.mm.show({callback:function(i){return n?(n.targetElement.focus(),n.createHandles(),t.insertMediaFrame(i)):t.insertMediaElement(i),!0},cancel:function(){n&&n.createHandles();t.mm.hide()},filters:n?[{value:"Image",title:Localize("Images ()")}]:[{value:"Image",title:Localize("Images ()")},{value:"Video",title:Localize("Video Files ()")}]})},insertMediaFrame:function(n){for(var i,t=0;t<n.length;t+=1)i=n[t],this.execCommand("insertimage",MediaManagerItem.getMediaUrl(i.id,i.extension))},insertMediaElement:function(n){for(var i=this,t,u=this.outer,f=function(n,t){var r=new Image,f=i.createLayoutFrame(r);u.appendChild(r);i.frames.push(f);r.onload=function(){f.setRect({x:10,y:10,w:this.width,h:this.height});f.select()};r.src=MediaManagerItem.getMediaUrl(n,t)},e=function(n,t){var r=document.createElement("video"),f=i.createLayoutFrame(r);u.appendChild(r);i.frames.push(f);r.setAttribute("controls","controls");r.innerHTML='<img src="'+MediaManagerItem.getMediaUrl(n,t,240)+'" alt="" />';r.src=MediaManagerItem.getMediaUrl(n,t);f.setRect({x:10,y:10,w:240,h:160});f.select()},r=0;r<n.length;r+=1){t=n[r];switch(MediaManagerItem.extensions(t.extension)){case"Image":f(t.id,t.extension);break;case"Video":e(t.id,t.extension)}}},deleteElement:function(){for(var t,i=this.frames,n=i.length-1;n>=0;n-=1)t=i[n],t.isSelected&&(t.destroy(),$(t.targetElement).remove(),i.splice(n,1))},lockElement:function(){var n=[],t=!1;$.each(this.frames,function(i,r){r.isSelected&&(t=!0,r.lock(!0),r.deselect());r.isLocked&&n.push(r)});t||$.each(n,function(n,t){t.lock(!1)})},constructor:ContentEditor};ContentEditor.LayoutFrame=function(n,t){this.targetElement=n;this.delegate=t;this.tag=n&&n.nodeName?n.nodeName.toLowerCase():"";this.isContentEditable=this.tag==="div"||this.tag==="p"||this.tag==="section";this.style={cursor:null};this.handles=[];this.rectDown=null;this.isLocked=!1;this.isSelected=!1;this.isEditing=!1;this.init()};ContentEditor.LayoutFrame.prototype={init:function(){var t=this,n=this.targetElement;this.style.cursor=n.style.cursor;n.style.cursor="pointer";n.onmousedown=n.ontouchstart=function(n){t.mousedown(n)}},destroy:function(){var n=this.targetElement;this.destroyHandles();n.style.cursor=this.style.cursor;n.onmousedown=null;n.ontouchstart=null;n.removeAttribute("ontouchstart")},execCommandFrame:function(n,t){var u=this.targetElement,i=u.style,r=function(n,t){i[n]=i[n]?"":t};switch(n.toLowerCase()){case"bold":r("fontWeight","bold");break;case"italic":r("fontStyle","italic");break;case"underline":r("textDecoration","underline");break;case"forecolor":i.color=t||"";break;case"backcolor":i.backgroundColor=t||"";break;case"bordercolor":i.border=t?"solid "+t:"";break;case"removeformat":i.color="";i.backgroundColor="";i.border="none";break;case"createlink":this.setHyperlink(t)}},mousedown:function(n){var n=n||window.event;this.isLocked||(this.isEditing||(this.isSelected?this.isContentEditable&&(this.delegate.deselectAll(),this.contentEdit(!0),this.select()):(n.shiftKey||this.delegate.deselectAll(),this.select(),n.preventDefault&&n.preventDefault())),n.cancelBubble=!0,n.stopPropagation&&n.stopPropagation())},contentEdit:function(n){n!==!1?(this.targetElement.setAttribute("contenteditable","true"),this.targetElement.focus(),this.delegate.lockKeydown(!1),this.isEditing=!0):(this.targetElement.removeAttribute("contenteditable"),this.delegate.lockKeydown(!0),this.isEditing=!1)},setHyperlink:function(n){switch(this.tag){case"img":n&&n.length>0?this.targetElement.setAttribute("editor-onclick","window.location='"+n.replace(/['"]/g,"")+"'"):this.targetElement.removeAttribute("editor-onclick")}},lock:function(n){var t=this.targetElement;this.isLocked=n!==!1;t.style.pointerEvents=this.isLocked?"none":""},select:function(){this.isContentEditable&&(this.targetElement.style.cursor="text");this.createHandles();this.isSelected=!0},deselect:function(){return this.destroyHandles(),this.isSelected=!1,this.targetElement.style.cursor="pointer",this.contentEdit(!1),this},createHandles:function(){$(this.targetElement).addClass("isEditing")},destroyHandles:function(){$(this.targetElement).removeClass("isEditing")},getRect:function(){var n=this.targetElement,i=$(n).offset(),t=$(n.parentNode).offset();return{x0:t.left,y0:t.top,x:i.left-t.left,y:i.top-t.top,w:n.offsetWidth,h:n.offsetHeight}},setRect:function(n){var t=this.targetElement;t.style.position="absolute";t.style.left=n.x+"px";t.style.top=n.y+"px";t.style.width=Math.max(8,n.w)+"px";t.style.height=Math.max(8,n.h)+"px";this.updateHandles()},updateHandles:function(){},handleDown:function(n){this.delegate.prepareTransformAll(n)},handleMove:function(n,t,i,r){this.delegate.transformAll(n,t,i,r)},prepareTransform:function(){this.rectDown=this.getRect()},transform:function(n,t,i,r){var u=this.tag,f=u==="img"||u==="video"||!!r.shiftKey,e=ContentEditor.LayoutFrame.Handle.transformByHandle(n,t,i,!!r.shiftKey,f,this.rectDown);this.setRect(e)},constructor:ContentEditor.LayoutFrame}