var age = {};

window.addEvent('domready', function() {
	$$('button.age-submit').addEvent('click',function(e){
		e.preventDefault();
		age.check();
	});
	
	$$('body.age input[type=text]').each(function(el) {
		var defaultValue = el.get('value');
		el.addEvents({
			focus: function(e) {
				el.set('value', '');
			},
			blur: function(e) {
				if( el.get('value') == ''){
					el.set('value', defaultValue);	
				}
			}
		});
	});
	
	if(!$$('body')[0].hasClass('age')) {
		var slide = new Carrousel({items: $$('aside img')});
	}
	
	if($('werken')) {
		new SubmitForm({
			form: $('werken'),
			errorMessage: $$('div.error')[0],
			successMessage: $$('div.form-success')[0]
		});
	}
	
	
});

age.check = function(){
	var dag = parseInt(parseFloat($$('input[name=dag]')[0].value));
	var maand = parseInt(parseFloat($$('input[name=maand]')[0].value));
	var jaar = parseInt(parseFloat($$('input[name=jaar]')[0].value));
	
	if( !(dag>0 && dag<32) ){
		$$('p.box-error').setStyle('display','block');
		return;	
	}
	
	if( !(maand>0 && maand<13) ){
		$$('p.box-error').setStyle('display','block');
		return;	
	}
	
	var strJaar = jaar+'';
	if( !(strJaar.length == 4) ){
		$$('p.box-error').setStyle('display','block');
		return;	
	}
	
	var now = new Date();
	
	var birthday = new Date(jaar, maand-1, dag).getTime()/1000;
	var time = new Date(new Date().getFullYear()-18,new Date().getMonth(),new Date().getDate()).getTime()/1000;
	
	if(  time >= birthday ){
		location.href = 'home.html';
	} else {
		$('check').destroy();
		$('age-error').setStyle('display','block');
	}
	
	//tracking
	$$('.tracking').addEvent('click', function() {
		_gaq.push(['_trackEvent', 'Navigatie', this.get('href')]);
	});
	
	$$('.trackbutton').addEvent('click', function() {
		var keys = this.get('rel').split(',');
		if(keys[1]) {
			_gaq.push(['_trackEvent', keys[0], keys[1]]);
		} else {
			_gaq.push(['_trackEvent', keys[0]]);
		}
	});
}


var Carrousel = new Class(
{
	options: {
		items: null,
		active: 0,
		numberOfItems: null,
		timer: null
	},
	Implements: Options,
	
	initialize: function(options)
	{
		this.setOptions(options);	
		this.options.numberOfItems = this.options.items.length;
		
		this.options.items.each(function(el, i)
		{
			if(i > 0)
			{
				el.fade('hide');	
			}
		});
				
		this.options.items[0].addClass('active');
		
		this.setPeriodical();
		this.addEvents();
	},
	
	addEvents: function()
	{
		//
	},
	
	setPeriodical: function()
	{
		this.options.timer = this.autoSlide.periodical(6000, this); 
	},
	
	autoSlide: function()
	{
		++this.options.active;
		if (this.options.active >= this.options.numberOfItems)
		{
			this.options.active = 0;
		}
		
		this.options.items.fade('out');
		this.options.items[this.options.active].fade('in');
		
	}
});

var SubmitForm = new Class({
	options: {
		form: null,
		button: null,
		errorMessage: null,
		successMessage: null
	},

	Implements: Options,
	
	initialize: function(options)
	{
		this.setOptions(options);
		this.options.button = this.options.form.getElement('button');

		this.options.button.addEvent('click', function(e) {
			e.stop();
			
			$$('input').removeClass('error');
			this.options.form.send();
		}.bind(this));
		
		this.options.form.set('send', {
			onRequest: function() {
				//loader.removeClass('hidden');
				this.options.errorMessage.addClass('hidden');
			}.bind(this),
			onComplete: function(response) {
				//loader.addClass('hidden');
				response = JSON.decode(response);
				
				(function() {
					if (response.success == true) {
						this.options.form.destroy();
						this.options.successMessage.removeClass('hidden');
						_gaq.push(['_trackEvent', 'Werken', 'Verzenden', 'Success']);
					} else {
						_gaq.push(['_trackEvent', 'Werken', 'Verzenden', 'Error']);
						this.options.errorMessage.removeClass('hidden');
						if(response.errorfields) {
							response.errorfields.each(function(field) {
								$$('input[name='+field+']').addClass('error');
							});
						}
					}
				}).delay(400, this)
			}.bind(this)
		});
	}
});
