// Interface für Formulare.
// Copyright 2004 by Thomas Bowe
// erweitert von Mairu und boehserdavid

//Funktion zum bestimmen der Elementkoordinaten
function getPageCoords (elementId) {
  var element;
  if (document.all) {
    element = document.all[elementId];
  } else if (document.getElementById) {
    element = document.getElementById(elementId);
  }
  if (element) {
    var coords = {x: 0, y: 0};
    do {
      coords.x += element.offsetLeft;
      coords.y += element.offsetTop;
      element = element.offsetParent;
    } while (element)
    return coords;
  }
  else
   return null;
}

// Farbpalette verstecken/anzeigen
function hide_color() {
  if (document.getElementById("colorinput").style.display=="block") {
      document.getElementById("colorinput").style.display="none";
  } else {
      var pos = getPageCoords( "bbcode_color_button" );
      document.getElementById("colorinput").style.top = pos.y - 15 + "px";
      document.getElementById("colorinput").style.left = pos.x - 130 - document.getElementsByTagName('div')[0].offsetLeft + "px";
      document.getElementById("colorinput").style.display= "block";
  }
}

// BB-Code ins Textarea einfügen.
function bbcode_insert(tag,boxtext) {
        var formular = document.forms['form'].elements['txt'];
        formular.focus();

        // Tags Definieren
        var begin_tag = "["+tag+"]";
        var end_tag = "[/"+tag+"]";
        var list_x = '';
        var list_text = '';

        // Für UserAgent IE.
        if(typeof document.selection !='undefined')  {
                 // Einfügen der Tags.
                var range = document.selection.createRange();
                var prompt_box;

                // Box ausgeben mit Anforderung.
                if(tag == 'list') {
                        if(range.text == null || range.text =='') {
                                while ( list_x != null ) {
                                    list_x = prompt (boxtext);
                                    if ( list_x != null ) {
                                              list_text = list_text + "[*]" + list_x + "\n";
                                    }
                                  }

                                if ( list_text != '' ) {
                                    prompt_box = list_text;
                                  }
                        } else {
                                while ( list_x != null ) {
                                    list_x = prompt (boxtext,range.text);
                                    if ( list_x != null ) {
                                              list_text = list_text + "[*]" + list_x + "\n";
                                    }
                                  }

                                if ( list_text != '' ) {
                                    prompt_box = list_text;
                                  }
                        }
                } else {
                        if(range.text == null || range.text =='') {
                                prompt_box = prompt(boxtext,"");
                        } else {
                                prompt_box = prompt(boxtext,range.text);
                        }
                }




                if(prompt_box != null && prompt_box !='') {
                        range.text = begin_tag + prompt_box + end_tag;

                        /* Anpassen der Cursorposition */
                    range = document.selection.createRange();

                        if (prompt_box.length == 0) {
                              range.move('character', -end_tag.length);
                    } else {
                              range.moveStart('character', begin_tag.length + prompt_box.length + end_tag.length);
                    }

                        range.select();
                }
        // Für UserAgents die auf Gecko basieren.
        } else if(typeof formular.selectionStart != 'undefined') {
                 // Einfügen der Tags
                var start = formular.selectionStart;
            var end = formular.selectionEnd;
                 var prompt_box;

                // Box ausgeben mit Anforderung.
                if(tag == 'list') {
                        if(formular.value.substring(start, end) == null || formular.value.substring(start, end) =='') {
                                while ( list_x != null ) {
                                    list_x = prompt (boxtext);
                                    if ( list_x != null ) {
                                              list_text = list_text + "[*]" + list_x + "\n";
                                    }
                                  }

                                if ( list_text != '' ) {
                                    prompt_box = list_text;
                                  }
                        } else {
                                while ( list_x != null ) {
                                    list_x = prompt (boxtext,formular.value.substring(start, end));
                                    if ( list_x != null ) {
                                              list_text = list_text + "[*]" + list_x + "\n";
                                    }
                                  }

                                if ( list_text != '' ) {
                                    prompt_box = list_text;
                                  }
                        }
                } else {
                        if(formular.value.substring(start, end) == null || formular.value.substring(start, end) =='') {
                                prompt_box = prompt(boxtext,"");
                        } else {
                                prompt_box = prompt(boxtext,formular.value.substring(start, end));
                        }
                }

                if(prompt_box != null && prompt_box !='') {
                        if(tag == 'list') {
                                formular.value = formular.value.substr(0, start) + begin_tag + "\n" + prompt_box + end_tag + formular.value.substr(end);
                        } else {
                                formular.value = formular.value.substr(0, start) + begin_tag + prompt_box + end_tag + formular.value.substr(end);
                        }

                        /* Anpassen der Cursorposition */
                    var pos;
                    if (prompt_box.length == 0) {
                              pos = start + begin_tag.length;
                    } else {
                              if(tag == 'list') {
                                        pos = start + begin_tag.length + prompt_box.length + end_tag.length +1;
                                } else {
                                        pos = start + begin_tag.length + prompt_box.length + end_tag.length;
                                }
                    }

                        formular.selectionStart = pos;
                    formular.selectionEnd = pos;
                }
        }
}

// BBCode mit Werte Einfügen.
function bbcode_insert_with_value(tag,boxtext1,boxtext2) {
        var formular = document.forms['form'].elements['txt'];
        formular.focus();
        var default_text;

        // Alternativen Text für die Box ausgeben.
        if(tag == 'url') {
                default_text = "http://";
        } else if(tag == 'size') {
                default_text = "12";
        } else {
                default_text ="";
        }

        // Für UserAgent IE.
        if(typeof document.selection !='undefined') {
                 // Einfügen der Tags mit Wert.
                var range = document.selection.createRange();
                var prompt_text1;
                var prompt_text2;
                var prompt_box;

                // Box ausgeben mit Anforderung.
                if(range.text == null || range.text =='') {
                        prompt_text1 = prompt(boxtext1,"");
                } else {
                        prompt_text1 = prompt(boxtext1,range.text);
                }

                // Ausgabe der 2ten Box.
                prompt_text2 = prompt(boxtext2,default_text);

                // Überprüfen ob prompt_text1 nicht Leer ist. Wenn True dann Format [XXX=XXX]XXX[/XXX]
                if(prompt_text1 != null && prompt_text1 !='') {
                        if(prompt_text2 != null && prompt_text2 !='') {
                                prompt_box = "["+tag+"="+prompt_text2+"]"+prompt_text1+"[/"+tag+"]";
                        }
                // Wenn promptText1 Leer ist dann Format [XXX]XXX[/XXX] (Aber nur bei Gewünschten Tags)
                } else if(tag == 'url' || tag == 'email') {
                        if(prompt_text2 != null && prompt_text2 !='') {
                                prompt_box = "["+tag+"]"+prompt_text2+"[/"+tag+"]";
                        }
                }

                // Wenn insText nicht Leer ist dann Tags Einfügen.
                if(prompt_box != null && prompt_box !='') {
                        range.text = prompt_box;

                        /* Anpassen der Cursorposition */
                    range = document.selection.createRange();

                        if (prompt_box.length == 0) {
                              range.move('character', -tag.length);
                    } else {
                              range.moveStart('character', prompt_box.length);
                    }

                        range.select();
                }
        // Für UserAgents die auf Gecko basieren.
        } else if(typeof formular.selectionStart != 'undefined') {
                 // Einfügen der Tags
                var start = formular.selectionStart;
            var end = formular.selectionEnd;
                var prompt_text1;
                var prompt_text2;
                 var prompt_box;

                // Box ausgeben mit Anforderung.
                if(formular.value.substring(start, end) == null || formular.value.substring(start, end) =='') {
                        prompt_text1 = prompt(boxtext1,"");
                } else {
                        prompt_text1 = prompt(boxtext1,formular.value.substring(start, end));
                }

                // Ausgabe der 2ten Box.
                prompt_text2 = prompt(boxtext2,default_text);

                // Überprüfen ob promptText1 nicht Leer ist. Wenn True dann Format [XXX=XXX]XXX[/XXX]
                if(prompt_text1 != null && prompt_text1 !='') {
                        if(prompt_text2 != null && prompt_text2 !='') {
                                prompt_box = "["+tag+"="+prompt_text2+"]"+prompt_text1+"[/"+tag+"]";
                        }
                // Wenn promptText1 Leer ist dann Format [XXX]XXX[/XXX] (Aber nur bei Gewünschten Tags)
                } else if(tag == 'url' || tag == 'email') {
                        if(prompt_text2 != null && prompt_text2 !='') {
                                prompt_box = "["+tag+"]"+prompt_text2+"[/"+tag+"]";
                        }
                }

                // Wenn insText nicht Leer ist dann Tags Einfügen.
                if(prompt_box != null && prompt_box !='') {
                        formular.value = formular.value.substr(0, start) + prompt_box + formular.value.substr(end);

                        /* Anpassen der Cursorposition */
                    var pos;
                    if (prompt_box.length == 0) {
                              pos = start + tag.length;
                    } else {
                              pos = start + prompt_box.length;
                    }

                        formular.selectionStart = pos;
                    formular.selectionEnd = pos;
                }
        }

}

// BBCode mit Werte Einfügen (andere Art).
function bbcode_insert_with_value_2(tag,boxtext1,boxtext2) {
        var formular = document.forms['form'].elements['txt'];
        formular.focus();
        var default_text;

        // Alternativen Text für die Box ausgeben.
        if(tag == 'video') {
                default_text = "MyVideo";
        } else {
                default_text ="";
        }

        // Für UserAgent IE.
        if(typeof document.selection !='undefined') {
                 // Einfügen der Tags mit Wert.
                var range = document.selection.createRange();
                var prompt_text1;
                var prompt_text2;
                var prompt_box;

                // Box ausgeben mit Anforderung.
                prompt_text2 = prompt(boxtext2,default_text);

                // Ausgabe der 2ten Box.
                if(range.text == null || range.text =='') {
                        prompt_text1 = prompt(boxtext1,"");
                } else {
                        prompt_text1 = prompt(boxtext1,range.text);
                }

                // Überprüfen ob prompt_text1 nicht Leer ist. Wenn True dann Format [XXX=XXX]XXX[/XXX]
                if(prompt_text1 != null && prompt_text1 !='') {
                        if(prompt_text2 != null && prompt_text2 !='') {
                                prompt_box = "["+tag+"="+prompt_text2+"]"+prompt_text1+"[/"+tag+"]";
                        }
                // Wenn promptText1 Leer ist dann Format [XXX]XXX[/XXX] (Aber nur bei Gewünschten Tags)
                } else if(tag == 'url' || tag == 'email') {
                        if(prompt_text2 != null && prompt_text2 !='') {
                                prompt_box = "["+tag+"]"+prompt_text2+"[/"+tag+"]";
                        }
                }

                // Wenn insText nicht Leer ist dann Tags Einfügen.
                if(prompt_box != null && prompt_box !='') {
                        range.text = prompt_box;

                        /* Anpassen der Cursorposition */
                    range = document.selection.createRange();

                        if (prompt_box.length == 0) {
                              range.move('character', -tag.length);
                    } else {
                              range.moveStart('character', prompt_box.length);
                    }

                        range.select();
                }
        // Für UserAgents die auf Gecko basieren.
        } else if(typeof formular.selectionStart != 'undefined') {
                 // Einfügen der Tags
                var start = formular.selectionStart;
            var end = formular.selectionEnd;
                var prompt_text1;
                var prompt_text2;
                 var prompt_box;

                // Ausgabe der 2ten Box.
                prompt_text2 = prompt(boxtext2,default_text);

                // Box ausgeben mit Anforderung.
                if(formular.value.substring(start, end) == null || formular.value.substring(start, end) =='') {
                        prompt_text1 = prompt(boxtext1,"");
                } else {
                        prompt_text1 = prompt(boxtext1,formular.value.substring(start, end));
                }

                // Überprüfen ob promptText1 nicht Leer ist. Wenn True dann Format [XXX=XXX]XXX[/XXX]
                if(prompt_text1 != null && prompt_text1 !='') {
                        if(prompt_text2 != null && prompt_text2 !='') {
                                prompt_box = "["+tag+"="+prompt_text2+"]"+prompt_text1+"[/"+tag+"]";
                        }
                // Wenn promptText1 Leer ist dann Format [XXX]XXX[/XXX] (Aber nur bei Gewünschten Tags)
                } else if(tag == 'url' || tag == 'email') {
                        if(prompt_text2 != null && prompt_text2 !='') {
                                prompt_box = "["+tag+"]"+prompt_text2+"[/"+tag+"]";
                        }
                }

                // Wenn insText nicht Leer ist dann Tags Einfügen.
                if(prompt_box != null && prompt_box !='') {
                        formular.value = formular.value.substr(0, start) + prompt_box + formular.value.substr(end);

                        /* Anpassen der Cursorposition */
                    var pos;
                    if (prompt_box.length == 0) {
                              pos = start + tag.length;
                    } else {
                              pos = start + prompt_box.length;
                    }

                        formular.selectionStart = pos;
                    formular.selectionEnd = pos;
                }
        }

}

// Simples einfügen der Tags :-)
function bbcode_code_insert(tag,color) {
  var formular = document.forms['form'].elements['txt'];
  formular.focus();
  // Tags Definieren
  if(color == "0"){
    var begin_tag = "["+tag+"]";
    var end_tag = "[/"+tag+"]";
    if (document.form.code != undefined) {
      document.form.code.options['0'].selected = true; // selectiert immer <Code einfügen>
    }
  } else if (tag == "code" || tag == "php" || tag == "html" || tag == "css") {
    prompt_text1 = prompt("Format: dateiname;5  (Im Beispiel ist die Startzeile 5)\nSie können hier nun einen Dateinamen und eine Startzeile mit angeben,\nwobei die Startzeile optional ist und auch das komplette Feld leer gelassen werden kann.)","");
    if (prompt_text1 != "" && prompt_text1 != null) {
      var begin_tag = "["+tag+"="+prompt_text1+"]";
    } else {
      var begin_tag = "["+tag+"]";
    }
    var end_tag = "[/"+tag+"]";
  } else {
    var begin_tag = "["+tag+"="+color+"]";
    var end_tag = "[/"+tag+"]";
  }

        // Für UserAgent IE.
        if(typeof document.selection != 'undefined') {
                 // Einfügen der Tags.
                var range = document.selection.createRange();
                var prompt_box = range.text;

                // Überprüfen ob es sich um den PHP Tag handelt und wenn ja Überprüfen ob der string folgende zeichenketten hat <? und ?>!
                if(tag == "php" && prompt_box.match(/(\<\?)/i) && prompt_box.match(/(\?\>)/i)) {
                         prompt_box;
                } else if(tag == "php") {
                        prompt_box = "<?php\n"+prompt_box+"\n?>";
                }

                range.text = begin_tag + prompt_box + end_tag;

                /* Anpassen der Cursorposition */
                   range = document.selection.createRange();

                if (prompt_box.length == 0) {
                           range.move('character', -end_tag.length);
                   } else {
                    range.moveStart('character', begin_tag.length + prompt_box.length + end_tag.length);
                   }

                range.select();
        // Für UserAgents die auf Gecko basieren.
        } else if(typeof formular.selectionStart != 'undefined') {
                 // Einfügen der Tags
                var start = formular.selectionStart;
            var end = formular.selectionEnd;
                 var prompt_box = formular.value.substring(start, end);

                // Überprüfen ob es sich um den PHP Tag handelt und wenn ja Überprüfen ob der string folgende zeichenketten hat <? und ?>!
                if(tag == "php" && prompt_box.match(/(\<\?)/i) && prompt_box.match(/(\?\>)/i)) {
                         prompt_box;
                } else if(tag == "php") {
                        prompt_box = "<?php\n"+prompt_box+"\n?>";
                }


                formular.value = formular.value.substr(0, start) + begin_tag + prompt_box + end_tag + formular.value.substr(end);

                /* Anpassen der Cursorposition */
                   var pos;
                   if (prompt_box.length == 0) {
                           pos = start + begin_tag.length;
                   } else {
                           pos = start + begin_tag.length + prompt_box.length + end_tag.length;
                   }

                formular.selectionStart = pos;
                   formular.selectionEnd = pos;
        }
}

function bbcode_code_insert_codes(tag) {
  if (tag != "0") {
    bbcode_code_insert(tag,'1');
  }
}

//BBCode Funktion vom Standardscript
//Zur Verwendung für Forumsumfrage (sieht für mich leichter aus ;))
function simple_insert(aTag,eTag) {

  var input = document.forms['form'].elements['txt'];
  input.focus();
  /* für Internet Explorer */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);
    }
    range.select();
  }
  /* für neuere auf Gecko basierende Browser */
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Einfügen des Formatierungscodes */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* für die übrigen Browser */
  else
  {
    /* Abfrage der Einfügeposition */
    var pos = input.value.length;

    /* Einfügen des Formatierungscodes */
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
  }
}

//Funktion zum Einfügen des Umfragecodes
function insertvote(){
  var x = '';
  var l = '';
  var i = 0;

  var q = prompt("Hier die Umfragebeschreibung eingeben:");
  while ( x != null ) {
    x = prompt ("Hier die Optionen der Umfrage einzeln eintragen, jede mit OK bestätigen!\nUm die Aufnahme von Optionen zu beenden 'Abbrechen' drücken");
    i++;
    if ( x != null ) {
      l = l + "[option=" + i + "]" + x + "\n";
    }
  }
if ( (( q != '' ) && ( l != '')) && (i >= 2) ) {
    l = "[vote]\n" + '[question]' + q + '[/question]\n' + l + "[/vote]";
    simple_insert ( l, '' );
  }
}

