var FormContact = new Class ({
	
	'initialize' : function() {
		this.copyHTML = $('form_mail').clone(true, true);

		this.initSubmitListener();
	},
	
	'initSubmitListener' : function() {
		$('form_mail').addEvent('submit', function() {
			if ( this.isValid() )			
				this.sendMail();
			
			return false;
		}.bind(this));
	},
	
	'sendMail' : function() {
		var loader = new Element('img', {
			'height' : '24px',
			'width' : '24px',
			'src' : 'http://www.slingshot.fr/slingshot-party/themes/images/loading-24-black.gif',
			'class' : 'middle icon'
		}).inject($('buttonSendMail'), 'after');
		loader.getParent().appendText("En cours d'envoi...");
		$('buttonSendMail').destroy();
		this.actionsLocked();
		
		var request = new Request({
			method: 'post',
			url: './contact/envoyerajax',
			data: $('form_mail').toQueryString()
		}).send();
		
		request.addEvent('onSuccess', function(responseTree, responseElements, responseHTML, responseJavascript) {
			$('form_mail').dissolve();
			
			if ( responseTree == 1 )
				new Message('confirmation', 'Ton message nous a bien été envoyé.',"Notre équipe prendra contact avec toi et te répondra dans les plus bref délais.").getElts().inject($('contact_email'), 'top');
			else {
				var message = new Message('erreur', "Une erreur est survenue lors de l'envoie du message","Tu peux toujours réessayer d'envoyer ton message").getElts().inject($('contact_email'), 'top');
				var link = new Element('a', {'href' : '#'}).inject($('contact_email'));
				link.set('text', 'Réessayer');
			}
			
			link.addEvent('click', function() {
				this.reset();
				return false;
			}.bind(this));				
		}.bind(this));
	},
	
	'isValid' : function() {
		var hasError = false;
		var error = new Element('span', {'class' : 'erreur'});
		
		$$('span.erreur').each(function(el) {
			el.dispose();
		}.bind(this));
			
		$('form_mail').getElements('input[type="text"].erreur, ul.erreur, li.erreur, textarea.erreur').each(function(el) {
			el.removeClass('erreur');
		}.bind(this));
		
		if ( $('name').getProperty('value') == '' ) {
			//var copy = error.clone(true, true).inject($('name'), 'after');
			//copy.set('text', 'Indique ton nom');
			$('name').addClass('erreur');
			hasError = true;
		}
		
		if ( $('from').getProperty('value') == '' ) {
			//var copy = error.clone(true, true).inject($('from'), 'after');
			//copy.set('text', 'Indique ton e-mail');
			$('from').addClass('erreur');
			hasError = true;
		}
		else {
			if ( !this.isEmail($('from').getProperty('value')) ) {
				//var copy = error.clone(true, true).inject($('from'), 'after');
				//copy.set('text', "E-mail erroné");
				$('from').addClass('erreur');
				hasError = true;
			}
		}
		
		if ( $('message').getProperty('value') == '' ) {
			//var copy = error.clone(true, true).inject($('message'), 'after');
			//copy.set('text', "Saisie ton message");
			$('message').addClass('erreur');
			hasError = true;
		}

		return ( !hasError );
	},
	
	'isEmail' : function(_email) {
		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		return reg.test(_email);
	},
	
	'actionsLocked' : function() {
		$('form_mail').getElements('input[type="text"], textarea').each(function(el) {
				el.setProperty('readonly', 'readonly');
				el.addClass('readonly'); 
		}.bind(this));
	},
	
	'reset' : function() {
		$('contact_email').empty().adopt(this.copyHTML);
		this.initSubmitListener();
	}
	
});
