/**
 * @author Asper
 */

var Layout = new Class({
	initialize: function(){},
	initForm: function(){
		var form = document.body.getElement('div.form form');
		if(form){
			var fieldsets = form.getElements('fieldset');
			var helpParagraphs = [];
			var helpParagraphTogglers = [];
			fieldsets.each(function(fieldset){
				var notRequiredInputs = [];
				var inputs = fieldset.getElements('div.input');
				inputs.each(function(input){
					if(
						!input.hasClass('required') 
						&& (
							!input.get('rel')
							|| !$(input.get('rel')).hasClass('required')
						)
					){
						notRequiredInputs.push(input);
					}
					var txtInput = input.getElement('input');
					if(txtInput && txtInput.hasClass('slug')){
						var displayField = $(txtInput.get('rel'));
						if(displayField){
							Object.append(txtInput, {
								update: function(){
									txtInput.set('value', displayField.get('value').toLowerCase().replace(/[àâä]/gi,"a").replace(/[ç]/gi,"c").replace(/[éèêë€]/gi,"e").replace(/[îï]/gi,"i").replace(/[ôö]/gi,"o").replace(/[ùûü]/gi,"u").replace(/[^a-z0-9]+/g, '-'));
								}
							});
							displayField.addEvent('keyup', function(e){
								txtInput.update();
							});
							if(txtInput.get('value') == ''){
								txtInput.update();
							}
						}
					}
					var helpParagraph = input.getElement('p.help'); 
					if( helpParagraph ){
						helpParagraph.addClass('hide');
						var help = new Element('div', {'class': 'help'}).wraps(helpParagraph);
						var helpParagraphToggler = new Element('span', {'class': 'help'}).inject(help, 'top');
						var arrow = new Element('span', {'class': 'arrow'}).inject(helpParagraph);
						helpParagraphs.push(helpParagraph);
						helpParagraphTogglers.push(helpParagraphToggler);
						helpParagraphToggler.addEvent('click', function(e){
							var hidden = helpParagraph.hasClass('hide');
							helpParagraphs.each(function(p, i){
								p.addClass('hide');
								helpParagraphTogglers[i].removeClass('on');
							});
							if(hidden){
								helpParagraphToggler.addClass('on');
								helpParagraph.removeClass('hide');
							}
						});
					}
				});	
				if(notRequiredInputs.length > 0){
					var additionalFields = new Element('div', {
						'class': 'additional_fields hide'
					});
					notRequiredInputs.each(function(notRequiredInput){
						notRequiredInput.inject(additionalFields);
					});
					new Element('a', {
						href : '#',
						text : '+ Champs optionnels',
						events: {
							'click': function(e){
								e.stop();
								additionalFields.toggleClass('hide');
							}
						}
					}).inject(fieldset);
					additionalFields.inject(fieldset);
				}
			});
			
			var ens = form.getElements('div[rel]');
			ens.each(function(en){
				//var label = en.getElement('label');
				//label.set('text', label.get('text').replace('_eng', ''));
				var fr = $(en.get('rel'));
				en.addClass('en');
				fr.addClass('fr');
				[fr, en].each(function(el){
					var frLink = new Element('a', {
						text: 'Fr',
						href: '#',
						'class': 'fr'
					}).inject(el.getElement('label'));
					var enLink = new Element('a', {
						text: 'En',
						href: '#',
						'class': 'en'
					}).inject(el.getElement('label'));
					frLink.addEvent('click', function(e){
						e.preventDefault();
						en.setStyle('display', 'none');
						fr.setStyle('display', 'block');
					});
					enLink.addEvent('click', function(e){
						e.preventDefault();
						en.setStyle('display', 'block');
						fr.setStyle('display', 'none');
					});
				});
				en.setStyle('display', 'none');
				fr.setStyle('display', 'block');
			});
		}
	},
	loadAddForm: function(url){
		new Request.HTML({
			url: url,
			update: $('addFormAjaxLoader'),
			onSuccess: function(tree, els, html, js){
				this.initForm();
			}.bind(this)
		}).send();
	}
});

