
var dav = {
  dynamicContentJsonFile:'resources/behavior/dynamic_content.json'
  , tickerEntries:null
  , tickerIndex:0
  
  , init: function() {
    dav.addHandlers();
    dav.openNavigation();
    dav.applyGalleries();
  }

  , initDynamicContent: function(type) {
    jQuery.getJSON(dav.dynamicContentJsonFile, function(data) {
      if(type === 'ticker') {
        dav.tickerEntries = jQuery(data.ticker.entries);
        dav.runTicker();
      }
      else if(type === 'documents') {
        jQuery(data.documents).each(function(){
          dav.buildDocumentList(this);
        });
      }
    });
  }
  
  , runTicker: function() {
    var $element, width;
    
    $element = jQuery(['<span class="tickerEntry">'
                      , dav.tickerEntries[dav.tickerIndex].title
                      , '</span>'].join(''));
    
    jQuery('div#ticker>div#tickerContainer').prepend($element);
    width = $element.width();
    
    $element.width(0)
      .fadeTo(0, 0.0)
      .animate(
        { width: width }
        , 1000
        , function() {
          jQuery(this).fadeTo(2000, 1.0);
          dav.tickerIndex = (
            dav.tickerIndex + 1 >= dav.tickerEntries.length ?
            0 : dav.tickerIndex + 1
          )
          setTimeout('dav.runTicker()', 7500);
        }
      );
      
    jQuery('.tickerEntry').each(function(index) { if(index > 3) { jQuery(this).remove(); } });
  }

  , buildDocumentList: function(docs) {
    jQuery('div.documents#' + docs.id).append('<ul></ul>');
    var $docList = jQuery('div.documents#' + docs.id + '>ul');

    jQuery(docs.entries).each(function(){
      $docList.append(
        jQuery('<li></li>').append(
          jQuery(['<a href="'
                  , docs.path
                  , this.file
                  , '" class="icon">' 
                  , this.name 
                  , '</a>'].join('')
          ).addClass(this.file.substring(this.file.lastIndexOf('.') + 1).toLowerCase())
        )
      );
    });
  }
  
  , debug: function() {
  }
  
  , applyGalleries: function() {
    jQuery('div.gallery').each(function() { 
      var relation = ['a[rel=', jQuery(this).find('div>a').attr('rel'), ']'].join('');
      
      jQuery(relation).fancybox({
				'transitionIn'	 :'none'
        , 'transitionOut':'none'
        , 'titlePosition':'inside'
			});
    });
  }
  
  , addHandlers: function() {
    jQuery('ul.menuLvl>li:has(ul)>a').bind('click', function(e) {
      e.preventDefault();
      var open = jQuery(this).next('ul').is(':visible');
      jQuery('ul.menuLvl>li>ul.menuLvl:visible').slideUp('slow');
      if(!open) {
        jQuery(this).blur().next('ul').toggle('slow');
      }
    });
    
    jQuery('#content>.slider>h3').bind('click', function(e){
      
      jQuery.each(jQuery('#content>.slider>.sliderContent:visible')
                , function(index, value) { 
                    jQuery(value).slideToggle();
      });

      jQuery(this).next('.sliderContent').slideToggle();
    });
  }
  
  , openNavigation: function() {
    jQuery('ul.menuLvl:hidden>li>a.active').parent().parent().show();
    
  }
};

jQuery(document).ready(function() {
  dav.init();
});
