/**
  A simple key value store that uses LocalStorage

  @class KeyValueStore
  @namespace Discourse
  @module Discourse
**/
Discourse.KeyValueStore = {
  initialized: false,
  context: "",

  init: function(ctx) {
    this.initialized = true;
    this.context = ctx;
  },

  abandonLocal: function() {
    var i, k;
    if (!(localStorage && this.initialized)) {
      return;
    }
    i = localStorage.length - 1;
    while (i >= 0) {
      k = localStorage.key(i);
      if (k.substring(0, this.context.length) === this.context) {
        localStorage.removeItem(k);
      }
      i--;
    }
    return true;
  },

  remove: function(key) {
    return localStorage.removeItem(this.context + key);
  },

  set: function(opts) {
    if (!(localStorage && this.initialized)) {
      return false;
    }
    localStorage[this.context + opts.key] = opts.value;
  },

  get: function(key) {
    if (!localStorage) {
      return null;
    }
    return localStorage[this.context + key];
  }
};

