var parchment_link=new Class({initialize:function(b,a){this.parch=b;this.anchor=false;this.text=false;this.container=this.getEditMenu();this.btn=new Element("a",{"class":"parchment_btn_link disabled",href:"#"}).addEvent("click",function(d){var c=new Event(d).stop();this.btnClick()}.bind(this)).inject(a,"after").setProperty("title","Link");b.addEvent("parchmentCleanComplete",this.hijack.bind(this));this.parch.addEvent("parchmentKeyup",function(){var c=this.parch.currentEvent;if(c.shift&&(c.key=="left"||c.key=="right")){this.activateButton()}}.bind(this));this.parch.addEvent("parchmentKeyDown",function(){var c=this.parch.currentEvent;if((c.meta||c.control)&&c.key=="l"){this.btnClick()}}.bind(this));this.parch.addEvent("parchmentMouseup",function(){this.hideEditMenu();this.activateButton()}.bind(this));window.addEvent("scroll",this.hideEditMenu.bind(this));window.addEvent("resize",this.hideEditMenu.bind(this))},btnClick:function(){if(this.btn.hasClass("disabled")){return false}this.anchor=false;var a=this.parch.getTextSelection();this.range=this.parch.getRange();this.text=a;this.linkPanel()},activateButton:function(){var b=this.parch.getTextSelection();var a=b.toString();if(a.trim()==""){this.btn.addClass("disabled")}else{this.btn.removeClass("disabled")}},hijack:function(){clog("HIJACK LINKS");$(this.parch.body).getElements("a").each(function(b){if(b.getElement("img")){return}if(Browser.Engine.gecko&&b.getParent().getTag()!="span"){var c=this.parch.doc.createElement("span");c.innerHTML=b.innerHTML;b.innerHTML="";b.appendChild(c);this.parch.editable(false);$(c).setStyles({color:b.getStyle("color"),"text-decoration":"none"});$(b).setStyles({color:b.getStyle("color"),"text-decoration":"none"});this.parch.editable(true)}if(b.getProperty("href")=="#"){return}b.addEvent("mousedown",function(a){this.parch.disableContextMenu(a,b)}.bind(this));b.addEvent("click",function(d){var a=new Event(d).stop();this.anchor=b;this.showEditMenu()}.bind(this))}.bind(this))},hideEditMenu:function(){this.parch.hideElement(this.container)},showEditMenu:function(){var a=$(this.parch.IF).getCoordinates(),c=$(this.parch.CT).getCoordinates();var b=this.anchor.getCoordinates();var d=this.container.getCoordinates();var f=b.bottom+a.top;var e=b.left+c.left;if(e>a.width/2&&b.width<d.width){e=e-(d.width-b.width)}this.container.setStyles({visibility:"visible",top:f,left:e})},getEditMenu:function(){str='<a class="jsGoToLink">Go to link</a> - <a class="jsEditLink">Change</a> - <a class="jsRemoveLink">Remove</a> - <a class="jsClose">X</a>';var a=new Element("div").addClass("parchment_edit_menu").setHTML(str).inject(document.body);this.parch.setMenuZindex(a);this.parch.hideElement(a);a.getElement(".jsRemoveLink").addEvent("click",function(){if($(this.anchor).getElement("span")){this.anchor.innerHTML=$(this.anchor).getElement("span").innerHTML}var b=this.parch.selectNode(this.anchor);this.parch.doc.execCommand("unlink",false,false);var b=this.parch.selectNode(this.anchor);this.hideEditMenu()}.bind(this));a.getElement(".jsEditLink").addEvent("click",function(b){this.linkPanel();this.hideEditMenu()}.bind(this));a.getElement(".jsClose").addEvent("click",function(){this.hideEditMenu()}.bind(this));a.getElement(".jsGoToLink").addEvent("click",function(){window.open(this.anchor.href,"newin");this.hideEditMenu()}.bind(this));return a},linkPanel:function(){str="";str+='<table class="add-link">';str+="    <tbody>";str+='        <tr><td>URL:</td><td><input type="text" class="link" /></td></tr>';str+='        <tr><td><strong>Or search for a link:</td><td><input type="text" class="search" class="mt-10" /></td></tr>';str+='        <tr><td colspan="2"><a class="jsOk btn mt-10">Create Link</a></td></tr>';str+="    </tbody>";str+="</table>";var a=new Element("div").set("html",str).inject(document.body);var b=a.getElement(".search");var c=new VinesSearchAC(b,"/autosearch/",{callBackEvent:"choiceSelected",zIndex:10000});b.addEvent("choiceSelected",function(d,f){this.link_input.value=d.url}.bind(this));this.link_input=a.getElement(".link").addEvent("click",function(){b.fireEvent("blur")}).addEvent("keydown",function(f){var d=Event(f);if(d.key=="enter"){this.submit()}}.bind(this));this.pad=new LaunchPad.Base({titleTextStr:"Add a Link",styles:{width:"400px"}});this.pad.insert(a);a.getElement(".jsOk").addEvent("click",function(){this.submit()}.bind(this));if(this.anchor){this.link_input.value=this.anchor.get("href");this.parch.selectNode(this.anchor)}if(this.text){b.value=this.text;c.observer.fireEvent("onFired")}},validateUrl:function(a){if(a.charAt(0)=="/"){return true}else{var b=/(ftp|http|https|gopher|telnet):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;return b.test(a)}},submit:function(){var b=this.link_input.value;b=b.trim();var a=this.validateUrl(b);if(!a){alert("You did not enter a valid link.");return}if(Browser.Engine.trident){this.range.select()}this.parch.doc.execCommand("createlink",false,b);this.hijack();this.pad.hide();this.anchor=false}});
