/*******************************************************************************

Celery Website application.js (10/12/2008)
(c) 2008 BuzaMoto. All rights reserved.

*******************************************************************************/

// ----------------------------------------------------------------------------
// GLOBALS
// ----------------------------------------------------------------------------
var scrollbar;
var SCROLLBAR_BUTTON_DELTA = 10; // number in px each button clicks move scroller by
var nav_background_effect;
var navigationArea;
var blind_effects = {show: false, hide: false};
var BLIND_SPEED = {up: 0.2, down: 0.1};

// ----------------------------------------------------------------------------
// UTILITIES
// ----------------------------------------------------------------------------
function mainNavigationArea() {
  $('main_nav-background').show();
  var offset = $('main_nav-background').cumulativeOffset();
  var dimensions = $('main_nav-background').getDimensions();
  $('main_nav-background').hide();
  
  return {
    left: offset.left,
    top: offset.top,
    right: offset.left+dimensions.width,
    bottom: offset.top+dimensions.height};
}

function cursorOverMainNavArea(e) {
  var x = e.pointerX();
  var y = e.pointerY();
  return x < navigationArea.right && x > navigationArea.left && y < navigationArea.bottom && y > navigationArea.top;
}

Event.observe(document, 'mousemove', function(e) {
  if($('main_nav-background').visible()) {
    if (!cursorOverMainNavArea(e)) {
      if(!blind_effects.hide) {
        blind_effects.hide = new Effect.BlindUp('main_nav-background', {
          queue: 'end',
          duration: BLIND_SPEED.up,
          afterFinish: function() {
            $('main_content').removeClassName('menu_dark');
            blind_effects.hide = false;
          }
        });
      }
    }
  }
});

Event.observe(window, 'resize', function(e) { navigationArea = mainNavigationArea(); });


// ----------------------------------------------------------------------------
// ONLOAD
// ----------------------------------------------------------------------------
Event.observe(window, 'load', function(evt) {
  navigationArea = mainNavigationArea();
  // --------------------------------------------------------------------------
  // set up scroller
  if ($('content') && $('content').up(".content") && $('content').getHeight() - $('content').up(".content").getHeight() > 0) {
    scrollbar = new Control.Slider('handle', 'track', {
      axis:'vertical',
      minimum: 0,
      maximum: $('content').up(".content").getHeight(),
      range: $R(0, $('content').getHeight() - $('content').up(".content").getHeight()),
      wheelObserve: $('content'),
      onChange: function(value) {
        $('content').setStyle({top: -Math.round(value) + 'px'});
      },
      onSlide: function(value) {
        $('content').setStyle({top: -Math.round(value) + 'px'});
      }
    });
    
    // register up and down buttons
    $('button-up').observe('click', function(e) {
      scrollbar.setValueBy(-SCROLLBAR_BUTTON_DELTA);
      Event.stop(e);
      return false;
    });
    $('button-down').observe('click', function(e) {
      scrollbar.setValueBy(SCROLLBAR_BUTTON_DELTA);
      Event.stop(e);
      return false;
    });
  }
  
  $('main_nav').observe('mouseover', function(e) {
    if (!$('main_nav-background').visible()) {
      if (nav_background_effect && nav_background_effect.state != 'finished') {
        Event.stop(e);
        return false;
      }
      $('main_content').addClassName('menu_dark');
      nav_background_effect = new Effect.BlindDown('main_nav-background', {
        queue: 'end',
        duration: BLIND_SPEED.down
      });
    } else if(nav_background_effect) {
      if(nav_background_effect.state == 'idle')
        nav_background_effect.cancel();
    }
  });
  
  // $('main_nav-background').observe('mouseout', function(e) {
  //   if (nav_background_effect && nav_background_effect.state != 'finished') {
  //     nav_background_effect = new Effect.BlindUp('main_nav-background', {
  //       queue: 'end',
  //       duration: 0.25,
  //       afterFinish: function() {
  //         $('main_content').removeClassName('menu_dark');
  //       }
  //     });
  //   }
  //   if ($('main_nav-background').visible()) {
  //     if (nav_background_effect && nav_background_effect.state != 'finished') {
  //       Event.stop(e);
  //       return false;
  //     }
  //     nav_background_effect = new Effect.BlindUp('main_nav-background', {
  //       duration: 0.25,
  //       afterFinish: function() {
  //         $('main_content').removeClassName('menu_dark');
  //       }
  //     });
  //   }
  // });
  
});