var Afterglow = new Class({
	Implements: [Options, Events, Log],
	Extends: Page,

	// Constants

	// Variables
	eventsContainer: null,
	filterForm: null,
	
	// Class instances


	initialize: function( name, element, options )
	{
		this.enableLog();
		//this.disableLog();
		this.log("Afterglow::initialize(" + name + ", " + element + ", " + options + ")");

		// Invoke parent method
		this.parent( name, element, options );

		this.initEvents();
		this.initFilterForm();

		// Scroll animation
		this.scrollFx = new Fx.Scroll($(document.body), {
			duration: 250,
			transition: Fx.Transitions.Quad.easeOut,
			link: 'cancel',
			axes: 'y',
			wheelStops: false
		});

		// Scroll to top buttons
		this.element.getElements('.scroll-top').addEvent('click', function(event) {
			event.preventDefault();

			this.scrollFx.toTop();
		}.bind(this));
	},

	initFilterForm: function()
	{
		this.log("Afterglow::initFilterForm()");

		var options = {
			showLoader: true,
			allowStatus: false,
			formErrorMessage: {
				allow: false
			}
		};
		
		var form = new Form($('filter-form'), options);

		// Add buttons
		var submitButton = new FormSubmitButton(form, '.submit', {showLoader: true});
		form.addButton(submitButton);

		// Save form
		this.filterForm = form;



//		this.filterForm = this.element.getElement('#filter-form');

		this.years = this.filterForm.element.getElement('.year').getElements('li');
		this.months = this.filterForm.element.getElement('.month').getElements('li');

		this.yearField = this.element.getElement('input[name=year]');
		this.monthField = this.element.getElement('input[name=month]');

		this.years.each(function(element, index) {
			this.log("[" + index + "] element: " + element);

			var link = element.getElement('a');
			link.addEvent('click', function(event) {
				event.preventDefault();

				this.selectYear(index);
			}.bind(this));
		}.bind(this));

		this.months.each(function(element, index) {
			this.log("[" + index + "] element: " + element);

			var link = element.getElement('a');
			link.addEvent('click', function(event) {
				event.preventDefault();

				this.selectMonth(index);
			}.bind(this));
		}.bind(this));

	},

	selectYear: function(index)
	{
		this.log("Afterglow::selectYear(" + index + ")");

		this.years.each(function(element, i) {

			if(i == index)
			{
				element.addClass('selected');

				var id = element.get('id').split('-')[1];
				this.yearField.set('value', id);
			}
			else
			{
				element.removeClass('selected');
			}

		}.bind(this));
	},

	selectMonth: function(index)
	{
		this.log("Afterglow::selectMonth(" + index + ")");

		this.months.each(function(element, i) {

			if(i == index)
			{
				element.addClass('selected');

				var id = element.get('id').split('-')[1];
				this.monthField.set('value', id);
			}
			else
			{
				element.removeClass('selected');
			}

		}.bind(this));
	},

	initEvents: function()
	{
		this.log("Afterglow::initGenres()");

		this.eventsContainer = this.element.getElement('.events');

		this.eventsContainer.getElements('li').each(function(element, index) {

			var eventItem = new EventItem(element, {truncate: true, eventTitleLength: 50});

			var readMore = element.getElement('.read-more');
			if(readMore)
			{
				var url = readMore.get('href');
				if(url)
				{
					element.addEvent('click', function(event) {
						event.preventDefault();

						var uri = new URI(url);
						uri.go();
					}.bind(this));
				}
			}
		}.bind(this));
	}

});
