git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			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());
 | |
|     }
 | |
|   }
 | |
| } |