/**
 * @author Alexandre araste
 *  v 1.0
 *  Necessite Prototype 1.5.1.1
  * Nécessite curvy Corner http://www.curvycorners.net/
 */
var OBJdisplayMessage=Class.create()
OBJdisplayMessage.prototype = {
	initialize:function(filterId, messageId){
		/*Définit le div qui sert de filtre */
		if (!$(filterId)){
			var d = new Element('DIV')
			d.id=filterId
			this.filter = d
			document.forms[0].appendChild(d)
		}else {this.filter=$(filterId)}
		
		this.filter.hide()

		if (messageId) this.setMessage(messageId, false)
		
		this.filter.setStyle({position:'absolute', top:'0px', left:'0px', backgroundColor:'#4f4c4c', zIndex:'999', MozOpacity:'0.5', filter:'alpha(opacity=50),display:none'})
		this.mouveOnScroll = true
		this.curvySettings = {
          tl: { radius: 10 },
          tr: { radius: 10 },
          bl: { radius: 10 },
          br: { radius: 10 },
          antiAlias: true,
          autoPad: true,
          validTags: ["div"]
      }
      
	  this.minMessageTop = 10 // position mini du message

		 Event.observe(window, 'resize', function(e){this.setFilter();this.setPositionMessage()}.bindAsEventListener(this))
		 Event.observe(window, 'scroll', function(e){
		 	if (!this.message.visible()) return ;
		 	this.setFilter();
			if (this.mouveOnScroll)this.setPositionMessage()
		}.bindAsEventListener(this))
		
		
		this.escKeyDownObserver = this.escKeyDown.bindAsEventListener(this)
		
	},
	
	setPositionMessage:function(){
	        
			if (!this.message) return ;
			if (!this.message.visible()) return ;
			
			var h = parseInt(((document.documentElement.clientHeight  - this.message.clientHeight) / 2) +  document.documentElement.scrollTop)
			if (h<0)h=this.minMessageTop
			h += 'px'
			
			var l = parseInt(((document.documentElement.clientWidth - this.message.clientWidth)/2) + document.documentElement.scrollLeft) + 'px'
			
			this.message.setStyle({left:l,top:h})	
    },
    
    escKeyDown : function(e){;if (e.keyCode == Event.KEY_ESC) this.hideMessage()},
	
	showMessage:function(){
	    this.setFilter()
	    this.filter.style.display='block'
	    this.message.style.display='block'
	    
	    document.observe('keydown',this.escKeyDownObserver)

		this.setFilter()
		this.setPositionMessage()
		
		if (this.curvySettings!=null){
			var myBoxObject = new curvyCorners(this.curvySettings, this.message);
      		myBoxObject.applyCornersToAll();
		}
		
		
	},
	
	hideMessage:function(){
	    Element.hide(this.filter)
		Element.hide(this.message)
		document.stopObserving('keydown', this.escKeyDownObserver)
	},
	
	setMessage:function(objMessage, bDisplay){
	    this.message = (typeof objMessage=='string')?$(objMessage):objMessage
		this.message.hide()
		this.message.setStyle({zIndex:'99999', position:'absolute', top:'0px', left:'0px'})
		if (this.message.parentNode!=this.filter.parentNode){
		    var m = this.message.cloneNode(true)
		    document.forms[0].appendChild(m)
		    this.message.parentNode.removeChild(this.message)
		    this.message = m
		}
		if (bDisplay){
			this.setPositionMessage()
			this.message.show()
		}
	},
	
	toggle:function(){
	        if (this.message.style.display=='none'){this.showMessage();return}
	        this.hideMessage()
	},
	
	setFilter:function(){
	   // if (!this.filter) return
	    //if (!this.filter.visible) return
	     
	    this.filter.style.width = document.documentElement.clientWidth  + document.documentElement.scrollLeft + 'px'
		this.filter.style.height= document.documentElement.clientHeight  + document.documentElement.scrollTop + 'px'
	
    },
	
	setCorners:function(settings){
        var myBoxObject = new curvyCorners(settings, this.message);
        myBoxObject.applyCornersToAll();
    }
}



