// Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com) // YOU MUST INCLUDE window.js BEFORE // // Object to store hide/show windows status in a cookie // Just add at the end of your HTML file this javascript line: WindowStore.init() WindowStore = { doSetCookie: false, cookieName: "__window_store__", expired: null, // Init function with two optional parameters // - cookieName (default = __window_store__) // - expiration date (default 3 years from now) init: function(cookieName, expired) { WindowStore.cookieName = cookieName || WindowStore.cookieName if (! expired) { var today = new Date(); today.setYear(today.getYear()+1903); WindowStore.expired = today; } else WindowStore.expired = expired; Windows.windows.each(function(win) { win.setCookie(win.getId(), WindowStore.expired); }); // Create observer on show/hide events var myObserver = { onShow: function(eventName, win) { WindowStore._saveCookie(); }, onClose: function(eventName, win) { WindowStore._saveCookie(); }, onHide: function(eventName, win) { WindowStore._saveCookie(); } } Windows.addObserver(myObserver); WindowStore._restoreWindows(); WindowStore._saveCookie(); }, show: function(win) { eval("var cookie = " + WindowUtilities.getCookie(WindowStore.cookieName)); if (cookie != null) { if (cookie[win.getId()]) win.show(); } else win.show(); }, // Function to store windows show/hide status in a cookie _saveCookie: function() { if (!doSetCookie) return; var cookieValue = "{"; Windows.windows.each(function(win) { if (cookieValue != "{") cookieValue += "," cookieValue += win.getId() + ": " + win.isVisible(); }); cookieValue += "}" WindowUtilities.setCookie(cookieValue, [WindowStore.cookieName, WindowStore.expired]); }, // Function to restore windows show/hide status from a cookie if exists _restoreWindows: function() { eval("var cookie = " + WindowUtilities.getCookie(WindowStore.cookieName)); if (cookie != null) { doSetCookie = false; Windows.windows.each(function(win) { if (cookie[win.getId()]) win.show(); }); } doSetCookie = true; } } // Object to set a close key an all windows WindowCloseKey = { keyCode: Event.KEY_ESC, init: function(keyCode) { if (keyCode) WindowCloseKey.keyCode = keyCode; Event.observe(document, 'keydown', this._closeCurrentWindow.bindAsEventListener(this)); }, _closeCurrentWindow: function(event) { var e = event || window.event var characterCode = e.which || e.keyCode; // Check if there is a top window (it means it's an URL content) var win = top.Windows.focusedWindow; if (characterCode == WindowCloseKey.keyCode && win) { if (win.cancelCallback) top.Dialog.cancelCallback(); else if (win.okCallback) top.Dialog.okCallback(); else top.Windows.close(top.Windows.focusedWindow.getId()); } } }