window.onload = function () {
  if (typeof initGraphs == 'function'){
    initGraphs();
  }

  if (document.getElementById('datePreset')) {
    document.getElementById('datePreset').onchange = function () {
      var preset = document.getElementById('datePreset').value;
      var dateFrom = new Date();
      var dateTo = new Date();
      var aDay = 24*60*60*1000;
      var now = dateTo.getTime();
      var yesterday = now - aDay;
      dateTo.setTime(yesterday);
      switch(preset)
      {
        case '7d':
          dateFrom.setTime(yesterday-7*aDay);
          document.getElementById('dateFrom').value = dateFrom.getFullYear()+'-'+zeroPad(dateFrom.getMonth()+1, 2)+'-'+zeroPad(dateFrom.getDate(),2);
          document.getElementById('dateTo').value = dateTo.getFullYear()+'-'+zeroPad(dateTo.getMonth()+1, 2)+'-'+zeroPad(dateTo.getDate(),2);
          break;
        case '30d':
          dateFrom.setTime(yesterday-30*aDay);
          document.getElementById('dateFrom').value = dateFrom.getFullYear()+'-'+zeroPad(dateFrom.getMonth()+1, 2)+'-'+zeroPad(dateFrom.getDate(),2);
          document.getElementById('dateTo').value = dateTo.getFullYear()+'-'+zeroPad(dateTo.getMonth()+1, 2)+'-'+zeroPad(dateTo.getDate(),2);
          break;
        case 'm':
          document.getElementById('dateFrom').value = dateFrom.getFullYear()+'-'+zeroPad(dateFrom.getMonth()+1, 2)+'-01';
          document.getElementById('dateTo').value = dateTo.getFullYear()+'-'+zeroPad(dateTo.getMonth()+1, 2)+'-'+zeroPad(dateTo.getDate(),2);
          break;
        case 'y':
          document.getElementById('dateFrom').value = dateFrom.getFullYear()+'-01-01';
          document.getElementById('dateTo').value = dateTo.getFullYear()+'-'+zeroPad(dateTo.getMonth()+1, 2)+'-'+zeroPad(dateTo.getDate(),2);
          break;
      }
    }
  }

  if (typeof customInit == 'function'){
    customInit();
  }
};

$(document).ready(function(){
  /* Tooltip */
  $('.tooltip').parent().hover(function(){
    $(this).children('.tooltip').fadeIn("slow");
  }, function(){
    $(this).children('.tooltip').hide();
  });

  xOffset = 10;
  yOffset = 20;

  $('.tooltip').parent().mousemove(function(e){
    $(this).children('.tooltip').css("top",(e.pageY - xOffset) + "px").css("left",(e.pageX + yOffset) + "px");
  });

  /* InfoCard */
  $(window).click(function(){$('.infocard').hide();});
  $('.infocard').parent().click(function(){
    $('.infocard').hide();
    $(this).children('.infocard').show("slow");
  }, function(){
    $(this).children('.infocard').hide();
  });

  /* Tabbed area */
  $('.tabbedArea').each(function(){
    $(this).children('.tabFragment').hide();
    $(this).find('.tabs :first').addClass('active');
    $($(this).find('.tabs :first a').attr('href')).show();
  });

  $('.tabs a').click(function(){
    $(this).parents('.tabbedArea').children('.tabFragment').hide();
    $(this).parent().addClass('active');
    $(this).parent().siblings().removeClass('active');
    $($(this).attr('href')).show();
    return false;
  });

  /* Expand area */
  $('.expandArea .expandLegend').click(function(){
    $(this).siblings('.expandSection').toggle('slow');
  });

  /* Make disabled links unclickable */
  $('.disabled a').click(function() {
    return false;
  });

  /* Adds sorting to tables */
  $('table.sortable').tablesorter({textExtraction: 'complex', widgets: ['zebra']});

  /* Open external links in a new window */
  $('a[rel="external"]').click(function(){window.open(this.href); return false;});
});

function zeroPad(n, digits) {
  n = n.toString();
  while (n.length < digits) {
    n = '0' + n;
  }
  return n;
}

