/*
	Collections v0.12 for Nyne collection galleries
	Requires MooTools 1.2
	
	Author: Andrew Ferri <andrew@blacksheepcreative.co.nz>
	Created: 15 December 2008
*/

var Collection = new Class({
	Implements: [Options, Events],
	
	options: {
		morphDuration: 300,
		morphTransition: Fx.Transitions.Sine.easeOut
	},
	
	initialize: function(thumbs, large, options)
	{
		this.setOptions(options);
		this.thumbs = thumbs;
		this.large = large;
		this.setDefaults();
		this.setEvents();
	},
	
	setDefaults: function()
	{
		var counter = 0;
		this.thumbs.each(function(el){
			el.setProperty('num',counter);
			counter++;
			if (el.hasClass('active') == true)
			{
				this.activeThumb = el;
			}
		}.bind(this));
		
		var counter = 0;
		this.large.each(function(el){
			el.setProperty('num',counter);
			counter++;
			el.morph = new Fx.Morph(el, {duration: this.options.morphDuration, transition: this.options.morphTransition});
			if (el.hasClass('active') == true)
			{
				el.set('opacity',1);
				this.activeLarge = el;
				el.addClass('front');
			} else
			{
				el.set('opacity',0);	
			}
			el.addClass('active');
		}.bind(this));
	},
	
	setEvents: function()
	{
		this.thumbs.each(function(el){
			var anc = el.getElement('a');
			anc.addEvent('click', function(e){
				e = new Event(e).stop();
				
				var num = el.getProperty('num');
				var large = null;
				this.large.each(function(el1){
					if (el1.getProperty('num') == num)
					{
						large = el1;
					}
				}.bind(this));
				if (this.activeLarge != large)
				{
					this.activeThumb.removeClass('active');
					this.activeThumb = el;
					this.activeThumb.addClass('active');
					
					this.activeLarge.morph.start({'opacity': 0});
					this.activeLarge = large;
					this.activeLarge.morph.start({'opacity':1});
				}
			}.bind(this));
		}.bind(this));
	}
});