var MAX_FAVORITES_COUNT = 50;

function setPostIds(name, postIds) {

	var EXPIRES = 1825; // Cookie有効期限：5年間（実質400日上限）

	Cookies.set(name, postIds, {expires: EXPIRES});
}

$(function () {

	$('.c-favorite-btn').on('click', function(e) {

		e.preventDefault();

		if ($(this).hasClass('keep_button')) {

			if ($(this).hasClass('added_favorites')) {
				window.location.href = location.protocol + '//' + location.hostname + '/keep/';
				return false;
			}

			var favorites = getPostIds(FAVORITE_POST_IDS_COOKIE_NAME);

			if (favorites.length >= MAX_FAVORITES_COUNT) {
				var message = '登録上限の' + MAX_FAVORITES_COUNT + '件を超えています。'
				alert(message);
				return;
			}

			var postId = $(this).data('post_id');
			if (favorites.indexOf(postId) < 0) {
				favorites.unshift(postId);
			}

			setPostIds(FAVORITE_POST_IDS_COOKIE_NAME, JSON.stringify(favorites));

			// location.reload();
			$(this).removeClass('keep_button').addClass('trash_button');
			var buttonImg = $(this).find('img');
			var buttonImgSrc = buttonImg.attr('src');
			buttonImg.attr('src', buttonImgSrc.replace(/_g\.(svg)/, '_b.$1'));
			$(this).find('span').text('お気に入りから削除');

			$('.c-favorite-icon .number').text(favorites.length);

			e.preventDefault();
			return false;

		} else {
	
			var favorites = getPostIds(FAVORITE_POST_IDS_COOKIE_NAME);

			var postId = $(this).data('post_id');
			var index = favorites.indexOf(postId);
			if (index >= 0) {
				favorites.splice(index, 1);
			}

			setPostIds(FAVORITE_POST_IDS_COOKIE_NAME, JSON.stringify(favorites));

			// location.reload();
			$(this).removeClass('trash_button').addClass('keep_button');
			var buttonImg = $(this).find('img');
			var buttonImgSrc = buttonImg.attr('src');
			buttonImg.attr('src', buttonImgSrc.replace(/_b\.(svg)/, '_g.$1'));
			$(this).find('span').text('お気に入りに追加');

			$('.c-favorite-icon .number').text(favorites.length);

			e.preventDefault();
			return false;

		}
	});
});

var HISTORY_POST_IDS_COOKIE_NAME = 'histories';
var FAVORITE_POST_IDS_COOKIE_NAME = 'favorites';

function getPostIds(name) {

	var value = Cookies.get(name);
	if (typeof value === 'undefined' || value === 'null') {
		return [];
	}
	return JSON.parse(value);
}
