/*--------------------------------------------------------------------------*/
/*	BDMessageBox	
*	This is a script for creating modal dialog windows (like the ones your operating
*	system uses)
*	
*/

var BDMessageBox = {
	/* hideAll - ferme toutes les fenetres BDMessageBox ouvertes */		
	hideAll: function(){	
		if ($('BDMessageBoxDiv')){
			Element.hide('BDMessageBoxDiv');
			Element.remove('BDMessageBoxDiv');
		}	
		if ($('BDMessageBoxOverlay')){
			Element.remove('BDMessageBoxOverlay');
		}
	}
};
BDMessageBox.base = Class.create();
BDMessageBox.base.prototype = {
    
	initialize: function(options){
		//start by hiding all lightboxes				
		BDMessageBox.hideAll();	 
		
		var imgUrl;	  
		  var allScripts = document.getElementsByTagName("script"); // Recupere tous les noeuds <script> du document courant 
		  for (var i = 0 ; i < allScripts.length ; i++) { // Pour chacun des noeuds...	  	
		  	var currentScript = allScripts.item(i);
		  	if (currentScript.src	&& /BDMessageBox.js\?imgUrl=(.*)/.test(currentScript.src)) { 	  		
		  		var param = currentScript.src.match(/BDMessageBox.js\?imgUrl=(.*)/); // ...on capture de tout ce qu'il y a apres 'imgUrl='	  		
		  		// param[1] contient tout ce qu'il y a apres 'imgUrl=' 	  	
		  		imgUrl = param[1];
		  	}
		  } 
			  	  
		this.options = Object.extend({																				
			isModal: true,
			overlayOpacity: 0.0,
			effectDuration: 0.1,
			title: 'Message Box',
			message: 'Ceci est une message box',
			icon: 'warning',
			width: '320px',
			height: '33px',
			bgcolor: '#FFFFFF',
			altbgcolor : '#000000',
			bordercolor: '#B3B3B3',
			fcolor: '#000000',
			altfcolor: '#FFFFFF',
			ffamily: 'Arial, Helvetica, sans-serif',
			fsize: '11px',
			altfsize: '11px',
			message: 'Veuillez patienter...',
			pic: 'ajax-loading.gif',
			closeAction: false
		}, options || {} );
							
		// cree le div qui contiendra le flux
		this.container = document.createElement('div');
		this.container.style.display = 'none';
		this.container.style.padding = 0;
		this.container.style.margin = 0;    
		this.container.style.background = this.options.altbgcolor;
		this.container.style.border = 0;	
		this.container.id = 'BDMessageBoxDiv';	
		
		Element.setStyle(this.container, 'width:'+this.options.width);
		Element.setStyle(this.container, 'border:1px solid '+this.options.bordercolor);
						
		//new Insertion.Top(this.container, '<img id="BDMessageBoxDivImg" src="' + imgUrl + this.options.pic + '" width="31" height="31" alt="" title="" />&nbsp;&nbsp;&nbsp;' + this.options.message);
		
		// Header de la box
		var headerBox = document.createElement('div');
		headerBox.id = 'BDMessageBoxDivHeader';
				
		Element.setStyle(headerBox,'width:100%');
		Element.setStyle(headerBox,'height:24px');
		Element.setStyle(headerBox,'background-color:'+this.options.altbgcolor);
		Element.setStyle(headerBox,'border:0');
		Element.setStyle(headerBox,'margin:0');
		Element.setStyle(headerBox,'padding:0');
		//Element.setStyle(headerBox,'cursor:move');
		Element.setStyle(headerBox,'font: '+this.options.altfsize+' Arial, Helvetica, sans-serif');
		Element.setStyle(headerBox,'font-weight:bold');
		Element.setStyle(headerBox,'color:'+this.options.altfcolor);
		Element.setStyle(headerBox,'text-decoration:none');
		Element.setStyle(headerBox,'text-align:left');
		Element.setStyle(headerBox,'line-height:24px');
				
		new Insertion.Top(headerBox, '&nbsp;&nbsp;' + this.options.title);
		new Insertion.Top(this.container, headerBox);

		// Contenu de la box
		// Global
		var globalMessage = document.createElement('div');
		globalMessage.id = 'BDMessageBoxDivMessage';
		
		Element.setStyle(globalMessage,'width:100%');		
		Element.setStyle(globalMessage,'background-color:'+this.options.bgcolor);
		Element.setStyle(globalMessage,'border:1px 0 1px 0');
		Element.setStyle(globalMessage,'border-color:'+this.options.bordercolor);
		Element.setStyle(globalMessage,'margin:0');
		Element.setStyle(globalMessage,'padding:0');
		Element.setStyle(globalMessage,'padding:0');
		Element.setStyle(globalMessage,'overflow:hidden');
		
		// Icone
		var messageIcon = document.createElement('div');
		messageIcon.id = 'BDMessageBoxDivMessageIcon';
		Element.setStyle(messageIcon,'width:60px');
		Element.setStyle(messageIcon,'height:70px');
		Element.setStyle(messageIcon,'margin:0 auto');
		Element.setStyle(messageIcon,'background-color:transparent');
		Element.setStyle(messageIcon,'float:left');
		
		var iconBackground = '';
		var iconPosition = '';
		switch(this.options.icon) {
			case 'warning':			  
				iconBackground = 'background:url(\''+imgUrl+'icon_warning.jpg\') no-repeat;';
				iconPosition = 'background-position:50% 50%;';
			break;
			
			case 'confirm':
				iconBackground = 'background:url(\''+imgUrl+'icon_confirm.jpg\') no-repeat;';
				iconPosition = 'background-position:50% 50%;';
			break;
			
			case 'information':
				iconBackground = 'background:url(\''+imgUrl+'icon_information.jpg\') no-repeat;';
				iconPosition = 'background-position:50% 50%;';
			break;
			
			case 'error':
				iconBackground = 'background:url(\''+imgUrl+'icon_error.jpg\') no-repeat;';
				iconPosition = 'background-position:50% 50%;';
			break;
			
			case 'ask':
				iconBackground = 'background:url(\''+imgUrl+'icon_ask.jpg\') no-repeat;';
				iconPosition = 'background-position:50% 50%;';
			break;
			
			default:
				iconBackground = 'background:url(\''+imgUrl+'icon_warning.jpg\') no-repeat;';
	  			iconPosition = 'background-position:50% 50%;';			
		}
		
		Element.setStyle(messageIcon,iconBackground);
		Element.setStyle(messageIcon,iconPosition);
		
		// Message
		var messageTxt = document.createElement('div');
		messageTxt.id = 'BDMessageBoxDivMessageTxt';
		//Element.setStyle(messageTxt,'width:230px');
		Element.setStyle(messageTxt,'margin:5px 5px 5px 5px');
		Element.setStyle(messageTxt,'background-color:transparent');
		Element.setStyle(messageTxt,'font:'+this.options.fsize+' Arial, Helvetica, sans-serif');
		Element.setStyle(messageTxt,'font-weight:normal');
		Element.setStyle(messageTxt,'color:'+this.options.fcolor);
		Element.setStyle(messageTxt,'text-decoration:none');
		Element.setStyle(messageTxt,'float:left');
		Element.setStyle(messageTxt,'text-align:left');
		
		new Insertion.Top(messageTxt, '<p>' + this.options.message + '</p>');
		
		new Insertion.Top(globalMessage, messageIcon);
		new Insertion.Bottom(globalMessage, messageTxt);
		new Insertion.Bottom(this.container, globalMessage);
		
		// Footer
		var footerBox = document.createElement('div');
		footerBox.id = 'BDMessageBoxDivFooter';
		Element.setStyle(footerBox,'width:100%');
		Element.setStyle(footerBox,'height:24px');
		Element.setStyle(footerBox,'margin:0');
		Element.setStyle(footerBox,'padding:0');
		Element.setStyle(footerBox,'background-color:'+this.options.altbgcolor);
		Element.setStyle(footerBox,'border-top:1px solid '+this.options.bordercolor);
		
		// Bouton close
		var footerBoxButton = document.createElement('div');
		footerBoxButton.id = 'BDMessageBoxDivfooterBoxButton';
		Element.setStyle(footerBoxButton,'position:relative');
		Element.setStyle(footerBoxButton,'top:-10px');
		Element.setStyle(footerBoxButton,'left:-2px');
		Element.setStyle(footerBoxButton,'width:59px');
		Element.setStyle(footerBoxButton,'height:25px');
		Element.setStyle(footerBoxButton,'cursor:pointer');
		Element.setStyle(footerBoxButton,'background:transparent url(\'' + imgUrl + 'close_button.png\') no-repeat;');
		Element.setStyle(footerBoxButton,'background-position:0 0');
		Element.setStyle(footerBoxButton,'float:right');
		
		Event.observe(footerBoxButton,'mouseover', function() {
				Element.setStyle(footerBoxButton, 'background-position:-59px 0');
			}
		);
		
		Event.observe(footerBoxButton,'mouseout', function() {
				Element.setStyle(footerBoxButton, 'background-position:0 0');
			}
		);
		
		/*Event.observe(footerBoxButton,'click', function() {
				Element.setStyle(footerBoxButton, 'background-position:0 -118px');
			}
		);*/
		
		Event.observe(footerBoxButton, 'click', this.hideBox.bindAsEventListener(this));

		new Insertion.Top(footerBox, footerBoxButton);		
		new Insertion.Bottom(this.container, footerBox);
				
				
		document.body.appendChild(this.container);		

				
		//cree un overlay
		if (this.options.isModal)	{
			new Insertion.Before(this.container, "<div id='BDMessageBoxOverlay' style='display:none;'></div>");
			Element.setStyle($('BDMessageBoxOverlay'), 'padding:0; margin:0; background:transparent; border:0;position:fixed;');
			Element.setStyle($('BDMessageBoxOverlay'), 'position:absolute;top:0;left:0;width:100%;height:100%;z-index:80000;background-color:#000;');			
		}
							
		Event.observe(window,'resize', this.center.bindAsEventListener(this));		
			
		this.show();
														
	},
	
	show : function(){		
		this.center();	 	   	  	     				     	
 		if (this.options.isModal) {
   		 Effect.Appear($('BDMessageBoxOverlay'), {	   	
		   	duration:0.1,	
		   	from:0.0,
		   	to:this.options.overlayOpacity,	   	
		   	afterFinish: function() {		  
   			 
		   	},
		   	queue: {position:'end', scope: 'BDMessageBoxscope'} 	
		   });
 		}
 		Effect.Appear($('BDMessageBoxDiv'), {
 			duration:this.options.effectDuration,	
		   	from:0.0,
		   	to:1.0,
		   	queue: {position:'end', scope: 'BDMessageBoxscope'}
 		}); 		 		
	   return false;
	},
	
	hideBox : function(evt){			
		BDMessageBox.hideAll();	
		if ((typeof this.options.closeAction) == 'function') {
			this.options.closeAction();
		}
		return false;
	},
		
	center : function(){
		var my_width  = 0;
		var my_height = 0;		
		if(Prototype.Browser.IE) {			
			if (navigator.appVersion.indexOf('MSIE 6.0') > -1) {
				my_width  = document.body.clientWidth;
				my_height = document.body.clientHeight;
			}
			else {
				my_width  = document.documentElement.clientWidth;
				my_height = document.documentElement.clientHeight;
			}			
		}
		else {
			if ( typeof( window.innerWidth ) == 'number' ){
			my_width  = window.innerWidth;
			my_height = window.innerHeight;
			}else if ( document.documentElement && 
					 ( document.documentElement.clientWidth ||
					   document.documentElement.clientHeight ) ){
				my_width  = document.documentElement.clientWidth;
				my_height = document.documentElement.clientHeight;
			}
			else if ( document.body && 
					( document.body.clientWidth || document.body.clientHeight ) ){
				my_width  = document.body.clientWidth;
				my_height = document.body.clientHeight;
			}
		}				
		
		Element.setStyle(this.container, 'position:absolute; z-index:85000;');		
		
		var scrollY = 0;
		
		if ( document.documentElement && document.documentElement.scrollTop ){
			scrollY = document.documentElement.scrollTop;
		}else if ( document.body && document.body.scrollTop ){
			scrollY = document.body.scrollTop;
		}else if ( window.pageYOffset ){
			scrollY = window.pageYOffset;
		}else if ( window.scrollY ){
			scrollY = window.scrollY;
		}
		
		var elementDimensions = Element.getDimensions(this.container);

		
		var setX = ( my_width  - elementDimensions.width  ) / 2;
		var setY = ( my_height - elementDimensions.height ) / 2 + scrollY;
		
		setX = ( setX < 0 ) ? 0 : setX;
		setY = ( setY < 0 ) ? 0 : setY;
		
		Element.setStyle(this.container,'left:'+setX+'px; top:'+setY+'px;');		
		
	}
	
}