AlertBox = Class.create();
AlertBox.prototype = {
		
    initialize: function(messageToDisplay,options) {
		if($('alertBox_overlay'))
		{ $('alertBox_overlay').remove();}
		
		//if($('alertBox_overlayContent'))
		//{ $('alertBox_overlayContent').remove();}
		
		if($('alertBox_okButton'))
		{ $('alertBox_okButton').remove();}
	
		this.getBrowserSize();
		this.baseCSSStyle= {'position': 'absolute',
							'opacity':'1',
							'z-index':'550',
							'min-width':'100px',
							'min-height':'100px'
							};
	  	this.options =  {
						alertType:null,
						callBack:null,
						appearEffect:null,
						appearOptions:null,
						disappearEffect:null,
						disappearOptions:null,
						onDisplay:null
						};
		Object.extend(this.options, options || {});
		this.messageToDisplay= messageToDisplay;
        this.showMe();
    },

    showMe: function() {
		// On ajoute un div d'overlay
		new Insertion.Top(document.body, '<div id="alertBox_overlay" style="display:none"></div>');
		this.getBrowserSize();
		$('alertBox_overlay').setStyle({	
								//'width':$(document.body).getWidth() +'px',
							 	//'height':$(document.body).getHeight() +'px',
								'width':this.width+'px',
								'height':this.height+'px',
								'position':'absolute',
								'left':'0px',
								'top':'0px',
								'z-index':'500'
								});
		$('alertBox_overlay').addClassName('alertBox_overlay');
		$('alertBox_overlay').setStyle({'display':'block','visibility':'visible'});
		
		if($('alertBox_overlayContent')==null)
		{
			new Insertion.Top(document.body, '<div id="alertBox_overlayContent" style="display:none">'+this.messageToDisplay+'</div>');
		}		
		//$('alertBox_overlayContent').toggle();
		$('alertBox_overlayContent').setStyle(this.baseCSSStyle);
		if(this.options.alertType){
		$('alertBox_overlayContent').addClassName('alertBox_' + this.options.alertType);
		}
		$('alertBox_overlayContent').setStyle({
									 	'left': (($(document.body).getWidth() - $('alertBox_overlayContent').getWidth())/2)+'px',
										'top':(((this.height - $('alertBox_overlayContent').getHeight())/2)+this.top)+'px'
									 });
		if(this.options.appearEffect){
			this.options.appearEffect('alertBox_overlayContent',this.options.appearOptions);
		}else{
			$('alertBox_overlayContent').setStyle({'display':'block','visibility':'visible'});
		}
		if(this.options.alertType){
		new Insertion.Top($('alertBox_overlayContent'),"<div class='alertBox_" + this.options.alertType + "_Image'></div>");
		}
	
		new OkButton(this.options);
		
		if(this.options.onDisplay){ 
			this.options.onDisplay(); 
		}
		
    },

	getBrowserSize: function() {
		var scrOfX = 0, scrOfY = 0;//, myWidth = 0, myHeight = 0;
		// on récupère le scroll
		if (typeof(window.pageYOffset) == 'number' ) {
		   //Netscape compliant
		   scrOfY = window.pageYOffset;
		   scrOfX = window.pageXOffset;
		} else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
		   //DOM compliant
		   scrOfY = document.body.scrollTop;
		   scrOfX = document.body.scrollLeft;
		} else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
		   //IE6 standards compliant mode
		   scrOfY = document.documentElement.scrollTop;
		   scrOfX = document.documentElement.scrollLeft;
		}
		this.top= scrOfY;
		this.left= scrOfX;
		// on récupère la taille de la fenêtre
		 if( typeof( window.innerWidth ) == 'number' ) {
			//Non-IE
			myWidth = window.innerWidth;
			myHeight = window.innerHeight;
		  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//IE 6+ in 'standards compliant mode'
			myWidth = document.documentElement.clientWidth;
			myHeight = document.documentElement.clientHeight;
		  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			myWidth = document.body.clientWidth;
			myHeight = document.body.clientHeight;
		  }
		this.top= scrOfY;
		this.left= scrOfX;
		this.width= myWidth;
		this.height= myHeight;
	}
}

OkButton = Class.create();
OkButton.prototype = {
	
    initialize: function(options) {

	  	this.callBack = options.callBack;
		this.appearEffect = options.appearEffect;
		this.appearOptions = options.appearOptions;
		this.disappearEffect = options.disappearEffect;
		this.disappearOptions = options.disappearOptions;
        this.showMe();
    },
	
	showMe: function() {

		new Insertion.Top(document.body,'<div id="alertBox_okButton" style="display:none">OK</div>');
		
		
		overlayTop = $('alertBox_overlayContent').getStyle('top');
		overlayLeft = $('alertBox_overlayContent').getStyle('left');

		$('alertBox_okButton').addClassName('alertBox_okButton');
		$('alertBox_okButton').setStyle({ 
										'position':'absolute',
										'border':'thin solid black',
										'top':((parseInt(overlayTop.substr(0,overlayTop.length-2))+$('alertBox_overlayContent').getHeight())-($('alertBox_okButton').getHeight()+10))+'px',
										'left':(parseInt(overlayLeft.substr(0,overlayLeft.length-2))+(($('alertBox_overlayContent').getHeight()-$('alertBox_okButton').getWidth())/2))+'px',
										'z-index':'600'
							  			});
			//Effect.Appear('overlay',{to:'0.2',duration:'1'});
			//Effect.Appear('overlayContent',{duration:'1'});
			//Effect.Appear('okButton',{duration:'1'});
			if(this.appearEffect){
				this.appearEffect('alertBox_okButton',this.appearOptions);
			}else{
				$('alertBox_okButton').setStyle({'display':'block','visibility':'visible'});
			}
			
			Event.observe('alertBox_okButton', "click", this.okPressed.bind(this),false);
	},
	
	okPressed: function() {
		//Effect.Fade('alertBox_okButton');
		//Effect.Fade('alertBox_overlayContent');
		//Effect.Fade('alertBox_overlay');
			if(this.disappearEffect){
				this.disappearEffect('alertBox_overlay',this.disappearOptions);
				this.disappearEffect('alertBox_overlayContent',this.disappearOptions);
				this.disappearEffect('alertBox_okButton',this.disappearOptions);
			}else{
				$('alertBox_overlay').remove();
				$('alertBox_overlayContent').setStyle({'display':'none'});
				$('alertBox_okButton').remove();
			}

		if(this.callBack){ 
			this.callBack(); 
		}
	}
}

