/*

+-----------------------------------------------------------------+
|   Created by Chirag Mehta - http://chir.ag/tech/download/ntc    |
|-----------------------------------------------------------------|
|               ntc js (Name that Color JavaScript)               |
+-----------------------------------------------------------------+

All the functions, code, lists etc. have been written specifically
for the Name that Color JavaScript by Chirag Mehta unless otherwise
specified.

This script is released under the: Creative Commons License:
Attribution 2.5 http://creativecommons.org/licenses/by/2.5/

Sample Usage:

  <script type="text/javascript" src="ntc.js"></script>

  <script type="text/javascript">

    var n_match  = ntc.name("#6195ED");
    n_rgb = n_match[0]; // This is the RGB value of the closest matching color
    n_name = n_match[1]; // This is the text string for the name of the match
    n_shade_rgb = n_match[2]; // This is the RGB value for the name of colors shade
    n_shade_name = n_match[3]; // This is the text string for the name of colors shade
    n_exactmatch = n_match[4]; // True if exact color match, False if close-match

    alert(n_match);

  </script>

*/

var ntc = {

  init: function() {
    var color, rgb, hsl;
    for(var i = 0; i < ntc.names.length; i++)
    {
      color = "#" + ntc.names[i][0];
      rgb = ntc.rgb(color);
      hsl = ntc.hsl(color);
      ntc.names[i].push(rgb[0], rgb[1], rgb[2], hsl[0], hsl[1], hsl[2]);
    }
  },

  name: function(color) {

    color = color.toUpperCase();
    if(color.length < 3 || color.length > 7)
      return ["#000000", "Invalid Color: " + color, "#000000", "", false];
    if(color.length % 3 == 0)
      color = "#" + color;
    if(color.length == 4)
      color = "#" + color.substr(1, 1) + color.substr(1, 1) + color.substr(2, 1) + color.substr(2, 1) + color.substr(3, 1) + color.substr(3, 1);

    var rgb = ntc.rgb(color);
    var r = rgb[0], g = rgb[1], b = rgb[2];
    var hsl = ntc.hsl(color);
    var h = hsl[0], s = hsl[1], l = hsl[2];
    var ndf1 = 0; ndf2 = 0; ndf = 0;
    var cl = -1, df = -1;

    for(var i = 0; i < ntc.names.length; i++)
    {
      if(color == "#" + ntc.names[i][0])
        return ["#" + ntc.names[i][0], ntc.names[i][1], ntc.shadergb(ntc.names[i][2]), ntc.names[i][2], true];

      ndf1 = Math.pow(r - ntc.names[i][3], 2) + Math.pow(g - ntc.names[i][4], 2) + Math.pow(b - ntc.names[i][5], 2);
      ndf2 = Math.abs(Math.pow(h - ntc.names[i][6], 2)) + Math.pow(s - ntc.names[i][7], 2) + Math.abs(Math.pow(l - ntc.names[i][8], 2));
      ndf = ndf1 + ndf2 * 2;
      if(df < 0 || df > ndf)
      {
        df = ndf;
        cl = i;
      }
    }

    return (cl < 0 ? ["#000000", "Invalid Color: " + color, "#000000", "", false] : ["#" + ntc.names[cl][0], ntc.names[cl][1], ntc.shadergb(ntc.names[cl][2]), ntc.names[cl][2], false]);
  },

  // adopted from: Farbtastic 1.2
  // http://acko.net/dev/farbtastic
  hsl: function (color) {

    var rgb = [parseInt('0x' + color.substring(1, 3)) / 255, parseInt('0x' + color.substring(3, 5)) / 255, parseInt('0x' + color.substring(5, 7)) / 255];
    var min, max, delta, h, s, l;
    var r = rgb[0], g = rgb[1], b = rgb[2];

    min = Math.min(r, Math.min(g, b));
    max = Math.max(r, Math.max(g, b));
    delta = max - min;
    l = (min + max) / 2;

    s = 0;
    if(l > 0 && l < 1)
      s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));

    h = 0;
    if(delta > 0)
    {
      if (max == r && max != g) h += (g - b) / delta;
      if (max == g && max != b) h += (2 + (b - r) / delta);
      if (max == b && max != r) h += (4 + (r - g) / delta);
      h /= 6;
    }
    return [parseInt(h * 255), parseInt(s * 255), parseInt(l * 255)];
  },

  // adopted from: Farbtastic 1.2
  // http://acko.net/dev/farbtastic
  rgb: function(color) {
    return [parseInt('0x' + color.substring(1, 3)), parseInt('0x' + color.substring(3, 5)),  parseInt('0x' + color.substring(5, 7))];
  },
  
  shadergb: function (shadename) {
    for(var i = 0; i < ntc.shades.length; i++) {
      if(shadename == ntc.shades[i][1])
        return "#" + ntc.shades[i][0];
    }
    return "#000000";
  },
  shades: [
["FF0000", "Rosso"],
["FFA500", "Arancione"],
["FFFF00", "Giallo"],
["008000", "Verde"],
["0000FF", "Blu"],
["EE82EE", "Viola"],
["A52A2A", "Marrone"],
["000000", "Nero"],
["808080", "Grigio"],
["FFFFFF", "Bianco"]
],
  names: [
["FFFFFF","bianco","Bianco"],
["FFE1DC","rosa tenue o incarnato","Bianco"],
["FFC0B6","sabbia rosata","Viola"],
["FF9F9F","salmone chiaro","Viola"],
["FF8080","salmone","Viola"],
["FF4040","salmone scuro","Rosso"],
["FF1F35","anguria","Rosso"],
["E01F25","porpora o vermiglione chiaro","Rosso"],
["C20000","cremisi o vermiglione","Rosso"],
["A00000","cremisi scuro","Marrone"],
["600000","mogano","Nero"],
["400000","castagna scuro","Nero"],
["200000","terra di siena bruciata","Nero"],
["D0B1A1","grigio rosso o caffellatte","Viola"],
["7F604F","grigio rosso scuro","Grigio"],
["FFEFCE","vaniglia","Bianco"],
["FFE1B0","sabbia","Bianco"],
["FFC281","crema o pelle","Arancione"],
["FF9F71","pesca chiaro","Arancione"],
["FF8141","pesca","Arancione"],
["FF421E","pesca scuro","Rosso"],
["FF1F10","mandarino","Rosso"],
["E12000","arancio bruciato","Rosso"],
["FF0000","rosso","Rosso"],
["E10000","rosso scuro","Rosso"],
["C21212","mattone","Marrone"],
["A11F12","terracotta","Marrone"],
["622100","cioccolata","Marrone"],
["E0A175","abbronzato o giallo di marte","Grigio"],
["A16252","ocra bruna o bronzeo","Grigio"],
["FFFFC2","paglierino o pergamena","Bianco"],
["FFFF80","giallo chiaro","Bianco"],
["FFFF35","giallo limone","Giallo"],
["FFFF00","giallo","Giallo"],
["FFE118","senape","Giallo"],
["FFBF18","oro","Arancione"],
["FF8100","arancio","Arancione"],
["E26200","arancio scuro","Arancione"],
["BF4100","marrone chiaro","Marrone"],
["A13F00","nocciola","Marrone"],
["824200","marrone scuro","Marrone"],
["604200","terra d'ombra","Marrone"],
["412000","terra d'ombra bruciata","Nero"],
["D2B06A","kaki","Grigio"],
["806210","safari o tabacco","Marrone"],
["FFFFD0","avorio","Bianco"],
["F1F1B4","lattemiele o avorio chiaro","Bianco"],
["F1F180","verde limone pallido","Bianco"],
["E0E074","avocado","Giallo"],
["E1E140","giallo o verde limone scuro","Giallo"],
["E1E100","giallo acido o zolfo","Giallo"],
["BFBF00","certosa","Arancione"],
["A1A100","verde oliva chiaro","Arancione"],
["808000","verde oliva","Verde"],
["626200","verde oliva scuro","Verde"],
["424200","marrone avana","Verde"],
["212100","bruno van dyck","Nero"],
["101000","avocado scuro","Nero"],
["C0C27C","terra verde chiaro o creta","Grigio"],
["82823F","grigio oliva","Grigio"],
["E0FFBF","verde pallido","Bianco"],
["C2FF91","sedano","Bianco"],
["80FF80","verde menta","Grigio"],
["41FF32","verde foglia","Verde"],
["00FF00","verde fluorescente","Verde"],
["00E100","verde chiaro","Verde"],
["00C200","verde","Verde"],
["00A000","verde prato o pisello","Verde"],
["008000","verde scuro","Verde"],
["006000","smeraldo","Verde"],
["004200","smeraldo scuro","Verde"],
["002100","verde pavone","Nero"],
["001000","foresta scura o seppia scuro","Nero"],
["82C168","verde bambi","Grigio"],
["3F621F","giada","Verde"],
["E0FFDF","nebbia marina","Bianco"],
["C1FFD5","verde acqua pallido","Bianco"],
["82FFCA","verde pastello","Bianco"],
["42FFC7","verde acqua chiaro","Grigio"],
["00FFB2","verde acqua","Grigio"],
["00E1AD","caraibi","Grigio"],
["00C196","verde bottiglia","Grigio"],
["009F82","verde mare","Grigio"],
["008250","verde acqua o bottiglia scuro","Verde"],
["00603C","malachite","Verde"],
["004023","sempreverde","Verde"],
["00201F","pino scuro","Nero"],
["00120C","antracite scuro","Nero"],
["81C097","grigio verde","Grigio"],
["3C613E","grigio verde scuro","Verde"],
["E0FFFF","azzurro ghiaccio","Bianco"],
["C1FFFF","azzurro pallido","Bianco"],
["80FFFF","azzurro pastello","Bianco"],
["42FFFF","turchese chiaro","Bianco"],
["00FFFF","turchese","Grigio"],
["00E0E0","azzurro pastello scuro","Grigio"],
["00C1C2","turchese scuro","Grigio"],
["008080","blu azteco o verde turchese","Grigio"],
["006062","abete o verde turchese scuro","Verde"],
["004041","verde cobalto scuro","Verde"],
["00323F","blu baltico","Nero"],
["002041","blu metallico","Nero"],
["00121F","blu metallico o notte scuro","Nero"],
["7FC2BC","grigio azzurro","Grigio"],
["37605E","verde pino grigio","Grigio"],
["C2EFFF","celeste polvere","Bianco"],
["A1E2FF","azzurro cristallo","Bianco"],
["82E0FF","zaffiro","Bianco"],
["00C0FF","ceruleo chiaro","Grigio"],
["00A0E0","ceruleo","Grigio"],
["0080C0","ceruleo scuro","Grigio"],
["4181C0","blu ardesia chiaro","Grigio"],
["0060A0","blu carta da zucchero","Grigio"],
["004080","blu ardesia","Grigio"],
["002F80","blu acciaio","Blu"],
["002060","blu denim","Nero"],
["00204F","blu ardesia scuro","Nero"],
["001040","blu aviazione","Nero"],
["71B2CF","grigio blu","Grigio"],
["104160","grigio blu scuro","Verde"],
["E0F1FF","blu artico","Bianco"],
["C0E1FF","fiordaliso chiaro","Bianco"],
["82C0FF","fiordaliso","Viola"],
["5291EF","azzurro","Grigio"],
["2181FF","wedgwood","Grigio"],
["0080FF","blu manganese","Blu"],
["0062E1","blu medio","Blu"],
["0041C2","mirtillo","Blu"],
["001FE2","blu marina","Blu"],
["0000FF","blu","Blu"],
["0020C2","blu cobalto","Blu"],
["0000E0","indaco","Blu"],
["0000C2","blu oltremare","Blu"],
["B1B1D2","nembo o plumbeo","Viola"],
["424282","grigio atlantico","Grigio"],
["E0E0FF","lilla nebbia","Bianco"],
["BFBFFF","lavanda pallido","Viola"],
["9F9FFF","lavanda chiaro","Viola"],
["8080FF","lavanda","Viola"],
["6181FF","violaceo o erica","Grigio"],
["4181FF","lilla o blu lilla","Grigio"],
["4141FF","lilla scuro","Blu"],
["0021BF","violetto di parma chiaro","Blu"],
["4040C2","blu violetto","Blu"],
["2020A0","iris o giaggiolo","Blu"],
["2222C0","iris o giaggiolo scuro","Blu"],
["0000A1","matita copiativa","Blu"],
["0000AF","blu di prussia","Blu"],
["9F9FE0","grigio lilla","Viola"],
["6260A1","violetto bluastro","Grigio"],
["E8E0FF","rosa azzurro","Bianco"],
["D2BFFF","rosato o ametista chiarissimo","Viola"],
["C29FFF","blu violaceo pallido","Viola"],
["C082FF","blu violaceo chiaro","Viola"],
["A160FF","rosa di parma","Viola"],
["8242FF","blu violaceo","Viola"],
["4200FF","violetto di cobalto","Blu"],
["4100C2","ciclamino scuro","Blu"],
["4000A2","ametista","Blu"],
["2200A1","uva","Blu"],
["000080","blu notte","Blu"],
["000061","uva nera o indaco","Nero"],
["00004F","uva americana","Nero"],
["C0A1E0","grigio ciclamino chiaro","Viola"],
["624181","grigio ciclamino","Grigio"],
["F1E0FF","rugiada","Bianco"],
["E1BFFF","prugna chiaro","Viola"],
["E29FFF","orchidea o viola chiaro","Viola"],
["E081FF","viola polvere","Viola"],
["C062FF","orchidea o viola","Viola"],
["C140FF","rosso violetto chiaro","Viola"],
["C200FF","fucsia","Viola"],
["8100FF","violetto scuro","Blu"],
["6000A1","viola rosso scuro","Blu"],
["400080","prugna","Marrone"],
["1F007F","prugna scuro","Nero"],
["1F0062","melanzana chiaro","Nero"],
["000040","carruba o melanzana","Nero"],
["E29FDE","malva chiaro","Viola"],
["603181","malva","Grigio"],
["FFE0FF","madreperla o rosa conchiglia","Bianco"],
["FFC1FD","rosa pallido","Bianco"],
["FF9FFF","orchidea rosata","Viola"],
["FF7FFF","rosa chiaro","Viola"],
["FF5FFF","fenicottero o viola chiaro","Viola"],
["FF42F9","magenta chiaro","Viola"],
["FF22FF","rosa confetto","Viola"],
["FF00FF","rosa carico","Viola"],
["E000E0","magenta","Viola"],
["A1009F","magenta scuro","Marrone"],
["800080","rosso prugna","Marrone"],
["40005F","rosso prugna scuro","Nero"],
["200042","mora","Nero"],
["EF91EB","grigio prugna chiaro","Viola"],
["602162","grigio prugna","Marrone"],
["FFE0F5","rosa perlato","Bianco"],
["FFC0E4","rosa selvatica","Viola"],
["FF9FCF","fiori di melo","Viola"],
["FF82C2","rosa pallido","Viola"],
["FF60AF","rosa ciliegia","Viola"],
["FF40A0","rosa","Viola"],
["F52B97","vinaccia pallido","Marrone"],
["FF0080","rosa scuro","Rosso"],
["DF007F","vinaccia chiaro","Marrone"],
["C0007F","vinaccia","Marrone"],
["820040","vinaccia scuro","Marrone"],
["620042","ribes nero","Marrone"],
["400040","bordeaux","Nero"],
["E29FC8","grigio vinaccia chiaro","Viola"],
["622152","grigio vinaccia","Marrone"],
["FFE0E6","ciliegia pallido o rosa cipria","Bianco"],
["FFC0CE","rosa quarzo","Viola"],
["FF9FA9","rosa corallo chiaro","Viola"],
["FF82A0","rosso pastello","Viola"],
["FF6088","rosa corallo","Viola"],
["FF4070","rosso corallo","Marrone"],
["FF2259","fragola","Rosso"],
["FF0041","rosso papavero","Rosso"],
["C20041","ciliegia","Marrone"],
["9F000F","lampone o rosso angelico","Marrone"],
["800000","scarlatto","Marrone"],
["620012","scarlatto scuro","Marrone"],
["410012","rubino scuro","Nero"],
["F18FBC","grigio rosa","Viola"],
["813F62","grigio rosa scuro","Marrone"],
["FFFFFF","bianco","Bianco"],
["F7F7F7","grigio 5%","Bianco"],
["EFEFEF","grigio 10%","Bianco"],
["E1E1E1","grigio 15%","Bianco"],
["D2D2D2","grigio 20%","Bianco"],
["C0C0C0","grigio 25%","Viola"],
["B2B2B2","grigio 30%","Grigio"],
["A2A2A2","grigio 35%","Grigio"],
["8F8F8F","grigio 40%","Grigio"],
["5F5F5F","grigio 60%","Grigio"],
["4F4F4F","grigio 70%","Grigio"],
["404040","grigio 75%","Marrone"],
["2F2F2F","grigio 80%","Nero"],
["000000","nero","Nero"]
]
  
}

ntc.init();
 
 
