
function init_colour(myname){
	document[fc][myname] = new colour_obj(myname);
}

function colour_obj(myname){
	this.id = myname;
	this.type="colour";
	this.obj_name = fc + '[\"' + this.id + '\"]';
	this.width = 8;

	this.print_colour = print_colour;
	this.set_colour = set_colour;
	this.blue_select = blue_select;
	this.gray_select = gray_select;
	this.toggle_menu = toggle_menu;
	this.onkeydown = colour_keydown;

//	var temp = "<div class='text_label'>" + myname + "</div>\n";
	temp = "";
	temp += "<div id='" + "sample_" + myname + "' class='text_input' style='width:16pt;background-color:" + this.curr_colour + "'></div>\n";
	temp += "<div id='" + display_ext + myname + "' class='text_input'></div>\n";
	temp += "<div id='" + drop_ext + myname + "' class='drop'  onclick='" + this.obj_name + ".toggle_menu(event);'><img align='absmiddle' src='drop.gif'></div>\n";
	temp += "<div id='" + menu_ext + myname + "' class='colourmenu' style='display:none' onclick='cancel_bubble(event);'>";
	temp += "<div id='gray_" + myname + "' class='box'></div>\n";
	temp += "<div id='colour_" + myname + "' class='box'></div>\n";
	temp += "<div id='blue_" + myname + "' class='box'></div>\n";
	temp += "<div id='buttons_" + myname + "' class='table_row'></div>\n";
	temp += "</div>\n";

	document.write(temp);

	this.input = new getObj(myname);
	this.curr_colour = this.input.obj.value;
	this.orig_colour = this.curr_colour;

	this.sample = new getObj("sample_" + myname);
	this.display = new getObj(display_ext + myname);
	this.menu = new getObj(menu_ext + myname);
	this.drop = new getObj(drop_ext + myname);
	this.gray_table = new getObj("gray_" + myname);
	this.colour_table = new getObj("colour_" + myname);
	this.blue_table = new getObj("blue_" + myname);
	this.button_table = new getObj("buttons_" + myname);
	
	this.print_colour();
//	this.set_colour(this.curr_colour);
	set_pos(this.menu,this.display); 

}

function text2rgb(mytext){
	var temp = new Array();
	for(var i = 1; i < 7; i=i+2){
		var myval = eval("0X" + mytext.substr(i,2));
		if(myval > 15*17){
			myval = 15*17; 
		} else if(!(myval > 0)){
			myval = 0;
		}
		temp.push(myval);
	}
	return temp;
}

function rgb2text(myarr){
	return sprintf("%02x%02x%02x",myarr[0],myarr[1],myarr[2]);
}

function colour_outline(mycol,opt){
	var colour = mycol.curr_colour.substr(1);
	var main_col = "white";
	var minor_col = "white";
	if(opt){
		main_col = "red";
		minor_col = "orange";
	}
	colour_border(mycol.id + "_colour_" + colour, main_col);
	colour_border(mycol.id + "_blue_" + colour, minor_col);
	var temp = colour.substr(-2);
	colour_border(mycol.id + "_gray_" + temp+temp+temp, minor_col);
}

function set_colour(x){
	this.curr_colour = x;
	this.sample.style.backgroundColor = x;
	this.display.obj.innerHTML = x;
	this.input.obj.value = x;
}

function blue_select(e,x){
	colour_outline(this,0);
	this.set_colour(x);
	this.colour_table.obj.innerHTML = colour_table(this);
	colour_outline(this,1);
}

function gray_select(e,x){
	colour_outline(this,0);
	this.set_colour(x);
	this.colour_table.obj.innerHTML = colour_table(this);
	this.blue_table.obj.innerHTML = blue_table(this);
	colour_outline(this,1);
}

function colour_keydown(e){
	if (!e) var e = window.event;
	var mykey = getEventKey(e);
//	alert(mykey);
//	if(mykey >= 37 && mykey <= 40){
//        move_cell(this,mykey);
//		return false;
//    }
	if(mykey == 13){
		this.toggle_menu();
		return false;
	}
	if(mykey == 27){
		this.update_day(e,this.orig_id);
		this.toggle_menu();
		return false;
	}
	return true;
}

function print_colour(){
	this.gray_table.obj.innerHTML = gray_table(this);
	this.gray_select(1,this.curr_colour);
	this.button_table.obj.innerHTML = colour_buttons(this);
}

function colour_buttons(mycol){
	temp = "";
	temp += "<button onclick='" + mycol.obj_name + ".toggle_menu(event);'>OK</button>";
	temp += "&nbsp;";
	temp += "<button onclick='" + mycol.obj_name + ".gray_select(event,\""+mycol.orig_colour+"\");'>Reset</button>";
	return temp;
}

function colour_table(mycol){
	var temp = text2rgb(mycol.curr_colour);
	var b = temp[2];
	var temp = "";
	for(var y = 0; y<16; y++){
		temp += "<div class='row'>";
		for(var x=0;x<16;x++){
			var mytext = rgb2text([x*17,y*17,b]);
			var myid = mycol.id + "_colour_" + mytext;
			temp += "<div id='" + myid + "' onclick='" + mycol.obj_name + ".gray_select(event,\"#" + mytext + "\");' class='cell' style='background-color:#" + mytext + ";'>&nbsp;</div>";
		}
		temp += "</div>";
	}
	return temp;
}

function blue_table(mycol){
	var temp = text2rgb(mycol.curr_colour);
	var r = temp[0];
	var g = temp[1];
	var temp = "";
		for(x=0;x<16;x++){
			temp += "<div class='table_row'>";
			var mytext = rgb2text([r,g,(x*17)]);
			var myid = mycol.id + "_blue_" + mytext;
			temp += "<div id='" + myid + "' onclick='" + mycol.obj_name + ".blue_select(event,\"#" + mytext + "\");' class='cell' style='background-color:#" + mytext + ";'>&nbsp;</div>";
			temp += "</div>\n";
		}
	return temp;
}

function gray_table(mycol){
	var temp = "";
		for(x=0;x<16;x++){
			temp += "<div class='table_row'>";
			var mytext = rgb2text([x*17,x*17,x*17]);
			var myid = mycol.id + "_gray_" + mytext;
			temp += "<div id='" + myid + "' onclick='" + mycol.obj_name + ".gray_select(event,\"#" + mytext + "\");' class='cell' style='background-color:#" + mytext + ";'>&nbsp;</div>";
			temp += "</div>\n";
		}
	return temp;
}
