/* HBMIC request page v2: language picker, full menu, one question per screen, live estimate, sends through the Cafe24 form mail module (Anime.js loaded in
) */
/* Estimate: same arithmetic as HB244Finance.calculate (policy V246.1), 130-200kg manufacturing base 450,000 (11/9) */
function hbEstimate(p) {
function num(v) { return Number(String(v == null ? '' : v).split(',').join('')) || 0; }
function riskFor(q) { return q <= 3000 ? 2 : q <= 5000 ? 2 - 0.4 * (q - 3000) / 2000 : q <= 10000 ? 1.6 - 0.265 * (q - 5000) / 5000 : Math.max(1.1, 1.335 - 0.235 * (q - 10000) / 10000); }
function manufacturingFor(w) { return w >= 130 && w <= 200 ? 450000 : w > 200 && w <= 320 ? 600000 : w > 320 && w <= 1000 ? 400000 : w > 1000 && w <= 2000 ? 800000 : w > 2000 ? Math.ceil(w / 1000) * 400000 : 0; }
var quantity = num(p.quantity), capacity = num(p.capacity);
var containerExtra = ['\uC0F4\uD478', '\uD38C\uD504', '\uD06C\uB9BC', '\uC2A4\uD3EC\uC774\uB4DC'].some(function (w) { return (p.container || '').indexOf(w) > -1; }) ? 1 : 0;
var people = 4 + containerExtra + (p.processes || []).reduce(function (t, n) { return t + (n === '\uB2E8\uC0C1\uC790' || n === '\uC218\uCD95\uD544\uB984' ? 2 : 1); }, 0);
var theoreticalWeight = capacity * quantity / 1000;
var lossKg = theoreticalWeight > 0 ? 20 + theoreticalWeight * 0.04 : 0;
var weight = theoreticalWeight + lossKg;
var lossRatio = theoreticalWeight > 0 ? lossKg / theoreticalWeight : 0;
var claims = p.claims || [];
var baseG = { low: 1, mid: 3, high: 6 }[p.formulaGrade || 'low'];
if (baseG == null) baseG = num(p.formulaUnitPrice);
var claimAdd = (claims.indexOf('\uBE44\uAC74') > -1 ? 0.5 : 0) + (claims.indexOf('EWG\uADF8\uB9B0') > -1 ? 0.5 : 0) + (claims.indexOf('\uBBF8\uBC31') > -1 ? 0.3 : 0) + (claims.indexOf('\uC8FC\uB984') > -1 ? 0.3 : 0);
var gPrice = baseG + claimAdd;
var formulaTotal = quantity > 0 ? Math.round(gPrice * weight * 1000) : 0;
var risk = riskFor(quantity), setup = 300000, hourly = 18700;
var hours = quantity > 0 ? Math.max(4, Math.ceil(quantity / 1250)) : 0;
var manufacturingCost = manufacturingFor(weight), productionCost = people * hourly * hours;
var manufacturingCharge = quantity > 0 ? Math.round(manufacturingCost * risk + setup) : 0;
var productionCharge = Math.round(productionCost * risk);
var supplyTotal = formulaTotal + manufacturingCharge + productionCharge;
return {
quantity: quantity, capacity: capacity, theoreticalWeight: theoreticalWeight, lossKg: lossKg, weight: weight, gPrice: gPrice,
formulaTotal: formulaTotal, formulaUnit: quantity > 0 ? formulaTotal / quantity : 0, risk: risk, hours: hours, people: people,
manufacturingCost: manufacturingCost, productionCost: productionCost, manufacturingCharge: manufacturingCharge, productionCharge: productionCharge,
manufacturingChargeEach: quantity ? manufacturingCharge / quantity : 0, productionChargeEach: quantity ? productionCharge / quantity : 0,
supplyTotal: supplyTotal, supplyUnit: quantity ? supplyTotal / quantity : 0,
ready: quantity > 0 && capacity > 0 && gPrice > 0 && Number.isSafeInteger(supplyTotal)
};
}
(function(){
'use strict';
var root=document.getElementById('hbMain'); if(!root) return;
var A=window.anime, RM=matchMedia('(prefers-reduced-motion: reduce)').matches||!A;
/* ---------- language picker + menu (same as other pages) ---------- */
(function () {
var box = root.querySelector('.hb-lang');
if (box) {
var b = box.querySelector('.hb-lang__btn'), l = box.querySelector('.hb-lang__list');
b.addEventListener('click', function () { l.hidden = !l.hidden; b.setAttribute('aria-expanded', l.hidden ? 'false' : 'true'); });
window.addEventListener('click', function (e) { if (!box.contains(e.target)) { l.hidden = true; b.setAttribute('aria-expanded', 'false'); } }, true);
}
var mb = root.querySelector('.hb-menu-btn'), menu = root.querySelector('.hb-menu');
if (mb && menu) {
var close = menu.querySelector('.hb-menu__close');
mb.addEventListener('click', function () { menu.hidden = false; document.documentElement.style.overflow = 'hidden'; if (!RM) A.animate(menu, { clipPath: ['inset(0% 0% 100% 0%)', 'inset(0% 0% 0% 0%)'], duration: 560, ease: 'inOutQuart' }); });
close.addEventListener('click', function () { document.documentElement.style.overflow = ''; menu.hidden = true; });
menu.addEventListener('keydown', function (e) { if (e.key === 'Escape') close.click(); });
}
})();
function $(i){return document.getElementById(i)}
var V={packs:[],claims:[]};
var COS={item:['\uc2a4\ud0a8/\ud1a0\ub108','\uc5d0\uba40\uc83c','\ud06c\ub9bc','\uc570\ud50c/\uc138\ub7fc','\ud074\ub80c\uc9d5','\ubc14\ub514/\ud5e4\uc5b4','\uae30\ud0c0','\uc544\uc9c1 \ubbf8\uc815'],claim:['\ubbf8\ubc31','\uc8fc\ub984\uac1c\uc120','\uc5ec\ub4dc\ub984\uc131 \ud53c\ubd80 \uc801\ud569','\ube44\uac74','EWG \uadf8\ub9b0','\uc800\uc790\uadf9']};
var AIR={item:['\ub514\ud4e8\uc800','\ub8f8\uc2a4\ud504\ub808\uc774','\uc12c\uc720\ud0c8\ucde8\uc81c','\uae30\ud0c0'],claim:['\ud0c8\ucde8\ub825','\ud56d\uade0\ub825','\ube44\uac74','EWG \uadf8\ub9b0']};
function L(){return V.kind==='\ubc29\ud5a5\u00b7\ud0c8\ucde8\uc81c'?AIR:COS}
// packing: order and the two prices given by \ubd80\uc7a5\ub2d8 (others: no price shown)
var PACK=[['\uc778\uc1c4'],['\ub77c\ubca8'],['\ub2e8\uc0c1\uc790'],['\ubd09\ud569\ub77c\ubca8'],['\uc640\ube14\ub7ec'],['\uc218\ucd95\ud544\ub984'],['\uace0\uc8fc\ud30c\uc2e4\ub9c1'],['\uac04\uc9c0'],['\uc5c6\uc74c']];
var CHAN=['\ucfe0\ud321','\ub124\uc774\ubc84','SNS','\ud648\uc1fc\ud551','\uae30\ud0c0'];
var S=[
{ch:0,q:'\uc9c0\uae08 \uc0c1\ud669\uc744 \uc54c\ub824 \uc8fc\uc138\uc694.',h:'\uc0ac\uc5c5\uc790\ub4f1\ub85d\uc744 \ud55c \ub4a4\uc5d0 \uc758\ub8b0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.',biz:1},
{ch:1,q:'\uc5b4\ub5a4 \uc81c\ud488\uc744 \ub9cc\ub4e4\uace0 \uc2f6\uc73c\uc138\uc694?',h:'\ud558\ub098\ub97c \uace0\ub974\uba74 \ub2e4\uc74c\uc73c\ub85c \ub118\uc5b4\uac11\ub2c8\ub2e4.',k:'kind',t:'radio',cls:'one',o:function(){return [['\ud654\uc7a5\ud488','\uc2a4\ud0a8\u00b7\ub85c\uc158\u00b7\ud06c\ub9bc\u00b7\uc138\ub7fc\u00b7\ud074\ub80c\uc9d5 \ub4f1'],['\ubc29\ud5a5\u00b7\ud0c8\ucde8\uc81c','\ub8f8\uc2a4\ud504\ub808\uc774\u00b7\ub514\ud4e8\uc800\u00b7\ud0c8\ucde8\uc81c \ub4f1']]},auto:1},
{ch:1,q:'\uc138\ubd80 \ud488\ubaa9\uc744 \uace8\ub77c \uc8fc\uc138\uc694.',h:function(){return V.kind==='\ubc29\ud5a5\u00b7\ud0c8\ucde8\uc81c'?'\ubaa9\ub85d\uc5d0 \uc5c6\uc73c\uba74 "\uae30\ud0c0"\ub97c \uace0\ub974\uace0 \ud488\ubaa9\uba85\uc744 \uc801\uc5b4 \uc8fc\uc138\uc694.':'\uc815\ud574\uc9c0\uc9c0 \uc54a\uc558\uc73c\uba74 "\uc544\uc9c1 \ubbf8\uc815"\uc744 \uace0\ub974\uc138\uc694.'},k:'item',t:'radio',auto:1,o:function(){return L().item.map(function(x){return [x]})},etc:['\uae30\ud0c0','item_etc','\uae30\ud0c0 \ud488\ubaa9\uba85']},
{ch:1,q:'\uc5b4\ub290 \ub098\ub77c\uc5d0\uc11c \ud314 \uc608\uc815\uc778\uac00\uc694?',h:'\uc8fc\ub85c \ud314 \ub098\ub77c \ud55c \uacf3\uc744 \uace8\ub77c \uc8fc\uc138\uc694. \ud55c\uad6d\uc744 \uace0\ub974\uba74 \uba54\uc778 \ud310\ub9e4 \ucc44\ub110\ub3c4 \uace8\ub77c \uc8fc\uc138\uc694.',k:'where',t:'radio',cls:'three',o:function(){return ['\ud55c\uad6d','\ubbf8\uad6d','\uc911\uad6d','\uc77c\ubcf8','\ubca0\ud2b8\ub0a8','\uc720\ub7fd','\uc911\ub3d9','\uae30\ud0c0 \uad6d\uac00'].map(function(x){return [x]})},chan:1},
{ch:2,q:'\uc6a9\ub7c9\uacfc \uccab \uc8fc\ubb38 \uc218\ub7c9\uc740\uc694?',h:'\ub300\ub7b5\uc801\uc778 \uc22b\uc790\ub3c4 \uad1c\ucc2e\uc2b5\ub2c8\ub2e4.',fields:[['capacity','\uc6a9\ub7c9','50','ml'],['quantity','\uc218\ub7c9','3,000','\uac1c'],['target_price','\ubaa9\ud45c \uacf5\uae09\ub2e8\uac00 (\uac1c\ub2f9)','\uc608) 1,500','\uc6d0']],unknown:1},
{ch:2,q:'\uc5b4\ub290 \uc815\ub3c4 \uc218\uc900\uc744 \uc6d0\ud558\uc138\uc694?',h:'\uacac\uc801 \uae30\uc900\uc785\ub2c8\ub2e4. \uc2e4\uc81c \uc131\ubd84\uc740 \uc0c1\ub2f4\uc5d0\uc11c \uc815\ud569\ub2c8\ub2e4.',k:'grade',t:'radio',auto:1,o:function(){return [['\uae30\ubcf8','\uac00\uaca9\uc744 \uba3c\uc800 \uc0dd\uac01\ud560 \ub54c'],['\ud45c\uc900','\uac00\uaca9\uacfc \ud488\uc9c8\uc758 \uade0\ud615'],['\ud504\ub9ac\ubbf8\uc5c4','\uc6d0\ub8cc\uc640 \uc0ac\uc6a9\uac10\uc744 \uc6b0\uc120\ud560 \ub54c'],['\uae30\ud0c0','\uc6d0\ud558\ub294 \uc81c\ud615\uc744 \uc9c1\uc811 \uc801\uc744 \ub54c']]},etc:['\uae30\ud0c0','grade_etc','\uc6d0\ud558\ub294 \uc81c\ud615']},
{ch:3,q:'\uc6a9\uae30\uc640 \ud3ec\uc7a5\uc740 \uc5b4\ub5bb\uac8c \ud560\uae4c\uc694?',h:'\uc6a9\uae30\ub97c \uace0\ub974\uba74 \ud3ec\uc7a5\uc744 \ucc28\ub840\ub85c \uace0\ub97c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub354 \uc5c6\uc73c\uba74 "\uc5c6\uc74c"\uc744 \ub204\ub974\uc138\uc694.',pack:1},
{ch:3,q:'\uc6d0\ud558\ub294 \uae30\ub2a5\uc774\ub098 \ud45c\uc2dc\uac00 \uc788\ub098\uc694?',h:'\ucc28\ub840\ub85c \uace0\ub97c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5c6\uac70\ub098 \ub2e4 \uace8\ub790\uc73c\uba74 "\uc5c6\uc74c"\uc744 \ub204\ub974\uc138\uc694.',claimseq:1},
{ch:3,q:'\uc5b8\uc81c\ucbe4 \ucd9c\uc2dc\ud558\uace0 \uc2f6\uc73c\uc138\uc694?',h:'',k:'when',t:'radio',o:function(){return ['1~2\uac1c\uc6d4 \uc548','3~4\uac1c\uc6d4 \uc548','6\uac1c\uc6d4 \uc548','\uc544\uc9c1 \ubbf8\uc815'].map(function(x){return [x]})},auto:1},
{ch:4,q:'\uc5f0\ub77d\ubc1b\uc744 \ubd84\uc744 \uc54c\ub824 \uc8fc\uc138\uc694.',h:'*\ub294 \uaf2d \uc801\uc5b4 \uc8fc\uc138\uc694.',fields:[['company','\uc5c5\uccb4\uba85 *',''],['manager','\ub2f4\ub2f9\uc790 *',''],['phone','\ud734\ub300\ud3f0 *','010-0000-0000'],['email','\uc774\uba54\uc77c *','']],req:['company','manager','phone','email']},
{ch:4,q:'\ub354 \uc804\ud558\uace0 \uc2f6\uc740 \ub0b4\uc6a9\uc774 \uc788\ub098\uc694?',h:'\uae30\ud68d\uc11c, \ucc38\uace0 \uc0ac\uc9c4\uc744 \uc62c\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.',memo:1},
{ch:4,q:'\uc774\ub300\ub85c \ubcf4\ub0bc\uae4c\uc694?',h:'\uace0\uce60 \uacf3\uc774 \uc788\uc73c\uba74 \uc624\ub978\ucabd \ud56d\ubaa9\uc744 \ub20c\ub7ec \ub3cc\uc544\uac08 \uc218 \uc788\uc2b5\ub2c8\ub2e4.',review:1}
];
var cur=0,busy=false,busyAt=0,running=[],reached=0;
function esc(t){return String(t).replace(/[&<>"]/g,function(c){return {'&':'&','<':'<','>':'>','"':'"'}[c]})}
function optHTML(name,type,list,cls,isOn){
var inl=/inline/.test(cls||'');
return '
':''); return } });
$('f').addEventListener('change',read);
function sizeDone(){var s=S[cur];if(!s.unknown)return false;return n0(V.capacity)>0&&n0(V.quantity)>0&&n0(V.target_price)>0&&n0(V.capacity)*n0(V.quantity)/1000>=150}
var sizeT=0;
$('f').addEventListener('input',function(e){if(!S[cur].unknown||!/capacity|quantity|target_price/.test(e.target.name))return;clearTimeout(sizeT);if(sizeDone())sizeT=setTimeout(function(){if(sizeDone()&&S[cur].unknown)next()},1500)});
$('f').addEventListener('focusout',function(e){if(!S[cur].unknown)return;setTimeout(function(){var a=document.activeElement;if(sizeDone()&&!(a&&a.matches&&a.matches('#ans input')))next()},60)});
$('f').addEventListener('input',function(e){var t=e.target;if(t.tagName==='TEXTAREA'||(t.tagName==='INPUT'&&!/radio|checkbox|file/.test(t.type)))read(e)});
/* clicking an answer that is already picked also moves on */
$('f').addEventListener('pointerdown',function(e){var lab=e.target.closest('.opt');if(!lab)return;var inp=lab.querySelector('input[type=radio]');lab.dataset.was=inp&&inp.checked?'1':'0'},true);
$('f').addEventListener('click',function(e){var lab=e.target.closest('.opt');if(!lab||lab.dataset.was!=='1')return;var inp=lab.querySelector('input[type=radio]');if(!inp)return;lab.dataset.was='0';
var s=S[cur], n=inp.name, adv=(s.auto&&!(s.etc&&inp.value===s.etc[0]))||n==='channel'||(n==='where'&&inp.value!=='\ud55c\uad6d')||(/^(packs|claims)\d+$/.test(n)&&inp.value==='\uc5c6\uc74c');
if(adv&&ok()){e.preventDefault();next()}},true);
$('next').addEventListener('click',function(){go(cur+1)}); $('back').addEventListener('click',function(){go(cur-1)});
$('sum').addEventListener('click',function(e){var a=e.target.closest('[data-go]');if(a){e.preventDefault();go(+a.getAttribute('data-go'))}});
document.addEventListener('keydown',function(e){if(e.key==='Enter'&&e.target.tagName!=='TEXTAREA'){e.preventDefault();if(!$('next').disabled)go(cur+1)}});
if(/[?&](sent=1|com_formmail_id=3)(&|$)/.test(location.search)){ finish(); return }
render();
if(!RM){A.animate(['#q','#hint','#ans','.right'],{opacity:[0,1],y:[18,0],duration:800,ease:'outExpo',delay:A.stagger(70)})}
})();
/* 11/9 21:05: two scroll stops (first screen / footer) with a fast glide. Replaces CSS scroll-snap, whose speed cannot be set.
Used only when the page is one screen + a footer shorter than the screen. */
(function () {
'use strict';
var H = document.documentElement;
var isProc = !!document.querySelector('.hb-proc, .hb-req');
var RMs = matchMedia('(prefers-reduced-motion: reduce)').matches;
var DUR = 360, raf = 0, lock = 0, ty = 0;
function max() { return Math.max(0, H.scrollHeight - innerHeight); }
function on() { var m = max(); return m > 0 && m < innerHeight && (!isProc || innerWidth > 900); }
function busyUI(t) {
if (!t || !t.closest) return false;
if (t.closest('.pp-sheet, .hb-menu, .hb-lang__list, input, textarea, select')) return true;
return false;
}
function inner(t, dir) { // a scrollable box under the pointer that can still scroll that way keeps the wheel
var r = t && t.closest ? t.closest('.pp-r') : null;
if (!r || r.scrollHeight <= r.clientHeight + 1) return false;
return dir > 0 ? r.scrollTop + r.clientHeight < r.scrollHeight - 1 : r.scrollTop > 0;
}
function go(to) {
cancelAnimationFrame(raf);
var from = window.pageYOffset, d = to - from;
if (Math.abs(d) < 1) return;
if (RMs) { window.scrollTo(0, to); return; }
var t0 = performance.now();
(function step(t) {
var p = Math.min(1, (t - t0) / DUR), e = 1 - Math.pow(1 - p, 3);
window.scrollTo(0, from + d * e);
if (p < 1) raf = requestAnimationFrame(step); else raf = 0;
})(t0);
}
function toward(dir) {
var now = Date.now();
if (now < lock) return;
var target = dir > 0 ? max() : 0;
if (Math.abs(target - window.pageYOffset) < 1) return;
lock = now + DUR + 120;
go(target);
}
window.addEventListener('wheel', function (e) {
if (!on() || e.ctrlKey || busyUI(e.target) || Math.abs(e.deltaY) < Math.abs(e.deltaX)) return;
var dir = e.deltaY > 0 ? 1 : -1;
if (inner(e.target, dir)) return;
e.preventDefault();
toward(dir);
}, { passive: false });
window.addEventListener('touchstart', function (e) { ty = e.touches[0].clientY; }, { passive: true });
window.addEventListener('touchmove', function (e) {
if (!on() || busyUI(e.target)) return;
e.preventDefault();
}, { passive: false });
window.addEventListener('touchend', function (e) {
if (!on() || busyUI(e.target)) return;
var dy = ty - e.changedTouches[0].clientY;
if (Math.abs(dy) > 24) toward(dy > 0 ? 1 : -1);
}, { passive: true });
window.addEventListener('keydown', function (e) {
if (!on() || busyUI(e.target) || busyUI(document.activeElement)) return;
var k = e.key, dir = 0;
if (k === 'PageDown' || k === 'ArrowDown' || k === 'End' || (k === ' ' && !e.shiftKey)) dir = 1;
if (k === 'PageUp' || k === 'ArrowUp' || k === 'Home' || (k === ' ' && e.shiftKey)) dir = -1;
if (!dir) return;
if (k === ' ' && /BUTTON|A/.test((document.activeElement || {}).tagName || '')) return;
e.preventDefault();
toward(dir);
});
// scrollbar drag or anything else: settle on the nearer stop
var st = 0;
window.addEventListener('scroll', function () {
if (!on() || raf) return;
clearTimeout(st);
st = setTimeout(function () {
if (raf) return;
var y = window.pageYOffset, m = max();
if (y > 0 && y < m) go(y > m / 2 ? m : 0);
}, 160);
}, { passive: true });
})();
/* 2026-11-10 hide the estimate box until there is a number (moved from inline page script) */
(function(){var n=document.getElementById("estN"),e=document.getElementById("est");if(!n||!e)return;var D=String.fromCharCode(8212);function u(){var t=(n.textContent||"").trim();e.classList.toggle("is-empty",t===""||t===D||t==="-")}u();new MutationObserver(u).observe(n,{childList:true,characterData:true,subtree:true})})();