var colorLevels = Array('0', '3', '6', '9', 'C', 'F');
var colorArray = Array();
var input_obj;
var picker_obj;

function colorpicker(_input, _picker_obj)
{
	picker_obj = _picker_obj;
	input_obj = document.getElementById(_input);
	if(!input_obj)
	{
		alert('Feld nicht gefunden!');
		return false;
	}
	container = document.getElementById('colorpicker_container');
	if(!container) container = create_container();
	if(container.style.display == 'block')
	{
		hide_colorpicker();
	}
	else
	{
		container.style.display = 'block';
		coors = findPos(picker_obj);
		container.style.top = (coors[1]+17) + 'px';
		container.style.left = coors[0] + 'px';
	}
}

function hide_colorpicker()
{
	document.getElementById('colorpicker_container').style.display = 'none';
}

function create_container()
{
	container = document.createElement('div');
	attr = document.createAttribute('id');
	attr.nodeValue = 'colorpicker_container';
	container.setAttributeNode(attr);
	create_colorArray();
	add_colorPalette(container);
	document.getElementsByTagName('body')[0].appendChild(container);
	return container;
}

function setcolor(color)
{
	input_obj.value = color;
	picker_obj.style.backgroundColor = color;
	hide_colorpicker();
}

function create_colorArray()
{
	colorArray = Array();
	for(r = 0;r < colorLevels.length; r++)
	{
		for(g = 0;g < colorLevels.length; g++)
		{
			for(b = 0;b < colorLevels.length; b++)
			{
				colorArray[colorArray.length] = '#'+colorLevels[g]+colorLevels[g]+colorLevels[r]+colorLevels[r]+colorLevels[b]+colorLevels[b];
			}
		}
	}
}

function add_colorPalette(element)
{
	for(i = 0; i < colorArray.length; i++)
	{
		if(colorArray[i].indexOf('#99') == 0) continue;
		if(colorArray[i].indexOf('#CC') == 0) continue;
		if(colorArray[i].indexOf('#FF') == 0) continue;
		link = document.createElement('a');
		attr = document.createAttribute('href');
		attr.nodeValue = 'javascript:setcolor(\''+colorArray[i]+'\')';
		link.setAttributeNode(attr);
		attr = document.createAttribute('class');
		attr.nodeValue = 'colorpicker';
		link.setAttributeNode(attr);
		link.innerHTML = '&nbsp;&nbsp;&nbsp;';
		link.style.backgroundColor = colorArray[i];
		if((i)%18 == 0 && i != 0) element.appendChild(document.createElement('br'));
		element.appendChild(link);
	}
	for(i = 0; i < colorArray.length; i++)
	{
		if(colorArray[i].indexOf('#00') == 0) continue;
		if(colorArray[i].indexOf('#33') == 0) continue;
		if(colorArray[i].indexOf('#66') == 0) continue;
		link = document.createElement('a');
		attr = document.createAttribute('href');
		attr.nodeValue = 'javascript:setcolor(\''+colorArray[i]+'\')';
		link.setAttributeNode(attr);
		attr = document.createAttribute('class');
		attr.nodeValue = 'colorpicker';
		link.setAttributeNode(attr);
		link.innerHTML = '&nbsp;&nbsp;&nbsp;';
		link.style.backgroundColor = colorArray[i];
		if((i)%18 == 0 && i != 0) element.appendChild(document.createElement('br'));
		element.appendChild(link);
	}
}