(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);
Mail.RuПочтаМой МирОдноклассникиИгрыЗнакомстваНовостиПоискВсе проекты
Наверх
Поиск по параметрам
Можно смотреть онлайн
Только бесплатные
Сортировать по: популярностиколичеству голосоврейтингуназванию
8
Оценить
0
55607 уже оценили
8.6
IMDb9.5
Оценить
0
63803 уже оценили
8.5
IMDb9.2
Оценить
0
53530 уже оценили
8.1
IMDb7.5
Оценить
0
18172 уже оценили
8
IMDb7.9
Оценить
0
6096 уже оценили
7.7
IMDb7.7
Оценить
0
5453 уже оценили
7.7
IMDb8.4
Оценить
0
32126 уже оценили
7.8
IMDb7.7
Оценить
0
5000 уже оценили
7.6
IMDb8.8
Оценить
0
50145 уже оценили
6.9
IMDb6.5
Оценить
0
24224 уже оценили
8.1
IMDb8.6
Оценить
0
7564 уже оценили
8.6
IMDb7.3
Оценить
0
2879 уже оценили
8.3
IMDb9.0
Оценить
0
9729 уже оценили
7.9
IMDb8.6
Оценить
0
18119 уже оценили
8.2
IMDb7.9
Оценить
0
5647 уже оценили
7.2
IMDb7.2
Оценить
0
49014 уже оценили
8
IMDb7.0
Оценить
0
6683 уже оценили
7.8
IMDb7.8
Оценить
0
8649 уже оценили
8.2
IMDb8.7
Оценить
0
7727 уже оценили
7.4
IMDb7.6
Оценить
0
6087 уже оценили
8.6
IMDb8.6
Оценить
0
39500 уже оценили
7.4
IMDb7.8
Оценить
0
11233 уже оценили
7.7
IMDb7.0
Оценить
0
4630 уже оценили
8
IMDb8.6
Оценить
0
6954 уже оценили
7.6
IMDb8.3
Оценить
0
4440 уже оценили
6.8
IMDb5.6
Оценить
0
19762 уже оценили
7.8
IMDb7.8
Оценить
0
4238 уже оценили
7.6
IMDb8.2
Оценить
0
5537 уже оценили
7.7
IMDb8.1
Оценить
0
12024 уже оценили
7.3
IMDb7.8
Оценить
0
46995 уже оценили
7.8
IMDb8.5
Оценить
0
40970 уже оценили
7.6
IMDb8.1
Оценить
0
12022 уже оценили
7.4
Оценить
0
3871 уже оценил
7.1
IMDb6.8
Оценить
0
13622 уже оценили
8.3
IMDb9.1
Оценить
0
23366 уже оценили
7.5
IMDb7.3
Оценить
0
9371 уже оценил
7
Оценить
0
21171 уже оценил
7.5
IMDb6.1
Оценить
0
7434 уже оценили
8.1
IMDb7.3
Оценить
0
3941 уже оценил
7.7
IMDb8.3
Оценить
0
5278 уже оценили
7.4
IMDb8.1
Оценить
0
6430 уже оценили
8
IMDb8.0
Оценить
0
29505 уже оценили
8.3
IMDb9.5
Оценить
0
25436 уже оценили
7.7
IMDb7.3
Оценить
0
16141 уже оценил
8.3
IMDb8.8
Оценить
0
44738 уже оценили
8.2
IMDb9.0
Оценить
0
46424 уже оценили
7.3
Оценить
0
4842 уже оценили
7.8
IMDb8.6
Оценить
0
6783 уже оценили
8
IMDb7.7
Оценить
0
2147 уже оценили
8.1
IMDb8.8
Оценить
0
4464 уже оценили
Поделиться с друзьями:
История моих просмотров
СкрытьПоказать