//Checking du navigateur
var uAgent=navigator.userAgent;
var ns4 = (document.layers)? true:false;   //NS 4 
var ie4 = (document.all)? true:false;   //IE 4 
var dom = (document.getElementById)? true:false;   //DOM 
var ope = uAgent.indexOf("Opera")>-1 && dom? true:false; // + OP5
var ie5 = (dom && ie4 && !ope)?true:false; // IE5
var ns6 = (dom && uAgent.indexOf("Netscape")>-1)? true:false; // + NS 6
var khtml = uAgent.indexOf("khtml")>-1? true:false; // + Konqueror
//alert("UserAgent: "+uAgent+"\nns4 :"+ns4+"\nie4 :"+ie4+"\ndom :"+dom+"\nie5 :"+ie5+"\nns6 :"+ns6+"\nope :"+ope+"\nkhtml :"+khtml);

//gestion des objets selon les navigateurs
function ob(id) {
	if (dom) {
		obj = document.getElementById(id);
		return obj;
	}
	else if (ie4) obj = document.all[id];
	else if (ns4) obj = document.anchors[id];
	else obj=false;
	return obj;
}

// Fade
Array.prototype.inArray=function(str){//on modifie l'objet Array
	for(i=0; i< this.length; i++)if(this[i].toString()==str)return i;
	return -1;
}

//On modifie l'objet String
String.prototype.exist=function(){return (this=="undefined"?false:true);};

//Opacité
function setOpacity(id,alpha,isObj) {
	if(!dom)return;
	var object = isObj?id:ob(id); 
	if(String(typeof object.filters).exist())object.filters.alpha.opacity = alpha;
	else if(String(typeof object.style.opacity).exist()) object.style.opacity = (alpha/100);
	else if(String(typeof object.style.KhtmlOpacity).exist()) object.style.KhtmlOpacity = (alpha/100);
	else if(String(typeof object.style.MozOpacity).exist()) object.style.MozOpacity = (alpha/100);
}

function getOpacity(id,isObj){
	if(!dom)return;
	var object = isObj?id:ob(id), alpha=null; 
	if(String(typeof object.filters).exist()) alpha = object.filters.alpha.opacity;
	else if(String(typeof object.style.opacity).exist()) alpha = object.style.opacity*100;//css3 propertie
	else if(String(typeof object.style.KhtmlOpacity).exist()) alpha = object.style.KhtmlOpacity*100;
	else if(String(typeof object.style.MozOpacity).exist()) alpha = object.style.MozOpacity*100;
	return alpha;
}

// Fading
vit=5; //temps entre chaque addition d'opacité(+ petit -> + de qualité -> + dur pour le navigateur) 
add=4; //valeur à additionner (idem)
nObj=0;

fadeObjects=new Object();
fadeTimers=new Object();
fadeIds=new Array();
function fade2(object, destOp){
	if (!dom) return;
	if (object.toString().indexOf("[object")==-1){
		setTimeout("fade2("+object+","+destOp+")",0);
		return;
	}
	alpha=getOpacity(object,true);
	index=fadeIds.inArray(object.id);
	if(index>-1) 
		clearTimeout(fadeTimers[index]);
	else {
		index=nObj++;
		fadeIds[index]=object.id;
	}
	diff = destOp-alpha;
	direction=1;
	if (alpha > destOp)
		direction=-1; //de - en - opaque
	alpha+=direction * Math.min(direction*diff,add);//ajoute le + petit entre la diférence et add 
	setOpacity(object,alpha,true);
	alpha=getOpacity(object,true);
	object.offsetLeft;
	if (Math.round(alpha) != destOp){
		fadeObjects[index]=object;
		fadeTimers[index]=setTimeout("fade2(fadeObjects["+index+"],"+destOp+")",vit);
	}
	return;
}
