var isDOM = (document.getElementById ? true : false); 
var isIE4 = ((document.all && !isDOM) ? true : false); 
var isNS4 = ((document.layers && !isDOM)? true : false); 

function getRef(id) 
{ 
	if (isDOM) 
	{ 
		return document.getElementById(id); 
	}
	if (isIE4) 
	{
		return document.all[id]; 
	}
	if (isNS4)
	{
		return document.layers[id]; 
	}
} 

function getSty(id) 
{ 
	return (isNS4 ? getRef(id) : getRef(id).style); 
}

ready = false;
out = false;

/************************************************************/
/* Gestion des bandeaux gauche et droite du masque et bas   */
/************************************************************/

// initialisation des images du bandeau droit
d3_off = new Image();
d3_off.src='/img/w_com/d3_off.gif';
d3_on=new Image();
d3_on.src='/img/w_com/d3_on.gif';

// initialisation des 5 images du bas
for (i = 1; i <= 5; i++)
{
	j = i + 100;
	eval("menu"+j+"_on=new Image();");
	eval("menu"+j+"_on.src='/img/"+dirimg+"/bas"+i+"_on.gif';");
	eval("menu"+j+"_off=new Image();");
	eval("menu"+j+"_off.src='/img/"+dirimg+"/bas"+i+"_off.gif';");
}

function start()
{
	// tmenu : structure d'accès au menu du bas
	if (isNS4)
	{
		tmenu = new Array(document, document, document, document.Lbas.document);
	}
	else
	{
		tmenu = new Array(document, document, document, document);
	}

	startmenug();
	startw(); //initialisation des fonctions de défilement des tickers

	ready = true; //l'initialisation est terminée correctement
}

// Changement de l'item d'un menu sur événement souris
function setMenuItem(menu,item,state) 
{
	if (ready)
	{
		eval("tmenu["+menu+"].menu"+item+".src = menu"+item+"_"+state+".src");
	}
}

// Gère le gif animé du bandeau droit
function setIcon(position,state) 
{
	if (ready)
	{
		if (!isNS4)
		{
			eval("document.d3"+position+".src = d3_"+state+".src");
		}
		else
		{
			eval("document.Ldroite.document.d3"+position+".src = d3_"+state+".src");
		}
	}
}

/********************************************/
/* Fonctions employées dans les formulaires */
/********************************************/

function IsHex(mychar)
{
	//A(65)-F(70) ou a(97)-f(102) ou 0(48) .. 9(57)
	if((mychar>=48)&&(mychar<=57))
	{
		return(true);
	}
	else if(((mychar>=65)&&(mychar<=70))||((mychar>=97)&&(mychar<=102)))
	{
		return(true);
	}
	else
	{
		return(false);
	}
}

function IsAlpha(mychar)
{
	//A(65)-Z(90) ou a(97)-z(122)
	if(((mychar>=65)&&(mychar<=90))||((mychar>=97)&&(mychar<=122)))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function IsNumeric(mychar)
{
	//0(48) .. 9(57)
	if((mychar>=48)&&(mychar<=57))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function IsSpace(mychar)
{
	//Space(32)
	if(mychar==32)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function IsSpecialChar(mychar)
{
	//Space(32), CR(13), LF(10) or TAB(9)
	if((mychar==32)||(mychar==13)||(mychar==10)||(mychar==9))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function IsCommaSemicolon(mychar)
{
	if((mychar==",")||(mychar==";"))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function TrimString(string)
{
	var len=string.length;
	for(i=0;i<len;i++)
	{
		if(!IsSpecialChar(string.charCodeAt(i))) // le premier caractère non spécial
		{
			for(j=len-1;j>=0;j--)
			{
				if(!IsSpecialChar(string.charCodeAt(j))) // le premier caractère non spécial en partant de la fin
				{
					return string.substr(i,(j-i+1));
				}
			}
		}
	}
	return "";
}

function TrimStringCommaSemicolon(string)
{
	var len=string.length;
	for(i=0;i<len;i++)
	{
		if((!IsSpecialChar(string.charCodeAt(i)))&&(!IsCommaSemicolon(string.charAt(i)))) // le premier caractère non spécial
		{
			for(j=len-1;j>=0;j--)
			{
				if((!IsSpecialChar(string.charCodeAt(j)))&&(!IsCommaSemicolon(string.charAt(j)))) // le premier caractère non spécial en partant de la fin
				{
					return string.substr(i,(j-i+1));
				}
			}
		}
	}
	return "";
}

function isEmail(elm)
{
	if((elm.value.indexOf(" ") + "" == "-1")&&(elm.value.indexOf("@") + "" != "-1")&&(elm.value.lastIndexOf(".") > elm.value.indexOf("@"))&&(elm.value != "")) 
		return true;
	else return false;
}

function FormateString(string,number,size)
{
	string=TrimString(string.toUpperCase()); //épuration des caractères spéciaux au début et en fin de chaîne et conversion en majuscules
	if(string.length<size) return ""; //trop courte
	var len=string.length;
	var newstring="";
	for(i=0;i<len;i++) // extraction des caractères alphanumériques
	{
		if(IsAlpha(string.charCodeAt(i))||IsNumeric(string.charCodeAt(i)))
		{
			newstring=newstring+string.charAt(i);
		}
	}
	if(newstring.length!=size) return ""; // taille incorrecte
	else
	{
		var returnstring="";
		for(i=0;i<size;i=i+number) // formatage en bloc de number caractères
		{
			returnstring+=" "+newstring.substr(i,number);
		}
		return(TrimString(returnstring));
	}
}

function FormateProductCode(string,number,size)
{
	string=TrimString(string); //épuration des caractères spéciaux au début et en fin de chaîne
	if(isFinite(Number(string))) return(string);
	else return(FormateString(string,number,size));
}

function FormateMACAddress(string)
{
	var size=12;
	var number=2;

	string=TrimString(string.toUpperCase()); //épuration des caractères spéciaux au début et en fin de chaîne et conversion en majuscules
	if(string.length<size) return(""); //trop courte
	var len=string.length;
	var newstring="";
	for(i=0;i<len;i++) // extraction des caractères alphanumériques
	{
		if(IsHex(string.charCodeAt(i)))
		{
			newstring=newstring+string.charAt(i);
		}
	}
	if(newstring.length!=size) return(""); // taille incorrecte
	else
	{
		var returnstring=newstring.substr(0,number);
		for(i=number;i<size;i=i+number) // formatage en bloc de number caractères
		{
			returnstring+="-"+newstring.substr(i,number);
		}
		return(returnstring);
	}
}

function inRange(string,min,max,def)
{
	string=TrimString(string.toUpperCase()); //épuration des caractères spéciaux au début et en fin de chaîne et conversion en majuscules

	if(string == "") 
	{
		return def;
	}
	else if((Number(string) >= min) && (Number(string) <= max))
	{
		return string;
	}
	else
	{
		return def;
	}
}

function isDate(string)
{
	string=TrimString(string); //épuration des caractères spéciaux au début et en fin de chaîne
	var len=string.length;
	if((len < 5)||(len >10)||(!IsNumeric(string.charCodeAt(0)))||(!IsNumeric(string.charCodeAt(len-1))))
	{
		return(false);
	}

	for(i=1;i<(len-1);i++)
	{
		if((!IsNumeric(string.charCodeAt(i)))&&(string.charAt(i) != "/"))
		{
			return(false);
		}
	}
	return(true);
}

function isFutureDate(year, month, day)
{
	today = new Date();
	future = new Date(year, month-1, day);
	diff = future - today;
	alert (today="\\n"+future+"\\n"+diff);
	if (diff >= 0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function FormateEmail(email)
{
	email=TrimStringCommaSemicolon(email.toLowerCase()); //enlève les "blancs" et , et ; en début et fin de chaine

	//extraction de chaque adresse email potentielle (séparées par des , ou ;)
	var virgule = email.indexOf(",");
	var myarraylen = 0;
	var myarray = new Array(10);

	while(virgule >=0)
	{
		myarray[myarraylen] = TrimStringCommaSemicolon(email.substring(0, virgule));
		email = TrimStringCommaSemicolon(email.substring(virgule+1, email.length));
		virgule = email.indexOf(",");
		myarraylen++;
	}
	if(email != "")
	{
		myarray[myarraylen] = TrimStringCommaSemicolon(email.substring(virgule+1, email.length));
		myarraylen++;
	}
	if(myarraylen == 0)
	{
		return("");
	}

	//analyse de chaque morceau
	var newemail = "";
	for(j = 0; j < myarraylen ; j++)
	{
		email = myarray[j];
//		alert(email);

		// Vérification de la validité de email: si ok je renvoie email, sinon je renvoie ""
		var lastsubmenu = email.length - 1;

		if((email.indexOf("@") < 1) || (email.indexOf("@") != email.lastIndexOf("@")))
		{
//			alert("Invalid email address : @");
			return("");
		}
		else if((email.lastIndexOf(".") != lastsubmenu -2) && (email.lastIndexOf(".") != lastsubmenu -3))
		{
//			alert("Invalid email address : .");
			return("");
		}
		else if(email.indexOf("@") > email.lastIndexOf(".") - 3)
		{
//			alert("Invalid email address : @.");
			return("");
		}

		for(i = 0; i <= lastsubmenu; i++) // passage en revue des caractères et échec dès qu'un caractère n'est pas alphanumérique ou . - _ @
		{
			if((email.charAt(i) == ".") || (email.charAt(i) == "-") || (email.charAt(i) == "_") || (email.charAt(i) == "@") || (IsAlpha(email.charCodeAt(i))) || (IsNumeric(email.charCodeAt(i))))
			{
				continue;
			}
			else
			{
//				alert("Invalid email address : a-z,0-9,.,-,_");
				return("");
			}
		}

		if(newemail == "")
		{
			newemail = email;
		}
		else
		{
			newemail = newemail + "," + email;
		}
	}
	return(newemail);
}

function isSelectedCheckbox(elements,checkbox)
{
	// Vérifie si au moins une checkbox est cochée
	for(i=0;i<elements.length;i++)
	{
		if((elements[i].type == "checkbox")&&(elements[i].checked))
		{
			myString = new String(elements[i].name);
			if(myString.search(checkbox) >= 0)
			{
				return(true);
			}
		}
	}
	return(false);
}

/*******************************************/
/* Fonction pour les informations légales  */
/*******************************************/

function poplegal(langue) 
{
	win = window.open("/legal_"+langue+".htm","legalinfo","height=432,width=281,top=0,left=0,resizable=1,scrollbars=1");
}

/********************************************/
/* Fonction pour l'assistance               */
/********************************************/

function pop_assistance(url)
{
	var width=400;
	var height=300;
	var left=screen.width-width-50;
	var top=100;
	var features="left="+left+",top="+top+",width=400,height=300,resizable=0,toolbar=0,scrollbars=0,status=0,menubar=0";
	newWin = window.open(url,"Bionatics",features);
}

/********************************************/
/* Fonction pour Payline                    */
/********************************************/

function pop_payline(url)
{
	var width=400;
	var height=270;
	var left=screen.width-width-50;
	var top=screen.height-350;
	var features="left="+left+",top="+top+",width=400,height=270,resizable=0,toolbar=0,scrollbars=0,status=0,menubar=0";
	newWin = window.open(url,"Bionatics",features);
}

/********************************************/
/* Fonction pour les ventes                 */
/********************************************/

function pop_sale(url)
{
	newWin = window.open(url,"Bionatics","width=400,height=450,resizable=1,toolbar=0,scrollbars=1,status=0,menubar=0");
}

function pop_caddie(url)
{
	Caddie = window.open(url,"Caddie","width=500,height=450,resizable=1,toolbar=0,scrollbars=1,status=1,menubar=0");
}

/*****************************/
/* Fonctions pour les images */
/*****************************/

function SetImage(object,img)
{
	// Appelée sur un événement souris, cette fonction permet de changer l'image affichée.
	object.src=img.src;
}

/************************************************/
/* Fonctions pour changer la langue d'affichage */
/************************************************/

function ChangeLangue(langue)
{
	document.cookie="langue="+langue+"; path=/;";
//	alert(document.cookie);
	location.reload();
}

function SetLangue(langue)
{
	document.cookie="langue="+langue+"; path=/;";
}

/********************************************/
/* Fonctions pour le défilement des tickers */
/* http://javascripts.vbarsan.com           */
/* This notice may not be removed           */
/********************************************/

//-- Begin Scroller's Parameters and message -->

//important note: text to be displayed can be set here or can be set before within variable wwholemessage
//if(string(wwholemessage)=="") wwholemessage='<span class="txtw">No message to display</span>';

//scroller width: change to your own;
var wwidth=510;

//scroller height: change to your own;
var wheight=15;

//scroller's speed: change to your own;
var sspeed=2;
var restart=sspeed;
var rspeed=sspeed;

//-- end Parameters and message-->

//-- begin: Scroller's Algorithm -->
var sizeupw=0;
var operbr=navigator.userAgent.toLowerCase().indexOf('opera');

if((operbr==-1)&&(navigator.product&&navigator.product=="Gecko"))
{
	var agt = navigator.userAgent.toLowerCase();
	var rvStart = agt.indexOf('rv:');
	var rvEnd = agt.indexOf(')', rvStart);
	var check15 = agt.substring(rvStart+3, rvEnd);
	
	if(parseFloat(check15)>=1.8) 
	{
		operbr=0;
	}
}

if (navigator.appVersion.indexOf("Mac")!=-1) 
{
	operbr=0;
}

function startw()
{
	if(document.getElementById)
		ns6marqueew(document.getElementById('wslider'));
	else if(document.all) 
		iemarqueew(wslider);
	else if(document.layers)
		ns4marqueew(document.wslider1.document.wslider2);
}

function iemarqueew(whichdiv)
{
	iedivw=eval(whichdiv);
	iedivw.style.pixelLeft=wwidth;
	iedivw.innerHTML='<nobr>'+wwholemessage+'</nobr>';
	sizeupw=iedivw.offsetWidth;
	ieslidew();
}

function ieslidew()
{
	if(iedivw.style.pixelLeft>=sizeupw*(-1))
	{
		iedivw.style.pixelLeft-=sspeed;
		setTimeout("ieslidew()",50);
	}
	else
	{
		iedivw.style.pixelLeft=wwidth;
		ieslidew();
	}
}

function ns4marqueew(whichlayer)
{
	ns4layerw=eval(whichlayer);
	ns4layerw.left=wwidth;
	ns4layerw.document.write('<nobr>'+wwholemessage+'</nobr>');
	ns4layerw.document.close();
	sizeupw=ns4layerw.document.width;
	ns4slidew();
}
	
function ns4slidew()
{
	if(ns4layerw.left>=sizeupw*(-1))
	{
		ns4layerw.left-=sspeed;
		setTimeout("ns4slidew()",50);
	}
	else
	{
		ns4layerw.left=wwidth;ns4slidew();
	}
}
		
		
function ns6marqueew(whichdiv)
{
	ns6divw=eval(whichdiv);
	ns6divw.style.left=wwidth;
	ns6divw.innerHTML='<nobr>'+wwholemessage+'</nobr>';
	sizeupw=ns6divw.offsetWidth;
	
	if(operbr!=-1)
	{
		document.getElementById('operaslider').innerHTML='<nobr>'+wwholemessage+'</nobr>';
		sizeupw=document.getElementById('operaslider').offsetWidth;
	}
		
	ns6slidew();
}

function ns6slidew()
{
	if(parseInt(ns6divw.style.left)>=sizeupw*(-1))
	{
		ns6divw.style.left=parseInt(ns6divw.style.left)-sspeed;
		setTimeout("ns6slidew()",50);
	}
	else
	{
		ns6divw.style.left=wwidth;ns6slidew();
	}
}

function goup()
{
	if(sspeed!=rspeed*8)
	{
		sspeed=sspeed*2;
		restart=sspeed;
	}
}

function godown()
{
	if(sspeed>rspeed)
	{
		sspeed=sspeed/2;
		restart=sspeed;
	}
}

//-- end Algorithm -->


/****************************/
/* Gestion du menu gauche   */
/****************************/
	 
readyg = false;
submenug = 1; // nombre de sous-menus: les sous-menus sont numérotés à partir de 1 ...

tetatg = new Array(false); //1 élément pour le menu principal (inutile) puis 1 par sous-menu
for(i = 1; i <= submenug; i++)
{
	tetatg[i] = false; //ajout d'1 élément par sous-menu
}
tposg = new Array(0, 90, 100); //1 position pour le menu principal (inutile) puis 1 par sous-menu
var timeoutg;

function startmenug()
{
	// tmenug : structure d'accès au menu gauche et à ses et sous-menus
	if (isNS4)
	{
		tmenug = new Array(document.Lmenug.document, document.Lsubmenug1.document);
	}
	else
	{
		tmenug = new Array(document, document);
	}

	readyg = true; //l'initialisation est terminée correctement
}


function setsubmenug(nmenu)
{
	// séparée de startmenug car les Lmenu ne sont pas définis au début (sinon erreur javascript)
	// doit être placé après les <div id="Lsubmenug"> ... </div>

	// tsubmenug représentent les styles des sous-menus
	tsubmenug = new Array(nmenu+1);
	for(j=1; j<=nmenu; j++)
	{
		if (isDOM)
		{
			var tmpvar = "Lsubmenug"+j;
			tsubmenug[j] = document.getElementById(tmpvar).style;
		}
		else if (isIE4)
		{
			eval("tsubmenug["+j+"] = document.all.Lsubmenu"+j+".style");
		}
		else if (isNS4)
		{
			eval("tsubmenug["+j+"] = document.Lsubmenu"+j);
		}
	}
}

// Affiche ou cache le sous-menu du menu
function displayhideSubmenu(menu)
{
	if (readyg)
	{
		if (tetatg[menu]) // le menu est sorti
		{
			hideSubmenu(menu);
		}
		else
		{
			displaySubmenu(menu);
		}
	}
}

function displaySubmenu(menu)
{
	// Cacher tous les sous-menus
	for (i = 1; i <= submenug; i++)
	{
		if ((i != menu) && (tetatg[i]))
		{
			hideSubmenu(i);
		}
	}

	// Afficher le sous-menu
	tetatg[menu] = true; // marque le menu comme sorti
	tsubmenug[menu].left = tposg[menu];
	tsubmenug[menu].zIndex = 10;
	tsubmenug[menu].visibility = "visible";
	timeoutg = setTimeout("hideSubmenu("+menu+")",2000); // temporise la sortie d'un sous-menu à 2s
}

function hideSubmenu(menu)
{
	// Cacher le sous-menu
	tetatg[menu] = false; // marque le menu comme rentré
	tsubmenug[menu].left = 0;
	tsubmenug[menu].zIndex = 0;
	tsubmenug[menu].visibility = "hidden";
	clearTimeout(timeoutg);
}

function setTimeoutMenu(menu)
{
	// Le menu sera caché dans 2 s.
	timeoutg = setTimeout("hideSubmenu("+menu+")",2000);
}

function clearTimeoutMenu()
{
	clearTimeout(timeoutg);
}

function hideSubmenus()
{
	// Cacher tous les sous-menus
	for (i = 1; i <= submenug; i++)
	{
		if (tetatg[i])
		{
			hideSubmenu(i);
		}
	}
}


