
///////////////////////////////////////////////////////////////////////////////////////////////
// GESTION DES LANGUES FRANCAIS OU ANGLAIS
///////////////////////////////////////////////////////////////////////////////////////////////

var drapeau = {
	Initialiser: function(id_drapeau, id_description){
		Event.observe($(id_drapeau), 'mouseover', function(evt){
			$(id_description).style.visibility = 'visible';
			//new Effect.BlindUp(id_description, {duration: 1});
		});
		Event.observe($(id_drapeau), 'mouseout', function(evt){
			$(id_description).style.visibility = 'hidden';
			//new Effect.BlindDown(id_description, {duration: 1});
		});
	}
}

var langues = {
	DrapeauFR: drapeau,
	DrapeauEN: drapeau,
	Initialiser: function(){
		this.DrapeauFR.Initialiser('drapeau-fr', 'description-fr');
		this.DrapeauEN.Initialiser('drapeau-en', 'description-en');
	}
}

///////////////////////////////////////////////////////////////////////////////////////////////
// GESTION DU MENU PRINCIPAL
///////////////////////////////////////////////////////////////////////////////////////////////

var itemMenu = {
	Initialiser: function(id_item, description_item, num){
		Event.observe($(id_item), 'mouseover', function(evt){
			var marge = (75 * num) + (15 + ((5 * num) * 2));
			
			$('menu-description').style.marginLeft = marge.toString() + 'px';
			$('menu-description').innerHTML = description_item;
			$('menu-description').style.color = '#FFFFFF';
			//new Effect.Appear(id_item, {duration: 1});
		});
		
		Event.observe($(id_item), 'mouseout', function(evt){
			//new Effect.Fade(id_item, {duration: 1});
			$('menu-description').style.color = '#000000';
			
		});
		
	}
}
	
var menu = {
	Accueil: itemMenu,
	CV: itemMenu,
	Book: itemMenu,
	References: itemMenu,
	Contact: itemMenu,
	Initialiser: function(){
		this.Book.Initialiser("menu-book", "Mon book", 0);
		this.Book.Initialiser("menu-inspiration", "Inspirations", 1);
		this.Book.Initialiser("menu-references", "Mes références", 2);
		this.CV.Initialiser("menu-cv", "Mon CV", 3);
		this.Contact.Initialiser("menu-contact", "Me contacter", 4);
	}
}

///////////////////////////////////////////////////////////////////////////////////////////////
// VERIFICATION FORMULAIRE DE CONTACT
///////////////////////////////////////////////////////////////////////////////////////////////

	function EstVide(elt)
	{
		return elt.value == '';
	}
	
	function EstUneAdresseMail(elt)
	{
		var Expression = new RegExp("^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,3}$");
		return Expression.test(elt.value);
	}
	
	/*function EstUnCodePostal(elt)
	{
		var Expression = new RegExp("^[0-9]{5}$");
		return Expression.test(elt.value);
	}*/
	
	function ComporteDesChiffres(elt)
	{
		var Expression = new RegExp("[0-9]");
		return Expression.test(elt.value);
	}
	
	function ComporteDesCaracteresSpeciaux(elt)
	{
		var Expression = new RegExp("[#&]");
		return Expression.test(elt.value);
	}

	function FindPos(AObject)
	{
		var posX = 0, posY = 0;
		do
		{
			posX += AObject.offsetLeft;
			posY += AObject.offsetTop;
			AObject = AObject.offsetParent;
		}
		while( AObject != null );
		
		var pos = [];
		pos['X'] = posX;
		pos['Y'] = posY;
		
		return pos;

	}


	
///////////////////////////////////////////////////////////////////////////////////////////////
// INITIALISATION DES FONCTIONS
///////////////////////////////////////////////////////////////////////////////////////////////

function initialiserTout()
{
	
	/* Menu principal */
	if($('menu'))
	{
		menu.Initialiser();
	}
	
	/* Gestion des langues en page d'introdution */
	if($('intro'))
	{
		langues.Initialiser();
	}
	
	/* Gestion du formulaire de contact */
	
	if($('contact'))
	{
		//Valeur des labels de chaque champ
		var label_nom = $('lbl_nom').innerHTML;
		var label_prenom = $('lbl_prenom').innerHTML;
		var label_adresse = $('lbl_adresse1').innerHTML;
		var label_ville = $('lbl_ville').innerHTML;
		var label_codepostal = $('lbl_codepostal').innerHTML;
		var label_email = $('lbl_email').innerHTML;
		var label_message = $('lbl_message').innerHTML;
		
		//Erreurs
		erreur_champvide = '- Ce champ doit être renseigné <br />';
		erreur_email = '- Cette adresse e-mail est invalide <br />';
		erreur_codepostal = '- Ce champ doit comporter obligatoirement cinq chiffres <br />';
		erreur_chiffres = '- Ce champ ne doit pas comporter de chiffre <br />';
		erreur_charspec = '- Ce champ ne doit comporter aucun caractère spécial<br />';
		erreur_charspec_adr = '- Les champs d\'adresse ne doivent comporter aucun caractère spécial<br />';
			
		$('contact').observe('submit', function(evt)
		{
			evt.stop();
			var erreur = false;
			
			
			
			//Vérification de la validité des champs au fur et à mesure qu'ils sont remplis
			$('nom', 'prenom', 'ville').each(function(elt)
			{
				if(elt.id == 'nom') label_value = label_nom;
				if(elt.id == 'prenom') label_value = label_prenom;
				if(elt.id == 'ville') label_value = label_ville;
				
				if(EstVide(elt) || ComporteDesChiffres(elt) || ComporteDesCaracteresSpeciaux(elt))
				{
					var description_erreur = '';
					if(EstVide(elt)) description_erreur = erreur_champvide;
					if(ComporteDesChiffres(elt)) description_erreur = description_erreur + erreur_chiffres;
					if(ComporteDesCaracteresSpeciaux(elt)) description_erreur = description_erreur + erreur_charspec;
					
					elt.style.border = '1px solid #ec0000';
					$('lbl_' + elt.id).innerHTML = label_value + '<img onmouseover="Tip(\'' + description_erreur + '\', BGCOLOR, \'#ffffff\', BORDERCOLOR, \'#000000\', FONTCOLOR, \'#e31414\')" onmouseout="UnTip()" class="img-aide-rouge" src="images/png/aide-rouge.png" alt="Aide" title="Aide" />';
					
					erreur = true;
				}
				else
				{
					elt.style.border = '1px solid #ffffff';
					$('lbl_' + elt.id).innerHTML = label_value;
				}

			});
			
			//VERIFICATION DE L'E-MAIL
			var elt = evt.element();
			if(EstVide($('email')) || !EstUneAdresseMail($('email')))
			{
				var description_erreur = '';
				if(EstVide($('email'))) description_erreur = erreur_champvide;
				if(!EstUneAdresseMail($('email'))) description_erreur = description_erreur + erreur_email;
				
				$('email').style.border = '1px solid #ec0000';
				$('lbl_email').innerHTML = label_email + '<img onmouseover="Tip(\'' + description_erreur + '\', BGCOLOR, \'#ffffff\', BORDERCOLOR, \'#000000\', FONTCOLOR, \'#e31414\')" onmouseout="UnTip()" class="img-aide-rouge" src="images/png/aide-rouge.png" alt="Aide" title="Aide" />';
				
				erreur = true;
			}
			else
			{
				$('email').style.border = '1px solid #ffffff';
				$('lbl_email').innerHTML = label_email;
			}

			//CHAMPS CODE POSTAL
			if(EstVide($('codepostal')))
			{
				var description_erreur = erreur_champvide;
				
				$('codepostal').style.border = '1px solid #ec0000';
				$('lbl_codepostal').innerHTML = label_codepostal + '<img onmouseover="Tip(\'' + description_erreur + '\', BGCOLOR, \'#ffffff\', BORDERCOLOR, \'#000000\', FONTCOLOR, \'#e31414\')" onmouseout="UnTip()" class="img-aide-rouge" src="images/png/aide-rouge.png" alt="Aide" title="Aide" />';
				
				erreur = true;
			}
			else
			{
				$('codepostal').style.border = '1px solid #ffffff';
				$('lbl_codepostal').innerHTML = label_codepostal;
			}
			
			//MESSAGE
			if(EstVide($('message')))
			{
				var description_erreur = erreur_champvide;
				$('message').style.border = '1px solid #ec0000';
				$('lbl_message').innerHTML = label_message + '<img onmouseover="Tip(\'' + description_erreur + '\', BGCOLOR, \'#ffffff\', BORDERCOLOR, \'#000000\', FONTCOLOR, \'#e31414\')" onmouseout="UnTip()" class="img-aide-rouge" src="images/png/aide-rouge.png" alt="Aide" title="Aide" />';
			
				erreur = true;
			}
			else
			{
				$('message').style.border = '1px solid #ffffff';
				$('lbl_message').innerHTML = label_message;
			}
			
			
			//ADRESSE
			if(EstVide($('adresse1')) || ComporteDesCaracteresSpeciaux($('adresse1')))
			{
				var description_erreur = erreur_champvide;
				if(ComporteDesChiffres($('adresse1'))) description_erreur = description_erreur + erreur_chiffres;
				$('adresse1').style.border = '1px solid #ec0000';
				$('lbl_adresse1').innerHTML = label_adresse + '<img onmouseover="Tip(\'' + description_erreur + '\', BGCOLOR, \'#ffffff\', BORDERCOLOR, \'#000000\', FONTCOLOR, \'#e31414\')" onmouseout="UnTip()" class="img-aide-rouge" src="images/png/aide-rouge.png" alt="Aide" title="Aide" />';
				
				erreur = true;
			}
			else
			{
				$('adresse1').style.border = '1px solid #ffffff';
				$('lbl_adresse1').innerHTML = label_adresse;
			}
		
			if(!erreur)
			{
				$('contact').submit();
			}
		
		});
		
	}
	
	///////////////////////////////////////////////////////////////////////////////////////////////
	// PROTECTION DES IMAGES
	///////////////////////////////////////////////////////////////////////////////////////////////		
	
	// Retourne... rien !
	function rien(){ return false;}
	// Remplace l'événement "oncontextmenu" (typiquement un clic droit) sur toutes les balises IMG de la page
	var imgs = document.getElementsByTagName("img");
	for(var i=0; i<imgs.length; i++)
		imgs[i].oncontextmenu = rien;
	
///////////////////////////////////////////////////////////////////////////////////////////////
// NAVIGUATION DANS LES PHOTOS (book, inspirations, references)
///////////////////////////////////////////////////////////////////////////////////////////////	
	
/*	
	
	//NAVIGUATION DANS LES DOSSIER
	$$('.lien_vignette').each(function(lien_vignette){
		
		//Préchargement de la grande image
		img = new Image();
		img.src = lien_vignette.href;
		
		Event.observe(lien_vignette, 'click', function(evt){
			evt.stop();
			
			///////////////////////////////////////////////////////////////////
			//// INFORMATIONS
			///////////////////////////////////////////////////////////////////
			
			//Nombre total d'images
			var nb_images = Number(lien_vignette.name);
			//Image à afficher
			var chemin_image = lien_vignette.href;
			var id_image = lien_vignette.id;
			var tab_id = id_image.split('_');
			var id_image_texte = tab_id[0];
			var id_image_numero = Number(tab_id[1]);
			//Vignette de l'image à afficher
			var vignette = $(id_image).firstDescendant();
			var titre = vignette.title;
			var commentaire = vignette.alt;
			
			/////////////////////////////////////////////////////////////////
			//// CREATION DES ELEMENTS DE LA BOITE
			/////////////////////////////////////////////////////////////////				
			
			//L'image et ses dimension
			var image = new Element('img', {'id': 'boite-contenu-image', 'src': chemin_image, 'alt': '', 'title': ''});
			var assombrissement = new Element('div', {'id': 'assombrissement'});
			var boite = new Element('div', {'id': 'boite'});
			var boite_contenu = new Element('div', {'id': 'boite-contenu'});
			var boite_entete = new Element('div', {'id': 'boite-entete'});
			var entete_titre = new Element('div', {'id': 'boite-entete-titre'});
			var entete_fermer = new Element('a', {'id': 'boite-entete-fermer', 'href': '#'});
			var boite_droite = new Element('div', {'id': 'boite-droite'});
			var fleche_droite = new Element('a', {'id': 'fleche-droite', 'href': '#'});
			var boite_gauche = new Element('div', {'id': 'boite-gauche'});
			var fleche_gauche = new Element('a', {'id': 'fleche-gauche', 'href': '#'});
			var boite_entete = new Element('div', {'id': 'boite-entete'});
			var elt_commentaire = new Element('p', {'id': 'boite-contenu-commentaire'});
			
			/////////////////////////////////////////////////////////////////
			//// INSERTION DES ELEMENTS DE LA BOITE
			/////////////////////////////////////////////////////////////////
			
			//Protection image
			image.oncontextmenu = rien;
		
			entete_titre.innerHTML = titre;
			elt_commentaire.innerHTML = commentaire;
			
			//Insertion de la boite dans la page
			Element.insert(boite_gauche, fleche_gauche);
			Element.insert(boite_droite, fleche_droite);
			Element.insert($('entete'), {before: assombrissement});
			Element.insert(assombrissement, {after: boite});
			Element.insert(boite, boite_entete);
			Element.insert(boite_entete, entete_titre);
			Element.insert(boite_entete, entete_fermer);
			Element.insert(boite, boite_gauche);
			Element.insert(boite, boite_droite);
			Element.insert(boite, boite_contenu);
			Element.insert(boite_contenu, image);
			Element.insert(boite_contenu, elt_commentaire);
			
			/////////////////////////////////////////////////////////////////
			////AFFICHAGE DE LA BOITE
			/////////////////////////////////////////////////////////////////
			
			function afficherBoite(changement_image)
			{
				new PeriodicalExecuter(function(pe)
				{
					//On vérifie que l'image est chargée dans le cache
					var img_courante = new Image();
					img_courante.src = chemin_image;
					if(img_courante.complete)
					{
						pe.stop();
						
						var largeur_image = img_courante.width;
						var hauteur_image = img_courante.height;
						image.width = largeur_image;
						image.height = hauteur_image;
						
						//Détermination des dimensions de tous les éléments
						var boite_largeur = largeur_image + 50; //Largeur de la boite
						var boite_contenu_largeur = largeur_image; //Largeur du contenu de la boite
						var boite_entete_largeur = boite_largeur; //Largeur de l'entête de la boite
						var boite_entete_titre_largeur = boite_largeur - 25; //Largeur du titre de l'entête
						var boite_contenu_hauteur = hauteur_image + 33; //Hauteur du contenu de la boite = image + légende
						var boite_hauteur = hauteur_image + 63; //Hauteur de la boite
						var boite_gauche_hauteur = boite_contenu_hauteur; //hauteur pour le div de gauche (flèche)
						var boite_droite_hauteur = boite_contenu_hauteur; // hauteur pour le div de droite (flèche)
						var boite_fleches_paddingTop = (boite_droite_hauteur / 2) - 33/2;
						
						boite_entete.style.width = boite_entete_largeur + 'px';
						entete_titre.style.width = boite_entete_titre_largeur + 'px';
						boite.style.width = boite_largeur + 'px';
						boite_contenu.style.width = boite_contenu_largeur + 'px';
						boite_droite.style.height = boite_droite_hauteur + 'px';
						boite_droite.style.paddingTop = boite_fleches_paddingTop + 'px';
						boite_gauche.style.height = boite_gauche_hauteur + 'px';
						boite_gauche.style.paddingTop = boite_fleches_paddingTop + 'px';
						boite_contenu.style.height = boite_contenu_hauteur + 'px';
						boite.style.height = boite_hauteur + 'px';
								
						//Détermination de la position de la boite par rapport à la taille de la fenêtre
						var boite_margin_left = boite_largeur/2;
						var boite_margin_top = boite_hauteur/2;
						
						boite.style.marginLeft = '-' + boite_margin_left + 'px';
						boite.style.marginTop = '-' + boite_margin_top + 'px';
								
						var opacite = 0;
						var max_assombrissement = 0.7;
						var new_opacite = opacite;
						new PeriodicalExecuter(function afficher(pe2){
							new_opacite = opacite + 0.1;
							new_opacite.toFixed(1);
							max_assombrissement.toFixed(1);
							if(!changement_image) if(opacite <= max_assombrissement) assombrissement.setOpacity(opacite);
							boite.setOpacity(opacite);
							opacite = new_opacite;
							if(opacite >= 1) {
								pe2.stop();
							}
						}, 0.05);
					}
				});
			}
			
			function changerImage(prochain_numero)
			{
				//On détermine quelle image est la suivante				
				id_image_numero = prochain_numero;
				id_image = id_image_texte + '_' + id_image_numero;
				chemin_image = $(id_image).href;
				
				//Vignette de l'image à afficher
				vignette = $(id_image).firstDescendant();
				titre = vignette.title;
				commentaire = vignette.alt;
				
				cacherBoite(true);
				
			}
			
			function cacherBoite(changement_image)
			{
				var opacite = 0.9;
				var max_assombrissement = 0.7;
				var new_opacite = opacite;
				new PeriodicalExecuter(function afficher(pe){
					new_opacite = opacite - 0.1;
					new_opacite.toFixed(1);
					max_assombrissement.toFixed(1);
					if(!changement_image) if(opacite <= max_assombrissement) assombrissement.setOpacity(opacite);
					boite.setOpacity(opacite);
					opacite = new_opacite;
					if(opacite <= 0) {
						pe.stop();
						
						if(!changement_image){
							elt_commentaire.remove();
							entete_fermer.remove();
							entete_titre.remove();
							if($('fleche-droite')) $('fleche-droite').remove();
							if($('fleche-gauche')) $('fleche-gauche').remove();
							boite_gauche.remove();
							boite_droite.remove();
							boite_entete.remove();
							image.remove();
							boite_contenu.remove();
							boite.remove();
							assombrissement.remove();
						}
						else
						{
							entete_titre.innerHTML = titre;
							elt_commentaire.innerHTML = commentaire;
							image.src = chemin_image;
							image.oncontextmenu = rien;
							if(changement_image) afficherBoite(true);
						}
					}
				}, 0.05);
			}
			
			afficherBoite(false);
			
			//Navigation dans les images
			fleche_gauche.observe('click', function(evt){
				evt.stop();
				if(id_image_numero == 1) var prochain_numero = nb_images;
				else var prochain_numero = id_image_numero - 1;
				changerImage(prochain_numero);
			});
			
			fleche_droite.observe('click', function(evt){
				evt.stop();
				if(id_image_numero == nb_images) var prochain_numero = 1;
				else var prochain_numero = id_image_numero + 1;
				changerImage(prochain_numero);
			});
			
			//Fermeture
			entete_fermer.observe('click', function(evt){
				evt.stop();
				cacherBoite();
			})
			
			assombrissement.observe('click', function(evt){
				evt.stop();
				cacherBoite();
			})
			
		}); //Evènement click sur une vignette
	}); //Boucle parcours de vignettes
	
	*/
}

Event.observe(window, 'load', initialiserTout, false);