/* Définition des comportements javascript du site */
function setCSSBehaviours() {
	$$('.themes select').action( {
		initialize: function() { },
		onchange: function() { this.form.submit(); }
	} );
	$$('#accordeon').action( {
		initialize: function() { accordeon(); if (window.Lightbox) Lightbox.init(); }
	} );
	$$('#accordeon_contents h3').action( {
		initialize: function() { id = $(this.id.replace('t-', 'c-')); this.e = new Fx.Slide(id); if (!id.hasClass('first')) this.e.hide(); },
		onclick: function() {
			// Inverser l'état
			id = $(this.id.replace('t-', 'c-'));
			this.e.toggle();
			if (id.getStyle('margin-top').toInt() < 0) {
				show(this.getElements('.moins')[0]);
				hide(this.getElements('.plus')[0]);
			} else {
				hide(this.getElements('.moins')[0]);
				show(this.getElements('.plus')[0]);
			}
		}
	} );
	$$('#partenaires a').action( {
		onclick: function() {
			return !window.open(this.href);
		}
	} );
	$$('.outils .plan a').action( {
		onclick: function() {
			div = new Element('div').setProperty('id', 'sitemap');
			div.injectInside(document.body);
			closer = new Element('div').setProperty('id', 'closer').addEvent('click', function() { $('closer').remove(); $('sitemap').remove(); });
			closer.setOpacity(0.5);
			closer.injectInside(document.body);
			window.addEvent('scroll', function() { positionOverlay('closer'); });
			new Ajax(this.href+'?tpl=plan', {method: 'get', update: 'sitemap', onComplete: function() { positionOverlay('closer'); }}).request();
			return false;
		}
	} );
}
function positionOverlay(overlay) {
	$(overlay).setStyles({top: Window.getScrollTop()+'px', height: Window.getHeight()+'px'});
}
function show(id) { id.setStyle('display', 'block'); }
function hide(id) { id.setStyle('display', 'none'); }

Window.onDomReady(setCSSBehaviours);

// Récupère le contenu de l'accordéon et le recopie en l'entourant de <div> entre chaque <h4>
function accordeon() {
	var acc = $('accordeon_contents');
	if (!acc) return;
	var panel, log = '', first_panel = true;
	// Boucler sur tous les enfants de l'#accordeon
	var elems = $('accordeon').childNodes;
	if ($S('#accordeon h3').length == 1) return;
	for (i = 0; i < elems.length; i++) {
		// Si c'est un H3, on fait un nouveau panel, et on l'ajoute
		// à l'#accordeon-contents
		if (elems[i].tagName == 'H3') {
			if (panel) {
				// Si on a un panel existant, on l'ajoute avant d'en faire un nouveau
				acc.appendChild(panel.cloneNode(true));
				// On a passé le 1e
				first_panel = false;
			}
			// Créer un nouveau panel
			id =Math.round(Math.random()*1000);
			panel = document.createElement('div');
			panel.className = 'panel';
			if (first_panel) { panel.className += ' first';}
			panel.id = 'c-'+id;
			// Ajouter le titre H3 à l'accordeon
			elems[i].id = 't-'+id;
			t = elems[i].cloneNode(true);
			t.innerHTML = '<span class="plus"'+(first_panel ? 'style="display: none"': '')+'>+</span> <span class="moins"'+(!first_panel ? 'style="display: none"': '')+'>-</span> '+t.innerHTML;
			acc.appendChild(t);
		} else {
			if (panel) {
				// Ca n'est pas un titre, on ajoute le fils et la sous arbo au panel
				panel.appendChild(elems[i].cloneNode(true));
			} else {
				// Si on n'a pas encore de panel, on l'ajoute à l'accordéon
				acc.appendChild(elems[i].cloneNode(true));
			}
		}
	}
	// Ajouter le dernier panel créé
	if (panel) { acc.appendChild(panel); }
	// Masquer le texte original
	$('accordeon').style.display = 'none';
}

// Validation des formulaires
function validation() { //v4.0
	var i,p,q,nm,test,num,min,max,errors='',args=validation.arguments;
	for (i=0; i<(args.length-2); i+=3) {
		test=args[i+2];
		var obj=document.getElementById(args[i]);
		var error = '';
		if (obj) {
				var error = '';
				nm=args[i+1];
				if (!nm) nm=obj.name;
				if ((val=obj.value)!="") {
					if (test.indexOf('isEmail')!=-1) {
						if (val.search(/^[\w\d\._-]+@[\w\d\._-]+$/) == -1) {
							error='- '+nm+' doit être une adresse email valide\n';
						}
					} else if (test.indexOf('isDate')!=-1) {
					} else if (test!='R') {
						num = parseFloat(val);
						if (isNaN(val)) error='- '+nm+' doit être un nombre.\n';
						if (test.indexOf('inRange') != -1) {
							p=test.indexOf(':');
							min=test.substring(8,p); max=test.substring(p+1);
							if (num<min || max<num) error='- '+nm+'  doit être un nombre entre '+min+' et '+max+'.\n';
						}
					}
				} else if (test.charAt(0) == 'R') { 
					if (obj.type == 'checkbox') {
						if (!obj.checked) error= '- '+nm+' est requis\n';
					} else {
						error= '- '+nm+' est requis\n';
					}
				}
				className = new String(obj.className);
				if (error != '') {
					errors += error;
					if (className.indexOf('missing') == -1) obj.className += ' missing';
				} else {
					obj.className = className.replace(/missing/, '');
				}
		}
	}
	return errors;
}

function alert_validation() {
	args = new Array();
	for (var i=0; i<alert_validation.arguments.length; i++) {
		args[i] = "'"+alert_validation.arguments[i].replace(/'/g,"\\'")+"'";
	}
	eval("errors = validation("+args.join(',')+")");
	if (errors != '') alert('Les erreurs suivantes sont apparues\n'+errors);
	return (errors == '');
}
