var Account = new Class({
	Implements: [Options, Events, Log],
	Extends: Page,
	
	// Variables
	options: {
		type: 'create'
	},
	form: null,

	// Class instances


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

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

		// Init form
		this.initForm();
	},

	/*
	 * Init account form
	 */
	initForm: function()
	{
		this.log("Account::initForm()");

		var options = {
			showLoader: true,
			allowStatus: true,
			formErrorMessage: {
				allow: true,
				container: this.element.getElement('.form .form-message-container'),
				allowClose: false
			}
		};

		var elementOptions = {
		};
		var emailElementOptions = {
			hintText: 'naam@domein.nl'
		};

		var form = new Form($('account-form'), options);

		var emailElement = new FormElement(form, 'email', emailElementOptions);
		emailElement.addValidation(Form.REGEX_EMAIL, 'Vul je e-mail adres in');
		form.addElement(emailElement);

		var genderElement = new FormElement(form, 'gender', elementOptions);
		genderElement.addValidation(Form.REGEX_GENDER, 'Kies je geslacht');
		form.addElement(genderElement);

		this.element.getElement('.radio-buttons label[for=account-gender-female]').addEvent('click', function(event) {
			event.preventDefault();

			this.log("account-gender-female click");
			// Male
			this.element.getElement('.radio-buttons label[for=account-gender-female]').addClass('checked');
			this.element.getElement('#account-gender-female').set('checked', true);

			// Female
			this.element.getElement('.radio-buttons label[for=account-gender-male]').removeClass('checked');
			this.element.getElement('#account-gender-male').set('checked', false);
		}.bind(this));

		this.element.getElement('.radio-buttons label[for=account-gender-male]').addEvent('click', function(event) {
			event.preventDefault();

			this.log("account-gender-male click");

			// Male
			this.element.getElement('.radio-buttons label[for=account-gender-male]').addClass('checked');
			this.element.getElement('#account-gender-male').set('checked', true);
			
			// Female
			this.element.getElement('.radio-buttons label[for=account-gender-female]').removeClass('checked');
			this.element.getElement('#account-gender-female').set('checked', false);
		}.bind(this));


		//genderElement.element.setProperty('value', null);

		var firstnameElement = new FormElement(form, 'firstname', elementOptions);
		firstnameElement.addValidation(Form.REGEX_NAME, 'Vul je voornaam in');
		form.addElement(firstnameElement);

		var infixElement = new FormElement(form, 'infix', {optional: true});
		infixElement.addValidation(Form.REGEX_NAME, 'Vul je tussenvoegsel correct in');
		form.addElement(infixElement);

		var lastnameElement = new FormElement(form, 'lastname', elementOptions);
		lastnameElement.addValidation(Form.REGEX_NAME, 'Vul je achternaam in');
		form.addElement(lastnameElement);

		var postalElement = new FormElement(form, 'postal', elementOptions);
		postalElement.addValidation(Form.REGEX_POSTAL, 'Vul je postcode in');
		form.addElement(postalElement);

		var phoneElement = new FormElement(form, 'phone', elementOptions);
		phoneElement.addValidation(Form.REGEX_PHONE, 'Vul je telefoonnummer in');
		form.addElement(phoneElement);


		// Date
		/*
		var dayElement = new FormElement(form, 'day', elementOptions);
		dayElement.addValidation(Form.REGEX_DAY, 'Vul je geboortedatum correct in');
		form.addElement(dayElement);

		var monthElement = new FormElement(form, 'month', elementOptions);
		monthElement.addValidation(Form.REGEX_DAY, 'Vul je geboortedatum correct in');
		form.addElement(monthElement);

		var yearElement = new FormElement(form, 'year', elementOptions);
		yearElement.addValidation(Form.REGEX_DAY, 'Vul je geboortedatum correct in');
		form.addElement(yearElement);
		*/

		var dateElement = new FormElementDate(form, 'day', elementOptions);
		dateElement.addValidation(Form.REGEX_DAY, 'Vul je geboortedatum correct in');
		form.addElement(dateElement);

		// Password
		if(this.options.type == 'create')
		{
			var passwordElement = new FormElement(form, 'password', {});
			passwordElement.addValidation(Form.REGEX_PASSWORD, 'Vul een wachtwoord in');
			form.addElement(passwordElement);

			var repeatPasswordElement = new FormElement(form, 'repeat-password', {});
			repeatPasswordElement.addValidation(Form.REGEX_PASSWORD, 'Herhaal je nieuwe wachtwoord');
			repeatPasswordElement.addMatch(passwordElement, 'De opgegeven wachtwoorden komen niet overeen');
			form.addElement(repeatPasswordElement);
		}

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

		// Save form
		this.form = form;
	}

});
