-- I HAVE TO BLUA THIS?
local whiteColors = {
    SKINCOLOR_WHITE,
	SKINCOLOR_SILVER,
	SKINCOLOR_SLATE
}

local grayColors = {
	SKINCOLOR_GREY,
	SKINCOLOR_NICKEL,
	SKINCOLOR_BLACK,
	SKINCOLOR_SKUNK,
	SKINCOLOR_JET
}

local brownColors = {
	SKINCOLOR_SEPIA,
	SKINCOLOR_BEIGE,
	SKINCOLOR_WALNUT,
	SKINCOLOR_BROWN,
	SKINCOLOR_LEATHER,
	SKINCOLOR_RUST,
	SKINCOLOR_WRISTWATCH
}

local pinkColors = {
	SKINCOLOR_FAIRY,
	SKINCOLOR_SALMON,
	SKINCOLOR_PINK,
	SKINCOLOR_ROSE,
	SKINCOLOR_BRICK,
	SKINCOLOR_LEMONADE,
	SKINCOLOR_BUBBLEGUM,
	SKINCOLOR_LILAC
}

local redColors = {
	SKINCOLOR_CINNAMON,
	SKINCOLOR_RUBY,
	SKINCOLOR_RASPBERRY,
	SKINCOLOR_CHERRY,
	SKINCOLOR_RED,
	SKINCOLOR_CRIMSON,
	SKINCOLOR_MAROON,
	SKINCOLOR_FLAME,
	SKINCOLOR_SCARLET,
	SKINCOLOR_KETCHUP
}

local orangeColors = {
	SKINCOLOR_DAWN,
	SKINCOLOR_SUNSET,
	SKINCOLOR_CREAMSICLE,
	SKINCOLOR_ORANGE,
	SKINCOLOR_PUMPKIN,
	SKINCOLOR_ROSEWOOD,
	SKINCOLOR_BURGUNDY,
	SKINCOLOR_TANGERINE
}

local peachColors = {
	SKINCOLOR_PEACH,
	SKINCOLOR_CARAMEL,
	SKINCOLOR_CREAM
}

local goldColors = {
	SKINCOLOR_GOLD,
	SKINCOLOR_ROYAL,
	SKINCOLOR_BRONZE,
	SKINCOLOR_COPPER,
	SKINCOLOR_THUNDER
}

local yellowColors = {
	SKINCOLOR_POPCORN,
	SKINCOLOR_QUARRY,
	SKINCOLOR_YELLOW,
	SKINCOLOR_MUSTARD,
	SKINCOLOR_CROCODILE,
	SKINCOLOR_OLIVE
}

local teaColors = {
	SKINCOLOR_ARTICHOKE,
	SKINCOLOR_VOMIT,
	SKINCOLOR_GARDEN,
	SKINCOLOR_TEA,
	SKINCOLOR_PISTACHIO
}

local greenColors = {
	SKINCOLOR_LIME,
	SKINCOLOR_HANDHELD,
	SKINCOLOR_MOSS,
	SKINCOLOR_CAMOUFLAGE,
	SKINCOLOR_ROBOHOOD,
	SKINCOLOR_MINT,
	SKINCOLOR_GREEN,
	SKINCOLOR_PINETREE,
	SKINCOLOR_EMERALD,
	SKINCOLOR_SWAMP,
	SKINCOLOR_DREAM,
	SKINCOLOR_PLAGUE,
	SKINCOLOR_ALGAE
}

local skyColors = {
	SKINCOLOR_CARIBBEAN,
	SKINCOLOR_AZURE,
	SKINCOLOR_AQUA,
	SKINCOLOR_TEAL,
	SKINCOLOR_CYAN,
	SKINCOLOR_JAWZ,
	SKINCOLOR_CERULEAN,
	SKINCOLOR_NAVY,
	SKINCOLOR_SAPPHIRE
}

local steelColors = {
	SKINCOLOR_PIGEON,
	SKINCOLOR_PLATINUM,
	SKINCOLOR_STEEL
}

local blueColors = {
	SKINCOLOR_PERIWINKLE,
	SKINCOLOR_BLUE,
	SKINCOLOR_BLUEBERRY,
	SKINCOLOR_NOVA
}

local purpleColors = {
	SKINCOLOR_ULTRAVIOLET,
	SKINCOLOR_PURPLE,
	SKINCOLOR_FUCHSIA
}

local lavenderColors = {
	SKINCOLOR_PASTEL,
	SKINCOLOR_MOONSLAM,
	SKINCOLOR_DUSK,
	SKINCOLOR_TOXIC,
	SKINCOLOR_MAUVE,
	SKINCOLOR_LAVENDER,
	SKINCOLOR_BYZANTIUM,
	SKINCOLOR_POMEGRANATE
}

// merge sort everything
mergeSort(whiteColors, 1, #whiteColors)
mergeSort(grayColors, 1, #grayColors)
mergeSort(brownColors, 1, #brownColors)
mergeSort(pinkColors, 1, #pinkColors)
mergeSort(redColors, 1, #redColors)
mergeSort(orangeColors, 1, #orangeColors)
mergeSort(peachColors, 1, #peachColors)
mergeSort(goldColors, 1, #goldColors)
mergeSort(yellowColors, 1, #yellowColors)
mergeSort(teaColors, 1, #teaColors)
mergeSort(greenColors, 1, #greenColors)
mergeSort(skyColors, 1, #skyColors)
mergeSort(steelColors, 1, #steelColors)
mergeSort(blueColors, 1, #blueColors)
mergeSort(purpleColors, 1, #purpleColors)
mergeSort(lavenderColors, 1, #lavenderColors)

-- for loops will take 50 eons, time to binary search to finally be useful
rawset(_G, "DR_ApproximateSkinColorCode", function(color)
	local cstart;
	cstart = "\x83";

	if (binarySearch(whiteColors, 1, #whiteColors, color) ~= -1)
		cstart = "\x80"; // White
	elseif (binarySearch(grayColors, 1, #grayColors, color) ~= -1)
		cstart = "\x86"; // V_GRAYMAP
	elseif (binarySearch(brownColors, 1, #brownColors, color) ~= -1)
		cstart = "\x8e"; // V_BROWNMAP
	elseif (binarySearch(pinkColors, 1, #pinkColors, color) ~= -1)
		cstart = "\x8d"; // V_PINKMAP
	elseif (binarySearch(redColors, 1, #redColors, color) ~= -1)
		cstart = "\x85"; // V_REDMAP
	elseif (binarySearch(orangeColors, 1, #orangeColors, color) ~= -1)
		cstart = "\x87"; // V_ORANGEMAP
	elseif (binarySearch(peachColors, 1, #peachColors, color) ~= -1)
		cstart = "\x8f"; // V_PEACHMAP
	elseif (binarySearch(goldColors, 1, #goldColors, color) ~= -1)
		cstart = "\x8A"; // V_GOLDMAP
	elseif (binarySearch(yellowColors, 1, #yellowColors, color) ~= -1)
		cstart = "\x82"; // V_YELLOWMAP
	elseif (binarySearch(teaColors, 1, #teaColors, color) ~= -1)
		cstart = "\x8b"; // V_TEAMAP
	elseif (binarySearch(greenColors, 1, #greenColors, color) ~= -1)
		cstart = "\x83"; // V_GREENMAP
	elseif (binarySearch(skyColors, 1, #skyColors, color) ~= -1)
		cstart = "\x88"; // V_SKYMAP
	elseif (binarySearch(steelColors, 1, #steelColors, color) ~= -1)
		cstart = "\x8c"; // V_STEELMAP
	elseif (binarySearch(blueColors, 1, #blueColors, color) ~= -1)
		cstart = "\x84"; // V_BLUEMAP
	elseif (binarySearch(purpleColors, 1, #purpleColors, color) ~= -1)
		cstart = "\x81"; // V_PURPLEMAP
	elseif (binarySearch(lavenderColors, 1, #lavenderColors, color) ~= -1)
		cstart = "\x89"; // V_LAVENDERMAP
	end
	
	return cstart;
end)
