var _cellsparligne = 14; // nombre de cases couleur par ligne
var _lignes = 25; // nombre de lignes
var _largcellule = 16; // largeur d'une cellule (case couleur)
var _hautcellule = 10; // hauteur d'une cellule (case couleur)
var _espcellule = 1; // espace entre cellules
var _largtable = _cellsparligne * _largcellule;
var _titre = "Sélectionnez une couleur"; // titre de la page
var couleur = "";

// VARIABLES GLOBALES
var chhexa = "0123456789ABCDEF";
var palette = new Array("400000", "600000", "800000", "A00000", "C00000", "E00000", "FF0000", "FF2020", "FF4040", "FF6060", "FF8080", "FFA0A0", "FFC0C0", "FFE0E0", "400B0B", "601010", "801515", "A01B1B", "C02020", "E02525", "FF2B2B", "FF4545", "FF6060", "FF7B7B", "FF9595", "FFB0B0", "FFCBCB", "FFE5E5", "401500", "602000", "802B00", "A03500", "C04000", "E04B00", "FF5500", "FF6B20", "FF8040", "FF9560", "FFAB80", "FFC0A0", "FFD5C0", "FFEBE0", "402000", "603000", "804000", "A05000", "C06000", "E07000", "FF8000", "FF9020", "FFA040", "FFB060", "FFC080", "FFD0A0", "FFE0C0", "FFF0E0", "403000", "604000", "806000", "A07800", "C09000", "E0A800", "FFC000", "FFC820", "FFD040", "FFD860", "FFE080", "FFE8A0", "FFF0C0", "FFF0F8", "404000", "606000", "808000", "A0A000", "C0C000", "E0E000", "FFFF00", "FFFF20", "FFFF40", "FFFF60", "FFFF80", "FFFFA0", "FFFFC0", "FFFFE0", "304000", "486000", "608000", "78A000", "90C000", "A8E000", "C0FF00", "C8FF20", "D0FF40", "D8FF60", "E0FF80", "E8FFA0", "F0FFC0", "F8FFE0", "204000", "306000", "408000", "50A000", "60C000", "70E000", "80FF00", "90FF20", "A0FF40", "B0FF60", "C0FF80", "D0FFA0", "E0FFC0", "F0FFE0", "004000", "006000", "008000", "00A000", "00C000", "00E000", "00FF00", "20FF20", "40FF40", "60FF60", "80FF80", "A0FFA0", "C0FFC0", "E0FFE0", "00400B", "006010", "008015", "00A01B", "00C020", "00E025", "00FF2B", "20FF45", "40FF60", "60FF7B", "80FF95", "A0FFB0", "C0FFCB", "E0FFE5", "004015", "006020", "00802B", "00A035", "00C040", "00E04B", "00FF55", "20FF6B", "40FF80", "60FF95", "80FFAB", "A0FFC0", "C0FFD5", "E0FFEB", "004020", "006030", "008040", "00A050", "00C060", "00E070", "00FF80", "20FF90", "40FFA0", "60FFB0", "80FFC0", "A0FFD0", "C0FFE0", "E0FFF0", "004030", "006040", "008060", "00A078", "00C090", "00E0A8", "00FFC0", "20FFC8", "40FFD0", "60FFD8", "80FFE0", "A0FFE8", "C0FFF0", "F8FFF0", "004040", "006060", "008080", "00A0A0", "00C0C0", "00E0E0", "00FFFF", "20FFFF", "40FFFF", "60FFFF", "80FFFF", "A0FFFF", "C0FFFF", "E0FFFF", "003040", "004860", "006080", "0078A0", "0090C0", "00A8E0", "00C0FF", "20C8FF", "40D0FF", "60D8FF", "80E0FF", "A0E8FF", "C0F0FF", "E0F8FF", "002040", "003060", "004080", "0050A0", "0060C0", "0070E0", "0080FF", "2090FF", "40A0FF", "60B0FF", "80C0FF", "A0D0FF", "C0E0FF", "E0F0FF", "001540", "002060", "002B80", "0035A0", "0040C0", "004BE0", "0055FF", "206BFF", "4080FF", "6095FF", "80ABFF", "A0C0FF", "C0D5FF", "E0EBFF", "000040", "000060", "000080", "0000A0", "0000C0", "0000E0", "0000FF", "2020FF", "4040FF", "6060FF", "8080FF", "A0A0FF", "C0C0FF", "E0E0FF", "150040", "200060", "2B0080", "3500A0", "4000C0", "4B00E0", "5500FF", "6B20FF", "8040FF", "9560FF", "AB80FF", "C0A0FF", "D5C0FF", "EBE0FF", "200040", "300060", "400080", "5000A0", "6000C0", "7000E0", "8000FF", "9020FF", "A040FF", "B060FF", "C080FF", "D0A0FF", "E0C0FF", "F0E0FF", "300B40", "481060", "601580", "781BA0", "9020C0", "A825E0", "C02BFF", "C845FF", "D060FF", "D87BFF", "E095FF", "E8B0FF", "F0CBFF", "F8E5FF", "400040", "600060", "800080", "A000A0", "C000C0", "E000E0", "FF00FF", "FF20FF", "FF40FF", "FF60FF", "FF80FF", "FFA0FF", "FFC0FF", "FFE0FF", "500030", "780048", "A00060", "C80078", "F00090", "F800A8", "F000C0", "F028C8", "F050D0", "F078D8", "F0A0E0", "F0C8E8", "F0F0F0", "F0F8F8", "400020", "600030", "800040", "A00050", "C00060", "E00070", "FF0080", "FF2090", "FF40A0", "FF60B0", "FF80C0", "FFA0D0", "FFC0E0", "FFE0F0", "400015", "600020", "80002B", "A00035", "C00040", "E0004B", "FF0055", "FF206B", "FF4080", "FF6095", "FF80AB", "FFA0C0", "FFC0D5", "FFE0EB", "000000", "202020", "404040", "606060", "707070", "808080", "909090", "A0A0A0", "B0B0B0", "C0C0C0", "D0D0D0", "E0E0E0", "F0F0F0", "FFFFFF");
// *****************************************************************

// convertit une chaine hexadécimale en valeur décimale (ex. "A0" -> 160)
// retourne la valeur décimale 
function hexaEnDec(hexa) {
   return eval(chhexa.indexOf(hexa.charAt(1)) + 16 * chhexa.indexOf(hexa.charAt(0)));
}

// convertit un nombre décimal (>0 et < 255) en une chaine hexadécimale,
// (ex : 160 -> "A0"); retourne la chaine hexadécimale
function decEnHexa(nombre) {
   return chhexa.charAt(Math.floor(nombre / 16)) + chhexa.charAt(nombre % 16);
}

// affecte les valeurs des cases "rouge", "vert", "bleu" à la case "hexa"
// après les avoir convertit en hexadécimal
function RVBEnHexa() {
   document.choix.hexa.value = "#" + decEnHexa(document.choix.rouge.value) + decEnHexa(document.choix.vert.value) + decEnHexa(document.choix.bleu.value);
}

// récupère la valeur hexadécimale de la case "hexa",
// la décompose en rouge, vert et bleu et affecte ces 3 valeurs
// aux cases "rouge", "vert" et "bleu"
function hexaEnRVB(rvb) {
   var code = rvb.toUpperCase();
   if (code.charAt(0) == "#") code = code.substring(1, code.length);
   var ch = code.substring(0, 2);
   document.choix.rouge.value = hexaEnDec(ch);
   ch = code.substring(2, 4);
   document.choix.vert.value = hexaEnDec(ch);
   ch = code.substring(4, 6);
   document.choix.bleu.value = hexaEnDec(ch);
}
   
// permet, en cliquant une couleur de la palette,
// d'afficher cette couleur dans les cases "hexa" (code couleur)
// et "rouge", "vert" et "bleu"
function infos_couleur(rvb) {
   document.choix.hexa.value = "#" + rvb;
   hexaEnRVB(rvb); 
}

// affiche une case couleur de la palette de couleurs
function carre(rgb) {
   var texte = "<td width=" + _largcellule + " height=" + _hautcellule + " bgcolor=#" + rgb + ">";
   texte += "<a href='javascript:infos_couleur(\"" + rgb + "\")'><img src='vide.gif' width=" + eval(_largcellule - _espcellule) + " height=" + eval(_hautcellule - _espcellule) + " border=0 alt='#" + rgb + "'></a></td>\n"; 
   return texte;
}

// affiche une case vide
function carre_vide() {
	 var texte = "<td width=" + _largcellule + " height=" + _hautcellule + ">";
	 texte += "<img src='images/vide.gif' width=" + eval(_largcellule - _espcellule) + " height=" + eval(_hautcellule - _espcellule) + " border=0></td>\n"; 
   return texte;
}
	 
function affiche_palette() {
   var i = 0;
   var j = 0;
   var ch = "";
   ch += "<table border=0 width=" + _largtable + " cellspacing=" + _espcellule + " cellpadding=0><tr>";
   while (i < palette.length) {
      if (j == _cellsparligne) {
         ch += "</tr><tr>";
         j = 1;
      }
      else j++;
      ch += carre(palette[i++]);
   }
   while (j++ < _cellsparligne) ch += carre_vide();  
   ch += "</tr></table>";
   return ch;
}

function detectNav() {
   if (navigator.userAgent.indexOf('MSIE') != -1) return "IE"
   else return "NN";
}

function affiche_boites() {
   var largBoiteRVB = 3;
   var largBoiteCode = (navigator.userAgent.indexOf('MSIE') != -1) ? 8 : 6;
   var ch = "<form name='choix' onSubmit='confirme_couleur()'>";
   ch += "<table border=0 cellspacing='4' cellpadding='0'>\n";
   ch += "<tr><td>Rouge :<br><input type='text' name='rouge' size=" + largBoiteRVB + " value='' onChange='RVBEnHexa()'></td></tr>\n";
   ch += "<tr><td>Vert :<br><input type='text' name='vert' size=" + largBoiteRVB + " value='' onChange='RVBEnHexa()'></td></tr>\n";
   ch += "<tr><td>Bleu :<br><input type='text' name='bleu' size=" + largBoiteRVB + " value='' onChange='RVBEnHexa()'></td></tr>\n";
   ch += "<tr><td>Code couleur :<br><input type='text' name='hexa' size=" + largBoiteCode + " value='' onChange='hexaEnRVB1(this.value)'></td></tr>\n";
   ch += "<tr><td><input type='submit' name='OK' value='Valider'><br><br>";
   ch += "<input type='reset' name='Annuler' value='Reset'></td></tr>\n";
   ch += "<tr><td>&nbsp;</td></tr>";
   ch += "</table></form>";
   return ch;
}

function page_couleurs() {
   var ch = "<table width='100%' height='100%' cellspacing='0' cellpadding='10' border='0' align='center'><tr><td class='bodyline' valign='top'><table border=0 width=" + eval(_largtable + 50) + ">";
   ch += "<tr><th colspan=2 align=center><font color='#000000'>" + _titre + "</font></th></tr>";
   ch += "<tr><td width=" + _largtable + ">" + affiche_palette() + "</td><td valign=top>" + affiche_boites() + "</td></tr>";
   ch += "</td></tr></table></table>";
   return ch;
}

function confirme_couleur() {
    var args = location.search.substring(1);
	var tab = args.split("&");
    
	
	color = document.choix.hexa.value;
	opener.document.all[tab[0]].value = color;
	opener.document.all[tab[1]].bgColor = color;
	
    window.close();
}

function donne_couleur() {
   return document.choix.hexa.value;
}
