/// Version 20090129.0
/// Lyssal (c) Tous droits réservés
/// Nécessite prototype.js et scriptaculous?load=effects


//<-- Fenetre
	//<-- Paramètres personnalisés
		var fenetre_largeur_par_defaut = '400px';
		var fenetre_image_fermeture_adresse = racine +'ressources/javascript/fenetre/fermeture.png';
		var fenetre_image_type_attention_adresse = racine +'ressources/javascript/fenetre/attention_64.png';
		var fenetre_image_type_erreur_adresse = racine +'ressources/javascript/fenetre/erreur_64.png';
		var fenetre_bouton_accord_texte_par_defaut = 'Ok';
		var fenetre_bouton_oui_texte_par_defaut = 'Oui';
		var fenetre_bouton_non_texte_par_defaut = 'Non';
	//-->
	
	var fenetre_z_index = 200;
	
	// Paramètres
	/*
		boutons:{ accord:(true ou texte), oui }
		fonctions:{ oui:(fonction à appeler quand on clique sur "Oui") }
		type: 'attention', erreur
		duree_affichage:1 // en secondes
		largeur:largeur de la fenêtre (sans oublié le px ou %)
		margeHaut: Marge entre le haut de la page et le haut de notre fenêtre (sans oublié le px ou %)
		type_contenu: 'html' (défaut) ou 'fichier'
	*/

	var Fenetre = Class.create({
		initialize:function(contenu_html, titre, parametres) {
			if (parametres != null && parametres['type_contenu'] != null)
			{
				if (parametres['type_contenu'] == 'fichier')
				{
					new Ajax.Request(contenu_html, {
						method:'get',
						encoding:'utf-8',
						onComplete:function(reponse) {
							parametres['type_contenu'] = 'html';
							new Fenetre(reponse.responseText, titre, parametres);
						}
					});
					return;
				}
			}
			if (element_body == null)
				var element_body = document.getElementsByTagName('body')[0];
			element_fenetre = new Element('div');
			//<-- Fenetre parente pour corriger un bogue IE lorsqu'il y a une marge en haut de page
				element_fenetre_parent = new Element('div');
				//element_fenetre_parent.setStyle({ zIndex:fenetre_z_index++ });
				element_fenetre_parent.update(element_fenetre);
			//-->
			element_fenetre.addClassName('fenetre_fond');
			element_fenetre.setStyle({ display:'none',paddingTop:'200px',textAlign:'center',zIndex:fenetre_z_index++ });
			if (parametres != null && parametres['margeHaut'] != null)
				element_fenetre.setStyle({ paddingTop:parametres['margeHaut'] });
			//if ((navigator.appName.indexOf('Explorer') >= 0) && (navigator.appVersion.indexOf('6.0') >= 0))
			if (navigator.appName.indexOf('Explorer') >= 0)
			{
				element_fenetre.setStyle({ position:'absolute' });
				
				//hauteur_fenetre = 0;
				hauteur_fenetre = parseInt($(element_body).getStyle('paddingTop')) + parseInt($(element_body).getStyle('paddingBottom')) + parseInt($(element_body).getStyle('marginTop')) + parseInt($(element_body).getStyle('marginBottom'));
				for (i = 0; i < $(element_body).childElements().length; i++)
					if ($(element_body).childElements()[i].nodeName.toLowerCase() != 'script' && $(element_body).childElements()[i].nodeName.toLowerCase() != 'noscript' && $(element_body).childElements()[i].nodeName.toLowerCase() != 'meta' && $(element_body).childElements()[i].nodeName.toLowerCase() != 'link')
					{
						hauteur_fenetre += $(element_body).childElements()[i].getHeight();
						hauteur_fenetre += parseInt($(element_body).childElements()[i].getStyle('marginTop'));
						hauteur_fenetre += parseInt($(element_body).childElements()[i].getStyle('marginBottom'));
					}
				if (hauteur_fenetre > $(element_body).getHeight())
					element_fenetre.setStyle({ height:hauteur_fenetre + 'px' });
				else element_fenetre.setStyle({ height:$(element_body).getHeight() + 'px' });
			}
			else element_fenetre.setStyle({ height:$(element_body).getHeight() + 'px' });
			html = '<div class="fenetre" style="width:' + ((parametres != null && parametres['largeur'] != null) ? parametres['largeur'] : fenetre_largeur_par_defaut) + ';">';
				html += '<div class="haut">';
					html += '<div class="actions"><a onclick="fenetre_quitte($(this));"><img src="' + fenetre_image_fermeture_adresse + '" alt="X" width="16" height="16" /></a></div>';
					if (titre) html += '<div class="titre">' + titre + '</div>';
				html += '</div>';
				html += '<div class="contenu">';
					if (parametres != null && parametres['type'] != null)
					{
						if (parametres['type'] == 'attention')
							html += '<img class="type" src="' + fenetre_image_type_attention_adresse + '" alt="/!\" width="64" height="64" />';
						else if (parametres['type'] == 'erreur')
							html += '<img class="type" src="' + fenetre_image_type_erreur_adresse + '" alt="X" width="64" height="64" />';
					}
					html += contenu_html;
				html += '</div>';
				if (parametres != null && parametres['boutons'] != null)
				{
					html += '<div class="bas">';
					html += '<div class="boutons">';
					if (parametres['boutons']['accord'])
						html += '<input type="button" value="' + fenetre_bouton_accord_texte_par_defaut + '" onclick="fenetre_quitte($(this));" />';
					if (parametres['boutons']['oui'])
					{
						html += '<input type="button" value="' + fenetre_bouton_oui_texte_par_defaut + '" onclick="' + parametres['fonctions']['oui'] + 'fenetre_quitte($(this));" />';
					}
					if (parametres['boutons']['non'])
						html += '<input type="button" value="' + fenetre_bouton_non_texte_par_defaut + '" onclick="fenetre_quitte($(this));" />';
					html += '</div>';
					html += '</div>';
				}
			html += '</div>';
			element_fenetre.update(html);
			$(element_body).insert({ top:element_fenetre_parent });
			//$(element_body).insert({ top:element_fenetre });
			if ((navigator.appName.indexOf('Explorer') >= 0) && (navigator.appVersion.indexOf('6.0') >= 0)) // On cache les <select> pour IE6
			{
				select = $(element_body).getElementsBySelector('select');
				for (popup_i = 0; popup_i < select.length; popup_i++)
					select[popup_i].setStyle({ visibility:'hidden' });
			}
			new Effect.Grow(element_fenetre, { duration:0.6 });
			if (parametres != null && parametres['duree_affichage'] != null)
			{
				setTimeout('if ($(\'' + $(element_fenetre).identify() + '\')) new Effect.Fade($(\'' + $(element_fenetre).identify() + '\'), { duration:2 });', parseInt(parametres['duree_affichage']) * 1000);
				setTimeout('if ($(\'' + $(element_fenetre).identify() + '\')) $(\'' + $(element_fenetre).identify() + '\').setStyle({ visibility:\'hidden\' });_fenetre_quitte($(\'' + $(element_fenetre).identify() + '\'));', (parseInt(parametres['duree_affichage']) + 2) * 1000);
			}
		}
	});
	
	function fenetre_quitte(un_bouton_de_la_fenetre)
	{
		_fenetre_quitte($(un_bouton_de_la_fenetre).ancestors()[3]);
	}
	function _fenetre_quitte(premier_element_fenetre)
	{
		if (element_body == null)
			var element_body = document.getElementsByTagName('body')[0];
		if ($(premier_element_fenetre))
			new Effect.Grow($(premier_element_fenetre), { duration:0.6, from:1.0, to:0.0, afterFinish:function() { $(premier_element_fenetre).remove(); } });
		if ((navigator.appName.indexOf('Explorer') >= 0) && (navigator.appVersion.indexOf('6.0') >= 0)) // On ré-affiche les <select> pour IE6
		{
			select = $(element_body).getElementsBySelector('select');
			for (i = 0; i < select.length; i++)
				select[i].setStyle({ visibility:'visible' });
		}
	}
//-->

//<-- Fenêtre de confirmation
	var FenetreConfirmation = Class.create(Fenetre, {
		initialize: function($super, question_html, question_titre, fonction_si_oui, parametres) {
			//<-- Boutons
				if (parametres['boutons'] == null)
					parametres['boutons'] = new Array();
				parametres['boutons']['oui'] = true;
				parametres['boutons']['non'] = true;
			//-->
			//<-- Fonctions
				if (parametres['fonctions'] == null)
					parametres['fonctions'] = new Array();
				parametres['fonctions']['oui'] = fonction_si_oui;
			//-->
			$super(question_html, question_titre, parametres);
		}
	});
//-->
