/* Définition des comportements javascript du site */
function setCSSBehaviours() {
	// Gestion des menus
	$$('ul.navigation ul ul').each(function(ul) {
		var div = new Element('div').setStyle('overflow', 'hidden');
		ul.clone().injectInside(div);
		ul.replaceWith(div);
	});
	$$('ul.navigation ul').each(function(ul) {
		if (ul.getParent().getTag() != 'div') {
			var div = new Element('div').setStyle('overflow', 'hidden');
			ul.clone().injectInside(div);
			ul.replaceWith(div);
		}
	});
	$$('ul.navigation li').addEvents({
		'mouseenter' : function() {
			var a = this.getFirst();
			if (a.getNext()) {
				var div = a.getNext();
				if (div.getFirst()) {
					var ul = div.getFirst();
					ul.setStyles({'display': 'block', 'margin-top': 0});
				}
			}
		}
	});
	$$('ul.navigation').addEvent('mouseleave', function() {
			this.getElements('ul').each(function(ul) {
				if (!ul.getParent().getParent().hasClass('select')) {
					var size = ul.getSize();
					ul.effect('margin-top', {
						'onComplete': function() { ul.setStyle('display', 'none'); }
					}).start(0, -1*size.size.y);
				}
			});
	});
	$$('.themes select').each( function(select) {
		select.addEvent('change', function() { select.form.submit(); });
	} );
	// Dépot d'offres d'emploi
	$$('#recruteur_diff').each( function(f) {
		f.addEvent('click', function() { if (f.checked) $('recrutement').style.display = 'block'; else $('recrutement').style.display = 'none'; });
		f.fireEvent('click');
	} );
	$$('div#row_type_contrat input').each( function(f) {
		f.addEvent('click', function() { if (f.checked) if(f.value == 'CDD') $('row_cdd_duree').style.display = 'block'; else $('row_cdd_duree').style.display = 'none'; });
		f.fireEvent('click');
	} );
	$$('div#row_indemnites input').each( function(f) {
		f.addEvent('click', function() { if (f.checked) if (f.value == 'oui') $('row_remuneration').style.display = 'block'; else $('row_remuneration').style.display = 'none'; });
		f.fireEvent('click');
	} );
	// Formulaire de contact
	$$('div#row_type_demande select').each( function(f) {
		f.addEvent('change', function() { if (f.selectedIndex == f.options.length-1) $('row_objet').style.display = 'block'; else $('row_objet').style.display = 'none'; });
		f.fireEvent('change');
	} );
	// Formulaire d'inscription
	$$('div#row_situation select').each( function(f) {
		f.addEvent('change', function() { if (f.selectedIndex == f.options.length-1) $('row_situation_autre').style.display = 'block'; else $('row_situation_autre').style.display = 'none'; });
		f.fireEvent('change');
	} );
	$$('div#row_connu_par select').each( function(f) {
		f.addEvent('change', function() { if (f.selectedIndex == f.options.length-1) $('row_connu_par_autre').style.display = 'block'; else $('row_connu_par_autre').style.display = 'none'; });
		f.fireEvent('change');
	} );
	$$('fieldset.liste').each( function(fieldset) {
		d = new Element('div').addClass('row submit');
		new Element('input').setProperties({ 'type': 'button', 'value': 'Ajouter'}).addEvent('click', function() {
			// Calculer le nombre de inputs (1 ligne = 3 champs, moins le bouton 'ajouter')
			var lastnum = (fieldset.getElements('input').length-1)/3;
			row = fieldset.hasClass('etudes') ? get_row_etudes(lastnum) : get_row_langues(lastnum);
			row.injectBefore(fieldset.getLast());
		}).injectInside(d);
		d.injectInside(fieldset);
	} );
	// Contenu des pages en accordeon
	if ($('accordeon')) {
		accordeon();
		if (window.Lightbox) Lightbox.init();
	}
	$$('#accordeon_contents h3').each(function(tag) {
		id = $(tag.id.replace('t-', 'c-'));
		tag.e = new Fx.Slide(id);
		if (!id.hasClass('first')) tag.e.hide();
		tag.addEvent('click', function(e) {
			// Inverser l'état
			id = $(tag.id.replace('t-', 'c-'));
			tag.e.toggle();
			if (id.getStyle('margin-top').toInt() < 0) {
				show(tag.getElements('.moins')[0]);
				hide(tag.getElements('.plus')[0]);
			} else {
				hide(tag.getElements('.moins')[0]);
				show(tag.getElements('.plus')[0]);
			}
		});
	} );
	$$('a.imprimer').each(function (a) {
		a.addEvent('click', function(e) { self.print(); new Event(e).stop(); });
	});
	$$('a.newsletter').each(function(a) {
		a.addEvent('click', function(e) { w = window.open(a.href, 'newsletter', 'width=700,height=500,scrollbars=yes'); if(!w) return true; if(w.focus) w.focus(); new Event(e).stop(); });
	});
	// Les liens qui affiche le contenu d'une page (ajax)
	$$('a.content').each( function(a) {
		a.addEvent('click', function(e) {
			e = new Event(e);
			d = new Element('div').setProperties({ id: 'content' });
			//$(a.parentNode).setStyle('position', 'relative');
			d.injectInside(a.parentNode.parentNode);
			url = a.href;
			if (a.href.search) { url += '?'; }
			else { url += '&'; }
			var myajax = new Ajax(url+'tpl=page', {method: 'get', update: 'content', onComplete: function() { $('content').setStyles({ 'top': e.client.x, 'left': e.client.y}).makeDraggable({ 'handle': 'titlebar'}); }}).request();
			if (myajax) e.stop();
		});
	} );
	// Envoi de la newsletter
	$$('input#preview').each(function(f) {
		window.myaction = f.form.action;
		f.addEvent('click', function(e) {
			f.form.action = window.myaction+'?tpl=email';
			window.open('', 'newsletter', 'width=700,height=500,scrollbars=yes');
			f.form.target = 'newsletter';
		});
	});
	// Edition du texte des pages
	$$('a.edit_link').each( function (a) {
		a.addEvent('click', function(e) {
			$('editor').setStyle('display', 'block');
			new Event(e).stop();
		});
	} );
	// Enregistrer ou non son email pour les veilles
	$$('#row_actif input').each( function(f) {
		f.addEvent('click', function() {
			if (f.getValue() == 'oui' && f.checked) { $('email').setProperty('disabled', false); }
			else if (f.getValue() == 'non' && f.checked) { $('email').setProperty('disabled', true); }
		});
	});
}

window.addEvent('domready', setCSSBehaviours);
window.addEvent('load', function() {
	// Mettre la taille des div droite & gauche Ã  celle de l'image...
 	$$('div.gauche, div.droite').each( function(div) {
		// TRouver l'image
		img = $E('img', div);
		if (img) {
			div.setStyle('width', (img.getStyle('width').toInt())+'px');
			div.setStyle('text-align', 'center');
		}
	} );
});

function get_row_etudes(i) {
	if (i == null) i = 0;
	d = new Element('div');
	d1 = new Element('div').addClass('row');
	new Element('input').setProperties({'id': 'etablissement_'+i, 'name': 'etablissement_'+i}).injectInside(d1);
	d2 = new Element('div').addClass('row');
	new Element('input').setProperties({'id': 'periodes_'+i, 'name': 'periodes_'+i}).injectInside(d2);
	d3 = new Element('div').addClass('row');
	new Element('input').setProperties({'id': 'diplomes_obtenus_'+i, 'name': 'diplomes_obtenus_'+i}).injectInside(d3);
	d1.injectInside(d); d2.injectInside(d); d3.injectInside(d); 
	return d;
}

function get_row_langues(i) {
	if (i == null) i = 0;
	d = new Element('div');
	d1 = new Element('div').addClass('row');
	new Element('input').setProperties({'id': 'langue_'+i, 'name': 'langue_'+i}).injectInside(d1);
	d2 = new Element('div').addClass('row');
	new Element('input').setProperties({'id': 'ecrit_'+i, 'name': 'ecrit_'+i}).injectInside(d2);
	d3 = new Element('div').addClass('row');
	new Element('input').setProperties({'id': 'oral_'+i, 'name': 'oral_'+i}).injectInside(d3);
	d1.injectInside(d); d2.injectInside(d); d3.injectInside(d); 
	return d;
}
function show(id) { $(id).setStyle('display', 'block'); }
function hide(id) { $(id).setStyle('display', 'none'); }

// 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 ($$('#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"': '')+'>Ouvrir</span> <span class="moins"'+(!first_panel ? 'style="display: none"': '')+'>Réduire</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) {
			// Avant de continuer, déterminer si l'un des parents du champ est affiché ou non
			if (is_displayed(obj)) {
				var error = '';
				nm=args[i+1];
				if (!nm) nm=obj.name;
				if ((val=obj.value)!="") {
					if (test.indexOf('isEmail')!=-1) {
						p=val.indexOf('@');
						if (p<1 || p==(val.length-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' || obj.type == 'radio') {
						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;
}

// Renvoie faux si l'objet ou l'un de ses parents est masqué (display=='none')
function is_displayed(obj) {
	if (obj.style && obj.style.display == 'none') {
		return false;
	}
	if (obj.parentNode) {
		return is_displayed(obj.parentNode);
	} else {
		return true;
	}
}

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 == '');
}
