var IE6 = false, IE7 = false,
FIREFOX3 = false, FIREFOX2 = false, FIREFOX = false,
NETSCAPE7 = false, NETSCAPE = false,
OPERA9 = false, OPERA = false,
AUTRE = false;
var strChUserAgent = navigator.userAgent;
var intSplitStart = strChUserAgent.indexOf("(",0);
var intSplitEnd = strChUserAgent.indexOf(")",0);
var strChStart = strChUserAgent.substring(0,intSplitStart);
var strChMid = strChUserAgent.substring(intSplitStart, intSplitEnd);
var strChEnd = strChUserAgent.substring(strChEnd);

if(strChMid.indexOf("MSIE 7") != -1)
IE7 = true;
else if(strChMid.indexOf("MSIE 6") != -1)
IE6 = true;
else if(strChEnd.indexOf("Firefox/2") != -1)
FIREFOX2 = true;
else if(strChEnd.indexOf("Firefox/3") != -1)
FIREFOX3 = true;
else if(strChEnd.indexOf("Firefox") != -1)
FIREFOX = true;
else if(strChEnd.indexOf("Netscape/7") != -1)
NETSCAPE7 = true;
else if(strChEnd.indexOf("Netscape") != -1)
NETSCAPE = true;
else if(strChStart.indexOf("Opera/9") != -1)
OPERA9 = true;
else if(strChStart.indexOf("Opera") != -1)
OPERA = true;
else
AUTRE = true;
    
/**
 * fonction qui permet d'ajouter un événement à un objet
 * exemple : ajout d'un alert au chargement de la page
 * addEvent(window, 'load', function() {alert("ok")});
 * @obj : l'objet auquel on attache l'événement 
 * @evType : type d'événement
 * @fn : fonction à appelée
 * @return true si succès, false sinon 
 */
function addEvent(obj, evType, fn){
  if (obj.addEventListener)
  {
    obj.addEventListener(evType, fn, true);
    return true;
  } else if (obj.attachEvent)
  {
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else 
  {
    return false;
  }
}

/**
 * fonction qui renvoi le permier fils d'un élément selon un nom d'élément
 * exemple : recherche du permier élément div fils du body
 * getFirstChildElement(document.body,"div");
 * @element : element père 
 * @elementSearch : nom de l'élément recherché
 * @return l'élément si succès, null s'il n'en existe pas
 */
function getFirstChildElement(element,elementSearch)
{
  var fils = element.childNodes;
  var retour=null;
  for(var i=0;i<fils.length;i++)
  {
    var currentFils=fils[i];
    var nodeName = currentFils.nodeName;
    if(nodeName.toUpperCase()===elementSearch.toUpperCase())
    {
      retour=currentFils;
      break;
    }
  }
  return retour;
}


/**
 * fonction qui renvoi la taille du document courant
 * la taille réelle pas la taille de la fenêtre, ni la résolution
 * @return array : tab[0]=Width ; tab[1]=Height
 */ 
function getDocumentSize()
{
  if (document.body)
  {
    var larg = (document.body.clientWidth);
    var haut = (document.body.clientHeight);
  } 
  else
  {
    var larg = (window.innerWidth);
    var haut = (window.innerHeight);
  }
  return new Array(larg,haut);
}


/**
 * Fonction equivalent du trim
 */
function trim(chaine)
{
   valueTmp = chaine.replace(/(^\s*)|(\s*$)/g,'');

   return(valueTmp);
}

/**
 * Fonction qui permet de supprimer un element HTML
 */
function delElement(element)
{
	element.parentNode.removeChild(element);
}

/**
 * Fonction recherchant une chaine dans une autre et qui la remplace par une troisième
 */
function replaceStringInString(chaine, cherche, remplace) {
  var ind = chaine.indexOf(cherche);
  while (ind > -1) {
    chaine = chaine.substr(0, ind) + remplace + chaine.substr(ind+cherche.length);
    ind = chaine.indexOf(cherche);
  }
  return ( chaine );
}

/**
 * Fonction renvoyant la valeur select de la selectBox passée en param
 */
function getSelectValue(selectBox) {
	if(selectBox.selectedIndex==-1)
	{
		return null;
	}
	if(selectBox.selectedIndex)
	{
		return ( selectBox.options[selectBox.selectedIndex].value );
	}
	else
	{
		return ( selectBox.options[0].value );
	}
}

/**
 * Fonction renvoyant le libelle select de la selectBox passée en param
 */
function getSelectLibelle(selectBox) {
  return ( selectBox.options[selectBox.selectedIndex].innerHTML );
}

function isValueInTab(value,tab)
{
	for(var i=0;i<tab.length;i++)
	{
		if(tab[i]==value)
		{
			return true;
		}
	}
	return false;
}


/**
* Vérifie si une variable est un tableau.
*
* @param mixed variable La variable à vérifier.
* @return boolean true si variable est un tableau, false sinon.
**/
function isArray(variable)
{
	return variable instanceof Array;
} 





function MM_preloadImages()
{
	var d=document;
	if(d.images)
	{
		if(!d.MM_p)
		{
			d.MM_p=new Array();
		}
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
		for(i=0; i<a.length; i++)
		{
			if (a[i].indexOf("#" )!=0)
			{
			d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];
			}
		}
	}
} 
 
function MM_swapImgRestore()
{ 
	var i,x,a=document.MM_sr;
	for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++)
	{
		x.src=x.oSrc;
	}
}
 
function MM_findObj(n, d)
{ 
	var p,i,x;
	if(!d)
	{
		d=document;
	}
	if((p=n.indexOf("?" ))>0&&parent.frames.length)
	{
    	d=parent.frames[n.substring(p+1)].document;
		n=n.substring(0,p);
	}
	if(!(x=d[n])&&d.all)
	{
		x=d.all[n];
	}
	for (i=0;!x&&i<d.forms.length;i++)
	{
		x=d.forms[i][n];
	}
	for(i=0;!x&&d.layers&&i<d.layers.length;i++)
	{
		x=MM_findObj(n,d.layers[i].document);
	}
	if(!x && d.getElementById)
	{
		x=d.getElementById(n);
	}
	return x;
}
 
function MM_swapImage()
{ 
	var i,j=0,x,a=MM_swapImage.arguments;
	document.MM_sr=new Array;
	for(i=0;i<(a.length-2);i+=3)
	{
   		if ((x=MM_findObj(a[i]))!=null)
   		{
   			document.MM_sr[j++]=x;
			if(!x.oSrc)
			{
				x.oSrc=x.src;
			}
			x.src=a[i+2];
		}
	}
}



/**
 * fonction qui retourne l'anchor de l'url
 * ex : http://monsite.com/index.html#toto => retourne toto
 */
function getAnchor()
{
	var url = document.location.href;
	var anchorPos = url.indexOf("#");
	var anchor = "";
	if (anchorPos>-1)
	{
		anchor = url.substr(anchorPos+1);
	}
	return anchor;
}

/*
* Ajoute un caractère en tête d'une chaine
*/
function lpad(uneChaine, unCar, nombre) {
	var sChaine='';
	var taille;

  uneChaine=''+uneChaine;
  taille=nombre - uneChaine.length;
  while (taille>0) {
    sChaine=sChaine+unCar;
    taille--;
  }
  sChaine=sChaine+uneChaine;
  return sChaine;
}





/**
 * fonction permettant de savoir si un email est valide ou non
 */
function isAValideEMail(emailString)
{
	emailString = emailString + "";
	var reg = /^([_a-z0-9-]+(\.[_a-z0-9-]+)*)@([_a-z0-9-]+(\.[_a-z0-9-]+)*)\.([a-z]{2,6})$/i;
	return reg.test(emailString);
}

/**
 * fonction permettant de savoir si un numéro de téléphone français (10 chiffres) est valide ou non
 */
function isAValidePhoneNumber(phoneNumberString)
{
	if(phoneNumberString.length != 10){return false;}
	/* Definition du motif a matcher */
	var regex = new RegExp(/^(01|02|03|04|05|06|08|09)[0-9]{8}/gi);
	/* Definition de la variable booleene match */
	var match = false;
	/* Test sur le motif */
	if(regex.test(phoneNumberString))
	{
		match = true;
	}
	else
	{
		match = false;
	}
	/* On renvoie match */
	return match;
} 

/**
 * fonction permettant de savoir si une date au format dd/mm/yyyy est valide ou non
 */
function isAValideDate(dateString)
{
	/* deprecated car elle ne tiens pas compte des années bissextiles */
	/* var reg=new RegExp("^([0-2]{1}[0-9]{1}|[3]{1}[0-1]{1})/(0[1-9]{1}|1[0-2]{1})/[0-9]{4}$","g"); */
	return isDate(dateString);
}

/**
 * fonction permettant de savoir si une date au format dd/mm/yyyy mm:hh est valide ou non
 */
function isAValideDateAndHour(dateHourString)
{
	/* deprecated car elle ne tiens pas compte des années bissextiles */
	/* var reg=new RegExp("^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[0-9]{4} ([01][0-9]|2[0-3]):([0-5][0-9])$","g"); */
	var sSeparator = ' ';
	var arDateHour = dateHourString.split(sSeparator);
	return (arDateHour[0] && arDateHour[1] && isDate(arDateHour[0]) && isHour(arDateHour[1]));
}

function isDate(sDate)
{
	var sSeparator = '/';
	if(!sDate.match("^[0-9]{2}/[0-9]{2}/[0-9]{4}$"))
	{
		return false;
	}
	var arDate = sDate.split(sSeparator);
	var iDay = parseInt(arDate[0],10);
	var iMonth = parseInt(arDate[1],10);
	var iYear = parseInt(arDate[2],10);
	var arDayPerMonth = [31,(isLeapYear(iYear))?29:28,31,30,31,30,31,31,30,31,30,31];
	if(!arDayPerMonth[iMonth-1])
	{
		return false;
	}
	var re = (iDay <= arDayPerMonth[iMonth-1] && iDay > 0);
	return re;
}

		

function isHour(sHour)
{
	var sSeparator = ':';
	var withSeconds = false;
	if(sHour.match("^[0-9]{2}:[0-9]{2}:[0-9]{2}$")) var withSeconds = true;
	else if(!sHour.match("^[0-9]{2}:[0-9]{2}$")) return false;
	var arHour = sHour.split(sSeparator);
	var iHour = parseInt(arHour[0],10);
	var iMinute = parseInt(arHour[1],10);
	if(withSeconds)	var iSecs = parseInt(arHour[2],10);
	else 						var iSecs = 0;
	return 	(iHour >= 0 && iHour < 24) && (iMinute >= 0 && iMinute < 60) && (iSecs >= 0 && iSecs < 60);
}

		
function isLeapYear(iYear){
	return ((iYear%4==0 && iYear%100!=0) || iYear%400==0);
}


function redirection(url,nbSeconde)
{
	setTimeout("window.location.replace('"+url+"');",nbSeconde*1000);
}
