// JavaScript Document

function checkBlue(){
  //=============================================================================
  // 親がクリックされた場合（.js-tree-parent）
  // →自身のチェック状態を子に反映させる
  //=============================================================================
  $('.js-tree-parent').on('change', function() {
    var $this, isChecked, groupId, selector, $el;

    $this = $(this);
    isChecked = $this.prop('checked');
    groupId = $this.data('group_id');

    selector = '.js-tree-child[data-group_id=' + groupId + ']';
    $(selector).each(function(i, el) {
      $el = $(el);

      $el.prop('checked', isChecked);
      $el.trigger('change');
    });
  });

  //=============================================================================
  // 子がクリックされた場合（.js-tree-child）
  // →子のチェックが１つでもあれば親をチェック状態にする
  // →子のチェックが１つでもあればツリーを展開する
  //=============================================================================
  $('.js-tree-child').on('change', function() {
    var $this, className, match, checkCount, groupId, childSelector, parentSelector,childCount;

    $this = $(this);
    className = $this.closest('tr').attr('class');
    groupId = $this.data('group_id');

    // 同じグループの子のチェック数
    childSelector = '.js-tree-child[data-group_id=' + groupId + ']';
	childCount = $(childSelector).length;
    checkCount = $(childSelector + ':checked').length;
	

    // グループの親のチェック状態を変更
    parentSelector = '.js-tree-parent[data-group_id=' + groupId + ']';
    $(parentSelector).prop('checked', checkCount > 0);

	
    // ツリーを展開
    match = /sb_([^\s]+)/.exec(className);
    if (checkCount > 0) {
      $('#' + match[1]).not('.nowmn').trigger('click')  
    }
	
	if (checkCount > 0) {
      $(parentSelector).addClass('opacity')  
    }
	
	if (checkCount < 1) {
      $(parentSelector).removeClass('opacity')   
    }
	if (checkCount == childCount) {
      $(parentSelector).removeClass('opacity')   
    }
	



  }
  
  );
  
  
  

  /*タブ切り替えの挙動です*/

  $("ul#chgtab li").click(function(){

    $("ul#chgtab li").removeClass("now");
    $(this).addClass("now");


    var tgttab = $(this).attr("id")+"area";
    $("div.tabarea").css("display","none");
    $("div#"+tgttab).css("display","block");
    
    // 操作ボタン表示切り替え
    togglePstArea();
  });

  // セルの子要素のクリックイベントの伝搬を抑制
  $('.sername').children().on('click', function(e) {
    e.stopPropagation();
  });
}

$(function() {
  //=============================================================================
  // ツリーを開く／閉じる
  //=============================================================================
  $(document).on('click', '.sername', function() {
    var $td, $tr, $el, isExpanded;
    
    $td = $(this);
    $tr = $td.parent();

    isExpanded = !$td.hasClass('nowmn');

    // シリーズが切り替わるまで行の表示状態を切り替え
    $tr.nextAll().each(function(i, el) {
      $el = $(el);

      if (! $el.hasClass('sbmn') && ! $el.hasClass('sbds')) {
        return false;
      }

      $el.toggleClass('nowchg', isExpanded);
    });

    // アイコンを切り替え
    $td.toggleClass('nowmn', isExpanded);
  });

  //=============================================================================
  // 操作ボタン表示切り替え
  //=============================================================================
  $(document).on('change', '.js-tree-child', function() {
    togglePstArea();
  });

  //=============================================================================
  // リセット
  //=============================================================================
  $(document).on('click', '.js-btn-reset', function(e) {
    var $checkbox;

    e.preventDefault();

    $checkbox = $(':checkbox');
    $checkbox.prop('checked', false);
    $checkbox.trigger('change');
  });
});

/**
 * 操作ボタン表示切り替え
 */
function togglePstArea() {
  if (!! $('.js-tree-child:visible:checked').length) {
    $('#pstarea').show();
  } else {
    $('#pstarea').hide();
  }
}
