//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 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;
}