
/**********************************************************************************
simulation of the ephemeride of Paris in 2050
Copyright Etienne Cliquet 2005 - ORDIGAMI.NET

***********************************************************************************/







/***********************************************************************************
variables globales du programme
***********************************************************************************/


var elements = new Array("a","body","div","p","h2","h3","h4","table","th","tr","td","li","ul","b","textarea","pre","label","blockquote","hr","sup","sub");
var mouseX = 0;
var mouseY = 0;

var aujourdhui = new Date();
var jour = aujourdhui.getDate();
var journee = Number(aujourdhui.getDay());
var mois = aujourdhui.getMonth();
var heure = Number(aujourdhui.getHours());
var minute = Number(aujourdhui.getMinutes());

var lev = lever[mois+1][jour-1];
// sunrise in 2006 in Paris
var couch = coucher[mois+1][jour-1];
// sunset in 2006 in Paris
var profondeur = 0;
// profondeur des couches de balises XHTML (ex:1/8 tag <b>)

var baseFond = 0;	
// tonalit� de d�part de la modulation qui n'ex�de pas tranche
var tranche = 0;	
// tranche de modulation de la couleur de 0 � 100
var uniteX = 0;
// unit� de la tranche par rapport � la largeur de l'�cran.
var uniteY = 0;	
// unit� de la tranche par rapport � la hauteur de l'�cran


 			


/*******************************************************************************
 D�tection du maximum de balises de la page Web
 Chacune d'elle fait l'objet d'un changement de la couleur de fond
*******************************************************************************/

function coloriage(){
if (mouseX > screen.width){mouseX = screen.width; }
// protection au cas ou la page soit trop large
if (mouseY > screen.height){mouseY = screen.height; }
// protection au cas ou la page soit trop longue
mouseX = screen.width - mouseX;
mouseY = screen.height - mouseY;
var a = baseFond + Math.floor(mouseX*uniteX);
var b = baseFond + Math.floor(mouseY*uniteY);
var c;
	for(i=0; i<elements.length; i++){
        var balise = document.getElementsByTagName(elements[i]);
	  profondeur = tranche/balise.length;
	      for (j=0; j<balise.length; j++){
		   c = baseFond + Math.floor(j*profondeur); 
		   
		   //balise[j].style.backgroundColor = "rgb("+c+"%,"+a+"%,"+b+"%)"; 
		   
		   			switch(elements[i]){

			   case "a" :
		  	    balise[j].style.backgroundColor = "rgb("+a+"%,"+b+"%,"+c+"%)"; //
			   break;
			   case "body" :
		  	    balise[j].style.backgroundColor = "rgb("+c+"%,"+a+"%,"+b+"%)"; //
			   break;
			   case "div" :
		  	    balise[j].style.backgroundColor = "rgb("+c+"%,"+b+"%,"+a+"%)"; //
			   break;
			   case "p" :
		  	    balise[j].style.backgroundColor = "rgb("+a+"%,"+c+"%,"+b+"%)"; //
			   break;
			   case "h2" :
		  	    balise[j].style.backgroundColor = "rgb("+a+"%,"+a+"%,"+b+"%)"; //
			   break;
			   case "h3" :
		  	    balise[j].style.backgroundColor = "rgb("+b+"%,"+a+"%,"+c+"%)"; //
			   break;
			   case "h4" :
		  	    balise[j].style.backgroundColor = "rgb("+c+"%,"+a+"%,"+c+"%)"; //
			   break;
			   case "table" :
		  	    balise[j].style.backgroundColor = "rgb("+b+"%,"+c+"%,"+c+"%)"; //
			   break;
			   case "th" :
		  	    balise[j].style.backgroundColor = "rgb("+c+"%,"+c+"%,"+b+"%)"; //
			   break;
			   case "tr" :
		  	    balise[j].style.backgroundColor = "rgb("+c+"%,"+b+"%,"+c+"%)"; //
			   break;
			   case "td" :
		  	    balise[j].style.backgroundColor = "rgb("+b+"%,"+c+"%,"+c+"%)"; //
			   break;
			   case "li" :
		  	    balise[j].style.backgroundColor = "rgb("+b+"%,"+a+"%,"+b+"%)"; //
			   break;
			   case "ul" :
		  	    balise[j].style.backgroundColor = "rgb("+a+"%,"+b+"%,"+a+"%)"; //
			   break;
			   case "b" :
		  	    balise[j].style.backgroundColor = "rgb("+a+"%,"+a+"%,"+c+"%)"; //
			   break;
			   case "strong" :
		  	    balise[j].style.backgroundColor = "rgb("+c+"%,"+a+"%,"+a+"%)"; //
			   break;
			   case "textarea" :
		  	    balise[j].style.backgroundColor = "rgb("+a+"%,"+b+"%,"+a+"%)"; //
			   break;
			   case "pre" :
		  	    balise[j].style.backgroundColor = "rgb("+a+"%,"+a+"%,"+b+"%)"; //
			   break;
			   case "label" :
		  	    balise[j].style.backgroundColor = "rgb("+b+"%,"+a+"%,"+a+"%)"; //
			   break;
			   case "blockquote" :
		  	    balise[j].style.backgroundColor = "rgb("+b+"%,"+a+"%,"+a+"%)"; //
			   break;
			   case "hr" :
		  	    balise[j].style.backgroundColor = "rgb("+c+"%,"+c+"%,"+c+"%)"; //
			   break;
			   case "sup" :
		  	    balise[j].style.backgroundColor = "rgb("+c+"%,"+b+"%,"+c+"%)"; //
			   break;
			   default : 
			    balise[j].style.backgroundColor = "rgb("+b+"%,"+b+"%,"+b+"%)"; //
			   break;
			}
			
	      }
	}
	//document.getElementById('content').style.color = 'red';
}


/*******************************************************************************
// D�termine la tonalit� du texte en fonction de l'heure de la journ�e
// D�termine la variable limite correspondant au lever et coucher du soleil
*******************************************************************************/


function ephemeride(){

var baseTexte = 0;
// tonalit� de base du texte
var baseLien = 0;
// tonalit� de base des liens

  if(heure >= Number(couch.getHours()) || heure <= Number(lev.getHours())){
  // Le soleil se couche et la nuit commence... 
     if(minute < Number(couch.getMinutes()) && heure == Number(couch.getHours())){
     // il n'est pas encore l'heure du coucher de soleil � la minute pr�t    
        tranche = 30;
        baseFond = 40;
        baseTexte = 90;
        baseLien = 80;
     }
     else if(minute >= Number(lev.getMinutes()) && heure == Number(lev.getHours())){
     //  Le soleil est lev� � la minute pr�t
        tranche = 30;
        baseFond = 70;
        baseTexte = 0;
        baseLien = 10;
     }
     else{
     // Le soleil est bien couch� cette fois...
        tranche = 30;
        baseFond = 10;
        baseTexte = 70;
        baseLien = 90; 
     }
  }
  
  else if(heure >= Number(lev.getHours()) || heure <= Number(couch.getHours())){
   // Le soleil se l�ve et la journ�e commence...
     if(minute <= Number(lev.getMinutes()) && heure == Number(lev.getHours())){
     //  Le soleil n'est pas encore lev� � la minute pr�t...
        tranche = 50;
        baseFond = 50;
        baseTexte = 0;
        baseLien = 0; 
     }
     else if(minute >= Number(couch.getMinutes()) && heure == Number(couch.getHours())){
     //  La nuit est tomb�e � la minut� pr�t...
        tranche = 30;
        baseFond = 10;
        baseTexte = 70;
        baseLien = 90; 
     }
     else{
     //  Le soleil est bien lev� maintenant... 
        tranche = 30;
        baseFond = 70;
        baseTexte = 0;
        baseLien = 10;
     }          
  }        
  
	for(i=0; i<elements.length; i++){
        var balise = document.getElementsByTagName(elements[i]);
	  profondeur = tranche/balise.length;
	      for (j=0; j<balise.length; j++){
		  c = baseFond + Math.floor(j*profondeur);
			if(elements[i]=="a"){  
			   	balise[j].style.color = "rgb("+(baseLien)+"%,"+(baseLien)+"%,"+(baseLien)+"%)";
			}
			else{
		 	  balise[j].style.color = "rgb("+(baseTexte + Math.floor(Math.random()*10))+"%,"+(baseTexte + Math.floor(Math.random()*10))+"%,"+(baseTexte + Math.floor(Math.random()*10))+"%)"; 
			} 
	      }
	}
uniteX = tranche/screen.width;
uniteY = tranche/screen.height;
coloriage();
}




/*******************************************************************************
MOUSE DETECTION
*******************************************************************************/


// D�tection du mouvement de la souris une fois la page charg�e
// Cette fonction appelle la fonction suivante qui d�termine les coordonn�es

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


// d�tection de la position de la souris en abscisse et ordonn�e 
// dont l'origine est situ�e au coin sup�rieur gauche de la fen�tre

function detect(e) {

  mouseX = getMouseXPos(e);
  // la position de la souris en x
  mouseY = getMouseYPos(e);
  // la position de la souris en y
  coloriage();
  // la fonction de coloriage est appel�e � chaque fois que la souris bouge
}

// D�tection du navigateur pour adopter la bonne variable

var docLayers = (document.layers) ? true:false;
var ns6=document.getElementById&&!document.all;


// Get the horizontal position of the mouse
// D�tection de la position en X dans ce cas

function getMouseXPos(e) {
  if (document.layers||ns6) {
    return parseInt(e.pageX+10);
  } else {
    return (parseInt(event.clientX+10) + parseInt(document.body.scrollLeft));
  }
}


// D�tection de la position en Y dans le cas de netscape 6

function getMouseYPos(e) {
  if (document.layers||ns6) {
    return parseInt(e.pageY);
  } else {
    return (parseInt(event.clientY) + parseInt(document.body.scrollTop));
  }
}




/*******************************************************************************
LOADING...
*******************************************************************************/
var browserName=navigator.appName; 

 if (browserName=="Netscape"){ 
    ephemeride();
	coloriage();
	curseur();
 }
 else { 
   if (browserName=="Microsoft Internet Explorer") {
	mouseX = Math.round(Math.random()*screen.width);
	mouseY = Math.round(Math.random()*screen.height);
    ephemeride();
	coloriage();
   }
 else
  {
    ephemeride();
	coloriage();
	curseur();
   }
 }


