/* Fonctions utilsées sur font-vendome.fr */

/* Fonctions "standard" macromedia dreamweaver */
function MM_findObj(n, d) { //v4.01
  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);
  if(!x && d.getElementById) x=d.getElementById(n); 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;
    		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 V4 */
var Menu = new Class({
	Implements : Options,
	options : {
		showMinLevel : 0,
		hideDelay : 300,
		morph : {
			showStyles : {opacity:0.95},
			hideStyles : {opacity:0},
			options : {link:'cancel',duration:200}
		}
	},
	initialize: function(menu,options){
		this.setOptions(options);
		this.items = $(menu).getChildren('li');
		this.items.each(function(item,i){
			item.i = i;
			item.link = item.getElement('a');
			item.link.addEvent('focus',this.showItem.bind(this,[item]));
			item.submenu = item.getElement('ul');
			if (this.options.showMinLevel>0){
				if (item.submenu) item.submenu.setStyle('display','block');
			}else{
				item.addEvents({mouseenter:this.showItem.bind(this,[item]),mouseleave:this.hideItem.bind(this,[item])});
			}
			if (item.submenu){
				item.submenu.morph = new Fx.Morph(item.submenu,this.options.morph.options);
				var options = $merge(this.options);
				options.showMinLevel = options.showMinLevel-1;
				new Menu(item.submenu,options);
			}
		}.bind(this));
	},
	showItem : function(item){
		this.timer = $clear(this.timer);
		item.link.addClass('hover');
		if (item.submenu){
			item.submenu.morph.start(this.options.morph.showStyles).chain(function(){item.submenu.setStyle('display','block');}.bind(this));
		}
		this.items.each(function(otherItem,j){
			if (item.i!=j) this.hideItemNow(otherItem);
		}.bind(this));
	},
	hideItem : function(item){
		this.timer = $clear(this.timer);
		this.timer = this.hideItemNow.bind(this,[item]).delay(this.options.hideDelay);
	},
	hideItemNow : function(item){
		item.link.removeClass('hover');
		if (item.submenu){
			item.submenu.morph.start(this.options.morph.hideStyles).chain(function(){item.submenu.setStyle('display','none');}.bind(this));
		}
	}
});

/* Initalisation d'un article du catalogue après chargement sur la page ou en ajax */
var Article = new Class({
	initialize : function(element){
		element.getElements('#outils ul li a').each(function(lien){
			lien.addEvent('click',function(event){
				event.stop();
				$('loader').setStyle('display','block');
				var image = new Element('img');
				image.addEvent('load', function(){
					image.inject($('image').empty());
					$('loader').setStyle('display','none');
				});
				image.src = lien.href;
			});
		});
		var panorama = element.getElement('#outils #panorama a');
		if (panorama){
			panorama.addEvent('click',function(event){
				event.stop();
				//$('loader').setStyle('display','block');
				//var tmp = new Element('img');
				//tmp.addEvent('load', function(){
					var embed = new Element('embed',{
						'src':panorama.href,
						'wmode':'transparent',
						'pluginspage':'http://apple.com/quicktime/download/',
						'showlogo' : false
					});
					embed.inject($('image').empty());
					//$('loader').setStyle('display','none');
				//});
				//tmp.src = panorama.href;
			});
		}
		var en_savoir_plus = element.getElement('#outils #en_savoir_plus a').addEvent('click',function(event){
			event.stop();
			var description = $('description');
			description.setStyle('visibility',description.getStyle('visibility')=='hidden'?'visible':'hidden');
		});
	}
});

/* Initialisation de la page */
window.addEvent('domready', function() {
	/* Menu*/
	new Menu('menu');
	/* Liens vers les articles en Ajax */
	var article = $('article');
	if (article){
		new Article(article);
		$$('ul.articles li a').each(function(a){
			a.addEvent('click',function(event){
				event.stop();
				$('loader').setStyle('display','block');
				new Request.HTML({
					method: 'get',
					url: a.href,
					onComplete: function (responseTree,responseElements,responseHTML,responseJavaScript) {
						responseElements.each(function(element){
							if(element.get('id') == 'article'){
								element.replaces(article);
								article = element;
								new Article(article);
								$('loader').setStyle('display','none');
							}
						});
					}
				}).send();
			});
		});
	}
	/* Carte des concessionnaires */
	var points = $$('#carte li');
	var distributeurs = $$('#distributeurs li');
	if (points && distributeurs){
		points.each(function(point,i){
			point.addEvent('mouseover',function(){
				distributeurs.each(function(distributeur,j){
					distributeur.removeClass('selected');
					points[j].removeClass('selected');
				});
				point.addClass('selected');
				distributeurs[i].addClass('selected');
			});
		});
	}
});
