/**
*	@author http://chalker.ru/ ChALkeR
*	@copyright (c) ChALkeR
*	@version 2009-08-13
**/

$.cms.ajax.cache = {
	pages: {},
	query_name: false,
	uri: false,
	enabled: true,

	clear: function() {
		$.cms.ajax.cache.pages = {};
		return $.cms.ajax.cache;
	},
	put: function(query_name,uri,data) {
		$.cms.ajax.cache.pages[query_name+':'+uri] = data;
		return $.cms.ajax.cache;
	},
	set: function(query_name,uri) {
		$.cms.ajax.cache.query_name = query_name;
		$.cms.ajax.cache.uri = uri;
		return $.cms.ajax.cache;
	},
	exists: function(query_name,uri) {
		return $.cms.ajax.cache.pages[query_name+':'+uri] ? true : false;
	},
	get: function(query_name,uri) {
		return $.cms.ajax.cache.pages[query_name+':'+uri] || false;
	},
	save: function(data) {
		if (!$.cms.ajax.cache.uri) {
			$.cms.ajax.cache.clear();
			return false;
		}
		$.cms.ajax.cache.put($.cms.ajax.cache.query_name,$.cms.ajax.cache.uri,data);
		$.cms.ajax.cache.query_name = false;
		$.cms.ajax.cache.uri = false;
		return true;
	},
	restore: function(query_name,uri) {
		if (!$.cms.ajax.cache.exists(query_name,uri)) {
			return false;
		}
		if ($.cms.config.enabled['ajax_cache_effects']) {
			setTimeout($.cms.ajax.process,$.cms.effects,$.cms.ajax.cache.get(query_name,uri));
		} else {
			$.cms.ajax.process($.cms.ajax.cache.get(query_name,uri));
		}
		return true;
	},
	toggle: function(query_name,uri) {
		if ($.cms.ajax.cache.restore(query_name,uri)) {
			return true;
		}
		$.cms.ajax.cache.set(query_name,uri);
		return false;
	}
};
