1 line
No EOL
14 KiB
JavaScript
1 line
No EOL
14 KiB
JavaScript
function BBCodeButton(c){if(!c){return}var b=null;var a=this;var d=null;this.canInsert=function(){return b&&b.getTextArea()};this.getCode=function(){return d.name};this.getButtonGroup=function(){return b};this.addButtonGroup=function(e){b=e};this.insertCode=function(e){if(!this.canInsert()){return}var g=b.getTextArea();var f=g.getSelection();g.insertTextRange("["+this.getCode()+"]"+f+"[/"+this.getCode()+"]")};this.setHTMLElement=function(e){d=e;d.onclick=function(f){a.insertCode(this);return false}};this.getHTMLElement=function(e){return d};this.setHTMLElement(c)}function BBCodeLinkButton(d){this.constructor(d);var c="link";var e=new RegExp(/[http|https|ftp|ftps]:\/\/[a-zA-Z0-9-.][a-zA-Z0-9-.]+(S+)?/);var a=new RegExp(/[?|&]id=([0-9]+)/);var b=window.location.hostname+window.location.pathname;this.insertCode=function(h){if(!this.canInsert()){return}var f=this.getButtonGroup();var k=f.getTextArea();var j=k.getSelection().trim();var g=(e.test(j))?window.prompt(lang.bbcode_link_url,j):window.prompt(lang.bbcode_link_url,"http://");if(!g||g==""||g=="http://"){return}if(g.indexOf(b)>0&&a.test(g)){var i=a.exec(g);c="msg";g=i[1]}else{c="link"}if(j==""||e.test(j)){j=window.prompt(lang.bbcode_link_text,"")}if(j!=null){if(j!=""){k.insertTextRange("["+c+"="+g+"]"+j+"[/"+c+"]")}else{k.insertTextRange("["+c+"]"+g+"[/"+c+"]")}}}}function BBCodePromtButton(c,a,b){this.constructor(c);b=b||"";this.insertCode=function(f){if(!this.canInsert()){return}var d=this.getButtonGroup();var h=d.getTextArea();var g=h.getSelection().trim();if(g==""){var e=window.prompt(a,b);if(e&&e.trim()!=""&&e.trim()!=b){h.insertTextRange("["+this.getCode()+"]"+e+"[/"+this.getCode()+"]")}}else{h.insertTextRange("["+this.getCode()+"]"+g+"[/"+this.getCode()+"]")}}}function BBCodeColorChooserButton(c){this.constructor(c);var a=["#fff","#ccc","#c0c0c0","#999","#666","#333","#000","#fcc","#f66","#f00","#c00","#900","#600","#300","#fc9","#f96","#f90","#f60","#c60","#930","#630","#ff9","#ff6","#fc6","#fc3","#c93","#963","#633","#ffc","#ff3","#ff0","#fc0","#990","#660","#330","#9f9","#6f9","#3f3","#3c0","#090","#060","#030","#9ff","#3ff","#6cc","#0cc","#399","#366","#033","#cff","#6ff","#3cf","#36f","#33f","#009","#006","#ccf","#99f","#66c","#63f","#60c","#339","#309","#fcf","#f9f","#c6c","#c3c","#939","#636","#303"];var d=document.createElement("table");var b=document.createElementWithAttributes("tbody",[],d);var h=this;var j=document.createElementWithAttributes("tr",[],b);for(var e=0;e<a.length;e++){var g=document.createElementWithAttributes("td",[],j);g.style.backgroundColor=a[e];g.style.width="15px";g.style.height="15px";g.style.fontSize="15px";var f=document.createElementWithAttributes("a",[["href","#"],["extension","="+a[e]],["onclick",function(i){h.insertOptionCode(this);return false}]],g);f.style.display="block";f.appendChild(document.createTextNode(String.fromCharCode(160)));if((e+1)%7==0){j=document.createElementWithAttributes("tr",[],b)}}this.insertOptionCode=function(l){if(!this.canInsert()){return}var i=this.getButtonGroup();var m=i.getTextArea();var k=this.getCode();m.insertTextRange("["+k+l.extension+"]"+m.getSelection()+"[/"+k+"]");i.getAdditionalOptionsWindow().enableOptionList(false)};this.insertCode=function(l){if(!this.canInsert()){return}var k=this.getButtonGroup();var i=document.getElementPoSi(l);k.getAdditionalOptionsWindow().setOptionList(d);k.getAdditionalOptionsWindow().enableOptionList(true,i)}}function BBCodeOptionButton(a,f,d,g){this.constructor(a);if(!f){return}d=d||false;g=g||"";var e=document.createElement("ul");var k=this;for(var c=0;c<f.length;c++){var b=f[c];var j=document.createElementWithAttributes("li",[],e);var h=document.createElementWithAttributes("a",[["href","#"],["attribute",b.attribute],["onclick",function(i){k.insertOptionCode(this);return false}]],j);h.appendChild(document.createTextNode(b.label));e.appendChild(j)}this.insertOptionCode=function(o){if(!this.canInsert()){return}var i=this.getButtonGroup();var r=i.getTextArea();var q=r.getSelection();var m=this.getCode(),l=this.getCode();if(o.attribute.toLowerCase()=="inlinecode"){m=l=o.attribute}if(o.attribute.trim()&&o.attribute.toLowerCase()!="inlinecode"){m+="="+o.attribute}if(d&&q==""){var n=window.prompt(d,g);if(n&&n.trim()!=""&&n.trim()!=g){r.insertTextRange("["+m+"]"+n+"[/"+l+"]")}}else{r.insertTextRange("["+m+"]"+q+"[/"+l+"]")}i.getAdditionalOptionsWindow().enableOptionList(false)};this.insertCode=function(m){if(!this.canInsert()){return}var l=this.getButtonGroup();var i=document.getElementPoSi(m);l.getAdditionalOptionsWindow().setOptionList(e);l.getAdditionalOptionsWindow().enableOptionList(true,i)}}function BBCodeListButton(a){this.constructor(a);this.insertCode=function(f){if(!this.canInsert()){return}var c=this.getButtonGroup();var h=c.getTextArea();var g=h.getSelection();var b="";var e=g.split(/(\n|\r|\r\n)+/);for(var d=0;d<e.length;d++){if(e[d].trim()!=""){b+="\r\n[*]"+e[d]}}if(b.trim()==""){b="\r\n[*]...\r\n[*]...\r\n[*]..."}h.insertTextRange("\r\n[list]"+b+"\r\n[/list]\r\n")}}function BBCodeSingleSmilieButton(a){this.constructor(a);this.insertCode=function(c){if(!this.canInsert()){return}var b=this.getButtonGroup();var e=b.getTextArea();var d=e.getSelection();e.insertTextRange(d+this.getCode()+" ")}}function BBCodeSmilieButton(d,f){this.constructor(d,f);var a=this;var c=document.createElementWithAttributes("div",[["id","additional-smilies"]],null);for(var b=0;b<f.length;b++){var e=document.createElementWithAttributes("a",[["href","#"],["title",f[b].title],["code",f[b].code],["onclick",function(g){a.insertOptionCode(this);return false}]],c);e.appendChild(f[b].label)}this.insertOptionCode=function(i){if(!this.canInsert()){return}var g=this.getButtonGroup();var j=g.getTextArea();var h=i.code;j.insertTextRange(j.getSelection()+h+" ");g.getAdditionalOptionsWindow().enableOptionList(false)};this.insertCode=function(i){if(!this.canInsert()){return}var h=this.getButtonGroup();var g=document.getElementPoSi(i);h.getAdditionalOptionsWindow().setOptionList(c);h.getAdditionalOptionsWindow().enableOptionList(true,g)}}function BBCodePopUpButton(c,d,b,a){this.constructor(c);b=typeof(b)!="number"?350:b;a=typeof(a)!="number"?350:a;var f=(screen.width-b)/2;var e=(screen.height-a)/4;this.insertCode=function(h){if(!this.canInsert()){return}var g=window.open(d,"MyLittleForum","height="+a+",width="+b+",left="+f+", top="+e+",scrollbars,resizable");window.mlfBBCodeButton=this;g.focus()}}BBCodeLinkButton.prototype=new BBCodeButton;BBCodeSmilieButton.prototype=new BBCodeButton;BBCodeSingleSmilieButton.prototype=new BBCodeButton;BBCodeColorChooserButton.prototype=new BBCodeButton;BBCodeOptionButton.prototype=new BBCodeButton;BBCodeListButton.prototype=new BBCodeButton;BBCodePopUpButton.prototype=new BBCodeButton;BBCodePromtButton.prototype=new BBCodeButton;function ButtonGroup(h){if(!h){return}var m=h.elements.text;if(!m){m=document.createElementWithAttributes("textarea",[["name","text"],["id","text"],["cols",80],["rows",20]],h)}var b=false;var j=[];var o=null;var n=this;h.onsubmit=function(p){var f="";if(h.elements.name_required&&h.elements.name&&h.elements.name.value.trim()==""){f+="- "+lang.error_no_name+"\n"}if(h.elements.subject&&h.elements.subject.value.trim()==""){f+="- "+lang.error_no_subject+"\n"}if(h.elements.text_required&&h.elements.text&&h.elements.text.value.trim()==""){f+="- "+lang.error_no_text+"\n"}if(h.elements.terms_of_use_required&&h.elements.terms_of_use_agree&&h.elements.terms_of_use_agree.checked==false){f+="- "+lang.terms_of_use_error_posting+"\n"}if(f){window.alert(f);return false}if(document.getElementById("throbber-submit")){document.getElementById("throbber-submit").style.visibility="visible"}return true};convertInstructionsToSmilies=function(){if(!document.getElementById("smiley-bar")){return}var f=document.getElementById("smiley-bar");if(document.getElementById("smiley-instructions")){var p=document.getElementById("smiley-instructions").firstChild;var r=null;var q=[];while(p!=null){if(p.nodeName&&p.nodeName.toLowerCase()=="dt"){r={code:p.firstChild.nodeValue,title:p.title,classes:p.className,isSmilie:true,childs:[]}}else{if(r&&p.nodeName&&p.nodeName.toLowerCase()=="dd"){r.label=p.firstChild;if(r.classes.search(/default/)!=-1){g(r,f)}else{q.push(r)}r=null}}p=p.nextSibling}if(q&&q.length>0){r={code:"",title:lang.more_smilies_title,label:lang.more_smilies_label,classes:"more-smilies",isSmilie:true,childs:q};g(r,f)}}};var i=function(){if(!document.getElementById("bbcode-bar")){return}var f=document.getElementById("bbcode-bar");if(document.getElementById("bbcode-instructions")){var p=document.getElementById("bbcode-instructions").firstChild;var r=null;while(p!=null){if(p.nodeName&&p.nodeName.toLowerCase()=="dt"){if(r){g(r,f)}r={code:p.id,label:p.title,title:p.firstChild.nodeValue,classes:p.className,childs:[]}}else{if(r&&p.nodeName&&p.nodeName.toLowerCase()=="dd"){var q={attribute:p.id,label:p.title};r.childs.push(q)}}p=p.nextSibling}if(r){g(r,f)}}};var k=function(q,p){p=p||false;if(q instanceof BBCodeButton){q.addButtonGroup(n);if(p||!b){j[q.getCode()]=q}else{if(j[q.getCode()]){var s=j[q.getCode()].getHTMLElement();var f=q.getHTMLElement();q.setHTMLElement(s);f.parentNode.removeChild(f);j[q.getCode()]=q}else{if(!p&&b){var r=q.getHTMLElement();r.parentNode.removeChild(r)}}}}};var g=function(s,q){var r=[["className",s.classes],["name",s.code],["type","button"],["title",s.title]];var t=s.code.trim()==""?"bbcodebutton":"bbcodebutton-"+s.code;if(s.isSmilie){r.push(["isSmilie",s.isSmilie])}else{r.push(["id",t])}var f=document.createElementWithAttributes("button",r,q);var p=document.createElement("span");if(typeof s.label=="string"){p.appendChild(document.createTextNode(s.label))}else{p.appendChild(s.label)}f.appendChild(p);k(l(f,s.childs))};var l=function(p,q){var f=null;switch(p.name.toLowerCase()){case"link":f=new BBCodeLinkButton(p);break;case"img":if(q&&q.length>1){f=new BBCodeOptionButton(p,q,lang.bbcode_image_url,"http://")}else{f=new BBCodePromtButton(p,lang.bbcode_image_url,"http://")}break;case"color":f=new BBCodeColorChooserButton(p);break;case"list":f=new BBCodeListButton(p);break;case"flash":f=new BBCodePopUpButton(p,"index.php?mode=insert_flash",settings.flash_popup_width,settings.flash_popup_height);break;case"upload":f=new BBCodePopUpButton(p,"index.php?mode=upload_image",settings.upload_popup_width,settings.upload_popup_height);break;case"tex":f=new BBCodePromtButton(p,lang.bbcode_tex_code);break;default:if(p.isSmilie&&q&&q.length>1){f=new BBCodeSmilieButton(p,q)}else{if(p.isSmilie){f=new BBCodeSingleSmilieButton(p)}else{if(q&&q.length>1){f=new BBCodeOptionButton(p,q)}else{f=new BBCodeButton(p)}}}break}return f};var a=function(){var f=document.createElementWithAttributes("div",[["id","bbcode-options"]],document.body);var p=document.createElementWithAttributes("div",[],f);f.style.display="none";f.style.position="absolute";var r=null;f.onmouseover=function(s){if(r){window.clearTimeout(r)}};f.onmouseout=function(u){u=u||window.event;var s=u.relatedTarget||u.toElement||false;var t=this;if(!this.contains(s)){r=window.setTimeout(function(){t.enableOptionList(false)},125)}return false};f.setOptionList=function(s){if(!p.firstChild){p.appendChild(s)}else{p.replaceChild(s,p.firstChild)}};f.enableOptionList=function(s,t){if(t){this.style.left=t.left+"px";this.style.top=t.top+"px"}this.style.display=s?"":"none"};var q=window.document.onmousedown;window.document.onkeypress=function(t){var s=document.getKeyCode(t);if(s==27){n.enableOptionList(false)}if(typeof q=="function"){q(t)}};return f};var e=function(p){p=p||false;b=false;var r=p?"smiley-bar":"bbcode-bar";if(!document.getElementById(r)){return}var q=document.getElementById(r).getElementsByTagName("button");if(q&&q.length>0){for(var f=0;f<q.length;f++){b=true;q[f].isSmilie=p;k(l(q[f],null),true)}}};var d=function(){m.quote="";if(document.getElementById("quote")&&document.getElementById("quote").value=="true"){m.quote=m.value;m.value=""}m.getQuote=function(){return m.quote.trim()};if(m.getQuote()!=""&&document.getElementById("message")){var r=document.getElementById("message").getElementsByTagName("label");var f=null;for(var p=0;p<r.length;p++){if(r[p].className.search(/textarea/)!=-1){f=r[p];break}}if(f){f.appendChild(document.createTextNode(String.fromCharCode(160)));var q=document.createElementWithAttributes("a",[["onclick",function(s){m.value=m.getQuote()+"\r\n\r\n"+m.value;this.style.display="none";m.focus();return false}],["id","insert-quote"],["href",window.location.href],["title",lang.quote_title]],f);q.appendChild(document.createTextNode(lang.quote_label))}}m.getSelection=function(){this.focus();if(typeof this.selectionStart=="number"&&typeof this.selectionEnd=="number"){return this.value.substring(this.selectionStart,this.selectionEnd)}else{if(document.selection&&document.selection.createRange){return document.selection.createRange().text}else{return""}}};m.insertTextRange=function(t){this.focus();if(typeof this.selectionStart!="undefined"){var w=this.scrollTop;var v=this.value.substring(0,this.selectionStart);var u=t;var s=this.value.substring(this.selectionEnd,this.textLength);this.value=v+t+s;this.selectionStart=v.length;this.selectionEnd=v.length+t.length;this.scrollTop=w;this.focus()}else{if(document.selection&&document.selection.createRange){var x=document.selection.createRange();x.text=t;x.select()}else{this.value+=t}}}};this.getTextArea=function(){return m};this.getAdditionalOptionsWindow=function(){return o};var c=function(){var f=null;if(!(f=document.getElementById("delete_cookie"))){return}var p=document.getFirstChildByElement(f,"a");p.onclick=function(q){document.cookie=settings.session_prefix+"userdata=; expires=Thu, 01-Jan-70 00:00:01 GMT;";f.innerHTML="";if(h.elements.setcookie){h.elements.setcookie.checked=false}return false}};(function(){if(document.getElementById("bbcode-instructions")){document.getElementById("bbcode-instructions").style.display="none"}if(document.getElementById("smiley-instructions")){document.getElementById("smiley-instructions").style.display="none"}o=a();d();e(false);i();e(true);convertInstructionsToSmilies();c()}())}window.ready.push(function(){if(typeof settings=="object"&&typeof lang=="object"){new ButtonGroup(document.getElementById("postingform"))}}); |