/**
 * @author Alexandre araste
 *  v 1.0
 *  Necessite Prototype 1.6.0.2
  * Nécessite curvy Corner http://www.curvycorners.net/
 */
var OBJdisplayMessage=Class.create()
OBJdisplayMessage.prototype = {
	initialize:function(JSONParams){
		/*Définit le div qui sert de filtre */
		this.filterId = '__OBJMessageFilter__'
		if (!$(this.filterId)){
			var d = new Element('DIV')
			d.id=this.filterId
			this.filter = d
			document.forms[0].appendChild(d)
		}else {this.filter=$(this.filterId)}
		
		this.enableEffects = JSONParams.enableEffects
		this.enableCorners = JSONParams.enableCorners
		
		this.__scrollingTimer = null

		if (JSONParams) this.setMessage(JSONParams.messageId, false)
		
		this.filter.setStyle({position:'absolute', top:'0px', left:'0px', backgroundColor:'#4f4c4c', zIndex:'999',display:'none', opacity:'0.6'})
		this.moveOnScroll = 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.__scrollingTimer) window.clearTimeout(this.__scrollingTimer)
		 	if (!this.message.visible()) return ;
			if (this.moveOnScroll){
			    this.__scrollingTimer = window.setTimeout(function(){this.setPositionMessage(true)}.bind(this), 100)
			}
		}.bindAsEventListener(this))
		
		
		this.escKeyDownObserver = this.escKeyDown.bindAsEventListener(this)
		
	},
	
	setPositionMessage:function(move){
	        
			if (!this.message) return ;
			if (!this.message.visible()) return ;
			
			
			var vdim = document.viewport.getDimensions()
			if (Prototype.Browser.IE)vdim = {width:document.documentElement.offsetWidth, height:document.documentElement.offsetHeight}

			var vScroll = document.viewport.getScrollOffsets()
			var vPos = this.message.cumulativeOffset()
			
			
			var h = parseInt(((vdim.height  - this.message.getHeight()) / 2) +  vScroll.top)
			if (h<0)h=this.minMessageTop
			//h += 'px'
			
			var l = parseInt(((vdim.width  - this.message.getWidth())/2) + vScroll.left)
			
			if (move) {new Effect.Move(this.message, {delay:0, x:l-vPos.left, y:h-vPos.top, duration:2 })} else {this.message.setStyle({top:h+'px', left:l+'px'})}
			
    },
    
    escKeyDown : function(e){;if (e.keyCode == Event.KEY_ESC) this.hideMessage()},
	
	showMessage:function(){
	    this.setFilter()
	    this.filter.style.display='block'

		this.setFilter()

	    this.message.show()
	    if (this.curvySettings!=null && this.enableCorners){
			var myBoxObject = new curvyCorners(this.curvySettings, this.message);
      		myBoxObject.applyCornersToAll();
		}
		
	    this.setPositionMessage(false)
	    
	    if (this.enableEffects){this.message.hide(); Effect.Appear(this.message)}
 
	    document.observe('keydown',this.escKeyDownObserver)

	},
	
	hideMessage:function(){
	    
		if (this.enableEffects) {Effect.Fade(this.message), {duration:2}}else {Element.hide(this.message)}
		Element.hide(this.filter)
		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(false)
			this.message.show()
		}
	},
	
	toggle:function(){
	        if (this.message.style.display=='none'){this.showMessage();return}
	        this.hideMessage()
	},
	
	setFilter:function(){

		this.filter.setStyle({width:document.documentElement.scrollWidth+ 'px', height:document.documentElement.scrollHeight + 'px'})
	
    },
	
	setCorners:function(settings){
        var myBoxObject = new curvyCorners(settings, this.message);
        myBoxObject.applyCornersToAll();
    }
}


