/**
|
* @author Roger Wu
|
* reference:dwz.drag.js, dwz.dialogDrag.js, dwz.resize.js, dwz.taskBar.js
|
*/
|
(function($){
|
$.pdialog = {
|
_op:{height:300, width:580, minH:40, minW:50, total:20, max:false, mask:false, resizable:true, drawable:true, maxable:true,minable:true,fresh:true},
|
_current:null,
|
_zIndex:42,
|
getCurrent:function(){
|
return this._current;
|
},
|
reload:function(url, options){
|
var op = $.extend({data:{}, dialogId:"", callback:null}, options);
|
var dialog = (op.dialogId && $("body").data(op.dialogId)) || this._current;
|
if (dialog){
|
var jDContent = dialog.find(".dialogContent");
|
jDContent.ajaxUrl({
|
type:"POST", url:url, data:op.data, callback:function(response){
|
jDContent.find("[layoutH]").layoutH(jDContent);
|
$(".pageContent", dialog).width($(dialog).width()-14);
|
$(":button.close", dialog).click(function(){
|
$.pdialog.close(dialog);
|
return false;
|
});
|
if ($.isFunction(op.callback)) op.callback(response);
|
}
|
});
|
}
|
},
|
//打开一个层
|
open:function(url, dlgid, title, options) {
|
var op = $.extend({},$.pdialog._op, options);
|
var dialog = $("body").data(dlgid);
|
//重复打开一个层
|
if(dialog) {
|
if(dialog.is(":hidden")) {
|
dialog.show();
|
}
|
if(op.fresh || url != $(dialog).data("url")){
|
dialog.data("url",url);
|
dialog.find(".dialogHeader").find("h1").html(title);
|
this.switchDialog(dialog);
|
var jDContent = dialog.find(".dialogContent");
|
jDContent.loadUrl(url, {}, function(){
|
jDContent.find("[layoutH]").layoutH(jDContent);
|
$(".pageContent", dialog).width($(dialog).width()-14);
|
$("button.close").click(function(){
|
$.pdialog.close(dialog);
|
return false;
|
});
|
});
|
}
|
|
} else { //打开一个全新的层
|
|
$("body").append(DWZ.frag["dialogFrag"]);
|
dialog = $(">.dialog:last-child", "body");
|
dialog.data("id",dlgid);
|
dialog.data("url",url);
|
if(options.close) dialog.data("close",options.close);
|
if(options.param) dialog.data("param",options.param);
|
($.fn.bgiframe && dialog.bgiframe());
|
|
dialog.find(".dialogHeader").find("h1").html(title);
|
$(dialog).css("zIndex", ($.pdialog._zIndex+=2));
|
$("div.shadow").css("zIndex", $.pdialog._zIndex - 3).show();
|
$.pdialog._init(dialog, options);
|
$(dialog).click(function(){
|
$.pdialog.switchDialog(dialog);
|
});
|
|
if(op.resizable)
|
dialog.jresize();
|
if(op.drawable)
|
dialog.dialogDrag();
|
$("a.close", dialog).click(function(event){
|
$.pdialog.close(dialog);
|
return false;
|
});
|
if (op.maxable) {
|
$("a.maximize", dialog).show().click(function(event){
|
$.pdialog.switchDialog(dialog);
|
$.pdialog.maxsize(dialog);
|
dialog.jresize("destroy").dialogDrag("destroy");
|
return false;
|
});
|
} else {
|
$("a.maximize", dialog).hide();
|
}
|
$("a.restore", dialog).click(function(event){
|
$.pdialog.restore(dialog);
|
dialog.jresize().dialogDrag();
|
return false;
|
});
|
if (op.minable) {
|
$("a.minimize", dialog).show().click(function(event){
|
$.pdialog.minimize(dialog);
|
return false;
|
});
|
} else {
|
$("a.minimize", dialog).hide();
|
}
|
$("div.dialogHeader a", dialog).mousedown(function(){
|
return false;
|
});
|
$("div.dialogHeader", dialog).dblclick(function(){
|
if($("a.restore",dialog).is(":hidden"))
|
$("a.maximize",dialog).trigger("click");
|
else
|
$("a.restore",dialog).trigger("click");
|
});
|
if(op.max) {
|
// $.pdialog.switchDialog(dialog);
|
$.pdialog.maxsize(dialog);
|
dialog.jresize("destroy").dialogDrag("destroy");
|
}
|
$("body").data(dlgid, dialog);
|
$.pdialog._current = dialog;
|
$.pdialog.attachShadow(dialog);
|
//load data
|
var jDContent = $(".dialogContent",dialog);
|
jDContent.loadUrl(url, {}, function(){
|
jDContent.find("[layoutH]").layoutH(jDContent);
|
$(".pageContent", dialog).width($(dialog).width()-14);
|
$("button.close").click(function(){
|
$.pdialog.close(dialog);
|
return false;
|
});
|
});
|
}
|
if (op.mask) {
|
$(dialog).css("zIndex", 1000);
|
$("a.minimize",dialog).hide();
|
$(dialog).data("mask", true);
|
$("#dialogBackground").show();
|
}else {
|
//add a task to task bar
|
if(op.minable) $.taskBar.addDialog(dlgid,title);
|
}
|
},
|
/**
|
* 切换当前层
|
* @param {Object} dialog
|
*/
|
switchDialog:function(dialog) {
|
var index = $(dialog).css("zIndex");
|
$.pdialog.attachShadow(dialog);
|
if($.pdialog._current) {
|
var cindex = $($.pdialog._current).css("zIndex");
|
$($.pdialog._current).css("zIndex", index);
|
$(dialog).css("zIndex", cindex);
|
$("div.shadow").css("zIndex", cindex - 1);
|
$.pdialog._current = dialog;
|
}
|
$.taskBar.switchTask(dialog.data("id"));
|
},
|
/**
|
* 给当前层附上阴隐层
|
* @param {Object} dialog
|
*/
|
attachShadow:function(dialog) {
|
var shadow = $("div.shadow");
|
if(shadow.is(":hidden")) shadow.show();
|
shadow.css({
|
top: parseInt($(dialog)[0].style.top) - 2,
|
left: parseInt($(dialog)[0].style.left) - 4,
|
height: parseInt($(dialog).height()) + 8,
|
width: parseInt($(dialog).width()) + 8,
|
zIndex:parseInt($(dialog).css("zIndex")) - 1
|
});
|
$(".shadow_c", shadow).children().andSelf().each(function(){
|
$(this).css("height", $(dialog).outerHeight() - 4);
|
});
|
},
|
_init:function(dialog, options) {
|
var op = $.extend({}, this._op, options);
|
var height = op.height>op.minH?op.height:op.minH;
|
var width = op.width>op.minW?op.width:op.minW;
|
if(isNaN(dialog.height()) || dialog.height() < height){
|
$(dialog).height(height+"px");
|
$(".dialogContent",dialog).height(height - $(".dialogHeader", dialog).outerHeight() - $(".dialogFooter", dialog).outerHeight() - 6);
|
}
|
if(isNaN(dialog.css("width")) || dialog.width() < width) {
|
$(dialog).width(width+"px");
|
}
|
|
var iTop = ($(window).height()-dialog.height())/2;
|
dialog.css({
|
left: ($(window).width()-dialog.width())/2,
|
top: iTop > 0 ? iTop : 0
|
});
|
},
|
/**
|
* 初始化半透明层
|
* @param {Object} resizable
|
* @param {Object} dialog
|
* @param {Object} target
|
*/
|
initResize:function(resizable, dialog,target) {
|
$("body").css("cursor", target + "-resize");
|
resizable.css({
|
top: $(dialog).css("top"),
|
left: $(dialog).css("left"),
|
height:$(dialog).css("height"),
|
width:$(dialog).css("width")
|
});
|
resizable.show();
|
},
|
/**
|
* 改变阴隐层
|
* @param {Object} target
|
* @param {Object} options
|
*/
|
repaint:function(target,options){
|
var shadow = $("div.shadow");
|
if(target != "w" && target != "e") {
|
shadow.css("height", shadow.outerHeight() + options.tmove);
|
$(".shadow_c", shadow).children().andSelf().each(function(){
|
$(this).css("height", $(this).outerHeight() + options.tmove);
|
});
|
}
|
if(target == "n" || target =="nw" || target == "ne") {
|
shadow.css("top", options.otop - 2);
|
}
|
if(options.owidth && (target != "n" || target != "s")) {
|
shadow.css("width", options.owidth + 8);
|
}
|
if(target.indexOf("w") >= 0) {
|
shadow.css("left", options.oleft - 4);
|
}
|
},
|
/**
|
* 改变左右拖动层的高度
|
* @param {Object} target
|
* @param {Object} tmove
|
* @param {Object} dialog
|
*/
|
resizeTool:function(target, tmove, dialog) {
|
$("div[class^='resizable']", dialog).filter(function(){
|
return $(this).attr("tar") == 'w' || $(this).attr("tar") == 'e';
|
}).each(function(){
|
$(this).css("height", $(this).outerHeight() + tmove);
|
});
|
},
|
/**
|
* 改变原始层的大小
|
* @param {Object} obj
|
* @param {Object} dialog
|
* @param {Object} target
|
*/
|
resizeDialog:function(obj, dialog, target) {
|
var oleft = parseInt(obj.style.left);
|
var otop = parseInt(obj.style.top);
|
var height = parseInt(obj.style.height);
|
var width = parseInt(obj.style.width);
|
if(target == "n" || target == "nw") {
|
tmove = parseInt($(dialog).css("top")) - otop;
|
} else {
|
tmove = height - parseInt($(dialog).css("height"));
|
}
|
$(dialog).css({left:oleft,width:width,top:otop,height:height});
|
$(".dialogContent", dialog).css("width", (width-12) + "px");
|
$(".pageContent", dialog).css("width", (width-14) + "px");
|
if (target != "w" && target != "e") {
|
var content = $(".dialogContent", dialog);
|
content.css({height:height - $(".dialogHeader", dialog).outerHeight() - $(".dialogFooter", dialog).outerHeight() - 6});
|
content.find("[layoutH]").layoutH(content);
|
$.pdialog.resizeTool(target, tmove, dialog);
|
}
|
$.pdialog.repaint(target, {oleft:oleft,otop: otop,tmove: tmove,owidth:width});
|
|
$(window).trigger(DWZ.eventType.resizeGrid);
|
},
|
close:function(dialog) {
|
if(typeof dialog == 'string') dialog = $("body").data(dialog);
|
var close = dialog.data("close");
|
var go = true;
|
if(close && $.isFunction(close)) {
|
var param = dialog.data("param");
|
if(param && param != ""){
|
param = DWZ.jsonEval(param);
|
go = close(param);
|
} else {
|
go = close();
|
}
|
if(!go) return;
|
}
|
|
$(dialog).hide();
|
$("div.shadow").hide();
|
if($(dialog).data("mask")){
|
$("#dialogBackground").hide();
|
} else{
|
if ($(dialog).data("id")) $.taskBar.closeDialog($(dialog).data("id"));
|
}
|
$("body").removeData($(dialog).data("id"));
|
$(dialog).trigger(DWZ.eventType.pageClear).remove();
|
},
|
closeCurrent:function(){
|
this.close($.pdialog._current);
|
},
|
checkTimeout:function(){
|
var $conetnt = $(".dialogContent", $.pdialog._current);
|
var json = DWZ.jsonEval($conetnt.html());
|
if (json && json.statusCode == DWZ.statusCode.timeout) this.closeCurrent();
|
},
|
maxsize:function(dialog) {
|
$(dialog).data("original",{
|
top:$(dialog).css("top"),
|
left:$(dialog).css("left"),
|
width:$(dialog).css("width"),
|
height:$(dialog).css("height")
|
});
|
$("a.maximize",dialog).hide();
|
$("a.restore",dialog).show();
|
var iContentW = $(window).width();
|
var iContentH = $(window).height() - 34;
|
$(dialog).css({top:"0px",left:"0px",width:iContentW+"px",height:iContentH+"px"});
|
$.pdialog._resizeContent(dialog,iContentW,iContentH);
|
},
|
restore:function(dialog) {
|
var original = $(dialog).data("original");
|
var dwidth = parseInt(original.width);
|
var dheight = parseInt(original.height);
|
$(dialog).css({
|
top:original.top,
|
left:original.left,
|
width:dwidth,
|
height:dheight
|
});
|
$.pdialog._resizeContent(dialog,dwidth,dheight);
|
$("a.maximize",dialog).show();
|
$("a.restore",dialog).hide();
|
$.pdialog.attachShadow(dialog);
|
},
|
minimize:function(dialog){
|
$(dialog).hide();
|
$("div.shadow").hide();
|
var task = $.taskBar.getTask($(dialog).data("id"));
|
$(".resizable").css({
|
top: $(dialog).css("top"),
|
left: $(dialog).css("left"),
|
height:$(dialog).css("height"),
|
width:$(dialog).css("width")
|
}).show().animate({top:$(window).height()-60,left:task.position().left,width:task.outerWidth(),height:task.outerHeight()},250,function(){
|
$(this).hide();
|
$.taskBar.inactive($(dialog).data("id"));
|
});
|
},
|
_resizeContent:function(dialog,width,height) {
|
var content = $(".dialogContent", dialog);
|
content.css({width:(width-12) + "px",height:height - $(".dialogHeader", dialog).outerHeight() - $(".dialogFooter", dialog).outerHeight() - 6});
|
content.find("[layoutH]").layoutH(content);
|
$(".pageContent", dialog).css("width", (width-14) + "px");
|
|
$(window).trigger(DWZ.eventType.resizeGrid);
|
}
|
};
|
})(jQuery);
|