// JavaScript Document
// animation chutte plongeur
// auteur: JL Solignac pour Club-Galatee

var timer = null; //attente de l'annimation
var binterval = null;  //cycle de déplacement de la bouteille
var linterval = null;  //cycle de déplacement du logo
var interval = null; // cycle de chute

function StartTimer() {
// initialition décompte temps avant chutte du plongeur 
  var attente = Math.random()*30*1000; // délai = aléatoire entre 0 et x millisecondes 
  timer = setTimeout("Anim()",attente);
} 

function Anim() {
if (timer) {
		 clearTimeout(timer);
		 timer = null;
		}
// début de l'animation
// déplacement du logo
StartMoveLogo();
StartChute()
}
	 
 function StartMoveLogo() {
//Initialisation du déplacement du Logo
xl0 = parseInt (document.getElementById("logo").style.left);
xl1 = xl0;
wl0 = parseInt (document.getElementById("logo").style.width);
vl0 = 10; //vitesse de déplacement du logo (constante) 
tl  = 0;
flagl = false;
if (!linterval) {
     linterval = setInterval("movelogo()", 100);
	 }  // appel de la fonction toutes les 10 millisecondes
}

function movelogo () { 
//déplacement du logo à vitesse constante, on sort à gauche et on rerentre à droite
// le temps passe
tl++;
xl = xl0-vl0*tl;
if (xl+wl0 < -5) {
    xl0 = wf(); // on repart de l'autre de l'autre cotè au prochain coup
	tl = 0
	flagl = true;
	}
if (xl > 0 && xl <= xl1 && flagl) { // on est revenu à la position de départ on s'arrète
        xl = xl1;
	    if (linterval) {
		 clearInterval(linterval);
		 linterval = null;
		}
		if (!linterval && !interval && !binterval) {
		    // tous les déplacements sont finis, on peut relancer l'attente pour un autre passage
			StartTimer(); // et c'est reparti
			}
}
// on déplace le logo
document.getElementById("logo").style.left = xl;
}

function wf() {
// recupére la largeur de la frame 

var w="";
if (document.all) // Internet Explorer
{
w=document.body.clientWidth;
}
else  // netscape
{
w=window.innerWidth;
}
return w;
}

function StartChute() {
// visibilité du plongeur
document.getElementById("plongeur").style.visibility ="visible";
//initialisation de la chutte
y0 = parseInt(document.getElementById( "plongeur" ).style.top); 
v0 = 0;
t = 0;
if (!interval) {
     interval = setInterval("tombe()", 100);
	 }  // appel de la fonction toutes les 10 millisecondes
}

function tombe () { 
h = parseInt(document.getElementById( "plongeur" ).style.height) //hauteur de l'image
// le temps passe
t++;
// un peu de physique
y = t*t + v0*t + y0;
v = 2*t + v0;
// on arrive au bord de l'eau
if (y >= parseInt(document.getElementById( "bottle2" ).style.top)-h+15) { 
    StartRebond(v); // on fait sauter la bouteille 
	var hvisible = (parseInt(document.getElementById( "bottle2" ).style.top)+15)-y;
	document.getElementById( "plongeur" ).style.clip = "rect( 0 90 "+hvisible+" 0 )";
	}
	
//on est en bas on repositionne tout
if (y >= parseInt(document.getElementById( "bottle2" ).style.top)+15) {
	    if (interval) {
		 clearInterval(interval);
		 interval = null;
		}
		y = -h;
		document.getElementById("plongeur").style.visibility ="hidden";
		document.getElementById( "plongeur" ).style.clip = "rect( 0 90 "+h+" 0 )";
		if (!linterval && !interval && !binterval) {
		    // tous les déplacements sont finis, on peut relancer l'attente pour un autre passage
			StartTimer(); // et c'est reparti
			}
}

// on déplace l'image
document.getElementById("plongeur").style.top = y;

}

function StartRebond(v) {
// visibilité de la bouteille
document.getElementById("bottle").style.visibility ="hidden";
document.getElementById("bottle1").style.visibility ="visible";
//initialisation de la chutte
//yb0 = parseInt(document.getElementById( "bottle1" ).style.top); 
yb0 = 486; // haut de la bouteille
vb0 = -0.5*v; //vitesse initiale = vitesse inverse de celle du plongeur
tb = 0;
if (!binterval) {
     binterval = setInterval("rebond()", 100);
	 }  // appel de la fonction toutes les 10 millisecondes
}

function rebond () { 
//On fait sauter la bouteille
// le temps passe
tb++;
// un peu de physique
yb = tb*tb + vb0*tb + yb0;
vb = 2*tb + vb0;
// on revient dans l'eau

if (yb >= yb0) { 
	yb = yb0;
	// on rebondit en perdant un peu de vitesse
	vb0 = -0.7*vb;
	tb = 0;
	// il faut bien s'arreter un jour

	if (Math.abs(vb0) < 5) {	
	    if (binterval) {
		 	clearInterval(binterval);
		 	binterval = null;
			}
		// visibilité de la bouteille
		document.getElementById("bottle").style.visibility ="visible";
		document.getElementById("bottle1").style.visibility ="hidden";
		if (!linterval && !interval && !binterval) {
		    // tous les déplacements sont finis, on peut relancer l'attente pour un autre passage
			StartTimer(); // et c'est reparti
			}
	}
}

// on déplace l'image
document.getElementById("bottle1").style.top = yb;
}