/*******************************************************************************
* Datei :           bbcode.js   ***JAVASCRIPT***                               *
*                                                                              *
* Projekt :         NC LinkList                                                *
* Version :         1.2                                                        *
* Datum :           03.04.2005 (v1.2)                                          *
* Autor :           Manuel Rennecke <info@netconcept24.de>                     *
* Herausgeber :     (c) 2003-2005 - Net Concept 24                             *
*                                                                              *
* Textwerkzeug-Funktionen (BB-Code)                                            *
*******************************************************************************/

//**** Text bei der Eingabeaufforderung *****************************
textStandard    = "Bitte geben Sie den gewünschten Text ein:";
textLinkName    = "Bitte geben Sie den Linknamen an (optional).";
textLinkAddress = "Bitte geben Sie die vollständige Adresse des Links an.";
textEmailName   = "Bitte geben Sie die gewünschte Email Adresse ein.";
textListType    = "Für eine numerierte Liste geben Sie eine '1' an. Für eine alphabetische ein 'a'.\nFür eine einfache Punktliste drücken Sie 'OK'.";
textListValues  = "Geben Sie bitte die Listenpunkte ein und drücken Sie anschließend 'OK'.\nAlternativ können Sie 'Abbrechen' wählen, um die Liste direkt fertigzustellen.";
textImgUrl      = "Bitte geben Sie die URL zum gewünschten Bild ein:";

var markedText = "";
selectedText   = "";

//**** Feld auswählen ***********************************************
function setFocus(form, field) {
	document.forms[form].elements[field].focus();
}

//**** Einzelzeichen hinzufügen *************************************
function addCharacter(character, form, field) {
	document.forms[form].elements[field].value += character + " ";
	setFocus(form, field);
}

//**** Textauswahl **************************************************
function readSelection(doit) { 
	markedText = (document.selection) ? document.selection.createRange().text : (document.getSelection ? document.getSelection() : window.getSelection());
	if (doit.createTextRange) 
		doit.caretPos = document.selection.createRange().duplicate();
	return true;
}

//**** Text hinzufügen **********************************************
function addText(newText, form, field) {
	if (markedText != "" && document.forms[form].elements[field].createTextRange && document.forms[form].elements[field].caretPos) {
		var caretPos = document.forms[form].elements[field].caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? newText + ' ' : newText;
	} else
		document.forms[form].elements[field].value += newText;
	setFocus(form, field);
	selectedText = "";
}

//**** Code vorbereiten *********************************************
function prepareCode(form, field, code, output) {
	setFocus(form, field);
	if (code == "IMG") {
		fieldOutput = "http://";
		insertText = prompt(textImgUrl + "\n[" + code + "]Bild-URL[/" + code + "]", fieldOutput);
	} else {
		if (markedText) 
			var fieldOutput = markedText;
		else 
			var fieldOutput = output;
		insertText = prompt(textStandard + "\n[" + code + "]Ihr Text[/" + code + "]", fieldOutput);
	}
	if ((insertText != null) && (insertText != "")) { 
		selectedText = "[" + code + "]" + insertText + "[/" + code + "]";
		addText(selectedText, form, field);
	}
	setFocus(form, field);
}

//**** Farbcode vorbereiten *****************************************
function prepareColor(form, field, code, output) {
	setFocus(form, field);
	if (markedText) 
		var fieldOutput = markedText;
	else 
		var fieldOutput = output;
	insertText = prompt(textStandard + "\n[color=" + code + "]Ihr Text[/color]", fieldOutput);
	if ((insertText != null) && (insertText != "")) { 
		selectedText = "[color=" + code + "]" + insertText + "[/color]";
		addText(selectedText, form, field);
	}
	setFocus(form, field);
}

//**** Link und E-Mail vorbereiten **********************************
function prepareLink(form, field, type) {
	var output;
	var outputValue;
	if (markedText) 
		var fieldOutput = markedText; 
	else 
		var fieldOutput = ""; 
	linkText = prompt(textLinkName, fieldOutput);
	if (type == "URL") {
		output      = textLinkAddress;
		outputValue = "http://";
	} else {
		output      = textEmailName;
		outputValue = "";
	}
	linkUrl = prompt(output, outputValue);
	if ((linkUrl != null) && (linkUrl != "")) {
		if ((linkText != null) && (linkText != "")) {
			selectedText = "[" + type + "=" + linkUrl + "]" + linkText + "[/" + type + "] ";
			addText(selectedText, form, field);
		} else {
			selectedText = "[" + type + "]" + linkUrl + "[/" + type + "] ";
			addText(selectedText, form, field);
		}
	}
	setFocus(form, field);
}

// **** Liste vorbereiten *******************************************
function prepareList(form, field) {
	listType = prompt(textListType, "");
	if ((listType == "a") || (listType == "1")) {
		list    = "[list=" + listType + "]\n";
		listEnd = "[/list=" + listType + "] ";
	} else {
		list    = "[list]\n";
		listEnd = "[/list] ";
	}
	listEntry = "initial";
	while ((listEntry != "") && (listEntry != null)) {
		listEntry = prompt(textListValues, "");
		if ((listEntry != "") && (listEntry != null))
			list += "[*]" + listEntry + "\n";
	}
	selectedText = list + listEnd;
	addText(selectedText, form, field);
}
