// JavaScript Document
var class_formulaire = new Class ({

	Implements: [Options, Events],
	
	options : {
		id				: false, 
		formulaire 		: false, 
		onAjaxRequest	: $empty, 
		onAjaxSuccess 	: $empty, 
		creer_cadre_res : true
		
	},
	
	initialize: function(id, options){
		
		this.setOptions(options);
		
		if(typeOf(id) == 'string') {
		
			if(!$(id)) return false;	
			this.id = id;
			this.formulaire = $(this.id);
		
		}else{
			
			this.formulaire = id;
			
		}
		
		if(this.options.creer_cadre_res) {
			
			new Element('div', {'class' : 'res'}).inject(this.formulaire, 'top');
			
		}
		
		this.pre_coche_input();
		
		
		this.formulaire.addEvent('submit', function(e) {
			
			e.stop();
			
			var chargement = new loading({element : this.formulaire});
			
			var anc_text = this.formulaire.getElement('button[type=submit], input[type=submit]').get('html'); ;
			
			var button = this.formulaire.getElement('button[type=submit], input[type=submit]');
			
			button.set('html', 'chargement ...'); 
			button.set('disabled', 'disabled');
			button.setStyle('opacity', 0.3);
			
			if(this.options.creer_cadre_res) this.formulaire.getElement('.res').set('html', '').setStyle('display', 'none'); 	
			
			this.fireEvent('ajaxRequest');
			
			this.formulaire.getElements('.erreur').removeClass('erreur');
			
			new Request({
				
				url			: this.formulaire.get('action'), 
				method		: this.formulaire.get('method'), 
				data 		: this.formulaire.toQueryString(),
				evalScripts	: true,
				onFailure 	: function (reponse) {
						
						chargement.detruit();
						alert('Une erreur est survenue');
						button.set('html', anc_text); 
						button.set('disabled', '');
						button.setStyle('opacity', 1);
					
				},
				onSuccess	: function(reponse){
					
					chargement.detruit();
					
					var rep = force_to_json(reponse);
					
					if(rep.redir) {
						
						window.location.href = rep.lien;
						return false;
					
					}
					
					if(rep.champs) {
					
						Object.each(rep.champs, function(value, key) {
														 
   						this.formulaire.getElements('[name='+key+']').addClass('erreur');
						
						}.bind(this));
						
					}
					
					
					this.fireEvent('ajaxSuccess', rep);
					
					button.set('html', anc_text); 
					button.set('disabled', '');
					button.setStyle('opacity', 1);
					
				}.bind(this)
				
			}).send();
						
		}.bind(this));
		
   }, 
	
	pre_coche_input : function () {
		
		this.formulaire.getElements('input[type=checkbox], input[type=radio]').each(function(el) {
															  
			if(el.get('rel') && el.get('value')) {
			
				if(el.get('rel') == el.get('value')) el.set('checked', 'checked');
				
			}
															  
		});
		
		this.formulaire.getElements('select').each(function(el) {
															  
			if(el.get('rel')) {
			
				if(el.getElement('option[value='+el.get('rel')+']')) {
					
					el.getElement('option[value='+el.get('rel')+']').set('selected', 'selected');
				
				}
				
			}
															  
		});
		
	}, 
	
	show_erreur : function (txt) {
	
		Function.attempt(function(){
			
			this.formulaire.getElement('.res').set('html', txt).setStyle('display', 'block');
			
		}.bind(this), function(){
			
			alert(txt);
		
		});
		 
		
	}
	
	
});

var chryptograme = function () {

	if($('imgChrypt')) $('imgChrypt').destroy();
	
	 new Element('img', {'src' : racine+'/captcha.jpg'}).inject($('body').getElement('label[for=chryptogramme]'), 'top');
	
}




