/**
*	DHTML modal dialog box
*
*	Created:						August, 26th, 2006
*	@class Purpose of class:		Display a modal dialog box on the screen.
*			
*	Css files used by this script:	modal-message.css
*
*	Demos of this class:			demo-modal-message-1.html
*
* 	Update log:
*
*/


/**
* @constructor
*/

DHTML_modalMessage=function(){
	var url;
	var htmlOfModalMessage;

	var divs_transparentDiv;
	var divs_content;
	var iframe;
	var layoutCss;
	var width;
	var height;

	var existingBodyOverFlowStyle;
	var dynContentObj;
	var cssClassOfMessageBox;
	var shadowDivVisible;
	var shadowOffset;
	var MSIE;

	this.url='';
	this.htmlOfModalMessage='';
	this.layoutCss='modal-message.css';
	this.height=200;
	this.width=400;
	this.cssClassOfMessageBox=false;
	this.shadowDivVisible=true;
	this.shadowOffset=5;
	this.MSIE=false;
	if(navigator.userAgent.indexOf('MSIE')>=0) this.MSIE=true;
}

DHTML_modalMessage.prototype={
	setSource : function(urlOfSource){
		this.url=urlOfSource;		
	}	
	,
	setHtmlContent : function(newHtmlContent){
		this.htmlOfModalMessage=newHtmlContent;	
	}
	,
	setSize : function(width,height){
		if(width)this.width=width;
		if(height)this.height=height;		
	}
	,		
	setCssClassMessageBox : function(newCssClass){
		this.cssClassOfMessageBox=newCssClass;
		if(this.divs_content){
			if(this.cssClassOfMessageBox)
				this.divs_content.className=this.cssClassOfMessageBox;
			else
				this.divs_content.className='modalDialog_contentDiv';	
		}		
	}
	,	
	setShadowOffset : function(newShadowOffset){
		this.shadowOffset=newShadowOffset				
	}
	,	
	display : function(){
		if(!this.divs_transparentDiv)	this.__createDivs();	

		this.divs_transparentDiv.style.display='block';
		this.divs_content.style.display='block';
		this.divs_shadow.style.display='block';		
		if(this.MSIE)this.iframe.style.display='block';	
		this.__resizeDivs();

		window.refToThisModalBoxObj=this;		
		setTimeout('window.refToThisModalBoxObj.__resizeDivs()',150);

		this.__insertContent();
	}
	,
	setShadowDivVisible : function(visible){
		this.shadowDivVisible=visible;
	}
	,
	close : function(){
		this.divs_transparentDiv.style.display='none';
		this.divs_content.style.display='none';
		this.divs_shadow.style.display='none';
		if(this.MSIE)this.iframe.style.display='none';
	}
	,
	addEvent : function(whichObject,eventType,functionName,suffix){ 
	  if(!suffix)suffix='';
	  if(whichObject.attachEvent){ 
	    whichObject['e'+eventType+functionName+suffix]=functionName; 
	    whichObject[eventType+functionName+suffix]=function(){whichObject['e'+eventType+functionName+suffix]( window.event );} 
	    whichObject.attachEvent( 'on'+eventType, whichObject[eventType+functionName+suffix] ); 
	  } else 
	    whichObject.addEventListener(eventType,functionName,false); 	    
	} 
	,
	__createDivs : function(){
		this.divs_transparentDiv=document.createElement('DIV');
		this.divs_transparentDiv.className='modalDialog_transparentDivs';
		this.divs_transparentDiv.style.left='0px';
		this.divs_transparentDiv.style.top='0px';

		document.body.appendChild(this.divs_transparentDiv);
		this.divs_content=document.createElement('DIV');
		this.divs_content.className='modalDialog_contentDiv';
		this.divs_content.id='DHTMLSuite_modalBox_contentDiv';
		this.divs_content.style.zIndex=100000;

		if(this.MSIE){
			this.iframe=document.createElement('<IFRAME src="about:blank" frameborder=0>');
			this.iframe.style.zIndex=90000;
			this.iframe.style.position='absolute';
			document.body.appendChild(this.iframe);	
		}

		document.body.appendChild(this.divs_content);
		this.divs_shadow=document.createElement('DIV');
		this.divs_shadow.className='modalDialog_contentDiv_shadow';
		this.divs_shadow.style.zIndex=95000;
		document.body.appendChild(this.divs_shadow);
		window.refToModMessage=this;
		this.addEvent(window,'scroll',function(e){ window.refToModMessage.__repositionTransparentDiv()});
		this.addEvent(window,'resize',function(e){ window.refToModMessage.__repositionTransparentDiv()});

	}
	,
	__getBrowserSize : function(){
    	var bodyWidth=document.documentElement.clientWidth;
    	var bodyHeight=document.documentElement.clientHeight;

		var bodyWidth, bodyHeight;
		if (self.innerHeight){
		   bodyWidth=self.innerWidth;
		   bodyHeight=self.innerHeight;
		}  else if (document.documentElement && document.documentElement.clientHeight){
		   bodyWidth=document.documentElement.clientWidth;
		   bodyHeight=document.documentElement.clientHeight;
		} else if (document.body) { 
		   bodyWidth=document.body.clientWidth;
		   bodyHeight=document.body.clientHeight;
		}
		return [bodyWidth,bodyHeight];
		
	}
	,
    __resizeDivs : function(){
		var topOffset=Math.max(document.body.scrollTop,document.documentElement.scrollTop);
		if(this.cssClassOfMessageBox)
			this.divs_content.className=this.cssClassOfMessageBox;
		else
			this.divs_content.className='modalDialog_contentDiv';

    	if(!this.divs_transparentDiv)return;

    	var st=Math.max(document.body.scrollTop,document.documentElement.scrollTop);
    	var sl=Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);

    	window.scrollTo(sl,st);
    	setTimeout('window.scrollTo('+sl+','+st+');',10);

    	this.__repositionTransparentDiv();

		var brSize=this.__getBrowserSize();
		var bodyWidth=brSize[0];
		var bodyHeight=brSize[1];

	  	this.divs_content.style.width=this.width+'px';
		this.divs_content.style.height= this.height+'px';  	

    	var tmpWidth=this.divs_content.offsetWidth;	
    	var tmpHeight=this.divs_content.offsetHeight;

    	this.divs_content.style.left=Math.ceil((bodyWidth-tmpWidth)/2)+'px';;
    	this.divs_content.style.top=(Math.ceil((bodyHeight-tmpHeight)/2)+ topOffset)+'px';

 		if(this.MSIE){
 			this.iframe.style.left=this.divs_content.style.left;
 			this.iframe.style.top=this.divs_content.style.top;
 			this.iframe.style.width=this.divs_content.style.width;
 			this.iframe.style.height=this.divs_content.style.height;
 		}

    	this.divs_shadow.style.left=(this.divs_content.style.left.replace('px','')/1+this.shadowOffset)+'px';
    	this.divs_shadow.style.top=(this.divs_content.style.top.replace('px','')/1+this.shadowOffset)+'px';
    	this.divs_shadow.style.height=tmpHeight+'px';
    	this.divs_shadow.style.width=tmpWidth+'px';

    	if(!this.shadowDivVisible)this.divs_shadow.style.display='none';
    }
     ,
    __repositionTransparentDiv : function(){
    	this.divs_transparentDiv.style.top=Math.max(document.body.scrollTop,document.documentElement.scrollTop)+'px';
    	this.divs_transparentDiv.style.left=Math.max(document.body.scrollLeft,document.documentElement.scrollLeft)+'px';
		var brSize=this.__getBrowserSize();
		var bodyWidth=brSize[0];
		var bodyHeight=brSize[1];
    	this.divs_transparentDiv.style.width=bodyWidth+'px';
    	this.divs_transparentDiv.style.height=bodyHeight+'px'; 	
    }
	,
    __insertContent : function(){
		if(this.url){
			ajax_loadContent('DHTMLSuite_modalBox_contentDiv',this.url);
		}else{
			this.divs_content.innerHTML=this.htmlOfModalMessage;
		}
    }		
}

messageObj=new DHTML_modalMessage();
messageObj.setShadowOffset(5);

function displayStaticMessage(messageContent,cssClass,largeur,hauteur){
	if (largeur==null)largeur=300;
	if (hauteur==null)hauteur=150;
	messageObj.setHtmlContent(messageContent);
	messageObj.setSize(largeur,hauteur);
	messageObj.setCssClassMessageBox(cssClass);
	messageObj.setSource(false);
	messageObj.setShadowDivVisible(false);
	messageObj.display();
}

function closeMessage(){
	messageObj.close();	
}

