﻿// Cache un élément
function cacher($element) {
  if(typeof($element) == "string")
    $element = document.getElementById($element);
  $element.style.display = "none";
}

// Montre un élément
function montrer($element) {
  if(typeof($element) == "string")
    $element = document.getElementById($element);
  $element.style.display = "block";
}

// Pour l'horloge digitale
function heureDigitale($element) {
  var $date = new Date();
  $element.innerHTML = $date.getHours().toString() + ":" + ($date.getMinutes() < 10 ? "0": "") + $date.getMinutes().toString();
  setTimeout("heureDigitale(document.all." + $element.id + ")", 60000);
}

// Centre un élément sur l'explorateur ouvert
function centrer($element) {
 $element.style.left = document.body.scrollLeft + (document.body.clientWidth - $element.clientWidth) / 2;
 $element.style.top = document.body.scrollTop + (document.body.clientHeight - $element.clientHeight) / 2;
}

// Joue un son
function jouerSon($wav) {
  document.write("<embed src='/sons/" + $wav + "' hidden=true autostart=true loop=false></embed>");
}

// Etend automatiquement des textareas en hauteur en fonction de leurs contenus
// $maxrows : integer (hauteur maximum jusqu'à laquelle la TEXTAREA s'étend)
function textAreaExtend($textArea, $maxHeight, $minHeight) {
  if($textArea.style.height == "" || parseInt($textArea.style.height) <= $maxHeight) {
    $textArea.style.height = $textArea.value.split("\n").length * 20;
    if($textArea.style.height == "2px")
      $textArea.style.height = 100;
    if(parseInt($textArea.style.height) < $minHeight)
      $textArea.style.height = $minHeight;
    if(parseInt($textArea.style.height) > $maxHeight)
      $textArea.style.height = $maxHeight;
  }
}

// Pour afficher un popup
function popup($id, $url, $width, $height) {
  window.open($url, $id, "status=yes,toolbar=no,menubar=no,resizable=yes,location=no,scrollbars=no,width=" + $width + ",height=" + $height);
}

// Renvoie le position "top" d'un élément par rapport au haut de la page
function top($element) {
  var $top = 0;
  while($element.offsetParent.tagName != "BODY") {
    $top += $element.offsetTop;
    $element = $element.offsetParent;
  }
  return $top;
}

/*
affiche un éléments sous la souris
empêche que l'élément sorte de l'écran
*/
function afficherSousSouris($event, $element) {

  // Dimension et position de l'écran
  var $w0 = window.document.body.clientWidth;
  var $h0 = window.document.body.clientHeight;
  var $t0 = document.body.scrollTop;
  var $l0 = document.body.scrollLeft;

  // Dimension et position de l'élément
  var $w = $element.scrollWidth;
  var $h = $element.scrollHeight;
  var $t = $t0 + $event.clientY + 15;
  var $r = null;
  var $l = $l0 + $event.clientX + 15;
  var $b = null;

  // Dépassement à droite
  if ($l + $w > $l0 + $w0) {
    $l = $l0 + $w0 - $w;
    $r = -$l0;
  }
  // Dépassement en bas
  if ($t + $h > $t0 + $h0) {
    $t = $l0 + $h0 - $h;
    $b = -$t0;
  }

  // Si la souris est sur l'élement, alors on déplasse l'élément au dessus à gauche
  if ($event.clientX > $l && $event.clientX < ($l + $w) && $event.clientY > $t && $event.clientY < ($t + $h)) {
    $r = $w0 - $event.clientX + 5;
    $t = $t0 + ($event.clientY - $h) - 5;
  }

  // Positionnement de l'objet
  if ($r != null) {
    $element.style.left = null;
    $element.style.right = $r + "px";
  }
  else {
    $element.style.left = $l + "px";
    $element.style.right = null;
  }
  if ($b != null) {
    $element.style.top = "";
    $element.style.bottom = $b + "px";
  }
  else {
    $element.style.top = $t + "px";
    $element.style.bottom = "";
  }
}

// Navigue sur l'URL si l'utilisateur répond oui à la question
function confirmNavigate($question, $url)
{
  if(confirm($question))
    navigate($url);
}

// Maximise une fenêtre
function maximize() {
  window.resizeTo(screen.availWidth, screen.availHeight);
}

// Renvoie le code hexadécimal d'un nombre
function hexa($n) {
 var $cars = "0123456789abcdef";
 var $hexa = "";
 var $hexa_m = $n;
 for(var $i=0; $i < 8; $i++) {
   $hexa = $cars.charAt(Math.abs($hexa_m)%16) + $hexa;
   $hexa_m = Math.floor($hexa_m/16);
 }
 for(var $i=0; $i < 8; $i++) {
  if($hexa.substr(0, 1) == "0")
    $hexa = $hexa.substr(1);
 }
 return $hexa;
}

// Renvoie le code d'un caractère
function asc($c) {
  $c = $c.charAt(0);
  for (var $i = 0; $i < 256; ++$i) {
    var $h = $i.toString (16);
    if($h.length == 1)
      $h = "0" + $h;
    $h = "%" + $h;
    $h = unescape ($h);
    if ($h == $c)
      break;
  }
  return $i;
}

// Convertit une chaîne en hexadécimal
function stringToHexa($str) {
  var $hexa = "";
  for(var $i=0; $i<$str.length; $i++) {
    $hexa += hexa(asc($str.charAt($i)));
  }
  return $hexa;
}

// Pour changer l'adresse
function navigate($url) {
  window.location = $url;
}

// Affiche ou cache un élément
function showHide($element, $display) {
  $element.style.display = $element.style.display == "none" ? $display : "none";
}

// Copie le contenu d'un élément HMLT (textarea, ...) dans le presse papier
function copy2Clipboard($element) {
  var $textRange = document.body.createTextRange();
  $textRange.moveToElementText($element);
  $textRange.execCommand("Copy");
}


/**********************************************************************
Classe pour HtmlTable
*/

var $htmlTable = new HtmlTable();
function HtmlTable() {

  this.oldClassName = "";
  
  this.over = function HtmlTable_over($tr) {
    this.oldClassName = $tr.className;
    $tr.className = "over";
  }

  this.out = function HtmlTable_out($tr) {
    $tr.className = this.oldClassName;
    this.oldClassName = "";
  }

  this.click = function HtmlTable_click($e, $url) {
    var $target = $e.srcElement ? $e.srcElement : $e.target;
    if($target.tagName != "INPUT" && $target.tagName != "IMG" && $target.tagName != "A")
      navigate($url);
  }

}

// Pour remplacer le Marquee de IE
function Marquee($id) {

  this.marquee = document.getElementById($id);
  this.interval = 1;
  this.stopOnMouseOver = false;
  this.height = parseInt(this.marquee.style.height);

  var $divDebut = document.createElement("div");
  $divDebut.style.height = this.height + "px";
  var $divFin = document.createElement("div");
  $divFin.style.height = this.height + "px";
  this.marquee.insertBefore($divDebut, this.marquee.firstChild);
  this.marquee.appendChild($divFin);
  var $this = this;
  setInterval(function() { $this.scroll(); }, 30);


  this.scroll = function() {
    if(this.marquee.scrollTop >= this.marquee.scrollHeight - this.height)
      this.marquee.scrollTop = 0;
    this.marquee.scrollTop += this.interval;
  }

  this.marquee.onmouseover = function() {
    if($this.stopOnMouseOver)
      $this.interval = 0;
  }

  this.marquee.onmouseout = function() {
    $this.interval = 1;
  }

}