﻿/*
MooCarousel - a simple carousel. In MooTools.

License:
  MIT-style license.

Credits:
  posttoast ( <http://posttoast.nl> ) 2009-11-12
*/

var mooCarousel = new Class({

  Implements: [Options, Events],
  options: {
    imageContainer: '',
    controlContainer: '',
    openOnControlClick: false
  },

  initialize: function(options){

    this.setOptions(options);

    // Activate first image
    var images = this.options.imageContainer.getElements('img');
    if (images.length > 1){
      this.activateCarousel(images);
    }
  },

  activateCarousel: function(images){
    images[0].addClass('active');
    images.setStyle('display', 'none');
    images[0].setStyle('display', 'block');

    // Create controls
    var controlBox = new Element('div');
    controlBox.setProperty('class', 'controlbox');
    var openOnControlClick = this.options.openOnControlClick;
    images.each(function(el){
      var image = el;
      var controlButton = new Element('a');
      controlButton.setProperties({
        'class': 'controlbutton',
        'href': '#'
      });
      controlButton.addEvents({
        'mouseover': function(){
          images.removeClass('active');
          images.setStyle('display', 'none');
          el.addClass('active');
          el.setStyle('display', 'block');
          controlBox.getElements('.controlbutton').removeClass('active');
          this.addClass('active');
        },
        'click': function(el){
          el.stop();
          if (openOnControlClick && image.getParent('a')){
            image.getParent('a').fireEvent('click');
          }
        }
      });
      controlButton.inject(controlBox);
    });
    controlBox.inject(this.options.controlContainer);
    controlBox.getFirst('a.controlbutton').addClass('active');
  }

});