var NavTop = Class.create();
NavTop.prototype = 
{
    initialize: function(){
		var b = $("basket");
		if (b&&b.className.indexOf("myBasketOn")==-1) {			
			Event.observe(b,"mouseover",function (){ Element.addClassName(b,"myBasketOn") });
			Event.observe(b,"mouseout",function (){ Element.removeClassName(b,"myBasketOn") });
		}
		$$('#navTop p').each(this.addEvent.bindAsEventListener(this));
    },
	
	addEvent: function(o){
		Event.observe(o, 'mouseover',this.show.bind(this,o));
		Event.observe(o, 'mouseout',this.hide.bind(this));		
		if(Element.next(o)){
			Event.observe(Element.next(o), 'mouseover',this.show.bind(this,o));
			Event.observe(Element.next(o), 'mouseout',this.hide.bind(this));
		}
	},

    show: function(o){
		this.hide();
		o.addClassName('on');
		if(Element.next(o)){ Element.next(o).style.visibility="visible";rescueFrame(Element.next(o)); }
	},
	
	hide: function(){
		$$('#navTop ol').each(function(e){ e.style.visibility="hidden"; });		
		$$('#navTop p').each(function(e){ e.removeClassName('on'); });
	}
 };
 


 
 
/////////////////// Navleft.js
 
 var NavLeft = Class.create();
NavLeft.prototype = 
{
    initialize: function(){
		var posTop = 0;
		var heightLay = 0;
		this.tID = '';
		this.tempo = 500;
		this.tabSelect = new Array();
		
		$$('#navLeft li').each(this.addEvent.bindAsEventListener(this));
		
		Event.observe($('navLeft'), 'mouseover',this.showEvent.bind(this));
		Event.observe($('navLeft'), 'mouseout',this.hideEvent.bind(this));
    },

	addEvent: function(e){
		var c = Element.up(e).className;
		e.rel = c.substring(1,2);
		
		if(c == "n1"){
			this.addEventFirstLevel(e);
		}
		else{
			this.addEventSecondLevel(e);
		}
	},
	
	addEventFirstLevel: function(e){
		var e = e.getElementsByTagName('a')[0];
		Event.observe(e, 'click',this.show.bind(this,e));
	},
	
	addEventSecondLevel: function(e){
		var a = e.getElementsByTagName('a')[0];
		Event.observe(a, 'click',this.showLayer.bind(this,e));
		
		Event.observe(Element.up(e), 'mouseover',this.showEvent.bind(this));
		Event.observe(Element.up(e), 'mouseout',this.hideEvent.bind(this));
	},
	
	show: function(e){
		this.hide();
		this.hideLayer(e);
		
		if(Element.next(e)){
			Element.next(e).addClassName('on');
			e.addClassName('open');
		}
		else{
			e.addClassName('on');
		}
	},
	
	hide: function(){
		$$('#navLeft ol').each(function(e){
			e.removeClassName('on');
		});
		
		$('navLeft').childElements().each(function(e){
			var e = e.getElementsByTagName('a')[0];
			e.removeClassName('open');
			e.removeClassName('on');
		});
	},
	
	showLayer: function(e){
		if(!e) return;
		this.hideLayer(e);
		
		if(e.rel == 2){
			var isSelect = false;
			for(var i in this.tabSelect){
				if(this.tabSelect[i] == e){
					isSelect = true;
					break;
				}
			}
			if(isSelect){
				for(var i=0;i<this.tabSelect.length;i++){
					if(this.tabSelect[i]) this.deployLayer(this.tabSelect[i]);
				}
				return;
			}
			else{
				this.tabSelect.splice(1,this.tabSelect.length-1);
			}
		}
		this.deployLayer(e);
		this.tabSelect[e.rel-1] = e;
	},
	
	deployLayer: function(e){
		var a = e.getElementsByTagName('a')[0];
		a.addClassName('on');
		
		if(Element.next(a)){
			Element.next(a).addClassName('on');
			
			if(Element.up(e).className.indexOf("n2") != -1){
				posTop = this.getAbsoluteTop(a);
				Element.next(a).style.top = posTop+"px";
				Element.next(a).style.left = this.getAbsoluteLeft(a)+Element.getWidth(Element.next(a))-12+"px";
			}
		}
	},
	
	hideLayer: function(o){
		for(var i in this.tabSelect){
			var e = this.tabSelect[i];
			if(e.rel >= o.rel ){
				var a = e.getElementsByTagName('a')[0];
				if(!o.init) a.removeClassName('on');

				if(Element.next(a)){
					Element.next(a).removeClassName('on');
				}
			}
		}
		heightLay = 0;
	},
	
	getAbsoluteTop:function(o){
		var x = o;
		xTop = x.offsetTop;		 
		
		while(x.offsetParent!=null) {
			xParent = x.offsetParent;
			xTop += xParent.offsetTop;
			x = xParent;
		}
		return xTop;
	},
	
	getAbsoluteLeft:function(o){
		var x = o;
		xLeft = x.offsetLeft;		 
		
		while(x.offsetParent!=null) {
			xParent = x.offsetParent;
			xLeft += xParent.offsetLeft;
			x = xParent;
		}
		return xLeft;
	},
	
	showEvent: function(o){
		clearTimeout(this.tID);
	},
	
	hideEvent: function(){
		clearTimeout(this.tID);
		this.tID = setTimeout(this.hideAll.bind(this),this.tempo);
	},
	
	hideAll: function(){
		this.hideLayer({rel:2,init:true});
	},
	
	select: function(o){
		$$('#navLeft li').each(this.showSelect.bindAsEventListener(this,o));
	},
	
	showSelect: function(e,o){
		try {
			if(o.descendantOf(e)){
				var a = e.getElementsByTagName('a')[0];
				a.addClassName('on');

				this.tabSelect[e.rel-1] = e;
				
				if(Element.next(a) && e.rel<2){
					Element.next(a).addClassName('on');
				}
				
			}
		}
		catch(e)
		{}
		
	}
 };
 
 
 
////////////////// BoxProdInfo.js

BoxProdInfo = Class.create();

BoxProdInfo.prototype = {

 initialize: function (navNodes,contentNodes) {
 this.oldId = -1;
 this.navNodes = navNodes;
 this.contentNodes = contentNodes;
 for (var i=0;i<navNodes.length;i++) {
 Event.observe(navNodes[i],"click",this.show.bind(this,i));
 this["roll"+i] = new RollCMS(navNodes[i]);
 this["roll"+i].lock();
 }
 this.show(0);
 },

 show: function (id) {
 this.contentNodes[id].style.display = "block";
 Element.addClassName(this.navNodes[id].parentNode.parentNode,"on");
 this["roll"+id].manual(1);
 if (this.oldId!=-1&&this.oldId!=id) {
 this.contentNodes[this.oldId].style.display = "none";
 Element.removeClassName(this.navNodes[this.oldId].parentNode.parentNode,"on");
 this["roll"+this.oldId].manual(0);
 }
 this.oldId = id;
 }

}




//////////////// ProductQuantity.js

ProductQuantity = Class.create();

ProductQuantity.prototype = {
	
	initialize: function (container,onChangeFunction) {
		this.onChangeFunction = onChangeFunction;
		Event.observe(container.getElementsByTagName("a")[0],"click",this.modifyArticleQuantity.bind(this,-1));
		Event.observe(container.getElementsByTagName("a")[1],"click",this.modifyArticleQuantity.bind(this,1));
		this.input = container.getElementsByTagName("input")[0];
		Event.observe(this.input,"blur",this.modifyArticleQuantity.bind(this,0));
	},
	
	modifyArticleQuantity: function (quantity) {
		var n = Number(this.input.value) + quantity;
		if (n>=1) { this.input.value = n; }
		if (this.onChangeFunction) { this.onChangeFunction(this.input); }
	}
	
}










////////////////////////// Browser.js

var BrowserDetect = {
		init: function () {
			this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
			this.version = this.searchVersion(navigator.userAgent)
				|| this.searchVersion(navigator.appVersion)
				|| "an unknown version";
			this.OS = this.searchString(this.dataOS) || "an unknown OS";
		},
		searchString: function (data) {
			for (var i=0;i<data.length;i++)	{
				var dataString = data[i].string;
				var dataProp = data[i].prop;
				this.versionSearchString = data[i].versionSearch || data[i].identity;
				if (dataString) {
					if (dataString.indexOf(data[i].subString) != -1)
						return data[i].identity;
				}
				else if (dataProp)
					return data[i].identity;
			}
		},
		searchVersion: function (dataString) {
			var index = dataString.indexOf(this.versionSearchString);
			if (index == -1) return;
			return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
		},
		dataBrowser: [
			{ 	string: navigator.userAgent,
				subString: "OmniWeb",
				versionSearch: "OmniWeb/",
				identity: "OmniWeb"
			},
			{
				string: navigator.vendor,
				subString: "Apple",
				identity: "Safari"
			},
			{
				prop: window.opera,
				identity: "Opera"
			},
			{
				string: navigator.vendor,
				subString: "iCab",
				identity: "iCab"
			},
			{
				string: navigator.vendor,
				subString: "KDE",
				identity: "Konqueror"
			},
			{
				string: navigator.userAgent,
				subString: "Firefox",
				identity: "Firefox"
			},
			{
				string: navigator.vendor,
				subString: "Camino",
				identity: "Camino"
			},
			{		// for newer Netscapes (6+)
				string: navigator.userAgent,
				subString: "Netscape",
				identity: "Netscape"
			},
			{
				string: navigator.userAgent,
				subString: "MSIE",
				identity: "Explorer",
				versionSearch: "MSIE"
			},
			{
				string: navigator.userAgent,
				subString: "Gecko",
				identity: "Mozilla",
				versionSearch: "rv"
			},
			{ 		// for older Netscapes (4-)
				string: navigator.userAgent,
				subString: "Mozilla",
				identity: "Netscape",
				versionSearch: "Mozilla"
			}
		],
		dataOS : [
			{
				string: navigator.platform,
				subString: "Win",
				identity: "Windows"
			},
			{
				string: navigator.platform,
				subString: "Mac",
				identity: "Mac"
			},
			{
				string: navigator.platform,
				subString: "Linux",
				identity: "Linux"
			}
		]
	};




//////////////////// FindYourShop.js

FindYourShop = Class.create();
FindYourShop.prototype = {

	initialize: function () {
		if ($("mapFranceLinks")) {
			this.data = new Array(
				{label:"Lorraine"},
				{label:"Alsace"},
				{label:"Champagne Ardenne"},
				{label:"Nord-Pas-De-Calais"},
				{label:"Picardie"},
				{label:"&Icirc;le de France"},
				{label:"Normandie"},
				{label:"Bretagne"},
				{label:"Pays de Loire"},
				{label:"Centre"},
				{label:"Bourgogne"},
				{label:"Franche Comt&eacute;"},
				{label:"Rh&ocirc;ne Alpes"},
				{label:"Auvergne"},
				{label:"Limousin"},
				{label:"Poitou Charentes"},
				{label:"Aquitaine"},
				{label:"Midi Pyr&eacute;n&eacute;es"},
				{label:"Languedoc Roussillon"},
				{label:"Provence-Alpes C&ocirc;te d'Azur"},
				{label:"Martinique"},
				{label:"Guadeloupe"},
				{label:"R&eacute;union"}
			);
			var nodesArea = $$("#mapFranceLinks area");
			for (var i=0;i<nodesArea.length;i++) {
				nodesArea[i].id = i + "area";
				Event.observe(nodesArea[i],"mouseover",this.show.bindAsEventListener(this));
				Event.observe(nodesArea[i],"mouseout",this.hide.bind(this));
			}
		}
	},
	
	show: function (o) {
		$("myAlt").getElementsByTagName("div")[0].innerHTML = "R&eacute;gion <strong>" + this.data[parseInt(Event.element(o).id)].label + "</strong>";
		$("myAlt").style.left = Event.pointerX(o) + 10 + "px";
		$("myAlt").style.top = Event.pointerY(o) - 10 + "px";
		$("myAlt").style.visibility = "visible";
	},
	
	hide: function () {
		$("myAlt").style.visibility = "hidden";
	}

}

Event.observe(window,"load",function () { var myFindYourShop = new FindYourShop(); });






