// Routines and fixed data for practice reading color codes.

// First, read in the base image files.

var black = new Image(2, 2);	black.src = "/images/black.gif"
var brown = new Image(2, 2);	brown.src = "/images/brown.gif"
var red = new Image(2, 2);	red.src = "/images/red.gif"
var orange = new Image(2, 2);	orange.src = "/images/orange.gif"
var yellow = new Image(2, 2);	yellow.src = "/images/yellow.gif"
var green = new Image(2, 2);	green.src = "/images/green.gif"
var blue = new Image(2, 2);	blue.src = "/images/blue.gif"
var violet = new Image(2, 2);	violet.src = "/images/violet.gif"
var grey = new Image(2, 2);	grey.src = "/images/grey.gif"
var white = new Image(2, 2);	white.src = "/images/white.gif"
var silver = new Image(2, 2);	silver.src = "/images/silver.gif"
var gold = new Image(2, 2);	gold.src = "/images/gold.gif"
var rbody = new Image(2, 2);	rbody.src = "/images/rbody.gif"


// Now define band meanings for valid resistance values

var band1 = new Array(23);
band1[0] = "1";
band1[1] = "1";
band1[2] = "1";
band1[3] = "1";
band1[4] = "1";
band1[5] = "1";
band1[6] = "1";
band1[7] = "2";
band1[8] = "2";
band1[9] = "2";
band1[10] = "2";
band1[11] = "3";
band1[12] = "3";
band1[13] = "3";
band1[14] = "3";
band1[15] = "4";
band1[16] = "4";
band1[17] = "5";
band1[18] = "5";
band1[19] = "6";
band1[20] = "6";
band1[21] = "7";
band1[22] = "8";
band1[23] = "9";

var band2 = new Array(23);
band2[0] = "0";
band2[1] = "1";
band2[2] = "2";
band2[3] = "3";
band2[4] = "5";
band2[5] = "6";
band2[6] = "8";
band2[7] = "0";
band2[8] = "2";
band2[9] = "4";
band2[10] = "7";
band2[11] = "0";
band2[12] = "3";
band2[13] = "6";
band2[14] = "9";
band2[15] = "3";
band2[16] = "7";
band2[17] = "1";
band2[18] = "1";
band2[19] = "2";
band2[20] = "8";
band2[21] = "5";
band2[22] = "2";
band2[23] = "1";

var band3 = new Array(8);
band3[0] = 1;
band3[1] = 10;
band3[2] = 100;
band3[3] = 1000;
band3[4] = 10000;
band3[5] = 100000;
band3[6] = 1000000;

var band4 = new Array(2);
band4[0] = "5%";
band4[1] = "10%";
band4[2] = "20%";

var colors = new Array(12);
colors[0] = "black";
colors[1] = "brown";
colors[2] = "red";
colors[3] = "orange";
colors[4] = "yellow";
colors[5] = "green";
colors[6] = "blue";
colors[7] = "violet";
colors[8] = "grey";
colors[9] = "white";
colors[10] = "gold";
colors[11] = "silver";
colors[12] = "rbody";

// Now select a resistance value at random
//

var resistor_value = 0;
var tolerance = "5%";

function get_resistor() {
	var significant = Math.floor(24 * Math.random());
	var maxmult = (significant > 8) ? 6 : 7 ;
	var mintol = (significant/2 == Math.floor(significant/2)) ? 2 : 1 ;
	mintol = (significant/4 == Math.floor(significant/4)) ? 3 : mintol ;
	var multiplier = Math.floor(maxmult * Math.random());
	var tolerance_band = Math.floor(mintol * Math.random());
	var sig_digits = parseInt(band1[significant] + band2[significant]);
	resistor_value = sig_digits * band3[multiplier];
	tolerance = band4[tolerance_band];
	display_resistor(band1[significant], band2[significant],
		multiplier, tolerance_band);
}


function display_resistor(first, second, third, fourth) {
	var my_band1 = parseInt(first);
	var my_band2 = parseInt(second);
	var my_band3 = parseInt(third);
	var my_band4 = parseInt(fourth);
	my_band4 += (my_band4 < 10) ? 10 : 0 ;
	overlay("stripe1", colors[my_band1]);
	overlay("stripe2", colors[my_band2]);
	overlay("stripe3", colors[my_band3]);
	overlay("stripe4", colors[my_band4]);
}


function check_response(response1, response2) {
	var my_response = response1;
	var my_tolerance = band4[response2];
	var my_value = parseFloat(my_response);
	var my_k = (my_response.indexOf("k") == -1) ? false : true;
	var my_K = (my_response.indexOf("K") == -1) ? false : true;
	var my_m = (my_response.indexOf("m") == -1) ? false : true;
	var my_M = (my_response.indexOf("M") == -1) ? false : true;
	my_k = my_k || my_K;
	my_m = my_m || my_M;
	if (my_k && my_m) {
		alert("You cannot specify both 'k' and 'M' for one value!");
		return false;
	}
	var mult = (my_k) ? 1000 : 1 ;
	mult = (my_m) ? 1000000 : mult ;
	my_value *= mult;
	if (my_value == resistor_value && my_tolerance == tolerance) {
		alert("You're right!");
		return true;
	} else {
		alert("Sorry, but no. Check the colors and try again");
		return false;
	}
}


function test(response1, response2) {
	if (check_response(response1.value, response2.selectedIndex)) {
		get_resistor();
		response1.value = "";
		document.forms[0].checkme.focus();
	}
}


// Overwrite page initialization function.

function initialize() {
	get_resistor();
	document.forms[0].checkme.focus();
}

