/****************************************************************************************************
																		                                     Librairie JAVASCRIPT
																																									system.js

																																Copyright KAHILOA (http://www.kahiloa.com)



	Version 1.0 (05/10/2000) :
	function isTypeExist(pType)
	function isNetscape4OrMore()
	function isIE4OrMore()
	function whatBrowser()
	function myBrowser()

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


/****************************************************************************************************
	function isTypeExist(pType)
	Cette fonction permet de tester l'existance d'un objet, d'une variable, d'une propriété, d'une fonction ...
	Elle renvoie un booléen "true" si le champ existe et "false" sinon
	En entrée : pField = le nom complet d'un champ (ex: document.monForm.monChamp)
	En sortie : "true" si le champ existe et "false" sinon
	Infos : Les types peuvent être object, string, number, undefined, boolean ou function.

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					29/09/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isTypeExist(pType) {
	return (typeof(pType) != 'undefined');
}



/****************************************************************************************************
	function isNetscape4OrMore()
	Cette fonction permet de tester si le navigateur client est Netscape 4 ou plus
	En sortie : "true" si le navigateur est Netscape 4 ou plus et "false" sinon

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					03/10/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isNetscape4OrMore () {
	return (typeof(document.layers) != 'undefined');
}



/****************************************************************************************************
	function isIE4OrMore()
	Cette fonction permet de tester si le navigateur client est Internet Explorer 4 ou plus
	En sortie : "true" si le navigateur est Internet Explorer 4 ou plus et "false" sinon

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					03/10/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isIE4OrMore () {
	return (typeof(document.all) != 'undefined');
}



/****************************************************************************************************
	function whatBrowser()
	Cette fonction renvoie un numéro correspondant au type de navigateur utilisé
	En sortie : 0 = correspond à un navigateur inconnu ou de version 2 et moins
								 1 = IE3
								 2 = Netscape Navigator 3
								 3 = Netscape Communicator 4
								 4 = IE4 et IE5

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					03/10/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function whatBrowser() {
	vBrowser = navigator.appName;
	vVersion = parseInt(navigator.appVersion);
	alert(navigator.appName + ':' + navigator.appVersion);

	if (vVersion < 3) return 0;
	if (vVersion == 3) {
		if (vBrowser == 'Microsoft Internet Explorer') return 1;
		if (vBrowser == 'Netscape') return 2;
		return 0;
	}
	if (vVersion == 4) {
		if (vBrowser == 'Netscape') return 3;
		if (vBrowser == 'Microsoft Internet Explorer') return 4;
		return 0;
	}
	return 0;
}



/****************************************************************************************************
	function myBrowser()
	Cette fonction détecte le navigateur utilisé et renvoie un objet qui contient toutes les caractéristiques du navigateur client
	En sortie : un objet qui possède 5 propriétés
	  browser = le nom du navigateur (c'est à dire Netscape, IE, Lynx, Opera ou Unknown s'il ne correspond pas aux navigateurs précédents)
	  platform = le nom de l'OS (c'est à dire Unix, Win, Mac, PPC ou Unknown s'il ne correspond pas à un OS non défini précédemment)
	  version = le numéro complet de la version du navigateur (renvoie pour le navigateur IE5 le numéro de version 5 !)
	  majorver = le numéro de la version du navigateur
	  minorver = le sous numéro de la version du navigateur
	Exemple d'utilisation : 
		1/ Exécutez la ligne suivante : var monNavigateur = new myBrowser();
		2/ Récupérez les infos de votre navigateur en faisant par exemple : alert(monNavigateur.browser)

	Version				Date								Auteur						Description des modifications
	---------			---------------			----------				--------------------------------------------------
	1.0 						25/09/2000 				OLD								Code original
*/
function myBrowser() {
	// Infos par défaut
  this.browser = 'Unknown';
  this.platform = 'Unknown';
  this.version = '';
  this.majorver = '';
  this.minorver = '';

	var vUserAgent = navigator.userAgent;

	// Découpage de vUserAgent en preparens et  parenthesized
  var vPreparens = vUserAgent;
  var vParenthesized = '';
  i = vUserAgent.indexOf('(');
  if (i > -1) {
		// Trim sur vPreparens
		vPreparens = vUserAgent.substring(0, i);
	  var vCptStart = 0;
	  while ((vCptStart < vPreparens.length) && (vPreparens.charAt(vCptStart) == ' ')) {
	    vCptStart++;
	  }
	  var vCptEnd = vPreparens.length;
	  while ((vCptEnd > 0) && (vPreparens.charAt(vCptEnd - 1) == ' ')) {
	    vCptEnd--;
	  }
		vPreparens = vPreparens.substring(vCptStart, vCptEnd);

		vParenthesized = vUserAgent.substring(i + 1, vUserAgent.length);
		j = vParenthesized.indexOf(')');
		if (j > -1 ) 
			vParenthesized = vParenthesized.substring(0, j);
	}

	// Définition de l'OS
  var vBrowVer = vPreparens;
  var vTokens = vParenthesized.split(';');
  var vToken = '';
  for (var i = 0; i < vTokens.length; i++) {
		// Trim sur vTokens[i]
	  var vCptStart = 0;
	  while ((vCptStart < vTokens[i].length) && (vTokens[i].charAt(vCptStart) == ' ')) {
	    vCptStart++;
	  }
	  var vCptEnd = vTokens[i].length;
	  while ((vCptEnd > 0) && (vTokens[i].charAt(vCptEnd - 1) == ' ')) {
	    vCptEnd--;
	  }
		vTokens[i] = vTokens[i].substring(vCptStart, vCptEnd);
		vToken = vTokens[i];
		
		if (vToken.indexOf('MSIE') > -1) vBrowVer = vToken;
    else 
		if (vToken.indexOf('Opera') > -1) vBrowVer = vToken;
    else 
		if ((vToken.indexOf('X11') > -1) || (vToken.indexOf('SunOS') > -1) || (vToken.indexOf('Linux') > -1)) this.platform = 'Unix';
    else 
		if (vToken.indexOf('Win') > -1) this.platform = vToken;
    else 
		if ((vToken.indexOf('Mac') > -1) || (vToken.indexOf('PPC') > -1)) this.platform = vToken;
  }

  var vMsieIndex = vBrowVer.indexOf('MSIE');
  if (vMsieIndex > -1) {
    vBrowVer = vBrowVer.substring(vMsieIndex, vBrowVer.length);
  }

	// Définition du navigateur
  var vLeftOver = '';
  if (vBrowVer.substring(0, 'Mozilla'.length) == 'Mozilla') {
    this.browser = 'Netscape';
    vLeftOver = vBrowVer.substring('Mozilla'.length + 1, vBrowVer.length);
  }
  else 
	if (vBrowVer.substring(0, 'Lynx'.length) == 'Lynx') {
    this.browser = 'Lynx';
    vLeftOver = vBrowVer.substring('Lynx'.length + 1, vBrowVer.length);
  }
  else 
	if (vBrowVer.substring(0, 'MSIE'.length) == 'MSIE') {
    this.browser = 'IE';
    vLeftOver = vBrowVer.substring('MSIE'.length + 1, vBrowVer.length);
  }
  else 
	if (vBrowVer.substring(0, 'Microsoft Internet Explorer'.length) == 'Microsoft Internet Explorer') {
    this.browser = 'IE';
  	vLeftOver = vBrowVer.substring('Microsoft Internet Explorer'.length + 1, vBrowVer.length);
  } 
  else 
	if (vBrowVer.substring(0, 'Opera'.length) == 'Opera') {
    this.browser = 'Opera';
    vLeftOver = vBrowVer.substring('Opera'.length + 1, vBrowVer.length);
  }

	// Définition des versions
	// Trim sur vLeftOver
  var vCptStart = 0;
  while ((vCptStart < vLeftOver.length) && (vLeftOver.charAt(vCptStart) == ' ')) {
    vCptStart++;
  }
  var vCptEnd = vLeftOver.length;
  while ((vCptEnd > 0) && (vLeftOver.charAt(vCptEnd - 1) == ' ')) {
    vCptEnd--;
  }
	vLeftOver = vLeftOver.substring(vCptStart, vCptEnd);

  i = vLeftOver.indexOf(' ');
  if (i > -1) this.version = vLeftOver.substring(0, i);
  else this.version = vLeftOver;
  i = this.version.indexOf('.');
  if (i > -1) {
    this.majorver = this.version.substring(0, i);
    this.minorver = this.version.substring(i + 1, this.version.length);
  }
  else 
		this.majorver = this.version;
}
