(function (){
	// Raccourci vers window
	var WIN=this,
	// Raccourci vers document
	DOC=WIN.document,
	// Raccourci vers window.ev
	EASY=WIN.ev,
	// Raccourcis vers le window.ev.lang.
	LANG=EASY.lang,
	// Raccourcis vers le mapper de traductions.
	ELM=LANG&&LANG.mapper,
	// Raccourcis vers le window.ev.log.
	LOG=EASY.log,
	// Raccourci vers les traductions de la page de résultats.
	raison,
	// Raccourci vers les attractions.
	attractions,
	// Objet permettant de s'assurer que le module est prêt.
	ready={};

//	LOG.LEVEL=LOG.DEBUG;

	// Si les namespaces/classes nécessaires ne sont pas chargées : exception
	if(!EASY){ throw 'Le module ev.core est nécessaire!'; }
	// Traductions
	if(!ELM){ throw 'Le module ev.lang.mapper est nécessaire'; }
	// Logs
	if(!LOG){ throw 'Le module ev.log est nécessaire'; }

	LOG.debug('attractDisplay: starts!');

	// initialisation du tableau d'attractions
	attractions=(WIN.arrayAttractionId=[]);

	LOG.debug('attractDisplay: defining ready support!');

	// ajout du Ready Support sur l'objet d'attente 
	EASY.addRS(ready);

	LOG.debug('attractDisplay: requiring trads for pays.raison!');

	// chargement des traductions de textes nécessaires
	ELM.require('pays.raison', function(){
		LOG.debug('attractDisplay: ready!');
		raison=LANG.pays&&LANG.pays.raison||{};
		ready.setReady();
	});

	LOG.debug('attractDisplay: functions definition!');

	/**
	 * Cettte fonction permet de faire apparaitre ou disparaitre une liste.
	 * Pour cela, via un bouton input et des classe folded/unfolded,
	 * on fait apparaitre et varier le display en vérifient qu'un seul est actif.
	 * 
	 * Un script de push est nescessaire pour le tableau : "<script>window.arrayAttractionId.push("${attraction.id}");</script>"
	 * La fonction Onclick est la suivante : "window.attractHide(this);window.attractDisplay(document.getElementById('attraction${attraction.id}'));"
	 **/
	WIN.attractHide=function (inputElement){
		// exécution seulement si le module est prêt
		ready.wait(function(){
			LOG.debug('attractHide()> after wait for lang mappings!');
			var i, ulNode, inputNode;
			for(i=0; i<attractions.length; i++){
				ulNode = DOC.getElementById('attraction'+attractions[i]);
				inputNode = DOC.getElementById('input_attraction'+attractions[i]);
				if(inputElement!=inputNode){
					ulNode.className = 'folded';
					inputNode.textContent = ELM.ifdef(raison.afficher);
					if(DOC.all||inputNode.innerHTML=="NaN"){
						inputNode.innerHTML=ELM.ifdef(raison.afficher);
					}
					inputNode.className = 'plus';
				}
			}
		});
	};

	WIN.attractDisplay=function (ulNode){
		// exécution seulement si le module est prêt
		ready.wait(function(){
			LOG.debug('attractDisplay()> after wait for lang mappings!');
			var attractionid = ulNode.id,
			inputNode = DOC.getElementById('input_'+attractionid);
			if(ulNode.className == 'folded') {
				ulNode.className = 'unfolded';
				inputNode.textContent = ELM.ifdef(raison.masquer);
				if(DOC.all||inputNode.innerHTML=="NaN"){
					inputNode.innerHTML=ELM.ifdef(raison.masquer);
				}
				inputNode.className = 'moins';
			}
			else{
				ulNode.className = 'folded';
				inputNode.textContent = ELM.ifdef(raison.afficher);
				if(DOC.all||inputNode.innerHTML=="NaN"){
					inputNode.innerHTML=ELM.ifdef(raison.afficher);
				}
				inputNode.className = 'plus';
			}
		});
	};
	LOG.debug('attractDisplay: loaded!');
}());
