/**************************************************************************
 * TextZaehler                                                            *
 * Zaehlt die Zeichen, die in eine Textarea getippt werden                *
 * PARAMETER:                                                             *
 *   ->this                                                               *
 *   Name des Input-Feldes, in dem die verbleibende Anzahl angezeigt wird *
 *   Wert der maximal moeglichen Zeichen                                  *
 **************************************************************************/
function TextZaehler(fieldObj,countFieldName,maxChars){
  var countField = eval("fieldObj.form."+countFieldName);
  var diff = maxChars - fieldObj.value.length;
  if (diff < 0){
    fieldObj.value = fieldObj.value.substring(0,maxChars);
    diff = maxChars - fieldObj.value.length;
  }
  countField.value = diff;
}

/*************************************************************************
 * TextEnde                                                              *
 * Laesst ab dem anzugebenden Maximalwert keine weitere Eingabe in einer *
 * Textarea zu                                                           *
 * PARAMETER:                                                            *
 *   -> this                                                             *
 *   Wert der maximal moeglichen Zeichen                                 *
 *************************************************************************/
function TextEnde(fieldObj,maxChars){
  var result = true;
  if (fieldObj.value.length >= maxChars) result = false;
  if (window.event) window.event.returnValue = result;
  return result;
}

/**************************************
 * CheckboxSetzen                     *
 * Setzt die Haeckchen einer Checkbox *
 * PARAMETER:                         *
 *   ID des Formulars                 *
 *   ID des Formular-Elements         *
 **************************************/
function CheckboxSetzen(formular, element){
  if(document.forms[formular].elements[element].checked == true) document.forms[formular].elements[element].checked = false
  else document.forms[formular].elements[element].checked = true
}

/***************************************
 * CheckboxenWaehlen                   *
 * Setzt die Haekchen aller Checkboxen *
 * PARAMETER:                          *
 *   ID des Formulars                  *
 *   -> this.checked                   *
 ***************************************/
function CheckboxenWaehlen(formular, status){
  for(i=0; i<document.forms[formular].elements.length; i++) {
    e = document.forms[formular].elements[i];
    if (e.type=='checkbox') e.checked=status;
  }
}

/***********************************************************************
 * promptcode                                                          *
 * Aufforderung, Text einzugeben, mit oeffnendem und schliessendem Tag *
 * Format: [Tag]...[/Tag]                                              *
 * PARAMETER:                                                          *
 *   ID des Formulars                                                  *
 *   ID des Formular-Elements                                          *
 *   Text, der bei der Eingabeaufforderung angezeigt wird              *
 *   Inhalt des BBCode-Tags                                            *
 ***********************************************************************/
function promptcode(formid, elementid, nachricht, taginhalt){
  if (navigator.appName == 'Microsoft Internet Explorer'){
    selected_range = get_selected_range();
    if ((selected_range != null)){
      text = selected_range.text;
      start_tag= "["+taginhalt+"]";
      end_tag = "[/"+taginhalt+"]";
      selected_range.text = start_tag + text + end_tag;
      selected_range.parentElement().focus();
    }
    else{
	  eingabe = prompt(nachricht,"");
      if(eingabe != '') schreibe(formid, elementid, "["+taginhalt+"]"+eingabe+"[/"+taginhalt+"]");
	}
  }
  else{
    eingabe = prompt(nachricht,"");
    if(eingabe != '') schreibe(formid, elementid, "["+taginhalt+"]"+eingabe+"[/"+taginhalt+"]");
  }
}

/***********************************************************************
 * openclosecode                                                       *
 * Aufforderung, Text einzugeben, mit oeffnendem und schliessendem Tag *
 * Format: [Tag=...]...[/Tag]                                          *
 * PARAMETER:                                                          *
 *   ID des Formulars                                                  *
 *   ID des Formular-Elements                                          *
 *   Text, der bei der Eingabeaufforderung angezeigt wird              *
 *   Inhalt des BBCode-Tags                                            *
 *   Default-Wert, wenn kein Text markiert ist                         *
 ***********************************************************************/
function openclosecode(formid, elementid, nachricht, taginhalt, defaultwert){
  eingabe = prompt(nachricht,"");
  if(eingabe != ''){ 
    if (navigator.appName == 'Microsoft Internet Explorer'){
      selected_range = get_selected_range();
      if ((selected_range != null)){
        text = selected_range.text;
        start_tag= "["+taginhalt+"="+eingabe+"]";
        end_tag = "[/"+taginhalt+"]";
        selected_range.text = start_tag + text + end_tag;
        selected_range.parentElement().focus();
      }
      else schreibe(formid, elementid, "["+taginhalt+"="+eingabe+"]"+defaultwert+"[/"+taginhalt+"]");
    }
    else schreibe(formid, elementid, "["+taginhalt+"="+eingabe+"]"+defaultwert+"[/"+taginhalt+"]");
  }
}

/*****************************************************************
 * speicherecpos                                                 *
 * Speichert die aktuelle Position des Cursors in einer Textarea *
 * PARAMETER:                                                    *
 *   ->this                                                      *
 *****************************************************************/
function speicherecpos(textEl) {
  if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}

/*****************************************************************************
 * get_selected_range                                                        *
 * Speichert die Anfangs- und Endeposition der aktuellen Markierung in einer *
 * Textarea                                                                  *
 * PARAMETER:                                                                *
 *   Keine                                                                   *
 *****************************************************************************/
function get_selected_range(){
  selected_range = document.selection.createRange();
  if(selected_range.text != ""){
    return(selected_range);
  }
  else{
    return(null);
  }
}

/****************************************************************************
 * bbcode                                                                   *
 * Fuegt BBCode-Tags in eine Textarea ein. Umschliesst markierten Text bzw. *
 * nutzt einen anzugebenden Defaultwert, wenn nichts markiert wurde         *
 * PARAMETER:                                                               *
 *   ID des Formulars                                                       *
 *   ID des Formular-Elements                                               *
 *   BBCode innerhalb der []-Tags                                           *
 *   Defaultwert innerhalb der oeffnenden und schliessenden Tags            *
 ****************************************************************************/
function bbcode(formid, elementid, bbcode, defaultwert){
  if (navigator.appName == 'Microsoft Internet Explorer'){
    selected_range = get_selected_range();
    if ((selected_range != null)){
      text = selected_range.text;
      start_tag= "["+bbcode+"]";
      end_tag = "[/"+bbcode+"] ";
      selected_range.text = start_tag + text + end_tag;
      selected_range.parentElement().focus();
    }
    else schreibe(formid, elementid, "["+bbcode+"]"+defaultwert+"[/"+bbcode+"]");
  }
  else schreibe(formid, elementid, "["+bbcode+"]"+defaultwert+"[/"+bbcode+"]");
}

/****************************************************************************
 * schreibe                                                                 *
 * Fuegt an der Cursorposition einen anzugebenden Text in eine Textarea ein *
 * PARAMETER:                                                               *
 *   ID des Formulars                                                       *
 *   ID des Formular-Elements                                               *
 *   Einzufuegender Text                                                    *
 ****************************************************************************/
function schreibe(formid, elementid, text) {
  if (document.forms[formid].elements[elementid].createTextRange && document.forms[formid].elements[elementid].caretPos) { 
    var caretPos = document.forms[formid].elements[elementid].caretPos;
    caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
  }
  else document.forms[formid].elements[elementid].value += text;
  document.forms[formid].elements[elementid].focus();
}

/*****************************************
 * schreibecode                          *
 * Schreibt Text in ein Formularfeld     *
 * Parameter:                            *
 *   ID des Formulars                    *
 *   ID des Formular-Elements            *
 *   Inhalt, der geschrieben werden soll *
 *****************************************/
function schreibecode(formid, elementid, TagInhalt){
  if (document.userpass) formid=document.userpass.elements[elementid];
  if (document.mf) formid=document.mf.elements[elementid];
  else formid=document.forms[formid].elements[elementid];
  formid.value+=TagInhalt;
  formid.focus();
}

function selOn(ctrl){
  ctrl.style.backgroundColor = '#999999';
  ctrl.style.cursor = 'hand';
}

function selOff(ctrl){
  ctrl.style.backgroundColor = '#cccccc';
}

function selDown(ctrl){
  ctrl.style.backgroundColor = '#666666';
}

function selUp(ctrl){
  ctrl.style.backgroundColor = '#999999';
}


/************** Fuer den Chat *********************/
function nickvalid() {
   var nick = document.loginform.Nickname.value;
   if(nick.match(/^[A-Za-z0-9\[\]\{\}^\\\|\_\-`]{1,32}$/))
      return true;
   alert('Bitte einen gueltigen Nick eingeben!');
   document.loginform.Nickname.value = nick.replace(/[^A-Za-z0-9\[\]\{\}^\\\|\_\-`]/g, '');
   return false;
}


function Fenster (Adresse, Breite, Hoehe) {
  NeuesFenster = window.open(Adresse, "Popup", "width="+Breite+",height="+Hoehe);
  NeuesFenster.focus();
}