﻿/**
 * @namespace Holds all caching methods
 * @uses lib/Prototype/Prototype.js
 * @uses lib/Sureflix/Sureflix.js
 * @author Amy 10/20/2008
 */ 
Sureflix.Caching = {}; 


/**
 * Private property, holds a hash of keys & languages that contains various object
 * @example Sureflix.Caching.CachedObject[key][lang]
 * @author Amy 10/20/2008
 */
Sureflix.Caching.CachedObject = {};

/**
 * Private function, used to initialize the hash
 * @author Amy 10/20/2008
 */
Sureflix.Caching.initialize = function (key, lang) {
	// if the key/lang pair don't exist
	if(!Sureflix.Caching.isCached(key, lang)){
		//initialize		
		Sureflix.Caching.CachedObject[key] = {lang:null};
	}
}

/**
 * Gets an object from the cache
 * @author Amy 10/20/2008
 */
Sureflix.Caching.getCachedObject = function (key, lang) {
	Sureflix.Caching.initialize(key, lang);
	
	return Sureflix.Caching.CachedObject[key][lang];
}
/**
 * Puts an object into the cache
 * @author Amy 10/20/2008
 */
Sureflix.Caching.setCachedObject = function (key, lang, object) {
	Sureflix.Caching.initialize(key, lang);

	Sureflix.Caching.CachedObject[key][lang] = object;
}

/**
 * Whether or not an object is stored in the cache
 * @author Amy 10/20/2008
 */
Sureflix.Caching.isCached = function (key, lang) {
	return !!(Sureflix.Caching.CachedObject[key] && Sureflix.Caching.CachedObject[key][lang]);
}