

/*
	bibliotheque
*/
var Bibliotheque = {
	Version: '0.0',
	
	requireScript: function(libraryName) {
		// inserting via DOM fails in Safari 2.0, so brute force approach
		document.write('\n\t\t<script type="text/javascript" src="' + libraryName + '"></script>');
	},

	requireCss: function(libraryName) {
		// inserting via DOM fails in Safari 2.0, so brute force approach
		document.write('\n\t\t<link type="text/css" rel="stylesheet" href="' + libraryName + '">');
	},
	
	load: function() {
	

		var listeAInclure = "";
		
		// vérifier la présence de prototype
		if(
			(typeof Prototype == 'undefined')
			||
			(typeof Element == 'undefined')
			||
			(typeof Element.Methods == 'undefined')
			||
			parseFloat(
				Prototype.Version.split(".")[0] +
					"." +
					Prototype.Version.split(".")[1]
			) < 1.5
		) {
			// Prototype n'est pas présent : on lève une exception
			throw("Bibliotheque requires the Prototype JavaScript framework >= 1.5.0. Please include 'bibliotheque/prototype.js' before 'bibliotheque/bibliotheque.js'");
		}
		
		// vérifier la présence de scriptaculous
		if(typeof Scriptaculous == 'undefined') {
			// Scriptaculous n'est pas présent : on l'inclut
			//throw("Bibliotheque requires the Scriptaculous JavaScript framework");

			$A(document.getElementsByTagName("script")).findAll(
				function(s) {
					return (
						s.src
						&&
						s.src.match(/bibliotheque\.js(\?.*)?$/)
					);
				}
			).each(
				function(s) {
					var path = s.src.replace(/bibliotheque\.js(\?.*)?$/, '');
					var includes = s.src.match(/\?.*load=([a-z,]*)/);
					// JS
					(includes ? includes[1] : 'scriptaculous/scriptaculous,scriptaculous/builder,scriptaculous/effects,scriptaculous/dragdrop,scriptaculous/controls,scriptaculous/slider,elements/window,elements/calendrier,elements/infoBulle').split(',').each(
						function(include) {
							Bibliotheque.requireScript(path + include + '.js');
						}
					);
					// CSS
					(includes ? includes[1] : 'styles/css/alert,styles/css/alphacube,styles/css/trustyo,styles/css/default,styles/css/calendrier,styles/css/infoBulle').split(',').each(
						function(include) {
							Bibliotheque.requireCss(path + include + '.css');
						}
					);
				}
			);
		}
		
		
	
		
	} // fin load
}

Bibliotheque.load();




/***********************\
*			*
*	FONCTIONS	*
*			*
\***********************/

var tableEffectBiblio = new Hash();

function montrerBiblio(element, nomEffet) {
	if(
		$(element)
		&&
		(
			!tableEffectBiblio[element]
			||
			(tableEffectBiblio[element].state == "finished")
		)
	) {
		var effet;

// montrer
		if(!nomEffet) {
			// par défaut slide
			effet = new Effect.SlideDown($(element));
		} else if(nomEffet == "grow") {
			effet = new Effect.Grow($(element));
		}

		// mémoriser l'effet lancé
		tableEffectBiblio[element] = effet;
	}
}

function cacherBiblio(element, nomEffet) {
	if(
		$(element)
		&&
		(
			!tableEffectBiblio[element]
			||
			(tableEffectBiblio[element].state == "finished")
		)
	) {
		var effet;

// cacher
		if(!nomEffet) {
			// par défaut slide
			effet = new Effect.SlideUp($(element));
		} else if(nomEffet == "puff") {
			effet = new Effect.Puff($(element));
		} else if(nomEffet == "squish") {
			effet = new Effect.Squish($(element));
		} else if(nomEffet == "shrink") {
			effet = new Effect.Shrink($(element));
		}

		// mémoriser l'effet lancé
		tableEffectBiblio[element] = effet;
	}
}

/*
	cacher (réduire) ou montrer (agrandir) un élément (il faut que élément soit un élément HTML qui contient une seule div)
*/
function montrerCacherBiblio(element, nomEffet) {
	if (estReduitBiblio(element)) {
// montrer
		if(!nomEffet) {
			montrerBiblio(element);
		} else {
			montrerBiblio(element, nomEffet);
		}
	} else {
// cacher
		if(!nomEffet) {
			cacherBiblio(element);
		} else {
			cacherBiblio(element, nomEffet);
		}
	}
}

/*
	retourner vrai si le contenu est actuellement réduit
*/
function estReduitBiblio(element) {
	return (
		$(element)
		&&
		($(element).getStyle("display") == "none")
	);
}


var ouverte = false;
function displayContent() {
if(!ouverte) {
		var f = Dialog.info(
			"<br /><br /><br /><br /><br />"+$("results_window").innerHTML,
			{
				id: "modale",
				className: "alphacube",
				closable: true,
				draggable: true,
				maxHeight: 600,
				onClose: function() {
					ouverte = false;
				}
			}
		);
		ouverte = true;
	}
}


window.onload = function() {


	initialiser();
}

function initialiser() {
	new infoBulle(
		{
			content: "Double-cliquez pour agrandir",
			attachDiv: "results_window",
			followMouse: true,
			durationClose: 5
		}
	);
}