Linker._pluginInfo={name:"Linker",version:"1.0",developer:"James Sleeman",developer_url:"http://www.gogo.co.nz/",c_owner:"Gogo Internet Services",license:"htmlArea",sponsor:"Gogo Internet Services",sponsor_url:"http://www.gogo.co.nz/"}; Xinha.loadStyle("dTree/dtree.css","Linker"); Xinha.Config.prototype.Linker={"treeCaption":document.location.host,"backend":_editor_url+"plugins/Linker/scan.php","backend_data":null,"files":null}; function Linker(_1,_2){ this.editor=_1; this.lConfig=_1.config.Linker; var _3=this; if(_1.config.btnList.createlink){ _1.config.btnList.createlink[3]=function(e,_5,_6){ _3._createLink(_3._getSelectedAnchor()); }; }else{ _1.config.registerButton("createlink","Insert/Modify Hyperlink",[_editor_url+"images/ed_buttons_main.gif",6,1],false,function(e,_8,_9){ _3._createLink(_3._getSelectedAnchor()); }); } _1.config.addToolbarElement("createlink","createlink",0); } Linker.prototype._lc=function(_a){ return Xinha._lc(_a,"Linker"); }; Linker.prototype._createLink=function(a){ if(!a&&this.editor.selectionEmpty(this.editor.getSelection())){ alert(this._lc("You must select some text before making a new link.")); return false; } var _c={type:"url",href:"http://www.example.com/",target:"",p_width:"",p_height:"",p_options:["menubar=no","toolbar=yes","location=no","status=no","scrollbars=yes","resizeable=yes"],to:"alice@example.com",subject:"",body:"",anchor:""}; if(a&&a.tagName.toLowerCase()=="a"){ var _d=this.editor.fixRelativeLinks(a.getAttribute("href")); var m=_d.match(/^mailto:(.*@[^?&]*)(\?(.*))?$/); var _f=_d.match(/^#(.*)$/); if(m){ _c.type="mailto"; _c.to=m[1]; if(m[3]){ var _10=m[3].split("&"); for(var x=0;x<_10.length;x++){ var j=_10[x].match(/(subject|body)=(.*)/); if(j){ _c[j[1]]=decodeURIComponent(j[2]); } } } }else{ if(_f){ _c.type="anchor"; _c.anchor=_f[1]; }else{ if(a.getAttribute("onclick")){ var m=a.getAttribute("onclick").match(/window\.open\(\s*this\.href\s*,\s*'([a-z0-9_]*)'\s*,\s*'([a-z0-9_=,]*)'\s*\)/i); _c.href=_d?_d:""; _c.target="popup"; _c.p_name=m[1]; _c.p_options=[]; var _10=m[2].split(","); for(var x=0;x<_10.length;x++){ var i=_10[x].match(/(width|height)=([0-9]+)/); if(i){ _c["p_"+i[1]]=parseInt(i[2]); }else{ _c.p_options.push(_10[x]); } } }else{ _c.href=_d; _c.target=a.target; } } } } var _14=this; this.a=a; var _15=function(){ var a=_14.a; var _17=_14._dialog.hide(); var atr={href:"",target:"",title:"",onclick:""}; if(_17.type=="url"){ if(_17.href){ atr.href=_17.href; atr.target=_17.target; if(_17.target=="popup"){ if(_17.p_width){ _17.p_options.push("width="+_17.p_width); } if(_17.p_height){ _17.p_options.push("height="+_17.p_height); } atr.onclick="if(window.top && window.top.Xinha){return false}window.open(this.href, '"+(_17.p_name.replace(/[^a-z0-9_]/i,"_"))+"', '"+_17.p_options.join(",")+"');return false;"; } } }else{ if(_17.type=="anchor"){ if(_17.anchor){ atr.href=_17.anchor.value; } }else{ if(_17.to){ atr.href="mailto:"+_17.to; if(_17.subject){ atr.href+="?subject="+encodeURIComponent(_17.subject); } if(_17.body){ atr.href+=(_17.subject?"&":"?")+"body="+encodeURIComponent(_17.body); } } } } if(a&&a.tagName.toLowerCase()=="a"){ if(!atr.href){ if(confirm(_14._dialog._lc("Are you sure you wish to remove this link?"))){ var p=a.parentNode; while(a.hasChildNodes()){ p.insertBefore(a.removeChild(a.childNodes[0]),a); } p.removeChild(a); _14.editor.updateToolbar(); return; } }else{ for(var i in atr){ a.setAttribute(i,atr[i]); } if(Xinha.is_ie){ if(/mailto:([^?<>]*)(\?[^<]*)?$/i.test(a.innerHTML)){ a.innerHTML=RegExp.$1; } } } }else{ if(!atr.href){ return true; } var tmp=Xinha.uniq("http://www.example.com/Link"); _14.editor._doc.execCommand("createlink",false,tmp); var _1c=_14.editor._doc.getElementsByTagName("a"); for(var i=0;i<_1c.length;i++){ var _1d=_1c[i]; if(_1d.href==tmp){ if(!a){ a=_1d; } for(var j in atr){ _1d.setAttribute(j,atr[j]); } } } } _14.editor.selectNodeContents(a); _14.editor.updateToolbar(); }; this._dialog.show(_c,_15); }; Linker.prototype._getSelectedAnchor=function(){ var sel=this.editor.getSelection(); var rng=this.editor.createRange(sel); var a=this.editor.activeElement(sel); if(a!=null&&a.tagName.toLowerCase()=="a"){ return a; }else{ a=this.editor._getFirstAncestor(sel,"a"); if(a!=null){ return a; } } return null; }; Linker.prototype.onGenerateOnce=function(){ this._dialog=new Linker.Dialog(this); }; Linker.Dialog_dTrees=[]; Linker.Dialog=function(_22){ var _23=this; this.Dialog_nxtid=0; this.linker=_22; this.id={}; this.ready=false; this.files=false; this.html=false; this.dialog=false; this._prepareDialog(); }; Linker.Dialog.prototype._prepareDialog=function(){ var _24=this; var _25=this.linker; if(typeof dTree=="undefined"){ Xinha._loadback(_editor_url+"plugins/Linker/dTree/dtree.js",function(){ _24._prepareDialog(); }); return; } if(this.files==false){ if(_25.lConfig.backend){ Xinha._postback(_25.lConfig.backend,_25.lConfig.backend_data,function(txt){ try{ _24.files=eval(txt); } catch(Error){ _24.files=[{url:"",title:Error.toString()}]; } _24._prepareDialog(); }); }else{ if(_25.lConfig.files!=null){ _24.files=_25.lConfig.files; _24._prepareDialog(); } } return; } var _27=this.files; if(this.html==false){ Xinha._getback(_editor_url+"plugins/Linker/dialog.html",function(txt){ _24.html=txt; _24._prepareDialog(); }); return; } var _29=this.html; var _2a=this.dialog=new Xinha.Dialog(_25.editor,this.html,"Linker"); var _2b=Xinha.uniq("dTree_"); this.dTree=new dTree(_2b,_editor_url+"plugins/Linker/dTree/"); eval(_2b+" = this.dTree"); this.dTree.add(this.Dialog_nxtid++,-1,_25.lConfig.treeCaption,null,_25.lConfig.treeCaption); this.makeNodes(_27,0); var _2c=this.dialog.getElementById("dTree"); _2c.innerHTML=""; _2c.style.position="absolute"; _2c.style.left=1+"px"; _2c.style.top=0+"px"; _2c.style.overflow="auto"; _2c.style.backgroundColor="white"; this.ddTree=_2c; this.dTree._linker_premade=this.dTree.toString(); var _2d=this.dialog.getElementById("options"); _2d.style.position="absolute"; _2d.style.top=0+"px"; _2d.style.right=0+"px"; _2d.style.width=320+"px"; _2d.style.overflow="auto"; this.dialog.onresize=function(){ var h=parseInt(_2a.height)-_2a.getElementById("h1").offsetHeight; var w=parseInt(_2a.width)-322; if(w<0){ w=0; } if(h<0){ h=0; } _2d.style.height=_2c.style.height=h+"px"; _2c.style.width=w+"px"; }; this.ready=true; }; Linker.Dialog.prototype.makeNodes=function(_30,_31){ for(var i=0;i<_30.length;i++){ if(typeof _30[i]=="string"){ this.dTree.add(Linker.nxtid++,_31,_30[i].replace(/^.*\//,""),"javascript:document.getElementsByName('"+this.dialog.id.href+"')[0].value=decodeURIComponent('"+encodeURIComponent(_30[i])+"');document.getElementsByName('"+this.dialog.id.type+"')[0].click();document.getElementsByName('"+this.dialog.id.href+"')[0].focus();void(0);",_30[i]); }else{ if(_30[i].length){ var id=this.Dialog_nxtid++; this.dTree.add(id,_31,_30[i][0].replace(/^.*\//,""),null,_30[i][0]); this.makeNodes(_30[i][1],id); }else{ if(typeof _30[i]=="object"){ if(_30[i].children){ var id=this.Dialog_nxtid++; }else{ var id=Linker.nxtid++; } if(_30[i].title){ var _34=_30[i].title; }else{ if(_30[i].url){ var _34=_30[i].url.replace(/^.*\//,""); }else{ var _34="no title defined"; } } if(_30[i].url){ var _35="javascript:document.getElementsByName('"+this.dialog.id.href+"')[0].value=decodeURIComponent('"+encodeURIComponent(_30[i].url)+"');document.getElementsByName('"+this.dialog.id.type+"')[0].click();document.getElementsByName('"+this.dialog.id.href+"')[0].focus();void(0);"; }else{ var _35=""; } this.dTree.add(id,_31,_34,_35,_34); if(_30[i].children){ this.makeNodes(_30[i].children,id); } } } } } }; Linker.Dialog.prototype._lc=Linker.prototype._lc; Linker.Dialog.prototype.show=function(_36,ok,_38){ if(!this.ready){ var _39=this; window.setTimeout(function(){ _39.show(_36,ok,_38); },100); return; } if(this.ddTree.innerHTML==""){ this.ddTree.innerHTML=this.dTree._linker_premade; } if(_36.type=="url"){ this.dialog.getElementById("urltable").style.display=""; this.dialog.getElementById("mailtable").style.display="none"; this.dialog.getElementById("anchortable").style.display="none"; }else{ if(_36.type=="anchor"){ this.dialog.getElementById("urltable").style.display="none"; this.dialog.getElementById("mailtable").style.display="none"; this.dialog.getElementById("anchortable").style.display=""; }else{ this.dialog.getElementById("urltable").style.display="none"; this.dialog.getElementById("mailtable").style.display=""; this.dialog.getElementById("anchortable").style.display="none"; } } if(_36.target=="popup"){ this.dialog.getElementById("popuptable").style.display=""; }else{ this.dialog.getElementById("popuptable").style.display="none"; } var _3a=this.dialog.getElementById("anchor"); for(var i=_3a.length;i>=0;i--){ _3a[i]=null; } var _3c=this.linker.editor.getHTML(); var _3d=new Array(); var m=_3c.match(/]+name="([^"]+)"/gi); if(m){ for(i=0;i