(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);
12 ноября
12 ноября 17:51
Toyota показала первое изображение нового седана CorollaМировая премьера автомобиля 12-го поколения состоится 16 ноября на Международной автомобильной выставке в китайском Гуанчжоу
12 ноября 16:05
Стало известно, кто будет штрафовать водителей за опасную ездуОбычным инспекторам выписывать такие постановления не разрешат, решение будет принимать высшее начальство
12 ноября 15:22
Какой могла стать «буханка»: неизвестный проект 2006 годаМодель нового бескапотного микроавтобуса УАЗ была разработана специально для стран Ближнего Востока
12 ноября 14:38
Паркуюсь назло соседям — новый способ заработать на старом автоНа специализированных сайтах появилось множество объявлений, авторы которых предлагают свои авто как передвижной баннер
12 ноября 12:33
Мужчина придумал, как сделать себя самым счастливым водителемЖитель Новой Зеландии построил вокруг собственного дома трек для дрифта. Соседи не против шумного хобби мужчины и даже помогали со строительством
9 ноября
9 ноября 18:00
Новый L200, ломающаяся BMW и другие события неделиДайджест главных автомобильных (и не только) событий, премьер и новостей этой недели по версии @Авто
9 ноября 16:08
Новый «Аутлендер» переедет на шасси Renault-NissanДля Mitsubishi этот автомобиль станет первой моделью, которая будет создана в рамках кооперации с альянсом Renault-Nissan
9 ноября 15:04
Geely подготовит свой ответ Илону Маску (и это не автомобиль)Китайский автопроизводитель подписал соглашение с China Aerospace Science and Industry Corp (CASIC) о совместной разработке «сверхзвуковых» поездов в стране
9 ноября 13:32
Когда машины целуются: очень «нежная» парковкаВспомните, сколько раз вы вроде бы находили подходящее место для парковки, но затем ехали искать другое, потому что на этом слишком уж места впритык? А героям нашей фотоподборки такие страдания неведомы. Видишь просвет — втискивайся!
9 ноября 13:16
У Audi появится практичное четырехдверное купеНовый автомобиль станет прямой заменой двухдверной модели ТТ, которой в этом году исполняется 20 лет
9 ноября 11:05
Hyundai покажет новый 8-местный кроссовер, который ждут в РоссииЮжнокорейская марка официально подтвердила название новой модели и раскрыла дату глобального дебюта – машину покажут в конце ноября в Лос-Анджелесе
9 ноября 09:40
Обновленный пикап Mitsubishi L200: официальные фотоСтарт продаж модернизированного пикапа намечен на 17 ноября. Сперва новинку предложат в Таиланде, затем L200 появится на других рынках, в том числе в России
8 ноября
8 ноября 17:55
Citroеn сменил название двух моделейФранцузская марка официально заявила о переименовании двух моделей C4 Picasso и Grand C4 Picasso в C4 SpaceTourer и Grand C4 SpaceTourer
8 ноября 16:20
Стало известно, кто заменит Илона Маска в Tesla В компании определились с кандидатурой нового председателя совета директоров – это место займет австралийка Робин Денем
8 ноября 15:25
Ford займется прокатом самокатовДля этого американский автопроизводитель купит молодую компанию из Сан-Франциско под названием Spin
8 ноября 13:25
Mazda раскрыла дату премьеры новой «тройки»Модель получит бензиновый двигатель нового семейства SkyActive-X
8 ноября 12:52
Конкурента «Дефендера» могут построить на заводе FordБританский магнат и фанат автомобилей Land Rover Defender, похоже, приблизился к своей мечте
7 ноября
7 ноября 16:44
Эта BMW постоянно ломается: владельца довели до отчаяния (фото)Мужчина уверяет, что с момента покупки седана 7-й серии только и делает, что чинит автомобиль. Недавно владелец BMW нанес список всех поломок на кузов машины
7 ноября 15:15
Российский авторынок: среди участников растут опасенияКомитет автопроизводителей АЕБ опубликовал свежую статистику по продажам новых легковых и коммерческих автомобилей в России
7 ноября 14:10
Хорошие дороги и доступные парковки: рейтинг городов РоссииВторой год подряд лидером стал Грозный, его жители оценили качество дорог и доступность парковок в среднем на 6,8 балла
7 ноября 12:50
Skoda показала интерьер новой модели Чешская марка распространила очередной тизер, раскрывающий на этот раз детали интерьера нового хэтчбека под названием Scala
7 ноября 12:04
Lincoln приготовил внедорожник со звуками оркестра Компания покажет серийную версию кроссовера Aviator нового поколения на автосалоне в Лос-Анджелесе 28 ноября
7 ноября 09:50
Volkswagen рассекретил пикап-трансформер (фото)Новую модель, которая пока носит статус концепта, представили на автосалоне в Бразилии
Подпишитесь на нас
Новости от Авто Mail.Ru