//fonction qui génère l'objet ajax permettant de faire les appels serveur sans recharger la page
//en fonction du navigateur, la syntaxe change (vive IE)
function makeAjaxObject()
{
	//variable qui contiendra notre objet ajax
	var ajaxObject;
	
	//on va essayer de faire l'objet ajax pour les autres navigateur que IE
	try
	{
		//Firefox, Opera 8.0+, Safari
		ajaxObject = new XMLHttpRequest();
	}
	catch (e)
	{
		//si on arrive ici, c'est que ça a raté et qu'on est donc sur IE, pour IE il y a 2 façon de générer notre objet
		try
		{
			//première façon (plus récente sans doute)
			ajaxObject = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			//si ça rate, on essaie la 2ème méthode
			try
			{
				ajaxObject = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				//si ça rate encore, notre navigateur n'est sans doute pas compatible ajax...
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}	
	
	//on retourne notre object ajax
	return ajaxObject;
}

//fonction qui va effacer toutes les ligne de la table dont le nom est reçu en paramètre
function clearTable(tableName)
{
	//on récupère notre table à partir de son nom
	var myTable = document.getElementById(tableName);
	
	//tant qu'il reste des lignes, on efface la première ligne
	while(myTable.rows.length > 0)
	{
		myTable.deleteRow(0);
	}
}

//fonction qui va vider la combobox passée en param
function ClearCombo(combo)
{
	while(combo.childNodes.length > 0) 
	{
		combo.removeChild(combo.childNodes[0])
	}
}

//fonction qui renvoie la valeur (text) de la radiolist passée en param
function getRadioSelectedText(radioObj) 
{
	if(!radioObj)
		return "";
	
	for(var i = 0; i < radioObj.length; i++) 
	{
		if(radioObj[i].checked) 
		{
			return radioObj[i].value;
		}
	}
	
	return "";
}

//fonction qui convertit une date sous forme de string en date (pour qu'on puisse comparer avec une autre date)
function getDate(strDate)
{	  
	var vars = strDate.split("/");
				
	day = vars[0];
	month = vars[1];
	year = vars[2];
	d = new Date(0);
	d.setDate(day);
	d.setMonth(month-1);
	d.setFullYear(year); 
	return d;  
}

//fonction qui compare 2 dates 
//   0 si date_1=date_2
//   1 si date_1>date_2
//  -1 si date_1<date_2	
function compareDate(date_1, date_2)
{
	if(date_1.toDateString() == date_2.toDateString())
	{
		return 0;
	}
	else
	{
		diff = date_1.getTime() - date_2.getTime();
		return (diff==0?diff:diff/Math.abs(diff));
	}
}

//fonction qui converti un array en string pour passer en param POST à un page aspx
function serializeArray(datas)
{
	if(!datas)
		return "";
	
	var out = "";
	
	for(var i = 0; i < datas.length; i++) 
	{
		out += datas[i];
		
		if(i < datas.length-1)
		{
			out += ", ";
		}
	}
	
	return out;
}

//fonction qui renvoie la valeur du paramètre 'variable' de la query string
function getQueryVariable(variable) 
{
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++) 
	{
		var pair = vars[i].split("=");
		if (pair[0] == variable) 
		{
			return pair[1];
		}
	}
	return "";
}

//fonction qui teste si une chaîne est une nombre
function IsNumeric(sText)
{
	var ValidChars = "0123456789";
	var IsNumber = true;
	var Char;
	
	for(i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i); 
		
		if (ValidChars.indexOf(Char) == -1) 
        {
			IsNumber = false;
        }
	}
	
	return IsNumber;
}

//fonction qui centre un element dans la page
function centerItem(element) 
{
	var height=document.getElementById(element).offsetHeight;//hauteur de l'élément à positionner
	var width=document.getElementById(element).offsetWidth;//largeur de l'élément à positionner
	myParent=document.body;
	var pHeight=myParent.offsetHeight;//Hauteur de l'élément parent
	var pWidth=myParent.offsetWidth;//Largeur de l'élément parent
	var sTop=myParent.scrollTop;//Hauteur de défilement de l'élément parent
	var sLeft=myParent.scrollLeft;//Longueur de défilement de l'élément parent
	var posY=(pHeight/2)-(height/2)+sTop;//Calcul de la position en Y
	var posX=(pWidth/2)-(width/2)+sLeft;//Calcul de la position en X
	document.getElementById(element).style.top=posY+"px";
	document.getElementById(element).style.left=posX+"px";
}

//renvoie la position de la souris (tableau contenant x en 0 et y en 1)
function getMousePosition(event)
{
	var e = event || window.event;
	var scroll = new Array((document.documentElement && document.documentElement.scrollLeft) || window.pageXOffset || self.pageXOffset || document.body.scrollLeft,(document.documentElement && document.documentElement.scrollTop) || window.pageYOffset || self.pageYOffset || document.body.scrollTop);;
	return new Array(e.clientX + scroll[0] - document.body.clientLeft,e.clientY + scroll[1] - document.body.clientTop);
}

//renvoie la position d'un contrôle HTML (tableau contenant x en 0 et y en 1)
function getPosition(element)
{
	var left = 0;
	var top = 0;
	/*On récupère l'élément*/
	var e = document.getElementById(element);
	/*Tant que l'on a un élément parent*/
	while (e.offsetParent != undefined && e.offsetParent != null)
	{
		/*On ajoute la position de l'élément parent*/
		left += e.offsetLeft + (e.clientLeft != null ? e.clientLeft : 0);
		top += e.offsetTop + (e.clientTop != null ? e.clientTop : 0);
		e = e.offsetParent;
	}
	return new Array(left,top);
}

//renvoie le x absolu (par rapport à l'écran, pas par rapport au parent)
function getX( oElement )
{
	var iReturnValue = 0;
	
	while( oElement != null ) 
	{
		iReturnValue += oElement.offsetLeft;
		oElement = oElement.offsetParent;
	}
	
	return iReturnValue;
}

//renvoie le y absolu (par rapport à l'écran, pas par rapport au parent)
function getY( oElement )
{
	var iReturnValue = 0;
	
	while( oElement != null ) 
	{
		iReturnValue += oElement.offsetTop;
		oElement = oElement.offsetParent;
	}
	
	return iReturnValue;
}

function getTotalHeight()
{
	var viewportheight;

	// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight

	if (typeof window.innerWidth != 'undefined')
	{
		viewportheight = window.innerHeight;
	}
	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	else if (typeof document.documentElement != 'undefined'
	&& typeof document.documentElement.clientWidth != 'undefined' 
	&& document.documentElement.clientWidth != 0)
	{
		viewportheight = document.documentElement.clientHeight;
	}
	// older versions of IE
	else
	{
		viewportheight = document.getElementsByTagName('body')[0].clientHeight;
	}

	return viewportheight;
}

function getTotalWidth()
{
	var viewportwidth;

	// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
	if (typeof window.innerWidth != 'undefined')
	{
		viewportwidth = window.innerWidth;
	}
	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	else if (typeof document.documentElement != 'undefined'	
	&& typeof document.documentElement.clientWidth != 'undefined' 
	&& document.documentElement.clientWidth != 0)
	{
		viewportwidth = document.documentElement.clientWidth;
	}
	// older versions of IE
	else
	{
		viewportwidth = document.getElementsByTagName('body')[0].clientWidth;
	}

	return viewportwidth;
}
