var HomeVideoCookie = {	
	init: function() {
		Cookie.init({name: 'home_video', expires: 365, path: '/'});
	},
	
	addVideo: function(videoId) {
		var videos = HomeVideoCookie.getVideos();

		if (videos.indexOf(videoId) == -1) {
			videos.push(videoId);
		
			Cookie.setData('videos', videos);
		}
	},
	
	getVideos: function() {
		var videos = Cookie.getData('videos');
		
		if (! videos) {
			videos = [];
		}
		
		return videos;
	},
	
	redirect: function(videoIds) {
		var videos = HomeVideoCookie.getVideos();
				
		for (var i = 0; i < videoIds.length; i++) {
			if (videos.indexOf(videoIds[i]) == -1) {
				location.href = "/video/" + videoIds[i];
				return;
			}
		}
	}
};

var Cookie = {
	data: {},
	options: {expires: 1, domain: "", path: "", secure: false},
		
	init: function(options, data) {
		Cookie.options = Object.extend(Cookie.options, options || {});
		
		var payload = Cookie.retrieve();
		if (payload) {
			Cookie.data = payload.evalJSON();
		} else {
			Cookie.data = data || {};
		}
		
		Cookie.store();
	},
	
	getData: function(key) {
		return Cookie.data[key];
	},
	
	setData: function(key, value) {
		Cookie.data[key] = value;
		Cookie.store();
	},
	
	removeData: function(key) {
		delete Cookie.data[key];
		Cookie.store();
	},

	retrieve: function() {
		var start = document.cookie.indexOf(Cookie.options.name + "=");
		if (start == -1) {
			return null;
		}
			
		if (Cookie.options.name != document.cookie.substr(start, Cookie.options.name.length)) {
			return null;
		}

		var len = start + Cookie.options.name.length + 1;   
		var end = document.cookie.indexOf(';', len);

		if (end == -1) {
			end = document.cookie.length;
		}
		
		return unescape(document.cookie.substring(len, end));
	},
		
	store: function() {
		var expires = '';

		if (Cookie.options.expires) {
			var today = new Date();
			expires = Cookie.options.expires * 86400000;
			expires = ';expires=' + new Date(today.getTime() + expires);
		}
			
		document.cookie = Cookie.options.name + '=' + escape(Object.toJSON(Cookie.data)) + Cookie.getOptions() + expires;
	},

	erase: function() {
		document.cookie = Cookie.options.name + '=' + Cookie.getOptions() + ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
	},

	getOptions: function() {
		return (Cookie.options.path ? ';path=' + Cookie.options.path : '') + (Cookie.options.domain ? ';domain=' + Cookie.options.domain : '') + (Cookie.options.secure ? ';secure' : '');      
	}
};