/*
 * Les Box sont composées de deux layers :
 * - Le premier sert à afficher le contenu en cours
 * - Le deuxième récupère le futur contenu, et le swap est utilisé pour intervertir les deux layers
 */

var CurLayer        = "";
var CurFonction     = ""; //vas nous servir pour les timeout et cleartimeout
var TimerDelay      = 8000; // delai d'attente entre chaque chargement d'image
var TransitionSpeed = 700; // vitesse de transition (minimum 100)

// lancement de la fonction de chargement


/*********************************************
*   FONCTION getLeft(l)
**********************************************/
function getLeft(l) {
  // si et tant que nous trouvons un parent, nous additionnons les "LEFT" de tous les parents
  if (l.offsetParent) return (l.offsetLeft + getLeft(l.offsetParent));
  // sinon nous renvoyonsle LEFT
  else return (l.offsetLeft);
}


/*********************************************
*   FONCTION getTop(l)
**********************************************/
function getTop(l) {
  // si et tant que nous trouvons un parent, nous additionnons les "TOP" de tous les parents
  if (l.offsetParent) return (l.offsetTop + getTop(l.offsetParent));
  // sinon nous renvoyonsle TOP
  else return (l.offsetTop);
}


var loadBoxContent = function ( BoxId, BoxType ){

  // on appelle l'ajax
  var zeUrl = ASSurl + '?BoxType='+BoxType;
  AjaxRequest( zeUrl, BoxId );

  // ensuite nous démarrons notre timer
	setTimeout( 'loadBoxContent( \''+BoxId+'\', \''+BoxType+'\')', TimerDelay );


}


var displayBoxContent = function( BoxId, Content ){

  var Layer2 = "";

  if ( CurLayer == '' ){
    CurLayer = BoxId + '_Layer1';
  }

  if ( CurLayer == BoxId + '_Layer1' ){
    Layer2 = BoxId + '_Layer2';
  }else{
    Layer2 = BoxId + '_Layer1';
  }

  // sinon, récupération de l'élément
  var CurEl  = document.getElementById( CurLayer );
  var NextEl = document.getElementById( Layer2 );

  var zePosRef = document.getElementById( BoxId );
  var zewidth = zePosRef.offsetWidth - 5;

  NextEl.style.left = zePosRef.offsetLeft + getLeft( zePosRef ) + "px";
  NextEl.style.top  = zePosRef.offsetTop + getTop( zePosRef ) + 20 + "px";
  NextEl.style.width = zewidth + "px";
/*
  CurEl.style.top  = zePosRef.offsetTop + getTop( zePosRef ) + "px";
  CurEl.style.position  = 'absolute';
  CurEl.style.left = zePosRef.offsetLeft + getLeft( zePosRef ) + "px";
  CurEl.style.width = zewidth + "px";
*/
  NextEl.style.position = 'absolute';

  // nous mettons le contenu dedans
  NextEl.innerHTML = Content;

  displayTransition( BoxId );
}


var hideBoxContent = function ( BoxId ){





}


var displayTransition = function ( BoxId ){

  // tansitionType = "fadeIn" ou "fadeOut" ou "swap", par défaut swap
  var Layer2 = "";

  if ( CurLayer == '' ){
    CurLayer = BoxId + '_Layer1';
  }

  if ( CurLayer == BoxId + '_Layer1' ){
    Layer2 = BoxId + '_Layer2';
  }else{
    Layer2 = BoxId + '_Layer1';
  }

  // sinon, récupération de l'élément
  var CurEl  = document.getElementById( CurLayer );
  var NextEl = document.getElementById( Layer2 );

  NextEl.style.display  = 'block';

  // si un argument à été passé en paramètre (pour forcer la durée de timeout)
  if ( arguments.length > 1 ){
    // alors nous le récupérons
    i = arguments[1];
  }else{
    // sinon nous appliquons la valeur par défaut
    i = 100;
  }

  var speed = ( TransitionSpeed / 100 );

  // en fonction du navigateur, la transparence n'est pas gérée de la même façon
  if (navigator.appName.indexOf("Netscape")!=-1&&parseInt(navigator.appVersion)>=5){
    CurEl.style.MozOpacity  = ( i / 100 );
    NextEl.style.MozOpacity = ( ( 100 - i ) / 100 );
  }else{
    CurEl.style.filter  = "alpha(opacity=" + i + ")";
    NextEl.style.filter = "alpha(opacity=" + ( 100 - i ) + ")";
  }
/*
  if ( i == 50 ){
    CurEl.style.zIndex = 333;
    NextEl.style.zIndex = 334;
  }
*/
	// si i est = 0, alors nous effaçons directement le fenêtre
	if ( i == 0 ) {
    // nous annulons le timeout si il y en a un
    clearTimeout(CurFonction);
    i = 100;
    CurEl.innerHTML = '';
    // en fonction du navigateur, la transparence n'est pas gérée de la même façon
    if (navigator.appName.indexOf("Netscape")!=-1&&parseInt(navigator.appVersion)>=5){
      CurEl.style.MozOpacity  = 0;
      NextEl.style.MozOpacity = 1;
    }else{
      CurEl.style.filter  = "alpha(opacity=0)";
      NextEl.style.filter = "alpha(opacity=100)";
    }
    CurEl.style.display   = 'none';

    if ( CurLayer == BoxId + '_Layer1' ){
      CurLayer = BoxId + '_Layer2';
    }else{
      CurLayer = BoxId + '_Layer1';
    }

    return true;
  }

  // ensuite nous démarrons notre timer
	CurFonction = setTimeout( 'displayTransition( \''+BoxId+'\', '+( i-1 )+')', speed );

}


