﻿// JScript File

function AJAXModalMessageProps(shadowOffset, width, height, cssClass, source, defaultmessageContent , shadowDivVisible, msgHeader, msgButton, msgButtonYes, msgButtonNo )
{   
    if (typeof AJAXModalMessageProps._singleTon != 'undefined'  )
        {
            return AJAXModalMessageProps._singleTon
        }
        else
        {
            this.setShadowOffset = shadowOffset;
            this.width = width;
            this.height = height;
            this.cssClass = cssClass;
            this.source = source;
            this.defaultmessageContent = defaultmessageContent;
            this.shadowDivVisible = shadowDivVisible;
            this.msgHeader = msgHeader;
            this.msgButton = msgButton;
            this.msgButtonYes = msgButtonYes;
            this.msgButtonNo = msgButtonNo;
            AJAXModalMessageProps._singleTon = this;
        }
}

function AJAXModalMessage(msg , width, height, parent, msgHeader, type)
{   
    this.width = width;
    this.height = height;
    this.msg = msg;
    this.parent = parent;
    this.msgHeader = msgHeader;
    this.type = type;
    this.WindowMessage = new DHTML_modalMessage();
    this.WindowMessage.setDefaultValues();
    if (! msg == '')
        {
            this.WindowMessage.htmlOfModalMessage = this.msg ;
        }
    if (! msgHeader == '')
        {
            this.WindowMessage.msgHeader = this.msgHeader ;
        }
    this.WindowMessage.width = this.width;
    this.WindowMessage.height = this.height;
    this.WindowMessage.type = this.type ;
    this.WindowMessage.setParentWindow(this.parent);   
    this.WindowMessage.ResponseYes = new YAHOO.util.CustomEvent("ResponseYes", this); 

}

AJAXModalMessage.prototype.displayStaticMessage = function()
{   
    this.WindowMessage.displayStaticMessage();
}
                                
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 layoutCss;							// Name of css file;
	var width;								// Width of message box
	var height;								// Height of message box
	
	var st;                                 // Scroll
	var sl;
	
	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)
		
	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 = true;			// Shadow div is visible by default
	this.shadowOffset = 5;					// Default shadow offset.

}

DHTML_modalMessage.prototype = {

  setDefaultValues : function()
	{
		var AJAXModalMessagePropsobj = new AJAXModalMessageProps();
        this.shadowOffset = AJAXModalMessagePropsobj.shadowOffset;
        this.width = AJAXModalMessagePropsobj.width;
        this.height = AJAXModalMessagePropsobj.height;
        this.layoutCss = AJAXModalMessagePropsobj.cssClass;
        this.url = '';							                                        // Default url is blank
        this.source = AJAXModalMessagePropsobj.source;
        this.htmlOfModalMessage = AJAXModalMessagePropsobj.defaultmessageContent;
        this.shadowDivVisible = AJAXModalMessagePropsobj.shadowDivVisible;
        this.cssClassOfMessageBox = false;		                                        // Default alternative css class for the message box
        this.msgHeader = AJAXModalMessagePropsobj.msgHeader;
        this.msgButton = AJAXModalMessagePropsobj.msgButton;
        this.msgButtonYes = AJAXModalMessagePropsobj.msgButtonYes;
        this.msgButtonNo = AJAXModalMessagePropsobj.msgButtonNo;
	}
		
	,
  
    InitEvents : function () 
    {
        this.CloseModalWindow = new YAHOO.util.CustomEvent("CloseModalWindow", this); 
        setTimeout('fadeOutMyPopupAut()', 5000);
    }

	,

	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();
		}		
		// Redisplaying divs
		this.divs_transparentDiv.style.display='block';
		this.divs_content.style.display='block';
		this.divs_shadow.style.display='block';					
		//reposicionar a caixa
		this.__resizeDivs();	
	}

	,

    displayStaticMessage: function()
    {   
        document.body.style.cursor = "auto";
        this.display();
    }
       
    ,            
              
    setParentWindow : function(window)
	{
	    if (! window =='undefined')
	        {
	        	this.InitEvents();
                this.parentWindow = window;
		        window.InitWindowCloseEvents(this);
	        }
	}

	,

    fadeOutMyPopup : function (e) 
    {
        for( var i = 0 ; i <= 100 ; i++ ) 
        {
            setTimeout( 'setOpacityModal(' + (10 - i / 10) + ')' , 8 * i );
        }
        setTimeout('closeModal(' + "'true'" + ")", 800);
    }

	,

	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.id = 'modalDialog_transparentDivs';
		this.divs_transparentDiv.className='modalDialog_transparentDivs';
		this.divs_transparentDiv.style.left = '0px';
		this.divs_transparentDiv.style.top = '0px';
		
		document.body.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;
		
		document.body.appendChild(this.divs_content);
	
		// Creating shadow div
		this.divs_shadow = document.createElement('DIV');
		this.divs_shadow.id = 'modalDialog_contentDiv_shadow';
		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() });

        this.MyModalMessage = document.createElement('div');
        this.MyModalMessage.id = 'divAlert';
        this.MyModalMessage.className = 'divAlert';

        this.MyModalMessageHeader = document.createElement('div');
        this.MyModalMessageHeader.id = 'divAlertheader';
        this.MyModalMessageHeader.className = 'divAlertheader';
        this.MyModalMessageHeader.innerHTML = this.msgHeader;
        this.MyModalMessage.appendChild (this.MyModalMessageHeader);
        
        this.MyModalMessageContent = document.createElement('div');
        this.MyModalMessageContent.id = 'divAlertMessageContent';
        this.MyModalMessageContent.className  = 'divAlertMessageContent';
        this.MyModalMessageContent.innerHTML = this.htmlOfModalMessage;	
        this.MyModalMessage.appendChild (this.MyModalMessageContent);
        
        this.MyModalMessageFooter = document.createElement('div');
        this.MyModalMessageFooter.id = 'divAlertfooter';
        this.MyModalMessageFooter.className  = 'divAlertfooter';
        if (this.type == "Modal")
            {
                this.MyModalMessageFootera = document.createElement('a');
                this.MyModalMessageFootera.className = "btn";
                this.MyModalMessageFooterbtn = document.createElement('input');
                this.MyModalMessageFooterbtn.className = "botao";
                this.MyModalMessageFooterbtn.type = "button";
                this.MyModalMessageFooterbtn.value=this.msgButton;
                this.MyModalMessageFooter.appendChild(this.MyModalMessageFootera);
                this.MyModalMessageFootera.appendChild(this.MyModalMessageFooterbtn);
                this.addEvent(this.MyModalMessageFooterbtn,'click',function(e){ window.refToModMessage.fadeOutMyPopup() });
            }
        if (this.type == "WaitingModal")
            {
                this.MyModalMessageFootera = document.createElement('a');
                this.MyModalMessageFootera.className = "btn";
                this.MyModalMessageFooterbtn = document.createElement('input');
                this.MyModalMessageFooterbtn.className = "botao";
                this.MyModalMessageFooterbtn.type = "button";
                this.MyModalMessageFooterbtn.value=this.msgButton;
                this.MyModalMessageFooter.appendChild(this.MyModalMessageFootera);
                this.MyModalMessageFootera.appendChild(this.MyModalMessageFooterbtn);
                this.addEvent(this.MyModalMessageFooterbtn,'click',function(e){ window.refToModMessage.fadeOutMyPopup(); window.refToModMessage.ResponseYes.fire() });
            }            
        if (this.type == "Dialog")
            {
                this.MyModalMessageFooterNo = document.createElement('a');
                this.MyModalMessageFooterNo.className = "btn";
                this.MyModalMessageFooterbtnNo = document.createElement('input');
                this.MyModalMessageFooterbtnNo.className = "botao";
                this.MyModalMessageFooterbtnNo.type = "button";
                this.MyModalMessageFooterbtnNo.value=this.msgButtonNo;
                this.MyModalMessageFooter.appendChild(this.MyModalMessageFooterNo);
                this.MyModalMessageFooterNo.appendChild(this.MyModalMessageFooterbtnNo);
                this.addEvent(this.MyModalMessageFooterbtnNo,'click',function(e){ window.refToModMessage.fadeOutMyPopup() });

                this.MyModalMessageFooterYes = document.createElement('a');
                this.MyModalMessageFooterYes.className = "btn";
                this.MyModalMessageFooterbtnYes = document.createElement('input');
                this.MyModalMessageFooterbtnYes.className = "botao";
                this.MyModalMessageFooterbtnYes.type = "button";
                this.MyModalMessageFooterbtnYes.value=this.msgButtonYes;
                this.MyModalMessageFooter.appendChild(this.MyModalMessageFooterYes);
                this.MyModalMessageFooterYes.appendChild(this.MyModalMessageFooterbtnYes);
                this.addEvent(this.MyModalMessageFooterbtnYes,'click',function(e){ window.refToModMessage.fadeOutMyPopup(); window.refToModMessage.ResponseYes.fire()});
            }
        this.MyModalMessage.appendChild (this.MyModalMessageFooter);
        this.divs_content.appendChild(this.MyModalMessage);
}
	,

	__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);

		if(this.cssClassOfMessageBox)
			this.divs_content.className=this.cssClassOfMessageBox;
		else
			this.divs_content.className='modalDialog_contentDiv';	
			    	
    	if(!this.divs_transparentDiv)return;
    	
    	
    	// Preserve scroll position
    	st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
    	sl = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);

        //é mesmo preciso um timeOut para que a página seja actualizada, volte ao topo e ocorra o timeOut reposicionando-a
    	setTimeout('window.scrollTo(' + sl + ',' + st + ');',10);
    	
    	this.__repositionTransparentDiv();
        
		var brSize = this.__getBrowserSize();
		var bodyWidth = brSize[0];
		var bodyHeight = brSize[1];

        //alert(document.getElementById('ttt').clientHeight);
    	// Setting width and height of content div
      	this.divs_content.style.width = this.width + 'px';
    	//this.divs_content.style.height= document.getElementById('divAlert').clientHeight + 2 + 'px'; //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.shadowDivVisible)this.divs_shadow.style.display='none';	// Hiding shadow if it has been disabled

    }

    ,

    __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';		
		   	
    }
}

function setOpacityModal (value) 
{
    if (document.getElementById('DHTMLSuite_modalBox_contentDiv'))
        {
            document.getElementById('DHTMLSuite_modalBox_contentDiv').style.opacity = value / 10;
            document.getElementById('DHTMLSuite_modalBox_contentDiv').style.filter = 'alpha(opacity=' + value * 10 + ')';
        }
}

function closeModal (fire)
{
    if (document.getElementById('DHTMLSuite_modalBox_contentDiv'))
        {
            document.getElementById('DHTMLSuite_modalBox_contentDiv').style.display = 'none';
            document.getElementById('modalDialog_contentDiv_shadow').style.display = 'none';
            document.getElementById('modalDialog_transparentDivs').style.display = 'none';
	        //depois de fechar a caixa, é necessário recolocar a página na posição em que estava antes de aparecer a caixa
	        setTimeout('window.scrollTo(' + sl + ',' + st + ');',1);
	        if (fire == "true")
	        {
                //window.refToModMessage.CloseModalWindow.fire();  
	        }
            var MyModalWindow  = document.getElementById('DHTMLSuite_modalBox_contentDiv');
            MyModalWindow.parentNode.removeChild (MyModalWindow);
            var MyModalWindow  = document.getElementById('modalDialog_contentDiv_shadow');
            MyModalWindow.parentNode.removeChild (MyModalWindow);
            var MyModalWindow  = document.getElementById('modalDialog_transparentDivs');
            MyModalWindow.parentNode.removeChild (MyModalWindow);
        }
}	

function fadeOutMyPopupAut () 
{
    for( var i = 0 ; i <= 100 ; i++ ) 
        {
            setTimeout( 'setOpacityModal(' + (10 - i / 10) + ')' , 8 * i );
        }
    setTimeout('closeModal(' + "'false'" + ')', 800);
}

