var catalog_list; var CATALOG_COOKIE = 'catalog.cart'; var catalogMap = { "1101" : "一条 Links Villa 西郷", "1201" : "i-paletteカタログ", "1301" : "i-tab lite 視聴ご案内リーフレット", "1401" : "ICHIJO meets ACTUS STYLE BOOK", "2000" : "総合免災住宅カタログ", "0101" : "セゾンF", "0102" : "アイ・スマート", "0103" : "アイ・キューブ", "0104" : "セゾンA", "0105" : "ブリアール", "0106" : "セゾン・アシュレ", "0108" : "円熟の家・百年", "0109" : "3階建", "0110" : "グラン・セゾン メロウ ブラウン", "0111" : "グラン・セゾン ジャパン ナチュラル", "0112" : "グラン・セゾン ブロッサム ホワイト", "0113" : "グラン・セゾン コンフォート グレージュ", "0114" : "グラン・スマート メロウ ブラウンン", "0115" : "グラン・スマート ジャパン ナチュラル", "0116" : "グラン・スマート ブロッサム ホワイト", "0117" : "グラン・スマート コンフォート グレージュ", "0201" : "夢の家(I‐HEAD構法)", "0202" : "一条の免震住宅", "0203" : "安全住宅宣言", "0204" : "木質耐震シェルター", "0401" : "全館床暖房", "0402" : "ICHIJO'S SYSTEM KITCHEN", "0403" : "アイ・スマート設備・仕様ガイド", "0404" : "一条の住むだけで地球にやさしい家", "0405" : "i-standard住宅設備カタログ", "0406" : "ICHIJO TILE STYLE", "0407" : "夢発電システム", "0408" : "グラン・セゾン 設備仕様ガイド", "0409" : "ICHIJO 電力大革命", "0410" : "花粉ジェットリーフレット", "0411" : "グラン・スマート 設備仕様ガイド", "0412" : "全館さらぽか空調", "0413" : "防犯ツインLow-Eトリプル樹脂サッシ", "0414" : "ラシック・シリーズ住宅設備カタログ", "0415" : "Home, in Style vol.1", "0416" : "Home, in Style vol.2", "0417" : "「ブラックレーベル」リーフレット", "0205" : "健康へのこだわり", "0601" : "ICHIJO 防災BOOK", "0602" : "夏の不快を0にする家", "0603" : "お願い!ロスガードくん!", "0604" : "奥さま応援BOOK", "0605" : "一条ポカポカ読本~冬の困ったにサヨナラ~", "0606" : "ICHIJO NEWS", "0607" : "キッズデザインの家", "0608" : "くらしラクカタログ", "0701" : "VOICE of ICHIJO ハイドロテクトタイル特集", "0702" : "VOICE of ICHIJO 収納実例特集", "0703" : "VOICE of ICHIJO 全館床暖房特集", "0705" : "VOICE of ICHIJO 3階建て特集", "0706" : "VOICE of ICHIJO 太陽光発電特集", "0707" : "with ICHIJO vol.2 インテリア実例集", "0708" : "VOICE of ICHIJO ペットと暮らす家特集", "0709" : "VOICE of ICHIJO 二世帯住宅特集", "0704" : "VOICE of ICHIJO 平屋特集", "0711" : "VOICE of ICHIJO ユーティリティ特集", "0712" : "VOICE of ICHIJO 玄関シューズクローク特集", "0713" : "VOICE of ICHIJO キッチン特集", "0714" : "VOICE of ICHIJO 20代の家づくり特集", "0715" : "VOICE of ICHIJO おうち時間特集", "0716" : "VOICE of ICHIJO 太陽光&蓄電池特集", "0717" : "VOICE of ICHIJO 子育て特集", "0718" : "VOICE of ICHIJO 「全館さらぽか空調」特集", "0719" : "iikoto別冊「yukikoが行く!」 vol.1", "0720" : "iikoto別冊「yukikoが行く!」 vol.2", "0721" : "VOICE of ICHIJO 寒冷地での暮らし特集", "0722" : "VOICE of ICHIJO セカンドライフ特集", "0723" : "with ICHIJO インテリア実例集", "0724" : "VOICE of ICHIJO 世界から見た一条特集", "0725" : "VOICE of ICHIJO 地震に強い家特集", "0726" : "iikoto別冊「yukikoが行く!」 vol.3", "0727" : "VOICE of ICHIJO 一条の「リビングスタイル」特集", "0728" : "VOICE of ICHIJO 一条の「耐水害住宅」特集", "0501" : "セゾン・アシュレプラン集", "2057" : "iikoto 2024年12月号", "2058" : "iikoto 2025年1月号", "2059" : "iikoto 2025年2月号", "2060" : "iikoto 2025年3月号", "2061" : "iikoto 2025年4月号", "2062" : "iikoto 2025年5月号", "2063" : "iikoto 2025年6月号", "2064" : "iikoto 2025年7月号", "2065" : "iikoto 2025年8月号", "2066" : "iikoto 2025年9月号", "2067" : "iikoto 2025年10月号", "2068" : "iikoto 2025年11月号", "2999" : "iikoto別冊「デリッシュディッシュ 60レシピ集」"}; const catalogPairs = { "0415": "0416", }; if (!catalog_list) { catalog_list = true; $(function () { // liクリックで内部checkboxをトグルし、二重トグルを抑止 $('#catalogArea li') .on('click', function (e) { var $cb = $(this).find('input[type=checkbox]').first(); if ($cb.length) { $cb.trigger('click'); } e.preventDefault(); }) // checkboxクリック時:上限3冊チェック、追加/削除、0415⇔0416連動処理、表示更新 .find('input[type=checkbox]').on('click', function (ev) { ev.stopPropagation(); var c = this; var symbol = c.value.split('_')[0]; // 3冊上限のアラート制御 if (c.checked && getCart().length >= 3) { $('#max').fadeIn(); c.checked = false; return false; } // チェックON/OFFでカート追加/削除 if (c.checked) { addToCart(symbol, c.value.split('_')[1]); } else { removeFromCart(symbol); } if (catalogPairs[symbol]) { var anotherId = catalogPairs[symbol]; var another = $('.catalog_' + anotherId + ' input[type=checkbox]')[0]; if (c.checked && another && !another.checked) { if (getCart().length >= 3) { $('#max').fadeIn(); c.checked = false; removeFromCart(symbol); checkCheckbox(); return false; } $(another).prop('checked', true); addToCart(another.value.split('_')[0], another.value.split('_')[1]); } else if (!c.checked && another && another.checked) { $(another).prop('checked', false); removeFromCart(another.value.split('_')[0]); } } refreshCart(); checkCheckbox(); }); }); } // カートに1冊追加 function addToCart(symbol, label) { var cart = getCart(); if (cart.length >= 3) return; var found = false; $.each(cart, function (c, v) { if (!v) return; if (v.symbol == symbol) { found = true; return false; } }); if (found) return; cart.push({symbol:symbol, label:label, date:Math.floor(new Date / 1E3)}); setCart(cart); } // カートから指定IDを削除(0415⇔相方もあれば同時に削除) function removeFromCart(symbol) { var cart = getCart(); function getLinkedSymbol(sym) { for (const key in catalogPairs) { if (key === sym) return catalogPairs[key]; if (catalogPairs[key] === sym) return key; } return null; } function uncheckUI(sym) { const checkbox = $('.catalog_' + sym + ' input[type=checkbox]'); if (checkbox.length && checkbox.prop('checked')) { checkbox.prop('checked', false); checkbox.parents("li").removeClass("selected"); } } cart = cart.filter(function (item) { return item && item.symbol !== symbol; }); uncheckUI(symbol); const linkedSymbol = getLinkedSymbol(symbol); if (linkedSymbol) { cart = cart.filter(function (item) { return item && item.symbol !== linkedSymbol; }); uncheckUI(linkedSymbol); } setCart(cart); } // Cookie内の選択をチェック状態へ function checkCart() { var cart = getCart(); $.each(cart, function (c, v) { $('#' + v.symbol).attr('checked', 'checked'); }); } // Cookieからカート配列を取得 function getCart() { var cart = $.evalJSON($.cookie(CATALOG_COOKIE)); return cart === null ? [] : cart; } // カート配列をCookieへ保存 function setCart(cart) { $.cookie(CATALOG_COOKIE, $.toJSON(cart), { path: '/inquiry/form/catalog' }); } // カートCookieを削除 function resetCart() { $.cookie(CATALOG_COOKIE, null, { path: '/inquiry/form/catalog' }); } function refreshCart() { populate(); } // 下部の選択中カタログ欄を現在のカート内容で描画 function populate() { var ul = $('#selects'); if (ul.size() == 0) return; ul.empty(); var cart = getCart(); var selected00 = $('#selected00'); $.each(cart, function (c, item) { var o = selected00.clone(true); o.attr('id', 'selected0'+ (c + 1)) o.find('.catalog_image').attr('src', getCatalogImagePath(item.symbol)); o.find('.remove').attr('id', 'select_box_'+ item.symbol); o.append('') o.appendTo(ul); }); // 残り枠をダミーで埋める var selected00b = $('#selected00b'); for (var i = 0; i < 3 - cart.length; i++) { var o = selected00b.clone(true); o.attr('id', 'selected0'+ (i + 1 + cart.length)); o.addClass('remain0'+ (3 - cart.length)); o.appendTo(ul); } if (typeof updateCatalogBoxVisibility === 'function') updateCatalogBoxVisibility(); } function getCatalogImagePath(symbol) { const customImageMap = { "0415": "/inquiry/catalog/img/cat_0415/cover.jpg", "0416": "/inquiry/catalog/img/cat_0416/cover.jpg" }; return customImageMap[symbol] || '/inquiry/catalog/img/cat_' + symbol + '/0.jpg'; } function checkCheckbox() { var cc = $("input[type=checkbox]"); $.each(cc, function(){ if($(this).is(":checked")){ $(this).parents("li").addClass("selected"); }else{ $(this).parents("li").removeClass("selected"); } }); } $(function () { // URLハッシュ指定が0415/0416なら双方を初期追加、それ以外は該当1件を初期追加 var symbol = window.location.href.slice(window.location.href.indexOf('#') + 1); if (symbol === '0415' || symbol === '0416') { if (catalogMap['0415']) { addToCart('0415', catalogMap['0415']); } if (catalogMap['0416']) { addToCart('0416', catalogMap['0416']); } } else if (catalogMap[symbol]) { addToCart(symbol, catalogMap[symbol]); } if ($('#selects').size() == 0) return; // 下部カートの×ボタン:該当IDを解除し、セット状態もリセット $('.remove').off('click').on('click', function () { var symbol = $(this).attr('id').replace('select_box_', ''); var c = $("#"+symbol); c.prop('checked', false); c.parents("li").removeClass("selected"); removeFromCart(symbol); $('.catalog_recommend_button').removeClass('selected'); $('input[name="catalog_set"]').val(""); refreshCart(); return false; }); populate(); checkCart(); checkCheckbox(); // 送信時:0冊→empty表示、4冊以上→max表示、それ以外は送信 $('.chkreq').off('click').on('click', function(){ var cart = getCart(); if (cart.length === 0){ $('#empty').fadeIn(); return false; }else if (cart.length > 3){ $('#max').fadeIn(); return false; }else{ $(this).submit(); return true; } }); }); $(function () { const catalogSets = { "01": ['.catalog_0606', '.catalog_2000', '.catalog_0715'], "02": ['.catalog_0114', '.catalog_0102', '.catalog_0105'], "03": ['.catalog_0704', '.catalog_0703', '.catalog_0716'], "04": ['.catalog_0608', '.catalog_0702', '.catalog_0713'], "05": ['.catalog_0604', '.catalog_0607', '.catalog_0717'], "06": ['.catalog_0415', '.catalog_0416', '.catalog_0608'] }; // セレクタからカタログIDを抽出 function selectorToSymbol(sel){ var m = String(sel).match(/catalog_(\d{4})/); return m ? m[1] : null; } // 現在のカート内ID一覧を取得 function getCurrentSymbols(){ try { return (getCart() || []).map(function(it){ return it && it.symbol; }).filter(Boolean); } catch(e){ return []; } } // セットを追加した際に合計が3冊以内か判定 function canMergeSet(setId){ var set = catalogSets[setId] || []; var setSymbols = set.map(selectorToSymbol).filter(Boolean); var current = getCurrentSymbols(); var missing = setSymbols.filter(function(s){ return current.indexOf(s) === -1; }); var willCount = current.length + missing.length; return willCount <= 3; } // cookie→checkboxの同期(ブラウザバックのズレ防止) function syncFromCartToCheckboxes() { var picked = new Set(getCart().map(function(it){ return it && it.symbol; })); $('.catCheck').each(function(){ var id = $(this).attr('id'); var should = picked.has(id); if ($(this).prop('checked') !== should) { $(this).prop('checked', should); } }); checkCheckbox(); } function reconcileSelectedClasses() { $('.listCatalog li').each(function(){ var $li = $(this); var $cb = $li.find('input[type=checkbox]').first(); if ($cb.length) { $li.toggleClass('selected', $cb.prop('checked')); } }); } // おすすめセット選択:上限チェック 不足分だけ順にON→hiddenにセットID反映→再描画 function triggerCatalogSet(setId) { const catalogs = catalogSets[setId] || []; syncFromCartToCheckboxes(); reconcileSelectedClasses(); if (!canMergeSet(setId)) { $('#max').fadeIn(); return false; } catalogs.forEach(selector => { const $el = $(selector); const $cb = $el.find('input[type=checkbox]').first(); if (!$cb.length) return; if (!$cb.prop('checked')) { $cb.trigger('click'); } }); $('input[name="catalog_set"]').val(setId); refreshCart(); syncFromCartToCheckboxes(); reconcileSelectedClasses(); return true; } // 現在のチェック状態が特定セットの3冊と完全一致か確認 function isSetSelected(setId) { const catalogs = catalogSets[setId] || []; return catalogs.every(selector => { const $cb = $(selector).find('input[type=checkbox]').first(); return $cb.length ? $cb.prop('checked') : false; }); } // おすすめボタン:選択実行(上限ならモーダル表示) $('.catalog_recommend_button').off('click').on('click', function (e) { const $btn = $(this); const setId = $btn.data('catalog'); $btn.addClass('selected'); const ok = triggerCatalogSet(setId); if (ok === false) { $btn.removeClass('selected'); } $(window).scrollTop(e.pageY - e.clientY); }); // ブラウザバック時にcookie→UIを再同期し表示ズレを解消 window.addEventListener('pageshow', function (ev) { if (ev.persisted || (performance.getEntriesByType && performance.getEntriesByType('navigation')[0]?.type === 'back_forward')) { syncFromCartToCheckboxes(); reconcileSelectedClasses(); } }); // 送信直前:おすすめセット完全一致ならhidden反映、未一致なら空に $('.btFormSubmit').off('click').on('click', function () { let matched = false; $.each(catalogSets, function (setId, selectors) { if (isSetSelected(setId)) { $('.catalog_recommend_button[data-catalog="' + setId + '"]').addClass("selected"); $('input[name="catalog_set"]').val(setId); matched = true; return false; } }); if (!matched) { $('input[name="catalog_set"]').val(""); } }); });