var tags=new Array('b','u','i'); // definiert die erlaubten Tags
var tagstate=new Array(-1,-1,-1); // haelt fest, ob ein Tag gerade geoeffnet oder geschlossen ist
var tagstack=new Array(); // nimmt die geoeffneten Tags auf

function set_tag(tag)
{
	var closetags='';
	// index des tags ermitteln
	index=get_tagindex(tag); // index fuer weitere Aktionen merken
	tagstate[index]*=-1; // Status des uebergebene Tags drehen

	if (tagstate[index]==-1)
	{
		// ein Tag soll geschlossen werden
		// um falsches HTML zu vermeiden -> pruefen, ob der geschlossene Tag auch tatsaechlich vorher geoeffnet wurde
		// oder ob hier ein Wildklicker die korrekte Reihenfolge nicht einhaelt
		// wenn er sie nicht eingehalten hat -> alle vorhergehenden Tags automatisch schliessen
		var	stackindex=tagstack.length-1;
		if (stackindex>0)
		{
			while (stackindex>0 && tagstack[stackindex]!=tag)
			{
				closetags+=close_tag(tagstack[stackindex]);
				tagstate[get_tagindex(tagstack[stackindex])]*=-1; // Status drehen

				delete(tagstack[stackindex]);
				stackindex--;
			}
		}
	}
	else
	{
		tagstack[tagstack.length]=tag; // neuen geoeffneter Tag hinten anfuegen
		document.getElementById(tag).className='tag-on'; // CSS-Klasse aendern
	}

	var txt=document.getElementById('txtmessage');
	txt.value=txt.value+closetags+'['
	if (tagstate[index]==-1)
	{
		txt.value+='/';
		close_tag(tag);
		delete(tagstack[index]);
	}
	txt.value+=tag+']';
	txt.focus();
}

function close_tag(tag)
{
	document.getElementById(tag).className='tag-off';
	return '[/'+tag+']';
}

function get_tagindex(tag)
{
	// Array index des tags ermitteln
	for (i=0;i<tags.length;i++)
	{
		if (tag==tags[i])
		{
			index=i; // index fuer weitere Aktionen merken
		}
	}
	return index;
}

function clear_tags()
{
	// schliesst alle noch offenen BBCode-Tags
	var	stackindex=tagstack.length-1;
	if (stackindex>=0)
	{
		while (stackindex>-1)
		{
			tag=tagstack[stackindex];
			if(tag)
			{
				if (tagstate[get_tagindex(tag)]==1)
				{
					close_tag(tag); // CSS setzen
					tagstate[get_tagindex(tag)]=-1;
					delete(tagstack[stackindex]);
				}
			}
			stackindex--;
		}
	}
	return true;
}

function add_smilie(smilieindex)
{
	var txt=document.getElementById('txtmessage');
	txt.value=txt.value+' [sm'+smilieindex+'] ';
	txt.focus();
	return false;
}

function open_smiliewindow()
{
	smiliewin=window.open("shoutbox/smilies.php", "_blank", "width=800,height=500,left=400,top=200,toolbar=no,resizable=yes,scrollbars=yes");
	smiliewin.focus();
	return false;
}