var iToHex = new Array(256);
var ColorMap;
var top=300;
var	left=500;
var picker="farbe";
var addwordcolor="addwordcolor";

function iToHexFuellen()
{
	var z = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
	var i, Stelle1 = 0, Stelle2 = 0; 
	for (i=0; Stelle2 < 16; i++)
	{
		iToHex[i] = z[Stelle2] + z[Stelle1];
		Stelle1++;
		if (Stelle1 == 16)
		{
			Stelle1 = 0;
			Stelle2++;
		}
	}
}

function CreateColorMap() 
{
	var XPos, YPos;
	var Rot, Gruen, Blau, Stuffe;
	var RotMult, GruenMult, BlauMult, YPosReal, YFaktor;
	var YPixels = 20;

	YFaktor = 255 / YPixels;
	Rot     = 255;
	Gruen   = 0;	
	Blau    = 0;
	Stuffe  = 1;
	XPos    = 0;

	ColorMap = new Array(306);

	while (Stuffe < 7)
	{
		YPosReal  = 0;
		YPos      = 0;
		RotMult   = Rot   / 255;
		GruenMult = Gruen / 255;
		BlauMult  = Blau  / 255;
		ColorMap[XPos] = new Array(YPixels);
		while (YPos <= 255)
		{
			ColorMap[XPos][Math.round(YPos / YFaktor)]         = "#" + iToHex[Math.round(YPos * RotMult) + 255 - YPos] + iToHex[Math.round(YPos * GruenMult) + 255 - YPos] +  iToHex[Math.round(YPos * BlauMult) + 255 - YPos];
			ColorMap[XPos][Math.round((510 - YPos) / YFaktor)] = "#" + iToHex[Math.round(YPos * RotMult)] +              iToHex[Math.round(YPos * GruenMult)] +               iToHex[Math.round(YPos * BlauMult)];
			YPosReal = YPosReal + YFaktor;
			YPos     = Math.round(YPosReal);
		}

		switch (Stuffe)
		{
		case 1:
			Gruen += 5;
			if (Gruen == 255) Stuffe = 2;
			break;

		case 2:
			Rot -= 5;
			if (Rot == 0) Stuffe = 3;
			break;

		case 3:
			Blau += 5;
			if (Blau == 255) Stuffe = 4;
			break;
		
		case 4:
			Gruen -= 5;
			if (Gruen == 0) Stuffe = 5;
			break;
	
		case 5:
			Rot += 5;
			if (Rot == 255) Stuffe = 6;
			break;
		case 6:
			Blau -= 5;
			if (Blau == 0) Stuffe = 7;
		}

		XPos ++;
    }
}

function GetColor(PosX, PosY)
{
	if (PosX < 0) PosX = 0;
	if (PosY < 0) PosY = 0;
	if (PosX >= ColorMap.length) PosX = ColorMap.length - 1;
	if (PosY >= ColorMap[1].length) PosY = ColorMap[1].length - 1;
	return ColorMap[PosX][PosY];
}

function OnMouseMove(Ereignis)
{
	var HeligkeitImagePosY;
	if(document.all) {
		if (document.all.ColorSel.style.visibility == "visible") {
			setColor(GetColor(event.offsetX-1, event.offsetY-1));
			//alert(Ereignis.layerX-1+","+ Ereignis.layerY-1)
		}
	}
	else if(window.netscape) {
		if (document.getElementsByTagName("div").ColorSel.style.visibility == "visible")
		{
			setColor(GetColor(Ereignis.layerX-1, Ereignis.layerY-1));
		}
	}
}
function setColor(color){
	document.ToolForm[addwordcolor].style.backgroundColor = color;
	document.forms['ToolForm'].elements[picker].value=color;
	document.ToolForm[addwordcolor].style.color = document.ToolForm[addwordcolor].style.backgroundColor;
	document.ToolForm[addwordcolor].value = color;
}
function ColSelectionKlick()
{
	if(document.all) {
		document.all.ColorSel.style.visibility = "hidden";
	}
	if(window.netscape) {
		document.getElementsByTagName("div").ColorSel.style.visibility = "hidden";
	}
	//window.document.forms['ToolForm'].elements['M'].focus();
}
function addwordcolorKlick(){
	top=260;
	left=440;
	picker="farbe";
	addwordcolor="addwordcolor";
	addwordcolorKlick_();
}
function addwordcolorKlick2(){
	top=310;
	left=440;
	picker="fonfarbe";
	addwordcolor="addwordcolor2";
	addwordcolorKlick_();
}
function addwordcolorKlick_()
{
	if(document.layers) {
		alert("  Browser not supported ! \n\"Microsoft Internet Explorer \" \n  or \"Netscape 6\" only !");
	}
	else if(document.all) {
		if (document.all.ColorSel.style.visibility != "visible") {
			document.all.ColorSel.style.top = top;
			document.all.ColorSel.style.left = left;
			document.all.ColorSel.style.visibility = "visible";
		}
		else {
			ColSelectionKlick();
		}
	}
	else if(window.netscape) {
		if (document.getElementsByTagName("div").ColorSel.style.visibility != "visible") {
			document.getElementsByTagName("div").ColorSel.style.top = top;
			document.getElementsByTagName("div").ColorSel.style.left = left; 
			//document.getElementsByTagName("div").ColorSel.style.width.match(/\d+/g) / 2;
			document.getElementsByTagName("div").ColorSel.style.visibility = "visible";
		}
		else {
			ColSelectionKlick();
		}
	}
}

function Initialize()
{
	if(document.all) {
		document.all.ColorSel.onmousemove = OnMouseMove;
		document.all.ColorSel.onmousedown = ColSelectionKlick;
	}
	if(window.netscape) {
		document.getElementsByTagName("div").ColorSel.onmousemove = OnMouseMove;
		document.getElementsByTagName("div").ColorSel.onmousedown = ColSelectionKlick;
	}
	
	
	document.ToolForm.addwordcolor.onclick = addwordcolorKlick;
	document.ToolForm.addwordcolor2.onclick = addwordcolorKlick2;
	//document.onclick=hideColorPicker;
	
	if(!document.layers) {
		iToHexFuellen();
		CreateColorMap();
	}
}
function hideColorPicker(){

document.all.ColorSel.style.visibility = "hidden";

}

Initialize();
