| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159 | 
							- //------------------------------
 
- //	 Dialog plugin for jQuery
 
- //   Author : LooseLive@gmail.com
 
- //------------------------------
 
- (function($){
 
- 	var WIN = $(window),
 
- 		DOC = $(document),
 
- 		zIndex = ZINDEX = 2,
 
- 		F = $.isFunction,
 
- 		CSS = {
 
- 			HASICON	 : 'HasIcon',
 
- 			TIMER	 : 'HasTimer',
 
- 			CURRENT	 : 'Current',
 
- 			LOADING  : 'Loading',
 
- 			DISABLED : 'Disabled',
 
- 			NOTONTOP : 'NotOnTop',
 
- 			ENTCLICK : 'ENTCLICK'
 
- 		},
 
- 		SPACE = ' ',
 
- 		EVENT = {
 
- 			A :	'mousedown',
 
- 			B : 'click',
 
- 			C : 'keydown',
 
- 			D : 'resize',
 
- 			E : 'scroll'
 
- 		},
 
- 		//从对象中删除该实例,如果对象的实例被删空,重置ZINDEX,避免无限上增
 
- 		DELETE = function (id) {
 
- 			delete $.dialog.list[id];
 
- 			if ($.isEmptyObject($.dialog.list))
 
- 			{
 
- 				ZINDEX = zIndex;
 
- 			}
 
- 		};
 
- 	function toArray() {
 
- 		var a = arguments,
 
- 			A = [],
 
- 			i = 0;
 
- 		for (; i < a.length; i++)
 
- 		{
 
- 			if (a[i] instanceof Array)
 
- 			{
 
- 				A = $.merge(A, a[i]);
 
- 			}
 
- 			else if (a[i] != null)
 
- 			{
 
- 				A.push(a[i]);
 
- 			}
 
- 		}
 
- 		return A;
 
- 	}
 
- 	$.dialog = function(o) {
 
- 		return new $.dialog.fn._init(o);
 
- 	};
 
- 	$.dialog.list = {};
 
- 	//默认设置
 
- 	$.dialog.defaults = {
 
- 		//对话框的唯一标识符,用途:无论何时何地都可通过$.dialog.get('xxx')获取对话框对象。
 
- 		id : null,
 
- 		//对话框的标识触发器,用途:防止重复弹出,缓存数据。
 
- 		trigger : null,
 
- 		/*
 
- 		[图标] - int | string
 
- 			成功:0 | success
 
- 			警告:1 | warning
 
- 			错误:2 | error,
 
- 			异常:3 | exception
 
- 			询问:4 | question
 
- 		*/
 
- 		icon : null,
 
- 		//[标题]
 
- 		title : '信息提示',
 
- 		//[选项卡] - array
 
- 		tab : null,
 
- 		/*
 
- 		[
 
- 			{
 
- 				text : string - 选项卡名称,
 
- 				content : {icon:独立的图标}跟全局content格式一致,
 
- 				button : 跟全局button格式一致,
 
- 				active : 是否激活该tab,注意:同时只能激活一个tab,如果定义多个active=true,以最后一个为准
 
- 				onActive : 当激活该tab时的事件处理函数
 
- 				icon:
 
- 			}
 
- 		],
 
- 		tab的全局触发方式(鼠标事件名称)
 
- 		*/
 
- 		tabType : 'click',
 
- 		/*
 
- 		[对话框的内容] - object*/
 
- 		content			: null,
 
- 		/*
 
- 		{
 
- 					//load : {
 
- 						url:String,
 
- 						[data] : {},
 
- 						[success]:Function,
 
- 						[error]:Function
 
- 					}
 
- 					||
 
- 					load:string
 
- 					//text : string
 
- 					//selector : string(选择器表达式) | jquery(元素)
 
- 					//iframe : string(框架Url)
 
- 					ajax : {url:'bb'}//跟jquery的ajax参数格式一致
 
- 		},
 
- 		//[按钮] - array
 
- 		*/
 
- 		button :
 
- 		[
 
- 			{
 
- 				text : '确认'
 
- 				/*
 
- 				,callback : function - 处理函数,
 
- 				cls : string-自定义样式名称,
 
- 				url : string,
 
- 				disabled : Boolean,
 
- 				bindEnter : Boolean
 
- 				*/
 
- 			}
 
- 		],
 
- 		padding			: '8px',
 
- 		width			: null,					//string||number - pixels
 
- 		height			: null,					//string||number - pixels
 
- 		//位置参照元素
 
- 		refer			: null,					//jquery||HTMLElement||string(jQuery selector)
 
- 		offset			: {
 
- 			top : 'middel',
 
- 			/*
 
- 				可使用值枚举:
 
- 				字符('top'||'middel'||'bottom'||'xpx'||'%50')
 
- 				数字(表示多少像素,与字符值'xpx'同等效果)
 
- 			*/
 
- 			left : 'center'
 
- 			/*
 
- 				可使用值枚举:
 
- 				字符('left'||'center'||'right'||'80px'||'%60')
 
- 				数字(表示多少像素,与字符值'xpx'同等效果)
 
- 			,*/
 
- 		},
 
- 		//是否固定位置
 
- 		fixed : true,
 
- 		//遮罩层
 
- 		mask		: {
 
- 			enabled : false,	//是否启用
 
- 			color	: '#999',	//颜色
 
- 			opacity : 0.8,		//透明度
 
- 			duration: 200		//透明度渐变动画的速度
 
- 		},
 
- 		draggable		: true,					//是否可拖动
 
- 		resizable		: false,				//是否可调整自身大小
 
- 		timeout			: { second : 0, text : 's% 秒后将自动关闭'},
 
- 		esc				: true,					//是否允许用户按 Esc 键关闭对话框
 
- 		onLoad			: $.noop,
 
- 		onClose         : $.noop,
 
- 		onEnter         : $.noop,
 
- 		err				: {
 
- 			title		: 'Error',
 
- 			content		: '<p style="text-align:center">服务器繁忙或发生错误,请稍后再试!<br />The server is busy or unavailable, please try again later!</p>',
 
- 			button		: 'Close'
 
- 		},
 
- 		showErr			: true					//内容加载失败时是否显示错误消息
 
- 	};
 
- 	//修改全局默认设置的方法
 
- 	$.dialog.setup = function (o) {
 
- 		$.extend(this.defaults, o);
 
- 	};
 
- 	$.dialog.get = function (id) {
 
- 		return $.dialog.list[id];
 
- 	}
 
- 	//关闭所有对话框,参数o-布尔值,是否静默关闭
 
- 	$.dialog.close = function (o) {
 
- 		for (var i in $.dialog.list) {
 
- 			$.dialog.list[i].close(o);
 
- 		};
 
- 	};
 
- 	$.dialog.fn = $.dialog.prototype = {
 
- 		version : '1.0.0',
 
- 		title : function(v, d) {
 
- 			d = this.dom().title;
 
- 			//如果未传入参数,则返回当前标题字符
 
- 			if (v === undefined) return d.text();
 
- 			if (v === null)v='';
 
- 			d.text(v);
 
- 			return this;
 
- 		},
 
- 		tab : function(o) {
 
- 			var e = this,
 
- 				d = e.dom(),
 
- 				x = d.title;
 
- 			if (o === false)
 
- 			{
 
- 				x.siblings().remove();
 
- 			}
 
- 			else
 
- 			{
 
- 				var v = toArray(o);
 
- 				if (v.length > 0)
 
- 				{
 
- 					var i = 0,
 
- 						t = $(),
 
- 						n = -1;
 
- 					for (; i < v.length; i++)
 
- 					{
 
- 						var m = v[i].type ? v[i].type : e.o.tabType,
 
- 							j = $('<a href="javascript:void(0)" hidefocus="true"></a>').data('_m', m);
 
- 						if(v[i].icon)
 
- 						{
 
- 							j.wrapInner('<b class="' + v[i].icon + '">' + v[i].text + '</b>');
 
- 						}
 
- 						else
 
- 						{
 
- 							j.text(v[i].text);
 
- 						}
 
- 						j.bind(m + SPACE + EVENT.A, {i : i}, function (p) {
 
- 							if (e.child != null) return;
 
- 							//避免对话框可拖动时点击tab所带来的反应
 
- 							if (p.type == EVENT.A) return false;
 
- 							var o = v[p.data.i],
 
- 								b = toArray(o.button !== undefined ? o.button : [], e.o.button),
 
- 								c = o.content;
 
- 							//激活tab事件处理
 
- 							if (F(o.onActive))
 
- 							{
 
- 								if(o.onActive.call(e) == false)return false;
 
- 							}
 
- 							//切换tab的样式
 
- 							$(this).addClass(CSS.CURRENT).siblings().removeClass(CSS.CURRENT);
 
- 							//预清空隐藏按纽栏
 
- 							d.button.empty().parent().hide();
 
- 							if (c)
 
- 							{
 
- 								if (typeof c === 'string' && (c.indexOf('#') === 0 || c.indexOf('.') === 0))
 
- 								{
 
- 									var w = d.content,
 
- 										z = w.find(c);
 
- 									if (!z[0])
 
- 									{
 
- 										var y = w.data('c');
 
- 										z = $(y).find(c);
 
- 										if (z[0]) w.html(y);
 
- 									}
 
- 									if (z[0])
 
- 									{
 
- 										z.siblings().hide();
 
- 										z.fadeIn('fast');
 
- 										e._ready(b, 1);
 
- 									}
 
- 									else
 
- 									{
 
- 										e._showErr();
 
- 									}
 
- 								}
 
- 								else
 
- 								{
 
- 									e.content(c, b);
 
- 									//独立的图标处理
 
- 									e.icon(c.icon || e.o.icon);
 
- 								}
 
- 							}
 
- 							else
 
- 							{
 
- 								e.button(b);
 
- 							}
 
- 						});
 
- 						if (v[i].active === true) n = i;
 
- 						t = t.add(j);
 
- 					}
 
- 					x.siblings().remove();
 
- 					x.parent().append(t);
 
- 					//如果有需要激活的tab
 
- 					if (n > -1)
 
- 					{
 
- 						var a = t.eq(n);
 
- 						if (e._isReady)
 
- 						{
 
- 							var m = a.data('_m');
 
- 							a.triggerHandler(m);
 
- 						}
 
- 						else
 
- 						{
 
- 							a.attr('data-active', 1);
 
- 						}
 
- 					}
 
- 				}
 
- 			}
 
- 			return e;
 
- 		},
 
- 		icon : function (v) {
 
- 			var d = this.dom(),
 
- 				b = d.body,
 
- 				c = d.icon;
 
- 			//如果未传入参数,则返回图标容器元素
 
- 			if (v === undefined) return d;
 
- 			if (v !== null)
 
- 			{
 
- 				if (!isNaN(v))
 
- 				{
 
- 					switch(v)
 
- 					{
 
- 						case 0: v = 'Success'; break;
 
- 						case 1: v = 'Warning'; break;
 
- 						case 2: v = 'Error'; break;
 
- 						case 3: v = 'Exception'; break;
 
- 						case 4: v = 'Question'; break;
 
- 						default : v = null;
 
- 					}
 
- 				}
 
- 				b.addClass(CSS.HASICON);
 
- 				if (v) c.removeClass().addClass(v).parent().show();
 
- 			}
 
- 			else
 
- 			{
 
- 				b.removeClass(CSS.HASICON);
 
- 				c.removeClass().parent().hide();
 
- 			}
 
- 			return this;
 
- 		},
 
- 		content : function (o, b) {
 
- 			var e = this,
 
- 				z = b ? 1 : 0,
 
- 				c = e.dom().content;
 
- 			if (o === undefined) return c;
 
- 			if (o === null)
 
- 			{
 
- 				e._ready();
 
- 				return e;
 
- 			}
 
- 			if (typeof o === 'string')
 
- 			{
 
- 				o = { text : o }
 
- 			}
 
- 			else if(!$.isPlainObject(o))
 
- 			{
 
- 				o = { selector : o }
 
- 			}
 
- 			b = b ? b : e.o.button;
 
- 			c.empty().addClass(CSS.LOADING);
 
- 			$.each(o, function (t, v){
 
- 				switch (t.toLowerCase())
 
- 				{
 
- 					case 'load' :
 
- 						if (typeof v === 'string') v = {url : v};
 
- 						c.load(v.url, v.data, function(x,y){
 
- 							if (y === 'success')
 
- 							{
 
- 								c.removeClass(CSS.LOADING);
 
- 								e._ready(b,z);
 
- 								if (v.success) v.success.call(e);
 
- 							}
 
- 							else
 
- 							{
 
- 								e._showErr();
 
- 								if (v.error) v.error.call(e);
 
- 							}
 
- 						});
 
- 						break;
 
- 					case 'text' :
 
- 						c.removeClass(CSS.LOADING).html(v);
 
- 						e._ready(b,z);
 
- 						break;
 
- 					case 'selector' :
 
- 						//使用API方式设置内容时如果有需要恢复到原始位置的元素,将其恢复
 
- 						e.recovery && e.recovery();
 
- 						//如果是选择器字符或HTMLElement,将其转换为jQuery对象
 
- 						if (typeof v === 'string' || v.nodeType === 1) v = $(v);
 
- 						if (v[0])
 
- 						{
 
- 							//-->恢复处理函数
 
- 							var display = v[0].style.display,
 
- 								prev = v.prev(),
 
- 								next = v.next(),
 
- 								parent = v.parent();
 
- 							e.recovery = function () {
 
- 								if (prev[0]) {
 
- 									prev.after(v);
 
- 								} else if (next[0]) {
 
- 									next.before(v);
 
- 								} else if (parent[0]) {
 
- 									parent.append(v);
 
- 								};
 
- 								v[0].style.display = display;
 
- 								e.recovery = null;
 
- 							};
 
- 							//<--
 
- 							c.removeClass(CSS.LOADING).append(v.show());
 
- 							e._ready(b,z);
 
- 						}
 
- 						else
 
- 						{
 
- 							e._showErr();
 
- 						}
 
- 						break;
 
- 					case 'iframe' :
 
- 						var iframe = $('<iframe src="' + v + '" width="100%" height="100%" scrolling="auto" frameborder="0" marginheight="0" marginwidth="0"></iframe>');
 
- 						c.removeClass(CSS.LOADING).html(iframe);
 
- 						iframe.bind('load', function () {
 
- 							var i = $(this),
 
- 								d = i[0].contentWindow.document,
 
- 								w = Math.max(d.body.scrollWidth, d.documentElement.scrollWidth),
 
- 								h = i.contents().find('body').height();
 
- 							if (!e._w) i.width(w);
 
- 							if (!e._h) i.height(h);
 
- 						});
 
- 						e._ready(b,z);
 
- 						break;
 
- 					case 'ajax' :
 
- 						v.type = v.type || 'get';
 
- 						$.ajax({
 
- 							url : v.url,
 
- 							type : v.type,
 
- 							data : v.data,
 
- 							dataType : 'html',
 
- 							success:function(html){
 
- 								c.removeClass(CSS.LOADING).html(html);
 
- 								e._ready(b,z);
 
- 								if(F(v.success)) v.success.call(e);
 
- 							},
 
- 							error : function () {
 
- 								if(v.error) v.error.call(e);
 
- 								e._showErr();
 
- 							}
 
- 						});
 
- 						break;
 
- 				}
 
- 			});
 
- 			return e;
 
- 		},
 
- 		button : function (o) {
 
- 			var e = this, a = toArray(o), b = e.dom().button, i = 0;
 
- 			b.empty().parent().hide();
 
- 			for (; i < a.length; i++)
 
- 			{
 
- 				var c = $('<a href="javascript:void(0)" hidefocus="true" data-id="' + a[i].text + '">' + a[i].text + '</a>').bind(EVENT.B, { e : e, f : a[i].callback }, F(a[i].callback) ? function (e,d) {
 
- 					if (e.data.e.child != null) return;
 
- 					if ($(this).hasClass(CSS.DISABLED))
 
- 					{
 
- 						return false;
 
- 					}
 
- 					else
 
- 					{
 
- 						d = e.data;
 
- 						return d.f.call(d.e);
 
- 					}
 
- 				} : $.proxy(e.close, e));
 
- 				if(typeof a[i].cls === 'string') c.addClass(a[i].cls);
 
- 				if(typeof a[i].url === 'string') c[0].href = a[i].url;
 
- 				if(a[i].disabled === true) c.addClass(CSS.DISABLED);
 
- 				if (a[i].bindEnter) c.addClass(CSS.ENTCLICK);
 
- 				b.append(c);
 
- 			}
 
- 			if (i > 0) b.parent().show();
 
- 			return e;
 
- 		},
 
- 		//改变按钮状态和文本,n-按钮的索引,o-字符或布尔值或纯粹的对象{disabled:Boolean,text:String}
 
- 		buttonChange : function (n, o) {
 
- 			var b = this.dom().button;
 
- 				d = b.children('[data-id="' + n + '"]');
 
- 			if (d.size() === 0) d = b.children().eq(n);
 
- 			var disabled = null;
 
- 			var text = null;
 
- 			if (typeof o == 'object')
 
- 			{
 
- 				disabled = o.disabled;
 
- 				text = o.text;
 
- 			}
 
- 			else
 
- 			{
 
- 				if (typeof o == 'boolean')
 
- 				{
 
- 					disabled = o;
 
- 				}
 
- 				else if (typeof o == 'string')
 
- 				{
 
- 					text = o;
 
- 				}
 
- 			}
 
- 			if (disabled !== null)
 
- 			{
 
- 				if(disabled)
 
- 				{
 
- 					d.addClass(CSS.DISABLED);
 
- 				}
 
- 				else
 
- 				{
 
- 					d.removeClass(CSS.DISABLED);
 
- 				}
 
- 			}
 
- 			if (text !== null)
 
- 			{
 
- 				d.text(text);
 
- 			}
 
- 			return this;
 
- 		},
 
- 		padding : function (v) {
 
- 			if (v)
 
- 			{
 
- 				var c = this.dom().content;
 
- 				if (!c.children('iframe')[0])
 
- 				{
 
- 					c.css('padding', v);
 
- 				}
 
- 			}
 
- 			return this;
 
- 		},
 
- 		width : function (v) {
 
- 			var e = this;
 
- 			if (v)
 
- 			{
 
- 				e.wrapper.width(v);
 
- 				e._w = 1;
 
- 				return e;
 
- 			}
 
- 			if (v === null) return e;
 
- 			return e.wrapper.width();
 
- 		},
 
- 		//设置对话框的高度,如果参数没有明确指定单位(如:em或%),使用px。如果不带参数,返回当前对话框的高度
 
- 		height : function (v) {
 
- 			var e = this;
 
- 			if (v)
 
- 			{
 
- 				e.wrapper.height(v);
 
- 				e._h = 1;
 
- 				return e;
 
- 			}
 
- 			if (v === null) return e;
 
- 			return e.wrapper.height();
 
- 		},
 
- 		offset : function(o) {
 
- 			var e = this;
 
- 			if (o === undefined) return e.lastOffset || e.o.offset;
 
- 			var refer	= e.o.refer,
 
- 				windowW = WIN.width(),
 
- 				windowH = WIN.height(),
 
- 				width	= e.wrapper.outerWidth(),
 
- 				height	= e.wrapper.outerHeight(),
 
- 				offset	= {top : parseInt((windowH - height)/2), left : parseInt((windowW - width) / 2)},
 
- 				set		= true;
 
- 			if( offset.top <= 0 ) offset.top = 0;
 
- 			if( offset.left <= 0 ) offset.left = 0;
 
- 			if (refer)
 
- 			{
 
- 				var visibleT = DOC.scrollTop(),
 
- 					visibleL = DOC.scrollLeft(),
 
- 					visibleB = visibleT + windowH,
 
- 					visibleR = visibleL + windowW,
 
- 					referW = refer.outerWidth(),
 
- 					referH = refer.outerHeight(),
 
- 					referOffset = refer.offset(),
 
- 					referT = referOffset.top,
 
- 					referL = referOffset.left,
 
- 					referB = referT + referH,
 
- 					referR = referL + referW,
 
- 					invisibleW = 0,
 
- 					invisibleH = 0,
 
- 					inViewableArea = referT < visibleB && referB > visibleT && referR > visibleL && referL < visibleR;
 
- 				if (inViewableArea)
 
- 				{
 
- 					if (referL < visibleL)
 
- 					{
 
- 						invisibleW = visibleL - referL;
 
- 						referL = referL + invisibleW;
 
- 					}
 
- 					else if (referR > visibleR)
 
- 					{
 
- 						invisibleW = referR - visibleR;
 
- 					}
 
- 					if (referT < visibleT)
 
- 					{
 
- 						invisibleH = visibleT - referT;
 
- 						referT = referT + invisibleH;
 
- 					}
 
- 					else if (referB > visibleB)
 
- 					{
 
- 						invisibleH = referB - visibleB;
 
- 					}
 
- 					referW = referW - invisibleW,
 
- 					referH = referH - invisibleH;
 
- 					o = {
 
- 						top : referT + ((referH - height) / 2),
 
- 						left : referL + ((referW - width) / 2)
 
- 					};
 
- 					if (o.top < visibleT)
 
- 					{
 
- 						o.top = visibleT;
 
- 					}
 
- 					else if (o.top + height > visibleB)
 
- 					{
 
- 						o.top = visibleB - height;
 
- 					}
 
- 					if (o.left < visibleL)
 
- 					{
 
- 						o.left = visibleL;
 
- 					}
 
- 					else if (o.left + width > visibleR)
 
- 					{
 
- 						o.left = visibleR - width;
 
- 					}
 
- 					e.fixed(false).draggable(false);
 
- 				}
 
- 				else
 
- 				{
 
- 					e.fixed(false).draggable(e.o.draggable);
 
- 					set = false;
 
- 				}
 
- 			}
 
- 			$.each(o, function(n, val){
 
- 				if((typeof val === 'string' && (val.indexOf('%') > -1 || parseInt(val) > 0 )) || typeof val === 'number')
 
- 				{
 
- 					offset[n] = val;
 
- 				}
 
- 				else
 
- 				{
 
- 					switch(val)
 
- 					{
 
- 						case 'left'		: offset[n] = 0; break;
 
- 						case 'right'	: offset[n] = windowW-width;break;
 
- 						case 'top'		: offset[n] = 0;break;
 
- 						case 'bottom'	: offset[n] = windowH-height;break;
 
- 					}
 
- 				}
 
- 			});
 
- 			if (set)
 
- 			{
 
- 				e.wrapper.css({
 
- 					top	 : offset.top,
 
- 					left : offset.left
 
- 				});
 
- 				e.lastOffset = offset;
 
- 			}
 
- 			return e;
 
- 		},
 
- 		//开启或关闭固定定位。参数为false时为关闭,不带参数或参数值为非false时为开启
 
- 		fixed : function (v) {
 
- 			if (v === false)
 
- 			{
 
- 				this.wrapper.css('position','absolute');
 
- 			}
 
- 			else
 
- 			{
 
- 				this.wrapper.css('position','fixed');
 
- 			}
 
- 			return this;
 
- 		},
 
- 		//开启或关闭遮罩层。参数为false时为关闭,不带参数或参数值为非false时为开启
 
- 		mask : function (o) {
 
- 			var e = this, t = o;
 
- 			//使用.mask(null)方法关闭遮罩层
 
- 			if ((o === false || o === null) && e.MaskLayer != null)
 
- 			{
 
- 				e.MaskLayer.remove();
 
- 				e.MaskLayer = null;
 
- 				e._mask = 0;
 
- 			}
 
- 			o = o === true ? $.extend({}, $.dialog.defaults.mask, {enabled : true}) : $.extend({}, e.o.mask, o);
 
- 			if (t === undefined || o.enabled)
 
- 			{
 
- 				if (e.MaskLayer === null)
 
- 				{
 
- 					var a,b;
 
- 					if (e.zIndex === ZINDEX - 1)
 
- 					{
 
- 						a = e.zIndex;
 
- 						b = e.zIndex = ZINDEX++;
 
- 					}
 
- 					else
 
- 					{
 
- 						a = ZINDEX++;
 
- 						b = e.zIndex = ZINDEX++;
 
- 					}
 
- 					e.MaskLayer = $('<p class="jQ_Dialog_MaskLayer"></p>').css({
 
- 						backgroundColor	: o.color,
 
- 						opacity			: 0,
 
- 						zIndex			: a,
 
- 						height			: '100%',
 
- 						width			: '100%',
 
- 						left			: 0,
 
- 						top				: 0
 
- 					});
 
- 					$("body").append(e.MaskLayer);
 
- 					e.wrapper.css('zIndex', b);
 
- 					e._mask = 1;
 
- 					e._setTop();
 
- 				}
 
- 				if (e.zIndex < ZINDEX - 1)
 
- 				{
 
- 					e.MaskLayer.css('zIndex', ZINDEX++);
 
- 					e.wrapper.css('zIndex', ZINDEX);
 
- 					e.zIndex = ZINDEX;
 
- 					ZINDEX++;
 
- 					e._mask = 1;
 
- 					e._setTop();
 
- 				}
 
- 				if (e._closed)
 
- 				{
 
- 					e.wrapper.show();
 
- 					e._closed = 0;
 
- 				}
 
- 				e.MaskLayer.show().animate({opacity: o.opacity}, o.duration);
 
- 			}
 
- 			else if (e.MaskLayer != undefined)
 
- 			{
 
- 				e.MaskLayer.remove();
 
- 				e.MaskLayer = null;
 
- 				e._mask = 0;
 
- 			}
 
- 			return e;
 
- 		},
 
- 		//开启或关闭拖动。参数为false时为关闭,不带参数或参数值为非false时为开启
 
- 		draggable : function (v) {
 
- 			var e = this,
 
- 				w = e.wrapper,
 
- 				d = e.dom().drag;
 
- 			if (v === false)
 
- 			{
 
- 				w.unDrag();
 
- 			}
 
- 			else
 
- 			{
 
- 				w.Drag(d);
 
- 			}
 
- 			return e;
 
- 		},
 
- 		//开启或关闭大小缩放。参数为false时为关闭,不带参数或参数值为非false时为开启
 
- 		resizable : function (v) {
 
- 			var e = this,
 
- 				c = e.dom().content,
 
- 				r =  e.dom().resizer;
 
- 			if (v === false)
 
- 			{
 
- 				r.hide();
 
- 			}
 
- 			else
 
- 			{
 
- 				r.show();
 
- 				c.resize({ handler : r, wrapper : e.wrapper });
 
- 			}
 
- 			return e;
 
- 		},
 
- 		//倒计时关闭
 
- 		timeout : function (s, t) {
 
- 			var e = this,
 
- 				o = e.o.timeout,
 
- 				second, text,
 
- 				d = e.dom().foot,
 
- 				f = function () {
 
- 					if (text)
 
- 					{
 
- 						text = text.replace('s%','<b>s%</b>');
 
- 						d.addClass(CSS.TIMER).eq(1).html(text.replace('s%', second));
 
- 					}
 
- 					if(!second) e.close();
 
- 					second--;
 
- 				};
 
- 			if (typeof s === 'object' )
 
- 			{
 
- 				second = s.second || o.second;
 
- 				text = s.text || o.text;
 
- 			}
 
- 			else
 
- 			{
 
- 				second = s || o.second;
 
- 				text = t || o.text;
 
- 			}
 
- 			d.removeClass(CSS.TIMER).eq(1).empty();
 
- 			clearInterval(e.timer);
 
- 			if (second)
 
- 			{
 
- 				e.timer = setInterval(f, 1000);
 
- 				f();
 
- 			}
 
- 			return e;
 
- 		},
 
- 		//是否开启Esc键关闭
 
- 		esc : function (v) {
 
- 			this.o.esc = v;
 
- 			return this;
 
- 		},
 
- 		onLoad : function (f) {
 
- 			if (F(f)) this.o.onLoad = f;
 
- 			return this;
 
- 		},
 
- 		onClose : function (f) {
 
- 			if (F(f)) this.o.onClose = f;
 
- 			return this;
 
- 		},
 
- 		onEnter : function (f) {
 
- 			if (F(f)) this.o.onEnter = f;
 
- 			return this;
 
- 		},
 
- 		show : function () {
 
- 			this.wrapper.show();
 
- 			return this.__init();
 
- 		},
 
- 		close : function(x) {
 
- 			var e = this;
 
- 			if (e.child != null)
 
- 			{
 
- 				//忽略鼠标关闭事件
 
- 				if(typeof x === 'object')
 
- 				{
 
- 					return e;
 
- 				}
 
- 				else
 
- 				{
 
- 					//手动模式关闭-静默关闭
 
- 					x = true;
 
- 				}
 
- 			}
 
- 			if (e._closed) return e;
 
- 			//避免对话框可拖动时点击x所带来的反应
 
- 			if (typeof x === 'object' && x.type === EVENT.A) return false;
 
- 			var junior = e.junior();
 
- 			//静默关闭
 
- 			if (x === true)
 
- 			{
 
- 				//从本窗口的最终子窗口开始关闭
 
- 				var c = function (o) {
 
- 					o._close();
 
- 					if (o.hasOwnProperty('parent') && e != o) arguments.callee(o.parent);
 
- 					//从对象组中删除该实例
 
- 					DELETE(o.id);
 
- 				};
 
- 				c(junior);
 
- 				return e;
 
- 			}
 
- 			//如果关闭回调函数返回false
 
- 			if (e.o.onClose.call(e) === false) return e;
 
- 			//如果有触发器
 
- 			if (e.o.trigger)
 
- 			{
 
- 				e._close(true);		//隐藏
 
- 			}
 
- 			else
 
- 			{
 
- 				e._close();			//移除
 
- 				DELETE(e.id);		//从对象组中删除该实例
 
- 			}
 
- 			return e;
 
- 		},
 
- 		//获取当前对象的最最终子对象
 
- 		junior : function () {
 
- 			if (this.child != null) return this.child.junior();
 
- 			return this;
 
- 		},
 
- 		//创建子窗口的扩展方法
 
- 		dialog : function (o) {
 
- 			$.extend(o, {refer:this.wrapper});
 
- 			var e = this.child = $.dialog(o);
 
- 				e.parent = this;
 
- 			return e;
 
- 		},
 
- 		//左右晃动的效果
 
- 		shake : function (){
 
- 			var e = this,
 
- 				p = [4, 8, 4, 0, -4, -8, -4, 0, 2, 4, 2, 0, -2, -4, -2 , 0, 1, 2, 1, 0, -1, -2, -1, 0],
 
- 				t = null,
 
- 				f = function () {
 
- 					e.wrapper.css('marginLeft', p.shift() + 'px');
 
- 					if (p.length <= 0) {
 
- 						e.wrapper.css('marginLeft', 0);
 
- 						clearInterval(t);
 
- 					};
 
- 				};
 
- 			t = setInterval(f, 12);
 
- 			return e;
 
- 		},
 
- 		__init : function(){
 
- 			var e = this,
 
- 				o = e.o;
 
- 			e.title(o.title)
 
- 			.tab(o.tab)
 
- 			.icon(o.icon)
 
- 			.content(o.content)
 
- 			.padding(o.padding)
 
- 			.width(o.width)
 
- 			.height(o.height)
 
- 			.offset(o.offset)
 
- 			.fixed(o.fixed)
 
- 			.mask(o.mask)
 
- 			.draggable(o.draggable)
 
- 			.resizable(o.resizable)
 
- 			.timeout(o.timeout)
 
- 			.esc(o.esc)
 
- 			.onLoad(o.onLoad)
 
- 			.onEnter(o.onEnter)
 
- 			.onClose(o.onClose)
 
- 			._event();
 
- 			e._closed = 0;
 
- 			return e;
 
- 		},
 
- 		//初始化一个对话框实例
 
- 		_init : function(o) {
 
- 			var e = this,
 
- 				exists = false;
 
- 			e.o = {};
 
- 			e.wrapper = e.child = e.MaskLayer = null;
 
- 			e.id = '_dialog' + ZINDEX;
 
- 			e.dom = function () {
 
- 				var w = this.wrapper,
 
- 				d = {
 
- 					drag : w.children('thead'),
 
- 					title : w.find('.jQ_Dialog_Title span'),
 
- 					body : w.find('.jQ_Dialog_Body'),
 
- 					icon : w.find('.jQ_Dialog_Icon p'),
 
- 					content : w.find('.jQ_Dialog_Content'),
 
- 					button : w.find('.jQ_Dialog_Button td'),
 
- 					X : w.find('.jQ_Dialog_X').children(),
 
- 					resizer : w.find('.jQ_Dialog_Resizer'),
 
- 					foot : w.find('tfoot td')
 
- 				};
 
- 				return d;
 
- 			};
 
- 			$.extend(true, e.o, $.dialog.defaults, o);		//扩展默认设置的副本
 
- 			if (typeof e.o.id === 'string')						//如果设置了对话框的唯一标识且为字符
 
- 			{
 
- 				e.id = e.o.id;
 
- 				if (e.o.trigger === null) e.o.trigger = e.id;
 
- 			}
 
- 			if ($.type(e.o.trigger) === 'object' && !e.o.trigger.nodeType)
 
- 			{
 
- 				//如果是jQuery对象,将其转换为HTMLElement
 
- 				e.o.trigger = e.o.trigger[0];
 
- 			}
 
- 			//遍历所有对话框对象,通过其触发器检测对象是否已经存在
 
- 			$.each($.dialog.list, function (x, y) {
 
- 				if (y.o.trigger != null && y.o.trigger === e.o.trigger)
 
- 				{
 
- 					y.o = e.o;
 
- 					e.wrapper = y.wrapper;
 
- 					e.MaskLayer = y.MaskLayer;
 
- 					y._isReady = y._onLoadCalled = e._w = e._h = 0;
 
- 					y.show();
 
- 					if (y._mask !== 1 && y.zIndex < ZINDEX - 1)
 
- 					{
 
- 						y.wrapper.css('zIndex', ZINDEX);
 
- 						y.zIndex = ZINDEX++;
 
- 						y._setTop();
 
- 					}
 
- 					exists = true;
 
- 					return false;
 
- 				}
 
- 			});
 
- 			//如果对话框对象不存在
 
- 			if (!exists)
 
- 			{
 
- 				e.wrapper = $($.dialog.template);
 
- 				$("body").append(e.wrapper);
 
- 				//将其加入全局对话框对象
 
- 				$.dialog.list[e.id] = e;
 
- 				e.__init();
 
- 				if (e._mask !== 1)
 
- 				{
 
- 					e.wrapper.css('zIndex', ZINDEX);
 
- 					e.zIndex = ZINDEX++;
 
- 					e._setTop();
 
- 				}
 
- 			}
 
- 			return e;
 
- 		},
 
- 		_ready : function (b,z) {
 
- 			var e = this;
 
- 			if (!e._isReady)
 
- 			{
 
- 				var d = e.dom(),
 
- 					a = d.title.siblings('[data-active]'),
 
- 					c = d.content,
 
- 					t = a.data('_m');
 
- 				if (a.size() > 0)
 
- 				{
 
- 					a.removeAttr('data-active').triggerHandler(t);
 
- 					return;
 
- 				}
 
- 				c.data('c', c.html());
 
- 				e._isReady = 1;
 
- 				e.button(b);
 
- 				setTimeout(function () {
 
- 					e.offset(1);
 
- 				}, 5);
 
- 				if (!e._onLoadCalled)
 
- 				{
 
- 					setTimeout(function () {
 
- 						e.o.onLoad.call(e);
 
- 					}, 8);
 
- 					e._onLoadCalled = 1;
 
- 				}
 
- 			}
 
- 			else if (z)
 
- 			{
 
- 				e.button(b);
 
- 			}
 
- 		},
 
- 		_close : function (hide) {
 
- 			var e = this;
 
- 			e.recovery && e.recovery();
 
- 			if (hide == true)
 
- 			{
 
- 				e.wrapper.hide();
 
- 			}
 
- 			else
 
- 			{
 
- 				e.wrapper.remove();
 
- 				if (e.zIndex === ZINDEX - 1) ZINDEX--;
 
- 			}
 
- 			if (e.MaskLayer != null)
 
- 			{
 
- 				e.MaskLayer.animate({opacity: 0}, e.o.mask.duration, function(){
 
- 					if (hide == true)
 
- 					{
 
- 						$(this).hide();
 
- 					}
 
- 					else
 
- 					{
 
- 						$(this).remove();
 
- 						if (e.zIndex === ZINDEX) ZINDEX--;
 
- 						e.MaskLayer = null;
 
- 					}
 
- 				});
 
- 			}
 
- 			e._closed = 1;
 
- 			e._isReady = 0;
 
- 			e._onLoadCalled = 0;
 
- 			//如果有父窗口,将父窗口的子窗口赋值为null
 
- 			if (e.hasOwnProperty('parent')) e.parent.child = null;
 
- 			clearInterval(e.timer);
 
- 			//关闭对话框后取消绑定ESC和回车事件
 
- 			DOC.unbind(e._eventName(EVENT.C));
 
- 			WIN.unbind(e._eventName(EVENT.D, EVENT.E));
 
- 			//自动激活最顶层的对象
 
- 			var i = 0,
 
- 				o = e;
 
- 			$.each($.dialog.list, function (x, y) {
 
- 				if (e.zIndex > y.zIndex)
 
- 				{
 
- 					if (i === 0)
 
- 					{
 
- 						i = y.zIndex;
 
- 						o = y;
 
- 					}
 
- 					else if (y.zIndex > i)
 
- 					{
 
- 						i = y.zIndex;
 
- 						o = y;
 
- 					}
 
- 				}
 
- 			});
 
- 			o._setTop();
 
- 		},
 
- 		_event : function () {
 
- 			var e = this,
 
- 				a = e._eventName(EVENT.A, EVENT.B),
 
- 				c = e._eventName(EVENT.D, EVENT.E),
 
- 				b = e._eventName(EVENT.C);
 
- 			//置顶事件
 
- 			e.wrapper.unbind(EVENT.A).bind(EVENT.A, $.proxy(function () {
 
- 				if (this.child != null)
 
- 				{
 
- 					this.child.shake();
 
- 					return false;
 
- 				}
 
- 				if (ZINDEX - this.zIndex >= 2)
 
- 				{
 
- 					this.zIndex = ZINDEX;
 
- 					$.dialog.list[this.id].wrapper.css('z-index', ZINDEX);
 
- 					ZINDEX++;
 
- 					this._setTop();
 
- 				}
 
- 			}, e));
 
- 			//关闭按钮事件
 
- 			e.dom().X.unbind(a).bind(a, $.proxy(e.close, e));
 
- 			//ESC和回车事件
 
- 			DOC.unbind(b).bind(b,function(event){
 
- 				if (e.child != null) return;
 
- 				if(event.which === 27 && e.o.esc !== false && !e.wrapper.hasClass(CSS.NOTONTOP)){
 
- 					event.result !== false && e.close();
 
- 					return false;
 
- 				}
 
- 				if(event.which === 13 && !e.wrapper.hasClass(CSS.NOTONTOP))
 
- 				{
 
- 					e.o.onEnter();
 
- 					e.dom().button.children('.' + CSS.ENTCLICK).triggerHandler(EVENT.B);
 
- 					return false;
 
- 				}
 
- 			});
 
- 			WIN.unbind(c).bind(c, function () {
 
- 				e.offset(1);
 
- 			});
 
- 		},
 
- 		_showErr : function () {
 
- 			var e = this,
 
- 				s = e.o.err;
 
- 			if (e.o.showErr)
 
- 			{
 
- 				e.icon(3).padding(10).content({text : s.content}).button([{text : s.button}]);
 
- 				if (e.dom().title.siblings().size() === 0) e.title(s.title);
 
- 			}
 
- 		},
 
- 		_setTop:function () {
 
- 			var e = this;
 
- 			e.wrapper.removeClass(CSS.NOTONTOP);
 
- 			$.each($.dialog.list, function (x, y) {
 
- 				if(y.zIndex < e.zIndex) y.wrapper.addClass(CSS.NOTONTOP);
 
- 			});
 
- 		},
 
- 		_eventName : function () {
 
- 			var n = '.', r;
 
- 			for (var i = 0; i < arguments.length; i++)
 
- 			{
 
- 				if (r)
 
- 				{
 
- 					r = r + SPACE + arguments[i] + n + this.id;
 
- 				}
 
- 				else
 
- 				{
 
- 					r = arguments[i] + n + this.id;
 
- 				}
 
- 			}
 
- 			return r;
 
- 		}
 
- 	};
 
- 	$.dialog.fn._init.prototype = $.dialog.fn;
 
- 	$.fn.dialog = function (o) {
 
- 		if (!$.isPlainObject(o)) o = {};
 
- 		o.refer = o.trigger = this;
 
- 		return $.dialog(o);
 
- 	}
 
- $.dialog.template =
 
- 	'<table class="jQ_Dialog">'
 
- +		'<thead>'
 
- +			'<tr>'
 
- +				'<th class="jQ_Dialog_Header_Left"></th>'
 
- +				'<th class="jQ_Dialog_Title"><span></span></th>'
 
- +				'<th class="jQ_Dialog_X"><a href="javascript:void(0)" hidefocus="true"></a></th>'
 
- +				'<th class="jQ_Dialog_Header_Right"></th>'
 
- +			'</tr>'
 
- +		'</thead>'
 
- +		'<tbody>'
 
- +			'<tr>'
 
- +				'<td class="jQ_Dialog_Body_Left"></td>'
 
- +				'<td colspan="2" height="100%">'
 
- +					'<table class="jQ_Dialog_Body">'
 
- +						'<tr><td class="jQ_Dialog_Icon"><p></p></td><td class="jQ_Dialog_Content Loading"></td></tr>'
 
- +						'<tr class="jQ_Dialog_Button"><td colspan="2"></td></tr>'
 
- +					'</table>'
 
- +				'</td>'
 
- +				'<td class="jQ_Dialog_Body_Right"></td>'
 
- +			'</tr>'
 
- +		'</tbody>'
 
- +		'<tfoot>'
 
- +			'<tr>'
 
- +				'<td class="jQ_Dialog_Footer_Left"></td>'
 
- +				'<td class="jQ_Dialog_Footer" colspan="2"></td>'
 
- +				'<td class="jQ_Dialog_Footer_Right"><p class="jQ_Dialog_Resizer"></p></td>'
 
- +			'</tr>'
 
- +		'</tfoot>'
 
- +	'</table>';
 
- })($);
 
 
  |