/* Color functions that can be called to derive colors */

function red(i)
{
	return colors[i].red();
}

function green(i)
{
	return colors[i].g;
}

function blue(i)
{
	return colors[i].b;
}

function rgb(r, g, b)
{
	var o = new Color;
	o.r = r;
	o.g = g;
	o.b = b;
	return o;
}

function hsv(h, s, v)
{
	var o = new Color;
	var h1 = Math.floor(h / 60);
	s = s / 100;
	v = v / 100;
	var f = (h / 60) - h1;
	var p = v * (1 - s);
	var q = v * (1 - f * s);
	var t = v * (1 - (1 - f) * s);
	var r;
	var g;
	var b;
	switch (h1)
	{
		case 0:
			r = v;
			g = t;
			b = p;
			break;
		case 1:
			r = q;
			g = v;
			b = p;
			break;
		case 2:
			r = p;
			g = v;
			b = t;
			break;
		case 3:
			r = p;
			g = q;
			b = v;
			break;
		case 4:
			r = t;
			g = p;
			b = v;
			break;
		case 5:
			r = v;
			g = p;
			b = q;
			break;
	}
	o.r = Math.max(0,Math.min(1,r)) * 255;
	o.g = Math.max(0,Math.min(1,g)) * 255;
	o.b = Math.max(0,Math.min(1,b)) * 255;
	return o;
}

function hue(i)
{
	return colors[i].hue();
}

function saturation(i)
{
	return colors[i].saturation();
}

function value(i)
{
	return colors[i].value();
}

function hueshift(i, j)
{
	var h = colors[i].hue();
	var s = colors[i].saturation();
	var v = colors[i].value();
	h = h + j;
	return hsv(h, s, v);
}

