 // Browserweiche
IE = document.all&&!window.opera;
DOM = document.getElementById&&!IE;

// Variablen für die Mausposition
var mouseX = 0;	// x-Koordinate
var mouseY = 0;	// y-Koordinate

/* Body-Objekt des IE ermitteln (abhängig, ob IE im Quirks- oder Standardmode*/
function getBody(){
  // Entsprechendes Bodyobjekt zurückgeben (CSS1Compat = Standardmode)
  return (window.document.compatMode == "CSS1Compat") ?
          window.document.documentElement : window.document.body || null;
}

var ieBody = null;	// Bodyobjekt

// Funktion zum Initialisierung, die in onload aufgerufen wird
function init(){
	document.onmousemove = getMousePos;	// Mausposition ermitteln

  // Falls es sich um einen IE handelt
	if(IE)
	  ieBody = getBody(); // Bodyobjekt für IE ermitteln
}

// Funktion zum Ermitteln der Mausposition
function getMousePos(ereignis){
	// Aktuelle Mauskoordinaten bei Mausbewegung ermitteln
	mouseX = (IE) ? window.event.clientX : ereignis.pageX;
	mouseY = (IE) ? (window.event.clientY + ieBody.scrollTop) : ereignis.pageY;

  //window.status = "Box-Position: " + mouseX + ", " + mouseY;
}

// Funktion zum Ein- und Ausblenden von Infotexten bei Mouseover
function showInfo(strID, strInfo, boolShow){
  // Falls Browser DOM unterstützt
  if(document.getElementById){
    // Info-Objekt holen
    var objInfo = document.getElementById(strID);

    // Info-Objekt positionieren und einblenden
    objInfo.style.top = eval(mouseY + 5) + "px";
    objInfo.style.left = eval(mouseX + 5) + "px";
    objInfo.innerHTML = strInfo;
    objInfo.style.display = (boolShow == 1) ? "block" : "none";
  	//window.status = "Box-Position: " + objInfo.style.top + ", " + objInfo.style.left;
  }
}

// -------------------------------------------------------------------------------------------------------
// Formatieren von Standardtext (B, U, H3, ...)
function formatText(strTag, strFormName, strAreaName, strAreaNr, strFormat){
	var objForm = document.getElementById(strFormName);
  // ID der Textarea zusammensetzen
  var strArea = strAreaName + strAreaNr;
  // Objekt auf Area
  var objArea = document.getElementById(strArea);

  // Formatstring
  var strInsertFormat = "";

  // Falls ein bestimmtes Format gewünscht wird (Farbe, Schriftart usw.)
  if(strFormat != 0){
  	strInsertFormat = " -"+strFormat+"-";
  }

	// Falls es sich um einen IE handelt
	if (document.selection){
	  // Evtl. markierten Text holen
	  var strText = document.selection.createRange().text;
	  // Fokus auf Textarea
	  objArea.focus();

	  // Falls Text markiert wurde
	  if(strText != ""){
	    // Gesamten Area-Inhalt auswählen
	    var objRange = document.selection.createRange();
	    // Neuen Inhalt generieren
	    objRange.text = "[" + strTag + strInsertFormat + "]"  + strText + "[/"+strTag+"]";
    // Falls kein Text markiert wurde
	  }else{
      // Gesamten Area-Inhalt auswählen
      var objRange = document.selection.createRange();
    	strInput = prompt("Text eingeben:", "");
      // Falls "Abbrechen" gewählt wurde
      if(strInput == null) return;
      // Falls Text eingegeben wurde
      if(strInput){
	      // Neuen Inhalt generieren
	      objRange.text = "[" + strTag + strInsertFormat + "]"  + strInput + "[/"+strTag+"]";
      }else{
	      // Neuen Inhalt generieren
	      objRange.text = "[" + strTag + strInsertFormat + "] [/"+strTag+"]";
      }
	  }  // ENDE - if(strText != "")

  // Falls es sich um eine Mozilla-Engine handelt
  }else if (document.getElementById && !document.all){
    // Textlänge in Area ermitteln
    var selLength = objArea.textLength;
    // Beginn einer eventuellen Markierung ermitteln
    var selStart = objArea.selectionStart;
    // Ende einer eventuellen Markierung ermitteln
    var selEnd = objArea.selectionEnd;

    // Ersten Teil des Strings bis zur Markierunge generieren
    var strStart = (objArea.value).substring(0,selStart);
    // Markierten Text generieren
    var strRange = (objArea.value).substring(selStart, selEnd)
    // Letzen Teil des Strings ab der Markiergung bis zum Schluss generieren
    var strEnd = (objArea.value).substring(selEnd, selLength);

    if(strRange != ""){
    	objArea.value = strStart + "[" + strTag + strInsertFormat + "]" + strRange + "[/"+strTag+"]" + strEnd;
    	return;
    }else{
    	strInput = prompt("Text eingeben:", "");
      // Falls "Abbrechen" gewählt wurde
      if(strInput == null) return;
      // Falls Text eingegeben wurde
      if(strInput){
	        // Neuen Inhalt generieren
	      objArea.value = strStart + "[" + strTag + strInsertFormat + "]"  + strInput + "[/"+strTag+"]" + strEnd;
      }else{
	      // Neuen Inhalt generieren
	      objArea.value = strStart + "[" + strTag + strInsertFormat + "] [/"+strTag+"]" + strEnd;
      }
    }

  // Sonstige Browser
	}else{
    strInput = prompt("Text eingeben:", "");
    // Falls "Abbrechen" gewählt wurde
    if(strInput == null) return;
    // Falls Text eingegeben wurde
    if(strInput){
        // Neuen Inhalt generieren
      objArea.value += "[" + strTag + strInsertFormat + "]"  + strInput + "[/"+strTag+"]";
    }else{
      // Neuen Inhalt generieren
      objArea.value += "[" + strTag + strInsertFormat + "] [/"+strTag+"]";
    }
	}

  // Fokus auf aktuelle Area setzen
  objArea.focus();
}

// -------------------------------------------------------------------------------------------------------
// Formatieren von Links
function formatLink(strTag, strFormName, strAreaName, strAreaNr){
	var objForm = document.getElementById(strFormName);
  // ID der Textarea zusammensetzen
  var strArea = strAreaName + strAreaNr;
  // Objekt auf Area
  var objArea = document.getElementById(strArea);


	// Falls es sich um einen IE handelt
	if (document.selection){
	  // Evtl. markierten Text holen
	  var strText = document.selection.createRange().text;
	  // Fokus auf Textarea
	  objArea.focus();

	  // Falls Text markiert wurde
	  if(strText != ""){
    	// URL abfragen
	    var strLink = prompt("URL eingeben:", "http://");
	    if(!strLink || (strLink == null) || (strLink.toLowerCase()=="http://")) return;
      // Markierter Text wird Linktext
    	strLinkText = strText;
	    // Gesamten Area-Inhalt auswählen
	    var objRange = document.selection.createRange();
	    // Neuen Inhalt generieren
	    objRange.text = "["+strTag+" ="+strLink+"]"  + strLinkText + "[/"+strTag+"]";
    // Falls kein Text markiert wurde
	  }else{
    	// Linktext abfragen
	    var strLinkText = prompt("Linktext eingeben:", "");
	    if(!strLinkText || (strLinkText == null)) return;
    	// URL abfragen
	    var strLink = prompt("URL eingeben:", "http://");
	    if(!strLink || (strLink == null) || (strLink.toLowerCase()=="http://")) return;
      // Gesamten Area-Inhalt auswählen
      var objRange = document.selection.createRange();
	    objRange.text = "["+strTag+" ="+strLink+"]"  + strLinkText + "[/"+strTag+"]";
	  }  // ENDE - if(strText != "")

  // Falls es sich um eine Mozilla-Engine handelt
  }else if (document.getElementById && !document.all){
    // Textlänge in Area ermitteln
    var selLength = objArea.textLength;
    // Beginn einer eventuellen Markierung ermitteln
    var selStart = objArea.selectionStart;
    // Ende einer eventuellen Markierung ermitteln
    var selEnd = objArea.selectionEnd;

    // Ersten Teil des Strings bis zur Markierung generieren
    var strStart = objArea.value.substring(0, selStart);
    // Markierten Text generieren
    var strRange = objArea.value.substring(selStart, selEnd)
    // Letzen Teil des Strings ab der Markiergung bis zum Schluss generieren
    var strEnd = objArea.value.substring(selEnd, selLength);

    if(strRange != ""){
    	// URL abfragen
	    var strLink = prompt("URL eingeben:", "http://");
	    if(!strLink || (strLink == null) || (strLink.toLowerCase()=="http://")) return;
      // Markierter Text wird Linktext
    	strLinkText = strRange;
    	objArea.value = strStart + "["+strTag+" ="+strLink+"]" + strLinkText + "[/"+strTag+"]" + strEnd;
    	return;
    }else{
    	// Linktext abfragen
	    var strLinkText = prompt("Linktext eingeben:", "");
	    if(!strLinkText || (strLinkText == null)) return;
    	// URL abfragen
	    var strLink = prompt("URL eingeben:", "http://");
	    if(!strLink || (strLink == null) || (strLink.toLowerCase()=="http://")) return;
      // Neuen Inhalt generieren
    	objArea.value = strStart + "["+strTag+" ="+strLink+"]" + strLinkText + "[/"+strTag+"]" + strEnd;
    }

  // Sonstige Browser
	}else{
    // Linktext abfragen
    var strLinkText = prompt("Linktext eingeben:", "");
    if(!strLinkText || (strLinkText == null)) return;
    // URL abfragen
    var strLink = prompt("URL eingeben:", "http://");
    if(!strLink || (strLink == null) || (strLink.toLowerCase()=="http://")) return;
    // Neuen Inhalt generieren
    objArea.value += "["+strTag+" ="+strLink+"]"  + strLinkText + "[/"+strTag+"]";
	}

  // Fokus auf aktuelle Area setzen
  objArea.focus();
}

// -------------------------------------------------------------------------------------------------------
// Formatieren von Listen
function formatListe(strTag, strFormName, strAreaName, strAreaNr){
	var objForm = document.getElementById(strFormName);
  // ID der Textarea zusammensetzen
  var strArea = strAreaName + strAreaNr;
  // Objekt auf Area
  var objArea = document.getElementById(strArea);
  // String für Listenpunke
  var strInsertText = "";
  // Begrenzer für Listenpunkte
  var strLiTag = "li";

	// Falls es sich um einen IE handelt
	if (document.selection){
	  // Evtl. markierten Text holen
	  var strText = document.selection.createRange().text;
	  // Fokus auf Textarea
	  objArea.focus();

	  // Falls Text markiert wurde
	  if(strText != ""){
    	return;
    }else{
	    // Linktext abfragen
	    var strListType = prompt("Listentyp angeben:\n(1 - nummerierte Liste, a - alphabetische Liste, leer - Standardliste:", "");

	    // Falls keine der erforderlichen Eingaben erfolgte
	    if((strListType.toLowerCase() != "a")&&(strListType != "1")&&(strListType != "")) return;

	    // Linktext abfragen
	    var strListText = prompt("Listentext eingeben (leer = Ende):", "");
	    if(!strListText || (strListText == null)) return;

	    // Solange Listentexte eingegeben wurden
	    while(strListText && (strListText != null)){
	      // Listenpunkte erweitern
	      strInsertText += "["+strLiTag+"]" + strListText + "[/"+strLiTag+"]\n";
	      // Linktext abfragen
	      var strListText = prompt("Listentext eingeben (leer = Ende):", "");
	    }

	    // Gesamten Area-Inhalt auswählen
	    var objRange = document.selection.createRange();

    	// Falls eine nummerierte oder alphabetische Liste gewünscht ist
	    if((strListType.toLowerCase() == "a") || (strListType == "1")){
	      //objRange.text = "["+strTag+"="+strListType+"]\n"  + strInsertText + "[/"+strTag+"]\n";
        objRange.text = "["+strTag+"_"+strListType+"]\n"  + strInsertText + "[/"+strTag+"_"+strListType+"]\n";
	    }else{
	      objRange.text = "["+strTag+"]\n"  + strInsertText + "[/"+strTag+"]\n";
	    }
    }

  // Falls es sich um eine Mozilla-Engine handelt
  }else if (document.getElementById && !document.all){
    // Textlänge in Area ermitteln
    var selLength = objArea.textLength;
    // Beginn einer eventuellen Markierung ermitteln
    var selStart = objArea.selectionStart;
    // Ende einer eventuellen Markierung ermitteln
    var selEnd = objArea.selectionEnd;

    // Ersten Teil des Strings bis zur Markierunge generieren
    var strStart = (objArea.value).substring(0,selStart);
    // Markierten Text generieren
    var strRange = (objArea.value).substring(selStart, selEnd)
    // Letzen Teil des Strings ab der Markiergung bis zum Schluss generieren
    var strEnd = (objArea.value).substring(selEnd, selLength);

    // Falls Text markiert wurde
    if(strRange != ""){
    	return;
    }else{
	    // Linktext abfragen
	    var strListType = prompt("Listentyp angeben:\n(1 - nummerierte Liste, a - alphabetische Liste, leer - Standardliste:", "");

	    // Falls keine der erforderlichen Eingaben erfolgte
	    if((strListType.toLowerCase() != "a")&&(strListType != "1")&&(strListType != "")) return;

	    // Linktext abfragen
	    var strListText = prompt("Listentext eingeben (leer = Ende):", "");
	    if(!strListText || (strListText == null)) return;
	    // Solange Listentexte eingegeben wurden
	    while(strListText && (strListText != null)){
	      // Listenpunkte erweitern
	      strInsertText += "["+strLiTag+"]" + strListText + "[/"+strLiTag+"]\n";
	      // Linktext abfragen
	      var strListText = prompt("Listentext eingeben (leer = Ende):", "");
	    }

    	// Falls eine nummerierte oder alphabetische Liste gewünscht ist
	    if((strListType.toLowerCase() == "a") || (strListType == "1")){
	      objArea.value = strStart + "["+strTag+"_"+strListType+"]\n"  + strInsertText + "[/"+strTag+"_"+strListType+"]\n" + strEnd;
	    }else{
	      objArea.value = strStart + "["+strTag+"]\n"  + strInsertText + "[/"+strTag+"]\n" + strEnd;
	    }
    }

  // Sonstige Browser
	}else{
    // Linktext abfragen
    var strListType = prompt("Listentyp angeben:\n(1 - nummerierte Liste, a - alphabetische Liste, leer - Standardliste:", "");

    // Falls keine der erforderlichen Eingaben erfolgte
    if((strListType.toLowerCase() != "a")&&(strListType != "1")&&(strListType != "")) return;

    // Linktext abfragen
    var strListText = prompt("Listentext eingeben (leer = Ende):", "");
    if(!strListText || (strListText == null)) return;

    // Solange Listentexte eingegeben wurden
    while(strListText && (strListText != null)){
      // Listenpunkte erweitern
      strInsertText += "["+strLiTag+"]" + strListText + "[/"+strLiTag+"]\n";
      // Linktext abfragen
      var strListText = prompt("Listentext eingeben (leer = Ende):", "");
    }

    // Falls eine nummerierte oder alphabetische Liste gewünscht ist
    if((strListType.toLowerCase() == "a") || (strListType == "1")){
      objArea.value += "["+strTag+"_"+strListType+"]\n"  + strInsertText + "[/"+strTag+"_"+strListType+"]\n";
    }else{
      objArea.value += "["+strTag+"]\n"  + strInsertText + "[/"+strTag+"]\n";
    }
	}

  // Fokus auf aktuelle Area setzen
  objArea.focus();
}

// -------------------------------------------------------------------------------------------------------
// Wiederherstellen des Textflusses
function clearFloat(strTag, strFormName, strAreaName, strAreaNr, strFormat){
	var objForm = document.getElementById(strFormName);
  // ID der Textarea zusammensetzen
  var strArea = strAreaName + strAreaNr;
  // Objekt auf Area
  var objArea = document.getElementById(strArea);

	// Falls es sich um einen IE handelt
	if (document.selection){
	  // Evtl. markierten Text holen
	  var strText = document.selection.createRange().text;
	  // Fokus auf Textarea
	  objArea.focus();

	  // Falls Text markiert wurde
	  if(strText != ""){
	    // Gesamten Area-Inhalt auswählen
	    var objRange = document.selection.createRange();
	    // Neuen Inhalt generieren
	    objRange.text = "[" + strTag + "]";
    // Falls kein Text markiert wurde
	  }else{
	    // Neuen Inhalt generieren
	    objRange.text = "[" + strTag + "]";
	  }  // ENDE - if(strText != "")

  // Falls es sich um eine Mozilla-Engine handelt
  }else if (document.getElementById && !document.all){
    // Textlänge in Area ermitteln
    var selLength = objArea.textLength;
    // Beginn einer eventuellen Markierung ermitteln
    var selStart = objArea.selectionStart;
    // Ende einer eventuellen Markierung ermitteln
    var selEnd = objArea.selectionEnd;

    // Ersten Teil des Strings bis zur Markierunge generieren
    var strStart = (objArea.value).substring(0,selStart);
    // Markierten Text generieren
    var strRange = (objArea.value).substring(selStart, selEnd)
    // Letzen Teil des Strings ab der Markiergung bis zum Schluss generieren
    var strEnd = (objArea.value).substring(selEnd, selLength);

    if(strRange != ""){
    	objArea.value = strStart + "[" + strTag + "]" + strEnd;
    	return;
    }else{
    	objArea.value = strStart + "[" + strTag + "]" + strEnd;
    }

  // Sonstige Browser
	}else{
    strInput = prompt("Text eingeben:", "");
    // Falls "Abbrechen" gewählt wurde
    if(strInput == null) return;
    // Falls Text eingegeben wurde
    if(strInput){
        // Neuen Inhalt generieren
      objArea.value += "[" + strTag + "]";
    }else{
        // Neuen Inhalt generieren
      objArea.value += "[" + strTag + "]";
    }
	}

  // Fokus auf aktuelle Area setzen
  objArea.focus();
}
