function $(id){return document.getElementById(id);}

function insert(aTag, eTag, formular, textarea) {
  if(document.forms[formular]) // added by Xaron
    var input = document.forms[formular].elements[textarea];
  else // added by Xaron
    var input = document.getElementById('text'); // added by Xaron
  input.focus();
  if(typeof document.selection != 'undefined') {
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    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();
  }
  else if(typeof input.selectionStart != 'undefined')
  {
    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);
    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;
  }
  else
  {
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    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);
  }
}

function insertURL(formular, textarea)
{
	if(document.forms[formular]) // added by Xaron
		var input = document.forms[formular].elements[textarea];
	else // added by Xaron
		var input = document.getElementById('text'); // added by Xaron

	url = window.prompt("Bitte Adresse eingeben:", "http://");

	if (input.selectionStart == input.selectionEnd)
	{
		text = window.prompt("Bitte Beschriftung eingeben:", "");
		insert("[url="+url+"]"+text,"[/url]", formular, textarea);
	}
	else
	{
		insert("[url="+url+"]","[/url]", formular, textarea);
	}
}

function insertMail(formular, textarea)
{
	if(document.forms[formular]) // added by Xaron
		var input = document.forms[formular].elements[textarea];
	else // added by Xaron
		var input = document.getElementById('text'); // added by Xaron

	url = window.prompt("Bitte E-Mail-Adresse eingeben:", "");

	if (input.selectionStart == input.selectionEnd)
	{
		text = window.prompt("Bitte Beschriftung eingeben:", "");
		insert("[email="+url+"]"+text,"[/email]", formular, textarea);
	}
	else
	{
		insert("[email="+url+"]","[/email]", formular, textarea);
	}
}

function forum_check_all()
{
  for(i=0;i<document.mulselect.elements.length;i++)
  {
    if(document.mulselect.elements[i].type=="checkbox")
    {
      document.mulselect.elements[i].checked=true;
    }
  }
}

function forum_del_secure( insert )
{
Check = confirm("Wollen Sie diese " + insert + " wirklich löschen?");
if (Check == true)
  document.mulselect.submit();
}


var formfeld="";
var maxlang=140;

function zaehle() {
if (window.document.zeige.smstext.value.length>140)    {
window.document.zeige.smstext.value=formfeld;
return;
}
else {
formfeld=window.document.zeige.smstext.value;
window.document.zeige.anzeigen.value=maxlang-window.document.zeige.smstext.value.length;
}
}

function show(id){
  if (document.getElementById) {
    var mydiv = document.getElementById(id);
    mydiv.style.display = (mydiv.style.display=='inline'?'none':'inline');
  }
}

function book_show(mode){
  var mydiv = document.getElementById('adressbuch');
  mydiv.style.display = 'block';

  var mydiv = document.getElementById('book_mode');
  mydiv.value = mode;
}

function book_enter(mail) {
	var mode = document.getElementById('book_mode').value;
	if(document.getElementById('mail2_'+mode).value == "")
		document.getElementById('mail2_'+mode).value = mail;
	else
		document.getElementById('mail2_'+mode).value += ', ' + mail;
}

function book_close(){
  var mydiv = document.getElementById('adressbuch');
  mydiv.style.display = 'none';
}

function bank(xpoints)
{
    document.getElementById('cydots').innerHTML = xpoints/5;
}

function noBreaks(id) {
 var Ereignis = window.event;
 var text = document.getElementById(id).value;
 while(text.match(/\n/) || text.match(/\r/))
 {
 text = text.substring(0, text.length-2);
 document.getElementById(id).value = text;
 }
}


/* eMail-Interface */

function email_tick( id )
{
	var email_ticked = document.getElementById('email_' + id).checked;
	if(email_ticked == true)
	{
		document.getElementById('email_' + id).checked = false;
	}
	else
	{
		document.getElementById('email_' + id).checked = true;
	}
}

function email_tick_all ()
{
	for(i=0;i<document.email.elements.length;i++)
	{
		if(document.email.elements[i].type=="checkbox")
		{
			document.email.elements[i].checked=true;
		}
	}
	return 0;
}
function email_tick_none ()
{
	for(i=0;i<document.email.elements.length;i++)
	{
		if(document.email.elements[i].type=="checkbox")
		{
			document.email.elements[i].checked=false;
		}
	}
	return 0;
}
function email_tick_read ()
{
	for(i=0;i<document.email.elements.length;i++)
	{
		var e = document.email.elements[i];
		if(e.type == "hidden" && e.value == "email_read")
		{
			var id = "email_" + e.id;
			document.getElementById( id ).checked=true;
		}
		if(e.type == "hidden" && e.value == "email_unread")
		{
			var id = "email_" + e.id;
			document.getElementById( id ).checked=false;
		}
	}
	return 0;
}
function email_tick_unread ()
{
	for(i=0;i<document.email.elements.length;i++)
	{
		var e = document.email.elements[i];
		if(e.type == "hidden" && e.value == "email_unread")
		{
			var id = "email_" + e.id;
			document.getElementById( id ).checked=true;
		}
		if(e.type == "hidden" && e.value == "email_read")
		{
			var id = "email_" + e.id;
			document.getElementById( id ).checked=false;
		}
	}
	return 0;
}
function email_tick_spam ()
{
	for(i=0;i<document.email.elements.length;i++)
	{
		var e = document.email.elements[i];
		if(e.type == "hidden" && e.value == "spam")
		{
			var id = "email_" + e.id.substr(0, e.id.length-2);
			document.getElementById( id ).checked=true;
		}
		if(e.type == "hidden" && e.value == "nospam")
		{
			var id = "email_" + e.id.substr(0, e.id.length-2);
			document.getElementById( id ).checked=false;
		}
	}
	return 0;
}

function emailAction()
{
	var e = document.getElementById('action').value;
	if(e == 0)
	{
		var Check = confirm("Alle ausgewählten eMails als ungelesen markieren?");
		if(Check == true)
		{
			document.getElementById('email_action').value = "unread";
			document.email.submit();
		}
	}
	else if(e == 1)
	{
		var Check = confirm("Alle ausgewählten eMails als gelesen markieren?");
		if(Check == true)
		{
			document.getElementById('email_action').value = "read";
			document.email.submit();
		}
	}
	else if(e == 2)
	{
		var Check = confirm("Alle ausgewählten eMails als wichtig markieren?");
		if(Check == true)
		{
			document.getElementById('email_action').value = "important";
			document.email.submit();
		}
	}
	else if(e == 3)
	{
		var Check = confirm("Alle ausgewählten eMails als nicht wichtig markieren?");
		if(Check == true)
		{
			document.getElementById('email_action').value = "unimportant";
			document.email.submit();
		}
	}
	else if(e == 4)
	{
		var Check = confirm("Sollen die ausgewählten eMails wirklich gelöscht werden?");
		if (Check == true)
		{
			document.getElementById('email_action').value = "del";
			document.email.submit();
		}
	}
	else if(e > 4)
	{
		var Check = confirm("Sollen alle ausgewählten eMails wirklich verschoben werden?");
		if (Check == true)
		{
			document.getElementById('email_action').value = "move";
			document.getElementById('move').value = e;
			document.email.submit();
		}
	}
}
function emailDelete()
{
	document.getElementById('email_action').value = "del";
	document.email.submit();
}
function emailPrint()
{
	document.getElementById('email_action').value = "print";
}
function emailFolderRename(id)
{
	var newName;
	do
	{
		newName = prompt("Bitte gib den neuen Ordnernamen ein:", "");
	}
	while(newName == "");
	if(newName)
	{
		document.getElementById('id').value = id;
		document.getElementById('value').value = newName;
		document.getElementById('action').value = 0;
		document.getElementById('folder_form').submit();
	}
}
function emailFolderDelete(id)
{
	var Check = confirm("Soll dieser Ordner wirklich gelöscht werden?");
	if(Check == true)
	{
		document.getElementById('id').value = id;
		document.getElementById('action').value = 1;
		document.getElementById('folder_form').submit();
	}
}

var attachements = 1;
function mail_newAttach()
{
	var values = new Array();
	for(i=1; i<= attachements; i++)
	{
		values[i] = document.getElementById("attachment" + i).value;
	}
	attachements++;
	if(attachements <= 10)
	{
		document.getElementById('attachements').innerHTML += '<div style="margin-left: 10px;" id="attach' + attachements + '">Anlage ' + attachements + ': <input type="file" name="attach' + attachements + '" id="attachment' + attachements + '"></div>';
	}
	else
		alert("Es können leider nicht mehr als 10 Anhänge verschickt werden.");

//the following code doesn't work
	for(i=1; i < attachements; i++)
	{
		document.getElementById('attachment' + i).value = values[i];
	}

}

function mail_adressbook(input)
{
	alert("open mailbox");
}

function emailAnswer()
{
	document.getElementById('reply').submit();
}
function emailForward()
{
	document.getElementById('mail_to').value = "";
	document.getElementById('reply').submit();
}

function combo(element)
{
	element = $(element);

	if(element.style.display == 'none')
	{
		new Effect.BlindDown(element);
	}
	else
	{
		new Effect.BlindUp(element);
	}
}

function sucheAuswahl (select_feld, wert) {
  for (i = 0; i < select_feld.length; ++i)
    if (select_feld.options[i].value == wert)
      return i;
}

function blinkCursor(){
  if(parent.bbcodepreview.document.getElementById('scrollto')){
    if(showCursor==true){
      parent.bbcodepreview.document.getElementById('scrollto').style.visibility = "hidden";
      showCursor = false;
    } else {
      parent.bbcodepreview.document.getElementById('scrollto').style.visibility = "visible";
      showCursor = true;
    }
  }
} ival_bc = false;

function getCursorPos(textElement) {
  var sOldText = textElement.value;
  var objRange = document.selection.createRange();
  var sOldRange = objRange.text;
  var sUniqueString = '#^~';

  objRange.text = sOldRange + sUniqueString;
  objRange.moveStart('character', (0 - sOldRange.length - sUniqueString.length));

  var sNewText = textElement.value;
  objRange.text = sOldRange;
  for (i=0; i <= sNewText.length; i++) {
    var sTemp = sNewText.substring(i, i + sUniqueString.length);
    if (sTemp == sUniqueString) {
      var cursorPos = (i - sOldRange.length);
      return cursorPos;
    }
  }
}

function bbcode(myText){
  if(document.getElementById('text').style.disptay = "none"){

    if(ival_bc==false) {showCursor = true; ival_bc = window.setInterval("blinkCursor()", 500);}

    bbArr = new Array("quote", "code", "url", "img", "str", "punkt", "b", "i", "u", "h1", "s", "lexikon");
    bbCodeArr = new Array('<div class=\\"quote\\"><strong>Zitat:</strong><br />$1</div>', '<div class=\\"hl-main hl-table hl-main-table\\" style=\\"width:580px;\\">$1</div>', '<a href=\\"$1\\" target=\\"_blank\\">$1</a>', '<img src=\\"$1\\" alt=\\"user-pic\\" style=\\"border:none\\">', "<strong>$1</strong>", "<li>$1</li>", "<b>$1</b>", "<i>$1</i>", "<u>$1</u>", '<h3 style=\\"display:inline\\">$1</h3>', "<strike>$1</strike>","<a href='../lexikon-$1.html' target=_blank>$1</a>");

		bbArr2 = new Array("quote", "code", "url","email","align","color","size","lexikon");
    bbCodeArr2 = new Array('<div class=\\"quote\\"><strong>Zitat von $1:</strong><br />$2</div>', '<div class=\\"hl-main hl-table hl-main-table\\" style=\\"width:580px;\\">$2</div>','<a href=\\"$1\\" target=\\"_blank\\">$2</a>','<a href=\\"mailto:$1\\" target=\\"_blank\\">$2</a>','<div align=\\"$1\\">$2</div>','<font color=\\"$1\\">$2</font>','<font size=\\"$1\\">$2</font>','<div style=\\"display:inline\\" onmouseover=\\"parent.showLexikon\\(\'$1\', this\\)\\" onmouseout=\\"parent.hideLexikon\\(this\\)\\"><a href=\\"lexikon-$1.html\\" target=\\"_parent\\">$2</a></div>')

		smiliesArr = new Array("glad", "sad", "wink", "lol", "tongue", "disappointed", "angry", "cool", "conf", "roll", "tear", "shocked", "question");
    arrCount = bbArr.length; arrCount2 = bbArr2.length; smiliesCount = smiliesArr.length;
    input = document.getElementById('text');

    if(typeof document.selection != 'undefined') {start = getCursorPos(document.getElementById('text'));} else {start = input.selectionStart;}

    myText = myText.substring(0,start) + '{_scrollto_}' + myText.substring(start);

    myText = myText.replace(/</g, "&lt;"); myText = myText.replace(/>/g, "&gt;");
    myText = myText.replace('{_scrollto_}', '<span id="scrollto" style="color:red;height:100%">|</span>');
    myText = myText.replace(/\n/g,"<br />");

    listRange = myText.match(/\[list\](.*?)\[\/list\]/gi);
    if(listRange){listCount=listRange.length;} else {listCount=0;}
     x=0; while(x<listCount){
      newListRange = listRange[x].replace(/<br \/>|\s/gi, "");
      newListRange = newListRange.replace(/list/gi, "temp_list");
      myText = myText.replace(/\[list\](.*?)\[\/list\]/i, newListRange);
      x++;
    }
    myText = myText.replace(/temp_list/gi, "list");

    while(myText.search(/\[quote\](.*?)\[\/quote\]/)!=-1){
    	bbCode = bbCodeArr[0];
			eval('myText = myText.replace(/\\['+bbArr[0]+'\\](.*?)\\[\\/'+bbArr[0]+'\\]/gi, "'+bbCode+'");');
    }

    while(myText.search(/\[quote=(.*?)\](.*?)\[\/quote\]/)!=-1){
    	bbCode = bbCodeArr2[0];
			eval('myText = myText.replace(/\\['+bbArr2[0]+'=(.*?)\\](.*?)\\[\\/'+bbArr2[0]+'\\]/gi, "'+bbCode+'");');
    }

    x=1; while(x<arrCount){
      if(bbCodeArr[x]){bbCode = bbCodeArr[x];} else {bbCode = bbArr[x];}
      eval('myText = myText.replace(/\\['+bbArr[x]+'\\](.*?)\\[\\/'+bbArr[x]+'\\]/gi, "'+bbCode+'");');
      x++;
    }

    x=1; while(x<arrCount2){
      bbCode = bbCodeArr2[x];
      eval('myText = myText.replace(/\\['+bbArr2[x]+'=(.*?)\\](.*?)\\[\\/'+bbArr2[x]+'\\]/gi, "'+bbCode+'");');
      x++;
    }

    x=0; while(x<smiliesCount){
      eval('myText = myText.replace(/:'+smiliesArr[x]+':/gi, "<img src=\\"/img/smilies/'+(parseInt(x)+1)+'.gif\\" alt=\\"'+smiliesArr[x]+'\\" style=\\"border:0\\" />");');
      x++;
    }
  	myText = myText.replace(/\<\/li\>\<br \/\>/g,"</li>");
  	myText = myText.replace(/&/g, "&amp;");
  	// Da die Funktion mit < > nicht arbeiten kann, & aber umgewandelt werden müssen,
  	// müssen wir hier die komplett kaputten Codes wie &amp;lt; wieder zu &lt; machen
  	myText = myText.replace(/&amp;lt;/g, "&lt;"); myText = myText.replace(/&amp;gt;/g, "&gt;");

    parent.bbcodepreview.document.getElementById('bbcodepreview').innerHTML = myText;
    pos = Position.cumulativeOffset(parent.bbcodepreview.document.getElementById('scrollto'));
    parent.bbcodepreview.window.scrollTo(pos[0]-35, pos[1]-35);


  }
}

var show_lexikon=false; var req_lexikon=new Array();
function showLexikon($id, $obj){
  if (show_lexikon==false) {
    if ($obj.firstChild.nextSibling) {
      $obj.firstChild.nextSibling.style.display="inline";
    } else {
      new Ajax.Request('../ajax/lexikon.ajax.php',
      {
        method:'get',
        parameters: {id: $id},
        onSuccess: function(transport){
          var response = transport.responseText || "Error!";
          $obj.innerHTML += '<div style="z-index:2;display:inline;margin-left:5px;background-color:#9f9;position:absolute;">'+response+'</div>';
        },
        onFailure: function(){ alert('Something went wrong...') }
      });
      req_lexikon[req_lexikon.length]=$id;
      show_lexikon=true;
    }
  }
}

function hideLexikon($obj){
  $obj.firstChild.nextSibling.style.display="none";
  show_lexikon=false;
}

function arrSearch($arr, $search){
  for(x in $arr){
    $arr[x]==$search;
    return x
  }
  return false;
}
