(function (window, document, $) {
  $(function(){

    let majoracdnCnt = 0;
    //区・沿線（大分類）アコーディオン
    $('[data-majoracdn]').on("click",function(){
      var wdid = $(this).attr("data-majoracdn");
      $('[data-majorbox="'+wdid+'"]').slideToggle("fast");
      $(this).toggleClass("active");
    });
    //五十音（中分類）アコーディオン
    $('[data-middleacdn]').on("click", function(){
      var apid = $(this).attr("data-middleacdn");
      $('[data-middlebox="'+apid+'"]').slideToggle("fast");
      $(this).toggleClass("active");

    });



    //すべてクリア
    $('[data-search_clear_btn]').off('click').on('click', function () {
      if (confirm($(this).attr('data-mytxt')+'の検索条件を解除します。よろしいですか？')) {
        let kw = '';
        if(location.href.indexOf('city') !== -1){
          kw = 'area';
        }else{
          kw = 'line';
        }
        let paramOrg  = $('#search_param').val().split('&');
        let param  = [];
        $.each(paramOrg, function(i, v){
          let kv = v.split('=');
          if(kv[0] == kw || kv[0] == kw+'[]' || kv[0] == 'building_id'){
          }else{
            param.push(v);
          }
        });

      param = param.join('&');
      param = myGo(param, true);

        //console.log('param:', param);
        location.href = './?'+param;
      }
    });


    function getareainfo(ward, city, apid, elm){
        var keyword='';
        var p = GetQueryString();
        //console.log('ward:', ward, 'city:', city);
        //console.log('p:', p);
        if(p && p['keyword']) keyword=p['keyword'];

        var aData = {}, sUrl = '/yw/ajax/ajax_rw_showSearchAreaNew.php';
        var param_city='';
        $.each(city, function(index, value){
            param_city+='&city[]='+value;
        });

        $.ajax({
            type: 'post',
            url: sUrl,
            data: 'ward='+ward+param_city+(keyword ? '&keyword='+keyword:''),
            dataType: 'json',
            //async: false,
            success: function(aRes){
                //console.log('aRes:', aRes);
                if(aRes){
                    if(aRes.status){

                      //ローディング非表示
                      $('[data-loadingimg="'+apid+'"]').css('display', 'none');

                      $.each(aRes.city, function(index, value){
                        $('[data-myfld="'+value.code+'"]').text(value.name+'（'+value.count+'件）');

                        if((value.count - 0) == 0){
                          $('input[data-wardid="'+value.code+'"]').prop('disabled', true);
                          $('[data-myfld="'+value.code+'"]').prop('disabled', true).css('opacity', '0.4');
                        }else{
                          $('input[data-wardid="'+value.code+'"]').prop('disabled', false);
                          $('[data-myfld="'+value.code+'"]').prop('disabled', false).css('opacity', '1.0');
                        }
                      });

                      $('[data-middlebox="'+apid+'"]').slideToggle("fast");
                      $(elm).toggleClass("active");

                    }else{
                      if(aRes.message){
                        alert(aRes.message);
                      }
                    }
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown){
                alert( errorThrown );
            }
        });
    }

    function GetQueryString() {
    	if (1 < document.location.search.length) {
    		var query = document.location.search.substring(1);
    		var parameters = query.split('&');

    		var result = new Object();
    		for (var i = 0; i < parameters.length; i++) {
    			var element = parameters[i].split('=');

    			var paramName = decodeURIComponent(element[0]);
    			var paramValue = decodeURIComponent(element[1]);

    			if(paramName.match(/\[\]$/)) {
    				paramName_index = paramName.replace(/\[\]$/, '');
    				if(result[paramName_index]==undefined) result[paramName_index]=[];
    				result[paramName_index].push(decodeURIComponent(paramValue));
    			} else {
    				result[paramName] = decodeURIComponent(paramValue);
    			}
    		}
    			return result;
    		}
    	return null;
    }


    //検索実行ボタン
    $('[data-mybtn^="search_btn_"]').off('click').on('click', function(){

      let btn = $(this).attr('data-mybtn');

      //手入力の検索
      if(btn == 'search_btn_1'){
        let txt = $('#search_text').val();
        if(txt.length == 0){
          alert($(this).attr('data-mytxt')+'を入力してください。');
          return false;
        }
        //console.log('txt:', txt);

        //チェックボックス全クリア
        $('[data-ckbox1]').prop('checked', false);
        $('[data-ckbox2]').prop('checked', false);

        let r = [];

        let param  = '';
        if(location.href.indexOf('city') !== -1){
          //入力された文字列が含まれる地名を条件指定に追加
          $('[data-ckbox2]').each(function(){
            if($(this).val().indexOf(txt) !== -1 && ($(this).attr('data-cnt') - 0) > 0){
              r.push($(this).attr('data-wardid'));
            }
          });
          param  = 'area[]=' + r.join('&area[]=');
          param = funcArea01(param);//その他の条件を付加
        }
        if(location.href.indexOf('trainline') !== -1){
          //入力された文字列が含まれる沿線・駅名を条件指定に追加
          $('[data-ckbox2]').each(function(){
            if($(this).val().indexOf(txt) !== -1 && ($(this).attr('data-cnt') - 0) > 0){
              r.push($(this).attr('data-rosenid')+','+$(this).attr('data-wardid'));
            }
          });
          param  = 'line[]=' + r.join('&line[]=');
          param = funcLine01(param);//その他の条件を付加
        }

        param = myGetPref(param);
        param = myGo(param, true);

        location.href = '/search/?'+param;
        return true;

      }

      //console.log('myFunc2');

      //選択された値を条件指定に追加
      let param = getCheckedParam();

      //県情報を付加
      param = myGetPref(param);
      param = myGo(param, true);

      //console.log('param:', param);

      if($(this).attr('data-mybtn') == 'search_btn_detail'){
        location.href = '/search/search?'+param;
      }else{
        location.href = '/search/?'+param;
      }

    });

    let f = outoAccordion();
    searchBtnDetail(f);


    //「詳細条件を指定」ボタンのON・OFF
    function searchBtnDetailOnOff(p){
      let f = false;
      let param = getCheckedParam();
      //console.log('p:', p);
      //console.log('param:', param);
      if(param.indexOf(p) !== -1){

        let paramOrg  =param.split('&');
        $.each(paramOrg, function(i, v){
          let kv = v.split('=');
          //console.log('kv[0]:', kv[0]);
          if(kv[0] == p || kv[0] == p+'[]'){
            if(kv[1].length > 0){
              //console.log('kv[1].length:', kv[1].length);
              //console.log('kv[1]:', kv[1]);
              f = true;
            }
          }
        });
      }
      searchBtnDetail(f);
    }

    //「詳細条件を指定」ボタンの有効化・無効化設定
    function searchBtnDetail(f){
      if(f){
        $('[data-mybtn="search_btn_detail"]').removeClass('off');//クリック可にする
      }else{
        $('[data-mybtn="search_btn_detail"]').addClass('off');//クリック不可にする
      }
    }

    //選択済みの値に従いアコーディオンを自動オープン
    function outoAccordion(){

      let f = false;//選択されているかどうかのフラグ

      if(location.href.indexOf('city') !== -1){

        $('[data-ckbox2]').each(function(){
          //選択済みのアコーディオンをオープン
          if($(this).prop('checked')){
            let k1k2 = $(this).attr('data-ckbox2');
            let arr = k1k2.split('_');
            let k1 = arr[0];
            let k2 = arr[1];

            //console.log('k1:', k1, 'k2:', k2, 'k1k2:', k1k2 );

            if(!$('[data-majoracdn="majora'+k1+'"]').hasClass('active')){
              $('[data-ckbox1="'+k1+'"]').prop('checked', true);
              $('[data-majoracdn="majora'+k1+'"]').trigger('click', ['auto_area']);

              f = true;
            }
            if(!$('[data-middleacdn="n'+k1k2+'"]').hasClass('active')){
              $('[data-middleacdn="n'+k1k2+'"]').click();
              $('[data-ckbox1="'+k1+'"]').prop('checked', false);
              f = true;
            }
          }
          //選択制御
          $(this).on('click', function(){
            if($(this).prop('checked')){
              let k1k2 = $(this).attr('data-ckbox2');
              let arr = k1k2.split('_');
              let k1 = arr[0];
              let k2 = arr[1];
              $('[data-ckbox1="'+k1+'"]').prop('checked', false);
            }
            searchBtnDetailOnOff('area');//「詳細条件を指定」ボタンのON・OFF
          });
        });
        //選択制御
        $('[data-ckbox1]').each(function(){
          $(this).on('click', function(){
            //if($(this).prop('checked')){
            //  let k1 = $(this).attr('data-ckbox1');
            //  $('[data-ckbox2^="'+k1+'_"]').prop('checked', false);
            //}

            if($(this).prop('checked')){
              let k1 = $(this).attr('data-ckbox1');
              $('[data-ckbox2^="'+k1+'"]').each(function(){
                let cnt = $(this).attr('data-cnt');
                //console.log('cnt:', cnt);
                if((cnt - 0) > 0){
                  //console.log('cnt:', cnt);
                  $(this).prop('checked', true);
                }else{
                  $(this).prop('checked', false);
                }

              });
            }else{
              let k1 = $(this).attr('data-ckbox1');
              $('[data-ckbox2^="'+k1+'"]').each(function(){
                $(this).prop('checked', false);
              });

            }

            searchBtnDetailOnOff('area');//「詳細条件を指定」ボタンのON・OFF
          });
        });
      }
      if(location.href.indexOf('trainline') !== -1){

        $('[data-ckbox2]').each(function(){
          //選択済みのアコーディオンをオープン
          if($(this).prop('checked')){
            let myElm = $(this);
            let k1 = $(this).attr('data-ckbox2');
            if(!$('[data-majoracdn="'+k1+'"]').hasClass('active')){
              $('[data-majoracdn="'+k1+'"]').click();

              //console.log('data-ckbox1:', $('[data-ckbox1="'+k1+'"]').attr('data-ckbox1'));
              //$('[data-ckbox1^="'+k1+'"]').prop('checked', false);

            }
          }
          //選択制御
          $(this).on('click', function(){
            //if($(this).prop('checked')){
            //  let k1 = $(this).attr('data-ckbox2');
            //  $('[data-ckbox1="'+k1+'"]').prop('checked', false);
            //}
            let k1 = $(this).attr('data-ckbox2');
            let f = false;
            $('[data-ckbox2="'+k1+'"').each(function(){
              if($(this).prop('checked')){
                f = true;
                return;
              }
            });
            //console.log('f:', f);
            if(f){
              $('[data-ckbox1^="'+k1+'"]').prop('checked', false);
            }

            searchBtnDetailOnOff('line');//「詳細条件を指定」ボタンのON・OFF
          });
        });
        //選択制御
        $('[data-ckbox1]').each(function(){

          //console.log('data-ckbox1:', $(this).attr('data-ckbox1'));

          $(this).on('click', function(){
            //if($(this).prop('checked')){
            //  let k1 = $(this).attr('data-ckbox1');
            //  $('[data-ckbox2^="'+k1+'"]').prop('checked', false);
            //}
            if($(this).prop('checked')){
              let k1 = $(this).attr('data-ckbox1');
              $('[data-ckbox2^="'+k1+'"]').each(function(){
                let cnt = $(this).attr('data-cnt');
                //console.log('cnt:', cnt);
                if((cnt - 0) > 0){
                  //console.log('cnt:', cnt);
                  $(this).prop('checked', true);
                }else{
                  $(this).prop('checked', false);
                }

              });
            }else{
              let k1 = $(this).attr('data-ckbox1');
              $('[data-ckbox2^="'+k1+'"]').each(function(){
                $(this).prop('checked', false);
              });

            }
            searchBtnDetailOnOff('line');//「詳細条件を指定」ボタンのON・OFF

          });
        });
      }
      return f;
    }



    //その他の条件を付加（エリア以外で）
    function funcArea01(param){
      let paramOrg  = $('#search_param').val().split('&');
      $.each(paramOrg, function(i, v){
        let kv = v.split('=');
        if(kv[0] == 'area' || kv[0] == 'area[]' || kv[0] == 'building_id'){
        }else{
          param = param + '&' + v;
        }
      });
      return param;
    }
    //その他の条件を付加（沿線・駅以外で）
    function funcLine01(param){
      let paramOrg  = $('#search_param').val().split('&');
      $.each(paramOrg, function(i, v){
        let kv = v.split('=');
        if(kv[0] == 'line' || kv[0] == 'line[]' || kv[0] == 'building_id'){
        }else{
          param = param + '&' + v;
        }
      });
      return param;
    }
    //選択された値を条件指定に追加
    function getCheckedParam(){

      let param = '';
      if(location.href.indexOf('city') !== -1){
        let r = [];
        let d1 = [];
        $('[data-wardid]').each(function(){
          if($(this).prop('checked')){
            let wardId = $(this).attr('data-wardid');
            r.push(wardId);

            d1.push($(this).val());
          }
        });
        param  = 'area[]=' + r.join('&area[]=');
        $('#region').val(param);
        param = funcArea01(param);//その他の条件を付加

      }

      if(location.href.indexOf('trainline') !== -1){
        let r  = [];
        let r1 = [];
        let r2 = [];
        let d1 = [];
        let d2 = [];
        $('[data-parentrosenid]').each(function () {
          if ($(this).prop('checked')) {
            let rosenId = $(this).attr('data-parentrosenid');
            r1.push(rosenId);

            d1['A' + rosenId] = $(this).val();
          }
        });
        $('[data-stationid]').each(function () {
          if ($(this).prop('checked')) {
            let rosenId = $(this).attr('data-rosenid');
            let str = rosenId + ',' + $(this).attr('data-stationid');
            r2.push(str);

            let idx = $.inArray(rosenId, r1);
            if(idx >= 0){
              r1.splice(idx, 1);//親の条件を削除
            }

            let str1 = $('[data-parentrosenid="' + rosenId + '"]').val();
            d1['A' + rosenId] = str1;
            //console.log('rosenId:', rosenId);
            //console.log('d2[rosenId]:', d2[rosenId]);
            if (!d2['A' + rosenId]) { d2['A' + rosenId] = []; }
            d2['A' + rosenId].push($(this).val());
          }
        });
        r = $.merge(r1, r2);
        param = 'line[]=' + r.join('&line[]=');
        $('#stationline').val(param);
        param = funcLine01(param);//その他の条件を付加
      }
      return param;
    }


  function setCookie(name, value, days) {
      //console.log('name:', name);
      //console.log('value:', value);
    const date = new Date();
    date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
    const expires = date.toUTCString();
    document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`;
  }

  function setLocalStorage(name, value, days) {
      //console.log('name:', name);
      //console.log('value:', value);
    localStorage.setItem(name, encodeURIComponent(value));
  }

  function setSplitCookie(name, value, days) {
    const maxSize = 3000; // 4KB未満に余裕を持たせる
    const encoded = encodeURIComponent(value);
    const chunks = encoded.match(new RegExp(`.{1,${maxSize}}`, 'g')) || [];
  
      const date = new Date();
      date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
      const expires = date.toUTCString();
  
    // 分割数を保存
    document.cookie = `${name}_count=${chunks.length}; expires=${expires}; path=/`;
  
    chunks.forEach((chunk, i) => {
      document.cookie = `${name}_${i}=${chunk}; expires=${expires}; path=/`;
    });
  }
  function deleteSplitCookie(name) {
    const count = parseInt(getSplitCookie(`${name}_count`), 10) || 0;
  
    for (let i = 0; i < count; i++) {
      document.cookie = `${name}_${i}=; max-age=0; path=/`;
    }
    document.cookie = `${name}_count=; max-age=0; path=/`;
  }
function getSplitCookie(name) {
  const cookies = document.cookie.split(';').reduce((acc, c) => {
    const [k, v] = c.trim().split('=');
    acc[k] = v;
    return acc;
  }, {});

  const count = parseInt(cookies[`${name}_count`], 10);
  if (isNaN(count)) return null;

  let result = '';
  for (let i = 0; i < count; i++) {
    if (!cookies[`${name}_${i}`]) return null;
    result += cookies[`${name}_${i}`];
  }

  return decodeURIComponent(result);
}

  function myGo(param, cookieF) {

      let arr01 = param.split('&');
      let arr02 = [];
      for (let i = 0; i < arr01.length; i++) {
        //console.log('i:', i, 'r:', r[i]);
        let k = arr01[i].replace('=', '_').replace('[]', '');
        arr02[k] = arr01[i];
      }
      //console.log('arr02:', arr02);
      let arr03 = [];
      for (let k in arr02) {
        //console.log('k:', k, 'v:', arr02[k]);
        arr03.push(arr02[k]);
      }
      //console.log('arr03:', arr03);

      arr03 = [...new Set(arr03)];//重複を排除
      let cleanArray = arr03.filter(Boolean);
      arr03 = cleanArray;

      param = arr03.join('&');

      //console.log('param:', param);
      //console.log('param.length:', param.length);

      let myPref01 = '34';
      if($('#mypref').length){
        myPref01 = $('#mypref').val();
      }
      if(cookieF){
        setSplitCookie('CHINTAI_NEW_SEARCH', param.replace('?', ''), 7);
        setCookie('CHINTAI_NEW_PREF', myPref01, 7);
      }
      return param;
  }

  });



  $(window).on("load",function(){
   $(window).on("scroll",function(){
    });
  });

function myGetPref(param){
      let pref = '';
      if(location.href.indexOf('okayama/') !== -1){
        pref = '33';
      }
      if(location.href.indexOf('hiroshima/') !== -1){
        pref = '34';
      }
      if(location.href.indexOf('yamaguchi/') !== -1){
        pref = '35';
      }

        let param0  = [];
        let paramOrg  = param.split('&');
        let f = 0;
        $.each(paramOrg, function(i, v){
          let kv = v.split('=');
          if(kv[0] == 'area' || kv[0] == 'area[]' ){
            if(kv[1].length > 0){
              f = 1;
              param0.push(v);
            }
          }else if(kv[0] == 'pref' ){
          }else{
            param0.push(v);
          }
        });

        //if(f == 0){
        //  param = param0.join('&') + '&area[]='+pref+'&pref='+pref;
        //}else{
        //  param = param0.join('&') + '&pref='+pref;
        //}

        param = param0.join('&') + '&pref='+pref;

  return param;
}
})(window, document, jQuery);