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

// *  Detection de la version de navigateur  *

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

// Sebastien Dinel - Version 3.1 - 29/07/2003



// Version 3.1

//  - Ajout de la detection de Safari

//  - Ajout de la fonctionnalite de debogage en vue de modification ulterieures

//  - Corrigee une petite erreur dans la recherche des descriptions connues



var niveauDebug = 0;	// Mettre a 1 pour afficher le resultat de la detection



var navName;

var navVersion;

var navVer;

var navSys;



var uaDesc = new Array(6);

var uaVer = new Array(6);



function debug(niveau, texte)

{

	if(niveauDebug>=niveau)

	{

		document.writeln('&gt; ' + texte + '<br>');

	}

}



function checkNav()

{

	var ua = navigator.userAgent.toLowerCase();

	debug(2, ua);

	var permDescs = new Array('mozilla', 'windows nt','netscape', 'msie', 'safari','firefox');

	var knownNavs = 'netscape, msie, safari, firefox';

	var curDesc = 0;

	var permDebuts = ' /'; // caracteres acceptes juste avant le numero de version

	var inDebut = false;

	var permChars = '01234567890.,'; // Carateres acceptes dans un numero de version

	var curVer = 0;

	var inVer = false;

	var lastPair = 0;

	

	// Recherche des descriptions dans la chaine ua

	// On recherche toutes les descriptions connue dans le tableau permDescs

	debug(3, '*************************************');

	debug(2, 'Recherche des descriptions connues...');

	for(var boucle = 0; boucle < permDescs.length; boucle++)

	{

		debug(4, boucle);

		

		if(ua.indexOf(permDescs[boucle]) >= 0)

		{

			// La description courante est dans la chaine du user agent

			debug(3, 'permDescs[boucle]='+permDescs[boucle]);

			debug(3, 'ua.indexOf(permDescs[boucle])='+ua.indexOf(permDescs[boucle]));

			

			// On l'ajoute a la liste des descriptions correspondantes

			uaDesc[curDesc] = permDescs[boucle];

			

			// Permutation des descriptions selon l'ordre dans la chaine ua (deux derniers seulement)

			if( curDesc > 0 && ua.indexOf(uaDesc[curDesc]) < ua.indexOf(uaDesc[curDesc - 1]) )

			{

				debug(3, 'permutation!');

				var temp = uaDesc[curDesc];

				uaDesc[curDesc] = uaDesc[curDesc-1];

				uaDesc[curDesc-1] = temp;

			}

	

			debug(3, uaDesc);

	

			curDesc++;

		}

	}

	

	// Recherche des numeros de versions

	debug(3, '*************************************');

	debug(2, 'Recherche du numero de version...');

	for(boucle = 0; boucle < ua.length; boucle++)

	{

		debug(3, boucle);

		

		if(permDebuts.indexOf(ua.charAt(boucle)) >= 0)

			inDebut = true;

		else

		{

			if (inDebut && permChars.indexOf(ua.charAt(boucle)) >= 0)

			{

				if(inVer)

					uaVer[curVer] += ua.charAt(boucle);

				else

				{	

					uaVer[curVer] = ua.charAt(boucle);

					inVer = true;

				}

			}

			else

			{

				if(inVer && (uaVer[curVer].indexOf('.') > 0 || uaVer[curVer].indexOf(',') > 0))

					curVer++;

					

				inVer = false;

				inDebut = false;

			}

		}

	}

	

	for(boucle = 0; boucle <= curVer; boucle++)

	{

		if(uaVer[boucle] != null && uaDesc[boucle] != null && knownNavs.indexOf(uaDesc[boucle]) >= 0)

			lastPair = boucle;

	}

	

	navName=(uaDesc[lastPair]=='mozilla')?'netscape':uaDesc[lastPair];

	navVersion=parseFloat(uaVer[lastPair]);

	navVer=Math.floor(navVersion);

	navSys=(navigator.appVersion.search('Mac')!=-1) ? 'mac' : '';

	navSys = (navSys=='' && navigator.appVersion.search('Win')!=-1) ? 'win' : navSys;	

}



function reportNav()

{

	document.writeln("<p><br><b>Resultats de detection du navigateur<\/b><p>");



	document.writeln("navigator.userAgent = " + navigator.userAgent.toLowerCase() + '<br>');

	document.writeln("navigator.appName = " + navigator.appName + '<br>');

	document.writeln("navigator.appVersion = " + navigator.appVersion + '<br>');



	document.writeln('<p>');



	document.writeln("navName = " + navName + '<br>');

	

	document.writeln("navVersion = " + navVersion + '<br>');

	

	document.writeln("navVer = " + navVer + '<br>');

	

	document.writeln("navSys = " + navSys + '<br>');

}

function reportNavForUser()

{

	//document.writeln("<p><br><b>Resultats de detection du navigateur<\/b><p>");



	document.writeln("navigator.userAgent = " + navigator.userAgent.toLowerCase() + '<br>');

	//document.writeln("navigator.appName = " + navigator.appName + '<br>');

	//document.writeln("navigator.appVersion = " + navigator.appVersion + '<br>');



	/*document.writeln('<p>');



	document.writeln("navName = " + navName + '<br>');

	

	document.writeln("navVersion = " + navVersion + '<br>');

	

	document.writeln("navVer = " + navVer + '<br>');

	

	document.writeln("navSys = " + navSys + '<br>');*/

}

checkNav();



if(niveauDebug > 0)

{

	reportNav();

}