// Custom Menue
// Fügt ein Menue hinzu. Das Menue öffnet sich bei einem Doppelklick. Nach der Installation unbedingt die Werte im Script anpassen!
// (c) 2010 by Dicope
// Mail: dicope [aht] plan-of-attack [puhnkt] net
// ==UserScript==
// @name          Custom Menue
// @namespace     http://greasemonkey.ppopn.net
// @description   Fügt ein Menue hinzu. Das Menue öffnet sich bei einem Doppelklick. Nach der Installation unbedingt die Werte im Script anpassen!
// @include       http://82.149.226.131/bb/*
// @include       http://forum.counter-strike.de/bb/*
// @include       http://forum.cstrike.de/bb/*
// @include       http://forum.mods.de/bb/*
// ==/UserScript==

fbid = new Array();
fbnm = new Array();
ftid = new Array();
ftnm = new Array();
flur = new Array();
flnm = new Array();

/////////////// [ KONFIGURATION ] ///////////////
var twocols = true;		// Zwei Spalten anzeigen
var opac = true;		// Transparenz
var opacvalue = 0.95;		// Grad der Transparenz
var rndbdr = true;		// Abgerundete Ecken
var rndbdrr = "12px";		// Radius der Ecken

var showreload = true;		// Link zum Neuladen anzeigen

var showindex = true;		// Link zur Forenuebersicht anzeigen
var showpm = true;		// Link zum PM-System anzeigen
var showlogout = false;		// Logout-Link anzeigen
var showprof = false;		// Link zum Bearbeiten des Profils anzeigen
var showmod = false;		// Quickmod anzeigen

var showpboard = true;		// Link zum uebergeordneten Forum anzeigen
var showthread = true;		// Link zum Erstellen eines neuen Threads im aktuelle Forum anzeigen

var showreply = true;		// Link zum Antworten anzeigen
var shownav = true;		// vorherige / naechste Seite anzeigen
var showlast = false;		// Link zum letzten Post anzeigen
var showlastp = true;		// Link zur letzten Seite anzeigen

var uid = 1127894;		// Die eigene User-ID


// Foren
//
// Syntax:
// fbid.push(FOREN-ID);
// fbnm.push("FOREN-NAME");

fbid.push(14);
fbnm.push("Public Offtopic");
fbid.push(43);
fbnm.push("Webdesign & Coding");
fbid.push(19);
fbnm.push("CS-Help");

// Threads
//
// Syntax:
// ftid.push(THREAD-ID);
// ftnm.push("THREAD-NAME");

ftid.push(136668);
ftnm.push("Greasemonkey");

var threadlast = true;		// Springt direkt zum Ende des Threads

// Links
//
// Syntax:
// fbid.push("URL";
// fbnm.push("NAME");

flur.push("http://www.cstrike.de/intern/weboffice/login.php");
flnm.push("Worka");
flur.push("http://www.cstrike.de/voice/");
flnm.push("Teamspeak");
flur.push("http://greasemonkey.ppopn.net/");
flnm.push("Greasemonkey");
////////////////////////////////////////////////

  var menu = document.createElement("div");
  menu.id = "gmmenu";
  var newstyle = document.createElement("style");
  newstyle.type = "text/css";
  newstyle.innerHTML = "#gmmenu { position: fixed; font-size: 11px; color: #FFFFFF; font-family: Verdana, Arial, Trebuchet MS, sans-serif; } #gmmenu a { text-decoration:none; color: #CCCCCC; display: block;} #gmmenu a:hover { color: #FFFFFF; } #gmmenu hr {margin-top:20px; margin-bottom:5px; padding-bottom:0px;} .gmmenucapt { margin: auto; text-align: center; font-size: 0.8em; top: -1.3em; margin-bottom: -1em; position:relative; background-color: #668BB0; }";
  document.getElementsByTagName("head")[0].appendChild(newstyle);
  if(twocols == true) {
    menu.style.width = "330px";
    menu.style.padding = "0px";
    var oldmenu = menu;
    var menu = document.createElement("div");
    menu.style.backgroundColor = "#668BB0";
    if(opac == true) menu.style.MozOpacity = opacvalue;
    menu.style.cssFloat = "left";
    menu.style.width = "150px";
    menu.style.margin = "0px";
    menu.style.border = "solid 2px #9C9C9C";
    if(rndbdr == true) menu.style.MozBorderRadius = rndbdrr;
    menu.style.height = "100%";
    menu.style.padding = "5px";
  } else {
    menu.style.backgroundColor = "#668BB0";
    menu.style.border = "2px solid #9C9C9C";
    if(rndbdr == true) menu.style.MozBorderRadius = rndbdrr;
    menu.style.padding = "5px";
  }
  if(showreload == true) menu.innerHTML += "<a href='javascript:location.reload();'>&raquo; Neu Laden</a>";
  if((showindex == true) || (showpm == true) || (showlogout == true) || (showprof == true)) menu.innerHTML += "<hr /><div class='gmmenucapt' style='width: 96px;'>mods.de Forum</div>";
  if(showindex == true) menu.innerHTML += "<a href='/bb/index.php'>&raquo; Foren&uuml;bersicht</a>";
  if(showpm == true) menu.innerHTML += "<a href='/bb/pm/'>&raquo; PM-System</a>";
  if(showlogout == true) menu.innerHTML += "<a href='/bb/misc.php?action=logout'>&raquo; Logout</a>";
  if(showprof == true) menu.innerHTML += "<a href='/bb/profile.php?UID=" + uid + "&amp;edit=1'>&raquo; Profil bearbeiten</a>";
  if(document.location.href.match(/.*(?:thread|board)\.php.*/i)) {
    menu.innerHTML += "<hr /><div class='gmmenucapt' style='width: 94px;'>aktuelles Forum</div>";
    var links = document.getElementsByTagName('a');
    var i = 0;
    while(i<links.length) {
      if(links[i].href.match(/.*newthread\.php.*/)) {
        var bid = links[i].href.replace(/^.*BID=([0-9]*).*$/, '$1');
        break;
      }
      i++;
    }
    if(showpboard == true) menu.innerHTML += "<a href='board.php?BID=" + bid + ">&raquo; &uuml;bergeordnetes Forum</a>";
    if(showthread == true) menu.innerHTML += "<a href='newthread.php?BID=" + bid + ">&raquo; New Thread</a>";
  }
  if(document.location.href.match(/.*thread\.php.*/i)) {
    menu.innerHTML += "<hr /><div class='gmmenucapt' style='width: 100px;'>aktueller Thread</div>";
    var tid = document.location.href.replace(/^.*TID=([0-9]*).*$/gi, '$1');
    if(showreply == true) menu.innerHTML += "<a href='newreply.php?TID=" + tid + ">&raquo; Post Reply</a>";
    var fett = document.getElementsByTagName('b');
    var i = 0;
    var search = window.location.search;
    var page = 1;
    search = search.replace(/.SID.{33}/,'');
    search = search.replace(/.SID.*/,'');
    search = search.replace(/.override=/,'');
    search = search.replace(/\&last=1/,'');
    search = search.replace(/\&page=[0-9]+/,'');
    while(i<fett.length) {
      if(fett[i].innerHTML.match(/\[[0-9]+\]/)) {
        page = fett[i].innerHTML.replace(/\[([0-9]+)\]/, '$1');
        break;
      }
      i++;
    }
    if(parseInt(page) - 1 > 0) { if(shownav == true) menu.innerHTML += "<a href='thread.php?TID=" + tid + "&amp;page=" + (parseInt(page) - 1) + "'>&raquo; vorherige Seite</a>" };
    if(shownav == true) menu.innerHTML += "<a href='thread.php?TID=" + tid + "&amp;page=" + (parseInt(page) + 1) + "'>&raquo; n&auml;chste Seite</a>";
    if(showlast == true) menu.innerHTML += "<a href='thread.php?TID=" + tid + "&amp;last=1'>&raquo; letzte Seite</a>";
    if(showlastp == true) menu.innerHTML += "<a href='thread.php?TID=" + tid + "&amp;last=1#last_reply'>&raquo; letzter Post</a>";
    if(showmod == true) {
      var quickmod = document.getElementsByTagName("select");
      if(quickmod.length == 8) {
        menu.innerHTML += "<hr /><div class='gmmenucapt' style='width: 80px;'>Moderation</div>";
        quickmod = quickmod[7];
        var modopts = quickmod.getElementsByTagName("option");
        var i = 1;
        while(i<modopts.length) {
          menu.innerHTML += "<a href='quickmod.php?TID=" + tid + "&amp;action=" + modopts[i].value + "'>&raquo; " + modopts[i].innerHTML.replace(/-&gt; /, "").replace(/Thread/, "").replace(/Verschieben/, "versch.") + "</a>";
          i++;
        }
      }
    }
  }
  if(twocols == true) {
    oldmenu.appendChild(menu);
    var float1 = menu;
    var menu = document.createElement("div");
    menu.style.backgroundColor = "#668BB0";
    if(opac == true) menu.style.MozOpacity = opacvalue;
    menu.style.cssFloat = "right";
    menu.style.border = "solid 2px #9C9C9C";
    if(rndbdr == true) menu.style.MozBorderRadius = rndbdrr;
    menu.style.width = "150px";
    menu.style.margin = "0px";
    menu.style.padding = "5px";
  }
  if(fbid.length > 0) {
    menu.innerHTML += "<hr /><div class='gmmenucapt' style='width: 50px;'>Foren</div>";
    var i = 0;
    while(i<fbid.length) {
      menu.innerHTML += "<a href='/bb/board.php?BID=" + fbid[i] + "'>&raquo " + fbnm[i] + "</a>";
      i++;
    }
  }
  if(ftid.length > 0) {
    menu.innerHTML += "<hr /><div class='gmmenucapt' style='width: 54px;'>Threads</div>";
    var i = 0;
    while(i<ftid.length) {
      if(threadlast == true) { var golast = "&last=1#last_reply"; } else { var golast = ""; }
      menu.innerHTML += "<a href='/bb/thread.php?TID=" + ftid[i] + golast + "'>&raquo " + ftnm[i] + "</a>";
      i++;
    }
  }
  if(flur.length > 0) {
    menu.innerHTML += "<hr /><div class='gmmenucapt' style='width: 46px;'>Links</div>";
    var i = 0;
    while(i<flur.length) {
      menu.innerHTML += "<a href='" + flur[i] + "'>&raquo " + flnm[i] + "</a>";
      i++;
    }
  }
  if(twocols == true) {
    var float2 = menu;
    oldmenu.appendChild(menu);
    menu = oldmenu;
  }
  document.body.appendChild(menu);
  if(twocols == true) {
    float1.style.minHeight = float2.offsetHeight + "px";
    float2.style.minHeight = float1.offsetHeight - 14 + "px";
  }
  menu.style.display = "none";


function gmmenuClick(e) {
  if(e.target.id != "gmmenu") {
    if(document.getElementById("gmmenu")) {
      window.setTimeout(function () {var menu = document.getElementById("gmmenu"); menu.style.display = "none";}, 2);
    }
    document.removeEventListener("click", gmmenuClick, true);
  }
}

function gmmenuDblClick(e) { 
  var menu = document.getElementById("gmmenu");
  menu.style.display = "block";
  if(twocols == true) { menu.style.left = e.clientX - 164 } else { menu.style.left = e.clientX };
  menu.style.top = e.clientY;
  if(menu.offsetTop + menu.offsetHeight > window.innerHeight) {
    menu.style.top = e.clientY - menu.offsetHeight + "px";
  }
  menu.focus();

  document.addEventListener("click", gmmenuClick, true);
}

document.addEventListener("dblclick", gmmenuDblClick, false);