var SCROLL_DURATION = 800;
var IMAGES_PER_PAGE = 6;
var numberOfImages = 0;
var numberOfImagePages = 0;
var currentImagePage = 0;
var keepMuted = false;

$(document).ready(function () {
  try {
    swfobject.embedSWF("/assets/music.swf", "music-swf", 30, 30, "9.0.0",null,null,{allowScriptAccess:'always'});
  } catch(e) {/*ignore*/}
  
  $('.popover-link').bind('click',openPopover);
  $('#close-popover-link').bind('click',closePopover);
  $('#popover-background').bind('click',closePopover);
  $('#video-gallery a').live('click', function(event) { event.preventDefault(); switchVideo(this, true); });
  $('#image-gallery a').live('click', function(event) { event.preventDefault(); switchImage(this); });
  $('#image-gallery-scroll-left').bind('click',function(event) { event.preventDefault(); shiftImages(false); });
  $('#image-gallery-scroll-right').bind('click',function(event) { event.preventDefault(); shiftImages(true); });
  
  if(window.location.hash != '') {
    var args = window.location.hash.replace('#','').split('/');
    switch(args[0]) {
      case "info": $('.popover-link[page=info]').trigger('click'); break;
      case "videos":
        $('.popover-link[page=videos]').trigger('click');
        if(typeof(args[1]) == 'string') {
          switchVideo($('#video-gallery a[videoId='+args[1]+']:first'), false);
        }
        break;
      case "images":
        $('.popover-link[page=images]').trigger('click');
        if(typeof(args[1]) == 'string') {
          $('#image-link-'+args[1]).trigger('click');
        }
        break;
    }
  }
});

function openPopover(event) {
  event.preventDefault();
  var divToShow = event.target.getAttribute('page');
  $('.popover-content').filter('.'+divToShow).show().siblings('.popover-content').hide();
  switch(divToShow) {
    case "info":
      break;
    case "videos":
      try {
        keepMuted = document.getElementById('music-swf').getMuteStatus();
        document.getElementById('music-swf').muteMusic(true);
      } catch(e) {/*ignore*/}
      var i = 0;
      $('#video-gallery a').each(function () {
        var margin = -1 * i++ * 84;
        $(this).css('background-position','0 '+margin+'px');
      });
      
      if($('#video-player').html() == '') {
        switchVideo($('#video-gallery a:first'), false);
      }
      break;
    case "images":
      if($('#image-gallery').html() == '') {
        for(var i = 1; i <= 24; i++) {
          var imageUrl = "/assets/images/" + padNumber(i,2) + ".jpg";
          var margin = -1 * (i-1) * 50;
          $('<a href="#" id="image-link-'+i+'" imageUrl="'+imageUrl+'"></a>').css('background-position','0 '+margin+'px').appendTo('#image-gallery');
        }
        $('#image-gallery a:first').trigger('click');
        numberOfImages = $('#image-gallery a').length;
        numberOfImagePages = Math.ceil(numberOfImages / IMAGES_PER_PAGE)-1;
      }
      break;
  }
  
  $('#popover-background,#popover').fadeIn('slow',function() { $('#popover-background').css('filter','alpha(opacity=60)'); });
  document.location.hash = divToShow;
}

function closePopover(event) {
  event.preventDefault();
  $('#popover-background,#popover').fadeOut();
  window.location.hash = " ";
  try { //Pause any playing video
    document.getElementById('video-player').api_pause();
    if(!keepMuted) {
      document.getElementById('music-swf').muteMusic(false);
    }
  } catch(e) {/*ignore*/}
}

function switchVideo(link, autoplay) {
  link = $(link);
  var src;
  switch(link.attr('videoType')) {
    case "vimeo":
      src = "http://api.vimeo.com/moogaloop_api.swf?clip_id=" + link.attr('videoId') + "&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1&amp;js_api=1";
      if(autoplay) { src += "&amp;autoplay=1"; }
      break;
    default:
      return;
  }
          
  swfobject.embedSWF(src, "video-player", link.attr('width'), link.attr('height'), "9.0.0",null,null,{allowScriptAccess:'always'});
  
  link.addClass('selected').siblings().removeClass('selected');
  window.location.hash = "videos/"+link.attr('videoId');
}

function switchImage(link) {
  var imageUrl = link.getAttribute('imageUrl');
  $('#image-viewer').empty().append('<img src="'+imageUrl+'" />');
  $(link).addClass('selected').siblings().removeClass('selected');
  window.location.hash = "images/"+link.id.replace('image-link-','');
}

function shiftImages(bool) {
  var previousImagePage = currentImagePage;
  if(bool) {
    if(currentImagePage >= numberOfImagePages) {
      currentImagePage = 0;
    } else {
      currentImagePage++;
    }
  } else {
    if(currentImagePage <= 0) {
      currentImagePage = numberOfImagePages;
    } else {
      currentImagePage--;
    }
  }
    
  var newLeftMargin = -1 * currentImagePage * $('#image-gallery-viewport').width();
  var duration = Math.abs(previousImagePage - currentImagePage) * SCROLL_DURATION; 
  $('#image-gallery').stop().animate({marginLeft:newLeftMargin+'px'},duration);
}

function padNumber(number, paddedlength) {
  number = number+'';
  while(number.length < paddedlength) { number = '0'+number; }
  return number;
}
