/**
 * This is the site's cache object, used for any kind of string.
 *
 * @module FrancesTwiddy
 * @class Cache
 * @author Dan Whitfield
 */ 
var Cache = 
{
	/**
	 * Store all the cache data.
	 *
	 * @property _cacheObject
	 * @type Object
	 * @private
	 */
	_cacheObject: {},
	
	
	/**
	 * Store key/value cache data.
	 * 
	 * @method store
	 * @public
	 * @param {String} key
	 * @param {String} value
	 */
	store: function(key, value)
	{
		key = this._prepareCacheKeyName(key);
		
		Utils.debugConsole("storing cache: " + key);
		
		this._cacheObject[key] = value;
	},
	
	
	/**
	 * Get cache data by key.
	 *
	 * @method get
	 * @public
	 * @param {String} key
	 */
	get: function(key)
	{
		key = this._prepareCacheKeyName(key);
		
		var cacheData = this._cacheObject[key];
		
		if(cacheData)
		{
			Utils.debugConsole("cache found for: " + key);
		}
		
		return cacheData;
	},
	
	/**
	 * Prepares a string for use as an assosiative array key.
	 *
	 * @method _prepareCacheKeyName
	 * @private
	 * @param {String} key
	 */
	_prepareCacheKeyName: function(key)
	{
		key = key.toLowerCase();
		key = key.replace(/[-\s]/g, "_");
		return key;
	}
};
