var iMenuTot = 2;
var iMenuBeh = 0;

function k_GetXY(oMenu) {
  var iX = 0, iY = 0, oXY;
  oXY = xElementInfo(oMenu, 1);
  iX = oXY.left;
  iY = oXY.top;
  if (is.opera) iY = iY - 2;
  return { x:iX, y:iY };
}

function k_GetXYWH(oMenu) {
  if (!oMenu) return { x:0, y:0, w:0, h:0 };
  var oXY = k_GetXY(oMenu);
  return { x:oXY.x, y:oXY.y, w:oMenu.offsetWidth||0, h:oMenu.offsetHeight||0 };
}

function k_MenuGetClass(oMenu, cName) {
  return (!oMenu || !oMenu.className) ? false : (new RegExp("\\b" + cName + "\\b")).test(oMenu.className);
}

function k_MenuAddClass(oMenu, cName) {
  if (!oMenu) return;
  if (oMenu.className == null) oMenu.className = '';
  return oMenu.className += (oMenu.className.length > 0 ? ' ' : '') + cName;
}

function k_MenuKillClass(oMenu, cName) {
  if (!oMenu) return;
  return oMenu.className = oMenu.className.replace(RegExp("^" + cName + "\\b\\s*|\\s*\\b" + cName + "\\b",'g'),'');
}

function k_KillCSS(){
  var oCSS = document.styleSheets[0];
  oCSS.disabled = !oCSS.disabled;
}

function k_MenuShowHead() {
  var iClientWidth = xClientWidth();
  var iMenuDelta = 0;
  if (iMenuTot < 1 || iMenuTot > 9) return;
  var oListElement = this;
  k_MenuAddClass(oListElement, "active");
  if (oListElement.isTop){
    var oXYWH = k_GetXYWH(oListElement);
    xLeft(oListElement.sub, (oXYWH.x + (!oListElement.isHorizontal ? oXYWH.w : 0)) + "");
    xTop(oListElement.sub, (oXYWH.y + (oListElement.isHorizontal ? oXYWH.h : 0) - (oListElement.isTop ? 0 : 1)) + "");
    iMenuDelta = (xWidth(oListElement.sub) + xLeft(oListElement.sub)) - iClientWidth;
    if (iMenuDelta > 0) xLeft(oListElement.sub, (xLeft(oListElement.sub) - iMenuDelta) + "");
  } else {
    xLeft(oListElement.sub, oListElement.offsetWidth + "");
    xTop(oListElement.sub, oListElement.offsetTop + "");
    var oXYWH = k_GetXYWH(oListElement.sub);
    iMenuDelta = (oXYWH.x + (!oListElement.isHorizontal ? oXYWH.w : 0)) - iClientWidth;
    if (iMenuDelta > 0) {
      xLeft(oListElement.sub, (xLeft(oListElement.sub) - iMenuDelta) + "");
    }
  }
  xShow(oListElement.sub);
}

function k_MenuHideHead() {
  if (iMenuTot < 1 || iMenuTot > 9) return;
  var oListElement = this;
  xHide(oListElement.sub);
  k_MenuKillClass(oListElement, "active");
}

function k_MenuInit() {
  if (iMenuTot < 1 || iMenuTot > 9) {
    iMenuTot = 0;
    return;
  }
  var sMenu;
  var iClientWidth = xClientWidth();
  for (var iMenu = 1; iMenu <= iMenuTot; iMenu++) {
    sMenu = "0" + iMenu;
    var oMenu = document.getElementById("kMenu" + sMenu);
    if (!oMenu) {
      iMenuTot = iMenu - 1;
      return;
    }
    var bMenuIsHorizontal = k_MenuGetClass(oMenu, "k_menu_orz");
    var aListElement = oMenu.getElementsByTagName("li");
    for (var i = 0, iCiclo = aListElement.length; i < iCiclo; i++){
      var oListElement = aListElement[i];
      var aListUnord = oListElement.getElementsByTagName("ul");
      if (!aListUnord || aListUnord.length == 0) continue;
      var oListUnord = aListUnord[0];
      oListElement.sub = oListUnord;
      oListElement.isTop = oListElement.parentNode == oMenu;
      oListElement.isHorizontal = (bMenuIsHorizontal && oListElement.isTop);
      if (iMenuBeh == 1) {
        //xAddEventListener(document, "click", k_MenuHideHead, true);
        if (oListElement.isTop) {
          oListElement.onclick = k_MenuShowHead;
        } else {
          oListElement.onmouseover = k_MenuShowHead;
          oListElement.onmouseout = k_MenuHideHead;
        }
		} else {
        oListElement.onmouseover = k_MenuShowHead;
        oListElement.onmouseout = k_MenuHideHead;
		}
      // Patch Begin - Elimina un difetto di visualizzazione su IE
      var oXYWH = k_GetXYWH(oListElement);
      xLeft(oListElement.sub, (oXYWH.x + (!oListElement.isHorizontal ? oXYWH.w : -3000)) + "");
      // Patch End - Elimina un difetto di visualizzazione su IE
      if (oListElement.addedArrow || oListElement.isTop) continue;
      var aAnchor = oListElement.getElementsByTagName("a");
      if (aAnchor && aAnchor.length > 0 && aAnchor[0].parentNode == oListElement) {
        aAnchor[0].innerHTML += "&nbsp;&raquo;";
      } else {
        var oArrow = document.createElement("span");
        oArrow.innerHTML = "&nbsp;&rArr;";
        oListElement.insertBefore(oArrow, oListElement.childNodes[1]);
      }
      oListElement.addedArrow = true;
    }
  }
}

function k_MenuChangeOrientation(iMenu) {
  if (iMenuTot < 1 || iMenuTot > 9) {
    iMenuTot = 0;
    return;
  }
  var sMenu;
  sMenu = "0" + iMenu;
  var oMenu = document.getElementById("kMenu" + sMenu);
  if (!oMenu) {
    iMenuTot = iMenu - 1;
    return;
  }
  oMenu.className = (oMenu.className == "k_menu_vrt") ? "k_menu_orz" : "k_menu_vrt";
  k_MenuInit();
}

xAddEventListener(window, "load", k_MenuInit, true);
xAddEventListener(window, "resize", k_MenuInit, true);

