


/******************************************************************************
		     HSL TO RGB
******************************************************************************/

   // hsl -> rgb helpers
   
   function printvec(vec){
      document.write(vec[0].toString()+" : "+
                     vec[1].toString()+" : "+
                     vec[2].toString()+"<br>");
   }

   function normalize(vec){
      l=Math.sqrt(vec[0]*vec[0]+vec[1]*vec[1]+vec[2]*vec[2]);
      if (l==0) l=1.0;
      vec[0]/=l;
      vec[1]/=l;
      vec[2]/=l;
   }

   function crossprod(vec1,vec2){
      var vec=[vec1[1]*vec2[2]-vec1[2]*vec2[1],
               vec1[2]*vec2[0]-vec1[0]*vec2[2],
               vec1[0]*vec2[1]-vec1[1]*vec2[0]];
      return vec;
   }

   var diagonal=[1.0,1.0,1.0];   
   normalize(diagonal);
   var rax=[1.0,0.0,0.0];
   var pdrax=crossprod(rax,diagonal);
   normalize(pdrax);
   rax=crossprod(diagonal,pdrax);

   function intercub(o,v){
      var s,sf,i;
      s=1E15;
      for (i=0;i<3;i++){
        if (v[i]){
          sf=-o[i]/v[i];
          if (sf>=0 && sf<s) s=sf;
          sf=(1.0-o[i])/v[i];
          if (sf>=0 && sf<s) s=sf;
        }
      }
      return s;
   }

   function hsl2rgb(v){ 
      var h=v[0]; 
      if (h>0) 
         h=v[0]-Math.floor(v[0]); 
      else{ 
         h=-h; 
         h=v[0]-Math.floor(v[0]); 
         h=1.0-h; 
      } 
      h*=3.0; 
      var r=0; 
      if (h<1.0) 
         r=2.0-2.0*h; 
      else 
         r=2.0-2.0*(3.0-h); 
      if (r>1.0) r=1.0; 
      var g=0; 
      if (h<2.0) 
         g=2.0-2.0*Math.abs(h-1.0); 
      if (g>1.0) g=1.0; 
      var b=0; 
      if (h>1.0) 
         b=2.0-2.0*Math.abs(h-2.0); 
      if (b>1.0) b=1.0; 

      var s=v[1]; 
      if (s<0.0) s=0.0; 
      if (s>1.0) s=1.0; 

      r=s*r+1.0-s; 
      g=s*g+1.0-s; 
      b=s*b+1.0-s; 

      var l=v[2]; 
      if (l<0.0) l=0.0; 
      if (l>1.0) l=1.0; 

      var rgb=[l*r,l*g,l*b]; 

      return rgb; 
   } 


/****************************************************************************
			RGB TO HEXADECIMAL
****************************************************************************/

   function hexdigit(v){
     return v<0 ? "0" : v>15 ? "F" : v<10 ? v.toString() : String.fromCharCode(55+v);
   }

   function hex256(v){
     v=Math.floor(v);
     if (v<0) v=0;
     if (v>255) v=255;
     return hexdigit(Math.floor(v/16))+hexdigit(v%16);
   }

   function hexcolor(r,g,b){
     return "#"+hex256(r)+hex256(g)+hex256(b);
   }

   function hexhslcolor(h,s,l){
     var hsl=[h,s,l];
     var rgb=hsl2rgb(hsl);
     return hexcolor(rgb[0]*255,rgb[1]*255,rgb[2]*255);
   }



/***************************************************************************
			RGB COLOR RANGE
***************************************************************************/
 

   var now = new Date();
   var tmsec = now.getTime();
   //var tday = tmsec/86400000;
   var tday = tmsec/60000;

   tday *= 2.0*Math.PI;
   var rcoef = Math.cos(1.0*tday)*.5+.5;
   var vcoef = Math.cos(1.33609*tday)*.5+.5;
   var bcoef = Math.cos(0.7577*tday)*.5+.5;

   //background
      // Rouge
      var br0 = 5;
      var br1 = 30;
      var br = br0+rcoef*(br1-br0);
      // Vert
      var bv0 = 5;
      var bv1 = 30;
      var bv = bv0+vcoef*(bv1-bv0);
      // Bleu
      var bb0 = 5;
      var bb1 = 30;
      var bb = bb0+bcoef*(bb1-bb0);

   //foreground
      var max = br;
        if (bv>max) max=bv;
        if (bb>max) max=bb;
      var a = (256-max)-20;
      var fr = br+a;
      var fv = bv+a;
      var fb = bb+a;

   //link
      var b = 256/max;
      lr = br*b;   
      lv = bv*b;
      lb = bb*b;
 

   function color(){
   document.bgColor = hexcolor(br,bv,bb);
   document.fgColor = hexcolor(fr,fv,fb);			
   document.linkColor = hexcolor(lr,lv,lb);
   document.alinkColor = hexcolor(lr,lv,lb); 
   document.vlinkColor = hexcolor(lr,lv,lb); 
   }

/***************************************************************************
			     GET CURSOR POSITION
***************************************************************************/


//Browser checking and syntax variables
var docLayers = (document.layers) ? true:false;
var ns6=document.getElementById&&!document.all;

// Get the horizontal position of the mouse
function getMouseXPos(e) {
  if (document.layers||ns6) {
    return parseInt(e.pageX+10);
  } else {
    return (parseInt(event.clientX+10) + parseInt(document.body.scrollLeft));
  }
}


// Get the vertical position of the mouse
function getMouseYPos(e) {
  if (document.layers||ns6) {
    return parseInt(e.pageY);
  } else {
    return (parseInt(event.clientY) + parseInt(document.body.scrollTop));
  }
}


/***************************************************************************
			     COLORIZE
***************************************************************************/

var baseW = 1/screen.width;
var baseH = 1/screen.height;
var baseT = 60;
var couleur = Math.random();
var mouseX;
var mouseY;
fontMini = 4;
fontMaxi = 40;
var typo = new Array("Arial","Courier New","Arial Black","Comic Sans MS","Georgia","Impact","Symbol","Times New Roman","Trebuchet MS");

// couleur de d�part pour le fond, le texte et les liens 

//Collection of functions to get mouse position
function detect(e) {

  today = new Date();
  mouseX = getMouseXPos(e);
  mouseY = getMouseYPos(e);
  mouseAverage = (mouseX + mouseY)/2;
  screenAverage = (screen.width + screen.height)/2;

  posX = mouseX*baseW;
  posY = mouseY*baseH;
  posZ = (posX+posY)/2;
  ms = 0.2+(today.getSeconds()/150);

 // THIS IS HEAD SECTION

 //general background
 document.bgColor=hexhslcolor(posX,posY,0.2+posZ/4);

 // The title of the page color
 title = document.getElementById("nom");
 //title.style.fontSize = fontMini + Math.floor(mouseAverage/15) + "px";
 title.style.color = hexhslcolor(posX,posY/2,0.5);
	//title.style.fontFamily = typo[random(9)];

 // THIS IS MAIL FORM SECTION

 // The mailing general 
 //var lecourriel = document.getElementById("courrier");
 //lecourriel.style.color = hexhslcolor(posX,0.5,1);

 // The email
 var lemail = document.getElementById("sonemail");
 lemail.style.backgroundColor = hexhslcolor(posY/1.3,posX/1.3,ms);

 // The message
 var lemessage = document.getElementById("message");
 lemessage.style.backgroundColor = hexhslcolor(posY/1.3,posX,ms);

 // The button
 var leboutton = document.getElementById("boutton");
 leboutton.style.backgroundColor = hexhslcolor(posY,posX/3,ms);



 // THIS IS COLUMN TITLES SECTION posX/posY/ms

 // The years column title
 var lesannees = document.getElementById("annee");
 lesannees.style.color = hexhslcolor(posX,posY/1.5,0.9);

 // The theoric column title
 var lesecrits = document.getElementById("ecrit");
 lesecrits.style.color = hexhslcolor(posX/1.1,posY/1.4,0.9);

 // The collective column title
 var lescollectifs = document.getElementById("collectif");
 lescollectifs.style.color = hexhslcolor(posX/1.2,posY/1.3,0.9);

 // The organization column title
 var lesorganisations = document.getElementById("organisation");
 lesorganisations.style.color = hexhslcolor(posX/1.3,posY/1.2,0.9);

 // The personnal column title
 var lespersonnels = document.getElementById("personnel");
 lespersonnels.style.color = hexhslcolor(posX/1.4,posY/1.1,0.9);

 // The pedagogic column title
 var lesenseignements = document.getElementById("enseignement");
 lesenseignements.style.color = hexhslcolor(posX/1.5,posY,0.9);


 // THIS IS YEARS LINES SECTION posY/posX/ms

 // 2005
 var line2005 = document.getElementById("ligne2005");
 line2005.style.color = hexhslcolor(posY/1.6, posX, 0.9);

 // 2004
 var line2004 = document.getElementById("ligne2004");
 line2004.style.color = hexhslcolor(posY/1.5,posX/1.1,0.9);

 // 2003
 var line2003 = document.getElementById("ligne2003");
 line2003.style.color = hexhslcolor(posY/1.4,posX/1.2,0.9);

 // 2002
 var line2002 = document.getElementById("ligne2002");
 line2002.style.color = hexhslcolor(posY/1.3,posX/1.3,0.9);

 // 2001
 var line2001 = document.getElementById("ligne2001");
 line2001.style.color = hexhslcolor(posY/1.2,posX/1.4,0.9);

 // 2000
 var line2000 = document.getElementById("ligne2000");
 line2000.style.color = hexhslcolor(posY/1.1,posX/1.5,0.9);

 // 1999
 var line1999 = document.getElementById("ligne1999");
 line1999.style.color = hexhslcolor(posY,posX/1.6,0.9);

 return true;

}


/***************************************************************************
			     BEGINNING OF THE PROGRAM
***************************************************************************/

function begin(){

self.moveTo(0,0);
self.resizeTo(screen.width,screen.height);

  document.bgColor = hexhslcolor(couleur,0.6,0.2);
  document.fgColor = hexhslcolor(couleur,0.3,0.9);	
  document.linkColor = hexhslcolor(couleur,0.9,1);
  document.alinkColor = hexhslcolor(couleur,0.9,1); 
  document.vlinkColor = hexhslcolor(couleur,0.9,1);

//Let the browser know when the mouse moves
  if (docLayers) {
    document.captureEvents(Event.MOUSEMOVE)
    document.onMouseMove = detect;
  } else {
    document.onmousemove = detect;
  }
}




//lesnouvelles.style.backgroundColor = hexhslcolor(posX,ms,0.1+(posY/3));
