var IId; 
var Modal;
var FunctionName;
var CancelFunctionName;
var FunctionParam;
var Message;
var MessageList = new Array();

function CreateMessageObject(aMessage,aType,aFunctionName,aCancelFunctionName,aFunctionParam){
    this.Message = aMessage;
    this.Type = aType;
    this.FunctionName = aFunctionName;
    this.CancelFunctionName = aCancelFunctionName;
    this.FunctionParam = aFunctionParam;
}

function ShowMessage(aMessage,aOk)
{
    if (Modal)
    {
        var _Type = "Ok";
        if (!aOk) 
            _Type = "Cancel";
            
        MessageList.push(new CreateMessageObject(aMessage,_Type,"","",-1));
        return;
    }
    else
    {
        if (aOk)
        {
	        alert(aMessage);
	    }
	    else
	    {
	        Message = new String(aMessage);
	        //Message. = aMessage;
            var feature = "";
            
            var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
            var _Height = (Message.length / 50) * 15 + 80;
			_Height = Math.max(_Height,160);
			
	        if (InternetExplorer)
	        {
	            feature = 'left=100,top=100,width=500,height='+_Height+',resizable=0,toolbar=0,chrome,centerscreen,dependent=YES, dialog=YES,modal=YES,resizable=NO,scrollbars=NO, location=0,status=0,menubar=0,toolbar=0';
	        }
	        else
	        {
	            feature = 'left=100,top=100,width=500,height='+_Height+',resizable=0,toolbar=0,chrome,centerscreen,dependent=YES, dialog=YES,modal=YES,resizable=NO,scrollbars=NO, location=0,status=0,menubar=0,toolbar=0';
		    }
		
            modal("CancelDialog.htm",feature);
        }
    }
}

function ShowConfirmationMessage(aMessage,aFunctionName,aCancelFunctionName,aFunctionParam)
{
    if (Modal)
    {
        MessageList.push(new CreateMessageObject(aMessage,"Ok_Cancel",aFunctionName,aCancelFunctionName,aFunctionParam));
        return;
    }
    else
    {
        FunctionName = aFunctionName;
        CancelFunctionName = aCancelFunctionName;
        FunctionParam = aFunctionParam;
        Message = aMessage;
	    
        var feature = "";
        var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
        var _Height = (Message.length / 50) * 15 + 80;
		_Height = Math.max(_Height,160);
		
	    if (InternetExplorer)
	    {
	        feature = 'left=100,top=100,width=500,height='+_Height+',resizable=0,toolbar=0,chrome,centerscreen,dependent=YES, dialog=YES,modal=YES,resizable=NO,scrollbars=NO, location=0,status=0,menubar=0,toolbar=0';
	    }
	    else
	    {
	        feature = 'left=100,top=100,width=500,height='+_Height+',resizable=0,toolbar=0,chrome,centerscreen,dependent=YES, dialog=YES,modal=YES,resizable=NO,scrollbars=NO, location=0,status=0,menubar=0,toolbar=0';
		}
		
        modal("ConfirmDialog.htm",feature);
    }
}

function ShowNextMessage()
{
    if (MessageList.length > 0)
    {
        var _Message = MessageList.shift();
        //Con esto se debe quitar el primer elemento de la lista
        //MessageCount = MessageCount - 1;
        
        if (_Message.Type == "Ok_Cancel")
        {
            ShowConfirmationMessage(_Message.Message,_Message.FunctionName,_Message.CancelFunctionName,_Message.FunctionParam);
        }
        else
        {
            var _Ok = (_Message.Type == "Ok");
            ShowMessage(_Message.Message,_Ok);
        }
    }
}

function modal(url,feature)
{
    dialog(url,feature);
    return false;
}
        
function dialog(url,feature)
{
     if(url==null){return false;}
     url = url
     if(feature==null){feature=""};
     
     var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
		
     if(InternetExplorer)
     {
        Modal = window.open(url,'Message',feature);
        
        attachEvent("onfocus", GetFocusIE);
     }
     else
     {
       if(document.getBoxObjectFor)
       {	 
            Modal = window.open(url,'Message',"modal=1," + feature);
            
            var ModalFocus = function()
            {
	           if(Modal && (!Modal.closed))
	           {
	                Modal.focus();
	           }
	           else
	           {
	                Modal = null;
	                window.removeEventListener("focus",function(){},false); 
	                clearInterval(IId); 
	                ModalFocus = null;
	           };					
            }
        
            window.addEventListener("focus",ModalFocus, false); 
            IId = setInterval(ModalFocus, 1);
            return false;
       }
     }
     return false;
}

function GetFocusIE()
{
    if (Modal) 
        Modal.focus();
}

function CloseConfirmMessage(aContinue)
{
    if (Modal)
    {
        Modal.close();
        Modal = null;
        
        if(aContinue)
        {
            if (FunctionName && FunctionName != "")
            {
                if (FunctionParam && FunctionParam != -1)
                {
                    Anthem_InvokePageMethod(FunctionName,[true,FunctionParam],null);
                }
                else
                {
                    Anthem_InvokePageMethod(FunctionName,[true],null);
                }
            }
        }
        else
        {
            if (CancelFunctionName != "")
            {
                Anthem_InvokePageMethod(CancelFunctionName,[],null);
            }
        }
        
        FunctionName = "";
        CancelFunctionName = "";
        FunctionParam = -1;
        
        ShowNextMessage();       
    }     
}

function SetMessageText(aLabel)
{
    aLabel.innerHTML = Message;
}

function CloseMessage()
{
    if (Modal)
    {
        Modal.close();
        Modal = null;
        ShowNextMessage();
    }
}