﻿<!--
/*****************************************************************************

JQuery Dialog 2.0.0

[作者]
吴剑 http://luck0235.cnblogs.com/

[当前版本]
2.0.0

[历史记录]
2009-06-01：版本1.0.1发布
2009-07-05：版本1.0.2，更新了一些明显的BUG，完全支持了IE系列浏览器
2009-08-15：版本1.0.3，封装了标准DOM，多浏览器下兼容，样式美化，添加了阴影效果
2009-11-05：版本2.0.0，基于JQuery全新封装，应用了JS的命名空间，避免了客户端id冲突
			项目正式更名为JQuery Dialog，优化了拖拽的核心实现，完全支持跨浏览器

*****************************************************************************/

var JqueryDialog = {
	
	//配置项
	//模态窗口背景色
	"cBackgroundColor":"#ffffff",
	//边框颜色
	"cBorderColor":"#999999",
	//Header背景色
	"cHeaderBackgroundColor":"#f0f0f0",
	
	//程序运行变量
	//拖动状态
	"dragFlag":false,
	
	//公开函数
	
	/// <summary>创建对话框</summary>
	/// <param name="dialogTitle">对话框标题</param>
	/// <param name="iframeSrc">iframe嵌入页面地址</param>
	/// <param name="iframeWidth">iframe嵌入页面宽</param>
	/// <param name="iframeHeight">iframe嵌入页面高</param>
	Open:function(dialogTitle, iframeSrc, iframeWidth, iframeHeight){
		
		var _client_width = document.body.clientWidth;
		var _client_height = document.documentElement.scrollHeight;
		
		//create shadow
		if(typeof($("#jd_shadow")[0]) == "undefined"){
			$("body").prepend("<div id='jd_shadow'>&nbsp;</div>");
			$("#jd_shadow").css("width", _client_width + "px");
			$("#jd_shadow").css("height", _client_height + "px");
		}
	
		//create dialog
		if(typeof($("#jd_dialog")[0]) != "undefined"){
			$("#jd_dialog").remove();
		}
		$("body").prepend("<div id='jd_dialog'></div>");
	
		//dialog location
		$("#jd_dialog").css("left", (_client_width - (iframeWidth + 4 + 5)) / 2 + document.documentElement.scrollLeft + "px");
		$("#jd_dialog").css("top", (document.documentElement.clientHeight - (iframeHeight + 4 + 30 + 50 + 5)) / 2 + document.documentElement.scrollTop + "px");

		//create dialog shadow
		$("#jd_dialog").append("<div id='jd_dialog_s'>&nbsp;</div>");
		//iframeWidth + double border
		$("#jd_dialog_s").css("width", iframeWidth + 4 + "px");
		//iframeWidth + double border + header + bottom
		$("#jd_dialog_s").css("height", iframeHeight + 4 + 30 + 50 + "px");

		//create dialog main
		$("#jd_dialog").append("<div id='jd_dialog_m'></div>");
		$("#jd_dialog_m").css("border", JqueryDialog.cBorderColor + " 2px solid");
		$("#jd_dialog_m").css("width", iframeWidth + "px");
		$("#jd_dialog_m").css("background-color", JqueryDialog.cBackgroundColor);
	
		//header
		$("#jd_dialog_m").append("<div id='jd_dialog_m_h'></div>");
		$("#jd_dialog_m_h").css("background-color", JqueryDialog.cHeaderBackgroundColor);

		//header left
		$("#jd_dialog_m_h").append("<div id='jd_dialog_m_h_l'></div>");
		$("#jd_dialog_m_h_l").append("<span id='jd_dialog_m_h_l_t'>" + dialogTitle + "</span>");
	
		//header right
		$("#jd_dialog_m_h").append("<div id='jd_dialog_m_h_r'></div>");
		$("#jd_dialog_m_h_r").append("<span id='jd_dialog_m_h_r_t' title='关闭' onclick='JqueryDialog.Close();'>" + "X 关闭" + "</span>");
	
		//body
		$("#jd_dialog_m").append("<div id='jd_dialog_m_b'></div>");
		//iframe
		$("#jd_dialog_m_b").append("<iframe id='jd_iframe' src='"+iframeSrc+"' scrolling='no' frameborder='0' width='"+iframeWidth+"' height='"+iframeHeight+"' />");
	
		//bottom
	//	$("#jd_dialog_m").append("<div id='jd_dialog_m_t'><input id='jd_submit' value='提 交' type='button' onclick='JqueryDialog.Ok();' />&nbsp;&nbsp;<input id='jd_cancel' value='取 消' type='button' onclick='JqueryDialog.Close();' /></div>");
	$("#jd_dialog_m").append("<div id='jd_dialog_m_t'></div>");
	
		//append move event
		JqueryDialog.setDrag($("#jd_dialog")[0]);
	},
	
	/// <summary>关闭模态窗口</summary>
	Close:function(){
		$("#jd_shadow").remove();
		$("#jd_dialog").remove();
	},
	
	/// <summary>提交</summary>
	/// <remark></remark>
	Ok:function(){
		var frm = $("#jd_iframe");	
		if (frm[0].contentWindow.Ok()){
			JqueryDialog.Close() ;
		}
		else{
			frm[0].focus() ;
		}
	},
	
	/// <summary>提交完成</summary>
	/// <param name="alertMsg">弹出提示内容，值为空不弹出</param>
	/// <param name="isCloseDialog">是否关闭对话框</param>
	/// <param name="isRefreshPage">是否刷新页面(关闭对话框为true时有效)</param>
	SubmitCompleted:function(alertMsg, isCloseDialog, isRefreshPage){
		if($.trim(alertMsg).length > 0 ){
			alert(alertMsg);
		}
    	if(isCloseDialog){
			JqueryDialog.Close();
			if(isRefreshPage){
				window.location.href = window.location.href;
			}
		}
	},
	
	//内部函数
	//对象支持拖动   
	setDrag:function(obj){
		obj.onmousedown = function(e){
			var oPos = JqueryDialog.getObjectPos(obj);
			var cPos = JqueryDialog.getMousePos(e);
			JqueryDialog.dragFlag = true;
			document.onmouseup = function(e){
				JqueryDialog.dragFlag = false;
				document.onmousemove = null;
				document.onmouseup = null;
			};
			document.onmousemove = function(e){
				if (JqueryDialog.dragFlag){
					var Pos = JqueryDialog.getMousePos(e);
					obj.style.left = Pos.x - cPos.x + oPos.x + 'px';
					obj.style.top = Pos.y - cPos.y + oPos.y + 'px';
				}
			}
		}
	},
	
	//获取对象位置
	getObjectPos:function(obj){
	    var _x = 0, _y = 0;
    	if (obj.getBoundingClientRect){
			var box = obj.getBoundingClientRect();
			var _d = document.documentElement;
			_x = box.left + Math.max(_d.scrollLeft, document.body.scrollLeft) - _d.clientLeft;
			_y = box.top + Math.max(_d.scrollTop, document.body.scrollTop) - _d.clientTop;
		}
		else{
			for(; obj != document.body; x += obj.offsetLeft, y += obj.offsetTop, obj = obj.offsetParent);
		}   
    	return {"x":_x, "y":_y};
	},

	//获取鼠标位置
	getMousePos:function(e){
		e = e || window.event;
		var _d = document.documentElement;
    	if(e.pageX){
			//FF
			return {
				"x":e.pageX,
				"y":e.pageY
			};
		}
		else{
			//IE
	    	return {
				"x": e.clientX + _d.scrollLeft - _d.clientLeft,
				"y": e.clientY + _d.scrollTop - _d.clientTop
			};
		}
	}	

};

//-->