//-------------------------------------//
//----    statistiques.js  ------------//
//-------------------------------------//

// Ajoute la fonction trim comme méthode de l'objet String.
String.prototype.trim = function()
{ return this.replace(/(^\s*)|(\s*$)/g, ""); }



//---  variables configuration ----
// délai d'appel à la ServletStatistiques
var stat 					=  "fichier statistiques.js chargé"; // millisecondes = 20s
var delaiAppel 					=  20000; // millisecondes = 20s
var URLservlet = "/cnetp/dispatcher?";

//--- variables globales ---
var navigateurNom 	  			= "";
var navigateurVersionComplete 	= "";
var navigateurVersion 			= "";
var navigateurCodeNom  			= "";
var userAgent					= "";

var largeurEcran 	 			= "";
var hauteurEcran 	 			= "";    
var couleurEcran 	  			= "";   // bits

var langue			 			= "";
var plateforme		  			= "";

var cookieACTIF 				= "";
var javaACTIF   				= "";

var cpuClasse 					= "";  

var vitesseConnexion 			= "";
var typeConnexion 				= "";

var referant 	  				= "";
var pageURL 					= "";
var pageTitre 					= "";

var lienCode					= "";
var lienLibelle					= "";

var tempsCharge					= "";

var indicInf					= "";
var formulairePage				= "";
var front						= "";

var URL 						= "";

/**************************************************************************
* getInformationsOnLoad() : récupère toutes les informations techniques (si 
* nécessaires) / fonctionnelles et de trafic pour les statistiques Internet
* au clic sur une page
***************************************************************************/
//Page ouverte / clic O/C, lienCode, lien libellé, formulaire, servlet appelée
function getInformations(indicInfos, lienC, lienL, formu, frontvalue){

	formulairePage = formu;
	front = frontvalue;
	lienCode = lienC;
	lienLibelle = lienL;

	if (nu_conv == "0001") {
		alert("Test pour la convention 0001 : indicInfos " + indicInfos);
	}
	//initialisation de indicInf
	if (indicInfos != 'T' && indicInfos != 'P')
		{indicInf = 'T';}
	else{indicInf = indicInfos;}

	// récupération des informations techniques  
	// uniquement si indicateur à T
	if (indicInf == 'T'){

		// fonctionnelles & trafic
		//getTempsChargement();
		getTrafic();			
		
		// techniques
		getInformationsNavigateur();
		//getVitesseConnexion();

		//appel stats
		//afficheInformations();
		formatRequete();
	} else{
	
	// != 'T' = fonctionnelles uniquement	
		// fonctionnelles & trafic
		//getTempsChargement();
		if (nu_conv == "0001") {
			alert("Test pour la convention 0001 : Avant traffic ");
		}
		getTrafic();
		if (nu_conv == "0001") {
			alert("Test pour la convention 0001 : Avant formatRequete ");
		}	
		//Affichage  
		//afficheInformations();	
		//Appel à la ServletStatistiques
		formatRequete();
	}
	return URL;
}

/**************************************************************************
* getInformationsOnLoad() : récupère toutes les informations techniques (si 
* nécessaires) / fonctionnelles et de trafic pour les statistiques Internet
* au clic sur une page
***************************************************************************/
//Page ouverte / clic O/C, lienCode, lien libellé, formulaire, servlet appelée
function getInformationsCNETP(indicInfos, lienC, lienL, formu, frontvalue){

	formulairePage = formu;
	front = frontvalue;
	lienCode = lienC;
	lienLibelle = lienL;

	if (nu_conv == "0001") {
		alert("Test pour la convention 0001 : indicInfos " + indicInfos);
	}
	//initialisation de indicInf
	if (indicInfos != 'T' && indicInfos != 'P')
		{indicInf = 'T';}
	else{indicInf = indicInfos;}
	
	// récupération des informations techniques  
	// uniquement si indicateur à T
	if (indicInf == 'T'){
		
		// fonctionnelles & trafic
		//getTempsChargement();
		getTrafic();			
		
		// techniques
		getInformationsNavigateur();	
		//getVitesseConnexion();
				
		//appel stats
		//afficheInformations();
		formatRequete();
	} else{	
	
	// != 'T' = fonctionnelles uniquement	
		// fonctionnelles & trafic
		//getTempsChargement();
		if (nu_conv == "0001") {
			alert("Test pour la convention 0001 : Avant traffic ");
		}
		getTrafic();
		if (nu_conv == "0001") {
			alert("Test pour la convention 0001 : Avant formatRequete ");
		}	
		//Affichage  
		//afficheInformations();	
		//Appel à la ServletStatistiques
		formatRequete(); 				
	}	
return URL;
}

/**************************************************************************
* formatRequete() : met en forme toutes les informations techniques 
* / fonctionnelles et de trafic pour les statistiques Internet
* au chargement de la page
***************************************************************************/

function formatRequete(){

//ajout des paramètres de passage dans l'URL en POST
URL = URLservlet;
URL = URL + "correcBugIE=okBugisCorrect&"
URL = URL + "front=" + front + "&";

// En ouverture de session
if (indicInf == 'T'){
	URL = URL + "navigateurNom=" + escape(navigateurNom) + "&";
	URL = URL + "navigateurVersion=" + escape(navigateurVersion) + "&";
	URL = URL + "navigateurCodeNom=" + escape(navigateurCodeNom) + "&";
	URL = URL + "userAgent=" + escape(userAgent) + "&";
	URL = URL + "largeurEcran=" + escape(largeurEcran) + "&";
	URL = URL + "hauteurEcran=" + escape(hauteurEcran) + "&";
	URL = URL + "couleurEcran=" + escape(couleurEcran) + "&";
	URL = URL + "langue=" + escape(langue) + "&";
	URL = URL + "plateforme=" + escape(plateforme) + "&";
	URL = URL + "cookieACTIF=" + escape(cookieACTIF) + "&";
	URL = URL + "javaACTIF=" + escape(javaACTIF) + "&";
	URL = URL + "cpuClasse=" + escape(cpuClasse) + "&";
	URL = URL + "vitesseConnexion=" + escape(vitesseConnexion) + "&";
	URL = URL + "typeConnexion=" + escape(typeConnexion) + "&";
}

// Dans tous les cas
URL = URL + "lienLibelle=" + escape(lienLibelle) + "&";
URL = URL + "referant=" + escape(referant) + "&";
URL = URL + "pageTitre=" + escape(pageTitre) + "&"; 
URL = URL + "tempsCharge=" + escape(tempsCharge) + "&"; 
URL = URL + "lienCode=" + lienCode + "&"; 	 
URL = URL + "pageURL=" + escape(pageURL) + "&";
if (nu_conv == "0001") {
	alert("Test pour la convention 0001 : URL en construction " + URL);
}	
var paramValue = window.location.search;
var timeStamp = 0;
if(paramValue != "") {
	if(paramValue.search("timeStamp") > 0) {
		params = paramValue.split("=");
		timeStamp = params[1];
	}
}
URL = URL + "timeStamp=" + timeStamp;			
//alert("URL : " + URL);

/*
Méthode en POST : impossibilité de soumettre deux formulaires à la fois .... GET utilisée...
<!---- Formulaire pour le passage en POST des informations -->
<FORM name="STAT" method=POST>
<input name="front" type="hidden">
<input name="navigateurNom" type="hidden">
<input name="navigateurVersion" type="hidden">
<input name="navigateurCodeNom" type="hidden">
<input name="userAgent" type="hidden">
<input name="largeurEcran" type="hidden">
<input name="hauteurEcran" type="hidden">
<input name="couleurEcran" type="hidden">
<input name="langue" type="hidden">
<input name="plateforme" type="hidden">
<input name="cookieACTIF" type="hidden">
<input name="javaACTIF" type="hidden">
<input name="cpuClasse" type="hidden">
<input name="vitesseConnexion" type="hidden">
<input name="typeConnexion" type="hidden">
<input name="lienLibelle" type="hidden">
<input name="referant" type="hidden">
<input name="pageTitre" type="hidden">
<input name="tempsCharge" type="hidden">
<input name="lienCode" type="hidden">
<input name="pageURL" type="hidden">
</FORM>


document.STAT.action=URL;
document.STAT.front.value=front;
document.STAT.navigateurNom.value=navigateurNom;
document.STAT.navigateurVersion.value=navigateurVersion;
document.STAT.navigateurCodeNom.value=navigateurCodeNom;
document.STAT.userAgent.value=userAgent;
document.STAT.largeurEcran.value=largeurEcran;
document.STAT.hauteurEcran.value=hauteurEcran;
document.STAT.couleurEcran.value=couleurEcran;
document.STAT.langue.value=langue;
document.STAT.plateforme.value=plateforme;
document.STAT.cookieACTIF.value=cookieACTIF;
document.STAT.javaACTIF.value=javaACTIF;
document.STAT.cpuClasse.value=cpuClasse;
document.STAT.vitesseConnexion.value=vitesseConnexion;
document.STAT.typeConnexion.value=typeConnexion;
document.STAT.lienLibelle.value=lienLibelle;
document.STAT.referant.value=referant;
document.STAT.pageTitre.value=pageTitre;
document.STAT.tempsCharge.value=tempsCharge;
document.STAT.lienCode.value=lienCode;
document.STAT.pageURL.value=pageURL;
document.STAT.submit();*/	
}



function afficheInformations(){
	
// fonction de test 
alert (
	"******* Techniques *******" 					+ "\n" +	
	"navigateurNom : " 				 + navigateurNom + "\n" +
	"navigateurVersion : " 			 + navigateurVersion + "\n" +
	"largeurEcran : " 				 + largeurEcran + "\n" +
	"hauteurEcran : " 				 + hauteurEcran + "\n" +
	"couleurEcran : " 				 + couleurEcran + "\n" +
	"langue : " 					 + langue + "\n" +
	"plateforme : " 				 + plateforme + "\n" +
	"cookieACTIF : " 				 + cookieACTIF + "\n" +
	"navigateurCodeNom : " 			 + navigateurCodeNom + "\n" + 
	"userAgent : " 					 + userAgent + "\n" + 
	"javaACTIF : " 					 + javaACTIF + "\n"  +
	"cpuClasse : " 					 + cpuClasse + "\n"  +
	
	"******* Vitesses Connexion et CPU *******" + "\n" +
	"vitesseConnexion : " 			 + vitesseConnexion + "\n" +
	"typeConnexion : " 				 + typeConnexion + "\n" +
	
	"******* Trafic *******" 						+ "\n" +	
	"referant : " 					 + referant + "\n" +
	"pageURL : "   					 + pageURL + "\n" +
	"pageTitre : " 					 + pageTitre + "\n" +
	"tempsCharge : " 				 + tempsCharge + "\n" +
	"lienCode : " 			 		 + lienCode + "\n" +
	"lienLibelle : " 			 	 + lienLibelle 
	); 

}




function getInformationsNavigateur(){


/*-- Récupération des informations Navigateur / Ecran / OS --*/
// dans les balise HEAD
// compatibilité : Internet explorer 3 et + , Netscape 3 et +, Opera 6  
//
// FORMAT :  navigator.appName = Microsoft Internet Explorer
//           navigator.appVersion = 4.0 (compatible; MSIE 6.0; Windows NT 5.0)


 	navigateurNom 	  			= navigator.appName;
 	navigateurVersionComplete 	= navigator.appVersion;
 	navigateurCodeNom  			= navigator.appCodeName;
 	userAgent					= navigator.userAgent;
 	cookieACTIF 				= navigator.cookieEnabled;
 	javaACTIF   				= navigator.javaEnabled();
	cpuClasse 					= navigator.cpuClass;  

/*-- Récupération des données écran --*/
if (navigateurVersionComplete.substring(0,1) >= 4)
	{
	largeurEcran = screen.width;
	hauteurEcran = screen.height;
	couleurEcran = screen.colorDepth;
	}

/*  Microsoft Internet Explorer  */
if (navigateurNom == "Microsoft Internet Explorer") {
	langue = navigator.systemLanguage;
	navigateurVersion = navigateurVersionComplete.substring(navigateurVersionComplete.indexOf("MSIE",0) + 5, navigateurVersionComplete.indexOf(";",navigateurVersionComplete.indexOf("MSIE",0)));
	
	if (navigateurVersionComplete.indexOf("Win",0) > 0) {

		if ( navigateurVersionComplete.indexOf(";",navigateurVersionComplete.indexOf("Win",0)) > 0 ) {
			plateforme = navigateurVersionComplete.substring(navigateurVersionComplete.indexOf("Win",0), navigateurVersionComplete.indexOf(";",navigateurVersionComplete.indexOf("Win",0)));
		} else {
			plateforme = navigateurVersionComplete.substring(navigateurVersionComplete.indexOf("Win",0), navigateurVersionComplete.indexOf(")",navigateurVersionComplete.indexOf("Win",0)));
		}
	}
	
	if (navigateurVersionComplete.indexOf("Mac",0)>0) {
		plateforme = "Macintosh";
		navigateurVersion = navigateurVersionComplete.substring(navigateurVersionComplete.indexOf("MSIE",0) + 5, navigateurVersionComplete.indexOf("?",navigateurVersionComplete.indexOf("MSIE",0)));
	}
}


/*  Opéra  */
if (navigateurNom == "Opera") {
	langue = navigator.language;
	navigateurVersion = navigateurVersionComplete.substring(0, navigateurVersionComplete.indexOf("(",0));
	plateforme = navigateurVersionComplete.substring(navigateurVersionComplete.indexOf("(",0) + 1, navigateurVersionComplete.indexOf(";",0));

}

/*  Netscape  */
if (navigateurNom == "Netscape") {
	langue = navigator.language;
	if (navigator.vendor == "") { // Mozilla
		
		navigateurVersion = (navigateurVersionComplete.substring(0, navigateurVersionComplete.indexOf("(",0)));
		nom = "Mozilla";
		
		if (navigateurVersionComplete.indexOf("Mac",0)>0) {
			plateforme = "Macintosh";
		}
		
		if (navigateurVersionComplete.indexOf("Linux",0)>0) {
			plateforme = "Linux";
		}
		
		if (navigateurVersionComplete.indexOf("Win",0)>0) {
			plateforme = navigateurVersionComplete.substring(navigateurVersionComplete.indexOf("Win",0), navigateurVersionComplete.indexOf(";",navigateurVersionComplete.indexOf("Win",0)));
		}
		
		if (navigateurVersion == 5) {
			navigateurVersion = "1";
		}
		
		if (navigator.oscpu) {
			plateforme = navigator.oscpu;
		}
		
	} 	
	
	else {	// NS 4 ou 6
			navigateurVersion = (navigateurVersionComplete.substring(0, navigateurVersionComplete.indexOf("(",0)));
			if (navigateurVersionComplete.indexOf("Mac", 0) > 0) {
			plateforme = "Macintosh";
		}
		if (navigateurVersionComplete.indexOf("Linux",0)>0) {
			plateforme = "Linux";
		}
		if (navigateurVersionComplete.indexOf("Win",0)>0) {
			plateforme = navigateurVersionComplete.substring(navigateurVersionComplete.indexOf("Win",0), navigateurVersionComplete.indexOf(";",navigateurVersionComplete.indexOf("Win",0)));
		}
		if (navigateurVersion == 5) {
			navigateurVersion = "6.0";
			if (navigator.vendorSub != "") {
				navigateurVersion = navigator.vendorSub;
				}
		}
		if (navigator.oscpu) {
			plateforme = navigator.oscpu;
		}
	}	
}

}



/***************************************************************************
* getTrafic() : récupère toutes les informations liées au trafic sur le site
* pour les statistiques Internet
****************************************************************************/
function getTrafic() {
	
	 referant 	  			= document.referrer;
	 pageURL 				= document.location;
	 pageTitre 				= document.title;
	 tempsCharge			= getTempsChargement();	  		
}



/* ---------------------------------------------------------------*/
/* Ce script permet d'afficher le temps de chargement de la page  */ 
/* Compatibilité Internet Explorer et Netscape 4 et plus          */
/* ---------------------------------------------------------------*/

NavName = navigateurNom.substring(0,3);
NavVersion = navigateurVersionComplete.substring(0,1);

if (navigateurNom.substring(0,3) != "Mic" || navigateurVersionComplete.substring(0,1) >= 4)
	{
	debut = new Date;
	debut = debut.getTime();
	}
	
	
function getTempsChargement() {
	if (NavName != "Mic" || NavVersion>=4)
		{
		fin = new Date;
		fin = fin.getTime();
		millisecondes = fin-debut;
		}
	return millisecondes;
}

		

/* ----------------------------------------------------*/
/* Ce script permet d'afficher la vitesse de connexion */
/* Inutilisable à ce jour ....						   */
/* ----------------------------------------------------*/

// variables globales
var tjs_img; 
var tjs_src   = "/cnetp/images/logo-cnetp-acc.jpg";     // Image à charger
var tjs_size  = 18494;		      // Taille de l'image : octets
var tjs_delai = 100; 
var tjs_nb    = -1; 
var tjs_delai_max = 20000; //delaiAppel;   // 20 000 millisecondes
var timer1    = 0; 
var timer2    = 0;
var tjs_fin   = "";


// Cette fonction ne marche pas en raison du setTimeOut().
function getVitesseConnexion() {
	
	// lance la vérif de la connexion
	tjs_img = new Image();
	timer1  = new Date();
	timer1  = timer1.getTime();
	tjs_img.src = tjs_src + "?dummy=" + timer1;
	tjs_nb  = 0;	
	Timerkos();		
}


function Timerkos() {
	
	var anim = "-"
	tjs_nb++;
	
	if (tjs_nb*tjs_delai >= tjs_delai_max) { 
		// Fin de la durée maxi
		tjs_fin = EvalConnexion(0);			
	} else {
		if (tjs_img.complete) {			
			timer2 = new Date(); 
			timer2 = timer2.getTime();
			tjs_fin = EvalConnexion(tjs_size/(timer2-timer1));		
		} else {
			setTimeout("Timerkos()",tjs_delai);
		}
	}
	
}


function EvalConnexion(kos) {
	tjs_nb = -1;
	res = "";
	if (kos == 0) {res = "?";}
	if ((kos > 0)&&(kos < 3)) {res="Modem 28k";}
	if ((kos > 3)&&(kos < 6)) {res="Modem 56k";}
	if ((kos > 6)&&(kos < 100)) {res="Haut débit";}
	if (kos > 100) {res = "Local";}	
	kos = Math.round(kos*10)/10;

	vitesseConnexion = kos;
	typeConnexion = res;		
}






// Ouverture d'un lien sans appel à une servlet (hors espace adhérent)	
function lienClassique(indicInfos, lienC, lienL){
	var URL = getInformations(indicInfos, lienC, lienL, null, "lien");			
	//window.location.replace(URL);//bien sous firefox
	window.location.href = URL;	//bien sous ie	
}
// Ouverture d'une pop-up sans appel à une servlet (hors espace adhérent)	
function popupClassique(indicInfos, lienC, lienL, nomPopup, width, height, left, top){
	var URL = getInformations(indicInfos, lienC, lienL, null, "lien");			
	mafenetre = window.open(URL, nomPopup,'toolbar=0,location=0,directories=0,menuBar=0,scrollbars=1,resizable=1,width='+ width +',height='+height+',left=' + left + ',top=' + top);		
	mafenetre.focus();
}

// Ouverture d'une pop-up sans appel à une servlet (hors espace adhérent)	
function popupClassique2(indicInfos, lienC, lienL, nomPopup, width, height, left, top){
	var URL = getInformations(indicInfos, lienC, lienL, null, "lien");			
	mafenetre = window.open(URL, nomPopup,'toolbar=0,location=0,directories=0,menuBar=0,scrollbars=1,resizable=1,width='+ width +',height='+height+',left=' + left + ',top=' + top);		
	mafenetre.focus();
}

// Ouverture d'une pop-up sans appel à une servlet (hors espace adhérent)	
function popupClassique(indicInfos, lienC, lienL){
	var URL = getInformations(indicInfos, lienC, lienL, null, "lien");			
	mafenetre = window.open(URL);		
	mafenetre.focus();
}

// Ouverture d'un lien avec appel à une servlet (search)	
function lienRecherche(indicInfos, lienC, lienL){
	var URL = getInformations(indicInfos, lienC, lienL, null, "search");			
	//window.location.replace(URL);
	window.location.href = URL;	
}

// Ouverture d'un lien sans avec appel à une servlet (search)	
function lienMoteurRecherche(indicInfos, lienC, lienL, formu){
	var URL = getInformations(indicInfos, lienC, lienL, formu, "search");
	formu.action=URL;
	formu.submit();	
}


