/*-----------------------------------------------------------------------------------------------*/
//
// Copyright (c) 2009 Agence Clark (http://www.agence-clark.com)
//
/*-----------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------------*/
// Init Page
/*-----------------------------------------------------------------------------------------------*/
Event.observe(window, 'load', InitPage, false);
function InitPage(){
	//-- Rollover Input Image --//
	RollOverImage();
	
	//-- Navigation sous-menu --//
	InitSousMenu();
	
	//-- Rollover blocs --//
	
	// Related content
	// Prsentation Staff & Line Accueil
	// Remontes Actus et Events Accueil
	// Colonne de gauche
	// Liste de rsultats
	var blocs = $$('.social .reseaux, .social .twitter, #related_content ul li, #presentation_staffandline .corps, #remontees_actu_events .bloc_extend, #col_gauche, ul#liste_resultats li'); 
	RollOverBlocs(blocs);
	
	//-- Accordeon --//
	if($('col_gauche'))
	{
		//InitAccordeon();
		InitInfobulles();
	}
	
	if($('remontees_actu_events')) ActusEventsOnglets();
	
	if($('classement_liste')) ClassementListeResultats();
	
	//-- InfoBox --//
	InitInfoBox();
	
	//-- Vrification formulaire --//
	focusInput();
	if($('devenez_partenaire')) $('devenez_partenaire').onsubmit = function() { return FormPartenaire(); }
	if($('recevoir_nl')) $('recevoir_nl').onsubmit = function() { return FormNewsletter(this); }

	if($('ss_home')){
		var ssHome = new slideShow('ss_home','cont_ss_home','item',{
			slideNav:'nav_ss_home',
			slideAutostart:false,
			slideDuree:0.5,
			slideTempo:2
		});
	}
	if($('switch_langue')) {
		Event.observe($('SetLang'),'change',function(){ $('switch_langue').submit(); });
	}

}

/*-----------------------------------------------------------------------------------------------*/
// Fonctions
/*-----------------------------------------------------------------------------------------------*/


/**
 * Afficher masquer le sous-menu de navigation
 ******************************************/
var InitSousMenu = function()
{	
	$$('ul#niveau_1 li.niveau_1').each(function(rub)
	{
		var lien = rub.down('a'); 
		var sous_menu  = rub.down('.niveau_2');
		var fermer = rub.down('a.fermer');
		
		var autres_sous_menus = $$('.niveau_2').without(sous_menu);

		var actif;

		if(sous_menu)
		{
			Event.observe(rub, 'mouseenter', function()
			{
				actif = window.setTimeout ( function() { AfficheSousMenu(autres_sous_menus, sous_menu, lien); },400);
			});
			
			Event.observe(rub, 'mouseleave', function()
			{
				window.clearTimeout(actif);
				MasqueSousMenu(lien, sous_menu);
			});
			if(fermer){
				fermer.onclick = function()
				{
					MasqueSousMenu(lien, sous_menu);
					return false;
				}
			}
		}else{
			Event.observe(rub, 'mouseenter', function()
			{
				rub.addClassName('in');
			});
			
			Event.observe(rub, 'mouseleave', function()
			{
				rub.removeClassName('in');
			});
		}
	});
}

/**
 * Affiche le sous-menus courant
 ******************************************/
var AfficheSousMenu = function(autres_sous_menus, sous_menu, lien)
{
	autres_sous_menus.each(function(autre)
	{
		MasqueSousMenu(autre.previousSiblings()[0], autre)
	});
	
	new Effect.BlindDown(sous_menu, {duration : 0.3 });
	lien.addClassName('on');
}

/**
 * Masque le sous-menu courant
 ******************************************/
var MasqueSousMenu = function(lien, sous_menu)
{
	new Effect.BlindUp(sous_menu,
	{
		duration : 0.3,
		afterFinish: function() { sous_menu.setStyle({height: 'auto'}); lien.removeClassName('on'); }
	});
}

/**
 * Ajoute une class "on" sur les blocs ncessitants un rollover
 ******************************************/
var RollOverBlocs = function(blocs)
{
	blocs.each(function(bloc)
	{
		Event.observe(bloc, 'mouseover', function()
		{
			if(bloc.hasClassName("first")) bloc.addClassName('first_on');
			else if(bloc.hasClassName("last")) bloc.addClassName('last_on');
			bloc.addClassName('on');
		});
		Event.observe(bloc, 'mouseout', function()
		{
			if(bloc.hasClassName("first_on")) bloc.removeClassName('first_on');
			else if(bloc.hasClassName("last_on")) bloc.removeClassName('last_on');
			bloc.removeClassName('on');
		});
	});
}

/**
 *  onglets ectus et events
 ******************************************/
var ActusEventsOnglets = function()
{
	$$('#remontees_actu_events .onglets a').each(function(onglet)
	{
		Event.observe(onglet, 'click', function()
		{
			$$('#remontees_actu_events .onglets a').each(function(a) { a.removeClassName('on'); });
			$$('#remontees_actu_events ul.contenu, #remontees_actu_events .liens li').each(function(contenu) { contenu.removeClassName('afficher'); });
			
			var id_contenu  = "contenu"+onglet.id.substring(6); // enlève "nav" et ajoute "niveau_2"
			var id_lien  = "lien"+onglet.id.substring(6); // enlève "nav" et ajoute "niveau_2"
			
			onglet.toggleClassName('on');
			$(id_contenu).toggleClassName('afficher');
			$(id_lien).toggleClassName('afficher');
		});
		
		onglet.onclick = function(){return false;}
	});
}

/**
 * Effet accordon sur la navigation contextuelle
 ******************************************/
function InitAccordeon()
{
	var accordeon = new menuMaker('col_gauche',{MenuEffect:'blind', MenuDuree:0.5});
}

/**
 * Cration et apparition des infobulles
 ******************************************/
function InitInfobulles()
{
	$$('#nav_contextuelle a > span').each(function(span)
	{
		txt_infobulle = span.innerHTML;
		
		var infobulle = Builder.node('div', {className:'infobulle', style:'display: none'},
		[
			Builder.node('span', {className:'g_infobulle'}),
			Builder.node('p', txt_infobulle),
			Builder.node('span', {className:'d_infobulle'})
		]);
		
		var lien = span.up('a');
		span.remove();
		
		lien.insert({after:infobulle});
		lien.onmouseover = function() { new Effect.toggle(infobulle,'appear', {duration : 0.5}); };
		lien.onmouseout = function() { new Effect.toggle(infobulle,'appear', {duration : 0.5}); };
	});
}

/**
 * Initialise les InfoBox
 ******************************************/
var InitInfoBox = function()
{
	$$('a.infobox').each(function(lien)
	{
		Event.observe(lien, 'click', function()
		{ 
			var ib = new infoBox(lien.href, {BoxSiteContent : "global", BoxCallback : "CallBackInfobox();"});
			ib.ouvrir();
		});
		lien.onclick = function() {return false;}
	});
}

/**
 * Supprime l'InfoBox courante et en ouvre
 * une autre
 ******************************************/
var SwitchInfobox = function(url)
{
	if($('infobox_box')) $('infobox_box').remove();
	var ib = new infoBox(url, {BoxSiteContent : "global", BoxCallback : "CallBackInfobox();"});
	ib.ouvrir();
}

/**
 * Callback des fonctions pour l'InfoBox 
 * courante
 ******************************************/
var CallBackInfobox = function()
{
	focusInput();
	RollOverImage({RollRech:'#infobox_include '});
	
	if($('form_inscription')) $('form_inscription').onsubmit = function() { return FormInscription(); }
	if($('recevoir_nl_ib')) $('recevoir_nl_ib').onsubmit = function() { return FormNewsletter(this); }

	if($('btn_inscription'))
	{
		var btn_inscription = $('btn_inscription');
		btn_inscription.onclick = function() { return false; }
		Event.observe(btn_inscription, 'click', function() { SwitchInfobox(this.href); });
	}
	
	if($('btn_champ_interets')) $('btn_champ_interets').onclick = function() { AfficherInterets(); return false; }
}

/**
 * Rechargement AJAX liste de rsultats
 ******************************************/
var ClassementListeResultats = function()
{
	var selects = $$('#classement_liste select');
	
	selects.each(function(el)
	{
		Event.observe(el, 'change', function() { RechargerListeResultats(); } );	
	});
	
	var RechargerListeResultats = function()
	{
		var parametres = "action=liste_resultats&page="+$$("body")[0].id;
		var cible = $('liste_resultats');
		var loading = '<li class="chargement last"><img src="./images/commun/chargement.gif" alt="Chargement" /></li>';
		
		/* Rcupration des id => value pour former la requte */
		selects.each(function(el)
		{
			if(el.value != "") parametres = parametres+"&"+el.id+"="+el.value;
		});
		
		new Ajax.Request('./_ajax.php?'+parametres,
		{
			onCreate : function() { cible.update(loading); },
			onSuccess: function(requester)
			{
				cible.update(requester.responseText);
				RollOverImage();
				RollOverBlocs($$('ul#liste_resultats li'));
				InitInfoBox();
			}
		});
	};
};

/**
 * Vrifie les champs obligatoire du 
 * formulaire pour devenir partenaire
 ******************************************/
var FormPartenaire = function()
{
	param_form = { mep: 'msg_champ', autoScroll: false, action: 'submit'};
	champs_form = {
		champ_type_pgm: {alerte:'Le type est obligatoire.'},
		champ_email: {type:'mel', alerte:'L\'email est obligatoire.'},
		champ_nom: {alerte:'Le nom est obligatoire.'},
		champ_prenom: {alerte:'Le prnom est obligatoire.'},
		champ_nom_soc: {alerte:'Le nom de la socit est obligatoire.'},
		champ_ville_soc: {alerte:'La ville est obligatoire.'},
		champ_pays_soc: {alerte:'Le pays est obligatoire.'}
	};
	var res = formVerif('devenez_partenaire', champs_form, param_form);
	
	if(res) EnvoiFormAJAX("form_partenaire");
	return false;
};

/**
 * Affiche / masque la liste des intrts
 ******************************************/
var AfficherInterets = function()
{
	var champ_interets = $('champ_interets');

	if(champ_interets.hasClassName('on'))
	{
		champ_interets.removeClassName('on');
		new Effect.toggle($('liste_interets'),'blind', {duration : 0.3});
	}
	else
	{
		champ_interets.addClassName('on');
		new Effect.toggle($('liste_interets'),'blind', {duration : 0.3});
	}
};

/**
 * Vrifie les champs obligatoire du 
 * formulaire pour s'inscrire
 ******************************************/

var FormInscription = function()
{
	var errorMessage = '';
	
	if($$('input[name=champ_interets]').value!="")
	{
		$('champ_interets').removeClassName('inputError');	
		$$('label[for=champ_interets]')[0].removeClassName('labelError');
		if($('champ_interets_erreur')) $('champ_interets_erreur').remove();
	}
	
	if($('champ_comm_questions').value == "" && $('champ_interets_5').checked)
	{
		errorMessage += '<p>Un commentaire est obligatoire</p>';
		$('champ_comm_questions').addClassName('inputError');	
		$$('label[for=champ_comm_questions]')[0].addClassName('labelError');	
	}
	else
	{
		$('champ_comm_questions').removeClassName('inputError');	
		$$('label[for=champ_comm_questions]')[0].removeClassName('labelError');
	}

	param_form = { mep: 'msg_champ', autoScroll: false, action: 'submit'};
	champs_form = {
		champ_email: {type:'mel', alerte:'L\'email est obligatoire.'},
		champ_civilite: {alerte:'La civilit est obligatoire.'},
		champ_nom: {alerte:'Le nom est obligatoire.'},
		champ_prenom: {alerte:'Le prnom est obligatoire.'},
		champ_fonction: {alerte:'La fonction est obligatoire.'},
		champ_nom_soc: {alerte:'Le nom de la socit est obligatoire.'},
		champ_ville_soc: {alerte:'La ville est obligatoire.'},
		champ_pays_soc: {alerte:'Le pays est obligatoire.'},
		champ_tel: {alerte:'Le numro de tlphone est obligatoire.'},
		champ_nb_utilisateurs: {alerte:'Le nombre d\'utilisateurs est obligatoire.'},
		champ_projet: {alerte:'Le projet est obligatoire.'},
		champ_interets: {alerte:'Le projet est obligatoire.'}
	};
	
	var res = formVerif('form_inscription', champs_form, param_form, {errorMessage : errorMessage});
	if(res) EnvoiFormAJAX("form_inscription");
	
	return false;
};

/**
 * Vrifie l'email pour l'inscription 
 * la newsletter 
 ******************************************/
var FormNewsletter = function(form)
{
	var res = frmSimpleCheck(form);
	if(res) EnvoiFormAJAX("form_newsletter");
	return false;
};

/**
 * Envoie le formulaire en AJAX et affiche 
 * un message de confirmation
 ******************************************/
var EnvoiFormAJAX = function(action)
{
	var url = './_ajax.php?page='+$$("body")[0].id+'&action='+action;
	
	switch(action)
	{
		case "form_inscription" :
			var cible = $('form_inscription');
			var loading = '<div style="text-align: center;"><img src="./images/commun/chargement.gif" alt="Chargement" /></div>';
		break;
		
		case "form_newsletter" :
			var cible = $('recevoir_nl');
			if($('recevoir_nl_ib')) cible = $('recevoir_nl_ib');
			var contenu = cible.innerHTML;
			var loading = '<p>Envoi du formulaire...</p>';
		break;
		
		case "form_partenaire" :
			var cible = $('devenez_partenaire');
			var contenu = cible.innerHTML;
			var loading = '<div style="text-align: center;"><img src="./images/commun/chargement.gif" alt="Chargement" /></div>';
		break;
	}
	
	new Ajax.Request(url,
	{
		onCreate : function() { if(cible) cible.update(loading); },
		onSuccess: function(requester)
		{
			SwitchInfobox(requester.responseText); 
			if(contenu != "") cible.update(contenu);
		}
	});
};

/* FORMULAIRE CONTACT */
var frmVerifContact = function(){
	param_form = { mep: 'msg_champ', autoScroll: false, action: 'submit'};
	champs_form = {
		first_name: {alerte:'bla bla.'},
		last_name: {alerte:'bla bla.'},
		email: {type:'mel', alerte:'L\'email est obligatoire.'},
		company: {alerte:'bla bla.'},
		intitule: {alerte:'bla bla.'},
		taille: {alerte:'bla bla.'},
		pays: {alerte:'bla bla.'},
		requis: {alerte:'bla bla.'},
		solution: {alerte:'bla bla.'},
		sujet: {alerte:'bla bla.'},
		interet: {alerte:'bla bla.'}
	};
	if($F('pays') == 'United States of America' || $F('pays') == 'Canada' || $F('pays') == 'Australia'){
		champs_form['region'] = {alerte:'bla bla.'};
	}else{
		if($('region_erreur')){
			$('region_erreur').hide();
			$('region').removeClassName('inputError');
			$('region').up(1).down('label').removeClassName('labelError');
		}
		champs_form = champs_form;
	}
	return formVerif('frm_contact', champs_form, param_form);
};
