/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: Eric Simmons :: http://www.jswitch.com */

/************************************************************************
Author: Eric Simmons
Contact: info AT jswitch DOT com
Website: http://www.jswitch.com
Version: 2.0 12/2005
***********************************************************************/
var menuObjArray = new Array();
menuObjArray[0] = new Array();
menuObjArray[1] = new Array();
menuObjArray[2] = new Array();
menuObjArray[3] = new Array();
menuObjArray[4] = new Array();
menuObjArray[5] = new Array();
menuObjArray[6] = new Array();
menuObjArray[7] = new Array();

var timerSlide = null;
var numMenuItem = 0;
var slideDelay = 15;
var divHeight = 21;
var moveSlidePix = 5;
var isLocked = false;
var menu_css = "cpg_ESTILS.css";

//InitAll();

function InitAll() {
  var divs = document.getElementsByTagName("DIV");
  aryNum = 0;
  for(dn=0; dn < divs.length;dn++) {
    if(String(divs.item(dn).className).substring(0,7) == "topItem") {
      mainMenuDiv = divs.item(dn).parentNode;
      menuContainerDiv= mainMenuDiv.getElementsByTagName("DIV").item(1);
      itemContainerDiv= menuContainerDiv.getElementsByTagName("DIV").item(0);
      Init(divs.item(dn));
      aryNum++;
    }
  }
}

function Init(objDiv) {
  if (isLocked)
    return;
  var mainMenuDiv, subMenuDiv, menuContainerDiv, itemContainerDiv,styleRules;
    for(r=0;r < document.styleSheets.length; r++) {
      if( -1 != String(document.styleSheets[r].href).indexOf(menu_css) )
        break;
    }
    if(!document.styleSheets[r].rules)
      styleRules = document.styleSheets[r].cssRules;
    else
      styleRules = document.styleSheets[r].rules;
  numMenuItem = 0;
  mainMenuDiv = objDiv.parentNode;

  subMenuDiv =  mainMenuDiv.getElementsByTagName("DIV").item(0);

  menuContainerDiv= mainMenuDiv.getElementsByTagName("DIV").item(1);
  itemContainerDiv= menuContainerDiv.getElementsByTagName("DIV").item(0);

  aLen = menuObjArray[0].length;
  for (i=0 ;i < aLen ; i++) {
    if (menuObjArray[0][i] == menuContainerDiv) {
      break;
    }
  }

  if (i == aLen) {
    menuObjArray[0][i]  = menuContainerDiv;
    menuObjArray[1][i] = itemContainerDiv;
    menuObjArray[7][i] = subMenuDiv;
	
    subMenuDiv.onclick = SetSlide;
	
    lastmenuNum = -1;
    for (b=0;b<itemContainerDiv.childNodes.length;b++) {
      if (itemContainerDiv.childNodes.item(b).tagName == "SPAN") {
        numMenuItem ++;
        itemContainerDiv.childNodes.item(b).onmouseover= ChangeStyle;
        itemContainerDiv.childNodes.item(b).onmouseout= ChangeStyle;
        lastmenuNum = b;
      }
    }
      for(r=0;r < styleRules.length; r++) {
        tmpStr1 = String(styleRules[r].selectorText);
        tmpStr2 = String("." + itemContainerDiv.childNodes.item(lastmenuNum).className);
        if(tmpStr1 == tmpStr2) {
          if(NaN != parseInt(styleRules[r].style.height)) {
            divHeight = parseInt(styleRules[r].style.height);
            break;
          }
        }
      }

    menuObjArray[2][i] = numMenuItem;
    menuObjArray[3][i] = mainMenuDiv;

    if (itemContainerDiv.style.display == "inline") {
      menuObjArray[4][i] = numMenuItem * divHeight;
      menuObjArray[0][i].style.height = numMenuItem * divHeight + "px";
      menuObjArray[6][i] = true;
         if (menuObjArray[0][i].filters)
           menuObjArray[0][i].filters.alpha.opacity = 100;
         else
           menuObjArray[0][i].style.opacity = 1;
      } else {
        menuObjArray[7][i].className = menuObjArray[7][i].className+"Over";
        menuObjArray[4][i] = 0;
        menuObjArray[0][i].style.height = 0 + "px";
        menuObjArray[6][i] = false;
          if (menuObjArray[0][i].filters)
            menuObjArray[0][i].filters.alpha.opacity = 0;
          else
            menuObjArray[0][i].style.opacity = .0;
    }
  }

  mainMenuDiv = null;
  subMenuDiv =  null;
  menuContainerDiv= null;
  itemContainerDiv= null;
}

function SetSlide( valor ) {
  if (isLocked)
    return;
  else
    isLocked = true;
  for (i=0 ;i < menuObjArray[0].length; i++) {
    if (menuObjArray[3][i] == this.parentNode) {
      if (menuObjArray[5][i] == null)
        menuObjArray[5][i] = setInterval("RunSlide(" + i + ",'a')", slideDelay);
      break;
    }
  }
}

function SetSlide( valor ) {
  if (isLocked)
    return;
  else
    isLocked = true;
  for (i=0 ;i < menuObjArray[0].length; i++) {
    if (menuObjArray[3][i] == this.parentNode) {
      if (menuObjArray[5][i] == null)
        menuObjArray[5][i] = setInterval("RunSlide(" + i + ",'b')", slideDelay);
      break;
    }
  }
}

function RunSlide(objIndex, opcio) {
  if (menuObjArray[6][objIndex]) {
      if(menuObjArray[0][objIndex].filters)
        menuObjArray[0][objIndex].filters.alpha.opacity -= 100/ ( ( (menuObjArray[2][i] * divHeight) / moveSlidePix) +1);
      else
        menuObjArray[0][objIndex].style.opacity -= .9/(((menuObjArray[2][i] * divHeight) / moveSlidePix)+1);
    menuObjArray[1][objIndex].style.display = 'none';
    menuObjArray[4][objIndex] -=  moveSlidePix;
    if (menuObjArray[4][objIndex] > 0)
      menuObjArray[0][objIndex].style.height = menuObjArray[4][i] + "px";
    else {
          if(menuObjArray[0][objIndex].filters)
            menuObjArray[0][objIndex].filters.alpha.opacity = 0;
          else
            menuObjArray[0][objIndex].style.opacity = 0;
        menuObjArray[7][objIndex].className = menuObjArray[7][objIndex].className+"Over";
        menuObjArray[4][objIndex] = 0;
        menuObjArray[0][objIndex].style.height = 0 + "px";
        clearInterval(menuObjArray[5][objIndex]);
        menuObjArray[5][objIndex] = null;
        menuObjArray[6][objIndex] = false;
        isLocked = false;
        return 0;
    }
    return 0;
  }
  if (!menuObjArray[6][objIndex]) {
      if(menuObjArray[0][objIndex].filters)
        menuObjArray[0][objIndex].filters.alpha.opacity += 100/ ( ( (menuObjArray[2][i] * divHeight) / moveSlidePix) +1);
      else {
        opcVal = parseFloat(menuObjArray[0][objIndex].style.opacity);
        opcVal += .9/((menuObjArray[2][i] * divHeight) / moveSlidePix);
        menuObjArray[0][objIndex].style.opacity = opcVal;
      }
      menuObjArray[4][objIndex] +=  moveSlidePix;
      if (menuObjArray[4][objIndex] < (menuObjArray[2][objIndex] * divHeight))
        menuObjArray[0][objIndex].style.height = menuObjArray[4][i] + "px";
      else {
        if(menuObjArray[0][objIndex].filters)
          menuObjArray[0][objIndex].filters.alpha.opacity = 100;
        else
          menuObjArray[0][objIndex].style.opacity = 1;
        strClassName = String(menuObjArray[7][objIndex].className);
        menuObjArray[7][objIndex].className = strClassName.substring(0,strClassName.length - 4);
        menuObjArray[4][objIndex] = (menuObjArray[2][objIndex] * divHeight);
        menuObjArray[0][objIndex].style.height = (menuObjArray[2][objIndex] * divHeight)+ "px";
        menuObjArray[1][objIndex].style.display = 'inline';
        clearInterval(menuObjArray[5][objIndex]);
        menuObjArray[5][objIndex] = null;
        menuObjArray[6][objIndex] = true;
        isLocked = false;
        return 0;
      }
    return 0;
  }
}

function ChangeStyle() {
  className = String(this.className);
  if (className.substring(className.length - 4, className.length) == "Over")
    this.className = className.substring(0,className.length - 4);
  else
    this.className = this.className + "Over";
}
