// ==UserScript==
// @name           spectralcolor cheater
// @namespace      com.05282.cheats
// @description    Solve Colors automatically
// @include        http://www.spectralcolor.com/game/huetest_kiosk
// ==/UserScript==

var rgbToHsv = function(r, g, b){
    r = r/255, g = g/255, b = b/255;
    var max = Math.max(r, g, b), min = Math.min(r, g, b);
    var h, s, v = max;

    var d = max - min;
    s = max == 0 ? 0 : d / max;

    if(max == min){
        h = 0; // achromatic
    }else{
        switch(max){
            case r: h = (g - b) / d + (g < b ? 6 : 0); break;
            case g: h = (b - r) / d + 2; break;
            case b: h = (r - g) / d + 4; break;
        }
        h /= 6;
    }

    return [h, s, v];
};

var mySort = function (a, b)
{
    return a[0] > b[0] ? 1 :
    a[0] < b[0] ? -1 :
    0;
}

var allDivs, thisDiv;
var sortDivs = new Array();

allDivs = document.evaluate(
    "//div[@class='fixed_patch']",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);

for (var i = 0; i < allDivs.snapshotLength; i++) {
    thisDiv = allDivs.snapshotItem(i);
	hsv = thisDiv.getAttribute('xrlab_background').split(",");
    thisDiv.innerHTML = hsv[0];
}

dragContainer = document.evaluate(
    "//div[@class='drag_container']",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);

	
for (var i = 0; i < dragContainer.snapshotLength; i++) {
    allDivs = dragContainer.snapshotItem(i).getElementsByTagName('div');
	sortDivs = new Array();
	for (var j = 0; j < allDivs.length; j++) {
		thisDiv = allDivs[j];
		rgb = thisDiv.style.backgroundColor;
		//rgb(164, 114, 88)
		rgbA = rgb.replace(/rgb\(|\)/g, "").split(",");		
		hsv = rgbToHsv(rgbA[0],rgbA[1],rgbA[2]);
		id = thisDiv.getAttribute('id');
		sortDivs.push(new Array(hsv[0],id));// = thisDiv.innerHTML = hsv[0];
	}
	sortDivs.sort(mySort);
	for (var k = 0; k < sortDivs.length; k++){ 
		console.log("div: " + sortDivs[k][1]);
		document.getElementById(sortDivs[k][1]).innerHTML = k;
	}
}