
DHTML_modalMessage = function()
{
	var url;					// url of modal message
	var htmlOfModalMessage;				// html of modal message
	var divs_transparentDiv;			// Transparent div covering page content
	var divs_content;				// Modal message div.
	var iframe;					// Iframe used in ie
	var layoutCss;					// Name of css file;
	var width;					// Width of message box
	var height;					// Height of message box
	
	var existingBodyOverFlowStyle;			// Existing body overflow css
	var dynContentObj;				// Reference to dynamic content object
	var cssClassOfMessageBox;			// Alternative css class of message box - in case you want a different appearance on one of them
	var shadowDivVisible;				// Shadow div visible ?
	var shadowOffset; 				// X and Y offset of shadow(pixels from content box)
	var MSIE;
	var shadowdiv;
	var shadowdiv_x;
	var shadowdiv_y;
	var shadowdiv_width;
	var shadowdiv_height;
		
	this.url = '';					// Default url is blank
	this.htmlOfModalMessage = '';			// Default message is blank
	this.layoutCss = 'modal_message.css';		// Default CSS file
	this.height = 200;				// Default height of modal message
	this.width = 400;				// Default width of modal message
	this.cssClassOfMessageBox = false;		// Default alternative css class for the message box
	this.shadowDivVisible = false;			// Shadow div is visible by default
	this.shadowOffset = 5;				// Default shadow offset.
	this.MSIE = false;
	this.shadowdiv = 'body';
	this.shadowdiv_x = 0;
	this.shadowdiv_y = 0;
	this.shadowdiv_width = 0;
	this.shadowdiv_height = 0;
	if(navigator.userAgent.indexOf('MSIE')>=0) this.MSIE = true;
	

}

DHTML_modalMessage.prototype = {
	setSource : function(urlOfSource)
	{
		this.url = urlOfSource;
	},
	setShadowDiv : function(shadowdivid)
	{
		if(shadowdivid != '' && shadowdivid != undefined){
			this.shadowdiv = shadowdivid;
			shadowdiv_xy = getpos(this.shadowdiv);
			this.shadowdiv_x = shadowdiv_xy[0];
			this.shadowdiv_y = shadowdiv_xy[1];
			this.shadowdiv_width = shadowdiv_xy[2];
			this.shadowdiv_height = shadowdiv_xy[3];
		}
	},
	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();
		}else{/*alert("DIV ALREADY CREATED");*/}

		// Redisplaying divs
		this.divs_transparentDiv.style.display='block';
// 		this.divs_transparentDiv.style.border = "2px dashed #000000";
		if(this.MSIE)this.iframe.style.display='block';
		this.divs_content.style.display='block';
		this.divs_shadow.style.display='block';
		this.__resizeDivs();

		/* Call the __resizeDivs method twice in case the css file has changed. The first execution of this method may not catch these changes */
		window.refToThisModalBoxObj = this;
		setTimeout('window.refToThisModalBoxObj.__resizeDivs()',150);
		
		this.__insertContent();	// Calling method which inserts content into the message div.
	},
	setShadowDivVisible : function(visible)
	{
		this.shadowDivVisible = visible;
	},
	close : function()
	{
		//document.documentElement.style.overflow = '';	// Setting the CSS overflow attribute of the <html> tag back to default.
		
		/* Hiding divs */
// 		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';
// alert(this.divs_content.innerHTML);
		if(this.MSIE && this.iframe){this.iframe.parentNode.removeChild(this.iframe);}
		if(this.divs_shadow){this.divs_shadow.parentNode.removeChild(this.divs_shadow);}
		if(this.divs_content){this.divs_content.parentNode.removeChild(this.divs_content);}
		if(this.divs_transparentDiv){this.divs_transparentDiv.parentNode.removeChild(this.divs_transparentDiv);}

		this.divs_transparentDiv = null;
// 		if(this.divs_transparentDiv != null){alert(this.divs_transparentDiv);}
// 		else{alert("not available");}
		this.divs_content = null;
		this.divs_shadow = null;
		if(this.MSIE)this.iframe = null;

// 		alert("this.divs_transparentDiv : "+this.divs_transparentDiv);
// 		alert("this.divs_content : "+this.divs_content);
// 		alert("this.divs_shadow : "+this.divs_shadow);
// 		if(this.MSIE)alert("this.iframe : "+this.iframe);

	},
	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()
	{
		// Creating transparent div
		this.divs_transparentDiv = document.createElement('DIV');
		this.divs_transparentDiv.className='modalDialog_transparentDivs';
		if(this.shadowdiv){
			this.divs_transparentDiv.style.left = this.shadowdiv_x+'px';
			this.divs_transparentDiv.style.top = this.shadowdiv_y+'px';
// 			alert("Left - X : "+this.shadowdiv_x+" : Top - Y : "+this.shadowdiv_y);
		}else{
			this.divs_transparentDiv.style.left = '0px';
			this.divs_transparentDiv.style.top = '0px';
		}


		if(this.shadowdiv == "body"){document.body.appendChild(this.divs_transparentDiv);}
		else{document.getElementById(this.shadowdiv).appendChild(this.divs_transparentDiv);}
		
		// Creating content div
		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';
			if(this.shadowdiv == "body"){document.body.appendChild(this.iframe);}
			else{document.getElementById(this.shadowdiv).appendChild(this.iframe);}
		}

		if(this.shadowdiv == "body"){document.body.appendChild(this.divs_content);}
		else{document.getElementById(this.shadowdiv).appendChild(this.divs_content);}

		// Creating shadow div
		this.divs_shadow = document.createElement('DIV');
		this.divs_shadow.className = 'modalDialog_contentDiv_shadow';
		this.divs_shadow.style.zIndex = 95000;
		if(this.shadowdiv == "body"){document.body.appendChild(this.divs_shadow);}
		else{document.getElementById(this.shadowdiv).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){ // all except Explorer
			bodyWidth = self.innerWidth;
			bodyHeight = self.innerHeight;
		}  else if (document.documentElement && document.documentElement.clientHeight) {
		// Explorer 6 Strict Mode
			bodyWidth = document.documentElement.clientWidth;
			bodyHeight = document.documentElement.clientHeight;
		} else if (document.body) {// other Explorers
			bodyWidth = document.body.clientWidth;
			bodyHeight = document.body.clientHeight;
		}
		return [bodyWidth,bodyHeight];
	},
	__resizeDivs : function()
	{
		
		var topOffset = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
	// alert("topOffset : "+topOffset);return;
			if(this.cssClassOfMessageBox){this.divs_content.className=this.cssClassOfMessageBox;}
			else{this.divs_content.className='modalDialog_contentDiv';}
		if(!this.divs_transparentDiv)return;
		
		// Preserve scroll position
		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];
		
		// Setting width and height of content div
		this.divs_content.style.width = this.width + 'px';
		this.divs_content.style.height= this.height + 'px';
		
		// Creating temporary width variables since the actual width of the content div could be larger than this.width and this.height(i.e. padding and border)
		var tmpWidth = this.divs_content.offsetWidth;
		var tmpHeight = this.divs_content.offsetHeight;
		
		
		// Setting width and height of left transparent div
		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';	// Hiding shadow if it has been disabled
		
		
	},
	__repositionTransparentDiv : function()
	{
		if(this.shadowdiv == "body"){
			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';
		}else{
			var shadowdivobj = document.getElementById(this.shadowdiv);
// 			alert("Left - X : "+this.shadowdiv_x+"\nTop - Y : "+this.shadowdiv_y+"\nWidth : "+this.shadowdiv_width+"\nHeight : "+this.shadowdiv_height);
			this.divs_transparentDiv.style.width = this.shadowdiv_width+"px";
			this.divs_transparentDiv.style.height = this.shadowdiv_height+"px";
			this.divs_transparentDiv.style.top = this.shadowdiv_y+"px";
			this.divs_transparentDiv.style.left = this.shadowdiv_x+"px";
			this.divs_transparentDiv.style.backgroundColor = "#d5c728";
// 			alert(this.divs_transparentDiv.style.cssText);
		}
	},
	__insertContent : function()
	{
		if(this.url){	// url specified - load content dynamically
			ajax_loadContent('DHTMLSuite_modalBox_contentDiv',this.url, 'loadingother1', false);
		}else{	// no url set, put static content inside the message box
			this.divs_content.innerHTML = this.htmlOfModalMessage;
		}
	}
}


// Addtional Functions for Modal Message box

messageObj = new DHTML_modalMessage();	// We only create one object of this class
messageObj.setShadowOffset(5);	// Large shadow

function displayMessage(url, width, height, shadowDivid)
{
	messageObj.url = "";
	messageObj.setSource(url);
	messageObj.setShadowDiv(shadowDivid);
	messageObj.setCssClassMessageBox(false);
	messageObj.setSize(width,height);
	messageObj.setShadowDivVisible(false);
	messageObj.display();
	Effect.Appear(messageObj.divs_content.id);
}
function displayMessage1(url, width, height, shadowDivid)
{
	messageObj.url = "";
	messageObj.setSource(url);
	messageObj.setShadowDiv(shadowDivid);
	messageObj.setCssClassMessageBox('modalDialog_contentDiv1');
	messageObj.setSize(width,height);
	messageObj.setShadowDivVisible(false);
	messageObj.display();
}
function displayTextMessage(textcont, width, height, shadowDivid)
{
	messageObj.url = "";
	messageObj.shadowdiv = "";
	messageObj.setShadowDiv(shadowDivid);
	messageObj.setHtmlContent(textcont);
	messageObj.setCssClassMessageBox('modalDialog_contentDiv1');
	messageObj.setSize(width,height);
	messageObj.setShadowDivVisible(false);	// Enable shadow for these boxes
	messageObj.display();
// 	alert("display : "+messageObj.shadowdiv);
}
function displayTextMessage1(textcont, width, height)
{
	messageObj.url = "";
	messageObj.setHtmlContent(textcont);
	messageObj.setCssClassMessageBox('modalDialog_contentDiv1');
	messageObj.setSize(width,height);
	messageObj.setShadowDivVisible(false);	// Enable shadow for these boxes
	messageObj.display();
}
function closeMessage()
{
// 	document.getElementById('DHTMLSuite_modalBox_contentDiv').innerHTML = "";
	messageObj.close();
}

