jquery.window.js 7.7 KB
/**
 * jQuery EasyUI 1.5
 * 
 * Copyright (c) 2009-2016 www.jeasyui.com. All rights reserved.
 *
 * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
 * To use it on other terms please contact us: info@jeasyui.com
 *
 */
(function($){
function _1(_2,_3){
var _4=$.data(_2,"window");
if(_3){
if(_3.left!=null){
_4.options.left=_3.left;
}
if(_3.top!=null){
_4.options.top=_3.top;
}
}
$(_2).panel("move",_4.options);
if(_4.shadow){
_4.shadow.css({left:_4.options.left,top:_4.options.top});
}
};
function _5(_6,_7){
var _8=$.data(_6,"window").options;
var pp=$(_6).window("panel");
var _9=pp._outerWidth();
if(_8.inline){
var _a=pp.parent();
_8.left=Math.ceil((_a.width()-_9)/2+_a.scrollLeft());
}else{
_8.left=Math.ceil(($(window)._outerWidth()-_9)/2+$(document).scrollLeft());
}
if(_7){
_1(_6);
}
};
function _b(_c,_d){
var _e=$.data(_c,"window").options;
var pp=$(_c).window("panel");
var _f=pp._outerHeight();
if(_e.inline){
var _10=pp.parent();
_e.top=Math.ceil((_10.height()-_f)/2+_10.scrollTop());
}else{
_e.top=Math.ceil(($(window)._outerHeight()-_f)/2+$(document).scrollTop());
}
if(_d){
_1(_c);
}
};
function _11(_12){
var _13=$.data(_12,"window");
var _14=_13.options;
var win=$(_12).panel($.extend({},_13.options,{border:false,doSize:true,closed:true,cls:"window "+(!_14.border?"window-thinborder window-noborder ":(_14.border=="thin"?"window-thinborder ":""))+(_14.cls||""),headerCls:"window-header "+(_14.headerCls||""),bodyCls:"window-body "+(_14.noheader?"window-body-noheader ":" ")+(_14.bodyCls||""),onBeforeDestroy:function(){
if(_14.onBeforeDestroy.call(_12)==false){
return false;
}
if(_13.shadow){
_13.shadow.remove();
}
if(_13.mask){
_13.mask.remove();
}
},onClose:function(){
if(_13.shadow){
_13.shadow.hide();
}
if(_13.mask){
_13.mask.hide();
}
_14.onClose.call(_12);
},onOpen:function(){
if(_13.mask){
_13.mask.css($.extend({display:"block",zIndex:$.fn.window.defaults.zIndex++},$.fn.window.getMaskSize(_12)));
}
if(_13.shadow){
_13.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_14.left,top:_14.top,width:_13.window._outerWidth(),height:_13.window._outerHeight()});
}
_13.window.css("z-index",$.fn.window.defaults.zIndex++);
_14.onOpen.call(_12);
},onResize:function(_15,_16){
var _17=$(this).panel("options");
$.extend(_14,{width:_17.width,height:_17.height,left:_17.left,top:_17.top});
if(_13.shadow){
_13.shadow.css({left:_14.left,top:_14.top,width:_13.window._outerWidth(),height:_13.window._outerHeight()});
}
_14.onResize.call(_12,_15,_16);
},onMinimize:function(){
if(_13.shadow){
_13.shadow.hide();
}
if(_13.mask){
_13.mask.hide();
}
_13.options.onMinimize.call(_12);
},onBeforeCollapse:function(){
if(_14.onBeforeCollapse.call(_12)==false){
return false;
}
if(_13.shadow){
_13.shadow.hide();
}
},onExpand:function(){
if(_13.shadow){
_13.shadow.show();
}
_14.onExpand.call(_12);
}}));
_13.window=win.panel("panel");
if(_13.mask){
_13.mask.remove();
}
if(_14.modal){
_13.mask=$("<div class=\"window-mask\" style=\"display:none\"></div>").insertAfter(_13.window);
}
if(_13.shadow){
_13.shadow.remove();
}
if(_14.shadow){
_13.shadow=$("<div class=\"window-shadow\" style=\"display:none\"></div>").insertAfter(_13.window);
}
var _18=_14.closed;
if(_14.left==null){
_5(_12);
}
if(_14.top==null){
_b(_12);
}
_1(_12);
if(!_18){
win.window("open");
}
};
function _19(_1a,top,_1b,_1c){
var _1d=this;
var _1e=$.data(_1d,"window");
var _1f=_1e.options;
if(!_1f.constrain){
return {};
}
if($.isFunction(_1f.constrain)){
return _1f.constrain.call(_1d,_1a,top,_1b,_1c);
}
var win=$(_1d).window("window");
var _20=_1f.inline?win.parent():$(window);
if(_1a<0){
_1a=0;
}
if(top<_20.scrollTop()){
top=_20.scrollTop();
}
if(_1a+_1b>_20.width()){
if(_1b==win.outerWidth()){
_1a=_20.width()-_1b;
}else{
_1b=_20.width()-_1a;
}
}
if(top-_20.scrollTop()+_1c>_20.height()){
if(_1c==win.outerHeight()){
top=_20.height()-_1c+_20.scrollTop();
}else{
_1c=_20.height()-top+_20.scrollTop();
}
}
return {left:_1a,top:top,width:_1b,height:_1c};
};
function _21(_22){
var _23=$.data(_22,"window");
_23.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_23.options.draggable==false,onBeforeDrag:function(e){
if(_23.mask){
_23.mask.css("z-index",$.fn.window.defaults.zIndex++);
}
if(_23.shadow){
_23.shadow.css("z-index",$.fn.window.defaults.zIndex++);
}
_23.window.css("z-index",$.fn.window.defaults.zIndex++);
},onStartDrag:function(e){
_24(e);
},onDrag:function(e){
_25(e);
return false;
},onStopDrag:function(e){
_26(e);
}});
_23.window.resizable({disabled:_23.options.resizable==false,onStartResize:function(e){
_24(e);
},onResize:function(e){
_25(e);
return false;
},onStopResize:function(e){
_26(e);
}});
function _24(e){
if(_23.pmask){
_23.pmask.remove();
}
_23.pmask=$("<div class=\"window-proxy-mask\"></div>").insertAfter(_23.window);
_23.pmask.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_23.window._outerWidth(),height:_23.window._outerHeight()});
if(_23.proxy){
_23.proxy.remove();
}
_23.proxy=$("<div class=\"window-proxy\"></div>").insertAfter(_23.window);
_23.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top});
_23.proxy._outerWidth(e.data.width)._outerHeight(e.data.height);
_23.proxy.hide();
setTimeout(function(){
if(_23.pmask){
_23.pmask.show();
}
if(_23.proxy){
_23.proxy.show();
}
},500);
};
function _25(e){
$.extend(e.data,_19.call(_22,e.data.left,e.data.top,e.data.width,e.data.height));
_23.pmask.show();
_23.proxy.css({display:"block",left:e.data.left,top:e.data.top});
_23.proxy._outerWidth(e.data.width);
_23.proxy._outerHeight(e.data.height);
};
function _26(e){
$.extend(e.data,_19.call(_22,e.data.left,e.data.top,e.data.width+0.1,e.data.height+0.1));
$(_22).window("resize",e.data);
_23.pmask.remove();
_23.pmask=null;
_23.proxy.remove();
_23.proxy=null;
};
};
$(function(){
if(!$._positionFixed){
$(window).resize(function(){
$("body>div.window-mask:visible").css({width:"",height:""});
setTimeout(function(){
$("body>div.window-mask:visible").css($.fn.window.getMaskSize());
},50);
});
}
});
$.fn.window=function(_27,_28){
if(typeof _27=="string"){
var _29=$.fn.window.methods[_27];
if(_29){
return _29(this,_28);
}else{
return this.panel(_27,_28);
}
}
_27=_27||{};
return this.each(function(){
var _2a=$.data(this,"window");
if(_2a){
$.extend(_2a.options,_27);
}else{
_2a=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_27)});
if(!_2a.options.inline){
document.body.appendChild(this);
}
}
_11(this);
_21(this);
});
};
$.fn.window.methods={options:function(jq){
var _2b=jq.panel("options");
var _2c=$.data(jq[0],"window").options;
return $.extend(_2c,{closed:_2b.closed,collapsed:_2b.collapsed,minimized:_2b.minimized,maximized:_2b.maximized});
},window:function(jq){
return $.data(jq[0],"window").window;
},move:function(jq,_2d){
return jq.each(function(){
_1(this,_2d);
});
},hcenter:function(jq){
return jq.each(function(){
_5(this,true);
});
},vcenter:function(jq){
return jq.each(function(){
_b(this,true);
});
},center:function(jq){
return jq.each(function(){
_5(this);
_b(this);
_1(this);
});
}};
$.fn.window.getMaskSize=function(_2e){
var _2f=$(_2e).data("window");
if(_2f&&_2f.options.inline){
return {};
}else{
if($._positionFixed){
return {position:"fixed"};
}else{
return {width:$(document).width(),height:$(document).height()};
}
}
};
$.fn.window.parseOptions=function(_30){
return $.extend({},$.fn.panel.parseOptions(_30),$.parser.parseOptions(_30,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}]));
};
$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,border:true,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false,constrain:false});
})(jQuery);