diff options
Diffstat (limited to 'forum/htdocs')
-rw-r--r-- | forum/htdocs/lib.js | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/forum/htdocs/lib.js b/forum/htdocs/lib.js new file mode 100644 index 0000000..5f6b64a --- /dev/null +++ b/forum/htdocs/lib.js @@ -0,0 +1,204 @@ +/*************************************************************************** +* copyright : (C) 2001-2003 Advanced Internet Designs Inc. +* email : forum@prohost.org +* $Id$ +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +***************************************************************************/ + +JS_HELPOFF = false; +/* indentify the browser */ +DOM = (document.getElementById) ? 1 : 0; +NS4 = (document.layers) ? 1 : 0; +IE4 = (document.all) ? 1 : 0; +OPERA = navigator.userAgent.indexOf("Opera") > -1 ? 1 : 0; + +/* edit box stuff */ +function insertTag(obj, stag, etag) +{ + if (navigator.userAgent.indexOf("MSIE") > -1 && !OPERA) { + insertTagIE(obj, stag, etag); + } else if (window.getSelection && navigator.userAgent.indexOf("Safari") == -1) { + insertTagMoz(obj, stag, etag); + } else { + insertTagNS(obj, stag, etag); + } +} + +function insertTagNS(obj, stag, etag) +{ + obj.value = obj.value+stag+etag; +} + +function insertTagMoz(obj, stag, etag) +{ + txt = window.getSelection(); + + if (!txt || txt == '') { + t = document.getElementById('txtb'); + h = document.getElementsByTagName('textarea')[0]; + if (t.selectionStart == t.selectionEnd) { + t.value = t.value.substring(0, t.selectionStart) + stag + etag + t.value.substring(t.selectionEnd, t.value.length); + return; + } + txt = t.value.substring(t.selectionStart, t.selectionEnd); + if (txt) { + t.value = t.value.substring(0, t.selectionStart) + stag + txt + etag + t.value.substring(t.selectionEnd, t.value.length); + return; + } + } + obj.value = obj.value+stag+etag; +} + +function insertTagIE(obj, stag, etag) +{ + r=document.selection.createRange(); + if( document.selection.type == 'Text' && (obj.value.indexOf(r.text) != -1) ) { + a = r.text; + r.text = stag+r.text+etag; + if ( obj.value.indexOf(document.selection.createRange().text) == -1 ) { + document.selection.createRange().text = a; + } + } + else insertAtCaret(obj, stag+etag); +} + +function dialogTag(obj, qst, def, stag, etag) +{ +var q; + q = prompt(qst, def); + if ( !q ) return; + stag = stag.replace(/%s/i, q); + insertTag(obj, stag, etag); +} + +function url_insert() +{ + if ( check_selection() ) + dialogTag(document.post_form.msg_body, 'Location:', 'http://', '[url=%s]', '[/url]'); + else + dialogTag(document.post_form.msg_body, 'Location:', 'http://', '[url]%s[/url]', ''); +} + +function check_selection() +{ +var rn; +var sel; + + if ( document.layers ) return 0; + if ( navigator.userAgent.indexOf("MSIE") < 0 ) return 0; + + r = document.selection.createRange(); + + if ( r.text.length && (document.post_form.msg_body.value.indexOf(r.text) != -1) ) { + a = document.selection.createRange().text; + rn = Math.random(); + r.text = r.text + ' ' + rn; + + if ( document.post_form.msg_body.value.indexOf(rn) != -1 ) { + sel = 1; + } else { + sel = 0; + } + + document.selection.createRange().text = a; + } + + return sel; +} + +function storeCaret(textEl) +{ + if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate(); +} + +function insertAtCaret(textEl, text) +{ + if (textEl.createTextRange && textEl.caretPos) + { + var caretPos = textEl.caretPos; + caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text; + } + else + textEl.value = textEl.value + text; +} + +function email_insert() +{ + if ( check_selection() ) { + dialogTag(document.post_form.msg_body, 'Email:', '', '[url=mailto:%s]', '[/url]'); + } + else + dialogTag(document.post_form.msg_body, 'Email:', '', '[email]%s[/email]', ''); +} + +function image_insert() +{ + dialogTag(document.post_form.msg_body, 'Image URL:', 'http://', '[img]%s[/img]', ''); +} + +function insertParentTagIE(stag, etag) +{ + r=window.opener.document.selection.createRange(); + obj = window.opener.document.post_form.msg_body; + + if( window.opener.document.selection.type == 'Text' && (obj.value.indexOf(r.text) != -1) ) { + a = r.text; + r.text = stag+r.text+etag; + if ( obj.value.indexOf(window.opener.document.selection.createRange().text) == -1 ) { + window.opener.document.selection.createRange().text = a; + } + } + else insertAtCaret(obj, stag+etag); +} + +function insertParentTagNS(stag, etag) +{ + window.opener.document.post_form.msg_body.value = window.opener.document.post_form.msg_body.value + stag + etag; +} + +function insertParentTag(stag, etag) +{ + if ( document.all ) + insertParentTagIE(stag, etag); + else + insertParentTagNS(stag, etag); + +} + +function window_open(url,winName,width,height) +{ + xpos = (screen.width-width)/2; + ypos = (screen.height-height)/2; + options = "scrollbars=1,width="+width+",height="+height+",left="+xpos+",top="+ypos+"position:absolute"; + window.open(url,winName,options); +} + +function layerVis(layer,on) +{ + if (on) { + if (DOM) + document.getElementById(layer).style.visibility = "visible"; + else if (NS4) + document.layers[layer].visibility = "show"; + else if (IE4) + document.all[layer].style.visibility = "visible"; + } else { + if (DOM) + document.getElementById(layer).style.visibility = "hidden"; + else if (NS4) + document.layers[layer].visibility = "hide"; + else if (IE4) + document.all[layer].style.visibility = "hidden"; + } +} + +function fud_msg_focus(mid_hash) +{ + if (!window.location.hash && !OPERA) { + window.location.hash = mid_hash; + } +} |