function LZ(x) {
	if(typeof(x) == 'string') { return (parseInt(x)<0||parseInt(x)>9?'':'0') + x; } else { return x; }
}

function addZero(x,n) {
	n = (n > 1) ? n : 1;
	x = parseInt(x);
	if(undefined != x && 0 < x && x < Math.pow(10,n)) {
		z = (x < 10) ? Math.ceil(Math.pow(10,n)/x) : Math.floor(Math.pow(10,n)/x);
		for(i=0;Math.pow(10,i)<=z;i++) {
			x = '0'+x;
		}
	}
	return x;
}

function extendElementWidth(element,finalWidth) {
	initialWidth = parseInt(element.offsetWidth);
	var timeInterval = window.setInterval(function() {
		if(parseInt(element.offsetWidth) >= finalWidth) { clearInterval(timeInterval); return false; }
		element.style.width	= (parseInt(element.offsetWidth) + 1) + "px";
		if(finalLeft && parseInt(element.style.left) > finalLeft) {
			element.style.left = (parseInt(element.style.left) - 1) + "px";
		}
	}, 1);
}


function extendElementHeight(element,finalHeight,finalTop) {
	initialHeight = parseInt(element.offsetHeight);
	var timeInterval = window.setInterval(function() {
		if(parseInt(element.offsetHeight) >= finalHeight) { clearInterval(timeInterval); return false; }
		element.style.height	= (parseInt(element.offsetHeight) + 1) + "px";
		/*
		if(finalLeft && parseInt(element.style.left) > finalLeft) {
			element.style.left = (parseInt(element.style.left) - 1) + "px";
		}
		*/
	}, 1);
}

function getHTMLElementPosition(element) {
	var posX = 0;
	var posY = 0;
	//-- suivant type en parametre
	if(typeof(element) == 'object') { var HTMLElement = element; }
	else { var HTMLElement = document.getElementById(element); }
	//-- Si l'objet existe
	if(HTMLElement) { 
		//-- Recup. Position Objet
		posX = HTMLElement.offsetLeft;
		posY = HTMLElement.offsetTop;
		//-- Si propriete existe
		if(HTMLElement.offsetParent){
			//-- Tant qu'un parent existe
			while(HTMLElement = HTMLElement.offsetParent) {
				if(HTMLElement.offsetParent) { // on ne prend pas le BODY
					//-- Ajout position Parent
					posX += HTMLElement.offsetLeft;
					posY += HTMLElement.offsetTop;
				}
			}
		}
	}
	//-- Retour des positions
	return ({left: posX, top: posY});
}

function getPageScroll() {
	var Left;
	var Top;
	var DocRef;

	if(window.innerWidth) {
		with(window) {
			Left = pageXOffset;
			Top = pageYOffset;
		}
	}
	else { // Cas Explorer a part
		if(document.documentElement && document.documentElement.clientWidth) { DocRef = document.documentElement; }
		else { DocRef = document.body; }
		with(DocRef) { 
			Left = scrollLeft;
			Top = scrollTop;
		}
	}
	return({top:Top, left:Left});
}

function Add_Event(obj_,event_,func_,mode_) {
	if(obj_.addEventListener) { obj_.addEventListener( event_, func_, mode_? mode_:false); }
	else { obj_.attachEvent( 'on'+event_, func_); }
}

//	DÉPLACE LA PAGE AUX COORDONNÉES PASSÉES EN PARAMÈTRES
function Deplace_Doc( x_, y_){
	window.scrollTo( x_, y_);
	return(true);
}




function checkTimeTransfer(cbx){
	var tmp;
	tmp = cbx.value.substr(0,cbx.value.indexOf(':'));
	if(tmp>=20 || tmp<=7) {
		alert('En cas d’arrivée tardive (après 20 heures), un supplément de 15 Euros vous sera demandé pour votre transfert.');
	}
}


var GlSpecialOffer = new Array();

function addOrRemoveClassName(element,classname) {
	if(arguments.length == 1) { element = this; classname = arguments[0]; }
	else if(typeof(element) == 'string') { element = document.getElementById(element); }
	else if(typeof(element) != 'object') { window.alert(typeof(element)); return false; }
	
	isFound = false;
	elementClass = element.className.split(' ');
	finalClass = '';
	for(i = 0; i < elementClass.length; i++) {
		if(elementClass[i] == classname) {
			isFound = true;
			foundedIndex = i;
		}
		else {
			if(i != 0) { finalClass += ' '; }
			finalClass += elementClass[i];
		}
	}
	
	element.className = finalClass;
	
	if(!isFound) { element.className += ' ' + classname; }
	
	element.className.replace(/^\s+/g,'').replace(/\s+$/g,'');
	return true;
}

function addClassName(element,classname) {
	if(arguments.length == 1) { element = this; classname = arguments[0]; }
	else if(typeof(element) == 'string') { element = document.getElementById(element); }
	else if(typeof(element) != 'object') { /*window.alert(typeof(element)); */return false; }
	
	elementClass = element.className.split(' ');
	finalClass = '';
	for(i = 0; i < elementClass.length; i++) {
		if(elementClass[i] == classname) { return true; }
		else {
			if(i != 0) { finalClass += ' '; }
			finalClass += elementClass[i];
		}
	}
	element.className = finalClass + ' ' + classname;
	element.className.replace(/^\s+/g,'').replace(/\s+$/g,'');
	return true;
}

function removeClassName(element,classname) {
	if(arguments.length == 1) { element = this; classname = arguments[0]; }
	else if(typeof(element) == 'string') { element = document.getElementById(element); }
	else if(typeof(element) != 'object') { /*window.alert(typeof(element)); */return false; }
	
	elementClass = element.className.split(' ');
	finalClass = '';
	for(i = 0; i < elementClass.length; i++) {
		if(elementClass[i] !== classname) {
			if(i != 0) { finalClass += ' '; }
			finalClass += elementClass[i];
		}
	}
	element.className = finalClass;
	element.className.replace(/^\s+/g,'').replace(/\s+$/g,'');
	return true;
}



//	AFFICHE LE CALENDRIER (en général: quand 'clique' sur l'icone)
function setCalendar(select_name_day,select_name_month,select_name_year,id) {
	var gllinkname = "div_calendar_" + id;
	var calendExp = CalendarPopup(gllinkname); // Affichage dans un <div>
	calendExp.setCssPrefix("CAL_STYLE");
	today = new Date;
	mo = today.getMonth()+1;
	day = today.getDate()-1;
	year = today.getFullYear();
	if (day < 1){
		mo--;
		if (mo == 0){ mo = 12; year = year-1; }
		if (mo == 2) day = 28;
		if ((mo == 1) || (mo == 3) || (mo == 5) || (mo == 7) || (mo == 8) || (mo == 10) || (mo == 12)) day = 31; else day = 30;
	}
	date = year+"-"+mo+"-"+day;
	calendExp.addDisabledDates(null, date);
	calendExp.addDisabledDates((year + 1) + "-12-31", null);
	/*
	//	RETRAIT DES DATES COMPLÈTES DU CALENDRIER (test: si prix - special extra == 0 alors dates bloquées)
	if(GlSpecialOffer[id]) {
		for(i = 0; i < GlSpecialOffer[id].length; i++) {
			date_start	= new Date(GlSpecialOffer[id][i][0]);
			date_end	= new Date(GlSpecialOffer[id][i][1]);
			window.alert(GlSpecialOffer[id][i][0] + '\n' + date_start + '\n' + date_start.getFullYear()+'-'+(date_start.getMonth()+1)+'-'+date_start.getDate());
			calendExp.addDisabledDates(date_start.getFullYear()+'-'+(date_start.getMonth()+1)+'-'+date_start.getDate(),date_end.getFullYear()+'-'+(date_end.getMonth()+1)+'-'+date_end.getDate());
		}
	}
	*/
	calendExp.select(gllinkname,'dd-MM-yyyy',select_name_day + '_' + id,select_name_month + '_' + id,select_name_year + '_' + id);
}









//	VÉRIFIE SI DES OFFRES SPÉCIALES SONT ASSOCIÉES AU PRODUIT
function checkSpecialOffer(select_day_id,select_month_id,select_year_id,product_id) {
	if(typeof(GlSpecialOffer) == 'undefined') { return false; }
	if(typeof(GlSpecialOffer[product_id]) == 'undefined') { return false; }
	
	var date_app = new Date(document.getElementById(select_year_id).value,(document.getElementById(select_month_id).value-1),document.getElementById(select_day_id).value);
	
	hasSpecialOffer		= false;
	unit_price			= parseFloat(document.getElementById('product_price_' + product_id).value);
	quantity			= parseInt(document.getElementById('product_quantity_' + product_id).value);
	span_unit_price		= document.getElementById('product_row_unit_price_' + product_id);
	span_total_price	= document.getElementById('product_row_total_price_' + product_id);
	
	for( i = 0; i < GlSpecialOffer[product_id].length; i++ ) {
		if(GlSpecialOffer[product_id][i][0] <= date_app && GlSpecialOffer[product_id][i][1] >= date_app) {
			window.alert(GlSpecialOffer[product_id][i][3]);
			unit_price += (parseFloat(GlSpecialOffer[product_id][i][2])) / 10;
			span_unit_price.innerHTML	= unit_price;
			span_total_price.innerHTML	= unit_price * quantity;
			hasSpecialOffer = true;
		}
	}
	if(!hasSpecialOffer) {
		span_unit_price.innerHTML	= unit_price;
		span_total_price.innerHTML	= unit_price * quantity;
	}
}

//	DÉTERMINE LE NOMBRE DE JOURS EN FONCTION DU MOIS ET DE L'ANNÉE SÉLECTIONNÉS
function setDaysNumber(select_day_id,select_month_id,select_year_id) {
	select_day		= document.getElementById(select_day_id);
	select_month	= document.getElementById(select_month_id);
	select_year		= document.getElementById(select_year_id);
	option = select_day.lastChild;
	nbOptionCachee = 0;
	switch(select_month.value) {
		case  "1":
		case  "3":
		case  "5":
		case  "7":
		case  "8":
		case "01":
		case "03":
		case "05":
		case "07":
		case "08":
		case "10":
		case "12":
			nbOptionCachee = 0;
			break;
		case  "4":
		case  "6":
		case  "9":
		case "04":
		case "06":
		case "09":
		case "11":
			nbOptionCachee = 1;
			if(select_day.value == 31) { select_day.value = 30; }
			break;
		case  "2":
		case "02":
			if((select_year.value % 4) == 0 && (select_year.value % 100) !== 0 || (select_year.value % 400) == 0) { 
				nbOptionCachee = 2;
				if(select_day.value > 29) { select_day.value = 29; }
			}
			else {
				nbOptionCachee = 3;
				if(select_day.value > 28) { select_day.value = 28; }
			}
	}
	nbOptions = select_day.childNodes.length;
	for(i = 0; i < nbOptions; i++) {
		if(select_day.childNodes[i].value > (31 - nbOptionCachee)) {
			select_day.removeChild(select_day.childNodes[i]);
			i--;
			nbOptions--;
		}
	}
	while(i < (31-nbOptionCachee)) {
		option = document.createElement("option");
		option.value = i+1;
		option.texte = i+1;
		option.innerHTML = i+1;
		select_day.appendChild(option);
		i++;
	}
}

//	AFFICHE LE RÉSULTAT DE L'OPÉRATION DANS L'ÉLÉMENT PASSÉ EN PARAMÈTRE
function priceCalculation(product_id) {
	unit_price	= parseInt(document.getElementById('product_row_unit_price_' + product_id).innerHTML);
	quantity	= parseInt(document.getElementById('product_quantity_' + product_id).value);
	total_price	= document.getElementById('product_row_total_price_' + product_id);
	if(isNaN(unit_price * quantity)) { total_price.innerHTML = 0; }
	else { total_price.innerHTML = unit_price * quantity; }
	return true;
}

//	AFFICHE LE RÉSULTAT DE L'OPÉRATION DANS L'ÉLÉMENT PASSÉ EN PARAMÈTRE
function returnCalculation(value_1,value_2,element_id) {
	element = document.getElementById(element_id);
	if(element.value) { element.value = value_1 * value_2; }
	else { element.innerHTML = value_1 * value_2; }
	return true;
}



function getLeft(el) {
	var offsetLeft = 0;
	while(el != null) { offsetLeft += el.offsetLeft; el = el.offsetParent; }
	return offsetLeft;
}

function getTop(el) {
	var offsetTop = 0;
	while(el != null) { offsetTop += el.offsetTop; el = el.offsetParent; }
	return offsetTop;
}

function sortIntegerAsc(int1, int2)		{ return int1-int2; }
function sortIntegerDesc(int1, int2)	{ return int2-int1; }

function getXhr() {
	try { return new ActiveXObject("Msxml2.XMLHTTP"); }
	catch(e) { }
	try { return new ActiveXObject("Microsoft.XMLHTTP"); }
	catch(e) { }
	try { return new XMLHttpRequest(); }
	catch(e) { }
	return false;
}

function openPopUp(url,name,parameters) {
	newWindow = window.open(url,name,parameters);
	newWindow.focus();
}
	
function cleanWhiteSpace(element) {
	for(var i = 0; i < element.childNodes.length; i++) {
		var node = element.childNodes[i];
		if(node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
			element.removeChild(node);
		}
	}
}