fwwindow.js 20 KB

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