diff options
Diffstat (limited to 'forum')
| -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; +	} +}  | 
