/***************************************************************************
*   copyright            : (C) 2001,2002 Advanced Internet Designs Inc.
*   email                : forum@prohost.org
*
*   $Id: lib.js,v 1.5 2002/03/01 20:14:27 hackie Exp $
****************************************************************************
          
****************************************************************************
*
*	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 5") > -1 || navigator.userAgent.indexOf("Opera/5") > -1 || navigator.userAgent.indexOf("Opera 6") > -1 || navigator.userAgent.indexOf("Opera/6") > -1) ? 1 : 0;

/* edit box stuff */
function insertTag(obj, stag, etag)
{

	if ( navigator.userAgent.indexOf("MSIE") > -1 && !OPERA ) {
		insertTagIE(obj, stag, etag);
	}
	else {
		insertTagNS(obj, stag, etag);	
	}
}

function insertTagNS(obj, stag, etag)
{
	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 = "resizable=1,scrollbars=1,width="+width+",height="+height+",left="+xpos+",top="+ypos+"position:absolute";
	window.open(url,winName,options);
}

/* help layer stuff */
function moveLayer(layer,x,y)
{
	if (DOM) {
		document.getElementById(layer).style.left = x;
		document.getElementById(layer).style.top = y;
	} else if (NS4) {
		document.layers[layer].left = x;
		document.layers[layer].top = y;
	} else {
		document.all[layer].style.pixelLeft = x;
		document.all[layer].style.pixelTop = y;
	}
}

function layerVis(layer,on)
{
	if (on) {
		if (DOM) {
			document.getElementById(layer).style.visibility = "visible";
		} else if (NS4) {
			document.layers[layer].visibility = "show";
		} else {
			document.all[layer].style.visibility = "visible";
		}
	} else {
		if (DOM) {
			document.getElementById(layer).style.visibility = "hidden";
		} else if (NS4) {
			document.layers[layer].visibility = "hide";
		} else {
			document.all[layer].style.visibility = "hidden";
		}
	}
}

function showHelp()
{
var argv=showHelp.arguments; 
var argc=showHelp.arguments.length; 
	
	if( JS_HELPOFF ) return;
	
	elName = argv[0];
	if ( argc > 1 )
		anc_name = argv[1];
	else
		anc_name = argv[0];
	
    	hideHelpLayers('');
	if( DOM ) {
		var a = document.getElementById(anc_name+'_anc');
		var x = a.offsetWidth+a.offsetLeft;
		var y = a.offsetHeight+a.offsetTop;
		
		while( (a=a.offsetParent) ) {
			x += a.offsetLeft;
			y += a.offsetTop;
		}
	}
	else if( NS4 ) {
		var x = document[anc_name+'_anc'].x+document[anc_name+'_anc'].width;
		var y = document[anc_name+'_anc'].y+document[anc_name+'_anc'].height;
	}
	
	moveLayer('fhelp_'+elName+'_ly', x, y);
	layerVis('fhelp_'+elName+'_ly', true);
}

function hideHelpLayers(evnt)
{
	if( DOM ) {
		divObjs = document.getElementsByTagName('DIV');
		for( i=0; i<divObjs.length; i++ ) {
			if( divObjs[i].id ) {
				var a =  divObjs[i].id;
				if( a.match('^fhelp_.*_ly$') ) { 
					layerVis(divObjs[i].id, false);
				}	
			}
		}
	}
	else if( NS4 ) {
		for( i=0; i<document.layers.length; i++ ) {
			layerVis(document.layers[i].id, false);
		}
	}	
}

function help_off(S,RND)
{
	document.HELPOFF.src = 'ttips.php?S='+S+'&'+RND;
	hideHelpLayers('');
	JS_HELPOFF = true;
}

if( NS4 ) {
	document.captureEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP);
	document.onmousedown = hideHelpLayers;
}
else {
	document.onclick = hideHelpLayers;
}