
// Test du type de navigateur
var d, dom, ie, ie4, ie5x, moz, mac, win, lin, old, ie5mac, ie5xwin, op;

d = document;
n = navigator;
na = n.appVersion;
nua = n.userAgent;
win = ( na.indexOf( 'Win' ) != -1 );
mac = ( na.indexOf( 'Mac' ) != -1 );
lin = ( nua.indexOf( 'Linux' ) != -1 );

if ( !d.layers ){
	dom = ( d.getElementById );
	op = ( nua.indexOf( 'Opera' ) != -1 );
	konq = ( nua.indexOf( 'Konqueror' ) != -1 );
	saf = ( nua.indexOf( 'Safari' ) != -1 );
	moz = ( nua.indexOf( 'Gecko' ) != -1 && !saf && !konq);
	ie = ( d.all && !op );
	ie4 = ( ie && !dom );

	/*
	ie5x tests only for functionality. ( dom||ie5x ) would be default settings. 
	Opera will register true in this test if set to identify as IE 5
	*/

	ie5x = ( d.all && dom );
	ie5mac = ( mac && ie5x );
	ie5xwin = ( win && ie5x );
}
else {
	dom = op = konq = saf = moz = ie = ie4 = ie5x = ie5mac = ie5xwin = false;
}

document.onmousemove=get_mouse;

function get_mouse(e)
{
	if(document.getElementById('topdeck')) {
		//BOOLEEN pour checker quand y'a pas la place pour afficher un roll
		var blnAffichage = true;
		myDiv = document.getElementById('topdeck');
		if (moz)
		{
			//position de la souris
			var x = e.pageX;
			var y = e.pageY;
			//taille de la fenetre
			var innWidth  = window.innerWidth;
			var innHeight = window.innerHeight;
		}
		if (ie)
		{
			//position de la souris
			var x = event.x; //+document.body.scrollLeft;
			var y = event.y; //+document.body.scrollTop;
			//taille de la fenetre
			var innWidth  = document.body.offsetWidth;
			var innHeight = document.body.offsetHeight;
			
		}
		if (moz) {
			var scrollTop = window.pageYOffset;
			var scrollLeft = window.pageXOffset;
			var offsetTop = window.pageYOffset;
			var offsetLeft = window.pageXOffset;
		}
		if (ie) {
			var scrollTop = document.body.scrollTop;
			var scrollLeft = document.body.scrollLeft;
			var offsetTop = 0;
			var offsetLeft = 0;
		}
		//HORIZONTAL
		if ( myDiv.offsetWidth >= innWidth-20 )
			//ON AFFICHE RIEN, Y A PAS LA PLACE EN LARGEUR
			blnAffichage = false;
		else {
			//Y A LA PLACE EN LARGEUR
			if ( x-offsetLeft+10+myDiv.offsetWidth >= innWidth-20 ) {
				//CA PASSE PAS A DROITE, ON ESSAYE A GAUCHE
				if ( x-10 <=  myDiv.offsetWidth) {
					//CA PASSE PAS A GAUCHE, ON ESSAYE EN DESSOUS
					if ( y-offsetTop+10 + myDiv.offsetHeight >= innHeight -20 ) {
						//CA PASSE PAS EN DESSOUS, ON ESSAYE AU DESSUS
						if (y-10 <= myDiv.offsetHeight )
							//ON AFFICHE RIEN, PAS DE PLACE AU DESSUS
							blnAffichage = false;
						else {
							//CA PASSE AU DESSUS DONC ON PEUT DECALER A GAUCHE
							myDiv.style.left = innWidth - myDiv.offsetWidth + scrollLeft-20;
						}
					}
					else {
						//CA PASSE EN DESSOUS, ON PEUT DECALER A GAUCHE
						myDiv.style.left = innWidth - myDiv.offsetWidth + scrollLeft-20;
					}
				}
				else {
					//CA PASSE A GAUCHE
					myDiv.style.left =x-offsetLeft-10+scrollLeft- myDiv.offsetWidth;
				}
			}
			else {
				//CA PASSE A DROITE
				myDiv.style.left =x-offsetLeft+10+scrollLeft;
			}
		}
		//VERTICAL
		if ( myDiv.offsetHeight >= innHeight-20 || blnAffichage==false)
			//ON AFFICHE RIEN, Y A PAS LA PLACE EN HAUTEUR
			blnAffichage = false;
		else {
			//Y A LA PLACE EN HAUTEUR
			if ( y-offsetTop+10+myDiv.offsetHeight >= innHeight-20 ) {
				//CA PASSE PAS EN DESSOUS, ON ESSAYE AU DESSUS
				if ( y-10 <=  myDiv.offsetHeight) {
					//CA PASSE PAS AU DESSUS, ON ESSAYE A DROITE
					if ( x-offsetLeft+10 + myDiv.offsetLeft >= innLeft -20 ) {
						//CA PASSE PAS A DROITE, ON ESSAYE A GAUCHE
						if (x-10 <= myDiv.offsetWidth )
							//ON AFFICHE RIEN, PAS DE PLACE A GAUCHE
							blnAffichage = false;
						else {
							//CA PASSE A GAUCHE DONC ON PEUT DECALER AU DESSUS
							myDiv.style.top = innHeight - myDiv.offsetHeight +scrollTop-20;
						}
					}
					else {
						//CA PASSE A DROITE, ON PEUT DECALER AU DESSUS
						myDiv.style.top = innHeight - myDiv.offsetHeight +scrollTop-20;
					}
				}
				else {
					//CA PASSE AU DESSUS
					myDiv.style.top =y-offsetTop-10+scrollTop- myDiv.offsetHeight;
				}
			}
			else {
				//CA PASSE EN DESSOUS
				myDiv.style.top =y-offsetTop+10+scrollTop;
			}
		}
		//debug
		
		//on masque les liste deroulantes si necessaire
		//masque_select('topdeck');
		if (blnAffichage==false)
			kill();
	}	
}

function aide(objet,msg,bak,size,limit_x,decal_x,decal_xx,limit_y,decal_y,decal_yy) 
{
	if (bak=="")
		bak="#FFF3C3";
	//ICI on crée la DIV qui va nous servir à afficher l'aide
	if (!(document.getElementById("topdeck"))) {
		if (ie)
			var myDiv=document.createElement("<div id='topdeck' class='popper' style='z-index:5000;'></div>");
		else {
			var myDiv=document.createElement("div");
			myDiv.setAttribute("id",'topdeck');
			myDiv.setAttribute("class",'popper');
		}
		document.body.appendChild(myDiv);
	}
	else {
		myDiv=document.getElementById("topdeck");
	}
	if (typeof(msg)=='object') {
		var content = '<TABLE WIDTH="'+size+'" BORDER=1 class="planning">';
		for (k in msg) {
				if (k==2) { //DANS le cas des commentaires du planning qui sont référencé par un INPUT généré en bas du fichier
					if (document.getElementById(msg[k]).value!='')
						content += '<TR><TD BGCOLOR="'+bak[k]+'"><CENTER><FONT class="FontTexteNormalNoir"><i>'+document.getElementById(msg[k]).value+'</i></FONT></CENTER></TD></TR>';
				}
				else
					content += '<TR><TD BGCOLOR="'+bak[k]+'"><CENTER><FONT class="FontTexteNormalNoir">'+msg[k]+'</FONT></CENTER></TD></TR>';
		}
	}
	else if (msg!="") {
		var content = "<TABLE BORDER=1 BORDERCOLOR='#000000' CLASS=aide CELLPADDING=2 CELLSPACING=0 BGCOLOR="+bak+">";
		content += "<TR><td><FONT COLOR=#000000 face=verdana SIZE=1><nobr>"+msg+"</nobr></FONT></TD></TR>";
	}
	//SI Content est undefined, c'est que le message à afficher était '' donc on ne fait pas le roll
	if (content!=undefined) {
		content += '</TABLE>';
		myDiv.innerHTML = content;
		//Maintenant on laisse le onmousemouse placer la DIV avant de l'afficher
		get_mouse(this);
		myDiv.style.visibility = "visible";
		if (ie) 
			masque_select(myDiv.id);
	}
}

function kill()
{
		if (document.getElementById("topdeck")) {
			var myDiv = document.getElementById("topdeck");
			myDiv.style.visibility = 'hidden';
			myDiv.innerHTML = '';
		}
}

function masque_select(roll) {
	
	//var el = this.element;
	var el = document.getElementById(roll);
	var p = getAbsolutePos(el);
	var EX1 = p.x;
	var EX2 = el.offsetWidth + EX1;
	var EY1 = p.y;
	var EY2 = el.offsetHeight + EY1;
	
	var ar = document.getElementsByTagName("select");
	var cc = null;

	for (var i = ar.length; i > 0;) {
		cc = ar[--i];

		p = getAbsolutePos(cc);
		var CX1 = p.x;
		var CX2 = cc.offsetWidth + CX1;
		var CY1 = p.y;
		var CY2 = cc.offsetHeight + CY1;

		if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
			cc.style.visibility = "visible";
//			cc.disabled = false;
		} else {
			cc.style.visibility = "hidden";
//			cc.disabled = true;
		}
	}
}

function affiche_select() {
	
	var ar2 = document.getElementsByTagName('select');
	var cc2 = null;

	for (var i = ar2.length; i > 0;) {
		cc2 = ar2[--i];
		cc2.style.visibility = "visible";			
	}
	
}

function getAbsolutePos(el) {
	
	var obj_type = el;
	if(el) 
	{
		var r = { x: el.offsetLeft, y: el.offsetTop };
		if (el.offsetParent) {
			var tmp = getAbsolutePos(el.offsetParent);
			r.x += tmp.x;
			r.y += tmp.y;
		}
		return r;
	}
}

