var showMybrandButton = function(data) {
  // 商品詳細とそれ以外（カタログ）で分岐する
  if (!$('#favoriteBtnCommodityPage').length){
    // カタログページ
    if (data.favoriteBrand) {
      // マイブランド登録済み
      $('.favoriteBrand-btn-add').hide();
      $('.favoriteBrand-btn-del').show();
      $('.muteBrand-btn').hide();
      $('.muteBrand-btn-add').hide();
      $('.muteBrand-btn-del').hide();

    } else if (data.muteBrand) {
      // ミュートブランド登録済み
      $('.muteBrand-btn-add').hide();
      $('.muteBrand-btn-del').show();
      $('.favoriteBrand-btn').hide();
      $('.favoriteBrand-btn-add').hide();
      $('.favoriteBrand-btn-del').hide();
    } else {
      // どちらも登録されていない
      $('.favoriteBrand-btn').show();
      $('.favoriteBrand-btn-del').hide();
      $('.favoriteBrand-btn-add').show();
      $('.muteBrand-btn').show();
      $('.muteBrand-btn-del').hide();
      $('.muteBrand-btn-add').show();
    }
    $('.favoriteBrand-btn-login').hide();
  } else {
    // 商品詳細ページ
    if (data.favoriteBrand) {
      // マイブランド登録済み
      $('.favoriteBrand-btn-add').hide();
      $('.favoriteBrand-btn-del').show();
    } else {
      // 登録されていない
      $('.favoriteBrand-btn').show();
      $('.favoriteBrand-btn-del').hide();
      $('.favoriteBrand-btn-add').show();
    }
  }
};
var showNologinMybrandButton = function() {
  // 商品詳細とそれ以外（カタログ）で分岐する
  if (!$('#favoriteBtnCommodityPage').length){
    // カタログページ
    $('.favoriteBrand-btn-add').hide();
    $('.favoriteBrand-btn-del').hide();
    $('.muteBrand-btn').hide();
    $('.muteBrand-btn-add').hide();
    $('.muteBrand-btn-del').hide();
    $('.favoriteBrand-btn-login').show();
  } else {
    // 商品詳細ページ
    $('.favoriteBrand-btn-add').hide();
    $('.favoriteBrand-btn-del').hide();
    $('.favoriteBrand-btn-login').show();
  }
};
var hideAllMybrandButton = function() {
  // 商品詳細とそれ以外（カタログ）で分岐する
  if (!$('#favoriteBtnCommodityPage').length){
    // カタログページ
    $('.favoriteBrand-btn').hide();
    $('.favoriteBrand-btn-add').hide();
    $('.favoriteBrand-btn-del').hide();
    $('.muteBrand-btn').hide();
    $('.muteBrand-btn-add').hide();
    $('.muteBrand-btn-del').hide();
    $('.favoriteBrand-btn-login').hide();
  } else {
    // 商品詳細ページ
    return ;
  }
};

var updateMybrand = function(param) {
  // ログイン
  if ( $('#loggedIn').length ) {
    var data = Object.assign({
      brandName : $('#searchBrandName').val(),
      token : $('#token_container input').val()
    }, param);
    $.ajax({
      type : 'post',
      url : '/mybrand/update',
      data : data
    }).then(function(data) {
      showMybrandButton(data);
      // 商品ページではツールチップ表示
      var brandName =  $('#searchBrandName').val();
      if ($('#favoriteBtnCommodityPage').length){
        $('.favoriteBrand-btn .tooltips').remove();
        if (data.favoriteBrand){
          $('.favoriteBrand-btn').prepend('<span class="tooltips register"><strong>' + brandName + '</strong>を登録しました</span>');
        } else {
          $('.favoriteBrand-btn').prepend('<span class="tooltips remove"><strong>' + brandName + '</strong>を削除しました</span>');
        }
      }
    },function(e) {
      // 通信失敗
      hideAllMybrandButton();
    });  
  }
  // 未ログイン
  else {
    showNologinMybrandButton();
  }
};

var initMybrand = function() {
  // ログイン
  if ( $('#loggedIn').length ) {
    var data = {'brandName' : $('#searchBrandName').val()};
    $.ajax({
      type : 'get',
      url : "/mybrand/get",
      data : data,
      cache: false
    }).then(function(data) {
      showMybrandButton(data);
    }, function(e) {
        // 通信失敗
        hideAllMybrandButton();
    });
  }
  // 未ログイン
  else {
    showNologinMybrandButton();
  }
};

var confirmMuteBrand = function(e) {
  updateMybrand({
    mute : true,
    brandName : $(e).closest('[data-remodal-id=modal_muteBrand]').attr('data-brand-name')
  });
  $('.muteLoading').fadeIn();
  setTimeout(function(){
    var current = $().getCurrentPage();
    if (1 < current) {
      $().movePage(1);
      if ($('.muteLoading').is(':visible')) {$('.muteLoading').fadeOut();}
    } else {
      location.reload();
    }
  }, 1500);
};

var redirectUpdateMybrand = function(){
  // ログインからのリダイレクト後（パラメータcommodityMyBrand）にマイブランド登録する
  var param = getUrlParam('commodityMyBrand');
  if ( param == 'add'){
    // パラメータを削除
    var url = location.href;
    var new_url = url.replace(/\?commodityMyBrand=.*$/,"\?commodityMyBrand=");
    history.replaceState(null,null,new_url);
    // updateMybrand()を動かす
    var data = {'brandName' : $('#searchBrandName').val()};
    $.ajax({
      type : 'get',
      url : "/mybrand/get",
      data : data,
      cache: false
    }).then(function(data){
      if (data.favoriteBrand) {
        // マイブランド登録済み
        $('[data-remodal-id=favoriteBrand-feedback-modal] .heading').text('すでにお気に入りブランドに登録済みです。');
        $('[data-remodal-id=favoriteBrand-feedback-modal]').remodal().open();
      } else {
        // 登録されていない
        updateMybrand({favorite: true});
        $('[data-remodal-id=favoriteBrand-feedback-modal]').remodal().open();
      }
    }, function(){
      return false;
    });
  }
};

$(function() {
  // カタログページ（商品詳細以外）
  if (!$('#favoriteBtnCommodityPage').length){
    var isSingleBrandSearch = $('#searchBrandName').length && $('#searchBrandName').val() && $('#searchBrandName').val().indexOf('|') < 0;
    if (isSingleBrandSearch) {
      // マイブランドON/OFFを表示
      initMybrand();
    } else {
      // 複数ブランド指定のときはボタン非表示
      hideAllMybrandButton();
    }
  } else {
    // 商品詳細ページ
    initMybrand();
    // ログインからのリダイレクト時の処理
    redirectUpdateMybrand();
  }
});