var feature_panel,
    partner_panel,
    panorama;

document.observe('dom:loaded', function(event)
{
  feature_panel = new Panorama('panorama-feature-panel', $$('.inner-wrap').map(function (panel) { return { 'payload':panel, 'payload_type':'dom' }; }),
  { transition:{type:'Fade', delay:10}, container:{full_screen:false} });
	
	partner_panel = new Panorama('panorama-partner-panel', $$('.partners').map(function (panel) { return { 'payload':panel, 'payload_type':'dom' }; }),
  { transition:{type:'Crossfade', delay:6}, container:{full_screen:false} });
  
  $('home-paging').childElements().each(function(trigger, i)
  {
    trigger.observe('click', function(event, index)
    {
      event.stop();
      feature_panel.play(feature_panel.getBundleAtIndex(index));
    }.bindAsEventListener(trigger, i));
  });
  
  feature_panel.observe(feature_panel.BUNDLE_HAS_TRANSITIONED_IN, function(event)
  {
    $('home-paging').childElements().each(function(trigger, i)
    { 
      if (i === feature_panel.getActiveIndex()) trigger.addClassName('on');
      else trigger.removeClassName('on');
    });
  });
  
  // This is set globally on the page itself.
  if (!panorama instanceof Panorama) return;
  
  panorama.observe(panorama.DISPLAY_INITIATED, function (event) {
    var bundle = panorama.getActiveBundle();
    bundle.setParameter('container', $$('.home-content').first());
  });
  
  panorama.observe(panorama.BUNDLE_WILL_TRANSITION_IN, function (event) {
    var bundle    = event.memo.bundle,
        container = bundle.getParameter('container');
    
    if (!container)
    {
      var container = new Element('div', { 'class': 'home-content' }).setStyle(bundle.getParameter('css'));
      container.insert(new Element('h1').update(bundle.getParameter('title')));
      container.insert(new Element('p').setStyle({width: bundle.getParameter('width')}).update(bundle.getParameter('description')));
      
      bundle.setParameter('container', container);
    }
    
    container.hide();
    $('home-content-container').insert({bottom: container});
    container.appear({duration: panorama.transition_duration});
  });
  
  panorama.observe(panorama.BUNDLE_WILL_TRANSITION_OUT, function (event) {
    var container = event.memo.bundle.getParameter('container');
    container.fade({duration: panorama.transition_duration, afterFinish: function () {
      container.remove();
    }});
  });
  
  $('home-content-paging').childElements().each(function(trigger, i)
  {
    trigger.observe('click', function(event, index)
    {
      event.stop();
      panorama.play(panorama.getBundleAtIndex(index));
    }.bindAsEventListener(trigger, i));
  });
  
  panorama.observe(panorama.BUNDLE_HAS_TRANSITIONED_IN, function (event) {
    $('home-content-paging').childElements().each(function(trigger, i)
    { 
      if (i === panorama.getActiveIndex()) trigger.addClassName('on');
      else trigger.removeClassName('on');
    });
  });
  
});
