function rgb2hsb(vRed, vGreen, vBlue){
    var vHue, vSaturation, vBrightness;
    
    vRed = parseFloat(vRed);
    vGreen = parseFloat(vGreen);
    vBlue = parseFloat(vBlue);
    
    var cmax = (vRed > vGreen) ? vRed : vGreen;
    
    if (vBlue > cmax) {
        cmax = vBlue;
    }
    
    var cmin = (vRed < vGreen) ? vRed : vGreen;
    
    if (vBlue < cmin) {
        cmin = vBlue;
    }
    
    vBrightness = cmax / 255.0;
    
    if (cmax != 0) {
        vSaturation = (cmax - cmin) / cmax;
    }
    else {
        vSaturation = 0;
    }
    
    if (vSaturation == 0) {
        vHue = 0;
    }
    else {
        var redc = (cmax - vRed) / (cmax - cmin);
        var greenc = (cmax - vGreen) / (cmax - cmin);
        var bluec = (cmax - vBlue) / (cmax - cmin);
        
        if (vRed == cmax) {
            vHue = bluec - greenc;
        }
        else 
            if (vGreen == cmax) {
                vHue = 2.0 + redc - bluec;
            }
            else {
                vHue = 4.0 + greenc - redc;
            }
        
        vHue = vHue / 6.0;
        if (vHue < 0) 
            vHue = vHue + 1.0;
    }
    
    return {
        hue: Math.round(vHue * 360),
        saturation: Math.round(vSaturation * 100),
        brightness: Math.round(vBrightness * 100)
    };
}


function hsb2rgb(vHue, vSaturation, vBrightness){
    var i, f, p, q, t, vReturn;
    
    vHue = parseFloat(vHue / 360);
    vSaturation = parseFloat(vSaturation / 100);
    vBrightness = parseFloat(vBrightness / 100);
    
    if (vHue >= 1.0) 
        vHue %= 1.0;
    if (vSaturation > 1.0) 
        vSaturation = 1.0;
    if (vBrightness > 1.0) 
        vBrightness = 1.0;
    
    var tov = Math.floor(255 * vBrightness);
    
    var vReturn = {};
    
    if (vSaturation == 0.0) {
        vReturn.red = vReturn.green = vReturn.blue = tov;
    }
    else {
        vHue *= 6.0;
        
        i = Math.floor(vHue);
        
        f = vHue - i;
        
        p = Math.floor(tov * (1.0 - vSaturation));
        q = Math.floor(tov * (1.0 - (vSaturation * f)));
        t = Math.floor(tov * (1.0 - (vSaturation * (1.0 - f))));
        
        switch (i) {
            case 0:
                vReturn.red = tov;
                vReturn.green = t;
                vReturn.blue = p;
                break;
                
            case 1:
                vReturn.red = q;
                vReturn.green = tov;
                vReturn.blue = p;
                break;
                
            case 2:
                vReturn.red = p;
                vReturn.green = tov;
                vReturn.blue = t;
                break;
                
            case 3:
                vReturn.red = p;
                vReturn.green = q;
                vReturn.blue = tov;
                break;
                
            case 4:
                vReturn.red = t;
                vReturn.green = p;
                vReturn.blue = tov;
                break;
                
            case 5:
                vReturn.red = tov;
                vReturn.green = p;
                vReturn.blue = q;
                break;
        }
    }
    
    return vReturn;
}

function setColor(from, to)
{
	var blue = to % 256;
	var green = ( ( to - blue ) / 256 ) % 256;
	var red = ( to - blue - green*256 ) / 256 / 256;
	
	var hsb = rgb2hsb(red, green, blue);

	
	var rgb = hsb2rgb( (hsb.hue + 340) % 360, (hsb.saturation + 49) % 100, 100 );
//	var rgb = hsb2rgb( (hsb.hue + 340) % 360, 23, 100 );
	$(".lines .color1").css("background-color", "rgb(" + rgb.red + "," + rgb.green + "," + rgb.blue + ")");
	
	rgb = hsb2rgb( (hsb.hue + 349) % 360, (hsb.saturation + 95) % 100, Math.min(hsb.brightness + 15 , 100) );
//	rgb = hsb2rgb( (hsb.hue + 349) % 360, 69 , 89 );
	$(".lines .color2").css("background-color", "rgb(" + rgb.red + "," + rgb.green + "," + rgb.blue + ")");
	
	rgb = hsb2rgb( (hsb.hue + 355) % 360, 100, Math.min( hsb.brightness + 3, 100 ) );
//	rgb = hsb2rgb( (hsb.hue + 355) % 360, 100, 77 );
	$(".lines .color3").css("background-color", "rgb(" + rgb.red + "," + rgb.green + "," + rgb.blue + ")");
	
	rgb = hsb2rgb( (hsb.hue + 346) % 360, 100, Math.min(hsb.brightness + 15, 100) );
//	rgb = hsb2rgb( (hsb.hue + 346) % 360, 100, 89 );
	$(".lines .color4").css("background-color", "rgb(" + rgb.red + "," + rgb.green + "," + rgb.blue + ")");
	
	rgb = hsb2rgb( (hsb.hue + 2 ) % 360, Math.min(hsb.saturation + 25, 100), (hsb.brightness + 83) % 100 );
//	rgb = hsb2rgb( (hsb.hue + 2 ) % 360, 99, 67 );
	$(".lines .color5").css("background-color", "rgb(" + rgb.red + "," + rgb.green + "," + rgb.blue + ")");
	
	rgb = hsb2rgb( (hsb.hue + 358) % 360, 99, (hsb.brightness + 97) % 100 );
//	rgb = hsb2rgb( (hsb.hue + 358) % 360, 99, 71 );
	$(".lines .color6").css("background-color", "rgb(" + rgb.red + "," + rgb.green + "," + rgb.blue + ")");
	
}