/**
 * FuguMenuBuilder - developed by fugu GmbH, Bern, Switzerland, www.fugu.ch
 * 
 * Builds the menu
 */
FuguMenuBuilder = new AJS.Class({
	
	// Constructor
	init : function() {	},
		
	update : function(orderPos) {
    try {
      var data = window.dataLoader.getData();
      var ordered = window.dataLoader.getOrdered();
      
      if(data==null){
        return;
      }
      
      var urlKey = ordered[orderPos];
      
      var menu1 = AJS.$('menu1');
      var menu2 = AJS.$('menu2');
      var menu3 = AJS.$('menu3');
      if(menu1==null || menu2==null || menu2==null)
        return;
      
      var parentUrlKey = null;
      var lookUp = window.dataLoader.getLookUp();
      var activeObj = lookUp[urlKey];
      if(activeObj!=null){
        var p = lookUp[urlKey]['parent'];
        if(p!=null){
          parentUrlKey = p['urlkey']; 
        }
      }
      else {
        urlKey = null; 
      }
      
      //Set title
      if(this.defaultTitle==null){
        this.defaultTitle = SWFAddress.getTitle();
      }
      
      if(activeObj==null || urlKey==''){
        //Home 
        SWFAddress.setTitle(this.defaultTitle);
      }
      else {
        var title = '';
        if(activeObj['type'] == 'portrait' && (activeObj['TEMPLATE']=='template_customers' || activeObj['TEMPLATE']=='template_contact')) {
          title = activeObj['parent']['name'];
        }
        else if(activeObj['type'] == 'news') {
          title = '';
        } 
        else {
          title = activeObj['_websitetitle_'];
        }

        SWFAddress.setTitle('fugu : '+this.escapeName(title));
      }
                  
      var subData = null;
      
      var portfolioHtml = '';
      var list = data['portfolio'];
      for (var k in list) {
        if (list[k]['urlkey']==urlKey || list[k]['urlkey']==parentUrlKey) {
          portfolioHtml += '<li><span class="active_link">' + list[k]['name'] + '</span></li>';
          subData = list[k];
        } 
        else {
          portfolioHtml += '<li><a href="#' + list[k]['_websiteurl_'] + '">' + list[k]['name'] + '</a></li>'; 
        }
      }
            
      var portraitHtml = '';
      var list = data['portrait'];
      for (var k in list) {
        if (list[k]['urlkey']==urlKey || list[k]['urlkey']==parentUrlKey) {
          portraitHtml += '<li><span class="active_link' + (portraitHtml.length==0?' new_section':'') + '">' + list[k]['name'] + '</span></li>';
          subData = list[k];
        } 
        else {
          portraitHtml += '<li' + (portraitHtml.length==0?' class="new_section"':'') + '><a href="#' + list[k]['_websiteurl_'] + '">' + list[k]['name'] + '</a></li>';
        }
      }
      
      var homeObj = lookUp[''];
      homeObj = homeObj['parent'];

      menu1.innerHTML = 
      '<a class="main_button hide" href="#">'+homeObj['name']+'</a>\
      <!--[if lte IE 6]>\
      <a class="main_button" href="#">'+homeObj['name']+'\
      <table><tr><td>\
      <![endif]-->\
      <ul>' +
      portfolioHtml +
      portraitHtml +
      '</ul>\
      <!--[if lte IE 6]>\
      </td></tr></table>\
      </a>\
      <![endif]-->';
      
      var activeSubData = null;
      var menu2Html = '';
      if(subData!=null && subData['list']!=null){
        var list = subData['list'];
        var c = 0;
        for (var k in list) {
          if (list[k]['urlkey']==urlKey) {
            menu2Html += '<li><span class="active_link">' + list[k]['name'] + '</span></li>';
            activeSubData = list[k];
          } 
          else {
            menu2Html += '<li><a href="#' + subData['list'][k]['_websiteurl_'] + '">' + list[k]['name'] + '</a></li>';
          }
          c++;
        }
        if(c<=1){
           activeSubData = subData;
           menu2Html = '';
        }
      }
      
      if(menu2Html.length>0){
        menu2.innerHTML = 
        '<a class="main_button hide" href="#'+subData['_websiteurl_']+'">'+this.escapeName(subData['name'])+'</a>\
        <!--[if lte IE 6]>\
        <a class="main_button" href="#'+subData['_websiteurl_']+'">'+this.escapeName(subData['name'])+'\
        <table><tr><td>\
        <![endif]-->\
        <ul>' +
        menu2Html +
        '</ul>\
        <!--[if lte IE 6]>\
        </td></tr></table>\
        </a>\
        <![endif]-->';
      }
      else {
        menu2.innerHTML = '';  
      }
      
      if(activeSubData!=null){
        menu3.innerHTML = this.escapeName(activeSubData['name']); 
      } 
      else {
        menu3.innerHTML = '';
      }
      
      if(this.visited==null){
        this.visited = new Object();
      }
        
      if(this.lastActiveObj!=null){
        this.lastActiveObj['_visited_'] = true; 
      }
      
      if(this.lastActiveObj!=null && this.lastActiveObj['urlkey']!=''){
        var k = '/#'+this.lastActiveObj['urlkey'];
        if(this.visited[k]==null){
           this.visited[k] = true;
        }
        if (this.lastActiveObj['parent']!=null){
          var parent = this.lastActiveObj['parent'];
          k = parent['urlkey'];
          if(this.visited[k]==null){
            var list = parent['list'];
            if(list!=null){
              var allVisited = true;
              for (var i in list) {
                if(list[i]['_visited_']==null){
                  allVisited = false;
                  break;
                }
              }
              if(allVisited){
                //console.log('hier: '+parent['name']+' '+allVisited);
                this.visited[k] = true;
              }
            }
          }
        }
      }
      
      //For last strike through visited links
      //if(this.lastActiveObj!=null && this.lastActiveObj['urlkey']!=''){
        var els = document.getElementsByTagName('a');
        if(els!=null){
          var els_len = els.length;
          for (var i = 0; i < els_len; i++) {
            for(var k in this.visited){
              if(els[i].href.indexOf(k)!=-1){
                els[i].style.textDecoration = 'line-through';
              }
            }
          }
        }
      //}
             
      this.lastActiveObj = activeObj;
    }
    catch(e){ }
	},
	  
  escapeName : function(name){
    return name.replace (/\n/g,   " ")
               .replace (/\r/g,   "")
               .replace (/<br[^>]*>/g, " ");
  }
});