//{{{ modules.loadActions.prototype.topNav = function()
modules.loadActions.prototype.topNav = function(){
  
  topNav = this.topNav;
  topNav.navClassName = '#header-container .navigation';
  topNav.activeItem;
  topNav.timout = 100;
  topNav.backCompat = typeof(document.all); //modules.ieBackCompat(item);
  topNav.backVersion = modules.ieBackCompat($('header-container'));
  
  //{{{ topNav.loadNav = function()
  topNav.loadNav = function(){
    topNav.navRoot = $$(topNav.navClassName);
    topNav.navRoot.each(function(nav){
        nav.mainItems = Element.select(nav, 'a.main');
        
        nav.mainItems.each(function(item){
            Element.cleanWhitespace(item);
            item.parent = Element.ancestors(item)[0];
            item.submenu = Element.nextSiblings(item)[0];
            item.active = false;
            
            if(item.submenu){
              topNav.collectItemProperties(item);
              
              item.setDisplay = 'none';
              topNav.setMenuItem(item);
              
              topNav.itemBehaviour(item);
              topNav.activeItem = item;
            }
        });
        
    });
  } //}}}
  
  //{{{ topNav.collectItemProperties = function(item){
  topNav.collectItemProperties = function(item){
    item.resizeFlag = false;
    item.submenu.topPos = Element.positionedOffset(item.parent)[1] + Element.getHeight(item.parent);
    item.submenu.leftPos = Element.positionedOffset(item.parent)[0];
    
    item.firstCol = Element.select(item.submenu, '.col1');
    item.menuHeight = 0;
    item.firstCol.each(function(col){
        item.menuHeight += Element.getDimensions(col).height;
    });

    
    if(topNav.backCompat == 'object' ){
      item.submenu.ieCap = item.menuHeight;
      switch(topNav.backVersion){
        case 8:
          item.submenu.ieCap = item.submenu.ieCap;
          break;
        case 7:
          item.submenu.ieCap = item.submenu.ieCap + 5;
          break;
        case 6:
          item.submenu.ieCap = item.submenu.ieCap + 4;
          break;
        default:
          item.submenu.ieCap = item.submenu.ieCap + 4;
          break;
      }
    }
    
    item.colcaps = Element.select(item.submenu, '.colcap');
    item.colcapMargin = (topNav.backCompat == 'object') ? item.submenu.ieCap : item.menuHeight;
    item.colcaps.each(function(cap){
        Element.setStyle(cap, {
            marginTop:'-'+item.colcapMargin+'px'
        });
    });

    
    if(topNav.backCompat == 'object' ){
      item.submenu.iePos = item.submenu.topPos;
      switch(topNav.backVersion){
        case 8:
          item.submenu.iePos = item.submenu.iePos - 1;
          break;
        case 7:
          item.submenu.iePos = item.submenu.iePos -4;
          break;
        case 6:
          item.submenu.iePos = item.submenu.iePos -3;
          break;
        default:
          item.submenu.iePos = item.submenu.iePos -4;
          break;
      }
    }
    
  } //}}}
  
  //{{{ topNav.setMenuItem = function(item)
  topNav.setMenuItem = function(item){
    
    if(item.resizeFlag == true){
      topNav.resetMenu(item);
    }
    
    Element.setStyle(item.submenu, {
        top:(topNav.backCompat == 'object') ? item.submenu.iePos + 'px' : item.submenu.topPos + 'px',
        left:item.submenu.leftPos + 'px',
        height:item.menuHeight + 'px',
        width:'auto',
        display:item.setDisplay,
        visibility:'visible'
    });
    
    var doClassWork = (item.setDisplay == 'block') ? Element.addClassName(item.parent, 'hoveritem') : Element.removeClassName(item.parent, 'hoveritem');
    
  } //}}}
  
  //{{{ topNav.hideMenu = function(item)
  topNav.hideMenu = function(item){
    if(item.active == false) {
      item.setDisplay = 'none';
      topNav.setMenuItem(item);
    }
  } //}}}
  
  //{{{ topNav.resetMenu = function(item)
  topNav.resetMenu = function(item){
    Element.setStyle(item.submenu, {
        display:'block',
        visibility:'hidden'
    });
    
    topNav.collectItemProperties(item);
    
    Element.setStyle(item.submenu, {
        display:'none',
        visibility:'visible'
    });
  } //}}}
  
  //{{{ topNav.itemBehaviour = function(item)
  topNav.itemBehaviour = function(item){
    
    Event.observe(item, 'mouseover', function(){
        if(topNav.activeItem != item){
          topNav.activeItem.active = false;
          topNav.hideMenu(topNav.activeItem);
        }
        item.active = true;
        topNav.activeItem = item;
        item.setDisplay = 'block';
        topNav.setMenuItem(item);
    });
    
    Event.observe(item, 'mouseout', function(){
        item.active = false;
        window.setTimeout('modules.actions.topNav.hideMenu(modules.actions.topNav.activeItem)', 50);
    });
    
    
    Event.observe(item.submenu, 'mouseover', function(){
        item.active = true;
        item.setDisplay = 'block';
        topNav.setMenuItem(item);
    });
    
    Event.observe(item.submenu, 'mouseout', function(){
        item.active = false;
        window.setTimeout('modules.actions.topNav.hideMenu(modules.actions.topNav.activeItem)', 50);
    });
    
    Event.observe(window, 'resize', function(){
        item.resizeFlag = true;
    }.bind(item));
    
    
  } //}}}
  
  if($$(topNav.navClassName)[0]){
    topNav.loadNav();
  }
} //}}}


//{{{ modules.loadActions.prototype.printPage = function()
modules.loadActions.prototype.printPage = function(){
  
  printPage = this.printPage;
  printPage.printClassName = '.printicon';
  
  printPage.loadPrint = function(){
    printPage.printButton = $$(printPage.printClassName);
    printPage.printButton.each(function(button){
        printPage.collectPrintProperties(button);
    });
  }
  
  printPage.collectPrintProperties = function(btn){
    Element.cleanWhitespace(btn);
    btn.withComments = $('yescomments');
    btn.withoutComments = $('nocomments');
    btn.print = $('fullpage');
    btn.close = $$('.closeicon')[0];
    printPage.printBehavior(btn);
  }
  
  printPage.printBehavior = function(btn){
    
    Event.observe(btn, 'click', function(e){
        if(location.search.indexOf('printerFriendly=true')!=-1){
          window.print();
        }
        else{
          var appendChar = (location.search!='')? '&' : '?';
          var newLoc = 'http://' + location.host + location.pathname + location.search + appendChar + 'printerFriendly=true';
          window.open(newLoc, '_blank' );
        }
        Event.stop(e);
    });
    
    if(btn.close){
      Event.observe(btn.close, 'click', function(e){
          window.close();
          //Event.stop(e);
      });
    }
    
    if(btn.withComments){
      Event.observe(btn.withoutComments, 'click', function(e){
          Element.addClassName(printPage.hasComments, 'noprint');
          window.print();
          Event.stop(e);
      });
      
      Event.observe(btn.withComments, 'click', function(e){
          if(Element.hasClassName(printPage.hasComments, 'noprint')){
            Element.removeClassName(printPage.hasComments, 'noprint');
          }
          window.print();
          Event.stop(e);
      });
    }
  }
  
  if($$(printPage.printClassName)[0]){
    printPage.loadPrint();
  }
} //}}}


//{{{ modules.loadActions.prototype.textSize = function(
modules.loadActions.prototype.textSize = function(){
  textSize = this.textSize;
  
  textSize.txtClass = '.fontcontrols';
  textSize.targetElem = $$('.maincontent')[0];
  textSize.up   = $('fontsizeup');
  textSize.down = $('fontsizedown');
  
  textSize.baseNum = 1;
  textSize.decNum = 0;
  
  textSize.minSize = 0.8;
  textSize.maxSize = 1.8;
  
  textSize.load = function(){
    if(textSize.targetElem){
      var txtCookie = modules.readCookie('fontSize');
      if(txtCookie != null){
        Element.setStyle(textSize.targetElem, {
          fontSize:txtCookie + 'em'
        })
        textSize.baseNum = txtCookie.substring(0,1) ;
        textSize.decNum = txtCookie.substring(2);
      }
      
      Event.observe(textSize.up, 'click', function(e){
          if(textSize.baseNum + '.' + textSize.decNum <= textSize.maxSize){
           textSize.decNum++;
           textSize.decNum++;
           if(textSize.decNum == 10){
             textSize.decNum = 0;
             textSize.baseNum++;
           }
           textSize.adjustSize();
          }
      });
      
      Event.observe(textSize.down, 'click', function(e){
          if(textSize.baseNum + '.' + textSize.decNum >= textSize.minSize){
           textSize.decNum--;
           textSize.decNum--;
           if(textSize.decNum < 0){
             textSize.decNum = 8;
             textSize.baseNum--;
           }
           textSize.adjustSize();
          }
      });
    }
  }
  
  textSize.adjustSize = function() {
    
    var setNum = textSize.baseNum + '.' + textSize.decNum;
    
    Element.setStyle(textSize.targetElem, {
      fontSize:setNum + 'em'
    })
    
    if(setNum < textSize.minSize){
      Element.removeClassName(textSize.down, 'active-region');
    }
    if(setNum > textSize.minSize){
      Element.addClassName(textSize.down, 'active-region');
    }
    if(setNum > textSize.maxSize){
      Element.removeClassName(textSize.up, 'active-region');
    }
    if(setNum < textSize.minSize){
      Element.addClassName(textSize.up, 'active-region');
    }
    
    Cufon('h1');
    
    document.cookie = 'fontSize='+ setNum + '; path=/';
    
  }
  
  if($$(textSize.txtClass)[0]){
    textSize.load();
  }
  
} //}}}


//{{{ modules.loadActions.prototype.leaveComment = function()
modules.loadActions.prototype.leaveComment = function(){
  
  leaveComment = this.leaveComment;
  leaveComment.cmntClassName = '#comment-container';
  
  leaveComment.load = function(){
    leaveComment.containers = $$(leaveComment.cmntClassName);
    
    leaveComment.containers.each(function(cont){
        cont.btn  = Element.select(cont, '#showcomment')[0];
        cont.frm  = Element.select(cont, '.commentform')[0];
        cont.frmSubmit = Element.select(cont.frm, '.submit')[0];
        cont.rply = Element.select(cont, '.comment-reply');
        
        leaveComment.behaviour(cont);
        
    });
    
  }
  
  leaveComment.behaviour = function(cont){
    
    Event.observe(cont.btn, 'click', function(){
        leaveComment.gotoAndShowForm(cont);
    }.bind(cont));
    
    cont.rply.each(function(link){
        Event.observe(link, 'click', function(e){
            link.infoObj = link.rel.evalJSON(true);
            cont.frm.ThreadId.value = link.infoObj.ThreadId;
            cont.frm.ParentId.value = link.infoObj.ParentId;
            var quoted = '<div class="clear"></div><h4>You are replying to :</h4> " ' + Element.previousSiblings(link)[0].innerHTML + ' "';
            var quoteCont = '<div class="refquote" >' + quoted + '</<div>';
            if($$('.refquote')[0]){
              $$('.refquote')[0].innerHTML = quoted;
            }
            else{
              Element.insert(cont.frm, {
                  before:quoteCont
              });
            }
            leaveComment.gotoAndShowForm(cont);
            Event.stop(e)
        }.bind(cont));
    });
    
  }
  
  leaveComment.gotoAndShowForm = function(cont){
    Element.setStyle(cont.frm,{display:'block'});
    cont.frmSubmit.focus();
    cont.frm.Content.focus();
  }
  
  
  if($$(leaveComment.cmntClassName)[0]){
    leaveComment.load();
  }
  
} //}}}
