// öffnet das Chatbox-PopUp. jumpto bestimmt den hash zu dem gesprungen wird. Verwendet bei Userbox
function Chatbox(jumpto)
{
   window.open("chatbox.php#p"+jumpto,"Chatbox","width=400,height=450,left=100,top=100,menubar=no,resizable=yes,scrollbars=yes,status=yes,toolbar=no");
}

// Öffnet das Postcheck-PopUp. Verwendet in der Forumsübersicht
function Postcheck()
{
   window.open("check_newposts.php","Postcheck","width=350,height=200,left=100,top=100,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no");
}

function BackInTime()
{
    var temp = prompt("Hier kannst du den Zeitpunkt deines letzten Besuches manuell zurücksetzen.\nGib bitte ein, um wieviele Stunden du zurück in die Vergangenheit reisen möchtest:", 24);
    if(temp)location.href = "index.php?timeback="+temp;
}

// gibt einen alert aus, der den Postcheck erklärt. Verwendet in der Forumsübersicht
function Postcheck_Info()
{
  alert("Es wird ein PopUp geöffnet,\ndass den Benutzer benachrichtigt, sobald etwas\nneues im Abenteuerforum geschrieben wurde.\nEs genügt, dass PopUp geöffnet zu lassen,\ndiese Seite kannst du schließen.");
}

// zur direkten anwahl einer seite eines threads. Verwendet bei Subforumsansicht
function GeheZuSeite(gehezu, max)
{
    var temp=Number(prompt("Zu welcher Seite des Threads moechtest du? (Max. "+max+")", Math.round(max/2)));
    if((isNaN(temp)) || temp > max)alert(temp+" ist keine Zahl von 1 bis "+max);
    else location.href=gehezu+(temp-1);
}



function setStyleForElementById(name, stylevalue)
{
  var theElement = document.getElementById(name);
  var theStyle = document.createAttribute("style");
  theStyle.nodeValue = stylevalue;
  theElement.setAttributeNode(theStyle);
}






var info_schon_gezeigt=false;
// baumansicht soloabenteuer
function solo_tree()
{
    var start=prompt("Bei welcher ID soll die Übersicht anfangen (es wird keine vollständige Übersicht, sondern nur ein Ausschnitt gezeigt)", "1");
    if(start)location.href="index.php?treestart="+start;
}

/******************** BEITRAG ERSTELLEN; EDITIEREN ETC. **************************/
var c_text, c_fenster, c_formno, c_textfeld, c_help, c_multi, c_tag1, c_tag2, c_status, c_value, clientPC, is_ie, is_win, c_problem_insert, selectedText;
function init_post(formno, textfeld, help, multi, nick)
{
   c_text=new Array("Fetter Text: [b]Text[/b]","Kursiver Text: [i]Text[/i]","Unterstrichener Text: [u]Text[/u]","Bild: [img]http:www.beispiel.de/bild.jpg[img]",
     "[url]http://www.beispiel.de[/url] oder [url=http://www.beispiel.de]Link[/url]","Textgröße: [size=12]Text[/size]","Zitieren: [quote]Text[/quote] oder [quote=Alrik]Zitat von Alrik[/quote]",
     "In Userfarbe schreiben: [say=Alrik]Text[/say] oder [say]Text[/say]","Zum Würfeln einfach den Button klicken.", "Innerhalb der NoChange-Tags werden keine Smilyes, andere Tags und Zeilenumbrüche umgewandelt");
   c_fenster=false;
   c_formno=formno;
   c_textfeld=document.forms[formno].elements[textfeld]; // referenz statt index!
   c_help=help;
   c_problem_insert=false;
   c_multi=multi;
   c_tag1  =new Array("[b]","[i]","[u]","[img]","[url]","[size=12]","[Quote]","[Say]","Würfel", "[nochange]");
   c_tag2  =new Array("[/b]","[/i]","[/u]","[/img]","[/url]","[/size]","[/Quote]","[/Say]","Würfel", "[/nochange]");

   clientPC = navigator.userAgent.toLowerCase();
   is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
   is_win = ((clientPC.indexOf('win')!=-1) || (clientPC.indexOf('16bit') != -1));
}

function setSelectionRange(input, selectionStart, selectionEnd)
{
  if (input.setSelectionRange)
  {
    input.focus();
    input.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (input.createTextRange)
  {
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}

function setCaretToPos (input, pos)
{
  setSelectionRange(input, pos, pos);
}

function replaceSelection(input, replaceString)
{
  if (input.setSelectionRange)
  {
    var selectionStart = input.selectionStart;
    var selectionEnd = input.selectionEnd;
    input.value = input.value.substring(0, selectionStart) + replaceString + input.value.substring(selectionEnd);
    if (selectionStart != selectionEnd) // has there been a selection
    {
      setSelectionRange(input, selectionStart, selectionStart + replaceString.length);
    }
    else // set caret
    {  setCaretToPos(input, selectionStart + replaceString.length); }

  }
  else if (document.selection)
  {
    var range = document.selection.createRange();
    if (range.parentElement() == input)
    {
      alert(1);
      var isCollapsed = range.text == '';
      range.text = replaceString;
      if (!isCollapsed)  { // there has been a selection
        //it appears range.select() should select the newly
        //inserted text but that fails with IE
        range.moveStart('character', -replaceString.length);
        range.select();
      }
    }
  }
}

function help(x)
{
     document.forms[c_formno].elements[c_help].value=c_text[x];
}

function problem_insert()
{
     c_problem_insert = confirm("Wenn es Probleme mit Smileys, Buttons etc. gibt, klicke nun auf Ja um in einen für fast alle Browser möglichen Modus umzuschalten");
}

function insert_code(x)
{
 var selStart, selEnd, Sel, vorSel, nachSel;
 if(c_problem_insert) // wenn Probleme bestehen
 {
      c_textfeld.value+=c_tag1[x] + c_tag2[x];
      c_textfeld.focus();
 }
 else { // normal

    // IE und Windows
    if ((parseInt(navigator.appVersion) >= 4) && is_ie && is_win)
    {
       c_textfeld.focus();
       selectedText = document.selection.createRange().text;
       document.selection.createRange().text=c_tag1[x] + selectedText + c_tag2[x];
       document.selection.createRange().moveStart('character', -x.length);
       document.selection.createRange().moveEnd('character', x.length);
       document.selection.createRange().select();
    }
    else {// andere browser

  selStart=c_textfeld.selectionStart;
  selEnd=c_textfeld.selectionEnd;

  vorSel=(c_textfeld.value).substring(0, selStart);
  Sel=c_tag1[x]+(c_textfeld.value).substring(selStart, selEnd)+c_tag2[x];
  nachSel=(c_textfeld.value).substring(selEnd, c_textfeld.textLength);
  c_textfeld.value=vorSel+Sel+nachSel;
  setSelectionRange(c_textfeld, selStart, (selStart+Sel.length))
  }
 }
}

function smile(x)
{
 var selStart, selEnd, Sel, vorSel, nachSel;
 if(c_problem_insert) // wenn Probleme bestehen
 {
      c_textfeld.value+=x;
      c_textfeld.focus();
 }
 else { // normal

    // IE und Windows
    if ((parseInt(navigator.appVersion) >= 4) && is_ie && is_win)
    {
       c_textfeld.focus();
       selectedText = document.selection.createRange().text;
       document.selection.createRange().text=x;
       document.selection.createRange().moveStart('character', -x.length);
       document.selection.createRange().moveEnd('character', x.length);
       document.selection.createRange().select();
    }
    else { // andere browser

  selStart=c_textfeld.selectionStart;
  selEnd=c_textfeld.selectionEnd;

  vorSel=(c_textfeld.value).substring(0, selStart);
  Sel=x;
  nachSel=(c_textfeld.value).substring(selEnd, c_textfeld.textLength);
  c_textfeld.value=vorSel+Sel+nachSel;
  setSelectionRange(c_textfeld, (selStart+Sel.length), (selStart+Sel.length))
  }
 }
}


function insertatpos(x)
{
    smile(x); // nur wegen unlogischer namensgebung
}


function mehrsmiles()
{
     var smileyfenster = window.open("smiley.php","Smileyfenster","width=410,height=250,scrollbars=YES,resizable=YES");
}

function eigenesmiles()
{
     var smileygenfenster = window.open("smilegen/gui.php","SmileyGenfenster","width=300,height=200,scrollbars=YES,resizable=YES");
}

function wurfel()
{
       var i, w,x,y,z,sr, Wurf, temp, t1, t2, t3;
       w=prompt("Was für ein Wurf soll durchgeführt werden?\n\"?\" für Hilfe eingeben","1W6+2");
       if(!w)return false;
       if(w=="?")
       {
           alert("Beispiele für normale Würfe:\n1W6+3 oder 2W6-2 oder 3W20 oder 3W23 oder 100W57-36 etc.\n\nFür Systeme wie Shadowrun gibt es eine Besonderheit: Wenn die höchste mögliche Augenzahl gewürfelt wurde, wird ein zusätzlicher Wurf durchgeführt. Um dieses Feature zu verwenden, hänge einfach \"sr\" oder ein Sternchen * an den Wurf an, also z.B.\n5W6sr oder 3W10-5*");
           wurfel();return true;
       }
       
        Wurf = /(\d*)w(\d*)([+-])?(\d*)?([*sr]*)?/i;
        Wurf.exec(w);
         x=parseInt(RegExp.$1); // Anzahl
         y=parseInt(RegExp.$2); // Augen
         t1=RegExp.$3; // sgn(Gleichanteil)
         t2=parseInt(RegExp.$4); // Gleichanteil
         t3=RegExp.$5; // SR-Wurf
         
         if(isNaN(x)||isNaN(y)||x<1||y<2){alert("Ungültige Eingabe");return false;}
         if(t1 && t2)z = (t1=="-")?(-1*t2):(t2);
         if(t3)sr = true;
         if(!z)z = 0;
        

       var summe=z;var srw=0;var wdh;var text = "[b]"+w+":[/b] ";

       for(i=0;i<x;i++)
       {
           do {
                temp=Math.floor(Math.random()*y)+1;
                if(sr&&temp==y)
                {
                        wdh = true;
                        text+=temp+"+";
                }
                else
                {
                        text+=temp+" ";
                        wdh = false;
                }
                
                summe+=temp;
           }
           while(wdh);
       }
       insertatpos(text+"[i]Summe "+summe+"[/i]\n");

       return true;
}

function console()
{
    var q=prompt("Dies ist die Kommandozeile für weitere Befehle. \'Help\' für Hilfe","");
    if(!q)return false;
    var ql=q.toLowerCase();

    if(ql=="help")
    {
      alert("Folgende Befehle sind verfügbar:\nSay=[Name]\nLogin=[Id]\n\nMöglicherweise funktionieren nicht alle Funktionen in allen Browsern");
      console();return true;
    }
    else if(ql=="quit")return false;
    else if(ql.substr(0,4)=="say=")
    {
        c_tag1[7]="[Say="+q.slice(4)+"]";
        alert("Say-Parameter erfolgreich geändert");
    }
    else if(ql.substr(0,6)=="login=")
    {
        document.forms[c_formno].elements[c_multi].name="unwesentlich";
        document.forms[c_formno].elements[(c_multi+1)].name="form[use_id]";
        document.forms[c_formno].elements[(c_multi+1)].value=q.slice(6);
        alert("Login ist nun: "+document.getElementsByName("form[use_id]")[0].value);
    }
    else alert("Fehler - unbekanntes Kommando:\n"+q);

    return true;
}

/******************** /BEITRAG ERSTELLEN; EDITIEREN ETC. **************************/
