Computationally expensive (~ 300 % + ) due to larger prediction units and expensive Motion Estimation (Intra prediction with more nodes, asymmetric partitions in Inter Prediction).
/* Глобальная переменная - лучший друг быдлокодера */
var map;
/* Создадим с помощью конструктора новый объект */
var brooklyn = new google.maps.LatLng(40.6743890, -73.9455);
/* Так обычно объявляют константы (до ECMA 2015 нормального синтаксиса не было) */
var MY_MAPTYPE_ID = 'Purple';
// Обычно такую телегу записывают так (шаблон One-var template, привет, Pascal!):
var map,
brooklyn = new google.maps.LatLng(40.6743890, -73.9455),
MY_MAPTYPE_ID = 'Purple';
/* Декларируем функцию */
function initialize() {
/* Создаём массив объектов */
var featureOpts = [
{ // Раз
stylers: [ //И сразу вложенный объект с полем-массивом объектов
{ hue: '#6b20a1' },
{ visibility: 'simplified' },
{ gamma: 0.5 },
{ weight: 0.5 }
]
}, { // Два
elementType: 'labels',
stylers: [ // Вложенный массив
{ visibility: 'on' }
]
}, { // Три
featureType: 'water',
stylers: [
{ color: '#6b20a1' }
]
}];
} // Закрывающую скобку кто ставить будет, я что ли?
/* Функция асинхронной загрузки хеадера */
function getHeader() {
$.post('modules/constructor.php', /* Аппелируем к серверному скрипту по указаному адресу */
{ 'action': "header", 'lang': lang }, /* Передаем параметры на сервер */
function(data) { /* Callback - параметр анонимня функция. Вызывается при удачном запросе */
$('div#header') /* Выбираем #header - но правильнее $('#header'), ибо 2 блока с одним id не правильно */
.empty().append(data); /* Очищает выбраный блок и дописывает к нему полученные данные */
}
).done(function() { /* Событие выполняется после удачного выполнения запроса */
getFooter() /* Вызов запроса Fotter */
})
}
/* далее аналогично но для footer */
function getFooter() {
$.post('modules/constructor.php',
{ 'action': "footer", 'lang': lang },
function(data) {
$('#footer').empty().append(data);
}
).done(function() {
getScriptHandF(); /* Здесь была синтаксическая ошибка: отсутствие замыкающего ";" */
getContent(content)
})
}
function getContent(cont) {
$.post('modules/constructor.php',
{ 'content': cont, 'lang': lang, 'device': devi },
function(data) {
$('#content-wrapper').empty().append(data);
}
).done(function() {
/* Далее человек питался сделать прелоадинг картинок. НО! */
/* Картинки уже начались загружатся после выполнения
колбеков из загрузок getContent, getHeader, getFoоter */
var paths = []; /* Готовим массив для прелоадинга картинок */
var images = $('body').find('img'); /* Выбираем все картинки */
images.each(function() { /* Пробегаемся по всем картинкам */
paths.push($(this).attr('src')); /* Записываем ссылку на картинку в масив */
});
preloadImages(paths, function () { /* Вызывает preloadImages Описания процедуры нет */
$("html,body").animate({"scrollTop":0},200); /* Анимирует скроллинг если страница прокручена на верх страницы */
$('#preload').fadeOut(1000); /* Анимирует прозрачность кроющего блока #preload */
getScript(); /* Вызывает getScript */
if (cont=="home") getSlider(); /* Вызывает getSlider если страница домашняя */
});
})
}
function historyLoad() {
// History - это какая-то обертка над History API, что возвращает метод getState точно неизвестно
var State = History.getState();
// Просто логирование
History.log('initial:', State.data, State.title, State.url);
// Показывается прелоадер
$('#preload').fadeIn(200);
// Если последний символ в url слеш, то:
// 1. изменяется глобальная переменная content
// 2. выполняется функция getHeader
// 3. функция завершает работу
if ("/" == State.url.slice(-1))
{
content = "home";
getHeader();
return;
}
// Разбиваем url по знаку вопроса (забыли var)
str = State.url.split('?');
// Берем часть после знака вопроса (забыли var)
strSplit = str[1];
console.log(strSplit);
// Разбивает часть после знака вопроса по амперсанду (забыли var)
l = strSplit.split('&');
// Если есть что-то между знаком вопроса и первым амперсандом
if (l[0])
{
// В зависимости от того, что находится перед первым амперсандом
switch (l[0])
{
case "en":
case "ru":
case "ua":
// изменяем глобальную переменную lang
// вызываем функцию getHeader
lang = l[0];
getHeader();
break;
default:
// если первый элемент перед амперсандом не en, ru или ua:
// 1. изменяется глобальная переменная content
// 2. выполняется функция getHeader
content = "abra";
getHeader();
break;
}
if (l[1] && undefined != l[1])
{
// Если что-то есть между первым и вторым амперсандами (ну или просто после первого, если других нет),
// записываем эту строку в глобальную переменную content
content = l[1]
}
}
else
{
// Вызывем функцию getHeader
getHeader();
}
}
// Выполняем функцию при старте страницы
historyLoad();
// слушаем изменение url страницы, используя обертку над History API и выполняем функцию historyLoad
History.Adapter.bind(window, 'statechange', function () { // Note: We are using statechange instead of popstate
// Log the State
historyLoad();
});
function preloadImages() {
// создаем функцию с помощью Function declaration (инструкции объявления функции)
// как бы говорим интерпретатору "создай функцию и помести ее в переменную preloadImages"
if (typeof arguments[arguments.length - 1] == 'function') {
// в javascript нет "перегрузки" функций, функция может принимать сколько угодно значений
// доступ к переданным аргументам можно осуществить через "псевдо-массив" arguments
// arguments.length - возвращает количество переданных аргументов
// в arguments можно обращаться к аргументу по номеру
// arguments[arguments.length - 1] - последний параметр функции
// typeof x - возвращает строку, содержащую информацию о типе операнда x
// в конечном счете проверяется, является ли последний переданный аргумент функцией
var callback = arguments[arguments.length - 1];
// копируем ссылку на эту функцию в переменную callback
// эта переменная еще в момент вхождения интерпретатора в функцию preloadImages поднимется и будет
// в лексическом окружении (LexicalEnvironment) функции
} else {
var callback = false;
// иначе остаемся без коллбэка
}
if (typeof arguments[0] == 'object') {
// если первый аргумент функции является объектом (всё, кроме чисел, строк, true, false, null, undefined)
// здесь, видимо, мы ждем в первом параметре массив изображений
// вызов вида preloadImages(['img1.jpg',..., 'imgN.jpg'])
var images = arguments[0];
// копируем ссылку из первого аргумента-объекта в переменную images
var n = images.length;
// записываем количество элементов в массиве в переменную
} else {
// если первый аргумент не объект,
// скорее всего, на входе ждем список строк-урл картинок
// preloadImages('img1.jpg',..., 'imgN.jpg')
var images = arguments;
// здесь уже копируем ссылку на весь список аргументов
var n = images.length - 1;
// записываем в переменную n количество параметров с вычетом одного,
// видимо, задумывалось, что последним аргументом будет функция-callback
// иначе последнее изображение не обработается
}
var not_loaded = n;
// временная переменная, количество незагруженных изображений
for (var i = 0; i < n; i++) {
// обычный цикл с инкрементом на каждой итерации
jQuery(new Image()).attr('src', images[i]).load(function() {
// new Image() - создаем HTMLImageElement,
// jQuery(new Image()) - делаем из него jquery объект для возможности работы с ним с помощью методов jquery
// .attr('src', images[i]) - проставляем объекту атрибут src, что сразу запустит загрузку изображения
// load(function() { - и привяжемся к событию load изображения
if (--not_loaded < 1 && typeof callback == 'function') {
// сначала уменьшаем, потом сравниваем с 1 нашу временную переменную
// отлавливаем когда у нас все изображения загрузятся,
// порядок загрузки не важен тут
// и если в переменную callback попала функция, то
callback();
// вызываем ее
}
});
}
}
...
{'Wraper': '1','img image-data': 'P5dasJ51AU', 'data-alt-src':'T0Yd1sdA5k_h.jpg', 'image-data': '5n_aW-asIQ0', 'title': 'Digital <br> As179 }];
...
{'Wraper': '1','img image-data': 'P5dasJ51AU', 'data-alt-src':'T0Yd1sdA5k_h.jpg', 'image-data': '5n_aW-asIQ0', 'title': 'Digital <br> As179' }];
var containered = $('.works blocks'), html = [], i, item;
var containered = $('.works .blocks'), html = [], i, item;
console.log( containered).html(html.join(''));
console.log( containered.html(html.join('')));
renderWorked(workItemsed);