var parchment_code=new Class({initialize:function(b,a){this.parch=b;this.placement=a;this.container=this.getEditMenu();this.cage=false;this.mouseoverContainer=false;this.possibleCageRels=["ascii","embed","html"];this.parch.addEvent("parchmentCleanComplete",this.hijack.bind(this));this.parch.addEvent("parchmentToolbarClick",this.hideEditMenu.bind(this));window.addEvent("scroll",this.showEditMenu.bind(this));window.addEvent("resize",this.showEditMenu.bind(this));this.parch.addEvent("parchmentKeyDown",function(e){var f=this.parch.getSelectedElement();var c=this.parch.getCage(f);if(c&&c.getProperty("rel")=="embed"){clog("ABORT: Typing inside an embed CAGE.");var d=c.getNext();if(d){this.parch.selectNode(d)}e.stop()}}.bind(this))},html:function(){var a=this.parch.addDropOption("html",MEDIA_URL+"editor/img/parchment/html.png",this.placement);a.addEvent("click",function(c){var b=new Event(c).stop();this.codePanel("html")}.bind(this))},pre:function(){var a=this.parch.addDropOption("ascii",MEDIA_URL+"editor/img/parchment/code.png",this.placement);a.addEvent("click",function(c){var b=new Event(c).stop();this.codePanel("pre")}.bind(this))},hijack:function(){clog("HIJACK CODE");this.cages=[];$(this.parch.body).getElements(".js-item-cage").each(function(b){if(!this.possibleCageRels.contains(b.getProperty("rel"))){return}this.cages.include(b);b.removeClass("wiki-embed-code");b.removeClass("parchment-item-cage-hover");var j=b.getElement("embed");if(j){if(Browser.Engine.trident){b.innerHTML=b.innerHTML.replace(/<embed /gi,'<embed wmode="transparent" ')}else{j.setAttribute("wmode","transparent")}}var g=b.getElement("object");if(g){var f=false;b.getElements("param").each(function(e){if(e.name=="wmode"){e.value="transparent";f=true}});if(!f){var i=this.parch.doc.createElement("param");i.name="wmode";i.value="transparent";g.appendChild(i)}try{var a=g.getProperty("width");var c=g.getProperty("height");b.setStyles({height:c,width:"100%"})}catch(d){clog("Flash borked "+d)}}b.addEvent("mouseover",function(k){var h=new Event(k).stop();clearTimeout(this.mouseOutTimer);this.cage=b;this.showEditMenu()}.bind(this));b.addEvent("mouseout",function(k){var h=new Event(k).stop();clearTimeout(this.mouseOutTimer);this.mouseOutTimer=window.setTimeout(function(){if(this.cage==b){this.hideEditMenu()}else{b.removeClass("parchment-item-cage-hover")}}.bind(this),100)}.bind(this))}.bind(this))},hideEditMenu:function(){if(this.mouseoverContainer){return}this.container.setStyles({position:"absolute",left:"0px",top:"0px",visibility:"hidden"});if(!$(this.cage)){return}this.cage.removeClass("parchment-item-cage-hover");this.cage=false},hideEditMenuForce:function(){this.container.setStyles({position:"absolute",left:"0px",top:"0px",visibility:"hidden"})},showEditMenu:function(){if(!$(this.cage)){return}this.cages.each(function(g){g.removeClass("parchment-item-cage-hover")});var d=this.container.getCoordinates();var b=$(this.parch.IF).getCoordinates();var a=$(this.parch.TB).getCoordinates();var c=this.cage.getCoordinates();var f=0;var e=c.left+b.left;if(e>b.width/2&&c.width<d.width){e=e-(d.width-c.width)}if(window.getScroll().y>b.top+c.bottom){f="-1000px";position="absolute"}else{if(window.getScroll().y>b.top+c.top){f=a.height;position="fixed"}else{f=c.top+b.top;position="absolute"}}this.container.setStyles({visibility:"visible",position:position,top:f,left:e});this.cage.addClass("parchment-item-cage-hover")},getEditMenu:function(){str='<a class="jsEditEmbed">Edit HTML/Code Block</a> - ';str+='<a class="jsRemoveEmbed">Remove Block</a>';var a=new Element("div").addClass("parchment_edit_menu").setStyles({position:"absolute",left:"0px",top:"0px",visibility:"hidden"}).setHTML(str).inject(document.body).addEvent("mouseover",function(){this.mouseoverContainer=true}.bind(this)).addEvent("mouseout",function(){this.mouseoverContainer=false}.bind(this));this.parch.setMenuZindex(a);a.getElement(".jsEditEmbed").addEvent("click",function(){if(this.cage.getFirst()&&this.cage.getFirst().getTag()=="pre"){var b=this.cage.getFirst().innerHTML;this.codePanel("pre",b.trim())}else{var b=this.cage.innerHTML;this.codePanel("html",b.trim())}this.hideEditMenu()}.bind(this));a.getElement(".jsRemoveEmbed").addEvent("click",function(){this.hideEditMenuForce();this.parch.removeCage(this.cage);this.cage=false}.bind(this));return a},codePanel:function(d,b){if(!b){this.cage=false}if(d!="pre"){b=this.parch.plainTextFormat(b)}if(str.contains("<object")||str.contains("<embed")){b=b.replace(/<center>/,"");b=b.replace(/<\/center>/,"")}var c="Embed HTML/Flash";if(d=="pre"){c="Add monospaced / ascii text"}str='     <fieldset class="launchpad-html">';str+="         <ul>";str+="             <li>";if(d=="pre"){str+="             <strong>&lt;pre&gt;</strong><br/>"}else{str+="             <strong>Paste in your code:</strong><br/>"}str+='                 <textarea id="jsEmbedText" cols="80" rows="5">';if(b){str+=b}str+="</textarea>";if(d=="pre"){str+="             <strong>&lt;/pre&gt;</strong>"}str+="             </li>";str+="         </ul>";str+='         <a id="jsEmbedYes" class="btn">Done</a>';str+='         <a id="jsEmbedNo" class="btn">Cancel</a>';str+="     </fieldset>";var e=new Element("div");e.setHTML(str);this.lp=new LaunchPad.Base({titleTextStr:c});this.lp.insert(e);this.codeCage=e;this.mode=d;var a=this.lp.options.stage.getElement("textarea");a.focus();this.prevPaste=false;a.addEvent("keydown",function(g){var f=new Event(g);if(this.prevPaste&&f.key=="enter"){this.pasteCode();this.prevPaste=false;f.stop()}if(f.key=="v"&&(f.meta||f.control)){this.prevPaste=true}}.bind(this));$(e).getElement("#jsEmbedYes").addEvent("click",this.pasteCode.bind(this));$(e).getElement("#jsEmbedNo").addEvent("click",function(){this.lp.hide()}.bind(this))},pasteCode:function(){var c=$(this.codeCage).getElement("#jsEmbedText").value;var a="html";if(this.mode=="pre"){a="ascii"}else{if(c.contains("<object")||c.contains("<embed")){a="embed"}}if(this.mode=="pre"){c="<pre class='vines-ok'>"+c+"</pre>"}else{if(c.contains("<object")||c.contains("<embed")){c="<center>"+c+"</center>"}}var b=new Element("span");new Element("div",{rel:a}).addClass("js-item-cage").set("html",c).inject(b);c=b.innerHTML+"&nbsp;&nbsp;";this.parch.insertHTML(c,this.cage);this.lp.hide();this.cage=false;window.setTimeout(this.hijack.bind(this),1000)}});