function insertBBCode(BBstart, BBend, BBmessage, BBId)
{
	if (!BBId) BBId = 'message';
	var content = document.getElementById(BBId);

	if (!content.setSelectionRange)
	{
		content.focus();
		range = document.selection.createRange();
		if (range.parentElement() != content) { return false; }
		var orig = content.value.replace(/rn/g, "n");
		var selection = range.text;

		if ((BBstart == '[uordlist]') || (BBstart == '[ordlist]'))
		{
			selection = '[li]' + selection;
			selection = selection.replace(new RegExp("\\n(.+?)", "g"), "\n[li]$1");
		}

		if (selection.length <= 0) { var insertText = BBstart + BBmessage + BBend; range.text = insertText; insertLength = BBmessage.length; }
		else { var insertText = BBstart + selection + BBend; range.text = insertText; insertLength = selection.length; }
		var actual = tmp = content.value.replace(/rn/g, "n");
		for(var diff = 0; diff < orig.length; diff++) { if(orig.charAt(diff) != actual.charAt(diff)) break; }
		for (var index = 0, pos = 0; tmp.match(insertText) && (tmp = tmp.replace(insertText, "")) && index <= diff; index = pos + insertText.length) { pos = actual.indexOf(insertText, index); }
		range.moveStart("character", pos-BBend.length-insertLength);
		range.moveEnd("character", pos-BBend.length);
		range.select();
	}
	else
	{
		var preselection = content.value.substring(0, content.selectionStart);
		var selection = content.value.substring(content.selectionStart, content.selectionEnd);
		var postselection = content.value.substring(content.selectionEnd, content.value.length);

		if ((BBstart == '[uordlist]') || (BBstart == '[ordlist]'))
		{
			selection = '[li]' + selection;
			selection = selection.replace(new RegExp("\\n(.+?)", "g"), "\n[li]$1");
		}

		if (content.value == preselection + postselection)
		{
			pos = content.selectionStart + BBstart.length;
			pos2 = content.selectionStart + BBstart.length + BBmessage.length;
			content.value = preselection + BBstart + BBmessage + BBend + postselection;
		}
		else
		{
			pos = content.selectionStart + BBstart.length;
			pos2 = content.selectionStart + BBstart.length + selection.length;
			content.value = preselection + BBstart + selection + BBend + postselection;
		}
		content.setSelectionRange(pos, pos2);
	}
	content.focus();
}

function divFontSize(divId, changeValue)
{
	cfontval = 0;
	c = document.cookie.split(';');
	for (i=0; i<c.length; i++) {
		cc = c[i];
		while (cc.charAt(0) == ' ') cc = cc.substring(1, cc.length);
		if (cc.indexOf('fontSize=') == 0) cfontval = cc.substring(9, cc.length);
	}
	divArea = document.getElementById(divId);
	if (cfontval>0) fontval = parseInt(cfontval) + changeValue;
	else fontval = parseInt(divArea.style.fontSize) + changeValue;
	if (fontval < 8) fontval = 8;
	if (fontval > 22) fontval = 22;
	divArea.style.fontSize = fontval+'px';
	fonttags=divArea.getElementsByTagName('font');
	for(i=0; i<fonttags.length; i++) {
		tagsize = fonttags[i].size;
		if (tagsize > 0) { if (tagsize > 6) tagsize = 6; tagval = (tagsize * 2) - 4 + fontval; fonttags[i].style.fontSize=tagval+'px'; }
	}
	divtags = divArea.getElementsByTagName('div');
	for(i=0; i<divtags.length; i++) { divtags[i].style.fontSize=fontval+'px'; }
	document.cookie = "fontSize="+fontval;
}

function requestXML(url, fcall, param)
{
	var http_request = false;

	if (window.XMLHttpRequest)
	{
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) { http_request.overrideMimeType('text/html'); }
	}
	else if (window.ActiveXObject)
	{
		try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } }
	}
	if (!http_request) { return false; }
	http_request.onreadystatechange = function() {
		if (http_request.readyState == 4 && http_request.status == 200)
			if (fcall == 'default') auto_symbol(http_request, null, null, null, param);
			else if (fcall == 'super_search') super_search(http_request, null, null, param);
			else if (fcall == 'super_search_fulltext') super_search_fulltext(http_request, null, null, param, null);
			else if (fcall == 'blabber_chat') blabber_chat(http_request, null);
			else if (fcall == 'index_gadgets') index_gadgets(http_request, param, null);
			else if (fcall == 'gainers_losers') gainers_losers(http_request, param, null);
			else if (fcall == 'feedchief_footer') feedchief_footer(http_request, param, null);
			else if (fcall == 'us_news_request') us_news_request(http_request, null);
			else if (fcall == 'marquee_symbol') marquee_symbol(http_request, null, null, param);
			else if (fcall == 'pivots') pivots(http_request, '');
			else if (fcall == 'mark_lists') mark_lists(http_request, param, null, null, null);
	};
	http_request.open('GET', url, true);
	http_request.send(null);
}

function auto_symbol(http_request, template, results, syminput, symwin)
{
	if (typeof http_request == 'string') requestXML('autosymbol.php?t='+template+'&w='+symwin+'&i='+syminput+'&s='+document.getElementById(syminput).value+'&r='+results, template, symwin);
	else
	{
		document.getElementById(symwin).innerHTML = http_request.responseText;
		if (http_request.responseText != '') document.getElementById(symwin).style.display='block';
		else document.getElementById(symwin).style.display = 'none';
	}
}

function super_search(http_request, results, syminput, symwin)
{
	if (typeof http_request == 'string') requestXML('supersearch.php?w='+symwin+'&i='+syminput+'&s='+document.getElementById(syminput).value+'&r='+results, 'super_search', symwin);
	else
	{
		document.getElementById(symwin).innerHTML = http_request.responseText;
		if (http_request.responseText != '') document.getElementById(symwin).style.display='block';
		else document.getElementById(symwin).style.display = 'none';
	}
}

function super_search_fulltext(http_request, tab, results, symwin, syminput)
{
	if (typeof http_request == 'string') requestXML('supersearchft.php?w='+symwin+'&t='+tab+'&s='+document.getElementById(syminput).value+'&r='+results, 'super_search_fulltext', symwin);
	else
	{
		document.getElementById(symwin).innerHTML = http_request.responseText;
		if (http_request.responseText != '') document.getElementById(symwin).style.display='block';
		else document.getElementById(symwin).style.display='none';
	}
}

function blabber_chat(http_request, act)
{
	if (typeof http_request == 'string') requestXML('blabberinit.php?page='+act, 'blabber_chat', null);
	else if (document.getElementById('blabberchat')) document.getElementById('blabberchat').innerHTML = http_request.responseText;
}

function index_gadgets(http_request, idgad, indgad)
{
	if (document.getElementById(idgad).innerHTML == '') {
		if (typeof http_request == 'string') requestXML('indexgadgets.php?gadget='+indgad, 'index_gadgets', idgad);
		else document.getElementById(idgad).innerHTML = http_request.responseText;
	}
}

function gainers_losers(http_request, glt, galo)
{
	if (document.getElementById(glt).innerHTML == '') {
		if (typeof http_request == 'string') requestXML('gainerslosers.php?glp='+galo, 'gainers_losers', glt);
		else document.getElementById(glt).innerHTML = http_request.responseText;
	}
}

function feedchief_footer(http_request, fcd, fcs)
{
	if (document.getElementById(fcd).innerHTML == 'Loading News...') {
		if (typeof http_request == 'string') requestXML('feedchief.php?req=fcf&fcsymbol='+fcs, 'feedchief_footer', fcd);
		else document.getElementById(fcd).innerHTML = http_request.responseText;
	}
}

function us_news_request(http_request, uns)
{
		if (typeof http_request == 'string') requestXML('usnewsf.php?s='+uns, 'us_news_request');
		else document.getElementById('us_news_headlines').innerHTML = document.getElementById('us_news_headlines').innerHTML.replace(/Headline/, 'Headline</td></tr>'+http_request.responseText);
}

function marquee_symbol(http_request, page, symbol, symwin)
{
	if (typeof http_request == 'string') requestXML('marquee_symbol.php?action='+page+'&symbol='+symbol, 'marquee_symbol', symwin);
	else document.getElementById(symwin).innerHTML = http_request.responseText;
}

function pivots(http_request, symbol)
{
	if (typeof http_request == 'string') {
		document.getElementById('pivotr3').value='wait...';
		document.getElementById('pivotr2').value='wait...';
		document.getElementById('pivotr1').value='wait...';
		document.getElementById('pivotp').value='wait...';
		document.getElementById('pivots1').value='wait...';
		document.getElementById('pivots2').value='wait...';
		document.getElementById('pivots3').value='wait...';

		requestXML('pivcalcdata.php?s='+symbol, 'pivots', null);
	}
	else
	{
		eval(http_request.responseText);
	}
}

function hide_super_search_results()
{
	document.getElementById('super_search_sb').style.display='none';
	document.getElementById('super_search_com').style.display='none';
	document.getElementById('super_search_gb').style.display='none';
	document.getElementById('super_search_users').style.display='none';
	document.getElementById('super_search_posts').style.display='none';
	document.getElementById('super_search_info').style.display='none';
	document.getElementById('super_search_news').style.display='none';
	document.getElementById('super_search_mdd').style.display='none';
	document.getElementById('super_search_ext').style.display='none';
}

function mark_lists(http_request, symwin, lst, act, obj, cur)
{
	if (typeof http_request == 'string') requestXML('marklists.php?l='+lst+'&a='+act+'&o='+obj+'&c='+cur, 'mark_lists', symwin);
	else
	{
		document.getElementById(symwin).innerHTML = http_request.responseText;
		if (http_request.responseText != '') document.getElementById(symwin).style.display='block';
		else document.getElementById(symwin).style.display = 'none';
	}
}
