var Site = {

  start: function() {
    if ($$('img')) {
      $$('img').setProperty('title', '');
    }
    if ($('portfolio-nav')) {
      if ($$('.portfolio-detail')[0]) {
        Site.setPortfolioDetail();
      }
      else {
        Site.setPortfolioBrowse();
      }
    }
    if ($$('#container.people')[0] || $$('#container.news')[0]) {
      Site.replaceH3s();
    }
    if ($$('#container.people')[0]) {
     $$('.person:odd').addClass('even');
    }
    if ($$('#container.about')[0] && !$$('#container.what-we-do')[0]) {
      $$('h3')[0].setStyle('height', $('content').getStyle('height'));
    }
  },
  
  replaceH3s: function() {
    var h3s = $$('h3');
    h3s.each(function(h3){
      className = h3.getProperty('class');
      h3.setStyle('background-image', 'url(/images_headers/'+className+'.gif)');
      h3.setStyle('text-indent', '-1000em');
    })
  },
  
  setPortfolioBrowse: function() {
    Site.setPortfolioBrowseNav();
    Site.setPortfolioBrowseTitles();
  },
  
  setPortfolioBrowseNav: function() {
    var cats = $$('#portfolio-nav ol');
    var width = $$('#portfolio-nav ol li')[0].getStyle('width').toInt() * 6;
    
    cats.each(function(list) {
      if (list.getChildren('li').length > 6) {
        
        // create elements
        var imageNav = new Element('ul', {'class': 'controls'});
        imageNav.injectInside(list.getParent('li'));
        var imageNavList1 = new Element('li', {text: 'Previous', 'class': 'previous off'});
        imageNavList1.injectInside(imageNav);
        var imageNavList2 = new Element('li', {text: 'Next', 'class': 'next'});
        imageNavList2.injectInside(imageNav);
        
        
        // move left
        var myTween = new Fx.Tween(list, {'duration': 500, 'link': 'ignore', transition: Fx.Transitions.Quad.easeOut});
        imageNavList1.addEvent('click', function(event){
          imageNavList2.removeClass('off');
          var current = list.getStyle('left').toInt();
          end = current + width;
          if (end >= 175) {
            imageNavList1.addClass('off');
            end = 175;
          }
          myTween.start('left', end);
        });
        
        // move right
        imageNavList2.addEvent('click', function(event){
          imageNavList1.removeClass('off');
          var current = list.getStyle('left').toInt();
          end = current - width;
          max = (list.getChildren('li').length / 6) * -width + 175 + width;
          if (end <= max) {
            imageNavList2.addClass('off');
            end = max;
          }
          myTween.start('left', end);
        });
      }
    });
  },
  
  setPortfolioBrowseTitles: function() {
    var cats = $$('#portfolio-nav ol');
    var zIndexNumber = 1000;

    // fix for IE7 z-index bug
    if(Browser.Engine.trident){
      var zIndexNumber = 1000;
      $$('#portfolio-nav li').each(function(el,i){
        el.setStyle('z-index',zIndexNumber);
        zIndexNumber -= 10;
      });
    };
    
    cats.each(function(list) {
      
      // check for titles
      if (list.getChildren('li').hasChild('.title')) {

        // create elements
        var rowDetails = new Element('span', {'class': 'row-details'});
        var rowDetailsDiv = new Element('div');        
        rowDetails.injectInside(list.getParent('li'));
        rowDetailsDiv.injectInside(rowDetails);
        var detailsTitle = new Element('span', {'class': 'title'});
        var detailsLocation = new Element('span', {'class': 'location'});
        detailsTitle.injectInside(rowDetailsDiv);
        detailsLocation.injectInside(rowDetailsDiv);
        
        // show row details
        list.addEvent('mouseenter', function(event){
          Site.animatePortfolioBrowseTitles(rowDetails, 25);
        });
        
        // hide row details
        list.getParent('li').addEvent('mouseleave', function(event){
          Site.animatePortfolioBrowseTitles(rowDetails, 0);
        });
        
        $$('h4').addEvent('mouseenter', function(event){
          Site.animatePortfolioBrowseTitles(rowDetails, 0);
        });

        // set project details
        var projects = list.getChildren('li');
        
        projects.each(function(project) {
          
          // show project details
          if (project.getChildren('.title')[0]) {
            project.addEvent('mouseenter', function(event){
              var projectTitle = project.getChildren('.title')[0].getProperty('text');
              var projectLocation = project.getChildren('.location')[0].getProperty('text');
              var projectPosition = project.getPosition($('content'))['x'].toInt()
              detailsTitle.setProperty('text', projectTitle);
              detailsLocation.setProperty('text', ' • ' + projectLocation);
              widthTitle = detailsTitle.getSize().x;
              widthLocation = detailsLocation.getSize().x;
              gap = 910 - projectPosition - widthTitle - widthLocation;
              if (gap < 0) {
                rowDetailsDiv.addClass('flush');
                rowDetailsDiv.setStyle('right', 10);
              }
              else {
                rowDetailsDiv.removeClass('flush');
                rowDetailsDiv.setStyle('left', projectPosition - 175);
              }
            });
          }
        });
      }
    });
  },
  
  animatePortfolioBrowseTitles: function(element, end) {
    var myTween = new Fx.Tween(element, {'duration': 200, 'link': 'cancel', transition: Fx.Transitions.Quad.easeOut});
    myTween.start('height', end);
  },
  
  
  setPortfolioDetail: function() {
    if ($$('.image-list')[0]) {
      Site.setPortfolioImageNav();      
    }
    $$('.element li:first-child').toggleClass('first');
    $$('.element li:last-child').toggleClass('last');
    Site.animatePortfolioDetail();
  },
  
  setPortfolioImageNav: function() {
    element = $$('.image-list')[0];
    var width = $$('.image-list li')[0].getStyle('width').toInt();
    var length = $$('.image-list li').length;
    if (length > 1) {
      var i = 1;
      var imageNum = new Element('span', {id: "image-num", text: i});
      var imageTotal = new Element('span', {text: ' of '+length});
      var imageNav = new Element('ul', {id: "image-nav"});
      imageNav.injectInside($('portfolio-details'));
      var imageNavList1 = new Element('li', {text: 'Previous', 'class': 'previous off'});
      imageNavList1.injectInside(imageNav);
      var imageNavList2 = new Element('li', {text: 'Image ', 'class': 'text'});
      imageNavList2.injectInside(imageNav);
      imageNum.injectInside(imageNavList2);
      imageTotal.injectInside(imageNavList2);
      var imageNavList3 = new Element('li', {text: 'Next', 'class': 'next'});
      imageNavList3.injectInside(imageNav);
      var myTween = new Fx.Tween(element, {'duration': 500, 'link': 'ignore', transition: Fx.Transitions.Quad.easeOut});
    
      // show previous
      imageNavList1.addEvent('click', function(event){
        $$('#image-nav li').removeClass('off');
        var current = element.getStyle('left').toInt();
        end = current + width;
        i--
        if (end >= 0) {
          imageNavList1.addClass('off');
          end = 0;
        }
        if (i < 1) {
          i = 1;
        }
        imageNum.setProperty('text', i);
        myTween.start('left', end);
      });
    
      // show next
      imageNavList3.addEvent('click', function(event){
        $$('#image-nav li').removeClass('off');
        var current = element.getStyle('left').toInt();
        end = current - width;
        i++
        if (end <= -width * (length - 1)) {
          imageNavList3.addClass('off');
          end = -width * (length - 1);
        }
        if (i > length) {
          i = length;
        }
        imageNum.setProperty('text', i);
        myTween.start('left', end);
      });
    }
  },
  
  setAccordian: function() {
    var currentCategory = $('portfolio-nav').className;
    var list = $$('.element');
    var j = 0;
    for (var i=0; i < list.length; i++) {
      if (list[i].getPrevious('h4').hasClass(currentCategory)) {
        j = i;
        i = list.length;
      }
    };
    var myAccordion = new Accordion($$('.toggler'), $$('.element'), {
      alwaysHide: true,
      show: j,
      opacity: false
    });
    $('portfolio-nav').addEvent('mouseleave', function(event){
      if (list[j].getStyle('height').toInt() < 10) {
        myAccordion.display(j)
      }
    });
    
  },
  
  animatePortfolioDetail: function() {
    Site.setAccordian();
    Site.showPortfolioDetails.delay(700);
  },
  
  showPortfolioDetails: function() {
    var myTween = new Fx.Tween($('portfolio-details'), {'duration': 500, transition: Fx.Transitions.Quad.easeOut});
    myTween.start('top', 0);
  }

}

window.addEvent('domready', Site.start);