fwwindow.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701
  1. (function($){
  2. function removeNode(node){
  3. node.each(function(){
  4. $(this).remove();
  5. if ($.browser.msie){
  6. this.outerHTML = '';
  7. }
  8. });
  9. }
  10. function setSize(target, param){
  11. var opts = $.data(target, 'fwwindow').options;
  12. var panel = $.data(target, 'fwwindow').fwpanel;
  13. var pheader = panel.find('>div.panel-header');
  14. var pbody = panel.find('>div.panel-body');
  15. if (param){
  16. if (param.width) opts.width = param.width;
  17. if (param.height) opts.height = param.height;
  18. if (param.left != null) opts.left = param.left;
  19. if (param.top != null) opts.top = param.top;
  20. }
  21. if (opts.fit == true){
  22. var p = panel.parent();
  23. if(p.attr("tagName")=="FORM"){
  24. var pp = p.parent();
  25. opts.width = pp.width()-20;
  26. opts.height = pp.height();
  27. }else{
  28. opts.width = p.width()-20;
  29. opts.height = p.height();
  30. }
  31. }
  32. panel.css({
  33. left: opts.left,
  34. top: opts.top
  35. });
  36. panel.css(opts.style);
  37. panel.addClass(opts.cls);
  38. pheader.addClass(opts.headerCls);
  39. pbody.addClass(opts.bodyCls);
  40. if (!isNaN(opts.width)){
  41. if ($.boxModel == true){
  42. panel.width(opts.width - (panel.outerWidth() - panel.width()));
  43. pheader.width(panel.width() - (pheader.outerWidth() - pheader.width()));
  44. pbody.width(panel.width() - (pbody.outerWidth() - pbody.width()));
  45. } else {
  46. panel.width(opts.width);
  47. pheader.width(panel.width());
  48. pbody.width(panel.width());
  49. }
  50. } else {
  51. panel.width('auto');
  52. pbody.width('auto');
  53. }
  54. if (!isNaN(opts.height)){
  55. if ($.boxModel == true){
  56. panel.height(opts.height - (panel.outerHeight() - panel.height()));
  57. pbody.height(panel.height() - pheader.outerHeight() - (pbody.outerHeight() - pbody.height()));
  58. } else {
  59. panel.height(opts.height);
  60. pbody.height(panel.height() - pheader.outerHeight());
  61. }
  62. } else {
  63. pbody.height('auto');
  64. }
  65. panel.css('height', null);
  66. FWresizeObject(target);
  67. //panel.find('>div.panel-body>div').triggerHandler('_resize');
  68. }
  69. /**
  70. * create and initialize window, the window is created based on panel component
  71. */
  72. function init(target, options){
  73. var state = $.data(target, 'fwwindow');
  74. var opts;
  75. if (state){
  76. opts = $.extend(state.opts, options);
  77. } else {
  78. var t = $(target);
  79. opts = $.extend({}, $.fn.fwwindow.defaults, {
  80. title: t.attr('title'),
  81. collapsible: (t.attr('collapsible') ? t.attr('collapsible') == 'true' : undefined),
  82. minimizable: (t.attr('minimizable') ? t.attr('minimizable') == 'true' : undefined),
  83. maximizable: (t.attr('maximizable') ? t.attr('maximizable') == 'true' : undefined),
  84. closable: (t.attr('closable') ? t.attr('closable') == 'true' : undefined),
  85. closed: (t.attr('closed') ? t.attr('closed') == 'true' : undefined),
  86. shadow: (t.attr('shadow') ? t.attr('shadow') == 'true' : undefined),
  87. modal: (t.attr('modal') ? t.attr('modal') == 'true' : undefined),
  88. width: (parseInt(t.css('width')) || undefined),
  89. height: (parseInt(t.css('height')) || undefined),
  90. // left: (parseInt(t.css('left')) || undefined),
  91. // top: (parseInt(t.css('top')) || undefined),
  92. iconCls: t.attr('icon'),
  93. cls: 'fwwindow',
  94. headerCls: 'fwwindow-header',
  95. bodyCls: 'fwwindow-body',
  96. href: t.attr('href'),
  97. cache: (t.attr('cache') ? t.attr('cache') == 'true' : undefined),
  98. fit: (t.attr('fit') ? t.attr('fit') == 'true' : undefined),
  99. border: (t.attr('border') ? t.attr('border') == 'true' : undefined),
  100. noheader: (t.attr('noheader') ? t.attr('noheader') == 'true' : undefined),
  101. collapsed: (t.attr('collapsed') ? t.attr('collapsed') == 'true' : undefined),
  102. minimized: (t.attr('minimized') ? t.attr('minimized') == 'true' : undefined),
  103. maximized: (t.attr('maximized') ? t.attr('maximized') == 'true' : undefined)
  104. }, options);
  105. $(target).attr('title', '');
  106. state = $.data(target, 'fwwindow', {options:opts});
  107. };
  108. var panel = $(target).addClass('panel-body').wrap('<div class="panel"></div>').parent();
  109. panel.bind('_resize', function(){
  110. if (opts.fit == true){
  111. setSize(target);
  112. }
  113. return false;
  114. });
  115. panel.hide();
  116. state.options = opts;
  117. state.fwpanel = panel;
  118. addHeader(target);
  119. setBorder(target);
  120. setSize(target);
  121. // create mask
  122. if (state.mask) state.mask.remove();
  123. if (opts.modal == true){
  124. state.mask = $('<div class="fwwindow-mask"></div>').appendTo('body');
  125. state.mask.css({
  126. //zIndex: $.fn.fwwindow.defaults.zIndex--,
  127. width: getPageArea().width,
  128. height: getPageArea().height,
  129. display: 'none'
  130. });
  131. }
  132. // create shadow
  133. if (state.shadow) state.shadow.remove();
  134. if (opts.shadow == true){
  135. state.shadow = $('<div class="fwwindow-shadow"></div>').insertAfter(state.fwpanel);
  136. state.shadow.css({
  137. display: 'none'
  138. });
  139. }
  140. // if require center the fwwindow
  141. initPostion(target);
  142. movePanel(target);
  143. if (state.options.closed == false){
  144. openPanel(target); // open the fwwindow
  145. }
  146. }
  147. function initPostion(target){
  148. var state = $.data(target, 'fwwindow');
  149. //if (state.options.left == null){
  150. var width = state.options.width;
  151. if (isNaN(width)){
  152. width = state.fwpanel.outerWidth();
  153. }
  154. state.options.left = ($(window).width() - width) / 2 + $(document).scrollLeft();
  155. // }
  156. // if (state.options.top == null){
  157. var height = state.options.height;
  158. if (isNaN(height)){
  159. height = state.fwpanel.outerHeight();
  160. }
  161. state.options.top = ($(window).height() - height) / 2 + $(document).scrollTop();
  162. // }
  163. }
  164. function addHeader(target){
  165. var opts = $.data(target, 'fwwindow').options;
  166. var panel = $.data(target, 'fwwindow').fwpanel;
  167. removeNode(panel.find('>div.panel-header'));
  168. if (opts.title && !opts.noheader){
  169. var header = $('<div class="panel-header"><div class="panel-title">'+opts.title+'</div></div>').prependTo(panel);
  170. if (opts.iconCls){
  171. header.find('.panel-title').addClass('panel-with-icon');
  172. $('<div class="panel-icon"></div>').addClass(opts.iconCls).appendTo(header);
  173. }
  174. var tool = $('<div class="panel-tool"></div>').appendTo(header);
  175. if (opts.closable){
  176. $('<div class="panel-tool-close"></div>').appendTo(tool).bind('click', onClose);
  177. }
  178. if (opts.maximizable){
  179. $('<div class="panel-tool-max"></div>').appendTo(tool).bind('click', onMax);
  180. }
  181. // if (opts.minimizable){
  182. // $('<div class="panel-tool-min"></div>').appendTo(tool).bind('click', onMin);
  183. // }
  184. if (opts.collapsible){
  185. $('<div class="panel-tool-collapse"></div>').appendTo(tool).bind('click', onToggle);
  186. }
  187. if (opts.tools){
  188. for(var i=opts.tools.length-1; i>=0; i--){
  189. var t = $('<div></div>').addClass(opts.tools[i].iconCls).appendTo(tool);
  190. if (opts.tools[i].handler){
  191. t.bind('click', eval(opts.tools[i].handler));
  192. }
  193. }
  194. }
  195. tool.find('div').hover(
  196. function(){$(this).addClass('panel-tool-over');},
  197. function(){$(this).removeClass('panel-tool-over');}
  198. );
  199. panel.find('>div.panel-body').removeClass('panel-body-noheader');
  200. } else {
  201. panel.find('>div.panel-body').addClass('panel-body-noheader');
  202. }
  203. function onToggle(){
  204. if ($(this).hasClass('panel-tool-expand')){
  205. expandPanel(target, true);
  206. } else {
  207. collapsePanel(target, true);
  208. }
  209. return false;
  210. }
  211. function onMin(){
  212. minimizePanel(target);
  213. return false;
  214. }
  215. function onMax(){
  216. if ($(this).hasClass('panel-tool-restore')){
  217. restorePanel(target);
  218. } else {
  219. maximizePanel(target);
  220. }
  221. return false;
  222. }
  223. function onClose(){
  224. closePanel(target);
  225. var opts = $.data(target, 'fwwindow').options;
  226. if (opts.onClose) {
  227. opts.onClose.apply();
  228. }
  229. return false;
  230. }
  231. }
  232. /**
  233. * load content from remote site if the href attribute is defined
  234. */
  235. function loadData(target){
  236. var state = $.data(target, 'fwwindow');
  237. if (state.options.href && (!state.isLoaded || !state.options.cache)){
  238. state.isLoaded = false;
  239. var pbody = state.panel.find('>div.panel-body');
  240. pbody.html($('<div class="panel-loading"></div>').html(state.options.loadingMessage));
  241. pbody.load(state.options.href, null, function(){
  242. if ($.parser){
  243. $.parser.parse(pbody);
  244. }
  245. state.options.onLoad.apply(target, arguments);
  246. state.isLoaded = true;
  247. });
  248. }
  249. }
  250. function openPanel(target, forceOpen){
  251. var opts = $.data(target, 'fwwindow').options;
  252. var panel = $.data(target, 'fwwindow').fwpanel;
  253. var mask = $.data(target, 'fwwindow').mask;
  254. //fn.fwwindow.defaults.zIndex
  255. //为全部的深度
  256. var deIndex = $.fn.fwwindow.defaults.zIndex;
  257. //重新获取窗口位置
  258. initPostion(target);
  259. if(opts.modal==true){
  260. mask.css({
  261. display:'block',
  262. zIndex: opts.zIndex++
  263. });
  264. panel.css({zIndex: opts.zIndex++});
  265. }
  266. panel.css({top:opts.top});
  267. if(opts.zIndex<deIndex){
  268. opts.zIndex = deIndex;
  269. panel.css({zIndex: opts.zIndex});
  270. }else{
  271. $.fn.fwwindow.defaults.zIndex = opts.zIndex + 1;
  272. }
  273. $(target).css({display:'block'});
  274. panel.show();
  275. opts.closed = false;
  276. setCombox(target);
  277. //触发其它控件的后续初始化步骤
  278. $(document).trigger('gridlazyInit');
  279. if (opts.maximized == true) maximizePanel(target);
  280. if (opts.minimized == true) minimizePanel(target);
  281. if (opts.collapsed == true) collapsePanel(target);
  282. if (!opts.collapsed){
  283. loadData(target);
  284. }
  285. }
  286. function closePanel(target, forceClose){
  287. var opts = $.data(target, 'fwwindow').options;
  288. var panel = $.data(target, 'fwwindow').fwpanel;
  289. var mask = $.data(target, 'fwwindow').mask;
  290. if(opts.modal==true){
  291. mask.hide();
  292. }
  293. panel.hide();
  294. opts.closed = true;
  295. }
  296. function destroyPanel(target, forceDestroy){
  297. var opts = $.data(target, 'fwwindow').options;
  298. var panel = $.data(target, 'fwwindow').fwpanel;
  299. //if (forceDestroy != true){
  300. // if (opts.onBeforeDestroy.call(target) == false) return;
  301. // }
  302. removeNode(panel);
  303. // opts.onDestroy.call(target);
  304. }
  305. function collapsePanel(target, animate){
  306. var opts = $.data(target, 'fwwindow').options;
  307. var panel = $.data(target, 'fwwindow').fwpanel;
  308. var body = panel.find('>div.panel-body');
  309. var tool = panel.find('>div.panel-header .panel-tool-collapse');
  310. if (tool.hasClass('panel-tool-expand')) return;
  311. body.stop(true, true); // stop animation
  312. // if (opts.onBeforeCollapse.call(target) == false) return;
  313. tool.addClass('panel-tool-expand');
  314. if (animate == true){
  315. body.slideUp('normal', function(){
  316. opts.collapsed = true;
  317. //opts.onCollapse.call(target);
  318. });
  319. } else {
  320. body.hide();
  321. opts.collapsed = true;
  322. //opts.onCollapse.call(target);
  323. }
  324. }
  325. function movePanel(target, param){
  326. var opts = $.data(target, 'fwwindow').options;
  327. var panel = $.data(target, 'fwwindow').fwpanel;
  328. if (param){
  329. if (param.left != null) opts.left = param.left;
  330. if (param.top != null) opts.top = param.top;
  331. }
  332. panel.css({
  333. left: opts.left,
  334. top: opts.top
  335. });
  336. //opts.onMove.apply(target, [opts.left, opts.top]);
  337. }
  338. function expandPanel(target, animate){
  339. var opts = $.data(target, 'fwwindow').options;
  340. var panel = $.data(target, 'fwwindow').fwpanel;
  341. var body = panel.find('>div.panel-body');
  342. var tool = panel.find('>div.panel-header .panel-tool-collapse');
  343. if (!tool.hasClass('panel-tool-expand')) return;
  344. body.stop(true, true); // stop animation
  345. //if (opts.onBeforeExpand.call(target) == false) return;
  346. tool.removeClass('panel-tool-expand');
  347. if (animate == true){
  348. body.slideDown('normal', function(){
  349. opts.collapsed = false;
  350. //opts.onExpand.call(target);
  351. loadData(target);
  352. });
  353. } else {
  354. body.show();
  355. opts.collapsed = false;
  356. //opts.onExpand.call(target);
  357. loadData(target);
  358. }
  359. }
  360. function maximizePanel(target){
  361. var opts = $.data(target, 'fwwindow').options;
  362. var panel = $.data(target, 'fwwindow').fwpanel;
  363. var tool = panel.find('>div.panel-header .panel-tool-max');
  364. if (tool.hasClass('panel-tool-restore')) return;
  365. setComboxDef(target);
  366. tool.addClass('panel-tool-restore');
  367. $.data(target, 'fwwindow').original = {
  368. width: opts.width,
  369. height: opts.height,
  370. left: opts.left,
  371. top: opts.top,
  372. fit: opts.fit
  373. };
  374. opts.left = 0;
  375. opts.top = 0;
  376. opts.fit = true;
  377. setSize(target);
  378. opts.minimized = false;
  379. opts.maximized = true;
  380. setCombox(target);
  381. }
  382. function minimizePanel(target){
  383. var opts = $.data(target, 'fwwindow').options;
  384. var panel = $.data(target, 'fwwindow').fwpanel;
  385. panel.hide();
  386. opts.minimized = true;
  387. opts.maximized = false;
  388. }
  389. function restorePanel(target){
  390. var opts = $.data(target, 'fwwindow').options;
  391. var panel = $.data(target, 'fwwindow').fwpanel;
  392. var tool = panel.find('>div.panel-header .panel-tool-max');
  393. if (!tool.hasClass('panel-tool-restore')) return;
  394. setComboxDef(target);
  395. panel.show();
  396. tool.removeClass('panel-tool-restore');
  397. var original = $.data(target, 'fwwindow').original;
  398. opts.width = original.width;
  399. opts.height = original.height;
  400. opts.left = original.left;
  401. opts.top = original.top;
  402. opts.fit = original.fit;
  403. setSize(target);
  404. opts.minimized = false;
  405. opts.maximized = false;
  406. setCombox(target);
  407. }
  408. function setBorder(target){
  409. var opts = $.data(target, 'fwwindow').options;
  410. var panel = $.data(target, 'fwwindow').fwpanel;
  411. if (opts.border == true){
  412. panel.find('>div.panel-header').removeClass('panel-header-noborder');
  413. panel.find('>div.panel-body').removeClass('panel-body-noborder');
  414. } else {
  415. panel.find('>div.panel-header').addClass('panel-header-noborder');
  416. panel.find('>div.panel-body').addClass('panel-body-noborder');
  417. }
  418. }
  419. function setTitle(target, title){
  420. $.data(target, 'fwwindow').options.title = title;
  421. $(target).panel('header').find('div.panel-title').html(title);
  422. }
  423. //设置下拉框的大小以及显示层
  424. function setCombox(target){
  425. //触发事件调整窗口内的控件
  426. FWresizeObject(target);
  427. }
  428. //最小化下拉框的宽度
  429. //因为不设置的化,窗口内的下拉框无法自动收缩
  430. function setComboxDef(target){}
  431. $(window).unbind('.panel').bind('resize.panel', function(){
  432. var layout = $('body.layout');
  433. if (layout.length){
  434. layout.layout('resize');
  435. } else {
  436. $('body>div.panel').triggerHandler('_resize');
  437. }
  438. });
  439. /**
  440. * set fwwindow drag and resize property
  441. */
  442. function setProperties(target){
  443. var state = $.data(target, 'fwwindow');
  444. state.fwpanel.draggable({
  445. handle: '>div.panel-header>div.panel-title',
  446. disabled: state.options.draggable == false,
  447. onStartDrag: function(e){
  448. if (state.mask) state.mask.css('z-index', $.fn.fwwindow.defaults.zIndex++);
  449. if (state.shadow) state.shadow.css('z-index', $.fn.fwwindow.defaults.zIndex++);
  450. var zIndex = $.fn.fwwindow.defaults.zIndex++;
  451. state.fwpanel.css('z-index', zIndex);
  452. state.options.zIndex = zIndex;
  453. setCombox(target);
  454. if (!state.proxy){
  455. state.proxy = $('<div class="fwwindow-proxy"></div>').insertAfter(state.fwpanel);
  456. }
  457. state.proxy.css({
  458. display:'none',
  459. zIndex: $.fn.fwwindow.defaults.zIndex++,
  460. left: e.data.left,
  461. top: e.data.top,
  462. width: ($.boxModel==true ? (state.fwpanel.outerWidth()-(state.proxy.outerWidth()-state.proxy.width())) : state.fwpanel.outerWidth()),
  463. height: ($.boxModel==true ? (state.fwpanel.outerHeight()-(state.proxy.outerHeight()-state.proxy.height())) : state.fwpanel.outerHeight())
  464. });
  465. setTimeout(function(){
  466. if (state.proxy) state.proxy.show();
  467. }, 500);
  468. },
  469. onDrag: function(e){
  470. state.proxy.css({
  471. display:'block',
  472. left: e.data.left,
  473. top: e.data.top
  474. });
  475. return false;
  476. },
  477. onStopDrag: function(e){
  478. state.options.left = e.data.left;
  479. if(e.data.top<20){
  480. state.options.top = 20;
  481. }else{
  482. state.options.top = e.data.top;
  483. }
  484. movePanel(target);
  485. state.proxy.remove();
  486. state.proxy = null;
  487. }
  488. });
  489. state.fwpanel.resizable({
  490. disabled: state.options.resizable == false,
  491. onStartResize:function(e){
  492. if (!state.proxy){
  493. state.proxy = $('<div class="fwwindow-proxy"></div>').insertAfter(state.fwpanel);
  494. }
  495. state.proxy.css({
  496. zIndex: $.fn.fwwindow.defaults.zIndex++,
  497. left: e.data.left,
  498. top: e.data.top,
  499. width: ($.boxModel==true ? (e.data.width-(state.proxy.outerWidth()-state.proxy.width())) : e.data.width),
  500. height: ($.boxModel==true ? (e.data.height-(state.proxy.outerHeight()-state.proxy.height())) : e.data.height)
  501. });
  502. },
  503. onResize: function(e){
  504. state.proxy.css({
  505. left: e.data.left,
  506. top: e.data.top,
  507. width: ($.boxModel==true ? (e.data.width-(state.proxy.outerWidth()-state.proxy.width())) : e.data.width),
  508. height: ($.boxModel==true ? (e.data.height-(state.proxy.outerHeight()-state.proxy.height())) : e.data.height)
  509. });
  510. return false;
  511. },
  512. onStopResize: function(e){
  513. state.options.left = e.data.left;
  514. state.options.top = e.data.top;
  515. state.options.width = e.data.width;
  516. state.options.height = e.data.height;
  517. setSize(target);
  518. state.proxy.remove();
  519. state.proxy = null;
  520. }
  521. });
  522. }
  523. function getPageArea() {
  524. if (document.compatMode == 'BackCompat') {
  525. return {
  526. width: Math.max(document.body.scrollWidth, document.body.clientWidth),
  527. height: Math.max(document.body.scrollHeight, document.body.clientHeight)
  528. }
  529. } else {
  530. return {
  531. width: Math.max(document.documentElement.scrollWidth, document.documentElement.clientWidth),
  532. height: Math.max(document.documentElement.scrollHeight, document.documentElement.clientHeight)
  533. }
  534. }
  535. }
  536. // when fwwindow resize, reset the width and height of the fwwindow's mask
  537. $(window).resize(function(){
  538. $('.fwwindow-mask').css({
  539. width: $(window).width(),
  540. height: $(window).height()
  541. });
  542. setTimeout(function(){
  543. $('.fwwindow-mask').css({
  544. width: getPageArea().width,
  545. height: getPageArea().height
  546. });
  547. }, 50);
  548. });
  549. $.fn.fwwindow = function(options, param){
  550. if (typeof options == 'string'){
  551. switch(options){
  552. case 'open':
  553. return this.each(function(){
  554. openPanel(this);
  555. });
  556. case 'close':
  557. return this.each(function(){
  558. closePanel(this);
  559. });
  560. case 'toggle':
  561. return this.each(function(){
  562. if($(this).hasClass('panel-tool-expand')){
  563. expandPanel(this, true);
  564. } else {
  565. collapsePanel(this, true);
  566. }
  567. });
  568. }
  569. return true;
  570. }
  571. options = options || {};
  572. return this.each(function(){
  573. init(this, options);
  574. setProperties(this);
  575. });
  576. };
  577. $.fn.fwwindow.defaults = {
  578. zIndex: 9000,
  579. draggable: true,
  580. resizable: true,
  581. shadow: true,
  582. modal: false,
  583. title: null,
  584. iconCls: null,
  585. width: 'auto',
  586. height: 'auto',
  587. left: null,
  588. top: null,
  589. cls: null,
  590. headerCls: null,
  591. bodyCls: null,
  592. style: {},
  593. cache: true,
  594. fit: false,
  595. border: true,
  596. doSize: true,
  597. noheader: false,
  598. content: null,
  599. tools: [],
  600. href: null,
  601. loadingMessage: 'Loading...',
  602. title: '新建窗口',
  603. collapsible: true,
  604. minimizable: true,
  605. maximizable: true,
  606. closable: true,
  607. collapsed: false,
  608. minimized: false,
  609. maximized: false,
  610. closed: true,
  611. onClose : function() {}
  612. };
  613. })(jQuery);