﻿//----------------------------------------------------------------------------
// Object menu
//----------------------------------------------------------------------------
function cMenu(name){
	this.name		= name;
	this.items		= new Array();
	this.childMenus		= new Array();
	this.buildMenus		= new String("_"); //store info about builded menus
	this.itemCount		= 0;
	this.isTop			= true;
	
	this.appendItem 	= fnAppendItem;

	this.buildMainMenu  = fnBuildMainMenu;
	this.buildSideMenu	= fnBuildSideMenu;
	this.buildMenu		= fnBuildMenu;
	
	return this
}
//------------------------------------------
//------------------------------------------
function fnBuildMainMenu(){
		var myW = (browser.isIE) ? "100%" : "93%"
		document.write(this.buildSideMenu(myW));
	for(var i=0; i<this.childMenus.length; i++){
		document.write(this.childMenus[i]);
	}
	var aMenu = document.getElementById("menu_" + this.name);	
	if (browser.isIE){
    	aMenu.style.lineHeight = "2.5ex";
		spanList = aMenu.getElementsByTagName("SPAN");
    	for (i = 0; i < spanList.length; i++)
	    	if (hasClassName(spanList[i], "menuItemArrow")){
    	    //spanList[i].style.fontFamily = "Webdings";
	        spanList[i].firstChild.nodeValue = ">";
		    }
	  	}
	aMenu.style.visibility = "visible";
}
//------------------------------------------
//------------------------------------------
function fnBuildSideMenu(mWidth){
	var tMenu = new String();
	for(var i=0; i<this.itemCount; i++){
		if(this.items[i].treelevel < 3){
			if(this.items[i].treelevel == 2){
				var mHref = (this.items[i].redirurl!="") ? this.items[i].redirurl : ("/default.aspx?section=" + this.items[i].id_section);
				if((i<this.itemCount-3) && (this.items[i+1].treelevel>this.items[i].treelevel)){
					tMenu += "<a style=\"position:relative;width:100%\" class=\"menuItem\" href=\"" + mHref + "\" onmouseover=\"javascript:menuItemMouseover(event, 'menu_" + this.items[i].id_section + "');\" target=\"" + (this.items[i].trg=="1" ? "_blank" : "_self") + "\"><span class=\"menuItemText\">" + this.items[i].name + "</span><span class=\"menuItemArrow\">&#9654;</span></a>"
				}else{
					tMenu += "<a style=\"position:relative;width:100%\" class=\"menuItem\" href=\"" + mHref + "\" target=\"" + (this.items[i].trg=="1" ? "_blank" : "_self") + "\"><span class=\"menuItemText\">" +this.items[i].name + "</span></a>";
				};
			}else{
				var mHref = "#";
				tMenu += "<a style=\"position:relative;width:100%\" class=\"nonActiveMenuItem\" href=\"" + mHref + "\" target=\"" + (this.items[i].trg=="1" ? "_blank" : "_self") + "\"><span class=\"menuItemText\">" +this.items[i].name + "</span></a>";
			}
		}else{
			this.buildMenu(this.items[i].id_section_parent, this.items[i].treelevel, i);
		}
	}
	return "<div style=\"position:relative;width:" + (browser.isIE ? mWidth : (mWidth+10)) + "\" id=\"menu_" + this.name + "\" class=\"menu\" onmouseover=\"javascript: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?section=" + this.items[j].id_section);
				if(((j+1)<this.itemCount) && (this.items[j+1].treelevel>this.items[j].treelevel)){ //has submenu
					custMenu += "<a class=\"menuItem\" href=\"" + mHref + "\" onmouseover=\"menuItemMouseover(event, 'menu_" + this.items[j].id_section + "');\" target=\"" + (this.items[j].trg=="1" ? "_blank" : "_self") + "\"><span class=\"menuItemText\">" + this.items[j].name + "</span><span class=\"menuItemArrow\">&#9654;</span></a>"
				}else{
					custMenu += "<a class=\"menuItem\" href=\"" + mHref + "\" target=\"" + (this.items[j].trg=="1" ? "_blank" : "_self") + "\">" +this.items[j].name + "</a>";
				};
			}else{
				//exit for
				if(this.items[j].treelevel<treelevel){ //find same parent level
					this.childMenus[this.childMenus.length] = "<div style=\"position:absolute;\" id=\"menu_" + id_parent + "\" class=\"menu\" onmouseover=\"menuMouseover(event)\">" + custMenu + "</div>\n";
					this.buildMenus += id_parent+"_";
					return
				}
			}
		}
	}
}
//------------------------------------------
//------------------------------------------
function fnAppendItem(oItem){
	this.items[this.itemCount] = oItem;
	this.itemCount++;
}


//----------------------------------------------------------------------------
// Object menu item
//----------------------------------------------------------------------------
function cMenuItem(id_section, id_section_parent, treelevel, name, redirurl, trg){
	this.id_section			= id_section;
	this.id_section_parent  	= id_section_parent;
	this.treelevel			= treelevel;
	this.id_section			= id_section;
	this.name			= name;
	this.redirurl			= redirurl;
	this.trg			= trg;

	return this
}

//----------------------------------------------------------------------------
// Code to determine the browser and version.
//----------------------------------------------------------------------------
function Browser() {
  var ua, s, i;

  this.isIE    = false; 
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

//----------------------------------------------------------------------------
// Code for handling the menu bar and active button.
//----------------------------------------------------------------------------

var activeButton = null;

if (browser.isIE)
  document.onmousedown = pageMousedown;
else
  document.addEventListener("mousedown", pageMousedown, true);

//------------------------------------------
//------------------------------------------  
function pageMousedown(event) {
  var el;

  if (activeButton == null)
    return;

  if (browser.isIE)
    el = window.event.srcElement;
  else
    el = (event.target.tagName ? event.target : event.target.parentNode);

  if (el == activeButton)
    return;

  if (getContainerWith(el, "DIV", "menu") == null) {
    resetButton(activeButton);
    activeButton = null;
  }
}
//------------------------------------------
//------------------------------------------
function buttonClick(event, menuId) {
  var button;

  if (browser.isIE)
    button = window.event.srcElement;
  else
    button = event.currentTarget;

  button.blur();

  if (button.menu == null) {
    button.menu = document.getElementById(menuId);
    if (button.menu.isInitialized == null)
      menuInit(button.menu);
  }

  if (activeButton != null)
    resetButton(activeButton);

  if (button != activeButton) {
    depressButton(button);
    activeButton = button;
  }
  else
    activeButton = null;

  return false;
}
//------------------------------------------
//------------------------------------------
function buttonMouseover(event, menuId) {
  var button;

  if (browser.isIE)
    button = window.event.srcElement;
  else
    button = event.currentTarget;

  if (activeButton != null && activeButton != button)
    buttonClick(event, menuId);
}
//------------------------------------------
//------------------------------------------
function depressButton(button) {
  var x, y;
  button.className += " menuButtonActive";
  x = getPageOffsetLeft(button);
  y = getPageOffsetTop(button) + button.offsetHeight;
  button.menu.style.left = x + "px";
  button.menu.style.top  = y + "px";
  button.menu.style.visibility = "visible";
}
//------------------------------------------
//------------------------------------------
function resetButton(button) {
  removeClassName(button, "menuButtonActive");
  if (button.menu != null) {
    closeSubMenu(button.menu);
    button.menu.style.visibility = "hidden";
  }
}

//----------------------------------------------------------------------------
// 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) {
  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 - getPageOffsetLeft(document.getElementById("MainMenu"));
  y = getPageOffsetTop(item) - getPageOffsetTop(document.getElementById("MainMenu"));;
  var maxX, maxY;
  if (document.documentElement.clientWidth || document.body.clientWidth) {
    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);
  }else{
	  if(window.innerHeight) {
	    maxX = window.scrollX + window.innerWidth;
	    maxY = window.scrollY + window.innerHeight;
	  }
  }

  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 = (browser.isIE ? (x-20) : x) + "px";
  item.subMenu.style.top  = y + "px";

  var myFrame = document.getElementById("includeFrame");
  if(myFrame && browser.isIE && browser.version<6){
    myFrame.style.display = "none";   
  }else{
  	if(browser.isIE){
		showSelect("hidden");
	}
  }


  item.subMenu.style.visibility = "visible";

  aMenu = menu;
  
  if (browser.isIE)
    window.event.cancelBubble = true;
  else
    event.stopPropagation();
}
//------------------------------------------
//------------------------------------------
function closeSubMenu(menu) {
  if (menu == null || menu.activeItem == null || !menu)
	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;

  var myFrame = document.getElementById("includeFrame");
  if(myFrame && browser.isIE && browser.version<6){
    myFrame.style.display = "block";   
  }else{
  	if(browser.isIE){
		showSelect("visible");
	}
  }
}

//----------------------------------------------------------------------------
// Code to initialize menus.
//----------------------------------------------------------------------------
function menuInit(menu) {
  var itemList, spanList;
  var textEl, arrowEl;
  var itemWidth;
  var w, dw;
  var i, j;

  if (browser.isIE) {
    menu.style.lineHeight = "2.5ex";
    spanList = menu.getElementsByTagName("SPAN");
    for (i = 0; i < spanList.length; i++)
      if (hasClassName(spanList[i], "menuItemArrow")) {
        spanList[i].style.fontFamily = "Webdings";
        spanList[i].firstChild.nodeValue = "4";
      }
  }

  itemList = menu.getElementsByTagName("A");
  if (itemList.length > 0)
    itemWidth = itemList[0].offsetWidth;
  else
    return;

  for (i = 0; i < itemList.length; i++) {
    spanList = itemList[i].getElementsByTagName("SPAN");
    textEl  = null;
    arrowEl = null;
    for (j = 0; j < spanList.length; j++) {
      if (hasClassName(spanList[j], "menuItemText"))
        textEl = spanList[j];
      if (hasClassName(spanList[j], "menuItemArrow"))
        arrowEl = spanList[j];
    }
    if (textEl != null && arrowEl != null)
      textEl.style.paddingRight = (itemWidth 
        - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px";
  }

  if (browser.isIE ||browser.version>=6) {
    w = itemList[0].offsetWidth;
    itemList[0].style.width = w + "px";
    dw = itemList[0].offsetWidth - w;
    w -= dw;
    for(var i=0;i<itemList.length;i++){
		itemList[i].style.width = w + "px";
    }
  }
  menu.isInitialized = true;
}

//----------------------------------------------------------------------------
// General utility functions.
//----------------------------------------------------------------------------
function getContainerWith(node, tagName, className) {
  while (node != null) {
    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[newList.length] = curList[i];
    }
  el.className = newList.join(" ");
}
//------------------------------------------
//------------------------------------------
function getPageOffsetLeft(el) {
  var x = el.offsetLeft;
  if (el.offsetParent != null)
    x += getPageOffsetLeft(el.offsetParent);

  return (browser.isIE ? x : (x-10));
}
//------------------------------------------
//------------------------------------------
function getPageOffsetTop(el) {
  var y = el.offsetTop;
  if (el.offsetParent != null)
    y += getPageOffsetTop(el.offsetParent);

  return y;
}
//------------------------------------------
//------------------------------------------
function getParentContainer(el){
  var eName = (!el.id) ? "" : el.id;
  if (eName.indexOf("MainMenu")!=-1){
  		return el
  }else{
		if(el.tagName == "BODY"){
			return null
		}else{
			return getParentContainer(el.offsetParent);
		}  
  }
}

function clearMenus(){
	if(aMenu==null || !aMenu){
		return
	}else{
		 closeSubMenu(aMenu)
	}
}

//------------------------------------------
//------------------------------------------
function showSelect(state){
	for(var i=0; i< document.forms[0].elements.length; i++){
		var elm = document.forms[0].elements[i];
		var xx = new String(elm.type)
		if(xx.indexOf("select")!=-1){
			elm.style.visibility = state;
		}
	}
}


var aMenu = null;
