
window.dhtmlHistory.create();

onload = function ()
{
  /** Initialize */
  LoadIcon.init({ img: './images/ajax-loader-large.gif' });
  Transform.init('file', './xsl/portion_frame.xsl', 'frame', document.getElementById('main'));
  
  /** RSH implementation */
  var rshListener = function (newLocation, historyData)
  {
    document.body.scrollTop = 0;
    Transform.execute('WebNET.aspx?u=WebNETGuest&p=template&a=2&i1=' + newLocation);
  }
  
  dhtmlHistory.initialize();
  dhtmlHistory.addListener(rshListener);
  
  /** Bookmarking */
  if (document.location.href.match(/#(.+)$/))
  {
    Transform.execute('WebNET.aspx?u=WebNETGuest&p=template&a=2&i1=' + (/#(.+)$/.exec(document.location.href)[1]));
  }
  
  /** :TMP: */
  if (navigator.appName.toLowerCase() == 'netscape') { document.body.innerHTML = document.body.innerHTML.compress(); }
  
  /** Build navigation */
  var name = '';
  var xmlNavi = '';
  
  var onlyGuest = checkGroup();
  var company = Element.getByClass('company', document)[0];
  
  xmlNavi += '<navi>';
  
  for (var i = 0; i < company.childNodes.length; i++)
  {
    // Company, start
    if (!onlyGuest)
    {
      var companyId = /company_(\d+)/.exec(company.childNodes[i].id)[1];
      var companyName = Element.getAttribute('name', company.childNodes[i]);
      xmlNavi += '<item>';
      xmlNavi += '<caption>' + companyName + '</caption>';
      xmlNavi += '<name>' + companyName + '</name>';
      xmlNavi += '<url></url>';
      
      if (i != 0)
      {
        company.childNodes[i].style.display = 'none';
      }
    }
    
    var group = Element.getByClass('group', company.childNodes[i])[0];
    
    for (var j = 0; j < group.childNodes.length; j++)
    {
      // Group, start
      if (!onlyGuest)
      {
        var groupId = /group_(\d+)/.exec(group.childNodes[j].id)[1];
        var groupName = Element.getAttribute('name', group.childNodes[j]);
        xmlNavi += '<item>';
        xmlNavi += '<caption>' + groupName + '</caption>';
        xmlNavi += '<name>' + groupName + '</name>';
        xmlNavi += '<url></url>';
        
        if (j != 0)
        {
          group.childNodes[j].style.display = 'none';
        }
      }
      
      var template = Element.getByClass('template', group.childNodes[j])[0];
      
      for (var k = 0; k < template.childNodes.length; k++)
      {
        var templateId = /template_(\d+)/.exec(template.childNodes[k].id)[1];
        var templateName = Element.getAttribute('name', template.childNodes[k]);
        var templateVisible = Element.getAttribute('visibleout', template.childNodes[k]);
        
        if (templateName != 'Main' && templateVisible) // :NOTE: Temporary fix
        {
          xmlNavi += '<item>';
          xmlNavi += '<caption>' + templateName + '</caption>';
          xmlNavi += '<name>' + templateName + '</name>';
          xmlNavi += '<url>#' + templateId + '</url>';
          
          xmlNavi += getSubTemplate(template.childNodes[k], [templateId]);
          
          xmlNavi += '</item>';
        }
        
        if (j != 0)
        {
          group.childNodes[j].style.display = 'none';
        }
      }
      
      // Group, end
      if (!onlyGuest)
      {
        xmlNavi += '</item>';
      }
    }
    
    // Company, end
    if (!onlyGuest)
    {
      xmlNavi += '</item>';
    }
  }
  
  xmlNavi += '</navi>';
  
  xmlNavi = xmlNavi.replace(/&/g, '&amp;');
  Navigation.init('navi', xmlNavi);
  
  // Prepare navigation
  // Transform.prepareLink('a');
  // Transform.prepareLink('area');
  
  function checkGroup()
  {
    // Initialize
    var onlyGuest = false;
    
    // Execute
    var company = Element.getByClass('company', document)[0];
    
    for (var i = 0; i < company.childNodes.length; i++)
    {
      var group = Element.getByClass('group', company.childNodes[i])[0];
      
      for (var j = 0; j < group.childNodes.length; j++)
      {
        var groupId = /group_(\d+)/.exec(group.childNodes[j].id)[1];
        var groupName = Element.getAttribute('name', group.childNodes[j]);
        
        if (group.childNodes.length == 1 && groupName == 'guest')
        {
          onlyGuest = true;
        }
      }
    }
    
    return onlyGuest;
  }
  
  function getSubTemplate(data, tplCollection)
  {
    var templates = Element.getByClass('template', data)[0];
    
    var xmlNavi = '';
    
    if (typeof templates != 'undefined' && templates.childNodes.length > 0)
    {
      for (var i = 0; i < templates.childNodes.length; i++)
      {
        var templateId = /template_(\d+)/.exec(templates.childNodes[i].id)[1];
        var templateName = Element.getAttribute('name', templates.childNodes[i]);
        var templateVisible = Element.getAttribute('visibleout', template.childNodes[k]);
        
        if (templateId && templateName && templateVisible)
        {
          tplCollection[tplCollection.length] = templateId;
          templateIdPath = buildTemplateIdPath(tplCollection);
          
          xmlNavi += '<item>';
          xmlNavi += '<caption>' + templateName + '</caption>';
          xmlNavi += '<name>' + templateName + '</name>';
          xmlNavi += '<url>#' + templateIdPath + '</url>'
          
          xmlNavi += getSubTemplate(templates.childNodes[i], tplCollection);
          
          xmlNavi += '</item>';
          
          tplCollection.pop();
        }
      }
    }
    
    return xmlNavi;
  }
  
  function buildTemplateIdPath(tplCollection)
  {
    var data = '';
    
    data = tplCollection[0];
    
    if (tplCollection.length > 0)
    {
      for (var i = 1; i < tplCollection.length; i++)
      {
        data += ',' + tplCollection[i];
      }
    }
    
    return data;
  }
}
