//----------------------------------------------------------------------------
// Object menu
//----------------------------------------------------------------------------
function cMenu(name){
	this.name			= name;
	this.items			= new Array();
	this.childMenus		= new Array();
	this.buildMenus		= new String("_");
	this.itemCount		= 0;
	
	this.appendItem 	= fnAppendItem;


	this.buildMainMenu  = fnBuildMainMenu;
	this.buildSideMenu	= fnBuildSideMenu;
	this.buildMenu		= fnBuildMenu;
	this.parseArrays	= fnParseArrays;
	
	return this
}
//------------------------------------------
//------------------------------------------
function fnBuildMainMenu(){
	if(this.name=="mMenu"){
		this.parseArrays(sectionMenu, categoryMenu, 20);
	}

	document.write(this.buildSideMenu());
	for(var i=0; i<this.childMenus.length; i++){
		document.write(this.childMenus[i]);
		//alert(this.childMenus[i])
	}
	var aMenu = document.getElementById("menu_" + this.name);	
	aMenu.style.visibility = "visible";
}
//------------------------------------------
//------------------------------------------
function fnBuildSideMenu(){
	var tMenu = new String();
	for(var i=0; i<this.itemCount; i++){
		if(this.items[i].treelevel == 1){
			var mImage = "<span class='topMenuImage'><img src='/images/ElviaProLayout/nav/menu_1_" + this.items[i].id_section + ".gif' border='0' width='160' height='23' alt='" + this.items[i].name + "'></span>";			
			var mHref = (this.items[i].redirurl!="") ? this.items[i].redirurl : ("/default.aspx?eProSection=1&section=" + this.items[i].id_section);
			var mTarget = (this.items[i].target==1 ? (" target=\"" + this.items[i].target + "\"") : "");
			if((i<this.itemCount-3) && (this.items[i+1].treelevel>this.items[i].treelevel)){
				tMenu += "<a" + mTarget + "  class=\"menuItem topMenuItem\" href=\"javascript:void(0)\" onmouseover=\"menuItemMouseover(event, 'menu_" + this.items[i].id_section + "');\" onmouseout=\"setMenuTimer(500)\">" + mImage + "</a>\n"
			}else{
				tMenu += "<a" + mTarget + "  class=\"menuItem topMenuItem\" href=\"" + mHref + "\" onmouseover=\"setMenuTimer()\" onmouseout=\"setMenuTimer(500)\">" + mImage + "</a>\n";
			};
		}else{
			this.buildMenu(this.items[i].id_section_parent, this.items[i].treelevel, i);
		}
	}
	return "<div style=\"width:160px!important;\" id=\"menu_" + this.name + "\" class=\"menu\" onmouseover=\"menuMouseover(event)\">" + tMenu + "</div>\n";
	
}
//------------------------------------------
//------------------------------------------
function fnBuildMenu(id_parent, treelevel, startPos){
	var custMenu = new String();
	if(this.buildMenus.indexOf("_"+id_parent+"_")==-1){
		for(var j=startPos; j<this.itemCount; j++){
			if(this.items[j].treelevel==treelevel && this.items[j].id_section_parent==id_parent){
				var mHref = (this.items[j].redirurl!="") ? this.items[j].redirurl : ("/default.aspx?eProSection=1&section=" + this.items[j].id_section);
				var mTarget = (this.items[j].target==1 ? (" target=\"" + this.items[j].target + "\"") : "");
				if(((j+1)<this.itemCount) && (this.items[j+1].treelevel>this.items[j].treelevel)){ //has submenu
					if(mHref.indexOf("eProShopCat")==-1){
						mHref = "javascript:void(0)"
					};
					custMenu += "<a" + mTarget + " class=\"menuItem\" href=\"" + mHref + "\" onmouseover=\"menuItemMouseover(event, 'menu_" + this.items[j].id_section + "');\" onmouseout=\"setMenuTimer(5000)\"><div class=\"menuItemText\"><img alt=\"\" height=\"18\" width=\"24\" src=\"/images/arrow.gif\" align=\"right\" border=\"0\">" + this.items[j].name + "</div></a>\n"
				}else{
					custMenu += "<a" + mTarget + " class=\"menuItem\" href=\"" + mHref + "\" onmouseover=\"setMenuTimer()\" onmouseout=\"setMenuTimer(5000)\"><div class=\"menuItemText\"><img alt=\"\" height=\"18\" width=\"24\" src=\"/images/spacer.gif\" align=\"right\" border=\"0\">" +this.items[j].name + "</div></a>\n";
				};
			}else{
				//exit for
				if(this.items[j].treelevel<treelevel){ //find same parent level
					this.childMenus[this.childMenus.length] = "<div style=\"position:absolute;z-index:"+((this.name=="mMenu")?"700":"600")+"!important;\" id=\"menu_" + id_parent + "\" class=\"menu wBorder\" onmouseover=\"menuMouseover(event)\">" + custMenu + "</div>\n";
					this.buildMenus += id_parent+"_";
					return
				}
			}
			if(j==this.itemCount-1){ //find same parent level
				this.childMenus[this.childMenus.length] = "<div style=\"position:absolute;z-index:"+((this.name=="mMenu")?"700":"600")+"!important;\" id=\"menu_" + id_parent + "\" class=\"menu wBorder\" onmouseover=\"menuMouseover(event)\">" + custMenu + "</div>\n";
				this.buildMenus += id_parent+"_";
				return
			}
		}
	}
}
//------------------------------------------
//------------------------------------------
function fnAppendItem(oItem){
	if(oItem && oItem!=null){
		this.items[this.itemCount] = oItem;
		this.itemCount++;
	}
}


//----------------------------------------------------------------------------
// Object menu item
//----------------------------------------------------------------------------
function cMenuItem(id_section, id_section_parent, treelevel, name, redirurl, target){
	this.id_section			= id_section;
	this.id_section_parent  = id_section_parent;
	this.treelevel			= treelevel;
	this.name				= name;
	this.redirurl			= redirurl;
	this.target				= target;

	return this
}

//----------------------------------------------------------------------------
// Code to determine the browser and version.
//----------------------------------------------------------------------------
function Browser() {
  var ua, s, i;

  this.isIE   = false; 
  this.isNS   = false;
  this.isOP   = false;

  ua = navigator.userAgent;

  if (ua.indexOf("MSIE") >= 0 || ua.indexOf("Opera") >= 0) {
    this.isIE = true;
	if(ua.indexOf("Opera") >= 0){
		this.isOP = true;
	}
	return this
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    return this
  }

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    return this
  }
  
  return this
}

var browser = new Browser();

//----------------------------------------------------------------------------
// Code to handle the menus and sub menus.
//----------------------------------------------------------------------------
function menuMouseover(event) {
  var menu;
  if (browser.isIE)
    menu = getContainerWith(window.event.srcElement, "DIV", "menu");
  else
    menu = event.currentTarget;

  if (menu.activeItem != null)
    closeSubMenu(menu);
}
//------------------------------------------
//------------------------------------------
function menuItemMouseover(event, menuId) {
  setMenuTimer();
  var item, menu, x, y;
  if (browser.isIE)
    item = getContainerWith(window.event.srcElement, "A", "menuItem");
  else
    item = event.currentTarget;
  menu = getContainerWith(item, "DIV", "menu");
  if (menu.activeItem != null)
    closeSubMenu(menu);
  menu.activeItem = item;

  item.className += " menuItemHighlight";

  if (item.subMenu == null) {
    item.subMenu = document.getElementById(menuId);
    if (item.subMenu.isInitialized == null)
      menuInit(item.subMenu);
  }

  x = getPageOffsetLeft(item) + item.offsetWidth;
  y = getPageOffsetTop(item);
  
  var maxX, maxY;
  if (browser.isNS) {
    maxX = window.scrollX + window.innerWidth;
    maxY = window.scrollY + window.innerHeight;
  }
  if (browser.isIE) {
    maxX = (document.documentElement.scrollLeft   != 0 ? document.documentElement.scrollLeft   : document.body.scrollLeft)
         + (document.documentElement.clientWidth  != 0 ? document.documentElement.clientWidth  : document.body.clientWidth);
    maxY = (document.documentElement.scrollTop    != 0 ? document.documentElement.scrollTop    : document.body.scrollTop)
         + (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
  }
  var desc = 0;
  if(maxX>923){
  	desc = parseInt((maxX-923)/2);
  }
  maxX -= item.subMenu.offsetWidth;
  maxY -= item.subMenu.offsetHeight;

  if (x > maxX)
    x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth
      + (menu.offsetWidth - item.offsetWidth));
  y = Math.max(0, Math.min(y, maxY));
  item.subMenu.style.left = (x-desc-1) + "px";
  item.subMenu.style.top  = (y-61) + "px";
  item.subMenu.style.visibility = "visible";

  if (browser.isIE)
    window.event.cancelBubble = true;
  else
    event.stopPropagation();
}
//------------------------------------------
//------------------------------------------
function closeSubMenu(menu) {
  if (menu == null || menu.activeItem == null)
    return;

  if (menu.activeItem.subMenu != null) {
    closeSubMenu(menu.activeItem.subMenu);
    menu.activeItem.subMenu.style.visibility = "hidden";
    menu.activeItem.subMenu = null;
  }
  removeClassName(menu.activeItem, "menuItemHighlight");
  menu.activeItem = null;
}

//----------------------------------------------------------------------------
// Code to initialize menus.
//----------------------------------------------------------------------------
function menuInit(menu) {
  var itemList, spanList;
  var textEl, arrowEl;
  var itemWidth;
  var w, dw;
  var i, j;

 itemList = menu.getElementsByTagName("A");
  if (itemList.length > 0)
    itemWidth = itemList[0].offsetWidth;
  else
    return;

  if (browser.isIE) {
    w = itemList[0].offsetWidth;
    itemList[0].style.width = w + "px";
    dw = itemList[0].offsetWidth - w;
    w -= dw;
    itemList[0].style.width = w + "px";
  }

  menu.isInitialized = true;
}

//----------------------------------------------------------------------------
// General utility functions.
//----------------------------------------------------------------------------
function getContainerWith(node, tagName, className) {
  while (node != null) {
	  //alert(node.offsetTop);
	  if (node.tagName != null && node.tagName == tagName && hasClassName(node, className)){
		  return node;
	  }
    node = node.parentNode;
  }

  return node;
}
//------------------------------------------
//------------------------------------------
function hasClassName(el, name) {
  var i, list;
  list = el.className.split(" ");
  for (i = 0; i < list.length; i++)
    if (list[i] == name)
      return true;

  return false;
}
//------------------------------------------
//------------------------------------------
function removeClassName(el, name) {
  var i, curList, newList;
  if (el.className == null)
    return;

  newList = new Array();
  curList = el.className.split(" ");
  for (i = 0; i < curList.length; i++)
    if (curList[i] != name)
      newList.push(curList[i]);
  el.className = newList.join(" ");
}
//------------------------------------------
//------------------------------------------
function getPageOffsetLeft(el) {
  var x = el.offsetLeft;
  if (el.offsetParent != null)
    x += getPageOffsetLeft(el.offsetParent);

  return x;
}
//------------------------------------------
//------------------------------------------
function getPageOffsetTop(el) {
  if(el.id=="menu_mMenu2")
	return 60
  var y = el.offsetTop;
  if (el.name!="menu_mMenu2" && el.offsetParent != null)
    y += getPageOffsetTop(el.offsetParent);
  return y;
}
//------------------------------------------
//------------------------------------------
function clearAllSubMenus(){
	if(countDownHideMenu){
		clearTimeout(countDownHideMenu);
	};
	var oMenu = document.getElementById(menuObjectName);	
	if(oMenu){
		closeSubMenu(oMenu);
	}
	oMenu = document.getElementById(menuObjectName2);	
	if(oMenu){
		closeSubMenu(oMenu);
	}
};
//------------------------------------------
//------------------------------------------
function setMenuTimer(value){
	if (value==null){value = 5000}
  if(countDownHideMenu){
	clearTimeout(countDownHideMenu);
  };
  countDownHideMenu = setTimeout("clearAllSubMenus()", value);
};
//------------------------------------------
//------------------------------------------
function fnParseArrays(arr1, arr2, parseId){
	for(var i=0; i<arr1.items.length; i++){
		var oItem = new cMenuItem(arr1.items[i].id_section, arr1.items[i].id_section_parent, arr1.items[i].treelevel, arr1.items[i].name, arr1.items[i].redirurl, arr1.items[i].target)
		this.appendItem(oItem);
		if(arr1.items[i].id_section == parseId){
			for(var j=0; j<arr2.items.length; j++){
				var oItem = new cMenuItem(arr2.items[j].id_section, arr2.items[j].id_section_parent, arr2.items[j].treelevel, arr2.items[j].name, arr2.items[j].redirurl, arr2.items[j].target)
				this.appendItem(oItem);
			};
		};
	};
};

var countDownHideMenu;
var menuObjectName 	= "menu_mMenu";
var menuObjectName2 	= "menu_mMenu2";
var categoryMenu 	= new cMenu("categoryMenu");
var sectionMenu 	= new cMenu("sectionMenu");
var mMenu 		= new cMenu("mMenu");
var mMenu2 		= new cMenu("mMenu2");