/* ------------------------------------------------- */
/* 全ページ共通のJSだけを記載する */
/* 特定のページでしか使わないコードは書かない */
/* 作成したら、変更の頻度が少ないコードを下に書く */
/* ------------------------------------------------- */


/* ------------------------------------------------- */
/* 初期値 */
/* ------------------------------------------------- */
/* ウィンドウの高さ - ウィンドウリサイズで再度取得 */
var window_h = $(window).height();

/* ウィンドウの幅 - ウィンドウリサイズで再度取得 */
var window_w = $(window).width();

/* フッターの表示位置 - ウィンドウリサイズで再度取得 */
var footer_top_pos = Number($('footer').offset().top);

/* ヘッダーが見切れる位置 */
var header_h = $('header').height();

$(window).resize(function(){
	/* ウィンドウの高さ - ウィンドウリサイズで再度取得 */
	window_h = Number($(window).height());

	/* ウィンドウの幅 - ウィンドウリサイズで再度取得 */
	window_w = Number($(window).width());

	/* フッターの表示位置 - ウィンドウリサイズで再度取得 */
	footer_top_pos = Number($('footer').offset().top);

	/* ヘッダーが見切れる位置 - ウィンドウリサイズで再度取得 */
	header_h = $('header').height();

});


/* ------------------------------------------------- */
/* windowがスクロールされた時に実行する処理 */
/* ------------------------------------------------- */
$(window).scroll(function() {
	var sc_top = Number($(window).scrollTop());

	//フッターが画面内に入った(スクロール量+ウィンドウの高さ)
	if(window_w <= 760){
		now_footer_top_pos = footer_top_pos - 48;
	} else {
		now_footer_top_pos = footer_top_pos;
	}
	if(now_footer_top_pos <= (sc_top + window_h)){
		$('body').addClass('infooter');
	} else {
		$('body').removeClass('infooter');
	};

	//ヘッダーが見切れた
	if(header_h <= sc_top){
		$('body').addClass('header_out');
	} else {
		$('body').removeClass('header_out');
	}
});

/* ------------------------------------------------- */
/* 口コミ 参考になったボタン */
/* ------------------------------------------------- */
//参考になったボタンのgood数を非表示にする
$('.review_reference').each(function (index) {
	var good_count = $(this).attr('good');
	if (good_count == '0') {
		$(this).find('.good').css('display', 'none');
	}
});

//参考になったボタンのgood数１つアップする
$('.review_reference').on('click', function () {
	if ($(this).hasClass('active')) {

	} else {
		//ボタンをアクティブに変更
		$(this).addClass('active');
		var good = Number($(this).attr('good'));
		$(this).find('.good').css('display', 'initial').find('.good_count').text(good + 1);
		var get_data = 'id=' + $(this).val();
		$.ajax({
			url:'/ajax/review_reference/set/',
			type: 'POST',
			cache: false,
			dataType: 'json',
			data: get_data
		}).done(function(json) {

		}).fail(function() {
			alert('エラーが起きました');
		}).always(function() {

		});
	}
	return false;
});



/* ------------------------------------------------- */
/* キープボタン */
/* ------------------------------------------------- */
$('main').on('click', '.js_keep', function() {
	var data_set = $(this).attr('data-set');
	var shop_id = $(this).attr('data-shop_id');
	var cast_id = $(this).attr('data-cast_id');
	var btn_default_non_active = 'キープ<span class="pc">する</span>';
	var btn_default_active = 'キープ中';
	if ($(this).attr('data-type') == 'cast_detail') {
		btn_default_non_active = 'このキャストをキープ<span class="pc">する</span>';
		btn_default_active = 'このキャストをキープ中';
	}
	if ($(this).hasClass('active')) {
		$('.js_keep[data-shop_id="' + shop_id + '"][data-cast_id="' + cast_id + '"]').removeClass('active').attr('data-set', 0).html(btn_default_non_active);
	} else {
		$('.js_keep[data-shop_id="' + shop_id + '"][data-cast_id="' + cast_id + '"]').addClass('active').attr('data-set', 1).html(btn_default_active);
	}
	var get_data = 'shop_id=' + shop_id + '&cast_id=' + cast_id + '&set=' + data_set;
	$.ajax({
		url:'/ajax/keep/',
		type: 'POST',
		cache: false,
		dataType: 'json',
		data: get_data
	}).done(function(html) {
		console.log(html);
	}).fail(function() {
		//alert('エラーが起きました');
	}).always(function() {

	});
	return false;
});
$('.js_keep.active').each(function (index) {
	var btn_default_non_active = 'キープ<span class="pc">する</span>';
	var btn_default_active = 'キープ中';
	if ($(this).attr('data-type') == 'cast_detail') {
		btn_default_non_active = 'このキャストをキープ<span class="pc">する</span>';
		btn_default_active = 'このキャストをキープ中';
	}
	$(this).html(btn_default_active);
});



/* ------------------------------------------------- */
/* イイねボタン */
/* ------------------------------------------------- */
$('main').on('click', '.js_heart_btn', function() {
	$(this).addClass('animate');
	if(!$(this).hasClass('_pressed')){
		$(this).addClass('_pressed');
	}
	//ajax
	var target_dom = $(this);
	var ajaxurl = '/ajax/good_btn/set/';
	var get_data = 'id=' + $(this).attr('data-id');
	get_data = get_data + '&type=' + $(this).attr('data-type');
	if($(this).hasClass('with_count')){
		get_data = get_data + '&with_count=true';
	}
	if($(this).data('caferun_member_id')){
		get_data = get_data + '&caferun_member_id=' + $(this).attr('data-caferun_member_id');
	}
	$.ajax({
		url:ajaxurl,
		type: 'POST',
		cache: false,
		dataType: 'json',
		data: get_data
	}).done(function(html) {
		//cast_searchのデザイン用処理
		if(target_dom.find('.js_good_count') && html.return.new_count){
			target_dom.find(".js_good_count").text(html.return.new_count);
		}
		if(target_dom.find('.js_good_text')){
			target_dom.find(".js_good_text").text('ありがとう！');
		}
	}).fail(function() {
		alert('エラーが起きました');
	}).always(function() {
		$('#get_twitter').removeClass('open');
		console.log('complete');
	});
	return false;
});


/* ------------------------------------------------- */
/* 共通画像拡大 */
/* ------------------------------------------------- */
if($(".js-zoom").length){
    $(".js-zoom").SmartPhoto({
		useOrientationApi: false,
		animationSpeed: 0
	});
}


/* ------------------------------------------------- */
/* 共通 エフェクト処理 */
/* ------------------------------------------------- */
/* 文字のウェーブ(global.css) */
if($('.ef-wave').length){
	$('.ef-wave').children().addBack().contents().each(function() {
		$(this).replaceWith($(this).text().replace(/(\S)/g, '<span>$&</span>'));
	});
	$('.ef-wave').on('mouseenter', function(){
		if($(this).hasClass('action')){

		} else {
			$(this).addClass('action');
			var default_time = 0;
			var delay_time = 50;
			var each_target = $(this).find('span');
			$(this).find('span').each(function(index) {
				default_time = delay_time * index;
				$(this).delay(default_time).queue(function(){
					$(this).stop(true, true).animate({
						top: '-5px',
					}, 80, 'swing', function(){
						$(this).animate({top: '0px',}, 80, 'swing');
					});
				});
			});
		}
	});
	$('.ef-wave').on('mouseleave', function(){
		$(this).removeClass('action');
	});
}


/* ------------------------------------------------- */
/* ページトップへのスクロールボタン */
/* ------------------------------------------------- */
/* スクロールボタンをクリックした時 */
$('#page_top').on('click', function(){
	$('body,html').animate({scrollTop: 0},500);
	return false;
});



/* ------------------------------------------------- */
/* googleフォントの遅延読み込み */
/* ------------------------------------------------- */
$(window).on('load', function() {
	$('link[rel="subresource"]').attr('rel', 'stylesheet');
});


/* ------------------------------------------------- */
/* 多重送信ブロック */
/* ------------------------------------------------- */
$('.block_send').on('click', function(){
	//全てのフォーカスを外す
	document.activeElement.blur();
	//ブロック処理
	var block_send_target = $(this);
	if($(this).hasClass('block_now')){
		setTimeout(function(){
			$(block_send_target).removeClass('block_now');
		},3000);
		return false;
	} else {
		$(this).addClass('block_now');
		setTimeout(function(){
			$(block_send_target).removeClass('block_now');
		},3000);
		return true;
	}
});

/* ------------------------------------------------- */
/* enterでの送信を阻止する */
/* ------------------------------------------------- */
$("input.not_enter"). keydown(function(e) {
	if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) {
		return false;
	} else {
		return true;
	}
});

/* ------------------------------------------------- */
// 文字数を数える
// <textarea class="js_length" for_target="xxxxxx" maxlength="200"></textarea>
// <div class=".xxxxx"><span class="js_count"></span>
/* ------------------------------------------------- */
if ($('.js_length').length) {

	$('.js_length').on('change, keypress, keyup', function(){
		var target = $(this).attr('for_target');
		var max = Number($(this).attr('maxlength'));
		var text_str = $(this).val();
		var count = Number(text_str.length);
		if ((max + 1) > count){
			$(target).find('.js_count').removeClass('err_text');
			$(target).find('.js_count').text(count+'文字/'+max+'文字');
		} else {
			$(target).find('.js_count').addClass('err_text');
			$(target).find('.js_count').text(max+'文字を超えています');
		}
	});
	$('.js_length').each(function(index, element){
		var target = $(this).attr('for_target');
		var max = Number($(this).attr('maxlength'));
		var text_str = $(this).val();
		var count = Number(text_str.length);
		$(target).find('.js_limit').text('最大'+max+'文字');
		if ((max + 1) >= count){
			$(target).find('.js_count').removeClass('err_text');
			$(target).find('.js_count').text(count+'文字/'+max+'文字');
		} else {
			$(target).find('.js_count').addClass('err_text');
			$(target).find('.js_count').text(max+'文字を超えています');
		}
	});
}


/* ------------------------------------------------- */
/* アコーディオンで開くの簡単実装 */
/* ------------------------------------------------- */
if($('.js_accordion').length){
	$('body').on('click', '.js_accordion', function(){
		$(this).next().slideToggle();
	});
}


/* ------------------------------------------------- */
/* ページの表示が始まる位置※first_positionのclassのところにページを開いたら移動する */
/* ------------------------------------------------- */
if($('.first_position').length){
	var first_position = Number($('.first_position').offset().top) - 30;
	$('body,html').animate({scrollTop: first_position},0);
}

/* ------------------------------------------------- */
/* スマホグローバルメニューの開閉 */
/* ------------------------------------------------- */
if($('#sp_nav').length){
	//スマホグローバルメニューを開く
	$('.head_btn_menu').on('click', function(){
		$('body').addClass('open_sp_nemu');
	});
	//スマホグローバルメニューを閉じる
	$('#sp_nav .close_btn').on('click', function(){
		$('body').removeClass('open_sp_nemu');
	});
}


/* ------------------------------------------------- */
/* スマホ 共通のモーダル表示 */
/* ------------------------------------------------- */
$('.modal_close').on('click', function(){
	var target = $(this);
	$(this).closest('.modal').find('.modal_body').removeClass('active');
	$(this).closest('.modal').removeClass('active_modal');
	setTimeout(function(){
		//閉じるの次が有る時の処理
		var next_modal = '#' + $(target).attr('next-modal');
		if($(next_modal).length){
			$(next_modal).addClass('active_modal');
			$(next_modal).find('.modal_body').addClass('active');
		} else {
			$('body').removeClass('open_modal');
		}
	},150);
});

$('.modal_open').on('click', function(){
	var target_modal_id = '#' + $(this).attr('modal-id');
	$('body').addClass('open_modal');
	$(target_modal_id).addClass('active_modal');
	$(target_modal_id).find('.modal_body').addClass('active');
});



/* ------------------------------------------------- */
/* PC用ヘッダーの検索JS */
/* ------------------------------------------------- */
header_search_href();
$('#header_search_area,#header_search_genre,#header_search_type').on('change',function(){
	header_search_href();
});
function header_search_href(){
	var segment_1 = $('#header_search_type').val();
	var segment_2 = $('#header_search_area').val();
	var segment_3 = $('#header_search_genre').val();
	if(segment_2 == '' && segment_3 != ''){
	   segment_2 = 'all/all/';
	}
	search_href = '/'+segment_1+segment_2+segment_3;
	$('#header_search_btn').attr('href', search_href);
}

// モーダルを開いている間は背景を固定
function stop_scroll(){
	if ($('body').hasClass('fixed')) {
		$('body').removeClass('fixed').css({'top': 0});
		window.scrollTo(0, pos);
	} else {
		pos = $(window).scrollTop();
		$('body').addClass('fixed').css({'top': -pos});
	}
}

//モーダルの処理
$(function () {
	$(document).on("click", ".js_open_search_modal", function (e) {
		e.preventDefault();
		stop_scroll();
		let $this = $(this);
		let target = $this.data('target');
		let type = $this.data('type');
		let target_id = $this.data('target_id');
		let post_data = '&target=' + target + '&type=' + type;
		let default_search = $('.js_default_search');

		// 現在選択中の条件で絞り込まず、直接検索する場合
		if ($this.hasClass('is_direct_search')) {
			post_data = post_data + '&is_direct_search=1';
		}
		// コンセプト
		if (default_search.data('concept') && !$this.hasClass('is_direct_search')) {
			post_data = post_data + '&concept=' + default_search.data('concept');
		}
		// ジャンル
		if (default_search.data('genre') && !$this.hasClass('is_direct_search')) {
			post_data = post_data + '&genre=' + default_search.data('genre');
		}
		// 大エリア
		if (default_search.data('area') && !$this.hasClass('is_direct_search')) {
			post_data = post_data + '&sub_area_parent_id=' + default_search.data('area');
		}
		// 中エリア
		if (default_search.data('mid_area') && !$this.hasClass('is_direct_search')) {
			post_data = post_data + '&sub_area_mid_id=' + default_search.data('mid_area');
		}
		// 小エリア
		if (default_search.data('sub_area') && !$this.hasClass('is_direct_search')) {
			post_data = post_data + '&sub_area_id=' + default_search.data('sub_area');
		}

		// こだわり検索のモーダル(sp)の場合
		if($this.data('feature_modal_open')){
			post_data = post_data + '&feature_modal_open=' + $this.data('feature_modal_open');
		}else{
			// ボタンを非活性に
			$('.result_hit').find('.shop_orange_btn').prop('disabled', true);
		}

		// 検索_typeを追加
		//重複チェック用配列
		let temp_checked_features = [];
		if (!$this.hasClass('is_direct_search')) {
			let temp_checked_flg;
			//自分自身のチェック操作
			if($this.prev().prop('checked')){
				$this.prev().prop('checked',false)
				temp_checked_flg = false;
			}else{
				$this.prev().prop('checked',true)
				temp_checked_flg = true;
			}
			$('input:checkbox[class="js_search_feature"]:checked').each(function(index, element) {
				//クリックしたチェックを複数箇所で同期
				if($(element).val() == $this.prev().val()){
					$(element).prop('checked',temp_checked_flg);
				}
				//チェックしている場合、かつまだ未追加なら対象をpost_dataに追加
				if($(element).prop('checked') && !temp_checked_features.includes($(element).val())){
					temp_checked_features.push($(element).val());
					post_data = post_data + '&search_feature[]=' + $(element).val();
				}
			});
		}else{
			$('input:checkbox[class="js_search_feature"]:checked').each(function(index, element) {
				if($(element).prop('checked') && !temp_checked_features.includes($(element).val())){
					temp_checked_features.push($(element).val());
					post_data = post_data + '&search_feature[]=' + $(element).val();
				}
			});
		}

		if (target_id) {
			post_data = post_data + '&target_id=' + target_id;
		}

		$.ajax({
			type: 'post',
			url: '/post/search',
			dataType: 'json',
			data: post_data,
			success: function (data) {
				if (data[0] === 'OUT') {
					alert('処理に失敗しました。ページを再読み込みしてください。');
				} else if (data[0] === 'OK') {
					// 引き続きモーダルを表示する（モーダル内の要素を置き換える）
					if (data[1] === 'html') {
						if ($('.modal_region_area').length) {
							$("#modal_base").html('');
						}
						$("#modal_base").html(data[2]);
						$("#modal_base").show();
					}
					// 検索件数を反映する（モーダルを閉じて、検索件数を更新する）
					if (data[1] === 'count') {
						if(Number(data[2]) === 0){
							$('.js_shop_type_text').addClass('disactive');
							$('.js_shop_type_text').text('検索の条件を変更してください');
							$('.js_shop_type_text').prop("disabled", true);
						}else{
							$('.js_shop_type_text').removeClass('disactive');
							$('.js_shop_type_text').text('この条件で検索する');
							$('.js_shop_type_text').prop("disabled", false);
						}

						//件数を表示
						$('.js_search_feature_result').html(data[2]);

					}
				}
			},
			error: function (data) {
				alert('通信エラーです。ページを再読み込みしてください。');
			}
		});
		$('.result_hit').find('.shop_orange_btn').prop('disabled', false);
	});
});

//モーダルを閉じる
$(document).on("click", '.js_close_search_modal', function () {
	$("#modal_base").html('');
	$("#modal_base").hide();
	if ($('body').hasClass('fixed')) {
		$('body').removeClass('fixed').css({ 'top': 0 });
		window.scrollTo(0, pos);
	}
});

//文字数をカウントする
$('.js_count').on('change, input', function () {
	var target = $(this).attr('name');
	var text_count = $(this).val().length;
	$('span[for="' + target + '"]').text(text_count);


});

/**
 * 情報の更新順
 */
$(function() {
	$(document).on("click", ".js_oepn_order_modal", function (e) {
		e.preventDefault();
		let post_data = '';
		//重複チェック用配列
		let temp_checked_features = [];
		$('.js_uri_param').each(function(index, element){
			if(!temp_checked_features.includes($(element).data('val'))){
				temp_checked_features.push($(element).data('val'));
				post_data = post_data + '&search_feature[]=' + $(element).data('val');
			}
		})

		$.ajax({
			type:     'post',
			url:      '/post/order_modal',
			dataType: 'json',
			data:post_data,
			success: function(data) {
				if (data[0] === 'OUT') {
					alert('処理に失敗しました。ページを再読み込みしてください。');
				} else if (data[0] === 'OK') {
					if (data[1] === 'html') {
						$("#modal_base").html(data[2]);
						$("#modal_base").show();
					}
				}
			},
			error: function(data) {
				alert('通信エラーです。ページを再読み込みしてください。');
			}
		});
	});
});
