// 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 + "px";
      document.getElementById("colorinput").style.left = pos.x - document.getElementsByTagName('div')[0].offsetLeft + 500;
      document.getElementById("colorinput").style.display= "block";
  }
}

// BB-Code ins Textarea einfügen.
function bbcode_insert(tag,boxtext) {
	var formular = document.forms['sifo_form'].elements['sifo_text'];
	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['sifo_form'].elements['sifo_text'];
	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['sifo_form'].elements['sifo_text'];
	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['sifo_form'].elements['sifo_text'];
	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;
	}
}
//BBCode Funktion vom Standardscript
//Zur Verwendung für Forumsumfrage (sieht für mich leichter aus ;))
function simple_insert(aTag,eTag) {

  var input = document.forms['sifo_form'].elements['sifo_text'];
  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, '' );
  }
}
