7ae721f4866e3aa6c1ba01607e0d113fc1fb1c1b
[citadel.git] / webcit / static / wcpref.js
1 /** Webcit preference code */
2 var persistentStorage = false;
3 /* DOM5 storage disabled for now.. we want localStorage which isn't as widely available yet */
4 //if (window.sessionStorage) {
5 //  persistentStorage = true;
6 //}
7 function WCPrefs() {
8   this.cookieValCache = new Object();
9   this.noExpire = "Mon, 18 Jan 2038 5:14:07 AM";
10 }
11
12 function readPref(name) {
13   if (persistentStorage) {
14     return sessionStorage.getItem(name);
15   } else {
16     return this.cookieValCache[name];
17   }
18 }
19
20 function setPref(name, value) {
21   if (persistentStorage) {
22     sessionStorage.setItem(name, value);
23   } else {
24     document.cookie = "WC_" + name + "="+value+";expires="+this.noExpire;
25     //    this.cookieValCache[name] = value; 
26     //this.saveLocal();
27   }
28 }
29
30 function loadLocal() {
31   if (!persistentStorage) {
32     var cookies = document.cookie.split(";");
33     for(var i=0; i<cookies.length; i++) {
34       var cookie = cookies[i].split("=");
35       var name = cookie[0];
36       if (name.charAt(0) == " ") {
37         name = name.substr(1);
38       }
39       if (name.substr(0, 3) == "WC_") {
40         name = name.substr(3);
41         this.cookieValCache[name] = cookie[1];
42         if (!!window.console) {
43           console.log(name+"="+cookie[1]);
44         }
45       }
46     }
47   }
48 }
49
50 function saveLocal() {
51   if (!persistentStorage) {
52     // First we purge cookies with WC_ infront
53     var cookies = document.cookie.split(";");
54     var numOfCookies = cookies.length;
55     var finalCookieString = "";
56     for(var i=0; i<numOfCookies; i++) 
57       var cookie = cookies[i].split("=");
58       var name = cookie[0];
59       if (name.substr(0, 3) != "WC_") {
60         finalCookieString += cookies[i] + ";";
61       }
62     }
63     for(key in this.cookieValCache) {
64       var val = this.cookieValCache[key];
65       finalCookieString += "WC_" + key+"="+val+";";
66     }
67     document.cookie = finalCookieString;
68 }
69
70 WCPrefs.prototype.saveLocal = saveLocal;
71 WCPrefs.prototype.loadLocal = loadLocal;
72 WCPrefs.prototype.setPref = setPref;
73 WCPrefs.prototype.readPref = readPref;
74 var ctdlLocalPrefs = null;
75 setupPrefEngine();
76 function setupPrefEngine() {
77   ctdlLocalPrefs = new WCPrefs();
78   ctdlLocalPrefs.loadLocal();
79 }