/* Interactions sur le site somatherm.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;
		//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 avec slider */
var Menu = new Class({
	initialize : function(menu,slider){
		this.menu = $(menu);
		if (menu){
			this.items = menu.getChildren('li');
			this.slider = $(slider);
			if (this.items && this.slider){
				this.slider.setStyle('opacity',0);
				this.slider.set('morph',{duration:100, wait:false});
				this.items.each(function(item){
					item.a = item.getFirst('a');
					item.div = item.getFirst('div');
					if (item.div){
						item.div.slide('hide');
						item.div.getParent().setStyle('display','block'); // Display slider container
						item.div.setStyle('display','block');
					}
					item.addEvents({
							mouseenter : function(){
								this.slider.morph({
									'left' : [item.a.getLeft()+(item.a.getWidth()-this.slider.getWidth())/2],
									'opacity': 1
								});
								if (item.div) item.div.slide('in');
								this.items.each(function(otherItem){
									if (otherItem!=item && otherItem.div) otherItem.div.slide('out');
								});
							}.bind(this),
							mouseleave : function(){
								this.slider.morph({
									'opacity': 0
								});
								if (item.div) item.div.slide('out');
							}.bind(this)
					});
					if (item.a){
						item.a.addEvent('focus',function(){
							item.fireEvent('mouseenter');
						}.bind(this));
					}
				}.bind(this));
			}
		}
	}
});

/* AjaxBox */
var AjaxBox = new Class({
	Implements : [Options, Events],
	options : {
		url : null,
		onComplete : function(){AjaxBox.container.removeClass('loading');}
	},
	initialize : function(options){
		this.setOptions(options);
		if (!AjaxBox.overlay){
			AjaxBox.overlay = new Element('div',{id:'AjaxBox_overlay'});
			$(document.body).grab(AjaxBox.overlay);
		}
		if (!AjaxBox.container){
			AjaxBox.container = new Element('div',{id:'AjaxBox_container'});
			//AjaxBox.container.addEvent('click',this.close.bind(this));
			$(document.body).grab(AjaxBox.container);
		}
		if (this.options.url){
			AjaxBox.container.empty();
			AjaxBox.overlay.setStyle('display','block');
			AjaxBox.container.setStyle('display','block');
			var tmp = new Element('div');
			AjaxBox.container.addClass('loading');
			tmp.set('load',{
				onComplete : function(){
					AjaxBox.container.set('html',tmp.get('html'));
					AjaxBox.container.getElements('.close').addEvent('click',function(e){
						e.stop();
						this.close();
					}.bind(this));
					AjaxBox.scan(AjaxBox.container,options);
					this.fireEvent('complete');
				}.bind(this)
			});
			tmp.load(this.options.url);
		}
	},
	close : function(){
		AjaxBox.overlay.setStyle('display','none');
		AjaxBox.container.setStyle('display','none');
	}
});
AjaxBox.scan = function(element,options) {
	element.getElements('a').filter(function(el) {
		return el.rel && el.rel.test(/^ajaxbox/i);
	}).each(function(el){
		el.addEvent('click',function(e){
			e.stop();
			options.url = el.href;// options = $extend({url:el.href}, options);
			new AjaxBox(options);
		});
	});
};
AjaxBox.overlay = null;
AjaxBox.container = null;

/* Fonction personnalisée pour initialiser l'AjaxBox */
AjaxBox.myInit = function(){
	/* Images panoramiques */
	if (typeof('mooVirtualPano')!='undefined'){
		var panorama = $$('.panorama')[0];
		var produits = $$('table.produits')[0];
		produits.size = produits.getSize();
		var div = panorama.getElement('div');
		panorama.center = function(){
				panorama.size = panorama.getSize();
				div.size = div.getSize();
				div.setStyle('left',(panorama.size.x-div.size.x)/2);
				div.setStyle('top',(panorama.size.y-div.size.y-produits.size.y)/2);
		}
		panorama.center();
		div.getElement('img').addEvents({
			load : function(){
				panorama.center();
				AjaxBox.container.removeClass('loading');
				div.getElement('img').setStyle('visibility','visible');
			},
			click : function(){
				panorama.toggleClass('enable');
				if (panorama.hasClass('enable')){
					panorama.pano = new mooVirtualPano(panorama,div,{loop:false});
				}else{
					panorama.pano.stop();
					panorama.removeEvents();
				}
				panorama.center();
			}
		});
	}
	/* Tableaux triables */
	if (typeof('sortableTable')!='undefined'){
		sortableTable.scan();
	}
}

/* Initialiser la page */
window.addEvent('domready', function() {
	/* Menu */
	var menu = new Menu($$('#haut ul.menu')[0],$('slider'));
	/* Diaporamas */
	$$('.diaporama').each(function(diaporama){
		var url = '';
		diaporama.getElements('img').each(function(img){
			url+= 'url[]='+img.get('src')+'&';
		});
		new Swiff('/swf/imagerotator.swf',{
			container : diaporama,
			width : diaporama.getStyle('width').toInt(),
			height : diaporama.getStyle('height').toInt(),
			vars : {
				width : diaporama.getStyle('width').toInt(),
				height : diaporama.getStyle('height').toInt(),
				file : '/imagerotator.xml?'+url,
				transition : 'fade', // fade,bgfade,slowfade
				shownavigation : false,
				overstretch : true,
				screencolor : 0xFFFFFF
			}
		});
	});
	/* Accueil */	
	var accueil = $('accueil');
	if (accueil){
		accueil.getElements('#contenu ul.menu li').each(function(li){
			li.setStyle('margin-top','-5px');
			li.set('tween',{duration:100});
			var a = li.getElement('a');
			a.set('tween',{duration:100});
			li.addEvents({
				mouseenter: function(e){
					li.tween('margin-top',0);
					a.tween('opacity',0.01);
				},
				mouseleave: function(e){
					li.tween('margin-top','-5px');
					a.tween('opacity',1);
				}
			});
		});
	}
	/* Catalogue */
	var catalogue = $('catalogue');
	if (catalogue){
		catalogue.getElements('ul.produits li a').each(function(a){
			a.span = a.getElement('span');
			a.span.set('morph',{duration:200, wait:true});
			a.addEvents({
				mouseenter : function(e){
					a.span.morph({
						height : '78px',
						'padding-top' : '10px'
					});
				},
				mouseleave : function(e){
					a.span.morph({
						height : '0',
						'padding-top' : '0'
					});
				}
			});
		});
		AjaxBox.scan(catalogue,{onComplete : AjaxBox.myInit});
	}
	/* E-Catalogue */
	var pageflip = $('pageflip');
	if (pageflip){
		new Swiff('/swf/Magazine.swf',{
			container : pageflip,
			width : pageflip.getStyle('width').toInt(),
			height : pageflip.getStyle('height').toInt(),
			vars : {
				xml : '/pageflip.xml?catalogue='+pageflip.rel
			},
			params : {
				allowFullScreen : true
			}
		});
	}
	/* Contact */
	var contact = $('contact');
	if (contact){
		new GoogleMaps($('googlemaps'),{
			markers : [{
				lat:45.1826591,
				lng:0.7173867,
				address:'13, place Francheville 24052 Périgueux',
				text:'<strong>SOMATHERM</strong><br/>13, place Francheville<br/>24052 P&eacute;rigueux<br/><br/>T&eacute;l : 05 53 02 69 70<br/>Fax : 05 53 03 94 48',
				events : {
					click:function(){
						this.openInfoWindowHtml(this.marker.text);
					}
				}
			}],
			icon : {
				image : "/images/logo_googlemaps.png",
				shadow : "/images/ombre_googlemaps.png",
				iconSize : new GSize(40, 39),
				shadowSize : new GSize(66, 42)
			},
			zoom : 8
		});
	}
	/* Editeurs textes */
	if (typeof('nicEditor')!='undefined'){
		$$('textarea.editable').each(function(textarea){
			var div = new Element('div',{'class':'editable'});
			textarea.getParent().grab(div);
			div.grab(textarea);
			new nicEditor().panelInstance(textarea.id);
		});
	}
	/* Sélecteur de dates */
	if (typeof('DatePicker')!='undefined'){
		$$('input.date').each(function(input){
			var div = new Element('div');
			input.getParent().grab(div);
			div.grab(input);
			new DatePicker(input);
		});
	}
	/* Tableaux triables */
	if (typeof('sortableTable')!='undefined'){
		sortableTable.scan = function(){
			$$('table').each(function(table){
				new sortableTable(table);
			});
		}
		sortableTable.scan();
	}
	/* AjaxBox dans le body (page produit hors Ajax) */
	var ajaxBody = $$('body#AjaxBox_container');
	if (ajaxBody.length>0){
		AjaxBox.container = ajaxBody[0];
		AjaxBox.myInit();
	}
});
