﻿function setOpacity(obj, value)
{
  if (obj != null)
  {
	  obj.style.opacity = value/100;
	  obj.style.filter = 'alpha(opacity=' + value + ')';
	}
}

//  recherche d'un élément
function getElement(doc, elementname)
{
  var elem = doc.getElementById(elementname);

/*  
  if (elem == null)
    alert('getElement failed : ' + elementname);
*/  
  return elem;
}

function setmenuheight(win, doc, elementname)
{
  var height = 0;
  
  //  on récupère au mieux la taille de la fenêtre
  if (win.innerHeight) 
      height = win.innerHeight - 18;
  else if (doc.documentElement && doc.documentElement.clientHeight) 
    height = doc.documentElement.clientHeight;
  else if (doc.body && doc.body.clientHeight) 
    height = doc.body.clientHeight;

  var theitem = getElement(doc, elementname);
  if (theitem != null)
  {
      theitem.style.height = (height-220) + "px";
  }
}

function getHeight(myElement) {
  return myElement.clientHeight;
}

function getWidth(myElement) {
  return myElement.clientWidth;
}

function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
    {
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

  function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }
  
/* =============================================================================

            TIMERS
   
   =============================================================================  */

var timers = new Array();

//-------------------------
function findTimer(id)
{
  var i;

  for (i=0; i < timers.length; i++)
  {
    if (timers[i].id == id)
      return timers[i];
  }
  
  return null;
}

function timerCheck(id)
{
  var timer = findTimer(id);
  var date = new Date();
  var ctime = date.getTime();

  if (timer == null)
    return;

  timer.timerID = -1;

  var i, l;
  
  l = 0;
  for (i = 0; i < timer.steps; i++)
  {
    if (ctime  >= timer.starttime + timer.durations[i])
      l = i;
    
    if (ctime  < timer.starttime + timer.durations[i])
    {
      i = l;
      break;
    }
  }
  
  if (i > timer.step && i < timer.steps)
  {
    timer.step = i;
    
    if (timer.jscripttick != null)
    {
      var js = timer.jscripttick.replace(/TimerValue/g, timer.values[i]);
      eval(js);
    }
  }
  else if (i == timer.steps)
  {
    if (timer.jscriptend != null)
      eval(timer.jscriptend);
  }
    
  if (i < timer.steps)
    timer.timerID = setTimeout("timerCheck('" + id + "');", 1);  
  else
    timerStop(id, false);
}

// {value}
//  si lengthtype = 0
//    length = durée, step = 
//  si lengthtype = 1
//    length = nb d'étapes
function timerObject(id, valuefrom, valueto, duration, startdelay, autostart, jscriptstart, jscripttick, jscriptend)
{
  timerStop(id, true);
  
  this.step = 0;
  this.id = id;
  this.jscriptstart = jscriptstart;
  this.jscripttick = jscripttick;
  this.jscriptend = jscriptend;
  this.startdelay = startdelay;

  this.durations = new Array();
  this.values = new Array();

  var numvalues = Math.abs(valuefrom - valueto) + 1;
  var i, d, oldd = -1;
  
  for (i = 0; i < numvalues; i++)
  {
    d = Math.round((duration * i) / numvalues);
    if (d > oldd)
    {
      this.durations.push(d);
      
      if (valueto > valuefrom)
        this.values.push(valuefrom + i);
      else
        this.values.push(valuefrom - i);
        
      oldd = d;
    }
  }
  
  //---- propriétés internes
  this.steps = this.durations.length;
  this.started = false;
  this.timerID = -1;
  this.stepduration = this.duration / this.steps;
  this.step = -1;
  
  timers.push(this);

  if (autostart == true)
  {
    if (startdelay == 0)
      timerStart(id);
    else
      this.timerID = setTimeout("timerStart('" + id + "');", startdelay);
  }
}

function timerStart(id)
{
  var timer = findTimer(id);
  
  if (timer == null)
    return;

  timer.timerID = -1;
  timer.started = true;
  
  if (timer.jscriptstart != null)
    eval(timer.jscriptstart);
  
  var date = new Date();
  timer.starttime = date.getTime();
  timerCheck(id);
}

function timerStop(id, runendscript)
{
  var i;
  var timer;

  for (i=0; i < timers.length; i++)
  {
    if (timers[i].id == id)
    {
      timer = timers[i];
      
      if (timer.timerID != -1)
      {
        clearTimeout(timer.timerID);
        timer.timerID = -1;
      }
      
      if (runendscript == true && timer.jscriptend != null)
        eval(timer.jscriptend);
      timers.splice(i, 1);
      
      return;
    }
  }
}


