// Installation du script sur les clic des "a" pour les logs
// Paramètres utilisés :
//		- $.client		Le code du client (par défaut : $.client = "<%=Application.client.Displaytext%>";)
//		- $.sentrep		L'identifiant du connecté (par défaut : $.sentrep = "<%=Application.identrep.Displaytext%>";)
//		- $.ecran		Le nom de page qui posséde les boutons (Exemple $.ecran = "Menu";)
//		- $.netopca_option_IP	Pour passer l'IP dans les logs (par défaut $.netopca_option_IP = true; si version NetOpca2009 >= 2.1).
// DT [31/08/2010]
$(document).ready(function() {
    // SETUP GENERAL DES APPELS AJAX
    $.ajaxSetup({
        type: "POST",
        contentType: "application/json; charset=utf-8"
        //,error: function(msg) { alert(msg.status + ' ' + msg.statusText); }
    });

	// Abonnement sur les événements clic "a" de la page
	$("a").click(function (event) {
					detecteNavigateur();
					
					// DT [04/09/2010] Récupération de l'IP du visiteur du site NetOpca
					var ip = ipAdresseVisiteur();
					
					// DT [04/10/2010] Option pour passer en paramètre de la WebMethod LogUpdate
					if ($.netopca_option_IP == undefined)	
						$.netopca_option_IP = false;
					
					$.ajax({
						async: !$.browser.safari,		// DT [23/09/2010] Seul Moyen pour le faire marcher sous Safari, mettre le async à false. /!\ Sous Safari il va être synchrone, donc peut bloquer si problème.
						url: "../" + $.client + "/Netopca2009/Base/Stat/LogUpdate.aspx/LogUpdate",
						data: "{'acClient' : '" + $.client + "'," +
							   "'acIdEntrep' : '" + $.sentrep + "'," +
							   "'acEcran' : '" + $.ecran + "'," +
							   "'acIdComponent' : '" + $(this).attr('id') + "'," +
							   "'acBrowser' : '" + $.browser.navigateur + "'," +
							   "'acBrowserVersion' : '" + $.browser.version + "'," +
							   "'acOS' : '" + $.browser.os + "'," +
							   "'acVersionOS' : '" + $.browser.version_os + "'," +
							   "'acUserAgent' : '" + navigator.userAgent + "'" +
							   ($.netopca_option_IP?",'acIP' : '"+ ip +"'":"") +
							   "}"
						//,success: function(result) {alert(result.d);}
					})
				});
});
	
	
// Detection du navigateur et de OS de la machine
// Il retourne les informations dans
//    	$.browser.navigateur			Le navigateur
//		$.browser.version				La version du navigateur
//		$.browser.os					Le nom de OS
//		$.browser.version_os			La version de l'OS
// DT [24/08/2010]
function detecteNavigateur(){
	// Pour savoir si c'est un navigateur Chrome ou pas
	$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
	$.browser.navigateur = "Inconnu";	// DT [07/11/2011]
	$.browser.version = "";				// DT [07/11/2011] Mise à vide
	$.browser.os = "";
	$.browser.version_os = "";
	
	// Le User Agent
	var userAgent = navigator.userAgent.toLowerCase();
	
	// IE
	if($.browser.msie){
		$.browser.navigateur = "Internet Explorer";
	
	// Chrome
	}else if($.browser.chrome) {
		userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
		$.browser.version = userAgent.substring(0,userAgent.indexOf(' '));
		$.browser.safari = false;		// Pour ne pas confondre avec Safari
		$.browser.navigateur = "Chrome";
	
	// Safari
	}else if($.browser.safari) {
		userAgent = userAgent.substring(userAgent.indexOf('version/') +8);	
		$.browser.version = userAgent.substring(0,userAgent.indexOf(' '));
		$.browser.navigateur = "Safari";
	
	// Firefox
	}else if($.browser.mozilla && userAgent.toLowerCase().indexOf('firefox') != -1) {
		userAgent = userAgent.substring(userAgent.indexOf('firefox/') +8) + " ";
		userAgent = userAgent.replace(")", "");										// DT [06/04/2011] On supprime la ")" si on est dans le cas "3.6.16)"
		$.browser.version = userAgent.substring(0,userAgent.indexOf(' '));
		$.browser.navigateur = "Firefox";
		
	// Opera
	}else if($.browser.opera) {
		// DT [15/10/2010] prise en compte des anciennes version <10.X qui n'avait que "opera/"
		if( userAgent.indexOf('version/') == -1 ){
			// DT [03/08/2011] Je prend 'opera ' et 'opera/' en supprimant le /
			userAgent = userAgent.replace("/", " ");
			userAgent = userAgent.substring(userAgent.indexOf('opera ') +6) + ' ';
		}else
			userAgent = userAgent.substring(userAgent.indexOf('version/') +8) + ' ';
		$.browser.version = userAgent.substring(0,userAgent.indexOf(' '));
		$.browser.navigateur = "Opera";
		
	// Iceweasel -> Firefox de Linux Debian
	}else if($.browser.mozilla && userAgent.toLowerCase().indexOf('iceweasel') != -1) {
		userAgent = userAgent.substring(userAgent.indexOf('iceweasel/') +10) + " ";
		$.browser.version = userAgent.substring(0,userAgent.indexOf(' '));
		$.browser.navigateur = "Firefox";
	}
	
	// Recherche OS
	if(navigator.userAgent.toLowerCase().indexOf('windows ce') != -1)
		$.browser.os = "Windows Mobile";
	else if(navigator.userAgent.toLowerCase().indexOf('windows') != -1)
		$.browser.os = "Windows";
	else if(navigator.userAgent.toLowerCase().indexOf('macintosh') != -1)
		$.browser.os = "Mac";
	else if(navigator.userAgent.toLowerCase().indexOf('linux') != -1)
		$.browser.os = "Linux";
	else if(navigator.userAgent.toLowerCase().indexOf('ipod') != -1)
		$.browser.os = "iPod";
	else if(navigator.userAgent.toLowerCase().indexOf('ipad') != -1)
		$.browser.os = "iPad";
	else if(navigator.userAgent.toLowerCase().indexOf('iphone') != -1)
		$.browser.os = "iPhone";
	// DT [26/11/2010] Ajout de Nintendo
	else if(navigator.userAgent.toLowerCase().indexOf('nintendo') != -1)
		$.browser.os = "Nintendo";
	// DT [03/08/2011] Une version de Windows inconnue
	else if(navigator.userAgent.toLowerCase().indexOf('mozilla/4.0 (compatible; msie 6.0)') != -1)
		$.browser.os = "Windows";
		
	// Version OS
	if( $.browser.os == "Windows"){
		userAgent = navigator.userAgent.substring(navigator.userAgent.toLowerCase().indexOf('windows nt ') +11); // Tout après "windows nt "
		//userAgent = userAgent + ";";	// On ajoute une ";" dans le cas où on a "5.0)" et pas "5.0;blablablab;blabla) blabla"
		//userAgent = userAgent.substring(0,userAgent.indexOf(';'));	// On prend du début jusqu'à la virgule
		//userAgent = userAgent.replace(")", "");		// On supprime la ")" si on est dans le cas "5.0)", pour ce cas la virgule servait de caractère de terminaison
		// DT [03/08/2011] On ne prend que les 4 premiers caractéres (et non supprime si on a une ) ou ; dans le cas où le numéro de version évolue).
		userAgent = userAgent.substring(0,4);
		userAgent = userAgent.replace(")", "");
		userAgent = userAgent.replace(";", "");
		switch( userAgent ){
			case "4.0" : $.browser.version_os = "NT"; break;			// DT [03/08/2011]
			case "5.0" : $.browser.version_os = "2000"; break;
			case "5.1" : $.browser.version_os = "XP"; break;
			case "5.2" : $.browser.version_os = "Server 2003"; break;
			case "6.0" : $.browser.version_os = "Vista"; break;
			case "6.1" : $.browser.version_os = "Seven"; break;
		}		

		// DT [15/02/2011] Ajout d'autres OS Windows (Ancien)
		if($.browser.version_os == ''){
			userAgent = navigator.userAgent.substring(navigator.userAgent.toLowerCase().indexOf('windows ') +8); // Tout après "windows "
			userAgent = userAgent + ";";	// On ajoute une ";" dans le cas où on a "98)" et pas "98;blablablab;blabla) blabla"
			userAgent = userAgent.substring(0,userAgent.indexOf(';'));	// On prend du début jusqu'à la virgule
			userAgent = userAgent.replace(")", "");		// On supprime la ")" si on est dans le cas "98)", pour ce cas la virgule servait de caractère de terminaison
			switch( userAgent ){
				case "98" : $.browser.version_os = "98"; break;
			}
		}
	}
	// DT [24/09/2010] Ajout de Mac comme Version OS
	if( $.browser.os == "Mac"){
		userAgent = navigator.userAgent.substring(navigator.userAgent.toLowerCase().indexOf('mac os x ') +9); // Tout après "mac os x "
		userAgent = userAgent.substring(0,userAgent.indexOf(';'));	// On prend du début jusqu'à la virgule
		// DT [03/08/2011] Si on n'a pas de ; je recommence mais avec la )
		if(userAgent == ''){
			userAgent = navigator.userAgent.substring(navigator.userAgent.toLowerCase().indexOf('mac os x ') +9); // Tout après "mac os x "
			userAgent = userAgent.substring(0,userAgent.indexOf(')'));	// On prend du début jusqu'à la )
		}
		switch( userAgent ){
			case "10.4" : $.browser.version_os = "Tigre"; break;					// DT [27/10/2010]
			case "10_4_11" : $.browser.version_os = "Tigre"; break;					// DT [15/10/2010]
			case "10.5" : $.browser.version_os = "Leopard"; break;
			case "10_5_6" : $.browser.version_os = "Leopard"; break;				// DT [03/08/2011]
			case "10_5_8" : $.browser.version_os = "Leopard"; break;				// DT [22/10/2010]
			case "10.6" : $.browser.version_os = "Snow Leopard"; break;
			case "10_6" : $.browser.version_os = "Snow Leopard"; break;				// DT [06/04/2011]
			case "10_6_2" : $.browser.version_os = "Snow Leopard"; break;			// DT [15/02/2011]
			case "10_6_3" : $.browser.version_os = "Snow Leopard"; break;			// DT [10/11/2010]
			case "10_6_4" : $.browser.version_os = "Snow Leopard"; break;			// DT [15/10/2010]
			case "10_6_5" : $.browser.version_os = "Snow Leopard"; break;			// DT [26/11/2010]
			case "10_6_6" : $.browser.version_os = "Snow Leopard"; break;			// DT [15/02/2011]
			case "10_6_7" : $.browser.version_os = "Snow Leopard"; break;			// DT [06/04/2011]
			case "10_6_8" : $.browser.version_os = "Snow Leopard"; break;			// DT [03/08/2011]
			case "10_7"   : $.browser.version_os = "Lion"; break;					// DT [03/08/2011]
			case "10.7"   : $.browser.version_os = "Lion"; break;					// DT [07/11/2011]
			case "10_7_1"   : $.browser.version_os = "Lion"; break;					// DT [22/09/2011]
			case "10_7_2"   : $.browser.version_os = "Lion"; break;					// DT [22/09/2011]
		}			
	}
	// DT [24/09/2010] Ajout de Linux comme Version OS
	if( $.browser.os == "Linux"){
		if(navigator.userAgent.toLowerCase().indexOf('debian') != -1)
			$.browser.version_os = "Debian";
		else if(navigator.userAgent.toLowerCase().indexOf('ubuntu') != -1)
			$.browser.version_os = "Ubuntu";
		else if(navigator.userAgent.toLowerCase().indexOf('mandriva') != -1)		// DT [06/04/2011]
			$.browser.version_os = "Mandriva";
		else if(navigator.userAgent.toLowerCase().indexOf('android') != -1)			// DT [11/07/2011]
			$.browser.version_os = "Android";
	}
	// DT [22/10/2010] Ajout de l'iPhone comme Version OS, je met vide car il n'y a pas assez de données pour différencier les iPhones.
	if( $.browser.os == "iPhone"){
		userAgent = navigator.userAgent.substring(navigator.userAgent.toLowerCase().indexOf('iphone os ') +10);
		userAgent = userAgent.substring(0,userAgent.indexOf(' '));	// On prend du début jusqu'à la virgule
		switch( userAgent ){
			case "3_1_3" : $.browser.version_os = " "; break;						
		}
	}
	// DT [26/11/2010] Ajout de Nintendo comme Version OS
	if( $.browser.os == "Nintendo"){
		if(navigator.userAgent.toLowerCase().indexOf('wii') != -1)
			$.browser.version_os = "Wii";
	}
 }
 
// Il récupére l'adresse IP du visiteur connecté au site
// DT [04/10/2010]
function ipAdresseVisiteur(){
	var ip;
	$.ajax({
		async : false								// Synchrone pour attendre le résultat
		,url: "../commun/ip.asp"					// Page contenant le code suivant "<%=Request.ServerVariables("REMOTE_ADDR")%>" en ASP
		,success: function(result) {ip=result;}		// Le resultat avec l'IP
	});
	
	// Convertion dans certain cas
	if( ip == "::1" ){
		ip = "127.0.0.1";
	}else if (ip == "undefined"){
		ip = "?";	// Pour bien déterminer s'il y a eu un problème ou non
	}
	
	return ip;
}
