/*** Persistent Data ***/
var data={
  defaultName:"localData", // Name to use if none is specified.
  
  set:function(c_name, value) {
    if (arguments.length<2) {
      value = arguments[0];
      c_name = this.defaultName;
    }
    
    // Widget storage
    if (window.widget != null) {
      widget.setPreferenceForKey(value, c_name);
    }
    
    // HTML5 localStorage
    else if (window.localStorage != null && location.hostname != "") {
      localStorage.setItem(c_name, value);
    }
    
    // Firefox <= 3.0 globalStorage
    else if (window.globalStorage != null && location.hostname != "") {
      globalStorage[location.hostname].setItem(c_name, value);
    }
    
    // Cookies
    else {
      var expires = new Date();
      expires.setDate(expires.getDate() + 1000000);
      document.cookie = c_name + "=" + escape(value) + ";expires=" + expires;
    }
  },
  
  get:function(c_name) {
    if (arguments.length<1) {
      c_name = this.defaultName;
    }
    
    // Widget storage
    if (window.widget != null) {
      return widget.preferenceForKey(c_name) ? widget.preferenceForKey(c_name).toString() : "";
    }
    
    // HTML5 localStorage
    else if (window.localStorage != null && location.hostname != "") {
      return localStorage.getItem(c_name) ? localStorage.getItem(c_name).toString() : "";
    }
    
    // Firefox <= 3.0 globalStorage
    else if (window.globalStorage != null && location.hostname != "") {
      if (globalStorage[location.hostname].getItem(c_name) != null) {
        return globalStorage[location.hostname].getItem(c_name).toString();
      }
      return "";
    }

    // Cookies
    else {
      var c_start = document.cookie.indexOf(c_name + "=");
      if (c_start != -1) { 
        c_start = c_start + c_name.length + 1;
        var c_end = document.cookie.indexOf(";", c_start);
        if (c_end == -1) {
          c_end=document.cookie.length;
        }
        return unescape(document.cookie.substring(c_start, c_end));
      }
      return "";
    }
  },
  
  clear:function(c_name) {
    if (arguments.length<1) {
      c_name = this.defaultName;
    }
    
    // Widget storage
    if (window.widget != null) {
      widget.setPreferenceForKey(null, c_name);
    }
    
    // HTML5 localStorage
    else if (window.localStorage != null && location.hostname != "") {
      localStorage.removeItem(c_name);
    }
    
    // Firefox <= 3.0 globalStorage
    else if (window.globalStorage != null && location.hostname != "") {
      globalStorage[location.hostname].removeItem(c_name);
    }
    
    // Cookies
    else {
      document.cookie = c_name + "=;";
    }
  }
};
