/**
 * @version 1.0
 *
 * @copyright Copyright 2009 WnG Solutions Sarl, all rights reserved
 * @author Daniel Calderini <daniel.calderini@wng.ch>
 * @package Swiss pension Funds
 */

/**
 * Librairie de gestion des bannieres
 */
var wng_banners_pi1 = {
	// Liste des bannieres (chaque valeur correspond a un ID de bloc)
	list: new Array(),
	
	// Liste des actions additionnelles a effectuer pour chaque banniere
	// Dans chaque tableau, la cle est l'ID de la banniere (identique aux cles du tableau wng_banners_pi1.list).
	// La valeur correspond a une ligne de Javascript qui sera executee avec la fonction eval().
	actions: {
		// Actions au chargement de la page
		onload: new Array(),
		
		// Actions a effectuer a l'affichage d'une banniere
		ondisplay: new Array(),
		
		// Actions a effectuer lorsqu'une banniere est cachee
		onhide: new Array()
	},
	
	// Interval entre l'affichage des bannieres
	interval: 0,
	
	// Nombre total de bannieres
	count: 0,
	
	// Banniere actuelle
	current: -1,
	
	// Classe CSS ajouter/supprimer pour afficher/cacher une banniere
	hideClass: '',
	
	// L'identifant retourne par la fonction setInterval lors de l'initialisation
	initIntervalId: '',
	
	// L'identifant retourne par la fonction setInterval lors du chargement
	loadIntervalId: '',
	
	/**
	 * Initialisation
	 *
	 * @param array wng_banners_pi1_list
	 * @return void
	 */
	init: function() {
		// Nombre total de banniere
		wng_banners_pi1.count = wng_banners_pi1.list.length;
		
		// S'il n'y a qu'une banniere il n'y a pas besoin d'executer de rotation
		if (wng_banners_pi1.count == 1)
			return;
		
		// Si le temps est 0, pas de rotation
		if (wng_banners_pi1.interval < 1)
			return;
		
		// On cache toutes les bannieres
		for (var i = 0; i < wng_banners_pi1.count; i++) {
			jQuery('#' + wng_banners_pi1.list[i]).addClass(wng_banners_pi1.hideClass);
		}
		
		// Il est necessaire de patienter un certain delai avant l'appel de cette fonction,
		// sinon les animations Flash ne sont pas encore chargees.
		wng_banners_pi1.initIntervalId = setInterval('wng_banners_pi1.actionLoad()', 100);
	},
	
	/**
	 * Gestion du defilement des bannieres
	 *
	 * @return void
	 */
	next: function() {
		// Cache la banniere precedente
		if (wng_banners_pi1.current > -1)
			wng_banners_pi1.actionHide(wng_banners_pi1.current);
		
		// Selection de la banniere suivante
		next = wng_banners_pi1.current + 1;
		
		if (next >= wng_banners_pi1.count)
			next = 0;
		
		wng_banners_pi1.current = next;
		
		// Affichage la banniere suivante
		wng_banners_pi1.actionDisplay(wng_banners_pi1.current);
	},
	
	/**
	 * Action appelee au chargement de la page.
	 *
	 * En realite cette fonction est appelee avec un delai de 100ms afin de laisser au Flash le temps de se charger.
	 *
	 * @return void
	 */
	actionLoad: function() {
		// Suppression de l'appel a cette fonction (actionLoad)
		clearInterval(wng_banners_pi1.initIntervalId);
		
		// Execution de l'action "onload" des bannieres
		for (var i = 0; i < wng_banners_pi1.count; i++) {
			if (wng_banners_pi1.actions.onload[i])
				eval(wng_banners_pi1.actions.onload[i]);
		}
		
		// Affichage de la banniere suivante
		wng_banners_pi1.next();
		
		// Definition du temps de defilement des bannieres
		wng_banners_pi1.loadIntervalId = setInterval('wng_banners_pi1.next()', wng_banners_pi1.interval);
	},
	
	/**
	 * Action appelee lorsqu'une banniere doit être affichee
	 *
	 * @param int bannerNo Identifiant de la banniere (correspond a la cle de la banniere dans le tableau wng_banners_pi1.list)
	 * @return void
	 */
	actionDisplay: function(bannerNo) {
		jQuery('#' + wng_banners_pi1.list[bannerNo]).removeClass(wng_banners_pi1.hideClass);
		
		if (wng_banners_pi1.actions.ondisplay[bannerNo])
			eval(wng_banners_pi1.actions.ondisplay[bannerNo]);
	},
	
	/**
	 * Action appelee lorsqu'une banniere doit être cachee
	 *
	 * @param int bannerNo Identifiant de la banniere (correspond a la cle de la banniere dans le tableau wng_banners_pi1.list)
	 * @return void
	 */
	actionHide: function(bannerNo) {
		jQuery('#' + wng_banners_pi1.list[bannerNo]).addClass(wng_banners_pi1.hideClass);
		
		if (wng_banners_pi1.actions.onhide[bannerNo])
			eval(wng_banners_pi1.actions.onhide[bannerNo]);
	}
};

/**
 * Actions a effectuer lorsque le chargement de la page est termine
 */
jQuery(document).ready(function() {
	wng_banners_pi1.init();
});

