jQuery.fn.log = function (msg) {
  if (console) {
    console.log("%s: %o", msg, this);
    return this;
  } else {
    $('#debug').append(msg + '<br/>');  
  }
};

$(document).ready(function() {
  // Setup dropdown menu
  $('#mainNavigation').dropDownMenu({maxItemsPerColumn:8});
  
  // Setup accordion
  accordion_refocus_threshold = 50;

  var deep_linked = $('.acc_trigger.selected');
  var folds = $('.acc_trigger');

  
  $('.acc_container').hide();
  
  $('.acc_trigger').click(function() {
    var trigger = this;
    
    $('.acc_container').removeClass('active');
    if($(this).next().is(':hidden') ) {
      $('.acc_trigger').removeClass('active').next().slideUp();
      
      var container = $(this).next();
      $(this).toggleClass('active').next().slideDown('normal', function(){
        container.addClass('active');
        // scroll to deep linked accordion fold if applicable
        var move_to = deep_linked.length > 0 ? deep_linked.position().top : $(trigger).position().top;
        var at_now = $('html,body').scrollTop();
        var diff = at_now - move_to;
        
        if (diff < -accordion_refocus_threshold || diff > accordion_refocus_threshold || deep_linked.length > 0) {
          if (folds.length > 1) {
            $('html,body').animate({'scrollTop':move_to}, 250, 'easeInOutQuad');
          }
        }
        
        deep_linked = [];
        
      });
      $('.acc_trigger').addClass('notActive');
      $(this).removeClass('notActive');
      
    } else {
      $(this).addClass('notActive').removeClass('active').next().slideUp('normal', function() {
        if($('.acc_trigger.active').length === 0) {
          $('.acc_trigger').removeClass('notActive').removeClass('active');
        }
      }); 
    }
  
    
    return false; //Prevent the browser jump to the link anchor  
  }).hover(function() {
    $(this).stop().animate({'padding-left':'5px'}, 200, 'easeOutBack');
  }, function() {
    $(this).stop().animate({'padding-left':'0px'}, 400, 'easeOutBack');
  });
  
  
  // Open accordion where applicable (deep linking)
  if (deep_linked.length > 0) {
    if (folds.length > 1) {
      deep_linked.click();
    }
  }
  
  // auto open if there's only one fold
  
  if (folds.length === 1) {
    folds.click();
  }

  // Setup slideshow
  var initSlideshow = function() {
    ssi = true;
    $('#slideShow').slideShow({
      delay: 10000,
      animateTime: 1800,
      slideContainer: '.image_reel',
      navContainer: '.paging',
      slideFrame: '.window',
      easing: 'easeInOutQuad',
      navStopsAutoAdvance: true,
      opacity: {
        enter: 0,
        on: 1,
        exit: 0.2
      },
      children: [
        {
          selector: ['.slideTitle'],
          animate: {p:'left',a:-1000,b:26,c:2000},
          easing: 'easeInOutQuad'
        },
        {
          selector: ['.slideCopy'],
          animate: {p:'left',a:-1000,b:59,c:2000},
          easing: 'easeInOutQuad'
        }
      ]
    });
    
  }; // initSlideshow()
  
  var doFadeIns = function() {
    $('.main_view > .overlay').fadeOut(2000, function() {
      $('#navShadow').fadeTo(2000, 0.6, function() {
        if (!ssi) { initSlideshow(); }
      });
      $('#pagingCopy, .paging').fadeIn(2000);
    });
  }; // doFadeIns()

  // Preload slideshow images and then initialize the slideshow  
  var preload_cnt = $('.image_reel > a > div').length;
  var preloader = [];
  var ssi = false;
  
  $('#pagingCopy, #navShadow, .paging').fadeOut(0);
  
  
  $('.image_reel > a > div').each(function() {
    var url = $(this).css('background-image');
    url = url.replace(/^.*?\(["']?([^"]+)["']?\).*?$/, '$1');
    
    
    loader = new Image();
    preloader.push(loader);
    
    loader.onload = function() {
      preload_cnt--;
      if (preload_cnt === 0 && !ssi) {
        doFadeIns();
      }
    }; // onload)()
    loader.src = url;
  });
  
  if (typeof DD_belatedPNG !== 'undefined') { DD_belatedPNG.fix('.pngFix'); }
  
  var default_search_text = 'Search Site';
  $('#searchField').focus(function() {
    if ($(this).val() === default_search_text) {
      $(this).val('');
    }
  }).blur(function() {
    if ($(this).val() === '') {
      $(this).val(default_search_text);
    }
  }).val(default_search_text);
  
  $('#resourceTree').tree();
  
}); // $(document).ready(...)


function handleTip(ref){
  $('.tooltipCopy', ref).css('top', -1 * $('.tooltipCopy', ref).height() - 27);
}
function handleRegionOver(){
  $('#regions').css('visibility', 'visible');
}
function handleRegionOut(){
  $('#regions').css('visibility', 'hidden');
} 
