// ==UserScript==
// @name DS Farbpopup V.3
// @description F&uuml;gt im internen Forum zum Gr&ouml;&szlig;en-Popup ein Farb-popup hinzu.
// @author F.Klein
// @namespace http://www.efceka.de
// @include       http://*.die-staemme.de/*forum.php*answer*
// @include       http://*.die-staemme.de/*forum.php*mode=new_thread*
// @include       http://*.die-staemme.de/*forum.php*edit_post_id*
// @include       http://*.die-staemme.de/*screen=mail*
// @include       http://*.die-staemme.de/*screen=memo*
// ==/UserScript==

// stolen functions:
hexa = new makearray(16); 
for(var i = 0; i < 10; i++) 
hexa[i] = i; 
hexa[10]="a"; hexa[11]="b"; hexa[12]="c"; 
hexa[13]="d"; hexa[14]="e"; hexa[15]="f"; 

function dehexize(Color){ 
	var colorArr = new makearray(3); 
	for (i=1; i<7; i++){ 
		for (j=0; j<16; j++){ 
			if (Color.charAt(i) == hexa[j]){ 
				if (i%2 !=0) { 
					colorArr[Math.floor((i-1)/2)]=eval(j)*16; 
				}else{ 
					colorArr[Math.floor((i-1)/2)]+=eval(j); 
				}
			} 
		} 
	} 
	return colorArr; 
} 

function makearray(n) { 
	this.length = n; 
	for(var i = 1; i <= n; i++) {	 
		this[i] = 0; 
	}
	return this; 
} 

function hex(i) { 
	if (i < 0) { 
		return "00"; 
	}else if (i > 255) { 
		return "ff"; 
	}else{ 
	return "" + hexa[Math.floor(i/16)] + hexa[i%16];
	}
} 

// edited stolen function:
function fade(startColor,endColor,step){ 
	s = dehexize(startColor.toLowerCase()); 
	e = dehexize(endColor.toLowerCase()); 
	var sr = s[0]; var sg = s[1]; var sb = s[2]; 
	var er = e[0]; var eg = e[1]; var eb = e[2]; 

	var text = '';

	for(var i = 0; i <= step; i++) { 
		var r = Math.floor( sr *((step - i) / step) + er * (i / step));
		var g = Math.floor( sg *((step - i) / step) + eg * (i / step));
		var b = Math.floor( sb *((step - i) / step) + eb * (i / step));
		var color = (hex(r)+hex(g)+hex(b)).toUpperCase();
		text = text + '<div style="background-color:#'+color+';height:14px;width:1px;cursor:pointer;float:left;" onmouseover="document.getElementById('+"'"+'color_display'+"'"+').style.background='+"'#"+color+"'"+';" onclick="'+"insertBBcode('message', '[color=#"+color+"]', '[/color]'); toggle_visibility('bb_colors');"+'"></div>';
	}
	return text+"<br>";
}

// my code:

if (document.getElementById('bb_sizes').parentNode.getElementsByTagName('div').length == 10) {
	var left = '200';
}
else {
	var left = '255';
}

var code = '';
var code = unescape("<table id=%22bb_colors%22 style=%22display: none; clear:both; position:absolute;z-index:100; border: 2px solid #804000; background-color:#efe6c9; top: 24px; left: "+left+"px;%22><tr><td>");
code = code + fade("#0000FF","#00FF00",100);
code = code + fade("#00FF00","#FFFF00",100);
code = code + fade("#FFFF00","#FF0000",100);
code = code + fade("#FF0000","#FF00FF",100);
code = code + fade("#FF00FF","#0000FF",100);
code = code + fade("#000000","#FFFFFF",100);
code = code + '<div style="border:1px black solid;height:20px;width:100px;margin-top:8px;" id="color_display"></div>';
code = code + '<div style="font-size:7px;color:gray;text-align:center;">DS_Farbpopup v3 by FvG</div></td></tr></table>';

if (document.getElementById('bb_sizes')) {
	document.getElementById('bb_sizes').parentNode.innerHTML = document.getElementById('bb_sizes').parentNode.innerHTML + code;
}
var as = document.getElementsByTagName('a');
var len = as.length;
for (var i = 0;i<len;i++) {
  if (as[i].title=='Farbe') {
    as[i].href="javascript:toggle_visibility('bb_colors');";
  }
}