// javascript by posttoast, 2009 (http://www.posttoast.nl)

// Fire the Konami-code
Element.Events.konami = {
  base: 'keyup',
  condition: function(e) {
    $clear(this.retrieve('konami_timeout'));
    var input = this.retrieve('konami_input',[]);
    input.push(e.key);
    if (input.join(',') == 'up,up,down,down,left,right,left,right,b,a') {
      this.removeEvents('konami');
      return true;
    }
    this.store('konami_input',input).store('konami_timeout',(function(){this.eliminate('konami_input');}).delay(2000,this));
  }
};

window.addEvent('konami',function(){
  Shadowbox.open({
    content:    '_behaviour/kraken.jpg',
    player:     'img',
    height:     1200,
    width:      800
  });
});

// Load ShadowBox
Shadowbox.init({
  language: "nl",
  players: ["img"]
});

// MooSizer-control class
var mooSizerControls = new Class({
  initialize: function(){
    buttonPreviousOverlay = new Element('div', {id: 'button-previous-overlay'});
    buttonPreviousOverlay.setStyles({
      height: '100%'
    });
    buttonPreviousOverlay.inject($('framework'));

    buttonNextOverlay = new Element('div', {id: 'button-next-overlay'});
    buttonNextOverlay.setStyle('height','100%');
    buttonNextOverlay.inject($('framework'));

    buttonPrevious = new Element('div', {id: 'button-previous'});
    buttonPrevious.setStyle('opacity', '0');
    buttonPrevious.inject(buttonPreviousOverlay);

    buttonNext = new Element('div', {id: 'button-next'});
    buttonNext.setStyle('opacity', '0');
    buttonNext.inject(buttonNextOverlay);

    buttonPreviousOverlay.addEvents({
			mouseenter: function() {
				buttonPrevious.tween('opacity','1');
			},
			mouseleave: function() {
				buttonPrevious.tween('opacity','0');
			}
		});

    buttonNextOverlay.addEvents({
			mouseenter: function() {
				buttonNext.tween('opacity','1');
			},
			mouseleave: function() {
				buttonNext.tween('opacity','0');
			}
		});

    this.setPositions(buttonPreviousOverlay, buttonNextOverlay);

    window.addEvent('resize', function(){
      this.setPositions(buttonPreviousOverlay, buttonNextOverlay);
    }.bind(this));
  },

  setPositions: function(buttonPreviousOverlay, buttonNextOverlay){
    windowSize = window.getSize();
    buttonOverlayWidth = (windowSize.x - 990) / 2 + 180;

    buttonPreviousOverlay.setStyles({
      width: buttonOverlayWidth
    });

    buttonNextOverlay.setStyles({
      width: buttonOverlayWidth
    });
  }
});

// Site-engine class
var siteEngine = new Class({
  initialize: function(){
    this.initPortfolio();
    this.warnIE6Users();
    this.initBackgroundImage();
    this.initCarousels();
    this.initNavigationController();
  },

  warnIE6Users: function(){
    if (Browser.Engine.trident && Browser.Engine.version <= 4){
      warningMessage = new Element('div', {id: 'browserupdate'});
      warningMessage.set('html', '<div id="browserupdate">U gebruikt een sterk verouderde versie van Microsoft Internet Explorer. Hierdoor loopt u mogelijk veiligheidsrisico\'s en worden webpagina\'s niet correct getoond.<br /><a href="http://www.microsoft.com/netherlands/windows/internet-explorer" target="_blank">Klik hier om de nieuwste versie te downloaden</a>.</div>');
      warningMessage.inject($(document.body), 'top');
    }
  },

  initBackgroundImage: function(){
    if ($(document.body).hasClass('page-home') || $(document.body).hasClass('portfolio-showimage')) {
      mooSizerControls = new mooSizerControls();
      mooSizer = new mooSizer({
        imageContainer: $('backgroundimage-container'),
        allowCropping: false,
        padding: 15,
        controlNext: $('button-next-overlay'),
        controlPrevious: $('button-previous-overlay')
      });
    }
  },

  initPortfolio: function(){
    if ($(document.body).hasClass('page-portfolio')){
      // Hide thumbnails and show loading icon
      $('photoselector').setStyle('display', 'none');
      $$('#pagination').setStyle('display', 'none');
      loadingAnimation = new Element('div', {id: 'loading-animation'});
      loadingAnimation.inject($('framework'));
      
      window.addEvent('load', function(){
        loadingAnimation.destroy();
        $('photoselector').setStyle('display', 'block');
        $$('#pagination').setStyle('display', 'block');
      });


      $('thumbnails').getElements('a').addEvent('click', function(el){
        $(document.body).addClass('portfolio-showimage');
        $('photoselector').setStyle('display', 'none');
        $$('#pagination').setStyle('display', 'none');
        var categoryTitle = $('categorytitle');
        categoryTitle.setStyle('display', 'block');

        categoryTitle.addEvent('mouseenter', function(el){
          this.addClass('rollover');
        });

        categoryTitle.addEvent('mouseleave', function(el){
          this.removeClass('rollover');
        });

        siteEngine.initBackgroundImage();
        $('backgroundimage-container').getElements('img').removeClass('active');
        var arrayId = this.getProperty('id').split('-');
        var activeImageId = arrayId[1];
        $('fullphoto-'+activeImageId).addClass('active');
        mooSizer.prepareActiveImage();
        $('photoinfo-'+activeImageId).addClass('active');

        $('photoinfo').addEvent('mouseenter', function(el){
          this.getFirst('div.active').setStyle('display', 'block');
          this.addClass('open');
        });
        $('photoinfo').addEvent('mouseleave', function(el){
          this.getFirst('div.active').setStyle('display', 'none');
          this.removeClass('open');
        });
        el.stop();
      });
    }
  },

  initCarousels: function(){
    if ($('page-news')){
      $('page-news').getElements('div.carousel').each(function(el){
        new mooCarousel({
          imageContainer: el,
          controlContainer: el.getNext('div.text'),
          openOnControlClick: true
        });
      });
    }

    if ($('page-about')){
      new mooCarousel({
        imageContainer: $('carousel'),
        controlContainer: $('carousel'),
        openOnControlClick: true
      });
    }
  },

  initNavigationController: function(){
    navigationMinimizer = new Element('div', {id: 'navigation-minimizer'});
    navigationMaximizer = new Element('div', {id: 'navigation-maximizer'});
    navigationMaximizer.setStyle('display', 'none');
    navigationMinimizer.addEvent('click', function(){
      $$('#categorytitle').addClass('navigation-minimized');
      $$('#photoinfo').addClass('navigation-minimized');
      $('navigation').setStyle('display', 'none');
      $('logo').setStyle('display', 'none');
      navigationMaximizer.setStyle('display', 'block');
    }.bind(this));
    navigationMaximizer.addEvent('click', function(){
      $$('#categorytitle').removeClass('navigation-minimized');
      $$('#photoinfo').removeClass('navigation-minimized');
      $('navigation').setStyle('display', 'block');
      $('logo').setStyle('display', 'block');
      navigationMaximizer.setStyle('display', 'none');
    }.bind(this));
    navigationMinimizer.inject($('navigation'));
    navigationMaximizer.inject($('framework'));
  }
});

window.addEvent('domready', function(){
  siteEngine = new siteEngine();
});