/* Scripts communs au site */

// Fonction pour afficher la carte Google Maps
function afficherCarte(texte,icone,adresse,zoom){
	var map = new GMap2(document.getElementById("map"));
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	var geocoder = new GClientGeocoder();
	geocoder.getLatLng(adresse,
		function(pt){
			if(icone!="") var tmp="<div><img src=\""+icone+"\" alt=\"logo\" />";
			else var tmp="</div>";
			tmp+="<p class=\"nom\">"+texte+"</p>";
			tmp+="<p class=\"addr\">"+adresse+"</p>";
			map.openInfoWindowHtml(pt,tmp);
			map.setCenter(pt, zoom);
		}
	);
}
// Fonctions macromedia
function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
function MM_validateForm() { //v3.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) {
  	test=args[i+2];
  	val=MM_findObj(args[i]);
    	if (val) {
    		nm=val.name;
		//alert(nm);
    		if (val.options){
    			if (val.options[val.selectedIndex].value=="")
    				errors+='- Vous devez choisir une valeur dans la boite de sélection '+nm+'.\n';
    		}else{
			if ((val=val.value)!="") {
				if (test.indexOf('isEmail')!=-1) {
					p=val.indexOf('@');
					if (p<1 || p==(val.length-1)) 
						errors+='- Le champ '+nm+' doit contenir une adresse mail valide.\n';
				} else if (test!='R') {
					num = parseFloat(val);
					if (val!=''+num)
						errors+='- Le champ '+nm+' doit contenir une valeur numérique.\n';
					if (test.indexOf('inRange') != -1) {
						p=test.indexOf(':');
						min=test.substring(8,p); max=test.substring(p+1);
						if (num<min || max<num)
						errors+='- Le champ '+nm+' doit contenir une valeur numérique comprise entre '+min+' et '+max+'.\n';
					}
				}
			} else if (test.charAt(0) == 'R')
				errors += '- Le champ '+nm+' est obligatoire.\n';
		}
    	}
  }
  if (errors)
  	alert('Le formulaire n\' a pas pu être validé pour les raisons suivantes :\n'+errors);
  document.MM_returnValue = (errors == '');
}
// Menu
var Menu={
	init: function(menu,aff){
		// Effet au survol su menu
		var a=$$("."+menu+" li a[id!=retour]");
		a.each(function(e){
			var myFx = new Fx.Morph(e,{'duration':100,'wait':false});
			e.addEvent("mouseover",function(){
				myFx.start({'color':'#201303','padding-left':'3px'});
			});
			e.addEvent("mouseleave",function(){
				myFx.start({'color':'#6b4210','padding-left':'0'});
			});
		});
		var retour=$("retour");
		var myFx = new Fx.Morph(retour,{'duration':100,'wait':false});
		retour.addEvent("mouseover",function(){
			myFx.start({'color':'#201303','padding-left':'15px'});
		});
		retour.addEvent("mouseleave",function(){
			myFx.start({'color':'#6b4210','padding-left':'20px'});
		});
		// Affichage dynamique des sous menus
		if(aff==null || aff=="menu"){
			$('retour').setStyle('display','none');
			aff="menu";
		}
		var slide = new Fx.Scroll($('contMenu'),{'duration':300}).toElement(aff);
		/*$('lienHistorique').addEvent("click",function(){
			$('retour').setStyle('display','block');
			slide.start(0, 0);
			return false;
		});
		$('lienMagasins').addEvent("click",function(){
			$('retour').setStyle('display','block');
			slide.start(0, 500);
			return false;
		});*/
		$('retour').addEvent("click",function(){
			$('retour').setStyle('display','none');
			slide.start(0, 1000);
			return false;
		});
	}
}
// Pulsation
var Pulse = function(element,from,to,number,delay){
	element.fade(to);
	if (number>0){
		setTimeout(function(){
			Pulse(element,to,from,number-1,delay);
		},delay);
	}
}
/* Gallery photo */
var Gallery = function (cssGallery){
	var gallery = $$(cssGallery);
	gallery.each(function(g){
		var photos = g.getElements("ul > li");
		var precedent = g.getElement('div.precedent');
		var suivant = g.getElement('div.suivant');
		var effets = new Array();
		photos.i = 0;
		if (photos.length>0) photos.w = photos[0].getWidth();
		photos.each(function(photo,i){
			photo.setStyle('margin-left',i>0?photos.w:0);
		});
		var afficher = function(i,sens){
			photos[i].setStyle('margin-left',(2*sens-1)*photos.w);
			photos[i].tween('margin-left',0);
		};
		var cacher = function(i,sens){
			photos[i].tween('margin-left',(2*sens-1)*photos.w);
		};
		if (precedent){
			precedent.addEvent('click', function(event){
				cacher(photos.i,1);
				photos.i = (photos.i+photos.length-1) % photos.length;
				afficher(photos.i,0);
			});
		};
		if (suivant){
			suivant.addEvent('click', function(event){
				cacher(photos.i,0);
				photos.i = (photos.i+1) % photos.length;
				afficher(photos.i,1);
			});
		};
	});
}
// Animation pour basculer entre le contenu principal et supplémentaire
var More={
	init: function(more){
		if($$(more)[0]==null) return false;
		// Effet au survol de la flêche
		var p=$$(more);
		p.each(function(e){
			var a = e.getElement("a");
			var w = a.getWidth()-10;
			var myFx = new Fx.Morph(a,{'duration':200,'wait':false}).set({'color': '#7b5220','background-position': w});
			a.addEvent("mouseover",function(){
				myFx.start({
					'color': '#201303',
					'background-position': w-5
				});
			});
			a.addEvent("mouseout",function(){
				myFx.start({
					'color': '#7b5220',
					'background-position': w
				});
			});
		});
		// Affichage du contenu supplémentaire au clic
		var slide = new Fx.Scroll($('contenu'),{'duration':200});
		var precedent=$$(".precedent")[0];
		var suivant=$$(".suivant")[0];
		$$('#plan a')[0].addEvent("click",function(){
			slide.toElement($('supplementaire'));
			if (precedent) precedent.setStyle("display", "none");
			if (suivant) suivant.setStyle("display", "none");
			$('retourp').setStyle('display','block');
		});
		$$('#retourp a')[0].addEvent("click",function(){
			slide.toElement($('principal'));
			if (precedent) precedent.setStyle("display", "block");
			if (suivant) suivant.setStyle("display", "block");
			$('retourp').setStyle('display','none');
		});
	}
}
// Animation des marques
var cadre,centre;
var Marques={
	init: function(marques){
		var ul=$$(marques)[0];
		if(ul==null) return false;
		var li=ul.getElements('li');
		li.each(function(e){
			e.set({'opacity':'0.0001'});
			var lien = e.getChildren('a')[0];
			if (lien && lien.rel){
				lien.target = 'marque';
				lien.addEvents({
					'mouseover' : function(){
						this.setStyle('background','url(/images/fleche_droite_roll.gif) no-repeat right');
						Marques.afficherImage(this);
					},
					'mouseout' : function(){
						this.setStyle('background','none');
						Marques.cacherImage();
					}
				});
			}
		});
		Marques.afficherSuivant(li,0);
		// Cadre pour afficher les photos des marques
		centre = $('centre');
		cadre = new Element('span', {
		    'class': 'cadre',
			'styles': {
				'opacity' : 0
			}
		}).inject(document.body);
	},
	// Affichage progressif des marques
	afficherSuivant: function(li,i){
		var myFx = new Fx.Morph(li[i],{'duration':500,'wait':false});
		myFx.start({'opacity':'1'});
		i++;
		if(i<li.length)
			setTimeout(function(){Marques.afficherSuivant(li,i)},70);
	},
	// Charger l'image et afficher le cadre
	afficherImage: function(a){
		var image = new Element('img',{
			'src' : a.rel,
			'alt' : a.text
		}).inject(cadre);
		cadre.setStyles({
			'left' : centre.getPosition().x+centre.getWidth(),
			'top' : a.getPosition().y,
			'display' : 'block'
		});
		cadre.tween('opacity',1);
	},
	// Cacher  et vider le cadre
	cacherImage: function(){
		cadre.tween('opacity',0);
		//cadre.setStyle('display','none');
		cadre.empty();
	}
}
// Initialisation de la page
window.addEvent('domready', function() {
	Menu.init(".menu",menu);
	More.init(".more");
	Gallery(".diaporama");
	// Déflimement de l'image panoramique
	var panorama = $('panorama');
	if (panorama){
		var pano = new mooVirtualPano (panorama,panorama.getElement('div'),{tb:false,inertie:100});
		setTimeout(function(){pano.toLeft(1);},2000);
		panorama.addEvent('mouseleave',function(){pano.stop();pano.toLeft(1);});
	}
	// Animation de la page d'accueil
	var logo_accueil = $('logo_accueil');
	if (logo_accueil){
		logo_accueil.setStyle('opacity',0);
		var fx = new Fx.Morph(logo_accueil,{'duration':4000,'wait':false});
		fx.start({'opacity':'1'});
	}else{
		Marques.init(".marques");
	}
});