
var absolute = true;

function d2h(d)
{
	var v = d.toString(16)
	if(v.length==1) v = '0' + v;
	return v;
}

function h2d(h) 
{
	return parseInt(h,16);
}

function el(name)
{
	return document.getElementById(name);
}

function compute_brightnest()
{
	var v_f_brightnest = (el('f-red-dec').value * 299 + el('f-green-dec').value * 587 + el('f-blue-dec').value * 114);
	var v_b_brightnest = (el('b-red-dec').value * 299 + el('b-green-dec').value * 587 + el('b-blue-dec').value * 114);
	var v_contrast = v_f_brightnest - v_b_brightnest;
	if(absolute && (v_contrast < 0)) v_contrast = -v_contrast;
	el('contrast').textContent = v_contrast/1000.0;
	el('f-brightnest').textContent = v_f_brightnest/1000.0;
	el('b-brightnest').textContent = v_b_brightnest/1000.0;
	
	var res = el('showResults');
	res.style.color = '#' + el('f-red-hex').value + el('f-green-hex').value + el('f-blue-hex').value;
	res.style.backgroundColor = '#' + el('b-red-hex').value + el('b-green-hex').value + el('b-blue-hex').value;
}

function value_change(control)
{
	var split_name = new Array();
	split_name = control.id.split('-');
	if(split_name.length==3)
	{
		var other = split_name[0] + '-' + split_name[1] + '-';
		if(split_name[2]=='dec')
		{
			other += 'hex';
			if(isNaN(control.value*1)) control.value = 0;
			if(control.value>255) control.value = 255;
			if(control.value<0) control.value = 0;
			el(other).value = d2h(control.value * 1);
		}
		else
		{
			other += 'dec';
			var v = h2d(control.value);
			if(v>255) v = 255;
			if(v<0) v = 0;
			el(other).value = v;
			control.value = d2h(v);
		}
		compute_brightnest();
	}
	return false;
}

function initialize_calculator()
{
	var inputs = el('calculator').getElementsByTagName('input');
	for(i=0;i<inputs.length;++i)
	{
		inputs[i].onchange = function(){ return value_change(this);}
	}
	compute_brightnest();
	return false;
}

initialize_calculator();

