docs: function(key, val) {
  		var self   = this,
  			s      = window.localStorage,
  			oldkey = 'elfinder-'+(key || '')+this.id, // old key of elFinder < 2.1.6
  			prefix = window.location.pathname+'-elfinder-',
  			suffix = this.id,
  			clrs   = [],
  			retval, oldval, t, precnt, sufcnt;
  
  		// reset this node data
  		if (typeof(key) === 'undefined') {
  			precnt = prefix.length;
  			sufcnt = suffix.length * -1;
  			$.each(s, function(key) {
  				if (key.substr(0, precnt) === prefix && key.substr(sufcnt) === suffix) {
  					clrs.push(key);
  				}
  			});
  			$.each(clrs, function(i, key) {
  				s.removeItem(key);
  			});
  			return true;
  		}
  		
  		// new key of elFinder >= 2.1.6
  		key = prefix+key+suffix;
  		
  		if (val === null) {
  			return s.removeItem(key);
  		}
  		
  		if (val === void(0) && !(retval = s.getItem(key)) && (oldval = s.getItem(oldkey))) {
  			val = oldval;
  			s.removeItem(oldkey);
  		}
  		
  		if (val !== void(0)) {
  			t = typeof val;
  			if (t !== 'string' && t !== 'number') {
  				val = JSON.stringify(val);
  			}
  			try {
  				s.setItem(key, val);
  			} catch (e) {
  				try {
  					s.clear();
  					s.setItem(key, val);
  				} catch (e) {
  					self.debug('error', e.toString());
  				}
  			}
  			retval = s.getItem(key);
  		}
  
  		if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) {
  			try {
  				return JSON.parse(retval);
  			} catch(e) {}
  		}
  		return retval;
  	}