
/*********************************************************************************************
											MESSAGE BOX
**********************************************************************************************
-- INSTALLATION --
A mettre dans <head></head> :
	<script src="js/scriptaculous/prototype.js"></script>
	<script src="js/scriptaculous/scriptaculous.js"></script>
	<script src="js/messagebox/messagebox.js"></script>
	<link href="css/messagebox/messagebox_gris.css" rel="stylesheet" type="text/css">

-- UTILISATION --
Appel de fenêtre : messageBox( Type, Paramètres, function(retour){ Votre Traitement } );
Type de MessageBox : OuiNon - Alert - Info - Saisie
Paramètres :
	- titre ( Texte de titre)
	- titre_color ( Couleur du titre )
	- message ( Texte de message )
	- message_color ( Couleur du message )
	- icone ( question, attention )
	- amovible ( true, false )
	- duration ( Temps en secondes avant fermeture [Seulement pour "Info"] )
Couleurs disponibles : noir, blanc, vert, bleu, rouge, orange, jaune

-- VERSIONS --
01/10/2009 : Version 1.00
04/10/2009 : Version 1.01 : Ajout d'un affichage par défaut
08/10/2009 : Version 1.02 : Corrections divers petits bugs
12/10/2009 : Version 1.03 : Modifications mineures
05/11/2009 : Version 1.04 : Possibilité d'envoyer juste le message en paramètre sans passer par un tableau
18/11/2009 : Version 1.05 : Vérification de la présence de prototype
19/11/2009 : Version 1.06 : Ajout de la fonction "Boite de saisie"
*/
var cache;
var msgbox;
var enCours = false;

var MessageBox = {
	Version : '1.06',
	Date : '19/11/2009',
	load: function(){
		if ( typeof Prototype=='undefined' ) {
				alert("MessageBox ''Version "+MessageBox.Version+"'' requi\350re Prototype !!");
				return false;
		}
	}
}


MessageBox.load();

messagebox = function( type, params, callback ) {

	if ( !params ) {
		params = new Array;
		params['amovible'] = false;
	} else {
		if ( typeof(params)=='string' ) {
			var message = params;
			params = new Array;
			params['titre']    = 'Information';
			params['message']  = message;
			params['amovible'] = false;
		} else {
			!params['amovible'] ? params['amovible']=false : false;
		}
	}

	Event.observe ( document.body, 'keydown', function(evt){
		var charCode = (evt.which) ? evt.which : event.keyCode;
		if ( $('MESSAGEBOX') && charCode==9 ) Event.stop(evt);
	});

	switch ( type ) {
	case 'Saisie':
		if ( enCours == false ) {
			enCours = true;
			cache = $(Builder.node('div', { id:'MESSAGEBOX_CACHE', style: 'display:none; width:100%; height:100%;' } ) );
			document.body.appendChild(cache);
			!params['titre'] ? params['titre']='Saisie' : false;
			!params['titre_color'] ? params['titre_color']='bleu' : false;
			!params['message'] ? params['message']='' : false;
			!params['message_color'] ? params['message_color']='noir' : false;
			!params['icone'] ? params['icone']='question' : false;
			params['amovible'] ? titre_cursor='move' : titre_cursor='default';

			msgbox = $(Builder.node('div', { id:'MESSAGEBOX', style: 'display:none' }, [
							Builder.node('div', { id: 'MESSAGEBOX_TITRE', className: params['titre_color'], style:'cursor='+titre_cursor }, params['titre'] ),
							Builder.node('div', { id: params['icone'] } ),
							Builder.node('div', { id: 'MESSAGEBOX_MESSAGE', className: params['message_color'], style: 'height:30px; overflow: hidden;' }, params['message'] ),
							Builder.node('input', { id: 'MESSAGEBOX_SAISIE', type: 'text' } ),
							Builder.node('div', { id: 'MESSAGEBOX_BOUTONS', style: 'margin-top:15px' }, [
								Builder.node('input', { id: 'MESSAGEBOX_OUI', type: 'submit', className: 'button_100x19', value:'Valider' } ),
								Builder.node('input', { id: 'MESSAGEBOX_NON', type: 'button', className: 'button_100x19', value:'Annuler' } )
							])
					   ] ) );
			window.setTimeout( function() {
				$('MESSAGEBOX_OUI').onclick = function() { 
							if ( callback ) callback( $F('MESSAGEBOX_SAISIE') );
							DestroyElements();
				};
				$('MESSAGEBOX_NON').onclick = function() { 
							if ( callback ) callback(false);
							DestroyElements();
				};
				$('MESSAGEBOX_OUI').activate();
			}, 500);
			document.body.appendChild(msgbox);
			setTimeout( function(){ $('MESSAGEBOX_SAISIE').activate() }, 500);
			$('MESSAGEBOX_MESSAGE').innerHTML = params['message'];
			cache.show();
			msgbox.show();
		}
		break;
	case 'OuiNon':
		if ( enCours == false ) {
			enCours = true;
			cache = $(Builder.node('div', { id:'MESSAGEBOX_CACHE', style: 'display:none; width:100%; height:100%;' } ) );
			document.body.appendChild(cache);
	
			!params['titre'] ? params['titre']='Question' : false;
			!params['titre_color'] ? params['titre_color']='bleu' : false;
			!params['message_color'] ? params['message_color']='noir' : false;
			!params['icone'] ? params['icone']='question' : false;
			params['amovible'] ? titre_cursor='move' : titre_cursor='default';
	
			msgbox = $(Builder.node('div', { id:'MESSAGEBOX', style: 'display:none' }, [
							Builder.node('div', { id: 'MESSAGEBOX_TITRE', className: params['titre_color'], style:'cursor='+titre_cursor }, params['titre'] ),
							Builder.node('div', { id: params['icone'] } ),
							Builder.node('div', { id: 'MESSAGEBOX_MESSAGE', className: params['message_color'] }, params['message'] ),
							Builder.node('div', { id: 'MESSAGEBOX_BOUTONS' }, [
								Builder.node('input', { id: 'MESSAGEBOX_OUI', type: 'button', className: 'button_100x19', value:'Oui' } ),
								Builder.node('input', { id: 'MESSAGEBOX_NON', type: 'button', className: 'button_100x19', value:'Non' } )
							])
					   ] ) );
			window.setTimeout( function() {
				$('MESSAGEBOX_OUI').onclick = function() { 
							DestroyElements();
							if ( callback ) callback(true);
				};
				$('MESSAGEBOX_NON').onclick = function() { 
							DestroyElements();
							if ( callback ) callback(false);
				};
				$('MESSAGEBOX_OUI').activate();
			}, 500);
			document.body.appendChild(msgbox);
			$('MESSAGEBOX_MESSAGE').innerHTML = params['message'];
			cache.show();
			msgbox.show();
		}
		break;
	case 'Alert':
		if ( enCours == false ) {
			enCours = true;
			cache = $(Builder.node('div', { id:'MESSAGEBOX_CACHE', style: 'display:none; width:100%; height:100%;' } ) );
			document.body.appendChild(cache);
	
			!params['titre'] ? params['titre']='Votre attention...' : false;
			!params['titre_color'] ? params['titre_color']='rouge' : false;
			!params['message_color'] ? params['message_color']='noir' : false;
			!params['icone'] ? params['icone']='attention' : false;
			params['amovible'] ? titre_cursor='move' : titre_cursor='default';
	
			msgbox = $(Builder.node('div', { id:'MESSAGEBOX', style: 'display:none' }, [
							Builder.node('div', { id: 'MESSAGEBOX_TITRE', className: params['titre_color'], style:'cursor='+titre_cursor }, params['titre'] ),
							Builder.node('div', { id: params['icone'] } ),
							Builder.node('div', { id: 'MESSAGEBOX_MESSAGE', className: params['message_color'] } ),
							Builder.node('div', { id: 'MESSAGEBOX_BOUTONS' }, [
								Builder.node('input', { id: 'MESSAGEBOX_OUI', type: 'button', className: 'button_100x19', value:'OK' } ),
							])
					   ] ) );
			window.setTimeout( function() {
				$('MESSAGEBOX_OUI').onclick = function() { 
							if ( callback ) callback(true);				
							DestroyElements();
				};
				$('MESSAGEBOX_OUI').activate();
			}, 500);
			document.body.appendChild(msgbox);
			$('MESSAGEBOX_MESSAGE').innerHTML = params['message'];
			cache.show();
			msgbox.show();
		}
		break;
	case 'Info':
		if ( enCours == false ) {
			enCours = true;
			!params['message_color'] ? params['message_color']='blanc' : false;
			!params['duration'] ? params['duration']=2.5 : false;
			var L = document.body.offsetWidth - 255;
			msgbox = $(Builder.node('div', { id:'MESSAGEBOX_INFO', style: 'top:-70px; left:'+L+'px;' }, [
						Builder.node('table', { style:'width:100%; height:100%;' }, [
							Builder.node('tbody', [
								Builder.node('tr', [
									Builder.node('td', { id:'msgbox_td', className: params['message_color'], align:'center', valign:'middle' } )
								])
							])
						])
					] ) );
			document.body.appendChild(msgbox);
			$('msgbox_td').innerHTML = params['message'];
			msgbox.show();
			new Effect.Move( msgbox, { y:75, duration:0.5 });
			new Effect.Fade( msgbox, { duration:1, delay: params['duration'] }); 
			window.setTimeout( function() { msgbox.remove(); enCours = false; }, (params['duration']+1)*1000 );
		}
		break;
	default: 
		if ( enCours == false ) {
			cache = $(Builder.node('div', { id:'MESSAGEBOX_CACHE', style: 'display:none; width:100%; height:100%;' } ) );
			document.body.appendChild(cache);
	
			params['titre']='Message';
			params['message'] = type;
			msgbox = $(Builder.node('div', { id:'MESSAGEBOX', style: 'display:none' }, [
							Builder.node('div', { id: 'MESSAGEBOX_TITRE', className: 'A10 gris' }, params['titre'] ),
							Builder.node('div', { id: 'alert' } ),
							Builder.node('div', { id: 'MESSAGEBOX_MESSAGE', className: 'A10 noir' } ),
							Builder.node('div', { id: 'MESSAGEBOX_BOUTONS' }, [
								Builder.node('input', { id: 'MESSAGEBOX_OUI', type: 'button', className: 'button_100x19', value:'OK' } ),
							])
					   ] ) );
			window.setTimeout( function() {
				$('MESSAGEBOX_OUI').onclick = function() { 
							DestroyElements();
							if ( callback ) callback(true);				
				};
				$('MESSAGEBOX_OUI').activate();
			}, 500);
			document.body.appendChild(msgbox);
			$('MESSAGEBOX_MESSAGE').innerHTML = params['message'];
			cache.show();
			msgbox.show();
		}
	}

	if ( params['amovible'] && type!='Info' ) {
		new Draggable( msgbox, {
				zindex: 10000,
				handle: 'MESSAGEBOX_TITRE'
		} );
	}
}

DestroyElements = function () {
	enCours = false;
	if ( cache ) cache.remove();
	if ( msgbox ) msgbox.remove();
}

//---- Preload des images
var i = 0;

imageObj = new Image();

images = new Array();
images[0]="gris/alert.png"
images[1]="gris/attention.png"
images[2]="gris/fd_messagebox.png"
images[3]="gris/question.png"

for(i=0; i<=3; i++) {
	imageObj.src=images[i];
}
