You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ocr/htmlweb/static/plugins/fullavatareditor/scripts/jQuery.dialog.js

1160 lines
27 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//------------------------------
// 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>';
})($);