// Backup
// automatisches Backup des geschriebenen Textes ab einer bestimmten Wortzahl
// (c) 2010 by Dicope
// Mail: dicope [aht] plan-of-attack [puhnkt] net
// ==UserScript==
// @name          Backup
// @namespace     http://greasemonkey.ppopn.net
// @description   automatisches Backup des geschriebenen Textes ab einer bestimmten Wortzahl
// @include       http://82.149.226.131/bb/thread.php*
// @include       http://forum.counter-strike.de/bb/thread.php*
// @include       http://forum.cstrike.de/bb/thread.php*
// @include       http://forum.mods.de/bb/thread.php*
// @include       http://82.149.226.131/bb/newreply.php*
// @include       http://forum.counter-strike.de/bb/newreply.php*
// @include       http://forum.cstrike.de/bb/newreply.php*
// @include       http://forum.mods.de/bb/newreply.php*
// @include       http://82.149.226.131/bb/newthread.php*
// @include       http://forum.counter-strike.de/bb/newthread.php*
// @include       http://forum.cstrike.de/bb/newthread.php*
// @include       http://forum.mods.de/bb/newthread.php*
// @include       http://82.149.226.131/bb/editreply.php*
// @include       http://forum.counter-strike.de/bb/editreply.php*
// @include       http://forum.cstrike.de/bb/editreply.php*
// @include       http://forum.mods.de/bb/editreply.php*
// ==/UserScript==


/////////////// [ KONFIGURATION ] ///////////////

var minlength = 50;		// Mindestlaenge des Posts um gesichert zu werden
var infolength = 50;		// Anzahl Zeichen in der Infoleiste
var saveint = 5000;		// Speicherintervall in ms

////////////////////////////////////////////////

var textareas = document.getElementsByTagName("textarea");
if(textareas.length == 1) {
  var fsave = function() {
    var ta = document.getElementsByTagName("textarea")[0];
    if((ta.value != "") && (ta.value.length > minlength)) {
      GM_setValue("gmbackup", escape(ta.value));
    }
  };
  var frest = function() {
    var ta = document.getElementsByTagName("textarea")[0];
    ta.value = unescape(GM_getValue("gmbackup"));
    this.parentNode.parentNode.removeChild(this.parentNode);
  }
  if(GM_getValue("gmbackup", "") != "") {
    var leiste = document.createElement("div");
    leiste.style.position = "fixed";
    leiste.style.top = "0px";
    leiste.style.left = "0px";
    leiste.style.margin = "0px";
    leiste.style.width = "100%";
    leiste.style.backgroundColor = "#FFFFE1";
    leiste.style.color = "#000000";
    leiste.style.padding = "8px";
    leiste.style.paddingLeft = "52px";
    leiste.style.fontSize = "12px";
    var icon = document.createElement("img");
    icon.src = "data:image/gif,GIF89a%15%00%14%00%E6%00%00%00%00%00%B0%B8%C0ff%CC" + 
      "%20H%B0%F0%F8%FFPPP%90%88%E0%108%A0%D0%D8%F0%408pPH%9033fPP%B0%B0%B8%FF%80" +
      "x%D0%A0%A0%F0px%90%40%40%A0%B0%B8%F0%E0%E8%F0%200%40%60h%80PX%C0%B0%A8%F0%" +
      "90%90%F00%40%40ph%D0%80%88%F0%40H%B008%A0%FF%FF%FF%C0%C8%E0PXp%60%60%C0%F0" +
      "%F0%F0%C0%C0%D0%B0%A8%FF%80x%E0px%E0%408%80%99%99%FF%99%99%FF%60X%B0%40P%C" +
      "0%20%40%A0%C0%B8%FF%E0%E0%F00H%B0px%D0%BC%BF%ECPP%A0%A0%98%E0%40H%9008p%60" +
      "x%80%80%80%E0%40%40%80pp%D0%94%94%DEPX%B00P%B0P%60p%C0%C0%FFP%60%C0%D0%E0%" +
      "F00%40%A0%B0%B0%F0%94%94%EF%60h%C0%A0%A8%F0%C0%D0%E0%B0%B0%FFp%80%90%C0%C8" +
      "%D0%99%99%FF%FF%FF%FF%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%0" +
      "0%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%" +
      "00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00" +
      "%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%0" +
      "0%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%" +
      "00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00" +
      "%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%05%14%00K%00%2C%00%00" +
      "%00%00%15%00%14%00%00%07%CD%80K%82%83%84%85%86%87%88%89%8A%8B%12%12BB%17%0" +
      "F3%3A%3A%067%0E09%87B%3E(%1E%9F%A0%1E%04%16**%9B%3E%18%A1%9F%04%22%2B%0B%3" +
      "B%87E%3E7%AA%AC%13%3C%252%87%0F%3E%26%A1%B6%08%2F9%BA%863%3E9%A0%C0F%2C%02" +
      "%C4%85%3A%3E%02%AB%22%13%08F%1F%07!%0A%87%06-%0D%02%3F%16%2B%3C%2F%2C%D9%1" +
      "64%877GG(%18%1B7%259%1A!%16%0C%E9%86%0E%24%EE%20%FD%20%3D%15%ECq%C0q%08%86" +
      "%BB%0D%20%00d%40%00%C4%06%07%0E%11%08%1A%CA%81%02%1E%88%0C%10%5CL%40%12%24" +
      "B%90%13%874%60%B81%80B%80%00%23%92%14%08%12%A4C%82C1%88%EC%90AS%01%0D%1A8N" +
      "%9CHPc%91%CF%9F%40%83%0A%0A%04%00%3B";
    icon.style.position = "absolute";
    icon.style.left = "30px";
    icon.style.top = "5px";
    leiste.appendChild(icon);
    leiste.appendChild(document.createTextNode("Ein Backup ist vorhanden: "));
    var span = document.createElement("span");
    span.style.fontFamily = "monospace";
    span.appendChild(document.createTextNode("\"" + unescape(GM_getValue("gmbackup", "")).slice(0, infolength) + "\""));
    leiste.appendChild(span);
    var restore = document.createElement("button");
    restore.style.position = "absolute";
    restore.style.right = "170px";
    restore.style.top = "5px";
    restore.addEventListener("click", frest, false);
    restore.appendChild(document.createTextNode("wiederherstellen"));
    leiste.appendChild(restore);
    var deleteb = document.createElement("button");
    deleteb.style.position = "absolute";
    deleteb.style.right = "80px";
    deleteb.style.top = "5px";
    deleteb.innerHTML = "l&ouml;schen";
    deleteb.addEventListener("click", function() { GM_setValue("gmbackup", ""); this.parentNode.parentNode.removeChild(this.parentNode); }, false);
    leiste.appendChild(deleteb);
    document.body.appendChild(leiste);
  }
  window.setInterval(fsave, saveint);
  
} else {
  var links = document.getElementsByTagName("a");
  if(links[0].text == "Hier klicken, wenn die Weiterleitung nicht funktioniert") {
    GM_setValue("gmbackup", "");
  }
}