﻿//
//----------------------------------------------------------------------
//
//                          钱文田   2006-12-05
//
//                对用户信息提示、错误提示和进度条进行显示
//
//----------------------------------------------------------------------
//

var _messageBox;
var _messageType;
var _messageText;
var _messageDetail;
var _messageFunc;
var _messageInitFinish = false;
var _message_oldwindowresize;
var _message_oldwindowscroll;

//
// 初始化信息提示框架
//
function initMessageFrame()
{
	_messageBox = document.getElementById("messageboxiframe");

	if (!_messageBox)
	{
		var iframe = document.createElement("IFRAME");
		document.body.insertBefore(iframe, document.body.firstChild);
		iframe.outerHTML = '<iframe id="messageboxiframe" src="../js/messagebox.htm" style="display: none; z-index:9; position: absolute" frameBorder="0" scrolling="no" width="398" height="188"></iframe>';
		_messageBox = document.getElementById("messageboxiframe");
	}
}

//
// 调用显示框
//
function showMessage(type, txt, detail, func)
{  
    initMessageFrame();
    _messageType = type.toLowerCase();
    _messageText = txt;
    _messageDetail = detail;
    _messageFunc = func; 
	setTimeout(showMessage_interval, 1);
}

//
// 显示提示消息框
//
function showMessage_interval()
{	 
	if (_messageBox.readyState == "loading")
	{
		setTimeout(showMessage_interval, 50);
		return;
	}
	
    //
    // 若提示框当前是显示状态, 先隐藏
    //
  	if (_messageBox.style.display != "none")
  	{
  	    hideMessage();
  	}
    
    //
    // 提示框网页是否已经加载完毕
    //
	if (!messageboxiframe.document)
	{
		setTimeout(showMessage_interval, 50);
		return;
	}	
	if (!messageboxiframe.document.getElementById("MsgType"))
	{
		setTimeout(showMessage_interval, 50);
		return;
	}	
	if (!messageboxiframe.document.getElementById("MsgTxt"))
	{
		setTimeout(showMessage_interval, 50);
		return;
	}
	if (!messageboxiframe.document.getElementById("MsgDetail"))
	{
		setTimeout(showMessage_interval, 50);
		return;
	}
	
	// 根据提示类型设置图片
    messageboxiframe.document.getElementById("MsgType").src = "../images/" + _messageType + ".gif";
        

    // 设置提示信息
	messageboxiframe.document.getElementById("MsgTxt").innerText = _messageText;
	

	// 设置详细信息
	var detail = messageboxiframe.document.getElementById("MsgDetail");
	if (_messageDetail == null || _messageDetail == "")
	{
	    detail.style.display = "none";
	}
	else
    {
	    detail.style.display = "";
        detail.href = "javascript:showPopup('" + _messageDetail.replace(/\\/g,"\\\\").replace(/\x27/g, "\\'").replace(/\r/g, "\\r").replace(/\n/g, "\\n") + "')";
    }
	
	calcposition();
	_message_oldwindowresize = window.onresize;
	window.onresize = messageboxresize;
	_message_oldwindowscroll = window.onscroll;
	window.onscroll = messageboxscroll;
	
	// 若是加载等待, 设置确定按钮不显示
	if (_messageType == "load")
	{
	    messageboxiframe.document.getElementById("Footer").style.display = "none";
	    if (_messageFunc)
	    {
	        try
	        {
		        _messageFunc();
            }
            finally
            {
    		    _messageFunc = null;
            }
	    }
	}
	else
	{
	    messageboxiframe.document.getElementById("Footer").style.display = "";
	}
	
	_messageBox.style.display = "";
	messageboxiframe.focus();	
	_messageInitFinish = true;
}

//
// 调用隐藏提示消息框
//
function hideMessage()
{
    if (!_messageInitFinish)
    {
	    setTimeout(hideMessage, 50);
	    return;
    }    
    _messageBox.style.display = "none";
    window.onresize = _message_oldwindowresize;
    window.onscroll = _message_oldwindowscroll;
    if (_messageType != "load")
    {
        if (_messageFunc)
        {
            try
            {
	            _messageFunc();
            }
            finally
            {
		        _messageFunc = null;
            }
        }
    }
}

//
// 根据窗口客户端区域、滚动条位置、消息框宽高来计算显示位置
//
function calcposition()
{
	_messageBox.style.top = document.body.scrollTop + (document.body.clientHeight - _messageBox.height) / 2;
	_messageBox.style.left = document.body.scrollLeft + (document.body.clientWidth - _messageBox.width) / 2;
}

//
// 在窗体onresize事件中加入钩子函数
//
function messageboxresize()
{
	calcposition();
	if (_message_oldwindowresize)
	{
		_message_oldwindowresize();
    }
}

//
// 在窗体onscroll事件中加入钩子函数
//
function messageboxscroll()
{
	calcposition();
	if (_message_oldwindowscroll)
	{
		_message_oldwindowscroll();
    }		
}

