/*******************************************************************************
* Datei :           bbcode.js   ***JAVASCRIPT***                               *
*                                                                              *
* Projekt :         NC EveCal                                                  *
* Version :         4.0                                                        *
* Datum :           10.10.2005 (v4.0)                                          *
* Letzte Änderung : 11.02.2006 (v4.0)                                          *
* Autor :           Manuel Rennecke <info@netconcept24.de>                     *
* Herausgeber :     (c) 2001-2006 - Net Concept 24                             *
*                                                                              *
* Javascript für Textwerkzeuge                                                 *
*******************************************************************************/ 

// Browser erkennen
var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);
var is_ie     = ((myAgent.indexOf("msie") != -1) && (myAgent.indexOf("opera") == -1));
var is_win    = ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));

// Schriftformatierung (Schriftart, Größe, Farbe)
function prepareFont(ncForm, ncField, ncValue, ncType) {
 	setFocus(ncForm, ncField);
 
 	if (ncValue != 0) {
   		var selectedText = getSelectedText(ncForm, ncField);
   		var insertText = prompt(font_prompt + " " + ncType, selectedText);
   		if ((insertText != null) && (insertText != ""))
    		addText("[" + ncType + "=" + ncValue + "]" + insertText + "[/" + ncType + "]", ncForm, ncField);
	}
 	setFocus(ncForm, ncField);
}

// Zeichen oder Zeichenkette einfügen
function addCharacter(ncForm, ncField, ncValue) {
 	addText(ncValue, ncForm, ncField);
}

// Code-Tag einfügen
function prepareCode(ncForm, ncField, ncTag, promptText) {
	var selectedText = getSelectedText(ncForm, ncField);
		
	if (promptText == '' || selectedText != '') 
		promptText = selectedText;
		
	inserttext = prompt(((ncTag == "IMG") ? (img_prompt) : (tag_prompt)) + "\n[" + ncTag + "]xxx[/" + ncTag + "]", promptText);
	if ((inserttext != null) && (inserttext != ""))
		addText("[" + ncTag + "]" + inserttext + "[/" + ncTag + "]", ncForm, ncField);
}

// Links, E-Mails
function prepareLink(ncForm, ncField, ncType) {
	var selected = getSelectedText(ncForm, ncField);
 
	var linkText = prompt(link1_prompt, selected);
	var prompttext;
 
	if (ncType == "URL") {
 		prompt_text = link2_prompt;
 		prompt_contents = "http://";
	} else {
		prompt_text = mail_prompt;
		prompt_contents = "";
	}
 
	linkURL = prompt(prompt_text, prompt_contents);
 
	if ((linkURL != null) && (linkURL != "")) {
		var Text = '';
		
		if ((linkText != null) && (linkText != ""))
   			Text = "[" + ncType + "=" + linkURL + "]" + linkText + "[/" + ncType + "]";
   		else
			Text = "[" + ncType + "]" + linkURL + "[/" + ncType + "]";
  		
  		addText(Text, ncForm, ncField);
 	}
}

// Listen
function prepareList(ncForm, ncField) {
 	listType = prompt(list_prompt, "");
 	if ((listType == "a") || (listType == "1")) {
  		listStart = "[list=" + listType + "]\n";
  		listEnd   = "[/list=" + listType + "] ";
 	} else {
  		listStart = "[list]\n";
  		listEnd   = "[/list] ";
 	}
 	
 	listEntry = "initial";
 	while ((listEntry != "") && (listEntry != null)) {
  		listEntry = prompt(item_prompt, "");
  		if ((listEntry != "") && (listEntry != null)) 
			listStart = listStart + "[*]" + listEntry + "\n";
 	}
 	addText(listStart + listEnd, ncForm, ncField);
}

// Text einfügen
function addText(ncTag, ncForm, ncField) {
	var message  = document.forms[ncForm].elements[ncField];
  	var selected = "";
  	
  	if (message.textLength >= 0) { // Mozilla, Firebird, Netscape
		str = ncTag;
		
		message.focus();
		start         = message.selectionStart;
		end           = message.textLength;
		endtext       = message.value.substring(message.selectionEnd, end);
		starttext     = message.value.substring(0, start);
		message.value = starttext + str + endtext;
		message.selectionStart = start;
		message.selectionEnd   = start;
		message.selectionStart = message.selectionStart + str.length;
	} else if ((myVersion >= 4) && is_ie && is_win) { // Internet Explorer
		if (message.isTextEdit) {
			message.focus();
			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;
			if ((sel.type == "Text" || sel.type == "None") && rng != null)
				rng.text = ncTag;
		} else
			message.value += ncTag;
	} else
		message.value += ncTag;

	setFocus(ncForm, ncField);
	return true;
}	


function getSelectedText(ncForm, ncField) {
	var message  = document.forms[ncForm].elements[ncField];
	var selected = '';
	
	if (navigator.appName == "Netscape" &&  message.textLength >= 0 && message.selectionStart != message.selectionEnd) 
  		selected = message.value.substring(message.selectionStart, message.selectionEnd);	
	else if ((myVersion >= 4) && is_ie && is_win) {
		if (message.isTextEdit) { 
			message.focus();
			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;
			
			if ((sel.type == "Text" || sel.type == "None") && rng != null) {
				if (rng.text.length > 0) 
					selected = rng.text;
			}
		}	
	}
  	return selected;
}

function setFocus(ncForm, ncField) {
 	document.forms[ncForm].elements[ncField].focus();
}


