// ========================= INITIALISATIONS ============================
// var SITE="/ARTEC/"; // a la maison
// var SITE="/"; //en prod
var SITE = (document.location.hostname == 'localhost' ? "/ARTEC/" : "/");
var PICS_DIR="pics/";
var LINK="link";
var WHITE="#FFFFFF";
var GREY="#DEDEDE";
var imgIndex = 0;
var IMGPREFIX="img";
var MENU = "menu";
var DEBUG = false;

// --- set other constants / variables
var CHANGELOG = " | <A HREF='"+CHANGEMENTS+"?lang="+lang+"'>"+translate('changelog')+"</A>";
var ADS = " | <A HREF='"+ANNONCES+"?lang="+lang+"'>"+translate('annonces')+"</A>";
var OPTIMISATION = " IE/5+ - Mozilla/5+ - Opera/7+ - Netscape/6+ - Firefox/1+";
var FOOTER = '<P Class="Footer">'+translate('maj')+CHANGELOG+ADS+"<BR>"+translate('optimisation')+OPTIMISATION+'</P>';
var validated=false;
var IMPRIMER = "<P CLASS='Menu'><A Class='Menu' HREF='javascript:window.print();'>"+translate('imprimer')+"</A></P>";
var FERMER = "<P CLASS='Menu'><A Class='Menu' HREF='javascript:window.close();'>"+translate('fermer')+"</A></P>";
var FERMER_IMPRIMER = "<TABLE><TR><TD>"+FERMER+"</TD><TD>"+IMPRIMER+"</TD></TR></TABLE>";
//var FLAGS = "<A HREF='javascript:toggleLang(\"fr\")'><IMG SRC='"+PICS_DIR+"/fr.gif' ALT='FR' BORDER='0'></A> &nbsp; <A HREF='javascript:toggleLang(\"en\")'><IMG SRC='"+PICS_DIR+"/en.gif' ALT='EN' BORDER='0'></A>";

var LOADINGTIMEOUTDELAY = 20000; // hide load bar after this amount of milliseconds
var loadingTimeOut = 0;
var pageImagesArray;
var pageImagesArraySize = 0;
var previousNbOfLoadedImages = 0;
var loadingCloseTimeOut = 0;

// ========================= FONCTIONS ============================

var ua = navigator.userAgent.toLowerCase();
var isFirefox = (ua.indexOf("firefox") != -1);
var isMozilla = (ua.indexOf("mozilla") != -1);
var isOpera = (ua.indexOf("opera") != -1);
var isWebTv = (ua.indexOf("webtv") != -1);
var isIE = ((ua.indexOf("msie") != -1) && (!isOpera) && (!isWebTv));
var isGecko = (ua.indexOf("gecko") != -1);
var isSafari = (ua.indexOf("safari") != -1);
var isKonqueror = (ua.indexOf("konqueror") != -1);
var isNetscape = (ua.indexOf("netscape") != -1);
var version = parseFloat(navigator.appVersion);
if (isIE) version = parseFloat(navigator.appVersion.substring(navigator.appVersion.toLowerCase().indexOf("msie")+5,navigator.appVersion.toLowerCase().indexOf("msie")+8));

function fastBrowserCompliance() {
	// --- 2 : fully compliant
	if (isIE && version >= 5) return 2;
	if (isMozilla && version >= 5) return 2;
	if (isOpera && version >= 7) return 1;
	if (isFirefox && version >= 1) return 2;
	if (isNetscape && version >= 6) return 2;
	return 0;
}

function getBrowserCompliance() {
	return ('<div class=compliance'+fastBrowserCompliance()+' id=synthesisbullet ><a href="compatibilite.html" TITLE="Compliance test" ALT="Compliance test"><img border=0 width=10 src="pics/rond-compatibilite-marron.gif"></A></div><div class=complianceTxt>'+translate('compliance')+'</div>');
}

// --- strReplace: String Replace / if not found, then add !
function strReplace (txt, oldStr, newStr) {
	if (txt.indexOf(oldStr) == -1) return txt;
	return txt.substring(0,txt.indexOf(oldStr))+newStr+txt.substring(txt.indexOf(oldStr)+oldStr.length);
}

// --- stripSlashDot: extacts the actual file name without path and extension
function stripSlashDot (url) {
	return url.substring(url.lastIndexOf('/')+1,url.lastIndexOf('.'));
}

// --- setLcdText: sets the LCD text
function setLcdText (txt) {
	document.getElementById('lcd').innerHTML = translate(txt);
}

// --- setImage: sets the rollOverImage + handles the selector picture + handles the LCD
function setImage(img,file,toggle,multiLingual) {
	// effectively toggles the image according to mouse over or out and to multi-lang option
	img.src=SITE+PICS_DIR+(multiLingual ? lang+"-": "")+file+(toggle != '' ? '-'+toggle : '')+'.gif';

	// only move the selector on home page, where it exists... and when it is a selector option (menu_ prefix)
	if (document.selecteur != null && file.indexOf(MENU)==0) document.selecteur.src=PICS_DIR+"selecteur-"+file+'.gif';

	// sets the LCD message
	if (document.getElementById('lcd') != null) setLcdText(file);
}

// --- rollOverImage: writes the image with the corresponding rollOver links - bilingual
function rollOverImage(nom,dest)  {
	var label = translate(nom);
	imgIndex++;
	//document.write('<A HREF="'+dest+'" onMouseOver="document.'+nom+'.src=\'pics/'+nom+'-on.gif\'" onMouseOut="document.'+nom+'.src=\'pics/'+nom+'-off.gif\'"><IMG NAME="'+nom+'" SRC="pics/'+nom+'-off.gif" BORDER="0" ALT="'+nom+'"></A>');
	//document.write('<A HREF="'+SITE+dest+'?lang='+lang+'" onMouseOver="setImage(document.'+IMGPREFIX+nom+imgIndex+',\''+nom+'\',\'on\',true)" onMouseOut="setImage(document.'+IMGPREFIX+nom+imgIndex+',\''+nom+'\',\'off\',true)"><IMG NAME="'+IMGPREFIX+nom+imgIndex+'" SRC="pics/'+lang+'-'+nom+'-off.gif" BORDER="0" TITLE="'+label+'" ALT="'+label+'"></A>');
	return('<A HREF="'+SITE+dest+'?lang='+lang+'" onMouseOver="setImage(document.'+IMGPREFIX+nom+imgIndex+',\''+nom+'\',\'on\',true)" onMouseOut="setImage(document.'+IMGPREFIX+nom+imgIndex+',\''+nom+'\',\'off\',true)"><IMG NAME="'+IMGPREFIX+nom+imgIndex+'" SRC="pics/'+lang+'-'+nom+'-off.gif" BORDER="0" TITLE="'+label+'" ALT="'+label+'"></A>');
}

// --- rollOverImageMono: writes the image with the corresponding rollOver links - MONOlingual
function rollOverImageMono(nom,dest,target,codeMouseOver, codeMouseOut, externalizeAlt, forceRollOver, forceRollOut)  {
	imgIndex++;
	var targetTxt = "";
	var ALT='';
	var LEGENDOVER = '';
	var LEGENDOUT = '';
	var label = translate(nom);
	if (typeof (externalizeAlt) == 'undefined' || externalizeAlt == '') {
		ALT = 'TITLE="'+label+'" ALT="'+label+'"';
	} else {
		LEGENDOVER = "setElementContent('"+externalizeAlt+"','"+label+"');";
		LEGENDOUT = "setElementContent('"+externalizeAlt+"','"+label+"');";
	}
	if (typeof (codeMouseOver) == 'undefined') codeMouseOver='';
	if (typeof (forceRollOver) == 'undefined' || forceRollOver) codeMouseOver += "setImage(document."+IMGPREFIX+nom+imgIndex+",'"+nom+"','on',false);"+LEGENDOVER;
	if (typeof (codeMouseOut) == 'undefined') codeMouseOut='';
	if (typeof (forceRollOver) == 'undefined' || forceRollOut) codeMouseOut += "setImage(document."+IMGPREFIX+nom+imgIndex+",'"+nom+"','off',false);"+LEGENDOUT;
	if ((target != "") && ('undefined' != typeof target)) targetTxt = 'TARGET="'+target+'"';

	//document.write('<A '+targetTxt+' HREF="'+SITE+dest+(dest.indexOf('?') ==-1 ? "?":"&")+'lang='+lang+'" onMouseOver="setImage(document.'+IMGPREFIX+nom+imgIndex+',\''+nom+'\',\'on\',false)" onMouseOut="setImage(document.'+IMGPREFIX+nom+imgIndex+',\''+nom+'\',\'off\',false)"><IMG ALIGN="ABSMIDDLE" NAME="'+IMGPREFIX+nom+imgIndex+'" SRC="pics/'+nom+'-off.gif" BORDER="0" TITLE="'+label+'" ALT="'+label+'"></A>');
	return('<A '+targetTxt+' HREF="'+SITE+dest+(dest.indexOf('?') ==-1 ? "?":"&")+'lang='+lang+'" onMouseOver="'+codeMouseOver+'" onMouseOut="'+codeMouseOut+'"><IMG ALIGN="ABSMIDDLE" NAME="'+IMGPREFIX+nom+imgIndex+'" SRC="pics/'+nom+'-off.gif" BORDER="0" '+ALT+'></A>');
}

// --- rollOverImageMonoJS: writes the image with the corresponding rollOver links - MONOlingual / link is javascript code
function rollOverImageMonoJS(nom,codeClick, codeMouseOver, codeMouseOut, externalizeAlt, forceRollOver, forceRollOut)  {
	imgIndex++;
	var ALT='';
	var LEGENDOVER = '';
	var LEGENDOUT = '';
	var label = translate(nom);
	if (codeClick == '') codeClick = 'void(0);';
	if (typeof (externalizeAlt) == 'undefined' || externalizeAlt == '') {
		ALT = 'TITLE="'+label+'" ALT="'+label+'"';
	} else {
		LEGENDOVER = "setElementContent('"+externalizeAlt+"','"+label+"');";
		LEGENDOUT = "setElementContent('"+externalizeAlt+"','"+label+"');";
	}
	if (typeof (codeMouseOver) == 'undefined') codeMouseOver='';
	if (typeof (forceRollOver) == 'undefined' || forceRollOver) codeMouseOver += "setImage(document."+IMGPREFIX+nom+imgIndex+",'"+nom+"','on',false);"+LEGENDOVER;
	if (typeof (codeMouseOut) == 'undefined') codeMouseOut='';
	if (typeof (forceRollOver) == 'undefined' || forceRollOut) codeMouseOut += "setImage(document."+IMGPREFIX+nom+imgIndex+",'"+nom+"','off',false);"+LEGENDOUT;

	//document.write('<A HREF="#" onClick="'+codeClick+'" onMouseOver="'+codeMouseOver+'" onMouseOut="'+codeMouseOut+'"><IMG ALIGN="ABSMIDDLE" NAME="'+IMGPREFIX+nom+imgIndex+'" SRC="pics/'+nom+'-off.gif" BORDER="0" '+ALT+'></A>');
	return('<A HREF="#" onClick="'+codeClick+'" onMouseOver="'+codeMouseOver+'" onMouseOut="'+codeMouseOut+'"><IMG ALIGN="ABSMIDDLE" NAME="'+IMGPREFIX+nom+imgIndex+'" SRC="pics/'+nom+'-off.gif" BORDER="0" '+ALT+'></A>');
}

// --- move to TopOfPage
function moveTop(align) {
	var link = '<A HREF="#top" onMouseOver="setImage(document.'+IMGPREFIX+'top'+imgIndex+',\'top\',\'on\',false)" onMouseOut="setImage(document.'+IMGPREFIX+'top'+imgIndex+',\'top\',\'off\',false)"><IMG ALIGN="ABSMIDDLE" NAME="'+IMGPREFIX+'top'+imgIndex+'" SRC="pics/top-off.gif" BORDER="0" ALT="top"></A>';
	if (typeof align == 'undefined')
		document.write('<p class=moveTop>'+link+'</P>');
	else
		document.write(link);

	imgIndex++;
}

// --- enlargeablePhoto: writes the photo with its full size as anchor target
function enlargeablePicture(folder, name, ext,width)  {
	// --- folder includes last '/'
	// --- ext contains '.'
	// --- width is provided 'at most'. If actual image is smaller, use actual width (if image is preloaded in time)
	var cachedImage = new Image();
	cachedImage.src=SITE+folder+name+ext;

	var actualWidth = Math.min(width,cachedImage.width);
	document.write ('<A HREF="javascript:popUpSolo(\''+SITE+folder+name+ext+'\',\''+name+'\')"><IMG ID="'+imgIndex+'" NAME="'+IMGPREFIX+name+imgIndex+'" SRC="'+SITE+folder+name+ext+'" WIDTH="'+(actualWidth == 0 ? width : actualWidth)+'" BORDER="0" TITLE="'+name+'" ALT="'+name+'"></A><BR><FONT SIZE=1><I>'+translate('clic')+'</I></FONT>');
	imgIndex++;
}

// --- enlargeablePhoto: writes the photo with its full size as anchor target
function enlargeablePhoto(nom,width,ext)  {
	enlargeablePicture('photos/',nom,'.'+ext,width);
	//document.write ('<A HREF="javascript:popUpSolo(\''+SITE+'photos/'+nom+'.'+ext+'\',\''+nom+'\')"><IMG NAME="'+nom+imgIndex+'" SRC="'+SITE+'photos/'+nom+'.'+ext+'" WIDTH="'+largeur+'" BORDER="0" ALT="'+nom+'"></A><BR><FONT SIZE=1><I>'+translate('clic')+'</I></FONT>');
}
function enlargeableGIF(nom,largeur)  {
	enlargeablePhoto(nom,largeur,"gif");
}
function enlargeableJPG(nom,largeur)  {
	enlargeablePhoto(nom,largeur,"jpg");
}

// --- function displayImage: to handle multilinguism
function displayImage (text)  {
	document.write('<IMG SRC="pics/'+lang+'-'+text+'-on.gif" BORDER="0" ALT="'+text+'">');
}

function displayImageMono (text)  {
	document.write('<IMG SRC="pics/'+text+'-on.gif" BORDER="0" ALT="'+text+'">');
}
// --- footer: adds the footer lines
function footer() {
	// OBSOLETE: please use PHP printFooter for google indexation
	var html = '<DIV CLASS="FooterMenu" ALIGN="center"><center><table border="0" cellspacing="0" cellpadding="4"><TR><TD WIDTH="110" ALIGN="CENTER" VALIGN="TOP">';
	html += rollOverImageMonoJS("fr","toggleLang('fr')");
	html += ' &nbsp; ';
	html += rollOverImageMonoJS("en","toggleLang('en')");
	html += '</TD><TD WIDTH="770" ALIGN="CENTER">'
		+translate('footer')
		+FOOTER
		+'</TD><TD WIDTH=10 VALIGN=TOP ALIGN=CENTER>'
		+getBrowserCompliance()
		+'</TD></TR></TABLE></center></DIV>'
	document.write (html);
}

// --- pressPages: prepares the press hyperlinks
function pressPages(prefix, max, ext) {
	var i = 0;
	var html = '<A HREF="javascript:popUpMulti(\'presse\',\''+prefix+'\','+max+',\''+ext+'\')">1-'+max+'</A> (';
	for (i = 1 ; i <= max ; i++) {
		//document.write('<A HREF="presse/'+prefix+i+'.'+ext+'">'+i+'</A>');
		html += '<A HREF="javascript:popUpSolo(\'presse/'+prefix+i+'.'+ext+'\')">'+i+'</A>';
		if (i < max) html += " | ";
	}
	document.write(html + ')');
}

// --- popUpMulti: displays all domain (press, products...) files in one popped windows
function popUpMulti(domain, prefix,max,ext) {
	var i;
	if (ext.indexOf('.') == -1) ext = '.'+ext;
	var html = '<HTML><HEAD><LINK REL="stylesheet" HREF="css/styles.css"></HEAD><BODY><CENTER>'
		+FERMER_IMPRIMER+prefix;
	for (i = 1 ; i <= max ; i++) {
		html += '<P CLASS="Popup"><IMG SRC="'+domain+'/'+prefix+'-'+i+ext+'" border="0"></P>';
	}
	var press = window.open("",domain);
	press.document.open();
	press.document.writeln(html + FERMER_IMPRIMER+"</CENTER></BODY> </HTML>");
	press.document.close();
}

// --- popUpSolo: displays an image in a popped up window
function popUpSolo (url,txt) {
	if (txt == null) txt = stripSlashDot (url);

	var html = '<HTML><HEAD><LINK REL="stylesheet" HREF="css/styles.css"></HEAD><BODY><CENTER>'
		+FERMER_IMPRIMER+txt
		+'<P CLASS="Popup"><IMG SRC="'+url+'" border="0"></P>'
		+FERMER_IMPRIMER+"</CENTER></BODY> </HTML>";
	var popup = window.open("","solo");
	popup.document.open();
	popup.document.write(html);
	popup.document.close();
}

// --- preLoader: preloads images for home page ==> now done in PHP/HTML output to force Opera load (it ignores hidden pics)

// --- toggleComments: display all comments one by one
function toggleComments (max) {
	toggleElements (max,'commentaire');
}

// --- toggleElements: display all elements one by one
function toggleElements (max, element) {
	var i;
	var txt = "";

	for (i = 1; i<=max; i++) {
		if (i == 1)
			txt += "<A CLASS='itembgpale' ID='"+element+LINK+i+"' HREF='javascript:showElement("+i+","+max+",\""+element+"\")'>"+i+"</A> ";
		else
			txt += "<A CLASS='itembgocre' ID='"+element+LINK+i+"' HREF='javascript:showElement("+i+","+max+",\""+element+"\")'>"+i+"</A> ";
	}
	if (max > 1) txt += " <A CLASS='itembgocre' ID='"+element+LINK+'0'+"'  HREF='javascript:showElement(0,"+max+",\""+element+"\")'>1-"+(i-1)+"</A> ";
	if (max > 0) txt += " <A CLASS='itembgocre' ID='"+element+LINK+i+"'  HREF='javascript:showElement("+i+","+max+",\""+element+"\")'>X</A> ";

	document.write(txt);
}


// --- function fadeIn(element)
function fadeIn(element,tempo) {
	var speed = (typeof tempo == 'undefined' ? 10 : tempo) ;

	if (typeof document.getElementById(element) != 'undefined') {
		new Fadomatic(document.getElementById(element), speed, 0,0,99).fadeIn();
	}
 }

// --- function fadeOut(element, tempo)
function fadeOut(element, tempo) {
	var speed = (typeof tempo == 'undefined' ? 10 : tempo) ;

	if (typeof document.getElementById(element) != 'undefined') {
		new Fadomatic(document.getElementById(element), speed, 99,0,99).fadeOut();
	}
}

// --- to display one element (comment) and hide others (toggler)
function showElement (id,max,element) {
	// --- process all elements
	for (var i = 1; i<=max; i++) {
		// if we deal with the ALL or the target one
		if ((id==0) || (i == id)) {
			// display the associated DIV + use a nice FADE IN !
			fadeIn(element+i);
			insert(element+i);

			// if we are on the target one blank the tag, else fill it
			if (id != 0) {
				document.getElementById(element+LINK+i).className = "itembgpale";
			} else  {
				document.getElementById(element+LINK+i).className = "itembgocre";
			}

		// we then deal with non target elements: fill tag and hide div
		} else {
			remove(element+i);
			document.getElementById(element+LINK+i).className = "itembgocre";
		}
	}

	// --- we process the outbound elements
	if (id == 0) {
		//  the ALL element must be blanked, the HIDE filled
		document.getElementById(element+LINK+(max+1)).className = "itembgocre";
		document.getElementById(element+LINK+'0').className = "itembgpale";

	} else if (id == max+1) {
		//  the HIDE element must be blanked, the ALL filled
		if (document.getElementById(element+LINK+'0')) document.getElementById(element+LINK+'0').className = "itembgocre";
		document.getElementById(element+LINK+(max+1)).className = "itembgpale";

	} else {
		// HIDE and ALL elements must be filled
		if (document.getElementById(element+LINK+'0') != null) document.getElementById(element+LINK+'0').className = "itembgocre";
		if (document.getElementById(element+LINK+(max+1)) != null) document.getElementById(element+LINK+(max+1)).className = "itembgocre";
	}

}

// --- The leftTrim JavaScript function to remove left spaces from string
function leftTrim(sString) {
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	return sString;
}


// --- The rightTrim() JavaScript function to remove right spaces from string
function rightTrim(sString) {
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

// --- The allTrim() JavaScript function combines both leftTrim() and rightTrim() functions:
function allTrim(sString) {
	return leftTrim(rightTrim(sString));
}


function getAbsoluteLeft(objectId) {
	// Get an object left position from the upper left viewport corner
	// Tested with relative and nested objects
	o = document.getElementById(objectId)
	oLeft = o.offsetLeft            // Get left position from the parent object

	while(o.offsetParent!=null) {   // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent    // Get parent object reference
		oLeft += oParent.offsetLeft // Add parent left position
		o = oParent
	}

	// Return left postion
	return oLeft;
}

function getAbsoluteTop(objectId) {
	// Get an object top position from the upper left viewport corner
	// Tested with relative and nested objects
	o = document.getElementById(objectId)
	oTop = o.offsetTop            // Get top position from the parent object
	while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent  // Get parent object reference
		oTop += oParent.offsetTop // Add parent top position
		o = oParent
	}
	// Return top position
	return oTop;
}

// --- writes the sitemap icons in each window
function printSiteMap() {
		var html = '<BR>';
		html += rollOverImageMono("accueil",INDEX);
		html += rollOverImageMonoJS("plandusite","toggleSiteMap();","toggleSiteMap('up');",'','',false, false);
		switch (document.location.pathname.substring(document.location.pathname.lastIndexOf('/')+1)) {
			case SOCIETE:
				html += rollOverImageMono("societe",SOCIETE);
				break;
			case ETUDES:
				html += rollOverImageMono("etudes",ETUDES);
				break;
			case COMMENTAIRES:
				html += rollOverImageMono("ecoute",COMMENTAIRES);
				break;
			case PRESSE:
				html += rollOverImageMono("presse",PRESSE);
				break;
			case LIENS:
				html += rollOverImageMono("liens",LIENS);
				break;
			case "photos-2.php":
			case "photos-3.php":
			case PHOTOS:
				html += rollOverImageMono("photo",PHOTOS);
				break;
			case CONTACT:
				html += rollOverImageMono("mail",CONTACT);
				break;
			case CHANGEMENTS:
				html += rollOverImageMono("changements",CHANGEMENTS);
				break;
			case ANNONCES:
				html += rollOverImageMono("annonces",ANNONCES);
				break;
			case ECOUTES:
				html += rollOverImageMono("ecoutes",ECOUTES);
				break;
			default:
			case PRODUITS:
				html += rollOverImageMono("produit",PRODUITS);
		}
		html += '<BR><DIV ID=sitemap><CENTER><SPAN ID=sitemaptitle>'+translate('plandusite').toUpperCase()+'</SPAN><BR><DIV ID=sitemapbuttons>';
		html += rollOverImageMonoJS("accueil","location='"+INDEX+"';",'','','sitemaplegend');
		html += rollOverImageMonoJS("produit","location='"+PRODUITS+"';",'','','sitemaplegend');
		html += rollOverImageMono("catalog","produits-pdf.php","pdf",'','','sitemaplegend');
		html += rollOverImageMonoJS("etudes","location='"+ETUDES+"';",'','','sitemaplegend');
		html += "<BR>";
		html += rollOverImageMonoJS("ecoute","location='"+COMMENTAIRES+"';",'','','sitemaplegend');
		html += rollOverImageMonoJS("presse","location='"+PRESSE+"';",'','','sitemaplegend');
		html += rollOverImageMonoJS("liens","location='"+LIENS+"';",'','','sitemaplegend');
		html += rollOverImageMonoJS("photo","location='"+PHOTOS+"';",'','','sitemaplegend');
		html += "<BR>";
		html += rollOverImageMonoJS("ecoutes","location='"+ECOUTES+"';",'','','sitemaplegend');
		html += rollOverImageMonoJS("societe","location='"+SOCIETE+"';",'','','sitemaplegend');
		html += rollOverImageMonoJS("mail","location='"+CONTACT+"';",'','','sitemaplegend');
		html += "<BR>";
		html += rollOverImageMonoJS("annonces","location='"+ANNONCES+"';",'','','sitemaplegend');
		html += rollOverImageMonoJS("changements","location='"+CHANGEMENTS+"';",'','','sitemaplegend');
		html += "<BR>";
		html += rollOverImageMonoJS("compliance","location='"+COMPATIBILITE+"';",'','','sitemaplegend');
		html += '</DIV><div ID=sitemaplegend></div><div id=sitemaplabels>'+translate('footer')+CHANGELOG+ADS+'</DIV><BR><BR>';
		html += rollOverImageMonoJS("fermer","toggleSiteMap()",'','','sitemaplegend');
		html += '</CENTER></DIV>';
		document.write(html);
}

// --- show/hide the sitemap
function toggleSiteMap(sens) {
	if (isVisible('sitemap')) {
		if (sens == 'up') return true;
		//remove('sitemap');
		initSlideLeftPanel();
		setImage(document.imgplandusite2,'plandusite','off',false);
	} else {
		initSlideLeftPanel();
		setImage(document.imgplandusite2,'plandusite','on',false);
		//insert('sitemap');
	}
}
// --- aideMail: displays a help for mail submission
function helpMail() {
	if (isDisplayed('astuce1')) {
		remove('astuce1');
		insert('astuce2');
	} else {
		insert('astuce1');
		remove('astuce2');
	}
}

	// --- validEmail: checks email Format
function validEmail (p_email)
{
	//return (p_email.indexOf("@") != -1)
	// jean-christophe.dupont-machin@truc-bidule.boite.com.bz
	// /^\w+([\.-_]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$
	return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(p_email));
}

// --- contact: checks contact form submission
function contact() {
	validated=false;

	if (!validEmail(document.forms['email'].From.value)) {
		alert(translate('contact_email'));
		document.forms['email'].From.focus();
	} else if (document.forms['email'].Body.value.length == 0) {
		alert(translate('contact_contenu'));
		document.forms['email'].Body.focus();
	} else {
		document.forms['email'].Cc.value = document.forms['email'].From.value;
		//document.forms['email'].Subject.value = unescape(document.forms['email'].Subject.value);
		validated=true;
	}

	return validated;
}

// --- call PDF in a new window as a workaround for IE
function callPDF(product) {
	var pdf = window.open("","pdf");

	pdf.document.open();
	pdf.document.writeln('<html><head><script>location.href = "produits-pdf.php?product='+product+'";</script></head><body><A HREF="produits-pdf.php?product='+product+'">Catalog / Catalogue</A></body></html>');
	pdf.document.close();
}

// --- images loading bar
function images_loading_bar(){
	// --- optimized from DHTeumeuleu.com : clear INterval added / one setInterval only
	nbOfLoadedImages=0;
	for(i=0;i<pageImagesArraySize;i++) {
		nbOfLoadedImages+=(pageImagesArray[i].complete)?1:0;
	}
	if (DEBUG) setElementContent('loadtxt',nbOfLoadedImages + "/"+ pageImagesArraySize);
	if (nbOfLoadedImages > 0 && nbOfLoadedImages == previousNbOfLoadedImages) {
		// --- close bar after 1 second if we are stuck
		// Opera stays stuck when some images are hidden: it does not preloads them
		// IE also stays stuck sometimes ! so whatever... close anyway if we are stuck
		if (!DEBUG) loadingCloseTimeOut = setTimeout("closeLoadBar()",LOADINGTIMEOUTDELAY);
	} else {
		clearTimeout(loadingCloseTimeOut);
		previousNbOfLoadedImages = nbOfLoadedImages;
	}
	document.getElementById("LB1").style.width=Math.round(nbOfLoadedImages/pageImagesArraySize*100);
	if (nbOfLoadedImages == pageImagesArraySize){
		if (!DEBUG) closeLoadBar();
	}

}

// --- loading bar
function loading() {
	pageImagesArray = (document.getElementById("img")!=null? document.getElementById("img"):document.body).getElementsByTagName("img");
	pageImagesArraySize = pageImagesArray.length;
	loadingTimeOut = setInterval('images_loading_bar();', 150);
}

// --- close loading bar
function closeLoadBar() {
	if (DEBUG) {
		for(i=0;i<pageImagesArraySize;i++) {
			if (!pageImagesArray[i].complete) alert ("Not loaded: "+i+" - "+pageImagesArray[i].src);
		}
	}
	clearTimeout(loadingCloseTimeOut);
	clearInterval(loadingTimeOut);
	remove('LB0');
}

function highlightRange(event,index) {
	/*if (!event) event=window.event;
	var target = (event.srcElement) ? event.srcElement : event.target;
	if (target.id.indexOf('newRange') == -1) target = target.offsetParent;
	*/
	document.getElementById('newRange'+index).className = "ProduitHighlight";
	// target.offsetParent.id
}

function unlightRange(event,index) {
	document.getElementById('newRange'+index).className = "Produit";
}

// ----------- UTILITIES
function setElementContent(element,content) {
	if ( 'undefined' != typeof (document.getElementById(element)))
	document.getElementById(element).innerHTML = content;
}
function getElementContent(element) {
	return ( 'undefined' != typeof (document.getElementById(element)) ? document.getElementById(element).innerHTML : "");
}
function toggleVisibility(divName) {
	if ( ('undefined' != typeof (document.getElementById(divName)))
		&& ((document.getElementById(divName).style.display == "none")
		|| (document.getElementById(divName).style.display == ""
		    && (document.getElementById(divName).className.indexOf("hidden") > -1)
		)
	    )
	)
		insert(divName);
	else
		remove(divName);
	//document.getElementById(divName).className = (document.getElementById(divName).className == "hidden" ? "shown" : "hidden");
}
function insert(element) {
	if ('undefined' != typeof (document.getElementById(element)))
	document.getElementById(element).style.display = "block";
}
function remove(element) {
	if ('undefined' != typeof (document.getElementById(element)))
	document.getElementById(element).style.display = "none";
}
function hide(element) {
	if ('undefined' != typeof (document.getElementById(element)))
	document.getElementById(element).style.visibility = "hidden";
}
function show(element) {
	if ('undefined' != typeof (document.getElementById(element)))
	document.getElementById(element).style.visibility = "visible";
}
function isVisible(element) {
	return (document.getElementById(element).style.visibility == "visible");
}
function isDisplayed(element) {
	return (document.getElementById(element).style.display == "block" || document.getElementById(element).style.display == "online");
}
function moveElementTo(element, x,y) {
	document.getElementById(element).style.left = x;
	document.getElementById(element).style.top = y;
}


// ---- new
function toggleAdsContent(sense) {
	var pace = 5;
	var adscontent = document.getElementById('adscontent');
	var height = parseInt(adscontent.style.height);
	if (sense == 'up') {
			if (height > 5) {
				adscontent.style.height = height - pace;
				setTimeout('toggleAdsContent("up");',30);
			} else {
				hide('ads');
				document.getElementById('adscontent').style.height = '1px';
			}
	} else {

			if (height < 80) {
				if (height == 1) show('ads');
				adscontent.style.height = height + pace;
				setTimeout('toggleAdsContent("down");',30);
			} else {
				document.getElementById('adscontent').style.height = '85px';
				fadeIn('adsbar');
				setTimeout("adscontent.style.overflowY = 'auto';",1000);
			}
	}
}
function toggleAds() {
	if (isVisible('ads')) {
		adscontent.style.overflowY = 'hidden';
		fadeOut('adsbar');
		setTimeout('toggleAdsContent("up");',1000);
	} else {
		toggleAdsContent("down");
	}
}