<!--
/*****************************************************************************

Javascript模态窗口

[作者]
吴剑 http://luck0235.cnblogs.com/

[当前版本]
1.0.3

[历史记录]
2009-06-01：版本1.0.1发布
2009-07-05：版本1.0.2，更新了一些明显的BUG，完全支持了IE系列浏览器
2009-08-15：版本1.0.3，封装了标准DOM，多浏览器下兼容，样式美化，添加了阴影效果

[下版计划]
修改拖拽的核心算法，让拖拽更流畅和多浏览器兼容

*****************************************************************************/

//配置项
var cBackgroundColor = "#ffffff";//模态窗口背景色
var cBorderColor = "#999999";//边框颜色
var cHeaderBackgroundColor = "#0000CC";//Header背景色

var moveFlag = 0;//拖曳是否开始(0:否,1:是)
var mouseBeginX = 0;//鼠标的起始x座标
var mouseBeginY = 0;//鼠标的起始y座标
var modeBeginTop = 0;//拖曳对象当前的top值
var modeBeginLeft = 0;//拖曳对象当前的left值

//DOM封装
//ID获取元素
function getE(theID){
	return document.getElementById(theID);
}
//创建元素
function createE(tagName){
	var tag = document.createElement(tagName);
	return tag;
}
//移除元素
function removeE(tag){
	if(document.removeNode){
		//IE内核
		tag.removeNode(true);
	}
	else{
		//非IE内核
		tag.parentNode.removeChild(tag);
	}
}
//元素添加事件
function addEvent(tag, eventName, func){
	if(tag.attachEvent){
		//IE内核
		tag.attachEvent(eventName, func);
	}
	else if(tag.addEventListener){
		//FF以及NS内核
		//注册事件时需要去掉前面的"on"
		tag.addEventListener(eventName.replace(/on(.*)/i,'$1'), func, false);
	}
}

/// <summary>鼠标按下事件</summary>
function selectBegin(e){
    moveFlag = 1;
	var mode_window = getE("mode_window");
    mode_window.setCapture();
	if(!e){
		e = window.event;
	}
	//鼠标起始x,y座标值
    mouseBeginX = document.body.scrollLeft + e.clientX;
    mouseBeginY = document.body.scrollTop + e.clientY;
	//拖曳对象起始top,left值
    modeBeginTop = mode_window.offsetTop;
    modeBeginLeft = mode_window.offsetLeft;
}

/// <summary>鼠标移动事件</summary>
function selectMove(e){
    if(moveFlag == 1){
		var mode_window = getE("mode_window");
		if(!e){
			e = window.event;
		}
		//捕获鼠标当前座标
        var mouseCurrentX = document.body.scrollLeft + e.clientX;
        var mouseCurrentY = document.body.scrollTop + e.clientY;
		//重置拖曳对象位置
        mode_window.style.top = modeBeginTop + (mouseCurrentY - mouseBeginY);
        mode_window.style.left = modeBeginLeft + (mouseCurrentX - mouseBeginX);
    }
}

/// <summary>鼠标松开事件</summary>
function selectEnd(){
    moveFlag = 0;
	var mode_window = getE("mode_window");
    mode_window.releaseCapture();
}

/// <summary>打开模态窗口</summary>
/// <param name="windowTitle">窗口标题</param>
/// <param name="iframeSrc">iframe嵌入页面地址</param>
/// <param name="iframeWidth">iframe嵌入页面宽</param>
/// <param name="iframeHeight">iframe嵌入页面高</param>
function openModeWindow(windowTitle, iframeSrc, iframeWidth, iframeHeight){
	//create mode shadow
	var mode_shadow = createE("div");
	mode_shadow.id = "mode_shadow";

	var client_width = document.body.clientWidth + "px";
	var client_height = document.documentElement.scrollHeight + "px";
	mode_shadow.style.width = client_width;
	mode_shadow.style.height = client_height;
	
	if(document.body.childNodes.length > 0){
		document.body.insertBefore(mode_shadow, document.body.childNodes[0]);
	}
	else{
		document.body.appendChild(mode_shadow);
	}
	
	//create mode window
	var mode_window = createE("div");
	mode_window.id = "mode_window";
	
	var mode_window_shadow = createE("div");
	mode_window_shadow.id = "mode_window_shadow";
	mode_window_shadow.innerHTML = "&nbsp;";
	//iframeWidth + double border
	mode_window_shadow.style.width = iframeWidth + 4 + "px";
	//iframeWidth + double border + header + bottom
	mode_window_shadow.style.height = iframeHeight + 4 + 30 + 50 + "px";
	
	var mode_window_main = createE("div");
	mode_window_main.id = "mode_window_main";
	mode_window_main.style.border = cBorderColor + " 2px solid";
	mode_window_main.style.width = iframeWidth + "px";
	mode_window_main.style.backgroundColor = cBackgroundColor;
	
	//header
	var mode_window_main_header = createE("div");
	mode_window_main_header.id = "mode_window_main_header";
	mode_window_main_header.style.background = "url(../../../app/pageMistake/IMAGES/jcy_01.gif)";
	
	var mode_window_main_header_left = createE("div");
	mode_window_main_header_left.id = "mode_window_main_header_left";
	
	var mode_window_main_header_left_text = createE("span");
	mode_window_main_header_left_text.id = "mode_window_main_header_left_text";
	mode_window_main_header_left_text.innerHTML = "<font style='font-size:16px;color:#FFFFFF;font-weight:700;'>"+windowTitle+"</font>";
	
	mode_window_main_header_left.appendChild(mode_window_main_header_left_text);
	
	var mode_window_main_header_right = createE("div");
	mode_window_main_header_right.id = "mode_window_main_header_right";
	
	var mode_window_main_header_right_text = createE("span");
	mode_window_main_header_right_text.id = "mode_window_main_header_right_text";
	mode_window_main_header_right_text.innerHTML = "<font style='color:#ffffff;text-decoration: none; font-size:12px;font-weight:700;'>关闭&nbsp;<img src='../../../app/pageMistake/IMAGES/jcy_02.gif' width='7' height='7' /></font>";
	mode_window_main_header_right_text.title = "关闭";
	
	mode_window_main_header_right.appendChild(mode_window_main_header_right_text);

	mode_window_main_header.appendChild(mode_window_main_header_left);
	mode_window_main_header.appendChild(mode_window_main_header_right);
	
	//body
	var mode_window_main_body = createE("div");
	mode_window_main_body.id = "mode_window_main_body";

	var iframe = createE("iframe");
	iframe.name = "mode_iframe";
	iframe.id = "mode_iframe";
	iframe.src = iframeSrc;
	iframe.scrolling = "no";
	iframe.frameBorder = "0";
	iframe.width = iframeWidth + "px";
	iframe.height = iframeHeight + "px";
	mode_window_main_body.appendChild(iframe);
	//mode_window_body.innerHTML = "<iframe id='mode_iframe' scrolling='no' frameborder='0' src='" + iframeSrc + "' width='" + iframeWidth + "' height='" + iframeHeight + "' />";
	
	//bottom
	var mode_window_main_bottom = createE("div");
	mode_window_main_bottom.id = "mode_window_main_bottom";
	mode_window_main_bottom.innerHTML = "<a href='javascript:ok();'><img src='../../../app/pageMistake/IMAGES/jcy_04.gif' width='102' height='32' border='0' /></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:closeDialog();'><img src='../../../app/pageMistake/IMAGES/jcy_05.gif' width='102' height='32' border='0' /></a>";
	
	//append event
	//move
	addEvent(mode_window, "onmousedown", selectBegin)
	addEvent(mode_window, "onmousemove", selectMove)
	addEvent(mode_window, "onmouseup", selectEnd)
	//close
	addEvent(mode_window_main_header_right_text, "onclick", closeDialog)
	
	//mode_window location
	mode_window.style.left = (document.body.clientWidth - (iframeWidth + 4 + 5)) / 2 + document.documentElement.scrollLeft + "px";
	mode_window.style.top = (document.documentElement.clientHeight - (iframeHeight + 4 + 30 + 50 + 5)) / 2 + document.documentElement.scrollTop + "px";
	//iframe width + double borders + shadow
	mode_window.style.width = iframeWidth + 4 + 5 + "px";
	//iframe height + double borders + shadow + header + bottom
	mode_window.style.height = iframeHeight + 4 + 5 + 30 + 50 + "px";
	
	//dom append
	mode_window_main.appendChild(mode_window_main_header);
	mode_window_main.appendChild(mode_window_main_body);
	mode_window_main.appendChild(mode_window_main_bottom);
	mode_window.appendChild(mode_window_shadow);
	mode_window.appendChild(mode_window_main);
	document.body.insertBefore(mode_window, document.body.childNodes[0]);
	
	//debug(look HTML source)
	//alert(mode_window_main_body.innerHTML);
}

/// <summary>提交</summary>
/// <remark></remark>
function ok(){
	var frm = document.frames["mode_iframe"];
	if (frm.ok()){
		closeDialog() ;
	}
	else{
		frm.focus() ;
	}
}

/// <summary>提交完成</summary>
/// <param name="alertMsg">弹出提示内容，值为空不弹出</param>
/// <param name="isCloseDialog">是否关闭对话框</param>
/// <param name="isRefreshPage">是否刷新页面(关闭对话框为true时有效)</param>
function submitCompleted(alertMsg, isCloseDialog, isRefreshPage)
{
	if(alertMsg != ""){
		alert(alertMsg);
	}
    if(isCloseDialog){
		closeDialog();
		if(isRefreshPage){
			window.location.href = window.location.href;
		}
	}
}

/// <summary>关闭模态窗口</summary>
function closeDialog(){
	var mode_window = getE("mode_window");
	var mode_shadow = getE("mode_shadow");
	removeE(mode_window);
	removeE(mode_shadow);
	/*
	if(top != self){
		mode_window = window.parent.document.getElementById("mode_window");
		mode_shadow = window.parent.document.getElementById("mode_shadow");
	}
	*/
}

//-->
