//
// UBB-Code Funktionen
//


ubbtags = new Array();

// Normale UBB Tags	
ubbtags["bold"]			= new Array( "[b]",			"[/b]",			"bold" );
ubbtags["italic"]		= new Array( "[i]",			"[/i]",			"italic" );
ubbtags["underline"]	= new Array( "[u]",			"[/u]",			"underline" );
ubbtags["strike"]		= new Array( "[s]",			"[/s]",			"strike" );
ubbtags["url"]			= new Array( "[url]",		"[/url]",		"url" );
ubbtags["urlx"]			= new Array( "[url=%s]",	"[/url]",		"urlx" );
ubbtags["email"]		= new Array( "[email]",		"[/email]",		"email" );
ubbtags["center"]		= new Array( "[center]",	"[/center]",	"center" );
ubbtags["user"]			= new Array( "[user]",		"[/user]",		"user" );
ubbtags["code"]			= new Array( "[code]",		"[/code]",		"code" );
ubbtags["left"]			= new Array( "[left]",		"[/left]",		"left" );
ubbtags["right"]		= new Array( "[right]",		"[/right]",		"right" );
ubbtags["image"]		= new Array( "[img]",		"[/img]", 		"image" );
ubbtags["spoiler"]		= new Array( "[spoiler]",	"[/spoiler]", 	"spoiler" );
ubbtags["color"]		= new Array( "[color=%s]",	"[/color]",		"color" );
ubbtags["font"]			= new Array( "[font=%s]",	"[/font]",		"font" );
ubbtags["size"]			= new Array( "[size=%s]",	"[/size]",		"size" );
ubbtags["quote"]		= new Array( "[quote]\n",	"\n[/quote]\n",	"quote" );
ubbtags["listo"]		= new Array( "[list=1]\n",	"\n[/list]\n", 	"listo" );
ubbtags["listu"]		= new Array( "[list]\n",	"\n[/list]\n", 	"listu" );

// HLP UBB Tags	
ubbtags["hlpscreen"]	= new Array( "[screen]",	"[/screen] ", 	"hlpscreen" );
ubbtags["hlpnews"]		= new Array( "[news]",		"[/news]", 		"hlpnews" );
ubbtags["hlparticle"]	= new Array( "[article]",	"[/article]", 	"hlparticle" );
ubbtags["hlpfile"]		= new Array( "[file]",		"[/file]", 		"hlpfile" );
ubbtags["hlpmod"]		= new Array( "[mod]",		"[/mod]", 		"hlpmod" );

// Script UBB Tags
ubbtags["article_split"]	= new Array( "[article:split]",	"", 	"article_split");

ubbopentags	= new Array();	// Geoeffnete Tags
ubbcode		= new Array();	// Aktive UBB-Tags



// Normale UBB Funktionen

function ubb_insert_bold(textbox)
{
	ubb_insert(textbox, "bold");
}

function ubb_insert_italic(textbox)
{
	ubb_insert(textbox, "italic");
}

function ubb_insert_underline(textbox)
{
	ubb_insert(textbox, "underline");
}

function ubb_insert_strike(textbox)
{
	ubb_insert(textbox, "strike");
}

function ubb_insert_url(textbox)
{
	var url = prompt("Bitte eine URL eingeben:", "");

	if(url)
	{
		var title = prompt("Bitte einen Titel eingeben:", getSelectedText(textbox));

		if(title)
		{
			ubb_insertx(textbox, "urlx", title, url);
		}
		else
		{
			ubb_insertx(textbox, "url", url);
		}
	}
}

function ubb_insert_email(textbox)
{
	if(getSelectedText(textbox) == "")
	{
		var email = prompt("Bitte eine Email-Adresse eingeben:", "");

		if(email)
		{
			ubb_insertx(textbox, "email", email);
		}
	}
	else
	{
		ubb_insert(textbox, "email");
	}
}

function ubb_insert_user(textbox)
{
	if(getSelectedText(textbox) == "")
	{
		var user = prompt("Bitte eine User-ID eingeben:", "");

		if(user)
		{
			ubb_insertx(textbox, "user", user);
		}
	}
	else
	{
		ubb_insert(textbox, "user");
	}
}

function ubb_insert_color(textbox, color)
{
	if(color)
	{
		ubb_insert(textbox, "color", color);
	}	
}

function ubb_insert_font(textbox, font)
{
	if(font)
	{
		ubb_insert(textbox, "font", font);
	}	
}

function ubb_insert_size(textbox, size)
{
	if(size)
	{
		ubb_insert(textbox, "size", size);
	}	
}

function ubb_insert_spoiler(textbox)
{
	ubb_insert(textbox, "spoiler");
}

function ubb_insert_code(textbox)
{
	ubb_insert(textbox, "code");
}

function ubb_insert_center(textbox)
{
	ubb_insert(textbox, "center");
}

function ubb_insert_left(textbox)
{
	ubb_insert(textbox, "left");
}

function ubb_insert_right(textbox)
{
	ubb_insert(textbox, "right");
}

function ubb_insert_quote(textbox)
{
	ubb_insert(textbox, "quote");
}

function ubb_insert_image(textbox)
{
	ubb_insert(textbox, "image");
}

function ubb_insert_listo(textbox)
{
	ubb_insert(textbox, "listo");
}

function ubb_insert_listu(textbox)
{
	ubb_insert(textbox, "listu");
}

function ubb_insert_articlesplit(textbox)
{
	ubb_insert(textbox, "article_split");
}


// HLPortal UBB Funktionen

function ubb_insert_hlpscreen(textbox)
{
	if(getSelectedText(textbox) == "")
	{
		var id = prompt("Bitte eine Bild-ID eingeben:", "");

		if(id)
		{
			ubb_insertx(textbox, "hlpscreen", id);
		}
	}
	else
	{
		ubb_insert(textbox, "hlpscreen");
	}
}

function ubb_insert_hlpnews(textbox)
{
	if(getSelectedText(textbox) == "")
	{
		var id = prompt("Bitte eine News-ID eingeben:", "");

		if(id)
		{
			ubb_insertx(textbox, "hlpnews", id);
		}
	}
	else
	{
		ubb_insert(textbox, "hlpnews");
	}
}

function ubb_insert_hlparticle(textbox)
{
	if(getSelectedText(textbox) == "")
	{
		var id = prompt("Bitte eine Artikel-ID eingeben:", "");

		if(id)
		{
			ubb_insertx(textbox, "hlparticle", id);
		}
	}
	else
	{
		ubb_insert(textbox, "hlparticle");
	}
}

function ubb_insert_hlpfile(textbox)
{
	if(getSelectedText(textbox) == "")
	{
		var id = prompt("Bitte eine File-ID eingeben:", "");

		if(id)
		{
			ubb_insertx(textbox, "hlpfile", id);
		}
	}
	else
	{
		ubb_insert(textbox, "hlpfile");
	}
}

function ubb_insert_hlpmod(textbox)
{
	if(getSelectedText(textbox) == "")
	{
		var id = prompt("Bitte eine Mod-ID eingeben:", "");

		if(id)
		{
			ubb_insertx(textbox, "hlpmod", id);
		}
	}
	else
	{
		ubb_insert(textbox, "hlpmod");
	}
}


// Einfuege Funktion

function ubb_insert(textbox, tag, extended)
{
	donotinsert = false;
	theSelection = false;
	ubblast = 0;

	if(!extended)
	{
		extended = "";
	}

	if(navigator.appName == "Netscape" && textbox.textLength >= 0)
	{
		if(textbox.selectionStart != textbox.selectionEnd)
		{
			selected = textbox.value.substring(textbox.selectionStart, textbox.selectionEnd);

			if(selected.indexOf(ubbtags[tag][0]) == -1 && selected.indexOf(ubbtags[tag][1]) == -1)
			{
				str = ubbtags[tag][0].replace(/%s/, extended) + selected + ubbtags[tag][1];
				textbox.focus();

				start = textbox.selectionStart;
				end = textbox.textLength;

				endtext = textbox.value.substring(textbox.selectionEnd, end);
				starttext = textbox.value.substring(0, start);

				textbox.value = starttext + str + endtext;

				textbox.selectionStart = start;
				textbox.selectionEnd = start + str.length;
			}

			textbox.focus();

			return;
		}
	}
	else if((clientVer >= 4) && is_ie && is_win)
	{
		if(textbox.isTextEdit)
		{
			textbox.focus();

			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;

			if((sel.type == "Text") && rng != null)
			{
				if(rng.text.indexOf(ubbtags[tag][0]) == -1 && rng.text.indexOf(ubbtags[tag][1]) == -1)
				{
				
					rng.text = ubbtags[tag][0].replace(/%s/, extended) + rng.text + ubbtags[tag][1];
				}

				textbox.focus();

				return;
			}

		}

	}

	for(i=0; i < ubbcode[textbox.name].length; i++)
	{
		if(ubbcode[textbox.name][i] == tag)
		{
			ubblast = i;
			donotinsert = true;
		}
	}
	
	if(is_ie)
	{
		textbox.focus();
		var sel = document.selection;
		var rng = sel.createRange();
		rng.colapse;
		
		if(textbox.createTextRange)
		{
			textbox.caretPos = rng.duplicate();
		}
	}

	if(donotinsert)
	{
		while(ubbcode[textbox.name][ubblast])
		{
			array_pop(ubbcode[textbox.name]);

			if(textbox.createTextRange && textbox.caretPos)
			{
				var caretPos = textbox.caretPos;
				caretPos.text = ubbtags[tag][1];
			}
			else if(navigator.appName == "Netscape")
			{
				textbox.focus();
	
				start = textbox.selectionStart;
				end = textbox.textLength;
	
				endtext = textbox.value.substring(textbox.selectionEnd, end);
				starttext = textbox.value.substring(0, start);
				
				str = ubbtags[tag][1];
	
				textbox.value = starttext + str + endtext;
	
				textbox.selectionStart = start + str.length;
				textbox.selectionEnd = start + str.length;
			}
			else
			{
				textbox.value += ubbtags[tag][1];
			}

			ubbopentags[textbox.name][tag] = false;
		}

		textbox.focus();

		return;
	}
	else
	{
		
		if(textbox.createTextRange && textbox.caretPos)
		{
			var caretPos = textbox.caretPos;
			caretPos.text = ubbtags[tag][0].replace(/%s/, extended);
		}
		else if(navigator.appName == "Netscape")
		{
			textbox.focus();

			start = textbox.selectionStart;
			end = textbox.textLength;

			endtext = textbox.value.substring(textbox.selectionEnd, end);
			starttext = textbox.value.substring(0, start);
			
			str = ubbtags[tag][0].replace(/%s/, extended);

			textbox.value = starttext + str + endtext;

			textbox.selectionStart = start + str.length;
			textbox.selectionEnd = start + str.length;
		}
		else
		{
			textbox.value += ubbtags[tag][0].replace(/%s/, extended);
		}

		array_push(ubbcode[textbox.name], tag);

		ubbopentags[textbox.name][tag] = true;

		textbox.focus();

		return;
	}

	storeCaret(textbox);

}


// Erweiterte EinfuegeFunktion

function ubb_insertx(textbox, tag, content, extended)
{
	if(!extended)
	{
		extended = "";
	}

	if(navigator.appName == "Netscape" &&  textbox.textLength >= 0)
	{
		if(textbox.selectionStart != textbox.selectionEnd)
		{
			selected = textbox.value.substring(textbox.selectionStart, textbox.selectionEnd);

			if(selected.indexOf(ubbtags[tag][0]) == -1 && selected.indexOf(ubbtags[tag][1]) == -1)
			{
				str = ubbtags[tag][0].replace(/%s/, extended) + content + ubbtags[tag][1];
				textbox.focus();

				start = textbox.selectionStart;
				end = textbox.textLength;

				endtext = textbox.value.substring(textbox.selectionEnd, end);
				starttext = textbox.value.substring(0, start);

				textbox.value = starttext + str + endtext;

				textbox.selectionStart = start;
				textbox.selectionEnd = start + str.length;
			}

		}
		else if(textbox.selectionStart)
		{
			textbox.focus();

			start = textbox.selectionStart;
			end = textbox.textLength;

			endtext = textbox.value.substring(textbox.selectionEnd, end);
			starttext = textbox.value.substring(0, start);
			
			str = ubbtags[tag][0].replace(/%s/, extended) + content + ubbtags[tag][1];

			textbox.value = starttext + str + endtext;

			textbox.selectionStart = start + str.length;
			textbox.selectionEnd = start + str.length;
		}
		else
		{
			textbox.value += ubbtags[tag][0].replace(/%s/, extended) + content + ubbtags[tag][1];
		}

		textbox.focus();

		return;
	}
	else if((clientVer >= 4) && is_ie && is_win)
	{
		if(textbox.isTextEdit)
		{
			textbox.focus();

			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;

			if((sel.type == "Text") && rng != null)
			{
				if(rng.text.indexOf(ubbtags[tag][0]) == -1 && rng.text.indexOf(ubbtags[tag][1]) == -1)
				{
					rng.text = ubbtags[tag][0].replace(/%s/, extended) + content + ubbtags[tag][1];
				}
			}
			else
			{
				textbox.value += ubbtags[tag][0].replace(/%s/, extended) + content + ubbtags[tag][1];
			}

		}

		textbox.focus();

		return;
	}
	else
	{
		textbox.value += ubbtags[tag][0].replace(/%s/, extended) + content + ubbtags[tag][1];
		textbox.focus();

		return;
	}
}


// Textbox als UBB-faehige Box registrieren

function ubb_register_textbox(name)
{
	ubbopentags[name] = new Array();

	for(i=0; i < ubbtags.length; i++)
	{
		ubbopentags[name][ubbtags[i][2]] = false;
	}

	ubbcode[name] = new Array();
}
