//======================================================================//
//   RGB/HSL  -  11/06/04  -  SubŘ 
//======================================================================//

var hue,lum,sat;  //  [0..240]
var red,green,blue;  //  [0..255]


//======================================================================//
//   Fonctions de conversions standards DEC <-> HEX
//======================================================================//
function DecToHex(dec){ return ((hex=dec.toString(16).toUpperCase()).length<2)?"0"+hex:hex; }
function HexToDec(hex){ return parseInt(hex,16); }


//======================================================================//
//   Décompose la couleur hexa en RGB
//======================================================================//
function SetColHex(colh){
   red=HexToDec(colh.substr(1,2)); 
   green=HexToDec(colh.substr(3,2)); 
   blue=HexToDec(colh.substr(5,2)); 
}


//======================================================================//
//   Retourne la couleur en hexa
//======================================================================//
function GetColHex(){
   return "#"+DecToHex(red*1)+DecToHex(green*1)+DecToHex(blue*1);
}


//======================================================================//
//   Conversion RGB -> HSL
//======================================================================//
function RGBtoHSL(){
   var edte,edsa,edlu; 
   var edcr=red/255; 
   var edcg=green/255; 
   var edcb=blue/255; 
   var Min=Math.min(edcr,Math.min(edcg,edcb));
   var Max=Math.max(edcr,Math.max(edcg,edcb));
   edlu=(Max+Min)/2; 
   if(Max==Min){edte=0;edsa=0;}else{
      if(edlu<0.5)edsa=(Max-Min)/(Max+Min);else edsa=(Max-Min)/(2-Max-Min);
      switch(Max){
         case edcr:edte=(edcg-edcb)/(Max-Min);break; 
         case edcg:edte=2+(edcb-edcr)/(Max-Min);break; 
         case edcb:edte=4+(edcr-edcg)/(Max-Min);break;}}
   edte=(edte*240)/6;if(edte<0)edte=edte+240;edsa*=240;edlu*=240; 
   hue=Math.round(edte); 
   sat=Math.round(edsa); 
   lum=Math.round(edlu);     
}


//======================================================================//
//   Conversion HSL -> RGB
//======================================================================//
function HSLtoRGB(){
   var edcr,edcg,edcb,temp1,temp2,temp3=new Array(); 
   var edte=hue/240; 
   var edsa=sat/240; 
   var edlu=lum/240; 
   if(edsa==0){edcr=edlu;edcg=edlu;edcb=edlu;}else{
      if(edlu<0.5)temp2=edlu*(1+edsa);else temp2=edlu+edsa-edlu*edsa; 
      temp1=2*edlu-temp2; 
      temp3[0]=edte+1/3; 
      temp3[1]=edte; 
      temp3[2]=edte-1/3;
      for(iLoop=0;iLoop<3;iLoop++){
         if(temp3[iLoop]<0)temp3[iLoop]=temp3[iLoop]+1; 
         if(temp3[iLoop]>1)temp3[iLoop]=temp3[iLoop]-1;
         if(6*temp3[iLoop]<1)temp3[iLoop]=temp1+(temp2-temp1)*6*temp3[iLoop];else 
            if(2*temp3[iLoop]<1)temp3[iLoop]=temp2;else 
               if(3*temp3[iLoop]<2)temp3[iLoop]=temp1+(temp2-temp1)*((2/3)-temp3[iLoop])*6;else 
                  temp3[iLoop]=temp1;}
      edcr=temp3[0];edcg=temp3[1];edcb=temp3[2];}
   edcr=edcr*255;edcg=edcg*255;edcb=edcb*255;    
   red=Math.round(edcr); 
   green=Math.round(edcg); 
   blue=Math.round(edcb); 
}


//======================================================================//
