// Author: Christophe Lecoq

/**
 * 
 */
var LayoutManager = {
  
  images: [
    './img/empty.gif',
    './img/main-menu/bg.gif',
    './img/footer/footer-en.png',
    './img/footer/footer-fr.png',
    './img/main-menu/activcell-bg.jpg'
  ],
  
  /**
   * Crée le layout de la page
   */
  applyLayout: function(_options) {
    
    var links = $$('a.blanktarget');
    for (var l=0; l<links.length; l++) {
      var ref = links[l].get('href');
      $console(ref);
      links[l].removeProperty('href');
      links[l].addEvent('click', function() {
        window.open(this);
      }.bind(ref));
    }
  
    var table = new Element('table');
    var tr = new Element('tr').inject(new Element('tbody').inject(table));
    new Element('img',{'src':'./img/wmi-mini-logo.gif','alt':''}).inject(new Element('td').inject(tr));
    new Element('img',{'src':'./img/loader.gif','alt':''}).inject(new Element('td').inject(tr));
    LayoutManager.loader = new BPopup({ 'width':'100px','height':'40px','background':'#FFF','opacity':1 }, table);
    LayoutManager.loader.show();
    
    var imgs = new Array();
    imgs.extend(LayoutManager.images);
    if (_options.images) imgs.extend(_options.images);
    new Asset.images(imgs, {
      
      onComplete: function(_opt) {
        var body = $$('body')[0];
        var elements = body.getChildren();
        var centeredElement = new Element('div',{ 'id':'WmiPageContainer' }).inject(body,'top')
        
        // La barre
        LayoutManager.cellContainer = $('corpMainMenu');
        if (LayoutManager.cellContainer) {
          var banner = new Element('div',{'id':'WmiMainMenu'}).inject(centeredElement);
          var a = new Element('a', {'href':HOME_URL }).inject(new Element('div', { 'id':'backToHome' }).inject(banner));
          new Element('img',{'src':'./img/empty.gif', 'alt':'WMI'}).inject(a);
          new Element('div',{'id':'WmiMainMenuTitle'}).set('text',(_opt.title)? _opt.title : '').inject(banner);
          var cellsdiv = new Element('div',{'id':'WmiMainMenuCells'}).inject(banner);        
          cellsdiv.grab(LayoutManager.cellContainer);
          LayoutManager.updateMenuCells();
          banner.addClass('wmiLayoutNoGrab');
          LayoutManager.cellContainer.addClass('wmiLayoutNoGrab');
        }
        
        // le sous-menu
        LayoutManager.subMenuCellContainer = $('corpSubMenu');
        if (LayoutManager.subMenuCellContainer) {
          LayoutManager.subMenu = new Element('div',{ 'id':'submenu' }).inject(centeredElement);
          var cellsdiv = new Element('div',{'id':'WmiSubMenuCells'}).inject(LayoutManager.subMenu);
          cellsdiv.grab(LayoutManager.subMenuCellContainer);
          LayoutManager.updateSubMenuCells();
          LayoutManager.subMenuCellContainer.addClass('wmiLayoutNoGrab');
          LayoutManager.subMenu.addClass('wmiLayoutNoGrab');
        }
        
        // Le container
        var contDiv = new Element('div',{ 'id':'wmiContainer', 'class':'wmiLayoutNoGrab'}).inject(centeredElement);
                
        // un div pour créer un peu d'espace en bas de page
        new Element('div',{ 'styles': { 'height':'160px' } }).inject(centeredElement);
        
        // on ajoute le contenu de la page
        elements.each(function(elmt) {
          if (!elmt.hasClass('wmiLayoutNoGrab')) this.grab(elmt);
          elmt.removeClass('hiddenOnLoad');
        }.bind(contDiv));
        
        // Selection de l'entrée dans le menu
        if (_opt.selectedCell!=null) LayoutManager.setSelectedCell(_opt.selectedCell);
        if (_opt.selectedSubCell!=null) LayoutManager.setSelectedSubMenuCell(_opt.selectedSubCell);
        
        if (_opt.onComplete) _opt.onComplete(); 
        
        LayoutManager.loader.hide();
        LayoutManager.loader.dispose();        
      }.bind(this, _options)
    });
  },
  
  /**
   * Selectionne une des entrées du menu (_idx = entier de 0 à n)
   */
  setSelectedCell: function(_idx) {
    var cells = LayoutManager.cellContainer.getElements('li');
    for (var i=0; i<cells.length; i++) {
      if (i==_idx) {
        cells[i].removeClass('inactiv');
        cells[i].removeClass('activ');
        cells[i].addClass('selected');
      }
      else {
        cells[i].removeClass('selected');
        cells[i].removeClass('activ');
        cells[i].addClass('inactiv');
      }
    }
  },
  
  /**
   * Retourne l'index d'une entrée du menu.
   */
  getCellIndex: function(_li) {
    var cells = LayoutManager.cellContainer.getElements('li');
    for (var i=0; i<cells.length; i++) if (cells[i]==_li) return i;
    return -1;
  },
  
  /**
   * Ajoute une entrée dans le menu.
   */
  updateMenuCells: function() {
    //var li = new Element('li',{'class':'inactiv'}).inject(LayoutManager.cellContainer).set('text',_name);
    var cells = LayoutManager.cellContainer.getElements('li');
    for (var i=0; i<cells.length; i++) {
      li = cells[i];
      li.addClass('inactiv');
      li.addEvent('mouseover', function() { if (!this.hasClass('selected')) { this.toggleClass('inactiv'); this.toggleClass('activ'); } }.bind(li));
      li.addEvent('mouseout', function() { if (!this.hasClass('selected')) { this.toggleClass('activ'); this.toggleClass('inactiv'); } }.bind(li));
      var ref = li.getElement('a');
      if (ref) {
        li.addEvent('click', function(_opts) { 
          document.location = _opts.location;
        }.bind(li,{'location':ref.getProperty('href')}));
      }
    }
  },
  
  
  /**
   * Ajoute une entrée dans le menu.
   */
  updateSubMenuCells: function() {
    if (!LayoutManager.subMenu) return;
    var cells = LayoutManager.subMenuCellContainer.getElements('li');
    for (var i=0; i<cells.length; i++) {
      //var li = new Element('li',{'class':'inactiv2'}).inject(LayoutManager.subMenuCellContainer).set('text',_name);
      var li = cells[i];
      li.addClass('inactiv2');
      li.addEvent('mouseover', function() { if (!this.hasClass('selected2')) { this.toggleClass('inactiv2'); this.toggleClass('activ2'); } }.bind(li));
      li.addEvent('mouseout', function() { if (!this.hasClass('selected2')) { this.toggleClass('activ2'); this.toggleClass('inactiv2'); } }.bind(li));
      /*var ref = li.getElement('a');
      if (ref) {
        li.addEvent('click', function(_opts) { 
          document.location = _opts.location;
        }.bind(li,{'location':ref.getProperty('href')}));
      }*/
    }
  },
  
  
  /**
   * Selectionne une des entrées du sous-menu (_idx = entier de 0 à n)
   */
  setSelectedSubMenuCell: function(_idx) {
    if (!LayoutManager.subMenu) LayoutManager.subMenu;
    var cells = LayoutManager.subMenuCellContainer.getElements('li');
    for (var i=0; i<cells.length; i++) {
      if (i==_idx) { cells[i].removeClass('inactiv2'); cells[i].removeClass('activ2'); cells[i].addClass('selected2'); }
      else { cells[i].removeClass('selected2'); cells[i].removeClass('activ2'); cells[i].addClass('inactiv2'); }
    }
  },
  
  /**
   * Retourne l'index d'une entrée du sous-menu.
   */
  getSubMenuCellIndex: function(_li) {
    var cells = LayoutManager.subMenuCellContainer.getElements('li');
    for (var i=0; i<cells.length; i++) if (cells[i]==_li) return i;
    return -1;
  },
  
  
  /**
   * Ajoute une entrée dans le footer.
   */
  addFooterCell: function(_name,_function) {
    var li = new Element('li').inject(LayoutManager.footerCellContainer).set('text',_name);
    li.addEvent('mouseover', function() { this.toggleClass('mouseover'); }.bind(li));
    li.addEvent('mouseout', function() { this.toggleClass('mouseover'); }.bind(li));
    li.addEvent('click', function(_opts) { 
      if (_opts.fn) _opts.fn(); 
    }.bind(li,{'fn':_function}));
  },
  
  
  /**
   * Change la langue du site
   */
  setLanguage: function(_languageCode) {
    //$console('TODO: changeLanguage(\''+_languageCode+'\')', 'warn');
    var loc = ''+document.location;
    var idx = loc.indexOf('bsflang=');
    if (idx>-1) {
      idx += 8;
      document.location = loc.substring(0,idx)+_languageCode+loc.substring(idx+2);
    }
    else {
      document.location = loc+'?bsflang='+_languageCode;
    }
  },
  
  
  createPopup: function(_title, _width, _height, _elmt) {
    var elmt = new Element('div', { 'styles':{'width':_width, 'height':_height, 'border': '1px solid #FF5002', 'padding': '0px', 'background': '#FFFFFF' } });
    var bpopup = new BPopup({'width':_width, 'height':_height,'opacity':0.3 }, elmt);
    var bar = new Element('div' , { 'styles':{'width':parseInt(_width)-6, 'height':'20px', 'border': '0px', 'padding': '3px', 'background': '#FF5002' } }).inject(elmt);
    var tr = new Element('tr').inject(new Element('tbody').inject(new Element('table',{'width':'100%','border':'0','cellpadding':'0','cellspacing':'0'}).inject(bar)));
    new Element('td', {'styles':{'padding-left':'10px','color':'#FFFFFF','font-weight':'bold'}}).inject(tr).set('text',_title);
    var close = new Element('td',{'styles':{'width':'50px'}}).inject(tr);
    var img = new Element('img', {'src':'/img/closepopup.png','border':'0','styles':{'cursor': 'pointer'}}).inject(close);
    img.addEvent('click',function() { this.hide(); this.dispose(); }.bind(bpopup));
    _elmt.inject(elmt);
    return bpopup;
  },
  
  getMainBarFirstCell: function() {
    return $('poduiMainBarCell1'); 
  },
  
  getMainBarSecondCell: function() {
    return $('poduiMainBarCell2'); 
  }
}