 /*
 /*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}


/**************
Change le style d'un element
**************/	
function SwitchStyle(idDiv,style) {
	var div = document.getElementById(idDiv);

	div.className = style;
} // FIN DE SwitchStyle


/**************

**************/	
function CheckCheckBox(name,statut) {
	var Elem = document.getElementById(name);
	if(statut == 'yes' ) Elem.checked=1;
	else Elem.checked=0;
}

/**************
Coche la radio en fonction de son Id
NB : il fau tun ID different pour chaque radio du meme groupe
**************/	
function CheckRadio(idRadio) {
	var Radio = document.getElementById(idRadio);
	Radio.checked  = true;
}	

/**************
Affiche ou cache une balise DIV
Astatut est prï¿½cisï¿½ on passe au staut sinon on fait un switch
**************/	

function AffCacheDiv(idDiv,statut) {
	var div = document.getElementById(idDiv);
	
	if(div) {
		if (statut){
			if (statut == 'display') 	div.style.display = "";
			else  div.style.display = "none";
		}
		else {
			if (div.style.display == "") div.style.display = "none";
			else div.style.display = "";
		}
	}
} // FIN DE AffCacheDiv

function ChangeDisEna(idDiv,idDiv2,statut)
{
	
	var div = document.getElementById(idDiv);
	var div2 = document.getElementById(idDiv2);
	
	if(div) {
		if (statut){
			div.options[0].selected = true;
			div2.options[0].selected = true;
			if (statut == 'display') document.getElementById(idDiv).disabled = false;
			else document.getElementById(idDiv).disabled = true;
		}
		else {
			document.getElementById(idDiv).disabled = true;
		
		}
	}
}

function ChangeDisEnaSelonValeur(idDiv,idDiv2,valeur)
{
	
	var div = document.getElementById(idDiv);
	var div2 = document.getElementById(idDiv2);
	
	if(div) {
		if (div.value == valeur){
			document.getElementById(idDiv2).disabled = true;
		}
		else document.getElementById(idDiv2).disabled = false;
	}
}

function ChangeDisEnaBothSelonValeur(idDiv,idDiv2,valeur1,valeur2)
{
	
	var div = document.getElementById(idDiv);
	var div2 = document.getElementById(idDiv2);
	
	if(div) {
		if (div.value == valeur1){
			document.getElementById(idDiv2).disabled = true;
		}
		else if (div.value == valeur2) document.getElementById(idDiv2).disabled = true;
		else document.getElementById(idDiv2).disabled = false;
	}
}

function ChangeDisEnaSelonDeuxValeur(idDiv,idDiv2,idDiv3,valeur1,valeur2)
{
	
	var div = document.getElementById(idDiv);
	var div2 = document.getElementById(idDiv2);
	var div3 = document.getElementById(idDiv3);

	if(div) {
		if (div.options[valeur1].selected == true && div2.value == valeur2){
			document.getElementById(idDiv3).disabled = true;
		}
		else document.getElementById(idDiv3).disabled = false;
	}
} 

// Permer d'afficher une combo-box ou zone de texte en fct d'une autre combobox
function AfficheZoneTexte(id_combo,val,idDiv,statut)
{
	var monSelect = document.getElementById(id_combo);
	var div = document.getElementById(idDiv);
	
	if (div) {
		if (statut){
			if (statut == 'display' && monSelect.options[val].selected == true) 	div.style.display = "";
			else  div.style.display = "none";
		}
		else {
			if (div.style.display == "") div.style.display = "none";
			else div.style.display = "";
		}			
	}
}


function GetIdDisplayByClass(current, className, typeElem) {
	var Tab = getElementsByClassName(document, typeElem, className);
	//var CurrentElement = getElementById(current);
	for (i = 0; Tab[i]; i++) {
		if ( Tab[i].style.display == "" && current != Tab[i].id) {
			//alert(Tab[i].id);
			AffCacheDiv(Tab[i].id);
			return true;
		}
	}
}


/**************
Demande la comfirmation avant de rediriger vers un page
=> utilisï¿½ pour confirmer les suppressions
**************/
function ConfirmerAction(Texte, Page ) {
	var Confirmation = confirm(Texte);
	if (Confirmation){
		document.location.href=Page;
	}

}

/**************
Demande la comfirmation avant de rediriger vers un page
=> utilisï¿½ pour confirmer les suppressions
**************/
function ConfirmerAction2(Texte) {
	var Confirmation = confirm(Texte);
	if (Confirmation){
		return true;
	}

}

function ConfirmerAction3(Texte,name) {
	var Confirmation = confirm(Texte);
	if (Confirmation){
		return true;
	}
	else {
		var Elem = document.getElementById(name);
		Elem.checked=0;
	}

}


function ConfirmerAction4(Texte,name,idDiv) {
	var Elem = document.getElementById(name);
	var div = document.getElementById(idDiv);
	if(Elem.checked == false) {
		Elem.checked=0;
		div.style.display = "none";
	}
	else {
		var Confirmation = confirm(Texte);
		var Elem = document.getElementById(name);
	}
	
	
	if (Confirmation){
		div.style.display = "";
		return true;
	}
	
}

function ConfirmerAction5(Texte, Page, Page2 ) {
	var Confirmation = confirm(Texte);
	if (Confirmation){
		document.location.href=Page;
	}
	else {
		document.location.href=Page2;
	}

}

/**************
Verifie qu'il y a au moins deux langues avant de supprimer
**************/	
function RechercheSuppLangue(messageConfirmation, messageUneLangue, lien)	{
	var TabLangue = getElementsByClassName(document, "td", "LibelleLangue");
	
	if (TabLangue.length == 1) {
		alert(messageUneLangue);
		document.location.href="";
		return(false);
	}
	else {
		var ans;
		ans=window.confirm(messageConfirmation);
		if (ans==true) {
			document.location.href=lien;			
			return(true);		
		}
		else {
			document.location.href="";
			return(false);
		}
	}
}



/**************

**************/
function AffFctSelect(idSelect, Num, idDiv ) {
	var Select = document.getElementById(idSelect);
	
	if (Select.value == Num){
		AffCacheDiv(idDiv,'display')
	}
	else AffCacheDiv(idDiv,'none')

}





/**************
Positionnement : recupere le Y d'un element
**************/
function GetElementTop(eElement)
{
           
var nTopPos = eElement.offsetTop;
var eParElement = eElement.offsetParent;
while (eParElement != null)
{
nTopPos += eParElement.offsetTop;
eParElement = eParElement.offsetParent;
}
return nTopPos;
}


/**************
Positionnement : recupere  le X d'un element
**************/

function GetElementLeft(eElement)
{
 var nLeftPos = eElement.offsetLeft;      
var eParElement = eElement.offsetParent;
while (eParElement != null)
{                                            
nLeftPos += eParElement.offsetLeft;    
eParElement = eParElement.offsetParent;
}
return nLeftPos;                            
}

function getElementRight(eElement){
        return getElementLeft(eElement) + getElementWidth(eElement);
}

/**************
Affiche la bulled'aide ï¿½ l abonne position
IdDiv
**************/
function AfficheAide(idDiv,o,texte) {
	var div = document.getElementById(idDiv);
	
	var TexteGauche="<div align='right'><table border=0 cellspacing=0 cellpadding=0 >  <tr>   <td class='BulleAide'>"+ texte +"</td>  <td valign='middle'  width='10'><img src='/images/Aide/FlecheAideG.gif' width='10'  /></td>    </tr></table></div>";
	var TexteDroite ="<div align='left'><table border=0 cellspacing=0 cellpadding=0 >  <tr>   <td valign='middle'  width='10'><img src='/images/Aide/FlecheAideD.gif' width='10'  /></td>    <td class='BulleAide'>"+ texte +"</td>  </tr></table></div>";
	
	if (texte) {
		div.style.display = "";
		div.innerHTML = TexteDroite;
		var HauteurText = div.offsetHeight; 
	
		// Gauche elemennt+largeur element+marge+large aide
		var FinXAide = GetElementLeft(o)+o.offsetWidth+5+div.offsetWidth;
		var LargeurPage = window.document.width; 
		var LargeurPage = document.body.offsetWidth;
		
		if (LargeurPage > FinXAide ) droite =true;
		else droite =false;
//alert(LargeurPage)	;	
//alert(FinXAide)		;
		if (droite)	 {
			var X = GetElementLeft(o)+o.offsetWidth+5;
			var Y = GetElementTop(o)+o.offsetHeight/2-HauteurText/2;
		}
		else {
			div.innerHTML = TexteGauche;
			var X = GetElementLeft(o)-div.offsetWidth-5;
			var Y = GetElementTop(o)+o.offsetHeight/2-HauteurText/2;		
		}
//alert(droite);		
		div.style.left=X+"px";
		div.style.top=Y+"px";
	}
	else{
		div.innerHTML="";
		div.style.display = "none";
	}
}



/**************
Change le style d'un element
**************/	
function CompteurCaracteres(idZoneTexte, idZonneAff, max) {
	var ZoneTexte = document.getElementById(idZoneTexte)
	var ZonneAff = document.getElementById(idZonneAff)

	if ( ZoneTexte.value.length > max) {
		ZoneTexte.value = ZoneTexte.value.substring(0, max);
	}

	ZonneAff.value = max - ZoneTexte.value.length;

}




/**************
Modifier les sous comptences
**************/	
function ModifSCpt(NumCompetence,NumNiveauCompetence) {
	for (var i=0;i<LC[NumCompetence].length ;i++) {
		id =LC[NumCompetence][i]+"-"+NumNiveauCompetence;
		
		CheckRadio(id);
		
	}
}



function AffRadioCompFils(NumCompetence,display) {
	for (var i=0;i<LC[NumCompetence].length ;i++) {
		id =LC[NumCompetence][i];
//alert(i+"-"+id);		
		if  ( LC[id] && LC[id].length == 0 )  {
//			alert("tyrt"+i);		
			AffCacheDiv('R_'+id,display);
		}
		
		//alert(id+display);
		
	}
}
 

/**************
Affiche le taux maximum en fonction de la presence de l'affacturage
**************/	
function RecalculTaux(AffacturagePourcentage) {
	var FromInputText = document.getElementById('TauxMin');
	var ToInputText = document.getElementById('TauxRecalcul');
	var AffacturageField = document.getElementById('AffacturageOui');
	var	Zone = document.getElementById('RecalculZone');
	
	if (Zone.style.display == '' && ToInputText.value == '' && AffacturageField.checked == false)	Zone.style.display = 'none';
	else if (FromInputText.value && AffacturageField.checked == true)
		ToInputText.value = ((Number(FromInputText.value) * (100 -AffacturagePourcentage)) / 100);
	return(ToInputText.value);
}

/**************
Recherche : modifier taux cst si affacturage
**************/	
function AfficheCalcul(IdBudget, IdTauxCst,AffacturagePourcentage) {
	var TauxCst = document.getElementById(IdTauxCst);
	var Budget = document.getElementById(IdBudget);

	if (Budget.value ) 	TauxCst.value = ((Number(Budget.value) * (100 -AffacturagePourcentage)) / 100);
}


function CstTauxPourcentageCalcul(TauxAffiche, IdPourcentage, TauxConsultantSelect) {
	var TauxPourcentage = document.getElementById(IdPourcentage);
	var TauxAffiche = document.getElementById(TauxAffiche);
	var TauxConsultant = document.getElementById(TauxConsultantSelect);

	if (TauxConsultant.value !=0) TauxAffiche.value = TauxConsultant.value*(1-(TauxPourcentage.value/100));
}

function testim2(RadioId) {
	alert(RadioId);

}


function UncheckAllRegionExecptOne(idParent) {
	var temp = document.FormRegion.elements.length;
	
	//decoche tous
	for (i=0; i < temp; i++) {
		var Radio = document.getElementById(document.FormRegion.elements[i].id);
		if ( Radio!= null && Radio.type == 'checkbox')	Radio.checked  = false;
		
	}
	var TabRegion = getElementsByClassName(document.FormRegion, 'span', 'RegionPartout');
	if (TabRegion[0] != null)
		TabRegion[0].className = '';
	//coche le bon
	idParent.checked  = true;
}

// affectation d'une valeur a une combo (utilisée dans profil_commerciale_AjouterDispo.php) 
function modifcombo(id_combo,val,typeval)
{
	var monSelect = document.getElementById(id_combo);
	
	if (typeval==1) {
		val = val - 1;
		monSelect.options[val].selected = true;
	} else {
		// on passe en paramètre la valeur du champ et non l'index de ce champ
		for (i=0; i <= monSelect.options.length; i++) {
			if (monSelect.options[i].value == val) {
				monSelect.options[i].selected = true;
				return true;
			}
		}
	}
}

// Affectation d'un texte à une zone texte suivant la valeur d'une combobox
function modifzonetexte(id_combo,val,id_zone,texte)
{
	var monSelect = document.getElementById(id_combo);
	var monSelect2 = document.getElementById(id_zone);
	
	if (monSelect.options[val].selected == true){
		monSelect2.value = texte;
	}
	else monSelect2.value = "";
}

function modifcompteur(id_combo,val,id_box)
{
	var monSelect = document.getElementById(id_combo);
	var id_box = document.getElementById(id_box);
	
	if (monSelect.options[val].selected == true){
		id_box.value = 160;
	}
	else id_box.value = 2000;
}

function CompteurValue(id_combo,val,id_box)
{
	var monSelect = document.getElementById(id_combo);
	var id_box1 = document.getElementById(id_box);
	if (monSelect.options[val].selected == true){
		return 160;
	}
	else return 2000;
	
}

// Affectation d'un texte à une zone texte suivant la valeur d'une combobox
function modifzonetexte2(Support, Sujet, Contenu){
	
				
	var SelectSupport = document.getElementById(Support);
	var SelectSujet= document.getElementById(Sujet);
	var TextareaContenu= document.getElementById(Contenu);
	
	TextareaContenu.value = TabCorpsMailPasSujet[SelectSupport.value][SelectSujet.value ];
	

}

// Utilisé sans contact-saisie.php, cette fct permet selon 
function modifzonetexteselonsujet(id_combo,val,id_combo2,texte)
{
	var monSelect = document.getElementById(id_combo);
	var monSelect2 = document.getElementById(id_zone);
	
	if (monSelect.options[val].selected == true){
		monSelect2.value = texte;
	}
	else monSelect2.value = "";
}


//on ajuste l'annee de fin par rapport a l'annee de debut, le troisieme parametre sert a determiner si on compare lindex de la combo, ou la valeur du champ
function ComboAjusteValeurCourante(IdComboDebut, IdComboFin, TypeVal) {
	var	SelectComboDebut = document.getElementById(IdComboDebut);
	var	SelectComboFin = document.getElementById(IdComboFin);
	
	if (TypeVal && SelectComboFin.options.selectedIndex == 0) {
		//Rien ici, si typeval == 1, on se deplace par rapport a l'index du combo
		var CurrentIndex = SelectComboDebut.options[SelectComboDebut.options.selectedIndex].index;
		
		if ( SelectComboFin.options[CurrentIndex].value != "" ) {
			SelectComboFin.options[CurrentIndex].selected = true;
		}
	}
	else {
			if (SelectComboFin.options.selectedIndex == 0) {
				var CurrentVal = SelectComboDebut.options[SelectComboDebut.options.selectedIndex].value;
				
				for (i=0; i <= SelectComboFin.options.length; i++) {
					if (SelectComboFin.options[i].value == CurrentVal && SelectComboFin.options[i].value != "") {
						SelectComboFin.options[i].selected = true;
						return true;
					}
				}
			}
		}
}

/*
	Dans la partie Un Taux Une Region
	Fonction qui permet dans la page de modification d'afficher les select qu'il faut quand on veut voir le details d'une region si il existe
	On passe en parametre:
	- le debut du nom du select  SelectNameNiveau ie: "TauxNumNiveau"
	- le debut de l'id du select SelectIdNumPere ie: "TauxNumPere"
	- le niveau courant CurrentLevel ie: c'est variable de 1 a 3
	- le select sur lequel on a clique CurrentElem ie: c'est variable
	- le champ cache qui contient le numero de la region en cours HiddenField ie: variable
	- le debut du nom de l'id du TR pour afficher/masquer les niveaux RegionRow ie: "RegionRow"
*/
function FillRegionByPere(SelectNameNiveau, SelectIdNumPere, CurrentLevel, CurrentElem, HiddenField, RegionRow) {
	/*
		On recupere sur le select l'index sur lequel on se trouve et la valeur que contient cette ligne
	*/
	selectedIndexValue = CurrentElem.value;
	selectedIndex = CurrentElem.selectedIndex;
	
	/*
		On recupere le select qui devrait apparaitre en ayant concatenant le debut du nom de l'id avec le niveau courant et le numero de la region
		On recupere le TR pour afficher la ligne correspondante au niveau
	*/
	var comboRegion = document.getElementById(SelectIdNumPere+CurrentLevel+"-"+selectedIndexValue);
	var RowTDRegion = document.getElementById(RegionRow+CurrentLevel);
	/*
		Si le select existe on cache tout les autres
		On affiche le TR et le select en question qu'il nous faut
	*/
	if(comboRegion) {
		var tabSelect = document.getElementsByName(SelectNameNiveau+CurrentLevel);
		/*
			On cache les autres select si on revient a des niveaux inferieurs
		*/
		DisableNextSelectRegion(SelectNameNiveau, CurrentLevel, HiddenField, selectedIndexValue, RegionRow);
		for (i = 0; tabSelect[i]; i++) {
			tabSelect[i].style.display = "none";
		}
		RowTDRegion.style.display = "";
		comboRegion.style.display = "";
	}
	else {
		/*
			On cache les autres select si on revient a des niveaux inferieurs
		*/
		DisableNextSelectRegion(SelectNameNiveau, CurrentLevel, HiddenField, selectedIndexValue, RegionRow);
	}
}

/*
	Dans la partie Un Taux Une Region
	Fonction qui permet dans la page de modification de desactiver les autres select et TR en les mettant pas visible
	Ca permet que quand on clique sur une liste de niveau que les 2, 3 et suivant disparaissent
	On passe en parametre:
	- le debut du nom du select  SelectNameNiveau ie: "TauxNumNiveau"
	- le niveau courant CurrentLevel ie: c'est variable de 1 a 3
	- le champ cache qui contient le numero de la region en cours HiddenField ie: variable
	- le numero d'index du select qui est choisi selectedIndexValue ie: variable
	- le debut du nom de l'id du TR pour afficher/masquer les niveaux RegionRow ie: "RegionRow"
*/
function DisableNextSelectRegion(SelectNameNiveau, CurrentLevel, HiddenField, selectedIndexValue, RegionRow) {
		/* On recupere le champ cache avec le numero de la region en cours */
		var NumRegionElem = document.getElementById(HiddenField);
		
		/*
			On met dans ce champ cache la nouvelle valeur de la region en cours
			On Prend tout les select suivant un niveau que l'on incremente
		*/
		NumRegionElem.value=selectedIndexValue;
		for (NextSelectCpt = 0, tabSelectFils = document.getElementsByName(SelectNameNiveau+(CurrentLevel+NextSelectCpt));
			tabSelectFils.length;
			NextSelectCpt++, tabSelectFils = document.getElementsByName(SelectNameNiveau+(CurrentLevel+NextSelectCpt)) ) {
		
			/*
				On recupere le TR de la region et on le cache
				On cache toutes les lignes
				On met le select a la premiere ligne au cas ou le select serait positionne sur une autre ligne
			*/
			var RowTDRegion = document.getElementById(RegionRow+(CurrentLevel+NextSelectCpt));
			RowTDRegion.style.display = "none";
			for (i = 0; tabSelectFils[i]; i++) {
				tabSelectFils[i].style.display = "none";
				tabSelectFils[i].selectedIndex = 0;
			}
	}
}

/*
	Dans la partie Un Taux Une Region
	Fonction qui permet dans la page de modification de positionner les select box au bon endroit
	On passe en parametre:
	- le debut du nom du select SelectName ie: "TauxNumNiveau"
	- le debut de l'id du select SelectId ie: "TauxNumPere"
	- le niveau du select dans la liste Niveau ie: ca varie pour l'instant de 1 à 3
	- le numero du pere NumPere ie: Numpere = 0
	- le numero de la region TauxRegion ie: ca depend de la region
	- l'id du TD de chaque niveau qu'on cache/montre RegionRow ie: ca depend du niveau 1->3
*/
function LoadTauxRegion(SelectName, SelectId, Niveau, NumPere, TauxRegion, RegionRow) {
	//On decremente le niveau le plus pour arriver au plus bas
	for (TMPNiveau = Niveau; TMPNiveau > 0 ; TMPNiveau--) {
		/*
			On recupere le TR qui contient les select suivant le niveau
			Et on affiche
		*/
		var TMPTDRegion = document.getElementById(RegionRow+TMPNiveau);
		TMPTDRegion.style.display="";
		
		/*
			On recupere tout les select correspondant a un niveau
			On les parcours un par un pour voir quel select et ensuite quelle ligne contient la valeur de la region
		*/
		var TabSelect = document.getElementsByName(SelectName+TMPNiveau);
		for (tabCPT = 0; TabSelect[tabCPT];tabCPT++) {
			for (index = 0; TabSelect[tabCPT].options[index]; index++) {
				if (TabSelect[tabCPT].options[index].value == TauxRegion) {
					/*
						On positionne le select sur la bonne position
						On le rend visible
					*/
					TabSelect[tabCPT].selectedIndex = index;
					TabSelect[tabCPT].style.display = "";
					
					/*
						On prend le libelle de l'ID et on prend la derniere partie qui contient le numero de la region Pere
					*/
					NumPereTab = TabSelect[tabCPT].id.split("-");
					/* On initialise le nouveau numero de region avec */
					TauxRegion = NumPereTab[1];
					}
				}
			}
		}
}

function CheckModifierChamp(IdChampCache, CurrentObj) {
	var Champ = document.getElementById(IdChampCache);
	
	if ( Champ.value == "" ) location.href=CurrentObj;
	else {
		if (!confirm("(t) Vous n'avez pas validé les changements, voulez vous toujours changer de page?"))
		return false;
		else return true;
	}
}

function ModifieChampCache(IdChampCache, Valeur) {
	var Champ = document.getElementById(IdChampCache);
	Champ.value = Valeur;
}


//ENTREPRISE RECHERCHE -> MODIF LANGUE
function modifLangue(id_combo,val,typeval)
{
	//window.document.getElementById('NumLangue').disabled=true;
	var ListElem = document.getElementById(id_combo);
	/*tabSelect = document.getElementsByName(id_combo);
	for (cpt=0;tabSelect[cpt];cpt++) {
		alert(tabSelect[cpt].name);
	}*/
	//var NiveauCombo = document.getElementById(id_combo2);
	if (typeval==1) {
		val2 = val2 + 1;
		val = val - 4;
		ListElem.options[val].selected = true;
		//NiveauCombo.options[val2].selected = true;
	} else {
		// on passe en paramètre la valeur du champ et non l'index de ce champ
		for (i=0; i < ListElem.options.length; i++) {
			if (ListElem.options[i].value == val) {
				ListElem.options[i].selected = true;
				 window.document.getElementById(id_combo).style.backgroundColor = "#FF9900";
				  
				//return true;
			}
		}
	
	}
}

function EcrireDansElemById(idModif, Texte) {
	var Elem = document.getElementById(idModif);
	Elem.innerHTML = Texte;
}


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function findPos(obj) {
       var curleft = curtop = 0;
       if (obj.offsetParent) {
               curleft = obj.offsetLeft
               curtop = obj.offsetTop
               while (obj = obj.offsetParent) {
                       curleft += obj.offsetLeft
                       curtop += obj.offsetTop
               }
       }
       return [curleft,curtop];
}

// inType = 'Top', 'Left'
function getOffsetPosition (inID, inTYPE) {
	var iVal = 0;
	var oObj = document.getElementById(inID);
	var sType = 'oObj.offset' + inTYPE;
	while (oObj && oObj.tagName != 'BODY') {
		iVal += eval(sType);
		oObj = oObj.offsetParent;
	}
return iVal;
}



/**************

**************/
function AfficheTexteAideImage(idDiv,texte) {
	var div = document.getElementById(idDiv);
	
	if (texte) {
		div.style.display = "";
		div.innerHTML = texte;
	}
		else{
		div.innerHTML="";
		div.style.display = "none";
	}
}


