/**
 * Infos sur les variables
 *
 * mrqContWidth  : Largeur du conteneur
 * mrqContHeight : Hauteur du conteneur
 * mrqContTop    : Position y du conteneur
 * mrqContLeft   : Position x du conteneur
 * mrqLoop       : TRUE si le scroll boucle
 * mrqDecall     : Nb de pixels de décalage
 * mrqSpeed      : Fréquence entière en ms entre chaque décalage de mrqDecall pixels
 * mrqScrollVert : TRUE si scroll vertical, FALSE si horizontal
 * mrqScrollSens : -1 de droite à gauche ou de bas en haut, 1 de gauche à droite
 *                 ou de haut en bas (selon la valeur de mrqScrollVert).
 * mrqString     : Le texte du scroll (HTML possible, faire attention aux caractères " et ')
 * mrqNavErr     : Message d'erreur si le navigateur n'est pas supporté.
 */

/** "Paramétre du scroll" **/
 
  var mrqContWidth  = 715;
  var mrqContHeight = 15;
  var mrqContTop    = 98;
  var mrqContLeft   = 50;
  var mrqLoop       = true;
  var mrqDecal      = 3;
  var mrqSpeed      = 80;
  var mrqScrollVert = false;
  var mrqScrollSens = -1;
  var mrqNavErr     = '';


// Variables globales
var mrqLeft         = 0;
var mrqTop          = 0;
var mrqStringWidth  = 0;
var mrqStringHeight = 0;
var mrqTimerID;

// Détection du navigateur Opera.
function isOpera() {
  var strUserAgt = navigator.userAgent;
  var intUserAgt = strUserAgt.length;
  var intStart;
  var intVersion = 0;

  if ((intStart = strUserAgt.indexOf('Opera')) != -1 ) {
    while(intStart < intUserAgt && isNaN(intVersion = parseInt(strUserAgt.charAt(intStart++))));
  }
  return intVersion;
}

// Détection du type de navigateur.
var ie4  = document.all && !document.getElementById;
var ns4  = document.layers;
var op5  = isOpera() == 5;
var dom2 = document.getElementById;

// Démarrage, re-démarrage et arrêt du scroll.
function mrqScroll(type) {
  // Démarrage
  if (type == 'start') {
    if (mrqScrollSens == -1) { mrqScrollVert ? mrqScrollIt(mrqContHeight) : mrqScrollIt(mrqContWidth); }
    else { mrqScrollVert ? mrqScrollIt(-mrqStringHeight) : mrqScrollIt(-mrqStringWidth); }
  }
  // Re-Démarrage
  else if (type == 'continue') { mrqScrollVert ? mrqScrollIt(mrqTop) : mrqScrollIt(mrqLeft); }
  // Arrêt   
  else if (type == 'stop') { if (mrqTimerID != null) clearTimeout(mrqTimerID); }
}

// Initialisation
function mrqInit() {
  if (ns4) {
    // Taille du calque texte avec NS4.
    with (document.mrqDivCont) {
      mrqStringWidth = document.mrqDivText.document.width;
      mrqStringHeight = document.mrqDivText.document.height;
      clip.width = mrqContWidth;
      clip.height = mrqContHeight;
      hidden = false;
      y = mrqContTop;
      x = mrqContLeft;
    }

  } else if (dom2 || ie4) {
    // Taille du calque qui contient le texte,
    var objText = dom2 ? document.getElementById('mrqDivText'):document.all['mrqDivText'];
    mrqStringWidth = objText.offsetWidth;
    mrqStringHeight = objText.offsetHeight;
    objText.style.width = mrqStringWidth + 'px';
    objText.style.height = mrqStringHeight + 'px';
    objText.style.top = mrqTop + 'px';
    objText.style.left = mrqLeft + 'px';

    var objCont = dom2 ? document.getElementById('mrqDivCont'):document.all['mrqDivCont'];
    objCont.style.width = mrqContWidth + 'px';
    objCont.style.height = mrqContHeight + 'px';
    objCont.style.left = mrqContLeft + 'px';
    objCont.style.top = mrqContTop + 'px';
    objCont.style.clip = 'rect (0,' +  objCont.style.width + ', ' + objCont.style.height + ', 0)';
    objCont.style.visibility = 'visible';
  } else { // Non supporté
    if (mrqNavErr != '') { document.open(); document.write(mrqNavErr); document.close(); }
    return;
  }

  // Centrage du calque texte dans le conteneur.
  mrqTop = (mrqContHeight-mrqStringHeight) / 2;
  mrqLeft = (mrqContWidth-mrqStringWidth) / 2;

  mrqScroll('start');
}

// Cette fonction est chargée de faire défiler le calque
function mrqScrollIt(intTopLeft) {
  if (mrqScrollVert) { mrqTop  = intTopLeft + (mrqScrollSens * mrqDecal); }
  else { mrqLeft = intTopLeft + (mrqScrollSens * mrqDecal); }

  if (ns4) {
    var objText = document.mrqDivCont.document.mrqDivText;
    objText.top = mrqTop;
    objText.left = mrqLeft;
  } else {
    var objText = dom2 ? document.getElementById('mrqDivText') : document.all['mrqDivText'];
    objText.style.top = mrqTop  + "px";
    objText.style.left = mrqLeft + "px";
  }

  // Test pour revenir au début
  if (mrqLoop) {
    if (mrqScrollVert) {
	if (mrqTop <= -mrqStringHeight && mrqScrollSens == -1) { mrqTop =  mrqContHeight; }
	else if (mrqTop >= mrqContHeight && mrqScrollSens != -1) { mrqTop = -mrqStringHeight; }
    } else {
	if (mrqLeft <= -mrqStringWidth && mrqScrollSens == -1) { mrqLeft = mrqContWidth; }
	else if (mrqLeft >= mrqContWidth && mrqScrollSens != -1) { mrqLeft = -mrqStringWidth; }
    }
  }

  // Timer si on est pas en bout de course
  if (mrqScrollVert) {
    if ((mrqTop > -mrqStringHeight) || (mrqTop < mrqContHeight)) 
	mrqTimerID = setTimeout("mrqScrollIt(" + mrqTop  + ")", mrqSpeed);
  } else {
    if ((mrqLeft > -mrqStringWidth) || (mrqLeft < mrqContWidth))
	mrqTimerID = setTimeout("mrqScrollIt(" + mrqLeft + ")", mrqSpeed);
  }
}

document.open();
document.write('<style type="text/css"><!--');
document.write('#mrqDivCont { position: absolute; overflow: hidden; visibility: hidden; }');
document.write('#mrqDivText, mrqNS4DivText { position: relative; width: 1px; height: 1px; top: 0px; left: 0px;');
document.write('font-family: Arial, Helvetica, sans-serif;}');
document.write('--></style>');

// Utilisation d'un <layer> pour NS4 et d'un <span> pour IE
document.write('<div id="mrqDivCont" z-index:0 width="' + mrqContWidth + '" height="' + mrqContHeight + '">');
if (ns4) {
  document.write('<layer name="mrqDivText" z-index:0 class="mrqNS4DivText" onMouseOver="mrqScroll(\'stop\');" onMouseOut="mrqScroll(\'continue\');">');
  document.write('<nobr>' + mrqString + '</nobr>');
  document.write('</layer>');
} else {
  document.write('<span id="mrqDivText"  z-index:0 onMouseOver="mrqScroll(\'stop\');" onMouseOut="mrqScroll(\'continue\');">');
  document.write('<nobr>' + mrqString + '</nobr>');
  document.write('</span>');
}
document.write('</div>');
document.close();

/* onLoad de la fonction mrqInit()
 *
 * On utilise de préférence l'eventListener pour éviter le bug de NS6, NS6.01 qui "ignore" la
 * ligne window.onLoad = fonction().
 */
if (window.addEventListener && !ns4) { Window.addEventListener('load', mrqInit, false); }
else { window.onLoad = mrqInit(); }
