115 lines
3.1 KiB
JavaScript
115 lines
3.1 KiB
JavaScript
|
// 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());
|
||
|
}
|
||
|
}
|
||
|
}
|