// $Id: webcolor.js,v 1.1 2008/03/09 20:09:46 torao Exp $

var _fgColor = "#000000";
var _bgColor = "#FFFFFF";
var _bdColor = "#FFFFFF";
var _selected = "foregroundcheck";

// 現在選択されている項目の色を設定します。
function colorpick(rgb, name){
	if(name == null || name == ""){
		name = rgb;
	}
	if(moyolab.getElementById("foregroundcheck").checked){
		setforeground(rgb, name);
	} else if(moyolab.getElementById("backgroundcheck").checked){
		setbackground(rgb, name);
	} else {
		setborder(rgb, name);
	}
	return;
}

// 前景色を設定します。
function setforeground(rgb, name){
	rgb = tohexcolor(rgb);
	if(name == null || name == ""){
		name = rgb;
	}
	moyolab.getElementById("foreground").value = name;
	moyolab.getElementById("sample").style.color = rgb;
	_fgColor = rgb;
	if(_selected == "foregroundcheck"){
		setnearcolor(rgb);
	}
	return;
}

// 背景色を設定します。
function setbackground(rgb, name){
	rgb = tohexcolor(rgb);
	if(name == null || name == ""){
		name = rgb;
	}
	moyolab.getElementById("background").value = name;
	moyolab.getElementById("sample").style.backgroundColor = rgb;
	_bgColor = rgb;
	if(_selected == "backgroundcheck"){
		setnearcolor(rgb);
	}
	return;
}

// 境界線色を設定します。
function setborder(rgb, name){
	rgb = tohexcolor(rgb);
	if(name == null || name == ""){
		name = rgb;
	}
	moyolab.getElementById("border").value = name;
	moyolab.getElementById("sample").style.borderColor = rgb;
	_bdColor = rgb;
	if(_selected == "bordercheck"){
		setnearcolor(rgb);
	}
	return;
}

function _nearcolorcallback(xmlhttp){

	// retrieve http response status code
	var status;
	try{
		if(xmlhttp.status != undefined && xmlhttp.status != 0){
			status = xmlhttp.status;
		} else {
			status = 13030;
		}
	} catch(e){
		// for Firefox, exception arised when page unloadding
		return;
	}

	// check http-level response and content
	if(status != 200 || xmlhttp.responseText == null){
		alert("ERROR: 接続できません (" + status + ")");
		return;
	}

	moyolab.getElementById("nearcolor").innerHTML = xmlhttp.responseText;

	return;
}

function selectitem(id){
	if(id == "foregroundcheck"){
		setnearcolor(_fgColor);
	} else if(id == "backgroundcheck"){
		setnearcolor(_bgColor);
	} else {
		setnearcolor(_bdColor);
	}
	_selected = id;
	return;
}

function setnearcolor(rgb){
	var url = "color.jsp";
	var query = "color=" + moyolab.escape(rgb);
	moyolab.ajax(url, query, _nearcolorcallback);
	return;
}

function tohexcolor(color){
	if(color.length > 1 && color.charAt(0) == "#"){
		return color;
	}
	var dec = parseInt(color);
	if(dec >= 0){
		var hex = dec.toString(16);
		while(hex.length < 6){
			hex = "0" + hex;
		}
		return "#" + hex.toUpperCase();
	}
	return "#FFFFFF";
}



