/****************************************************************************************
	Nom : InviteSondage
	Description : Ce script permet de gerer la composante d'invitation au sondage. 
				  Il permet :
				  				- gerer l'affichage
				  				- gerer les cookies nécessaire au fonctionnement
				  				
	Dépendance : Les dépendances sont obligatoires pour faire fonctionner l'invitation 
				 au sondage.  
		1- Commun.js - Il permet de gerer si les cookies sont activé.
		2- InvitationSondage_Omniture.js - Il permet de gerer les appels à Omniture.
	Navigateur testé : 
		1- ie6 
		2- ie7 
		3- Firefox	2.0
		4- Safari			 
	Auteur : Simon Tétreault
	Date de création : 20 nov 2007
	Date de modification :  ex : 20 nov 2007 | Simon Tétreault | Changement....
		1-
		2-
		3-
		4-
		5-
		6-

*******************************************************************************************/



/******************************************************************************************/
/*Paramêtrage de propriété*/


/*Nom du cookies utilise pour l'Invitation du sondage*/
var constPreFixeNomCookies = "InviteSondage";

/*Nom du cookies de l'Invitation du sondage courant*/
var constNomCookieInviteSondageSectionCourante = "NomInviteSondageSectionCourante";

/*Valeur utilisée pour un sondage deja répondu*/
var constSiInviteSondageDejaRepondu = "T";

/*Valeur utilisée pour une sondage pas déjà répondu*/
var constSiInviteSondagePasDejaRepondu = "F";

//Id du panel parent du sondage
var constIdDivParentInviteSondage = "divInviteSondage";

//Nombre de jour dans un mois (Utile dans le calcul de la date d'expiration du cookie)
var constNombreJourDansUnMois = 30;

/******************************************************************************************/




/******************************************************************************************/
/*Fontions*/


/*
	Nom : ObtenirNomCookieInviteSondage
	Description : Permet d'obtenir le nom du cookie du sondage actif
	Parametres : _NomSondage - Nom du sondage actif
	Retour : Retourne le nom du cookie de l'invitation au sondage. IL retourne le
			 prefixe aditionne du nom du sondage. 
			 
	Remarques :
*/
function ObtenirNomCookieInviteSondage(_NomSondage)
{
	return constPreFixeNomCookies + _NomSondage;
}



/*
	Nom : FermerInviteSondage
	Description : Permet de fermer l'invitation sondage 
					- On met à jour le cookie
					- On cache l'invitation au sondage	
					- On founit omniture
	Parametres : _NomSondage - Nom du sondage actif
				 _SondageDureeMois - Durée en mois du sondage
	Retour : 	 
	Remarques : Utilisé pour le bouton non et fermer
*/
function FermerInviteSondage(_NomSondage, _SondageDureeMois)
{

	//On met à jour le cookie comme quoi qu'il repondu oui
	CreerCookieInviteSondage(ObtenirNomCookieInviteSondage(_NomSondage), _SondageDureeMois, constSiInviteSondageDejaRepondu );

	//Réafficher le div cacher pour regler le problème IE (Pour plus d'Info voir la fonction)
	ReinitialiseBugIE();
	
	//On appel Omniture pour dire que c'est une fermeture par indécision
	FermerSondageIndecis();
	
	//On cache l'Invitation au sondage
 	SiAfficherInviteSondage(false);

}


/*
	Nom : FermerInviteSondageAvecNon
	Description : Permet de fermer l'invitation sondage	lorsque que l'utilisateur click sur non	
					- On met à jour le cookie
					- On cache l'invitation au sondage	
					- On founit omniture
	Parametres : _NomSondage - Nom du sondage actif
				 _SondageDureeMois - Durée en mois du sondage
	Retour : 	 
	Remarques : Utilisé pour le bouton non et fermer
*/
function FermerInviteSondageAvecNon(_NomSondage, _SondageDureeMois)
{

	//On met à jour le cookie comme quoi qu'il repondu oui
	CreerCookieInviteSondage(ObtenirNomCookieInviteSondage(_NomSondage), _SondageDureeMois, constSiInviteSondageDejaRepondu );

	//Réafficher le div cacher pour regler le problème IE (Pour plus d'Info voir la fonction)
	ReinitialiseBugIE();
	
	//On appel Omniture pour dire que c'est une fermeture par non
	FermerSondage();
	
		//On cache l'Invitation au sondage
 	SiAfficherInviteSondage(false);

}


/*
	Nom : OuvrirInviteSondage
	Description : Permet d'ouvrir l'invitation sondage
					-On met à jour le cookie de sondage
					-On redirige vers le sondage passé en parametre				
	Parametres : _NomSondage - Nom du sondage actif
				 _SondageDureeMois - Durée en mois du sondage
				 _UrlDeRedirection - Url de redirection vers le sondage
	Retour : 	 
	Remarques : Utilisé pour le bouton oui 
*/
function OuvrirInviteSondage(_NomSondage, _SondageDureeMois,  _UrlDeRedirection )
{	
			
	//On met à jour le cookie comme quoi qu'il repondu oui
	CreerCookieInviteSondage(ObtenirNomCookieInviteSondage(_NomSondage), _SondageDureeMois, constSiInviteSondageDejaRepondu );

	//Réafficher le div cacher pour regler le problème IE (Pour plus d'Info voir la fonction)
	ReinitialiseBugIE();

	//On redirige l'utilisateur vers le sondage dans une nouvelle fenetre
	var w = window.open(_UrlDeRedirection, 'Sondage');
	
	//On met la nouvelle fenetre en arriere de la page actuelle
	w.blur();
	
	//On appel Omniture pour dire que c'est une fermeture par oui
	OuvrirSondage();
	
	//On cache l'Invitation au sondage
 	SiAfficherInviteSondage(false);


}


/*
	Nom : GererAffichageInviteSondage
	Description : Permet de gerer l'Affichage de l'Invitation sondage selon le cookie.
					- Crée ou modifie le cookie de session (sondage courant)
					- Crée si nécessaire le cookie du sondage courant
				    - Affiche ou Cache l'invitation
	Parametres : _NomSondage - Nom du sondage actif
				 _SondageDureeMois - Durée en mois du sondage
	Retour : aucun			 
	Remarques : Cette fonction est la fonction a appeler par les pages web.
				** Elle est la principale lors de l'appel de la page ** 

*/
function GererAffichageInviteSondage( _NomSondage, _SondageDureeMois)
{


	// Est-ce que l'internaute supporte les cookies ?
	if (SupporteCookie() != true)
	{
		// On n'affiche pas de sondage au internaute qui ne supporte pas les cookies
		return;
	}
		
	//On crée ou on met à jour le cookie du sondage courant 
	//Ce cookie est un cookie de session
	CreerCookieInviteSondage(constNomCookieInviteSondageSectionCourante , 0, ObtenirNomCookieInviteSondage(_NomSondage));

	//On essaye d'obtenir la valeur du cookie du sondage
	var InviteSondageSiDejaRepondu = ObtenirSiInviteSondageDejaRepondu(_NomSondage );

	//Est ce que le sondage a deja ete demande
	if(InviteSondageSiDejaRepondu == null)
	{
		//Si non, on cree le cookie
		CreerCookieInviteSondage(ObtenirNomCookieInviteSondage(_NomSondage), _SondageDureeMois, constSiInviteSondageDejaRepondu);
	}
		
	//Est ce que le sondage a deja ete repondu
	if( InviteSondageSiDejaRepondu == constSiInviteSondageDejaRepondu )
	{	
		//si oui, on n'affiche pas le sondage
		return;
	}
	
	//On affiche le sondage
	SiAfficherInviteSondage(true);

}


/*
	Nom : SiAfficherInviteSondage
	Description : Permet de gerer l'Affichage de l'Invitation sondage selon le cookie.
				    - affiche l'Invitation et le positionne ou le cache
	Parametres : _SiAffiche - Flag si on doit afficher le sondage (true) oui (false) non
	Retour : aucun			 
	Remarques : 
*/
function SiAfficherInviteSondage(_SiAffiche)
{

	

	//Obtient le div de l'invitation de sondage
	var objDivParentInviteSondage = document.getElementById(constIdDivParentInviteSondage);

	//Est ce que le div de l'invitation de sondage a été trouvé
	if	(objDivParentInviteSondage == null)
	{
		return;
	}

	//Est-ce qu'on doit afficher l'invitation sondage ou le cacher
	if(_SiAffiche == true)
	{
	
		//On rend visible l'invitation au sondage
		objDivParentInviteSondage.style.visibility='visible';	
	
		//On gere le bug de dropdown list dans  ie (Pour explication voir la fonction)
		GererBugIE();
	}
	else
	{
		//On rend invisible l'invitation au sondage
		objDivParentInviteSondage.style.visibility='hidden';	
	}
}	


	

/*
	Nom : CreerCookieInviteSondage
	Description : Permet de creer le cookie de l'invitation sondage.
	Parametres : _NomSondage - Nom du sondage actif
				 _SondageDureeMois - Durée en mois du sondage 
				 _SondageDejaRepondu - Valeur a entrer dans le cookie
				 					   Ce qui est permis est (oui ou non)
	Retour : false si la fonction n'a pas fonctionné
			 true si la fonction a fonctionné			 
	Remarques : ** Dépendance du fichier /js/commun.js ** La fonction utilise Set_Cookie de 
				   de ce fichier
*/
function CreerCookieInviteSondage(_NomSondage, _SondageDureeMois, _SondageDejaRepondu)
{

	//Est ce que le sondage a ete renseigne correctement
	if( _SondageDureeMois < 0)
	{
		//si non
		return false;
	}

	/*On convertit la duree du sondage recu en mois en jour et on la divise pour la mettre
	  en milliseconde car la fonction set_Cookien accepte seulement les millisecondes et notre
	  entree est en mois*/
	_SondageDureeMois = _SondageDureeMois * constNombreJourDansUnMois;	
	
	//Crée le cookie
	Set_Cookie(_NomSondage, _SondageDejaRepondu, _SondageDureeMois, '/');
	
	return true;

}


/*
	Nom : ObtenirSiInviteSondageDejaRepondu
	Description : Permet d'obtenir la valeur du cookie de l'invitation au sondage							
	Parametres : _NomSondage - Nom du sondage actif
	Retour : null si aucun cookie n'a été trouvé
			 "valeur du cookie" si la fonction a fonctionné	(oui et non)		 
	Remarques : 
*/
function ObtenirSiInviteSondageDejaRepondu( _NomSondage ) 
{

	//On obtien le nom réelle du cookie enregistré
	var NomCookie = ObtenirNomCookieInviteSondage(_NomSondage) + "=";
	
	//On obtient l'emplacement du cookie
	var indexCookieTrouve = document.cookie.indexOf(NomCookie);
	
	/* Est ce qu'il existe un cookie avec le nom en parametre 
	   et est ce que le nom du sondage a ete renseigne? */
	if( indexCookieTrouve < 0  ||  _NomSondage.length  <= 0)
	{
		// Si non 
		return null;	
	}
	
	//On obtien le cookie
	var cookieTrouve = 	document.cookie.substring(indexCookieTrouve)		

	//Retourne la valeur du cookie (On prend en compte que ceul un char peut-etre retourné
	return unescape(cookieTrouve.substring(cookieTrouve.indexOf("=") + 1, cookieTrouve.indexOf("=") + 2));
}


/*
	Nom : GererBugIE
	Description : Permet de gerer les bug d'affichage
					- les combobox apparaissent toujours par dessus le div dans ie6. On cache donc temporairement 
					le div contenant ce combobox		
	Parametres :
	Retour : 				 
	Remarques : Bug corrigé seulement dans IE6
*/
function GererBugIE()
{

 var strChUserAgent = navigator.userAgent;
 var intSplitStart = strChUserAgent.indexOf("(",0);
 var intSplitEnd = strChUserAgent.indexOf(")",0);
 var strChStart = strChUserAgent.substring(0,intSplitStart);
 var strChMid = strChUserAgent.substring(intSplitStart, intSplitEnd);
 var strChEnd = strChUserAgent.substring(strChEnd);

 //est ce que le navigateur est ie6
 if(strChMid.indexOf("MSIE 6") != -1)
 {
  	//si oui on cache temporairement le div contenant le combobox
 	if(document.getElementById("choixServices") != null)
	{
		document.getElementById("choixServices").style.visibility = 'hidden';
	}
	
	
	if(document.getElementById("idliste") != null)
	{
		document.getElementById("idliste").style.visibility = 'hidden';
	}

 }
 
}

/*
	Nom : ReinitialiseBugIE
	Description : Permet de gerer les bug d'affichage
					- les combobox apparaissent toujours par dessus le div dans ie6. On Réafficher donc
					le div contenant ce combobox après l'Avoir caché	
	Parametres :
	Retour : 				 
	Remarques : Bug corrigé seulement dans IE6
*/
function ReinitialiseBugIE()
{

 var strChUserAgent = navigator.userAgent;
 var intSplitStart = strChUserAgent.indexOf("(",0);
 var intSplitEnd = strChUserAgent.indexOf(")",0);
 var strChStart = strChUserAgent.substring(0,intSplitStart);
 var strChMid = strChUserAgent.substring(intSplitStart, intSplitEnd);
 var strChEnd = strChUserAgent.substring(strChEnd);

 //est ce que le navigateur est ie6
 if(strChMid.indexOf("MSIE 6") != -1)
 {
 	//si oui on cache temporairement le div contenant le combobox
 	if(document.getElementById("choixServices") != null)
	{
		document.getElementById("choixServices").style.visibility = 'visible';
	}
	
	if(document.getElementById("idliste") != null)
	{
		document.getElementById("idliste").style.visibility = 'visible';
	}
	
 }
 


}


/******************************************************************************************/



