var uagent=navigator.userAgent.toLowerCase();
var is_safari=((uagent.indexOf('safari')!=-1) || (navigator.vendor=="Apple Computer, Inc."));
var is_opera=(uagent.indexOf('opera')!=-1);
var is_webtv=(uagent.indexOf('webtv')!=-1);
var is_ie=((uagent.indexOf('msie')!=-1) && (!is_opera) && (!is_safari) && (!is_webtv));
var is_win=((uagent.indexOf("win")!=-1) || (uagent.indexOf("16bit")!=-1));
var ua_vers=parseInt(navigator.appVersion);
var tags=new Array(new Array('[b]', '[/b]'), new Array('[i]', '[/i]'), new Array('[u]', '[/u]'));
var tags_buttons=new Array(new Array('b', '/b'), new Array('i', '/i'), new Array('u', '/u'));
var open_tags=new Array(false, false, false);
var ie_range_cache=null;

function quote(txt, author)
{
	s('add_post');
	document.getElementById('add_text').value+='[quote='+author+']'+txt+'[/quote]\n';
	document.getElementById('add_text').focus();
	setToEnd('add_text');
}

function tag(ele, id)
{
	if(open_tags[id])
		open_tags[id]=!wrap_tags(ele, tags[id][1]);
	else
		open_tags[id]=wrap_tags(ele, tags[id][0], tags[id][1]);
	document.getElementById(ele+'_but_'+id).innerHTML=tags_buttons[id][open_tags[id]?1:0];
	return false;
}

function emot(ele, name)
{
	wrap_tags(ele, '{'+name+'}', '');
}

function wrap_tags(ele, opentext, closetext)
{
	var has_closed=false;

	if((ua_vers>=4) && is_ie && is_win)
	{
		if(document.getElementById(ele).isTextEdit)
		{
			document.getElementById(ele).focus();

			var sel=document.selection;

			var rng=ie_range_cache?ie_range_cache:sel.createRange();

			var stored_range=rng.duplicate()
			stored_range.moveToElementText(document.getElementById(ele));
			stored_range.setEndPoint('EndToEnd', rng);

			document.getElementById(ele).selectionStart=stored_range.text.length-rng.text.length;
			document.getElementById(ele).selectionEnd=document.getElementById(ele).selectionStart+rng.text.length;

			rng.colapse;

			if((sel.type=='Text' || sel.type=='None')&&rng!=null)
			{
				if(closetext!='' && rng.text && rng.text.length>0)
					opentext+=rng.text+closetext;
				else
					has_closed=true;

				rng.text=rng.text.charAt(rng.text.length-1)==' '?opentext+' ':opentext;
			}
			else
			{
				document.getElementById(ele).value+=opentext;
				has_closed=true;
			}
		}
		else
		{
			document.getElementById(ele).value+=opentext;
			has_closed=true;
		}

		ie_range_cache=null;

		rng.select();
	}
	else if(document.getElementById(ele).selectionEnd)
	{
		var ss=document.getElementById(ele).selectionStart;
		var st=document.getElementById(ele).scrollTop;
		var es=document.getElementById(ele).selectionEnd;

		if(es<=0)
			es=document.getElementById(ele).textLength;

		var start=(document.getElementById(ele).value).substring(0, ss);
		var middle=(document.getElementById(ele).value).substring(ss, es);
		var end=(document.getElementById(ele).value).substring(es, document.getElementById(ele).textLength);

		if(document.getElementById(ele).selectionEnd-document.getElementById(ele).selectionStart>0)
			middle=opentext+middle+closetext;
		else
		{
			middle=opentext+middle;
			has_closed=true;
		}

		document.getElementById(ele).value=start+middle+end;

		var cpos=ss+(middle.length);

		document.getElementById(ele).selectionStart=cpos;
		document.getElementById(ele).selectionEnd=cpos;
		document.getElementById(ele).scrollTop=st;
	}
	else
	{
		has_closed=true;
		document.getElementById(ele).value+=opentext;
	}

	document.getElementById(ele).focus();

	return has_closed;
}

function setToEnd(ele)
{
	if(document.getElementById(ele).setSelectionRange)
	{
		document.getElementById(ele).focus();
		document.getElementById(ele).setSelectionRange(document.getElementById(ele).value.length,document.getElementById(ele).value.length);
	}
	else if(document.getElementById(ele).createTextRange)
	{
		var range=document.getElementById(ele).createTextRange();
		range.collapse(true);
		range.moveEnd('character', document.getElementById(ele).value.length);
		range.moveStart('character', document.getElementById(ele).value.length);
		range.select();
	}
}

