(function (window) { "use strict"; var OPTIONS = window.SCREEN_SIZE_OPTIONS || {}; // wrapper + options.padding * 2 var sizeList = [980,1220,1340]; var nameList = ['small', 'medium', 'large']; var sizesLength = sizeList.length; var isBranding = false; var htmlElement = document.documentElement; var lastState, className; var options = { padding: 20, sideWidth: 140, largeSideWidth: 240, bannerStub: sizeList[0], minBranding: OPTIONS.minBranding || sizeList[1], maxBranding: 1920, classRe: /\s*screen_(\S+)/gi, classPrefix: 'screen_' }; // ширина экрана для больших ушей, когда они полностью помещаются для самого большого экрана var widthForLargeSide = sizeList[sizeList.length - 1] + (options.largeSideWidth + options.padding) * 2; function screenSize(branding) { var windowWidth = window.innerWidth; var actualWidth = windowWidth; var sideWidth, canBranding, canBrandingStub, size, result, state; // запоминаем состояние последнего вызова, например screenSize(true) в слоте п-брендинга if (typeof branding === 'boolean') { isBranding = branding; } if (isBranding) { sideWidth = windowWidth > widthForLargeSide && options.largeSideWidth || options.sideWidth; // используем 20 отступы по бокам под брендирование if (sideWidth) { actualWidth -= (sideWidth + options.padding) * 2; } } canBranding = windowWidth >= options.minBranding && windowWidth <= options.maxBranding; // не показываем брендинг на экраны меньше 1024 и больше 1900 if (!canBranding) { actualWidth = windowWidth; } canBrandingStub = actualWidth >= options.bannerStub && actualWidth < options.minBranding; // подбираем экран под окно пользователя с учетом брендинга for (var sizeNo = 1; sizeNo < sizesLength; sizeNo++) { if (actualWidth < sizeList[sizeNo]) { size = nameList[sizeNo - 1]; break; } } if (!size) { size = nameList[nameList.length - 1]; } state = [size, isBranding, canBranding, canBrandingStub, sideWidth].join(); if (lastState != state) { lastState = state; className = htmlElement.className.replace(options.classRe, '').split(' '); className.push(options.classPrefix + size); if (isBranding) { className.push(options.classPrefix + 'branding-p_need'); if (canBranding) { className.push(options.classPrefix + 'branding-p'); className.push(options.classPrefix + 'branding-p_' + sideWidth); } else if (canBrandingStub) { className.push(options.classPrefix + 'branding-p_banner-stub'); } } htmlElement.className = className.join(' '); try { window.dispatchEvent(new Event('resize')); } catch (ex) {} } } /** * Создает функцию, игнорирующую вызовы происходящие чаще заданого интервала * @param originalFn функция, частоту вызова которой необходимо ограничить * @param [timeout = 100] интервал * @param [callImmediately = false] флаг, указывающий что функция должна выполняться в начале группы вызовов * @returns {Function} */ function debounce (originalFn, timeout, callImmediately) { var timer = null; return function debounced () { var context = this, args = arguments; function delayed () { if (!callImmediately) { originalFn.apply(context, args); } timer = null; } if (timer !== null) { clearTimeout(timer); } else if (callImmediately) { originalFn.apply(context, args); } timer = setTimeout(delayed, timeout || 100); }; } screenSize(); window.screenSize = screenSize; if (window.addEventListener) { window.addEventListener("resize", debounce(screenSize), false); } else if (window.attachEvent) { window.attachEvent("onresize", debounce(screenSize)); } })(this);
21 февраля
21 февраля 17:36
В Сеть попали фото неизвестной (но очень крутой) новинки от FordАвстралийские СМИ опубликовали фотографии неизвестного пикапа, который, скорее всего, является перспективной разработкой марки Ford
21 февраля 16:54
ВАЗ-2108, посвящённый юбилею Аэрофлота, продают за 2 500 000 рубГусеничную «восьмёрку» построили специально для торжественных мероприятий, посвящённых 90-летию российской авиакомпании
21 февраля 11:35
Datsun отзывает 64 автомобиляРосстандарт согласовал добровольный отзыв 64 автомобилей марки Datsun, не уточняя, какая из двух моделей отправится на сервис
21 февраля 10:36
УАЗ «Патриот» стал ниже на 5 см, а «Хантер» — теперь грузовикУльяновский автозавод оформил сертификационные документы на «Патриот» 2019 модельного года, а также продлил жизнь «Хантеру»
20 февраля
20 февраля 18:06
Белорусы первыми сделали тентованные танковозы (их купит ОАЭ)Полноприводный четырехосный седельный тягач МЗКТ-741351 был спроектирован по заказу армии Объединённых Арабских Эмиратов
20 февраля 16:37
У нового поколения Scania появилась «носатая» версияКапотную версию нового поколения шведских грузовиков создала не Scania, а голландское ателье Vlastuin Truckopbouw
20 февраля 15:43
Новая Lada за 813 000 рублей (это «Largus для экономных»)Lada представляет Largus CNG – универсал, который может работать и на бензине, и на метане
20 февраля 10:40
Renault Duster для России: представлено «большое» обновлениеМарка Renault подготовила самое крупное (за последние четыре года) обновление кроссовера Duster
20 февраля 10:14
На автомобильных номерах появятся «человеческие лица»Некоторые районы Австралии в ближайшее время позволят водителям разнообразить свои номерные знаки с помощью смайликов
20 февраля 09:08
Большой внедорожник Kia удивил экспертов расходом топливаАгентство по охране окружающей среды США (EPA) опубликовало данные по реальному расходу топлива Kia Telluride
19 февраля
19 февраля 17:35
В Туркменистане женщин лишают прав (и запретили Lada)В Ашхабаде столичная полиция, останавливая женщин за рулем, под любым предлогом отбирает водительские удостоверения
19 февраля 16:00
В гараже нашли бусик Volkswagen c необычной историей (фото)Заброшенным обнаружили Volkswagen T1, на базе которого еще полвека назад полиция Нижней Саксонии тестировала первые мобильные комплексы фиксации нарушений ПДД
19 февраля 15:45
Самый дорогой «кореец» стал роскошнее (но не догнал «Майбах»)Марка Genesis, которая является премиальным брендом компании Hyundai, представила обновлённую версию флагманского лимузина G90 L
19 февраля 14:02
Авария, в которой разбились 47 авто: видео из СШАСильный гололёд и плохая видимость стали причиной массовой аварии из 47 машин, в которой погиб один человек
19 февраля 11:34
Трактор уcтроил дрэг-гонку с мотоциклистами (полиция не оценила)Сельскохозяйственная машина привлекла внимание полиции, благодаря своему участию в «необычном» состязании на скорость
19 февраля 10:31
Honda закроет свой единственный европейский завод В качестве одной из главных причин называется неопределенность, связанная с выходом Великобритании из ЕС
Подпишитесь на нас
Новости от Mail.ru Авто