(function () {
const ID = 'cbs-cart-float-left';
if (document.getElementById(ID)) return;
const root = document.createElement('div');
root.id = ID;
document.body.appendChild(root);
const style = document.createElement('style');
style.textContent = `
#cbs-cart-float-left{
position:fixed;
left:1.5rem;
bottom:3rem;
}
@media (min-width: 1024px){
#cbs-cart-float-left{
left:2rem;
bottom:2rem;
}
}
#cbs-cart-float-left.hidden{
display:none;
}
#cbs-cart-float-left .btn{
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
width:88px;
height:88px;
padding:10px;
background:#00a63e;
color:#fff;
border-radius:18px;
cursor:pointer;
box-shadow:0 0 0 rgba(0,166,62,.35);
animation:pulseGlow 2.2s infinite;
transition:transform .2s ease;
}
#cbs-cart-float-left .btn:hover{
transform:scale(1.05);
animation-play-state:paused;
}
#cbs-cart-float-left .icon{
display:flex;
align-items:center;
justify-content:center;
margin-bottom:6px;
}
#cbs-cart-float-left svg{
width:32px;
height:32px;
display:block;
}
#cbs-cart-float-left .price{
font-size:15px;
line-height:1;
font-weight:700;
letter-spacing:0.2px;
white-space:nowrap;
}
@keyframes pulseGlow{
0%{
box-shadow:0 0 0 0 rgba(0,166,62,.35);
}
70%{
box-shadow:0 0 0 1rem rgba(0,166,62,0);
}
100%{
box-shadow:0 0 0 0 rgba(0,166,62,0);
}
}
`;
document.head.appendChild(style);
const price = v => (v || 0).toString() + ' ₽';
const getCart = () => {
try {
return JSON.parse(localStorage.getItem('cbs_cart')) || { items:{} };
} catch {
return { items:{} };
}
};
const render = () => {
const cart = getCart();
const items = Object.values(cart.items || {});
const total = items.reduce((s, i) => s + (i.amount || 0), 0);
if (!items.length || total <= 0) {
root.classList.add('hidden');
return;
}
root.classList.remove('hidden');
root.innerHTML = `
<div class="btn">
<div class="icon">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 15.75V18m-7.5-6.75h.008v.008H8.25v-.008Zm0 2.25h.008v.008H8.25V13.5Zm0 2.25h.008v.008H8.25v-.008Zm0 2.25h.008v.008H8.25V18Zm2.498-6.75h.007v.008h-.007v-.008Zm0 2.25h.007v.008h-.007V13.5Zm0 2.25h.007v.008h-.007v-.008Zm0 2.25h.007v.008h-.007V18Zm2.504-6.75h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V13.5Zm0 2.25h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V18Zm2.498-6.75h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V13.5ZM8.25 6h7.5v2.25h-7.5V6ZM12 2.25c-1.892 0-3.758.11-5.593.322C5.307 2.7 4.5 3.65 4.5 4.757V19.5a2.25 2.25 0 0 0 2.25 2.25h10.5a2.25 2.25 0 0 0 2.25-2.25V4.757c0-1.108-.806-2.057-1.907-2.185A48.507 48.507 0 0 0 12 2.25Z" />
</svg>
</div>
<div class="price">${price(total)}</div>
</div>
`;
root.querySelector('.btn').onclick = () => {
const target = document.querySelector('#cbs-header-cta-btn');
if (target) target.click();
};
};
window.addEventListener('cbs-cart-updated', render);
render();
})();
15. АЛЛЕРГОЛОГИЧЕСКИЕ ИССЛЕДОВАНИЯ
15. АЛЛЕРГОЛОГИЧЕСКИЕ ИССЛЕДОВАНИЯ
INV-6260Мультипанель PROTIA Allerqy-Q (аллергия у детей и взрослых, 90 аллергенов: пищевые, респираторные, инсектные и другие) (Multipanel PROTIA Allerqy-Q), IgE
INV-6310Пищевая панель PROTIA Allerqy-Q (аллергия у детей и взрослых, 59 пищевых и респираторных аллергенов) (Food panel PROTIA Allergy-Q), IgE
INV-6601Бета-лактоглобулин, IgG (Beta Lactoglobulin, IgG, F77)
INV-6602Казеин (F78), аллерген-специфические IgG (Casein, IgG, F78))
INV-6603Куриное мясо (F83), аллерген-специфические IgG (Chicken Meat, IgG, F83)
INV-6605Рис (F9), аллерген-специфические IgG (Rice, IgG, F9)
INV-6606Яблоко (F49), аллерген-специфические IgG (Apple, IgG, F49)
INV-6607Томаты (F25), аллерген-специфические IgG (Tomato, IgG, F25)
INV-6608Киви (F84), аллерген-специфические IgG (Kiwi Fruit, IgG, F84)
INV-6609Лимон (F208), аллерген-специфические IgG (Lemon, IgG, F208)
INV-6610Пивные дрожжи (F403), аллерген-специфические IgG (Brewer’s Yeast, IgG, F403)
INV-6611Смесь пищевых аллергенов 2: киви, манго, банан, ананас, IgG (FP50 (F84, F91, F92, F210), Food Panel: Kiwi Fruit, Mango, Banana, Pineapple, IgG)*
INV-6612Смесь пищевых аллергенов 1: апельсин, банан, яблоко, персик, IgG (FP15 (F33, F49, F92, F95), Food Panel: Orange, Banana, Apple, Peach, IgG)*
INV-6613Смесь пищевых аллергенов 3: свинина, куриное мясо, говядина, баранина, IgG (FP73 (F26, F27, F83, F88), Food Panel: Pork, Beef, Chicken Meat, Lamb, IgG)*
INV-6614Плесень Penicillium notatum (М1), аллерген-специфические IgG (Penicillium notatum, IgG, M1)
INV-6615Плесень Cladosporium herbarum (М2), аллерген-специфические IgG (Cladosporium herbarum, IgG, M2)
INV-6616Плесень Aspergillus fumigatus (М3), аллерген-специфические IgG (Aspergillus fumigatus, IgG, M3)
INV-6617Плесень Candida albicans, IgG (M5) (M5 Candida albicans, IgG )
INV-6618Плесень Alternaria tenuis (М6), аллерген-специфические IgG (Alternaria tenuis, IgG, M6)
INV-6619Смесь аллергенов плесени: Penicillium notatum, Cladosporium herbarum, Aspergillus fumigatus, Candida albicans, Alternaria tenuis, IgG (MP1 (M1, M2, M3, M5, M6), Mold Panel 1: Penicillium notatum, Cladosporium herbarum, Aspergillus fumigatus, Candida albicans, Alternaria tenuis, IgG)*
INV-6632Клещ Dermatophagoides pteronyssinus (D1), аллерген-специфические IgG (Dermatophagoides pteronyssinus, IgG, D1)
INV-6633Клещ Dermatophagoides farinae (D2), аллерген-специфические IgG (Dermatophagoides farinae, IgG, D2)
INV-6634Клещ Dermatophagoides microceras (D3), аллерген-специфические IgG (Dermatophagoides microceras, IgG, D3)
INV-6635Домашняя пыль/Greer (Н1), аллерген-специфические IgG (House Dust – Greer, IgG, H1)
INV-6638Кошка, эпителий (Е1), аллерген-специфические IgG (Cat Dander-Epithelium, IgG, E1)
INV-6639Собака, эпителий (Е2), аллерген-специфические IgG (Dog Epithelium, IgG, E2)
INV-6643Яичный белок (F1), аллерген-специфические IgG (Egg White, IgG, F1)
INV-6644Гречневая мука (F11), аллерген-специфические IgG (Buckwheat, IgG, F11)
INV-6645Арахис, IgG (Peanut, IgG, F13)
INV-6646Соевые бобы (F14), аллерген-специфические IgG (Soybean, IgG, F14)
Запишитесь на приём в «Медальянс» онлайн
Запись «день в день» не осуществляется. После оформления онлайн заявки с вами свяжется администратор для подтверждения даты и времени визита.
(function(){if(window.cbsManagerForm)return;var NL=String.fromCharCode(10);var overlay;function meta(){var m={referrer:localStorage.getItem('nooverride_referrer'),utm_source:sessionStorage.getItem('utm_source'),utm_medium:sessionStorage.getItem('utm_medium'),utm_campaign:sessionStorage.getItem('utm_campaign'),utm_content:sessionStorage.getItem('utm_content'),utm_term:sessionStorage.getItem('utm_term')};var lines=[];Object.keys(m).forEach(function(k){var v=m[k];if(v&&v!=='empty'&&v!=='direct')lines.push(k+': '+v);});return lines;}function closeM(){if(overlay)overlay.classList.remove('is-open');}function build(){overlay=document.createElement('div');overlay.className='cbs-mf-overlay';overlay.innerHTML=`<div class='cbs-mf'></div>`;document.body.appendChild(overlay);overlay.addEventListener('click',function(e){if(e.target===overlay)closeM();});document.addEventListener('keydown',function(e){if(e.key==='Escape')closeM();});}function renderForm(){var box=overlay.querySelector('.cbs-mf');box.innerHTML=`<button class='x' type='button' aria-label='Закрыть'>×</button><h3>Написать руководителю</h3><p class='sub'>Обращение направляется руководству клиники «Медальянс».</p><div class='fields'><input id='cbs-mf-name' placeholder='Имя *' autocomplete='name'><textarea id='cbs-mf-msg' placeholder='Текст обращения *'></textarea><input id='cbs-mf-email' placeholder='Email (по желанию)' autocomplete='email' inputmode='email'><input id='cbs-mf-phone' placeholder='Телефон (по желанию)' autocomplete='tel' inputmode='tel'></div><p class='err' role='alert'></p><button class='submit' type='button'>Отправить обращение</button>`;box.querySelector('.x').onclick=closeM;var err=box.querySelector('.err');var ni=box.querySelector('#cbs-mf-name');var mi=box.querySelector('#cbs-mf-msg');function clearErr(){err.classList.remove('show');err.textContent='';}ni.addEventListener('input',function(){ni.classList.remove('invalid');clearErr();});mi.addEventListener('input',function(){mi.classList.remove('invalid');clearErr();});box.querySelector('.submit').onclick=function(){doSubmit(box,err,ni,mi);};}function doSubmit(box,err,ni,mi){function setErr(m){err.textContent=m||'';err.classList.toggle('show',!!m);}ni.classList.remove('invalid');mi.classList.remove('invalid');setErr('');var name=ni.value.trim();var msg=mi.value.trim();var email=box.querySelector('#cbs-mf-email').value.trim();var phone=box.querySelector('#cbs-mf-phone').value.trim();if(name.length<2){ni.classList.add('invalid');setErr('Укажите имя (не менее 2 символов).');return;}if(msg.length<5){mi.classList.add('invalid');setErr('Напишите текст обращения (не менее 5 символов).');return;}if(email&&!(email.indexOf('@')>0&&email.lastIndexOf('.')>email.indexOf('@')+1)){box.querySelector('#cbs-mf-email').classList.add('invalid');setErr('Проверьте email или оставьте поле пустым.');return;}var lines=['✉️ *Обращение к руководителю*',''];lines.push('*Имя*: '+name);lines.push('*Email*: '+(email||'—'));lines.push('*Телефон*: '+(phone||'—'));lines.push('');lines.push('*Сообщение*:');lines.push(msg);var src=meta();if(src.length){lines.push('');lines.push('*Источник*:');lines=lines.concat(src);}var text=lines.join(NL);var btn=box.querySelector('.submit');btn.disabled=true;var old=btn.textContent;btn.textContent='Отправляем...';fetch('https://form.b2b.engineering/api/createLead',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({origin:window.origin,text:text})}).then(function(){box.innerHTML=`<button class='x' type='button' aria-label='Закрыть'>×</button><div class='ok'><h3>Обращение отправлено</h3><p>Руководство клиники свяжется с вами при необходимости</p></div>`;box.querySelector('.x').onclick=closeM;}).catch(function(e){console.error('Ошибка отправки обращения:',e);btn.disabled=false;btn.textContent=old;setErr('Не удалось отправить. Попробуйте позже.');});}window.cbsManagerForm=function(){if(!overlay)build();renderForm();overlay.classList.add('is-open');};})();
document.querySelectorAll('.map-wrap').forEach((wrap) => {
const overlay = wrap.querySelector('.map-overlay');
overlay.addEventListener('click', () => {
wrap.classList.add('active');
});
document.addEventListener('click', (e) => {
if (!e.target.closest('.map-wrap')) {
wrap.classList.remove('active');
}
});
});