// UPDATE DISPLAY:
function update_sample(sample, color) {
	sample.style.backgroundColor = '#'+color;
}
function update_field(set) {
	var mixer = document.mixer;
	var field,color;
	if(set==1) { field=mixer.enter1; color = mixer.c1_1.value + mixer.c1_2.value + mixer.c1_3.value; }
	else { field=mixer.enter2; color = mixer.c2_1.value + mixer.c2_2.value + mixer.c2_3.value; }
	field.value = color;
	enter_color(field,mixer.sample1);
}
// UPDATE SELECT BOXES:
function set_selectbox(box, first_char) {
	for(var i=0; i<box.options.length; i++) {
		if(box.options[i].value.substring(0,1)==first_char) { box.options[i].selected=true; break; }
	}
}
function update_selectboxes() {
	var mixer = document.mixer;
	var enter1 = mixer.enter1.value; var enter2 = mixer.enter2.value;
	var e1_1 = enter1.substring(0,1); var e1_2 = enter1.substring(2,3); var e1_3 = enter1.substring(4,5);
	var e2_1 = enter2.substring(0,1); var e2_2 = enter2.substring(2,3); var e2_3 = enter2.substring(4,5);
	set_selectbox(mixer.c1_1,e1_1); set_selectbox(mixer.c1_2,e1_2); set_selectbox(mixer.c1_3,e1_3);
	set_selectbox(mixer.c2_1,e2_1); set_selectbox(mixer.c2_2,e2_2); set_selectbox(mixer.c2_3,e2_3);
}
// PROCESS INPUT:
function submit_action() {
	var mixer = document.mixer;
	var field1 = mixer.enter1; var field2 = mixer.enter2;
	if(!valid_color(field1.value) || field1.value.length<6) field1.value='000000';
	if(!valid_color(field2.value) || field2.value.length<6) field2.value='000000';
	enter_color(field1,mixer.sample1);//(initiate once!)
}
function enter_color(source,sample) {
	if(valid_color(source.value)) { set_uppercase(source); update_selectboxes(); match_colors(); }
	else if(source.value.length==6) { source.value=sample.style.backgroundColor.substring(1); }
}
// CONVERSIONS:
function get_dec(hex) {
	if(hex=='F')return 15; if(hex=='E')return 14; if(hex=='D')return 13; if(hex=='C')return 12;
	if(hex=='B')return 11; if(hex=='A')return 10; return hex;
}
function hex_to_dec(c,start) {
	var c1 = get_dec(c.substring(start,start+1));
	var c2 = get_dec(c.substring(start+1,start+2));
	return (c1*16)+c2*1;
}
// CALCULATE OUTPUT:
function match_colors() {
	var mixer = document.mixer;
	var c1,c2; c1=mixer.enter1.value; c2=mixer.enter2.value;
	update_sample(mixer.sample1,c1);
	update_sample(mixer.sample2,c2);
	var r1,g1,b1,r2,g2,b2;
	r1=hex_to_dec(c1,0); g1=hex_to_dec(c1,2); b1=hex_to_dec(c1,4);
	r2=hex_to_dec(c2,0); g2=hex_to_dec(c2,2); b2=hex_to_dec(c2,4);
	var diff1, diff2, diff3;
	diff1=Math.abs(r1-r2); diff2=Math.abs(g1-g2); diff3=Math.abs(b1-b2);
	var result = rounded( 100 - (diff1+diff2+diff3)/(3*255) * 100 );
	mixer.result.value = result + ' %';
}
