/* (c) 2005 - Laurent Houdard <laurent@houdard.net> 
   $Id: mouseover.js,v 1.3 2006-02-10 09:34:16 lh Exp $ */

function mouseOverInit(container) {
  var W3CDOM = (document.createElement && document.getElementsByTagName);
  if (!W3CDOM) { return; }
  container = container || document;
  var i, j, obj, objs, objs2, o;

  objs = getElementsByClassName('mouseover', container, 'TABLE');
  for (i = 0; i < objs.length; i++) {
    obj = objs[i];
    var rows = obj.getElementsByTagName('TR');
    for (j = 0; j < rows.length; j++) {
      o = rows[j];
      var td = o.getElementsByTagName('TD');
      if (td.length > 0) {
	o.onclick = mouseClick;
	o.onmouseover = mouseOver;
	o.onmouseout = mouseOut;
	o.style.cursor = 'pointer';
      }
    }
  }

  objs = getElementsByClassName('mouseover', container, 'FORM');
  for (i = 0; i < objs.length; i++) {
    obj = objs[i];
    objs2 = obj.getElementsByTagName('INPUT');
    for (j = 0; j < objs2.length; j++) {
      o = objs2[j];
      o.onfocus = focus;
      o.onblur = blur;
    }
    objs2 = obj.getElementsByTagName('TEXTAREA');
    for (j = 0; j < objs2.length; j++) {
      o = objs2[j];
      o.onfocus = focus;
      o.onblur = blur;
    }
  }
  objs = getElementsByClassName('mouseover', container, 'BUTTON');
  for (i = 0; i < objs.length; i++) {
    o = objs[i];
    o.onmouseover = mouseOver;
    o.onmouseout = mouseOut;
  }
}

function mouseOver() {
  var parent = this.parentNode;
  if (parent.mouseOverCurrentObj) {
    removeClass(parent.mouseOverCurrentObj, 'mouseovered');
  }
  parent.mouseOverCurrentObj = this;
  addClass(this, 'mouseovered');
}

function mouseOut() {
  var parent = this.parentNode;
  if (parent.mouseOverCurrentObj) {
    removeClass(parent.mouseOverCurrentObj, 'mouseovered');
    parent.mouseOverCurrentObj = undefined;
  }
}

function mouseClick() {
  // Recherche du premier lien
  var links = this.getElementsByTagName('A');
  if (links.length == 0) { return; }
  var link = links[0];
  document.location = link.href;
}

function focus() {
  addClass(this, 'focused');
}

function blur() {
  removeClass(this, 'focused');
}

