/**
 * @project TV Wall
 * @version 2010.06
 * @author Luís Nabais
 * @copyright 2010 by the author
 * @license CC-BY-SA
 */

var $dataVersion = 2;

function saveToStorage($key, $data) {
	return $.jStorage.set($key, Object.toJSON($data));
}

function loadFromStorage($key) {
	var $data = $.jStorage.get($key);
	
	if ($data && Object.isString($data)) {
		return $data.evalJSON(true);
	} else {
		return $data;
	}
}

function addShowToStorage($id) {
	var $shows = loadFromStorage("shows");
	
	if (!$shows) {
		$shows = [ $id ];
	} else if ($shows.contains($id) === false) {
		$shows.push($id);
	} else {
		return false;
	}
	
	$.jStorage.set("shows", $shows);
	return true;
}

function removeShowFromStorage($id) {
	var $shows = loadFromStorage("shows");
	
	if ($shows) {
		$shows = $shows.without($id);
	
		saveToStorage("shows", $shows);
		return true;
	}
	return false;
}

function checkStorage() {
	var $version = loadFromStorage("dataVersion");
	var $shows = loadFromStorage("shows");
	
	if (($version !== null && $version < $dataVersion) || ($version === null && $shows !== null)) {
		clearStorage();
		var $message = new Message('storage', "Data version mismatch, I'm sorry but your wall had to be cleared.");
		$message.type = 'warning';
		addPopup($message);
	} else if ($shows) {
		return $shows;
	}
	
	return false;
}

function clearStorage() {
	$.jStorage.deleteKey("shows");
	$.jStorage.deleteKey("hideStartupMessage");
	saveToStorage("dataVersion", $dataVersion);
}

function restoreShowsFromStorage() {
	var $shows = checkStorage();
	
	if(!$shows || ($shows && $shows.size() === 0)) {
		return false;
	} else {
		$shows.each(function(item) {
			onShowAdd(item);
		});
		return true;
	}
}

