/** * jQuery ligerUI 1.1.9 * * http://ligerui.com * * Author daomi 2012 [ gd_star@163.com ] * */ (function ($) { var l = $.ligerui; l.windowCount = 0; $.ligerWindow = function (options) { return l.run.call(null, "ligerWindow", arguments, { isStatic: true }); }; $.ligerWindow.show = function (p) { return $.ligerWindow(p); }; $.ligerDefaults.Window = { showClose: true, showMax: true, showToggle: true, showMin: true, title: 'window', load: false, onLoaded: null, modal: false //是否模态窗口 }; $.ligerMethos.Window = {}; l.controls.Window = function (options) { l.controls.Window.base.constructor.call(this, null, options); }; l.controls.Window.ligerExtend(l.core.Win, { __getType: function () { return 'Window'; }, __idPrev: function () { return 'Window'; }, _extendMethods: function () { return $.ligerMethos.Window; }, _render: function () { var g = this, p = this.options; g.window = $('
'); g.element = g.window[0]; g.window.content = $(".l-window-content", g.window); g.window.header = $(".l-window-header", g.window); g.window.buttons = $(".l-window-header-buttons:first", g.window); if (p.url) { if (p.load) { g.window.content.load(p.url, function () { g.trigger('loaded'); }); g.window.content.addClass("l-window-content-scroll"); } else { var iframe = $(""); var framename = "ligeruiwindow" + l.windowCount++; if (p.name) framename = p.name; iframe.attr("name", framename).attr("id", framename); p.framename = framename; iframe.appendTo(g.window.content); g.iframe = iframe; } } else if (p.content) { var content = $("
" + p.content + "
"); content.appendTo(g.window.content); } else if (p.target) { g.window.content.append(p.target); p.target.show(); } this.mask(); g.active(); $('body').append(g.window); g.set({ width: p.width, height: p.height }); //位置初始化 var left = 0; var top = 0; if (p.left != null) left = p.left; else p.left = left = 0.5 * ($(window).width() - g.window.width()); if (p.top != null) top = p.top; else p.top = top = 0.5 * ($(window).height() - g.window.height()) + $(window).scrollTop() - 10; if (left < 0) p.left = left = 0; if (top < 0) p.top = top = 0; g.set(p); p.framename && $(">iframe", g.window.content).attr('name', p.framename); if (!p.showToggle) $(".l-window-toggle", g.window).remove(); if (!p.showMax) $(".l-window-max", g.window).remove(); if (!p.showClose) $(".l-window-close", g.window).remove(); g._saveStatus(); //拖动支持 if ($.fn.ligerDrag) { g.draggable = g.window.drag = g.window.ligerDrag({ handler: '.l-window-header-inner', onStartDrag: function () { g.active(); }, onStopDrag: function () { g._saveStatus(); }, animate: false }); } //改变大小支持 if ($.fn.ligerResizable) { g.resizeable = g.window.resizable = g.window.ligerResizable({ onStartResize: function () { g.active(); $(".l-window-max", g.window).removeClass("l-window-regain"); }, onStopResize: function (current, e) { var top = 0; var left = 0; if (!isNaN(parseInt(g.window.css('top')))) top = parseInt(g.window.css('top')); if (!isNaN(parseInt(g.window.css('left')))) left = parseInt(g.window.css('left')); if (current.diffTop) g.window.css({ top: top + current.diffTop }); if (current.diffLeft) g.window.css({ left: left + current.diffLeft }); if (current.newWidth) g.window.width(current.newWidth); if (current.newHeight) g.window.content.height(current.newHeight - 28); g._saveStatus(); return false; } }); g.window.append("
"); } //设置事件 $(".l-window-toggle", g.window).click(function () { if ($(this).hasClass("l-window-toggle-close")) { g.collapsed = false; $(this).removeClass("l-window-toggle-close"); } else { g.collapsed = true; $(this).addClass("l-window-toggle-close"); } g.window.content.slideToggle(); }).hover(function () { if (g.window.drag) g.window.drag.set('disabled', true); }, function () { if (g.window.drag) g.window.drag.set('disabled', false); }); $(".l-window-close", g.window).click(function () { if (g.trigger('close') == false) return false; g.window.hide(); l.win.removeTask(g); }).hover(function () { if (g.window.drag) g.window.drag.set('disabled', true); }, function () { if (g.window.drag) g.window.drag.set('disabled', false); }); $(".l-window-max", g.window).click(function () { if ($(this).hasClass("l-window-regain")) { if (g.trigger('regain') == false) return false; g.window.width(g._width).css({ left: g._left, top: g._top }); g.window.content.height(g._height - 28); $(this).removeClass("l-window-regain"); } else { if (g.trigger('max') == false) return false; g.window.width($(window).width() - 2).css({ left: 0, top: 0 }); g.window.content.height($(window).height() - 28).show(); $(this).addClass("l-window-regain"); } }); }, _saveStatus: function () { var g = this; g._width = g.window.width(); g._height = g.window.height(); var top = 0; var left = 0; if (!isNaN(parseInt(g.window.css('top')))) top = parseInt(g.window.css('top')); if (!isNaN(parseInt(g.window.css('left')))) left = parseInt(g.window.css('left')); g._top = top; g._left = left; }, min: function () { this.window.hide(); this.minimize = true; this.actived = false; }, _setShowMin: function (value) { var g = this, p = this.options; if (value) { if (!g.winmin) { g.winmin = $('
').prependTo(g.window.buttons) .click(function () { g.min(); }); l.win.addTask(g); } } else if (g.winmin) { g.winmin.remove(); g.winmin = null; } }, _setLeft: function (value) { if (value != null) this.window.css({ left: value }); }, _setTop: function (value) { if (value != null) this.window.css({ top: value }); }, _setWidth: function (value) { if (value > 0) this.window.width(value); }, _setHeight: function (value) { if (value > 28) this.window.content.height(value - 28); }, _setTitle: function (value) { if (value) $(".l-window-header-inner", this.window.header).html(value); }, _setUrl: function (url) { var g = this, p = this.options; p.url = url; if (p.load) { g.window.content.html("").load(p.url, function () { if (g.trigger('loaded') == false) return false; }); } else if (g.jiframe) { g.jiframe.attr("src", p.url); } }, hide: function () { var g = this, p = this.options; this.unmask(); this.window.hide(); }, show: function () { var g = this, p = this.options; this.mask(); this.window.show(); }, remove: function () { var g = this, p = this.options; this.unmask(); this.window.remove(); }, active: function () { var g = this, p = this.options; if (g.minimize) { var width = g._width, height = g._height, left = g._left, top = g._top; if (g.maximum) { width = $(window).width(); height = $(window).height(); left = top = 0; if (l.win.taskbar) { height -= l.win.taskbar.outerHeight(); if (l.win.top) top += l.win.taskbar.outerHeight(); } } g.set({ width: width, height: height, left: left, top: top }); } g.actived = true; g.minimize = false; l.win.setFront(g); g.show(); l.win.setFront(this); }, setUrl: function (url) { return _setUrl(url); } }); })(jQuery);