/* ***************************************** Fonctions-outils ********************************************** */

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

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_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features)
{
	var tmp = window.open(theURL,winName,features);
	tmp.focus();
}

function PopupCentrer(page,largeur,hauteur,options)
{
	var top=(135);
	var left=(screen.width-largeur)/2;
	var tmp = window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
	tmp.focus();
}

function CatchEnter()
{
	if(window.event && window.event.keyCode == 13)	{return true;}
	else											{return false;}
}

function isInteger(val)
{
	return /^\d+$/.test(val);
}

function isDecimal(val)
{
	//return /^\d*[,\.]?\d*$/.test(val);
	return( (/^\d*[,\.]?\d+$/.test(val)) || (/^\d+[,\.]?\d*$/.test(val)) );
}

function msgFormValidation()
{
	var i,p,q,nm,label,test,num,min,max,errors='',args=msgFormValidation.arguments;
	
	for(i = 0; i < (args.length-2); i += 3)
	{
		val		= MM_findObj(args[i]);
		label	= args[i+1];
		test	= args[i+2];
		
		if(val)
		{
			nm = val.name;
			if( (val=val.value) != "")
			{
				if(test.indexOf('isEmail') != -1)
				{
					p = val.indexOf('@');
					if( (p < 1) || (p == (val.length-1)) ){errors += ' -> Le champ "'+label+'" doit contenir une adresse e-mail.\n';}
					//if( (p < 1) || (p == (val.length-1)) ){errors += ' -> The field "'+label+'" must contain an e-mail address.\n';}
				}
				else if(test != 'R')
				{
					if(test.indexOf('isINT') != -1)
					{
						if(!isInteger(val)){errors += ' -> Le champ "'+label+'" doit contenir un entier.\n';}
						//if(!isInteger(val)){errors += ' -> The field "'+label+'" must contain an integer.\n';}
					}
					else if(test.indexOf('isDEC') != -1)
					{
						if(!isDecimal(val)){errors += ' -> Le champ "'+label+'" doit contenir un nombre décimal.\n';}
						//if(!isDecimal(val)){errors += ' -> The field "'+label+'" must contain a decimal number.\n';}
					}
					else
					{
						num = parseFloat(val);
						if(isNaN(val)){errors += ' -> Le champ "'+label+'" doit contenir un nombre.\n';}
						//if(isNaN(val)){errors += ' -> The field "'+label+'" must contain a number.\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 "'+label+'" doit contenir un nombre entre '+min+' et '+max+'.\n';}
							//if( (num < min) || (max < num) ){errors += ' -> The field "'+label+'" must contain a number betwen '+min+' and '+max+'.\n';}
						}
					}
				}
			}
			else if(test.charAt(0) == 'R') errors += ' -> Le champ "'+label+'" est requis.\n';
			//else if(test.charAt(0) == 'R') errors += ' -> The field "'+label+'" is required.\n';
		}
	}
	
	return(errors);
}

function MM_validateForm()
{
	var i,p,q,nm,label,test,num,min,max,errors='',args=MM_validateForm.arguments;
	
	for(i = 0; i < (args.length-2); i += 3)
	{
		val		= MM_findObj(args[i]);
		label	= args[i+1];
		test	= args[i+2];
		
		if(val)
		{
			nm = val.name;
			if( (val=val.value) != "")
			{
				if(test.indexOf('isEmail') != -1)
				{
					p = val.indexOf('@');
					if( (p < 1) || (p == (val.length-1)) ){errors += ' - Le champ "'+label+'" doit contenir une adresse e-mail.\n';}
				}
				else if(test != 'R')
				{
					if(test.indexOf('isINT') != -1)
					{
						if(!isInteger(val)){errors += ' - Le champ "'+label+'" doit contenir un entier.\n';}
					}
					else if(test.indexOf('isDEC') != -1)
					{
						if(!isDecimal(val)){errors += ' - Le champ "'+label+'" doit contenir un nombre décimal.\n';}
					}
					else
					{
						num = parseFloat(val);
						if(isNaN(val)){errors += ' - Le champ "'+label+'" doit contenir un nombre.\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 "'+label+'" doit contenir un nombre entre '+min+' et '+max+'.\n';}
						}
					}
				}
			}
			else if(test.charAt(0) == 'R') errors += ' - Le champ "'+label+'" est requis.\n';
		}
	}
	
	//if(errors){alert('Les erreurs suivantes se sont produites:\n'+errors);}
	if(errors){alert('Certains champs du formulaire ne sont pas valides :\n'+errors);}
	document.MM_returnValue = (errors == '');
	return(errors == '');
}

function addToFavorites(url, title)
{
	if(document.all)
	{
		window.external.AddFavorite(url, title);
	}
	else//if(window.sidebar)
	{
		window.sidebar.addPanel(title, url, "");
	}
}


/* ***************************************** Fonctions-spécifiques ********************************************** */

function PreloadImg(val)
{
	MM_preloadImages('./img/menu_1_on.jpg'
					 ,'./img/menu_2_on.jpg'
					 ,'./img/menu_3_on.jpg'
					 ,'./img/menu_4_on.jpg'
					 ,'./img/menu_5_on.jpg'
					 ,'./img/menu_6_on.jpg'
					 ,'./img/menu_7_on.jpg');
}

/* ***************************************** Fonctions-spécifiques ********************************************** */

//
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScrollY()
{
	var yScroll;
	
	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}
	
	return yScroll;
}
function getPageScrollX()
{
	var xScroll;
	
	if (self.pageXOffset) {
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollLeft){	 // Explorer 6 Strict
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers
		xScroll = document.body.scrollLeft;
	}
	
	return xScroll;
}


//
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth  + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


function initLightbox()
{
	// the rest of this code inserts html at the top of the page that looks like this:
	//
	// <div id="overlay">
	//		<a href="#" onclick="hideLightbox(); return false;"><img id="loadingImage" /></a>
	//	</div>
	// <div id="lightbox">
	//		<a href="#" onclick="hideLightbox(); return false;" title="Click anywhere to close image">
	//			<img id="closeButton" />		
	//			<img id="lightboxImage" />
	//		</a>
	//		<div id="lightboxDetails">
	//			<div id="lightboxCaption"></div>
	//			<div id="keyboardMsg"></div>
	//		</div>
	// </div>
	
	var objBody = document.getElementsByTagName("body").item(0);
	
	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
//	var objOverlay = document.createElement("div");
//		objOverlay.setAttribute('id','overlay');
//		objOverlay.onclick = function () {closebox();}/* return false;*/
//		objOverlay.style.display = 'none';
//		objOverlay.style.position = 'absolute';
//		objOverlay.style.top = '0';
//		objOverlay.style.left = '0';
//		objOverlay.style.zIndex = '9';
//		objOverlay.style.width = '100%';
//	objBody.insertBefore(objOverlay, objBody.firstChild);
}

function openbox()
{
//alert('_'+window.innerWidth+'_');//1005 ?
//alert('_'+window.scrollMaxX+'_');//13 ?
//alert('_'+document.body.scrollWidth+'_');//988 1000
//alert('_'+document.body.offsetWidth+'_');//988 926
	document.getElementById('box').style.display = 'block';
	
	// set height of Overlay to take up whole page and show
	objOverlay = document.getElementById('overlay');
	arrayPageSize = getPageSize();
	
if (window.scrollMaxY) {  // IE6
	objOverlay.style.width  = ((document.body.offsetWidth+window.scrollMaxX-1) + 'px');
}
else if (document.body.scrollWidth > document.body.offsetWidth) { // IE7
	objOverlay.style.width  = (document.body.scrollWidth + 'px');
}
else { // FireFox
	objOverlay.style.width  = (document.body.offsetWidth + 'px');
}
	
//	objOverlay.style.height = (arrayPageSize[0] + 'px');
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.display = 'block';
}

function closebox()
{
	document.getElementById('box').style.display = 'none';
	
	objOverlay = document.getElementById('overlay');
	objOverlay.style.display = 'none';
}

window.onresize = function()
{//alert('You have changed the size of the window');
	closebox();
};

