var opts = { // Профили profiles: { rehau_blitz: { title: 'Rehau Blitz', img: 'veka-48.png', info: '', // рама frame_price: 930, frame_width: 60, // цена импоста окна в р. impost_width: 78, impost_price: 470, // цена импоста двери в р. door_impost_width: 78, door_impost_price: 470, // профиль (ширина, цена) profile_width: 60, profile_price: 370, // пластиковая заглушка в дверь plastic_cover_price: 100 }, rehau_sib: { title: 'Rehau Sib', img: 'veka-48.png', info: '', // рама frame_price: 1040, frame_width: 70, // цена импоста окна в р. impost_width: 78, impost_price: 627, // цена импоста двери в р. door_impost_width: 78, door_impost_price: 627, // профиль (ширина, цена) profile_width: 70, profile_price: 370, // пластиковая заглушка в дверь plastic_cover_price: 100 }, rehau_delight: { title: 'Rehau Delight', img: 'veka-48.png', info: '', // рама frame_price: 1172, frame_width: 70, // цена импоста окна в р. impost_width: 78, impost_price: 702, // цена импоста двери в р. door_impost_width: 78, door_impost_price: 702, // профиль (ширина, цена) profile_width: 70, profile_price: 402, // пластиковая заглушка в дверь plastic_cover_price: 100 }, rehau_brilliant: { title: 'Rehau Brilliant', img: 'veka-48.png', info: '', // рама frame_price: 1250, frame_width: 70, // цена импоста окна в р. impost_width: 78, impost_price: 810, // цена импоста двери в р. door_impost_width: 78, door_impost_price: 810, // профиль (ширина, цена) profile_width: 70, profile_price: 470, // пластиковая заглушка в дверь plastic_cover_price: 100 } }, // Фурнитура furnitures: { maco: { title: 'Maco', // цена фурнитуры для открывающегося окна в сторону price_side: 20, // цена фурнитуры для открывающегося окна в сторону и вверх price_side_up: 320, // цена фурнитуры на дверь price_door: 100, // цена фурнитуры на дверь с открыванием вверх price_door_up: 150 }, }, // стеклопакеты glasses: { normal: { title: 'Стандартный', price: 413 }, heat_protect: { title: 'Теплосберегающий', price: 700 }, sun_protect: { title: 'Солнцезащитный', price: 1188 }, noise_protect: { title: 'Шумозащитный', price: 800 }, }, // подоконники windowsills: { none: { title: 'Нет', price: 0 }, w150: { title: '150мм', price: 258 }, w200: { title: '200мм', price: 319 }, w250: { title: '250мм', price: 401 }, w300: { title: '300мм', price: 465 }, w350: { title: '350мм', price: 480 }, w400: { title: '400мм', price: 593 }, w450: { title: '450мм', price: 607 }, w500: { title: '500мм', price: 722 } }, // отливы cills: { none: { title: 'Нет', price: 0 }, w0_100: { title: 'менее 100мм', price: 141 }, w100_150: { title: '100-150мм', price: 177 }, w150_200: { title: '150-200мм', price: 207 }, w200_250: { title: '200-250мм', price: 235 }, w250_400: { title: '250-400мм', price: 327 } }, // Место монтажа places: { wood: { title: 'Деревянный дом', coef: 1100 }, brick: { title: 'Кирпичный дом', coef: 1200 }, panel: { title: 'Панельный дом', coef: 870 } }, // размер пространства под редактор окна в точках [ширина, высота] layout_size: [420, 380], // описание типов секций окна section_types: { // идентификатор типа секции (используется при задании допустимых типов в конфигурации секции окна) leaf_x: { // заголовок типа секции title: 'Глухая створка', // картинка секции img: 'leaf-x.png' }, leaf_r: { title: 'Повортная вправо', img: 'leaf-r.png', profile: true, furniture_side: true }, leaf_ru: { title: 'Повортная/откидная правая', img: 'leaf-ru.png', profile: true, furniture_side_up: true }, leaf_l: { title: 'Повортная влево', img: 'leaf-l.png', profile: true, furniture_side: true }, leaf_lu: { title: 'Повортно/откидная левая', img: 'leaf-lu.png', profile: true, furniture_side_up: true }, door_l: { title: 'Дверь левая', img: 'door-l.png', door: true }, door_lu: { title: 'Дверь левая с откр-ем вверх', img: 'door-lu.png', door_up: true }, door_r: { title: 'Дверь правая', img: 'door-r.png', door: true }, door_ru: { title: 'Дверь правая с откр-ем вверх', img: 'door-ru.png', door_up: true } }, layout_groups: { windows: { title: 'Окна', opts: { layouts: { lay1: { title: 'Односекционное окно', img: 'lay1-thumb.png', translate: [25, 15], background_d: { img: 'lay1-bg.png', pos: [120, 20] }, sections: { leaf: { types: ['leaf_x', 'leaf_l', 'leaf_lu', 'leaf_r', 'leaf_ru'], rect: [160, 80, 100, 200], title: 'Створка', label_rect: [170, 230, 80, 20] } }, sizers: { width: { title: 'Ширина', align: 'up', pos: [160, 80], length: 100, value: 800, basket_width: true }, height: { title: 'Высота', align: 'right', pos: [260, 80], length: 200, value: 1500, basket_height: true } }, calc: function () { var mats = initMaterials(), width = opts.layout.sizers.width, height = opts.layout.sizers.height; checkGE(width, 500, 'Ширина окна не может быть меньше 500мм'); checkGE(height, 500, 'Высота окна не может быть меньше 500мм'); var w = opts.profile.frame_width * 2; calcSection(mats, opts.layout.sections.leaf.type, width.value - w, height.value - w, 0); mats.frame += width.value * 2 + height.value * 2; mats.windowsills += width.value; mats.cills += width.value; return mats; } }, lay2: { title: 'Двухсекционное окно', img: 'lay2-thumb.png', translate: [25, 15], sections: { leaf_left: { types: ['leaf_x', 'leaf_r', 'leaf_ru'], rect: [110, 80, 100, 200], title: 'Левая', label_rect: [120, 230, 80, 20] }, leaf_right: { types: ['leaf_x', 'leaf_l', 'leaf_lu'], rect: [210, 80, 100, 200], title: 'Правая', label_rect: [220, 230, 80, 20] } }, sizers: { width: { title: 'Общая ширина окна', align: 'up', pos: [110, 80], length: 200, value: 1500, basket_width: true }, height: { title: 'Высота', align: 'right', pos: [310, 80], length: 200, value: 1500, basket_height: true }, left_width: { title: 'Ширина левой створки', align: 'down', pos: [110, 280], length: 100, value: 750 } }, calc: function () { var mats = initMaterials(), width = opts.layout.sizers.width, height = opts.layout.sizers.height, left_width = opts.layout.sizers.left_width, iw = opts.profile.impost_width, fw = opts.profile.frame_width; checkGE(width, 1000, 'Общая ширина окна не может быть меньше 1000мм'); checkGE(left_width, 500, 'Ширина левой створки окна не может быть меньше 500мм'); checkLE(left_width, width.value - 500, 'Ширина правой створки окна не может быть меньше 500мм'); checkGE(height, 500, 'Высота окна не может быть меньше 500мм'); mats.impost += height.value - fw * 2; mats.frame += width.value * 2 + height.value * 2; mats.windowsills += width.value; mats.cills += width.value; calcSection(mats, opts.layout.sections.leaf_left.type, left_width.value - fw - iw / 2, height.value - fw * 2, 0); calcSection(mats, opts.layout.sections.leaf_right.type, width.value - left_width.value - fw - iw / 2, height.value - fw * 2, 0); return mats; } }, 'lay3': { 'title': 'Трёхсекционное окно', 'img': 'lay3-thumb.png', translate: [25, 15], 'background_': { 'img': 'lay3-bg.png', 'pos': [40, 20] }, 'sections': { 'leaf_left': { 'types': ['leaf_x', 'leaf_r', 'leaf_ru'], rect: [60, 80, 100, 200], title: 'Левая', label_rect: [70, 230, 80, 20] }, 'leaf_center': { 'types': ['leaf_x', 'leaf_l', 'leaf_lu', 'leaf_r', 'leaf_ru'], rect: [160, 80, 100, 200], title: 'Центральная', label_rect: [170, 230, 80, 20] }, 'leaf_right': { 'types': ['leaf_x', 'leaf_l', 'leaf_lu'], rect: [260, 80, 100, 200], title: 'Правая', label_rect: [270, 230, 80, 20] } }, 'sizers': { 'width': { 'title': 'Общая ширина', 'align': 'up', 'pos': [60, 80], 'length': 300, 'value': 2100, basket_width: true }, 'height': { 'title': 'Высота', 'align': 'right', 'pos': [360, 80], 'length': 200, 'value': 1500, basket_height: true }, 'left_width': { 'title': 'Ширина левой створки', 'align': 'down', 'pos': [60, 280], 'length': 100, 'value': 700 }, 'right_width': { 'title': 'Ширина правой створки', 'align': 'down', 'pos': [260, 280], 'length': 100, 'value': 700 } }, calc: function () { var mats = initMaterials(), width = opts.layout.sizers.width, height = opts.layout.sizers.height, left_width = opts.layout.sizers.left_width, right_width = opts.layout.sizers.right_width, iw = opts.profile.impost_width, fw = opts.profile.frame_width, lh = height.value - fw * 2; checkGE(width, 1500, 'Общая ширина окна не может быть меньше 1500мм'); checkGE(left_width, 500, 'Ширина левой створки окна не может быть меньше 500мм'); checkGE(right_width, 500, 'Ширина правой створки окна не может быть меньше 500мм'); checkLE(left_width, width.value - right_width.value - 500, 'Ширина центральной створки окна не может быть меньше 500мм'); checkGE(height, 500, 'Высота окна не может быть меньше 500мм'); mats.impost += (height.value - fw * 2) * 2; mats.frame += width.value * 2 + height.value * 2; mats.windowsills += width.value; mats.cills += width.value; calcSection(mats, opts.layout.sections.leaf_left.type, left_width.value - fw - iw / 2, lh, 0); calcSection(mats, opts.layout.sections.leaf_center.type, width.value - left_width.value - right_width.value - iw, lh, 0); calcSection(mats, opts.layout.sections.leaf_right.type, right_width.value - fw - iw / 2, lh, 0); return mats; } }, lay4: { title: 'Четырёхсекционное окно', img: 'lay4-thumb.png', translate: [-55, 15], sections: { leaf_left: { types: ['leaf_x', 'leaf_r', 'leaf_ru'], rect: [60, 80, 100, 200], title: 'Левая', label_rect: [70, 230, 80, 20] }, leaf_left_center: { types: ['leaf_x', 'leaf_l', 'leaf_lu', 'leaf_r', 'leaf_ru'], rect: [160, 80, 100, 200], title: 'Центральная левая', label_rect: [170, 230, 80, 20] }, leaf_right_center: { types: ['leaf_x', 'leaf_l', 'leaf_lu', 'leaf_r', 'leaf_ru'], rect: [260, 80, 100, 200], title: 'Центральная правая', label_rect: [270, 230, 80, 20] }, leaf_right: { 'types': ['leaf_x', 'leaf_l', 'leaf_lu'], rect: [360, 80, 100, 200], title: 'Правая', label_rect: [370, 230, 80, 20] } }, sizers: { width: { title: 'Общая ширина', align: 'up', pos: [60, 80], length: 400, value: 2800, basket_width: true }, height: { title: 'Высота', align: 'right', pos: [460, 80], length: 200, value: 1500, basket_height: true }, left_width: { title: 'Ширина левой створки', align: 'down', pos: [60, 280], length: 100, value: 700 }, right_width: { title: 'Ширина правой створки', align: 'down', pos: [360, 280], length: 100, value: 700 } }, calc: function () { var mats = initMaterials(), width = opts.layout.sizers.width, height = opts.layout.sizers.height, left_width = opts.layout.sizers.left_width, right_width = opts.layout.sizers.right_width, iw = opts.profile.impost_width, fw = opts.profile.frame_width, lh = height.value - fw * 2; checkGE(width, 2000, 'Общая ширина окна не может быть меньше 2000мм'); checkGE(left_width, 500, 'Ширина левой створки окна не может быть меньше 500мм'); checkGE(right_width, 500, 'Ширина правой створки окна не может быть меньше 500мм'); checkLE(left_width, width.value - right_width.value - 1000, 'Общая ширина центральных створок окна не может быть меньше 1000мм'); checkGE(height, 500, 'Высота окна не может быть меньше 500мм'); mats.impost += (height.value - fw * 2) * 2; mats.frame += width.value * 2 + height.value * 2; mats.windowsills += width.value; mats.cills += width.value; calcSection(mats, opts.layout.sections.leaf_left.type, left_width.value - fw - iw / 2, lh, 0); var cw = width.value - left_width.value - right_width.value - iw * 2; calcSection(mats, opts.layout.sections.leaf_left_center.type, cw, lh, 0); calcSection(mats, opts.layout.sections.leaf_right_center.type, cw, lh, 0); calcSection(mats, opts.layout.sections.leaf_right.type, right_width.value - fw - iw / 2, lh, 0); return mats; } } } } }, // balcony: { // title: 'Балконы/Лоджии', // opts: { // layouts: { // // } // } // }, doors: { title: 'Двери', opts: { layouts: { lay_d: { title: 'Дверь', img: 'layd-thumb.png', translate: [190, 40], sections: { door: { types: ['door_l', 'door_lu'], rect: [0, 0, 100, 300], title: 'Дверь', label_rect: [10, 230, 80, 20] } }, sizers: { width: { title: 'Ширина', align: 'down', pos: [0, 300], length: 100, value: 700, basket_width: true }, height: { title: 'Высота', align: 'right', pos: [100, 0], length: 300, value: 2200, basket_height: true } }, calc: function () { var mats = initMaterials(), door_width = opts.layout.sizers.width, door_height = opts.layout.sizers.height, fw = opts.profile.frame_width, lh = door_height.value - fw * 2; checkGE(door_width, 500, 'Ширина двери не может быть меньше 500мм'); checkGE(door_height, 1800, 'Высота двери не может быть меньше 1800мм'); mats.frame += door_width.value * 2 + door_height.value * 2; calcSection(mats, opts.layout.sections.door.type, door_width.value - fw * 2, door_height.value - fw * 2, lh); return mats; } }, lay1d: { title: 'Односекционное окно и дверь', img: 'lay1d-thumb.png', translate: [80, 0], sections: { leaf: { types: ['leaf_x', 'leaf_r', 'leaf_ru'], rect: [60, 40, 100, 200], title: 'Окно', label_rect: [70, 190, 80, 20] }, door: { types: ['door_l', 'door_lu'], rect: [160, 40, 100, 300], title: 'Дверь', label_rect: [170, 270, 80, 20] } }, sizers: { width: { title: 'Ширина', align: 'up', pos: [60, 40], length: 200, value: 1450, basket_width: true }, height: { title: 'Высота окна', align: 'left', pos: [60, 40], length: 200, value: 1500, basket_height: true }, door_width: { title: 'Ширина двери', align: 'down', pos: [160, 340], length: 100, value: 700 }, door_height: { title: 'Высота двери', align: 'right', pos: [260, 40], length: 300, value: 2200 } }, calc: function () { var mats = initMaterials(), width = opts.layout.sizers.width, height = opts.layout.sizers.height, door_width = opts.layout.sizers.door_width, door_height = opts.layout.sizers.door_height, iw = opts.profile.impost_width, fw = opts.profile.frame_width, lh = height.value - fw * 2; checkGE(width, door_width.value + 500, 'Ширина створки окна не может быть меньше 500мм'); checkGE(door_width, 500, 'Ширина двери не может быть меньше 500мм'); checkGE(height, 500, 'Высота окна не может быть меньше 500мм'); checkGE(door_height, height.value, 'Высота двери не может быть меньше высоты окна'); mats.frame += (width.value - door_width.value) * 2 + height.value * 2 + door_width.value * 2 + door_height.value * 2; mats.windowsills += width.value - door_width.value; mats.cills += width.value - door_width.value; calcSection(mats, opts.layout.sections.leaf.type, width.value - door_width.value - fw * 2, lh, 0); calcSection(mats, opts.layout.sections.door.type, door_width.value - fw * 2, door_height.value - fw * 2, lh); return mats; } }, lay2d: { title: 'Двухсекционное окно и дверь', img: 'lay2d-thumb.png', translate: [30, 0], sections: { leaf_left: { types: ['leaf_x', 'leaf_r', 'leaf_ru'], rect: [60, 40, 100, 200], title: 'Левая', label_rect: [70, 190, 80, 20] }, leaf_right: { types: ['leaf_x', 'leaf_l', 'leaf_lu', 'leaf_r', 'leaf_ru'], rect: [160, 40, 100, 200], title: 'Правая', label_rect: [170, 190, 80, 20] }, door: { types: ['door_l', 'door_lu'], rect: [260, 40, 100, 300], title: 'Дверь', label_rect: [270, 270, 80, 20] } }, sizers: { width: { title: 'Ширина', align: 'up', pos: [60, 40], length: 300, value: 2200, basket_width: true }, height: { title: 'Высота окна', align: 'left', pos: [60, 40], length: 200, value: 1500, basket_height: true }, left_width: { title: 'Ширина левой створки', align: 'down', pos: [60, 240], length: 100, value: 750 }, door_width: { title: 'Ширина двери', align: 'down', pos: [260, 340], length: 100, value: 700 }, door_height: { title: 'Высота двери', align: 'right', pos: [360, 40], length: 300, value: 2200 } }, calc: function () { var mats = initMaterials(), width = opts.layout.sizers.width, height = opts.layout.sizers.height, left_width = opts.layout.sizers.left_width, door_width = opts.layout.sizers.door_width, door_height = opts.layout.sizers.door_height, iw = opts.profile.impost_width, fw = opts.profile.frame_width, lh = height.value - fw * 2; checkGE(width, 1500, 'Общая ширина окна не может быть меньше 1500мм'); checkGE(left_width, 500, 'Ширина левой створки окна не может быть меньше 500мм'); checkGE(door_width, 500, 'Ширина двери не может быть меньше 500мм'); checkLE(left_width, width.value - door_width.value - 500, 'Ширина правой створки окна не может быть меньше 500мм'); checkGE(height, 500, 'Высота окна не может быть меньше 500мм'); checkGE(door_height, height.value, 'Высота двери не может быть меньше высоты окна'); mats.impost += height.value - fw * 2; mats.frame += (width.value - door_width.value) * 2 + height.value * 2 + door_width.value * 2 + door_height.value * 2; mats.windowsills += width.value - door_width.value; mats.cills += width.value - door_width.value; calcSection(mats, opts.layout.sections.leaf_left.type, left_width.value - fw - iw / 2, lh, 0); calcSection(mats, opts.layout.sections.leaf_right.type, width.value - left_width.value - door_width.value - fw - iw / 2, lh, 0); calcSection(mats, opts.layout.sections.door.type, door_width.value - fw * 2, door_height.value - fw * 2, lh); return mats; } } } } } }, layout: null, order_form: { send_text: 'Отправить', // close_text: 'Закрыть', url: 'http://' + window.document.domain + '/wincalc/wincalc.php', // url: 'http://localhost/wincalc/wincalc.php', success_message: 'Спасибо! Ваша заявка успешно отправлена.', fail_message: 'Ошибка при отправке письма.', message: { 'name': ['name'], 'email': ['email'], 'message': ['name', 'email', 'phone', 'comment', '_order_'], 'subject': 'Заказ окна' }, fields: [ { title: '
Отправка заказа
' }, { css_class: 'column', children: [ { type: 'line_edit', id: 'name', title: 'Имя', required: true }, { type: 'line_edit', id: 'phone', title: 'Телефон', required: true }, { // поле ввода e-mail type: 'line_edit', title: 'e-mail', id: 'email', required: true, validate: function (email) { return isEmailValid(email); } }, { type: 'text_edit', css_class: 'comment', title: 'Комментарий (Адрес)', id: 'comment', size: [20, 10] } ] }, { css_class: 'column', children: [ { type: 'text_edit', css_class: 'order', title: 'Заказ', id: '_order_', size: [20, 10], readonly: true } ] } ] }, // Определение формы калькулятора form: [ { css_class: 'left-column', children: [ { css_class: 'box layout-select-block', title: '1. Что рассчитать?', children: [ { type: 'combo_selector', id: 'layout_group', data: 'layout_groups', value: 'windows' // basket_default: true }, { type: 'item_selector', id: 'layout', data: 'layouts', value: 'lay2', // title: '1. Укажите тип окна', footer_: 'Подвал', basket_default: true } ] }, { css_class: 'box options-block', title: '3. Задайте дополнительные характеристики', children: [ { type: 'combo_selector', id: 'profile', data: 'profiles', title: 'Тип профиля', basket_id: 'Профиль' }, { type: 'combo_selector', id: 'glass', data: 'glasses', title: 'Стеклопакет', basket_id: 'Стеклопакет' }, { type: 'combo_selector', id: 'furniture', data: 'furnitures', title: 'Фурнитура', basket_id: 'Фурнитура' }, { type: 'combo_selector', id: 'windowsill', data: 'windowsills', title: 'Ширина подоконника', basket_id: 'Подоконник' }, { type: 'combo_selector', id: 'cill', data: 'cills', title: 'Ширина отлива', basket_id: 'Отлив' }, { type: 'checked_field', id: 'installation', css_class: 'toggle-field', value: false, text: 'Установка', basket_id: 'Установка', children: [ { type: 'page_select', get_page_num: function () { return opts.installation ? 0 : 1; }, children: [ { id: 'place', type: 'combo_selector', data: 'places', value: 'brick', basket_id: 'Строение' } ] } ] } ] } ] }, { css_class: 'right-column', children: [ { type: 'window_layout', css_class: 'box', id: 'layout', title: '2. Задайте параметры', descr: 'Нажмите на створку, чтобы изменить её тип' } ] }, { css_class: 'full-width-column', type: 'page_select', get_page_num: function () { return hasErrors() ? 1 : 0; }, children: [ { children: [ { css_class: 'box-left-column price-box', title: 'Цена окна', type: 'price', basket_default: true, calc: function () { return calcPrice(); }, format: function (v) { return formatPrice2(v) + ' р.'; }, children: [ { type: 'add_to_basket', text: 'Добавить
в корзину' } ] }, ] }, { title: 'Исправьте ошибки!', css_class: 'box red', type: 'errors' } ] }, { css_class: 'full-width-column', type: 'page_select', get_page_num: function () { return isBasketEmpty() ? 1 : 0; }, children: [ { css_class: 'box', type: 'basket', title: 'Корзина', total_text: 'Итого', format_price: function (v) { return formatPrice2(v) + ' p.'; }, children: [ { type: 'send_order', text: 'Отправить заказ', form: 'order_form' } ] } ] } ] }; // расчёт базовой цены function calcPrice() { var mats = opts.layout.calc.call(opts); var price = mats.glassSquare / 1000000 * opts.glass.price + mats.coverSquare / 1000000 * opts.profile.plastic_cover_price + mats.frame / 1000 * opts.profile.frame_price + mats.leaf / 1000 * opts.profile.profile_price + mats.impost / 1000 * opts.profile.impost_price + mats.doorImpost / 1000 * opts.profile.door_impost_price + mats.furnitureSide * opts.furniture.price_side + mats.furnitureSideUp * opts.furniture.price_side_up + mats.furnitureDoor * opts.furniture.price_door + mats.furnitureDoorUp * opts.furniture.price_door_up + mats.windowsills / 1000 * opts.windowsill.price + mats.cills / 1000 * opts.cill.price; if (opts.installation) price = price + opts.layout.sizers.width.value * opts.layout.sizers.height.value / 1000000 * opts.place.coef; return price; } // инициализация структуры с материалами function initMaterials() { return { glassSquare: 0, // площадь стекла coverSquare: 0, // площадь пластиковой заглушки frame: 0, // длина профиля рамы в мм leaf: 0, // длина профиля створки в мм impost: 0, // импост окна в мм doorImpost: 0, // импост двери в мм furnitureSide: 0, // количество комплектов фурнитуры "открытие в сторону" furnitureSideUp: 0, // количество комплектов фурнитуры "открытие в сторону и вверх" furnitureDoor: 0, // количество комплектов дверной фурнитуры furnitureDoorUp: 0, // количество комплектов дверной фурнитуры с открыванием вверх windowsills: 0, // подоконники cills: 0 // отливы }; } // расчет материалов створки function calcSection(mats, sectionType, width, height, windowHeight) { var w = opts.profile.profile_width * 2; var st = opts.section_types[sectionType]; if (st.door || st.door_up) { // дверь if (st.door) { mats.furnitureDoor += 1; } else { mats.furnitureDoorUp += 1; } mats.glassSquare += (width - w) * (windowHeight - w); mats.doorImpost += width - w; mats.coverSquare += (width - w) * (height - windowHeight - w / 2); mats.leaf += width * 2 + height * 2; } else if (st.profile) { // открывающаяся створка mats.glassSquare += (width - w) * (height - w); mats.leaf += width * 2 + height * 2; if (st.furniture_side) { mats.furnitureSide += 1; } else if (st.furniture_side_up) { mats.furnitureSideUp += 1; } } else { // глухая секция mats.glassSquare += width * height; } }