/*  --------------------------------------------------------------
	création d'un élément du DOM
*/
var append = function(dest, tagName, type) {
	var obj = document.createElement(tagName);

	// IE : si c'est un button ou input on doit le "typer" avant de l'insérer au DOM
	try {obj.type = type} catch(e){}

	obj = dest.appendChild(obj);
	return obj;
};

/*  --------------------------------------------------------------
	sélection d'un élément du DOM
*/
var getById = function(id) {
	if (document.getElementById && document.getElementById(id))
		return document.getElementById(id);
	else
		return false;
}; 

/*  --------------------------------------------------------------
	divers GUI
*/
var px = function(v) {
	return v + "px";
};

var setOpacity = function(obj, opacity) {
	try {
		obj.style.opacity		= opacity;
		obj.style.MozOpacity	= opacity;
		obj.style.filter		= "alpha(opacity=" + (opacity  * 100) + ")";
	} catch(e) {alert(e);}
};

/*  --------------------------------------------------------------
	cookie
*/
var getcookie = function() {
	// lecture et tableau des cookie
	var query = document.cookie;
	var reg = new RegExp(/; /g);
	query = query.replace(reg, ";");
	var fields = query.split(";"); 
	var cookie = new Array();
	for (var i = 0; i < fields.length; i++) {
		fields[i] = fields[i].split("="); 
		cookie[fields[i][0]] = fields[i][1];
	}
	return cookie;
};

var setcookie = function (name, value, lifetime) {
	if (lifetime) {
		var date = new Date();
		date.setTime(date.getTime() + lifetime);
		var expires = "; expires=" + date.toGMTString();
	}
	else var expires = ""; // infini
	document.cookie = name + "=" + value + expires + "; path=";
};

/*  --------------------------------------------------------------
	gestion position absolute (hors flux) et zIndex : 
	--------------------------------------------------------------
	masque les contrôles 
	- pendant le chargement du document -> voir BODY_ONLOAD()
	- au début de l'affichage du popup -> voir popup.js->open_popup_detail_start()
	
	affiche les contrôles
	- à la fin de l'affichage du popup -> voir popup.js->close_popup_right_slide_stop()
*/
var show_onload = function() {
	for (obj = 0; obj < 3; obj++) {
		switch(obj) {
			case 0:
				var coll = document.getElementsByTagName("img");
				break;
			case 1:
				var coll = document.getElementsByTagName("div");
				break;
			case 2:
				var coll = document.getElementsByTagName("a");
				break;
		}
		for (var i = 0; i < coll.length; i++) {
			if (coll[i].className.indexOf("hide_onload") >= 0) {
				coll[i].style.visibility = "visible";
			}
		}
	}
}

var hide_onpopup = function() {
	for (obj = 0; obj < 3; obj++) {
		switch(obj) {
			case 0:
				var coll = document.getElementsByTagName("img");
				break;
			case 1:
				var coll = document.getElementsByTagName("div");
				break;
			case 2:
				var coll = document.getElementsByTagName("a");
				break;
		}
		for (var i = 0; i < coll.length; i++) {
			if (coll[i].className.indexOf("hide_onpopup") >= 0) {
				coll[i].style.visibility = "hidden";
			}
		}
	}
};
var show_onpopup = function() {
	for (obj = 0; obj < 3; obj++) {
		switch(obj) {
			case 0:
				var coll = document.getElementsByTagName("img");
				break;
			case 1:
				var coll = document.getElementsByTagName("div");
				break;
			case 2:
				var coll = document.getElementsByTagName("a");
				break;
		}
		for (var i = 0; i < coll.length; i++) {
			if (coll[i].className.indexOf("hide_onpopup") >= 0) {
				coll[i].style.visibility = "visible";
			}
		}
	}
};

/*  --------------------------------------------------------------
	gestion animation
*/
var lock_all_buttons = function(button) {
	var a = button.parentNode.getElementsByTagName("a");
	for (i = 0; i < a.length; i++)
		a[i].clicked = true;
};
var unlock_all_buttons = function(button) {
	var a = button.parentNode.getElementsByTagName("a");
	for (i = 0; i < a.length; i++)
		a[i].clicked = false;
};

var reduce_speed = 30;
var reduce_min = 1; // gestion IE : hauteur mini = 1px (voir height div ci-dessous)
var reduce_div = function(div, window_scroll, button) {
	var offset = reduce_speed;
	if (div.clientHeight > reduce_min) {
		var h = div.clientHeight - offset;
		div.style.height = px(h < reduce_min ? reduce_min : h);
		setTimeout(function(){reduce_div(div, window_scroll, button)}, 10);
		if (window_scroll) window.scrollBy(0, -offset);
		if (button) lock_all_buttons(button);
	}
	else {
		div.style.height = px(reduce_min);
		if (window_scroll) window.scrollBy(0, 0);
		if (button) unlock_all_buttons(button);
	}
};

var elapse_speed = reduce_speed;
var elapse_div = function(div, window_scroll, button) {
	var offset = elapse_speed;
	div.scrollTop = div.scrollHeight;
	if (div.scrollTop > 0) {
		var h = div.clientHeight + offset;
		div.style.height = px(h);
		setTimeout(function(){elapse_div(div, window_scroll, button)}, 10);
		if (window_scroll) window.scrollBy(0, -offset);
		if (button) lock_all_buttons(button);
	}
	else {
		if (window_scroll) window.scrollBy(0, 0);
		if (button) unlock_all_buttons(button);
	}
	//if (!nav.explorer) div.scrollTop = 0;
};

/*  --------------------------------------------------------------
	gestion favoris
*/
var mioterr = "mio" + String.fromCharCode(39) + "Terr";
var addbookmark = function(url, title) {
	try {
		if (nav.firefox) {
			window.sidebar.addPanel(title, url, ""); 
		}
		else if (nav.explorer) {
			window.external.addFavorite(url, title); 
		}
		else {
			alert("votre navigateur n'autorise pas l'ajout de favoris");
		}
	}
	catch(e) {
		alert("votre navigateur n'autorise pas l'ajout de favoris");
	}
}
