/**
 * @author florent.martin
 */
Event.observe(window, 'load', chargementPageGlobal);
var clickedElem = '';

function chargementPageGlobal() {
	window.status = ' '; // Pour ne pas voir s'afficher les chargements d'images dans la barre de statut sous IE.
	//Event.observe($('imgLogo'), 'click', function(){location.href = '/';});
	Event.observe($('divMenu'), 'click', gestionMenu);
	Event.observe($('divContact'), 'click', gestionContact);
	Event.observe($('divMenu'), 'mouseover', hoverMenu);
	Event.observe($('divMenu'), 'mouseout', outMenu);
	$('divSlideRealisations').setOpacity(0.7);
	$('divSlideProjets').setOpacity(0.7);
}

function gestionMenu(evt) {
	//if (!evt.element().id) return;
	if (evt.element().id == 'divMenu') return;
	var elem = evt.element();
	var elemId = elem.id;
	if ((elemId == 'imgMenuCadShop') || (elemId == 'imgMenuPrestations') || (elemId == 'imgMenuCadShop')) return;
	//alert(elemId + '\r\n' + clickedElem + '\r\n' + actMenu);
	if ((elemId == clickedElem) && (actMenu != clickedElem)) return;
	$('divContact').style.display = 'block';
    var ids = 'divDetail divAgenceCad divRealisations divProjets divPrestations divCadShop divInnerCadShop divInnerAgenceCad divInnerPrestations';
    $w(ids).each(function(node){ if ($(node)) $(node).style.visibility = 'hidden' }); // Je cache tous les themes
    if ($('spanLabel')) $('spanLabel').style.display = 'none';
    if ($('spanTitreImage'))
		$('spanTitreImage').style.display = 'none';
	//alert(elemId.match(/^imgMenu(.*)$/i)[1]);
	var elemName = elemId.match(/^imgMenu(.*)$/i)[1];
	dispMenu(elemId);
	stopSlideShow();
	switch (elemName) {
		case 'AgenceCad':
			break;
		case 'Prestations':
			break;
		default : 
			$('div' + elemName).style.visibility = 'visible';
			Effect.SlideRight('divSlide' + elemName, {scaleMode: 'box' });
			Effect.Appear('divInnerSlide' + elemName, {from:0, to:1, delay: 1});
	}
	if ($('divInnerSlide' + elemName)) $('divInnerSlide' + elemName).hide();
	if ($('tableNavigBar')) $('tableNavigBar').hide();
	if ($('divLabel')) $('divLabel').hide();
	clickedElem = elemId;
}
function hoverMenu(evt) {
	if (!evt.element().id) return;
	var elem = evt.element();
	var elemId = elem.id;
	//alert(elemId + '\r\n' + clickedElem);
	if (elemId == clickedElem) return;
	if (!elemId.match(/^imgMenu(.*)$/i)) return;
	var elemName = elemId.match(/^imgMenu(.*)$/i)[1];
	$(elemId).src = '/images/menu' + elemName + 'Hover.png';
}
function outMenu(evt) {
	if (!evt.element().id) return;
	var elem = evt.element();
	var elemId = elem.id;
	//alert(elemId + '\r\n' + clickedElem);
	if (elemId == clickedElem) return;
	if (!elemId.match(/^imgMenu(.*)$/i)) return;
	var elemName = elemId.match(/^imgMenu(.*)$/i)[1];
	$(elemId).src = '/images/menu' + elemName + '.png';
}

function dispMenu(elemId) {
	var elemName = elemId.match(/^imgMenu(.*)$/i)[1];
	if (clickedElem.match(/^imgMenu(.*)$/i)) {
		var clickedElemName = clickedElem.match(/^imgMenu(.*)$/i)[1];
		$(clickedElem).src = '/images/menu' + clickedElemName + '.png';
	}
	$(elemId).src = '/images/menu' + elemName + 'Hover.png';
}

function slideShow(idDomParentSlideShow, arrayImages, mixDelay, slideDelay) {
	var domParentSlideShow = $(idDomParentSlideShow);
	var firstImg = true; // Pour pouvoir changer de sens (alternance de domImg1->domImg2 et domImg2->domImg1)
	var step = 0;
	mixDelay = mixDelay || 3.0; // Durée du fondu enchainé
	slideDelay = slideDelay || 6; // Durée d'affichage de chaque image en secondes
	
	// Je crée les deux noeuds "image".
	if ($('diapoSlide1')) $('diapoSlide1').remove();
	if ($('diapoSlide2')) $('diapoSlide2').remove();
	
	//var margin = "17px";
	var domImg1 = document.createElement('img');
	domImg1.id = 'diapoSlide1';
	//domImg1.style.top = margin;
	//domImg1.style.left = margin;
	domParentSlideShow.appendChild(domImg1);
	domImg1 = $(domImg1);
	domImg1.setOpacity(0);
	var domImg2 = document.createElement('img');
	domImg2.id = 'diapoSlide2';
	//domImg2.style.top = margin;
	//domImg2.style.left = margin;
	domParentSlideShow.appendChild(domImg2);
	domImg2 = $(domImg2);
	domImg2.setOpacity(0);
	
	// J'affiche la première image
	domImg1.src = arrayImages[step];

	new Effect.Opacity(domImg1.id, { duration: mixDelay, from: 0, to: 1 });
	slideShowInterval = setInterval("this.slide()", slideDelay * 1000);
	
	this.slide = function() {
		step = step + 1;
		if (step >= arrayImages.length) step = 0;
		//alert(step);
		if (firstImg) {
			domImg2.src = arrayImages[step];
			new Effect.Opacity(domImg1.id, { duration: mixDelay, from: 1, to: 0 });
			new Effect.Opacity(domImg2.id, { duration: mixDelay, from: 0, to: 1 });
		} else {
			domImg1.src = arrayImages[step];
			new Effect.Opacity(domImg2.id, { duration: mixDelay, from: 1, to: 0 });
			new Effect.Opacity(domImg1.id, { duration: mixDelay, from: 0, to: 1 });
		}
		firstImg = !firstImg;
		//setTimeout("this.slide()", slideDelay * 1000);
	}
}
function stopSlideShow() {
	if (typeof slideShowInterval != 'undefined') clearInterval(slideShowInterval);
}
function preload(strimagesArray, followingFunction, afterFirst){
	var imagesArray = strimagesArray;
	var tmpImageIndex = 0; // l'index de l'image à charger	
	var waitTime = 20;
	var tmpImage = null;
	if (imagesArray.length == 0) {
		if (followingFunction) 	eval(followingFunction + '()');
		return;
	}
	loadImage();
	
	this.wait = function() {waitLoading();}
	
	function waitLoading() {
		if (tmpImage.complete) { // Si l'image en cours est chargée, je passe à la suivante
			//alert('Image chargée : ' + imagesArray[tmpImageIndex]);
			tmpImageIndex = tmpImageIndex + 1;
			loadImage();
		} else { // Si l'image n'est pas encore chargée, je rapelle la même fonction dans un court instant
			setTimeout("this.wait()", waitTime);
		}
	}
	function loadImage() {
		tmpImage = new Image();
		if (afterFirst == true) {
			if (tmpImageIndex == 1) {
				if (followingFunction) 	eval(followingFunction + '()');
			}
			if (tmpImageIndex >= imagesArray.length) {
				return;
			}
		}
		else {
			if (tmpImageIndex >= imagesArray.length) {
				if (followingFunction) 	eval(followingFunction + '()');
				return;
			}
		}
		tmpImage.src = imagesArray[tmpImageIndex];
		waitLoading();
	}
}
function gestionContact(evt) {
	if (!evt.element().id) return;
	var elem = evt.element();
	var elemId = elem.id;
	$('divMasque').setOpacity(0.8);
	$('divMasque').style.visibility = "visible";
	$('divCadreContact').style.visibility = "visible";
	//alert(elemId);
	Event.observe($('closeCadreContact1'), 'click', closeContact);
	Event.observe($('closeCadreContact2'), 'click', closeContact);
	$('lienMail').href = 'mail' + 'to:ag' + 'ence' + '@ag' + 'en' + 'ce-cad.com';
	$('lienMail').innerHTML = 'ag' + 'ence' + '@ag' + 'en' + 'ce-cad.com';
	
	
	if (elemId == 'lienPlanSite') {divToShow = 'divInnerCadrePlanSite'}
	else if (elemId == 'lienContact') {divToShow = 'divInnerCadreContact'}
	else if (elemId == 'imgNousContacter') {divToShow = 'divInnerCadreContact'}
	
	new Effect.Morph('divCadreContact', {style: 'height: 700px; top: 100px', duration: 1, delay: 0.5, afterFinish: function()
		{new Effect.Morph('divCadreContact', {style: 'width: 600px; margin-left: -300px', duration: 1, afterFinish: function() 
				{
					$(divToShow).style.display = "block";
					if (divToShow == 'divInnerCadreContact') $('Nom').focus();
				}
			})
		}
	});
	document.observe('keydown', (function(event) { 
		var keycode = event.keyCode;
		if (keycode == 27) {closeContact();} //Esc
	}));
	//Event.observe($('divMasque'), 'click', closeContact);
}

function closeContact(evt) {
	Event.stopObserving($('closeCadreContact1'), 'click', closeContact);
	Event.stopObserving($('closeCadreContact2'), 'click', closeContact);
	Event.stopObserving($('divMasque'), 'click', closeContact);
	$('divInnerCadreContact').style.display = "none";
	$('divInnerCadrePlanSite').style.display = "none";
	$('divCadreContact').style.visibility = "hidden";
	$('divCadreContact').style.width = "100px";
	$('divCadreContact').style.top = "350px";
	$('divCadreContact').style.height = "100px";
	$('divCadreContact').style.marginLeft = "-50px";
	$('divMasque').style.visibility = "hidden";
	$('SentForm').style.display = "none";
	$('Contactform').style.display = "block";
}

function validContactForm() {
		var Erreur = '';
		var NomVal = $('Nom').value;
		if (NomVal.match(/^\s*$/i)) Erreur += 'Le nom ne doit pas être vide.<br>';
		var VousEtesVal;
		var VousEtesParticulier = $('VousEtesParticulier').checked;
		var VousEtesProfessionnel = $('VousEtesProfessionnel').checked;
		if (VousEtesParticulier) VousEtesVal = 'Particulier';
		else if (VousEtesProfessionnel) VousEtesVal = 'Professionnel';
		else VousEtesVal = '';
		var TypeProjetVal = $('TypeProjet').value;
		var TelephoneVal = $('Telephone').value;
		if (TelephoneVal.match(/[^-+() .0-9]/i)) Erreur += 'Le n° de téléphone ne semble pas valide.<br>';
		var MailVal = $('Mail').value;
		if ((MailVal != '') && (!MailVal.match(/^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/i))) Erreur += 'L\'adresse Mail ne semble pas être valide.<br>';
		if ((TelephoneVal.match(/^\s*$/i)) && (MailVal.match(/^\s*$/i))) Erreur += 'Vous devez saisir au moins votre n° de téléphone ou votre Mail.<br>';
		var MessageVal = $('Message').value;
		if (MessageVal.match(/^\s*$/i)) Erreur += 'Le message ne doit pas être vide.<br>';
		
		if (Erreur != '') {
			$('spanErreur').innerHTML = Erreur;
			vibreCadreContact(5, 10);
			return;
		}

		$('spanErreur').innerHTML = '';
		params = new Object();
		params = $H(params);
		params.set('Nom',NomVal);
		params.set('VousEtes',VousEtesVal);
		params.set('TypeProjet',TypeProjetVal);
		params.set('Telephone',TelephoneVal);
		params.set('Mail',MailVal);
		params.set('Message',MessageVal);
		function valid(retour) {
			//if (retour != "Ok") {alert(retour);} else  {
				//alert("Mise à jour effectuée !");
				$('SentForm').style.display = "block";
				$('Contactform').style.display = "none";
			//} ;
		}
		ajaxRequest("ContactValid.php", valid, params, false, true, false);


}

function vibreCadreContact(largeur, iterations, iterateur) {
	if (!largeur) largeur = 5;
	if (!iterations) iterations = 10;
	if (!iterateur) iterateur = 0;
	if (iterateur > iterations ) return;
	var sens = ((iterateur % 2) == 0) ? -1 : 1;
	window.setTimeout("vibreCadreContact(" + largeur + "," + iterations + "," + (iterateur+1) + ")", 50  );
	$('divCadreContact').style.marginLeft = '-' + (300 + ((sens * largeur))) + 'px';
}


/**
 * @id ajaxRequest
 */
function ajaxRequest(url, returnFunction, data, json, post, lock, js, xml)
{
	if (!url)
		return false;
	if (!returnFunction)
		return false;
	if ((json != true) || (json === ""))
		json = false;
	if ((js != true) || (js === ""))
		js = false;
	if ((post != false) || (post === ""))
		post = true;
	if ((lock != true) || (lock === ""))
		lock = false;
	if ((xml != true) || (xml === ""))
		xml = false;
	if (lock == true)
	{
		createNode(document.body, 'div', {style: {background: 'white', position: 'absolute', top: 0, left: 0, height: '100%', width: '100%'}}, 'divMasque_ajaxRequest');
		$('divMasque_ajaxRequest').setStyle({opacity: '0'});
	}

	params = new Object();
	params = $H(params);
	if (js == true) params.set('evalScripts', true);
	if (post == false)
		params.set('method','get');
	else
		params.set('method','post');
	dataQS = $H(data).toQueryString();
	dataQS = dataQS.replace(/%E2%82%AC/gi, '%26euro%3B'); // Gestion du signe EURO !!
	if ((dataQS) && (post == false))
		params.set('parameters',dataQS);
	else if ((dataQS) && (post == true))
		params.set('postBody',dataQS);
	params = params.merge($H({onComplete: function(req)
											{
												if (json == true) 
												{
													var objetRetourAjax = $A(eval(req.responseText)); // Création d'un tableau de type Prototype $A() en évaluant la réponse Ajax, et positionnement sur le premier et unique élément du tableau
													if (objetRetourAjax[0]['phpError'])
														var res = objetRetourAjax[0];
													else
														var res = objetRetourAjax;
												}
												else if (xml == true) {
													res = req.responseXML;
												}
												else
													res = req.responseText;
												if (lock == true) 
													$('divMasque_ajaxRequest').remove();
												eval(returnFunction)(res);
											}
	}));
	new Ajax.Request(url, params.toObject());
	
	return true;
}
