﻿var Menu = new function()
{
  var _Active = new Array();
  var _Delay = 0;
  var _TimerOn = false;
  var _Submenu;

  this.Content = '';
 
  this.Open = function (url){if(SlideshowActive){Slideshow.Stop();}sendRequest(url,onPageLoaded);};
  this.Create = function (){sendRequest('sitemap.htm',onMenuLoaded);writeCSSClass();};
  this.Show = function (id, level){this.StopHide();this.HideLevel(level);var El=document.getElementById('link_'+id);El.className+=' selected';El=document.getElementById(id);El.className=El.className.replace(/invisible/g,'');_Active[id]=level;};
  this.Hide = function (key){this.StopHide();if(key&&_Active[key]){var El=document.getElementById(key);El.className+=' invisible';El=document.getElementById('link_'+key);El.className=El.className.replace(/selected/g,'');_Active[key]=null;}};
  this.HideLevel = function (level){for(var key in _Active){if(_Active[key]>=level){this.Hide(key);}}};
  this.HideDelay = function (key){if(_TimerOn==false){_Delay=window.setTimeout('Menu.Hide("'+key+'")',500);_TimerOn=true;}};
  this.HideAll = function (){Menu.HideLevel(0);Menu.Active=new Array();};
  this.StopHide = function (){if(_TimerOn){window.clearTimeout(_Delay);_Delay=null;_TimerOn=false;}};
  this.ShowSitemap = function (){var oDiv=document.getElementById('content');var oUL=document.createElement('ul');oUL.innerHTML=this.Content.innerHTML;var oA=oUL.getElementsByTagName('a');var oLI=oUL.getElementsByTagName('li');for (var i=0;i<oLI.length;i++){if(oLI[i].innerHTML==''){oLI[i].parentNode.removeChild(oLI[i]);}}for(var i=0;i<oA.length;i++){if(oA[i].target==''){oA[i].href='javascript:Menu.Open(\''+oA[i].href+'\')';}}oDiv.innerHTML='<h3>Sitemap</h3>';oUL.className='sitemap';oDiv.appendChild(oUL);}
  this.ShowSubmenu = function () 
  {
    var oParams = Page.getItems();
    _Submenu = (new Boolean(oParams.submenu)).valueOf();
    if (_Submenu)
    {
      var oLI = Page.getPageLI(oParams.pageid);
      var oDiv = document.getElementById(oParams.submenu_div);
      var oUL = (oParams.submenu_type == 'sibling') ? oLI.parentNode : oLI.getElementsByTagName('ul')[0];
      var sUL = '<ul>';
      for (var i = 0; i < oUL.childNodes.length; i++)
      {
        var oA;
        var oLI = oUL.childNodes[i];
        if (oLI.nodeType == 1)
        {
          try{oA = oLI.getElementsByTagName('a');}catch(e){;}
          sUL += '<li';
          sUL += (oParams.pageid == oLI.getAttribute('pageid')) ? ' class="active">' : '>';
          if (oA && oA.length > 0)
          { sUL += (oA[0].target != '') ? '<a href="' + oA[0].href + '" target="' + oA[0].target + '">' + oA[0].innerHTML + '</a>' : '<a href="javascript:Menu.Open(\'' + oA[0].href + '\')">' + oA[0].innerHTML + '</a>'; }
          sUL += '</li>'; 
        }
      }
      oDiv.innerHTML = sUL + '</ul>';
    }
  };
  
  this.Generator = function (oUL, id, level, classname)
    {
      if (oUL.innerHTML == '') return '';
      var sSubs = '';
      var iSubnodes = 0;
      var iCurrent = 0;
      var sMain = '<ul id="' + id + '"';
      if (level > 1)
      { sMain += ' class="invisible" onmouseover="Menu.StopHide();" onmouseout="Menu.HideDelay(\'' + id + '\');">'; }
      else
      { sMain += ' class="first">'; }
      for (var i = 0; i < oUL.childNodes.length; i++)
      { if (oUL.childNodes[i].nodeType == 1) iSubnodes++ }
      for (var i = 0; i < oUL.childNodes.length; i++)
      {
        var oLI = oUL.childNodes[i];
        if (oLI.nodeType == 1 && oLI.tagName.toLowerCase() == 'li')
        {
          var oA = oLI.getElementsByTagName('a')[0];
          var sID = oLI.id;
          var sClass = oLI.className;
          iCurrent++;
          classname = (sClass && sClass != '') ? sClass : classname;
          var classtext = (iCurrent == iSubnodes) ? classname + ' last' : classname;
          sMain += '<li';
          sMain += (classtext != '') ? ' class="' + classtext + '">' : '>';
          sMain += (oA.target != '') ? '<a href="' + oA.href + '" target="' + oA.target + '"' : '<a href="javascript:Menu.Open(\'' + oA.href + '\')"';
          if (sID && sID != '')
          { 
            sMain += ' id="link_' + sID + '" onmouseover="Menu.Show(\'' + sID + '\',' + level + ');">'; 
            sSubs += this.Generator(oLI.getElementsByTagName('ul')[0], sID, level + 1, classname);
          }
          else
          { sMain += ' onmouseover="Menu.HideLevel(' + level + ');">'; }
          sMain += oA.innerHTML + '</a></li>';
        }
      }
      sMain += '</ul>';
      return sMain + sSubs;
    };
}


function onMenuLoaded(req)
{
  var container = document.createElement('div');
  container.innerHTML = req.responseText;
  Menu.Content = container.getElementsByTagName('ul')[0];
  if (!Menu.Content) return;
  document.getElementById('menu').innerHTML = Menu.Generator(Menu.Content, 'home', 1, '');
  Page.Init();
  Page.Redirect();
}	

function onPageLoaded(req)
{
  var container = document.createElement('div');
	container.innerHTML = req.responseText;
  var Content = container.getElementsByTagName('div')[0];
	if (!Content) return;
	document.getElementById('content').innerHTML = Content.innerHTML;
	Content.innerHTML = '';
	container.innerHTML = '';
	Page.Init();
	Page.insertBreadcrumbs();
  Menu.ShowSubmenu();
	Slideshow.Init();
}

document.onclick = Menu.HideAll;
