Модная одежда осень 2016: тренды, фото, тенденции

платья футляр фото

Осень уже напоминает о себе на модных подиумах и новых коллекциях дизайнеров. Предлагаем рассмотреть, что собой представляет модная одежда осень 2016, фотографии последних трендов, а также предварительный обзор ультрамодных тенденций.

50 оттенков серого

Это не только одна из самых обсуждаемых книг года, но и прекрасный модный тренд. Серый цвет очень соблазнительный, красивый и богатый. Он визуально стройнит, создает интересные акценты, кроме того, сочетается буквально со всеми остальными цветами радуги. Если Вы предпочитаете носить яркие наряды летом, то примерьте желтый с серым или оранжевый. В том случае, если Вы больше приверженец строгой классики, то особое внимание уделите сочетанию черного и серого, серого и белого, а также всех оттенков синего, начиная от лазури и заканчивая небесно-голубым.

серый цвет осенью 2016

Это очень модные цвета осень 2016, любые наряды будут смотреться стильно и красиво: пальто, куртки, свитера, штаны. Помимо таких комбинаций, также мы советуем примерять невысокие серые сапоги и чулки, они визуально стройнят и красиво подчеркивают женственность.

Брошки, значки

Модную одежду осенью нужно подчеркивать стильными элементами, это необязательно должны быть модные аксессуары, типа сумки или шарфы, лучше создать классический образ с использованием брошек и значков. В новом сезоне очень модны стилистические брошки под какие-либо фильмы, к примеру «Игры Престолов», «Дивергент», «Малефисента». Также старайтесь выбирать по-настоящему блестящую модель.

модные броши 2016

Размер не принципиален, но гораздо интереснее будут, если брошка не похожа на головку от булавки, а немного больше, хотя бы 1-2 сантиметра в диаметре. Мы советуем покупать контрастный аксессуар по отношению к одежде.

Пышные юбки

Очень красивый осенний образ получается, если примерить пышную юбку и интересную блузку. В следующем сезоне очень популярны просторные наряды с оттенком ретро, в частности это стильные юбки-тюльпан, которые красиво подчеркивают женские формы, придают аутфиту кокетливости и игривости.

модная одежда осень фото

В зависимости от Вашего типа фигуры, можно выбрать модель короткую или длинную, этот показатель не принципиален. Очень хорошо, если найдете модель с декоративным оформлением по линии подола, это могут быть рюши, бахрома или кружева.

Платья-футляр

Коллекции A La Russe, Chaprium, Vishenko, Yasya Minoshkina и многие другие предпочли вместо оригинальных коротких пышных юбок продемонстрировать своим поклонникам интересные и строгие варианты платьев-футляр. Обратите внимание на то, что, несмотря на строгий стиль и крой, все наряды декорированы стильными принтами, яркими цветами, декоративными элементами (поясами, молниями, накладными карманами).

платья футляр фото

Единственный совет, старайтесь подбирать цветовые сочетания таким образом, чтобы они подчеркивали ваши самые аппетитные части тела. Сейчас сверхпопулярны горизонтальные геометрические полоски на одежде, но если Вы обладаете пышными формами, то это не самый лучший вариант.

Яркие брюки

Это еще одна очень популярная тенденция, многие модные дизайнеры надели на своих моделей штаны красного, синего, черного и розового цветов. В такой цветовой гамме интереснее всего выглядят модели чинасы, которые отлично сидят на любой фигуре, джинсы-слипы, которые пока что остаются несомненными фаворитами модниц этого года и укороченные капри (хотя с наступлением холодов эта тенденция отойдет на второй план).

брюки осень-зима 2016

Меха

Осень нужно носить меховые наряды. Это куртки, шубки, пальто, зимние жакеты, кофточки. Все чаще на подиумах появляются модные платья осень 2016 и юбки, украшенные меховыми вставками из кролика, лисы или енота. Если Вы против убийств наших меньших братьев, то можете поддержать эту тенденцию искусственным мехом, бахромой или пуховыми нашивками.

пальто с мехом фото

Цветовая гамма очень широкая, здесь глубокий розовый, страстный черный и классический коричневый. Украшать одежду мехом можно по всей площади или только какую-то отдельную её часть.

// <![CDATA[
/** @preserve version !region_version!
*/
/** @define {boolean} */
var ENABLE_CONSOLE = true;
/** @define {boolean} */
var ENABLE_ERROR_HANDLING = false;
(function (window, document, undefined) {
"use strict";

/** @const */
var CONFIG = {
juke_host: 'juke.mmi.bemobile.ua/bug/pic.gif',
host: "pagestat.mmi.bemobile.ua",
sslhost: "sslpagestat.mmi.bemobile.ua",
source : "source.mmi.bemobile.ua",
err_host: "er.mmi.bemobile.ua",

timer: {
frequency: 5, // seconds

pings: [5, 15, 30, 60, 120],
stop_after: 5, // minutes
check_location_timer: 1
},

ads: {
scan_frequency: 5, // seconds

// minimal size
width: 50,
height: 40
}
};
extend(CONFIG, window.addonCMeter && addonCMeter.config);
/**
* Prepare CONFIG array for use. Apply local params for the specific domain. Add parameter for be able to work in iframe (by default is true).
* **/
if (CONFIG.custom_url && location.host === CONFIG.custom_url.href) {
CONFIG.ads.scan_frequency = CONFIG.custom_url.banner_scan_frequency;
CONFIG.work_in_frame = CONFIG.custom_url.work_in_frame;
} else {
CONFIG.work_in_frame = true;
}

// this part is already in helpers.js
/**
* Extend destination object with the items from the source object.
* If 3d argument is true, functions from the source are bound and then copied.
* Function returns nothing, first argument is modified instead
*
* @param {Object} dest destination, where to copy items from the source
* @param {Object} src source object from where items are taken
* @param {Boolean} [bindFuncs] if true – functions in the source will be bound and returned rather then original functions
*/
function extend(dest, src, bindFuncs) {
var k, item;
for (k in src) {
if (src.hasOwnProperty(k)) {
item = src[k];
dest[k] = bindFuncs && "function" === typeof item ? bind(item, dest) : item;
}
}
}

var head = {
js: function (src, cb) {
var s = document.createElement("script"),
head = document.head || document.getElementsByTagName('head')[0];

function done (err) {
s.onload = s.onerror = s.onreadystatechange = null;
if (cb && typeof cb == "function") {
cb(err);
}
}

extend(s, {
"async": true,
"type": "text/javascript",
"onload": function () { done(null); },
"onerror": done,
"onreadystatechange": function () {
if ("loaded" === s.readyState || "complete" === s.readyState) {
done(null);
}
}
});
// put src assigning after extend() to make sure it
// is being set later than other attributes
s.src = src;
head.insertBefore(s, head.lastChild);
},
onready: function (cb) {
function done() {
each(head.onready.funcs, function (cb) {
cb();
});
delete head.onready.funcs;
}

function onreadystatechanged() {
if ("loading" !== document.readyState) {
done();
document.detachEvent("onreadystatechange", onreadystatechanged);
}
}

if ("loading" !== document.readyState) {
cb();
return;
}
if (head.onready.funcs) {
head.onready.funcs.push(cb);
} else {
head.onready.funcs = [cb];
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", done, false);
return;
}
if (document.attachEvent) {
document.attachEvent("onreadystatechange", onreadystatechanged);
}
}
},
ready: function (cb) {
head.onready(cb);
}
}

window["idCoreOnReady"] = function(id){
IDCore["onFlashReady"](id);
};

window["tnsOnStatResult"] = function(e){
console.log("result:" + e.result + " pid:" + e.pid + " e.id: " + e.id);
if(e.result != "success") {
}
};

// generate random value
// unused in extension
function random(){
var d = new Date().valueOf().toString();
return parseInt(d.substr(d.length – 8, d.length))
+ Math.round(Math.random() * Math.pow(10, 9));
};
// resolve url by site protocol, host and path
// unused in extension
function getUrl(host, sslhost, path){
return location.protocol + "//"
+ (location.protocol == "https:" ? sslhost : host) + path;
};
// bind function to another scope
// bind function implementation
// unused in extension
function delegate(fn, scope){
return function(){
return fn.apply((scope || window), Array.prototype.slice
.call(arguments));
};
};
// return now in unixtime
function time(){
return new Date().getTime();
};
// send requests by cors
function createCors(errorHandler){
var cors;
try {
if(window.XDomainRequest) {
cors = new window.XDomainRequest();
if(errorHandler){
cors.onerror = function(){
errorHandler.call(null, cors);
};
}
} else {
cors = new XMLHttpRequest();
if(errorHandler){
cors.onreadystatechange = function (e) {
if (cors.readyState == 4) {
if(cors.status == 200){
}else{
errorHandler.call(null, cors);
}
}
};
}
}
} catch(e) {
console.error("cors:" + e);
}
return cors;
};

// check is mobile by regex from useragent
// double
var isMobile = (function(){
return /Mobi|Mini|Symbian|SAMSUNG|Nokia|BlackBerry|Series|Bada|SymbOS|PLAYSTATION/g
.test(navigator.userAgent.toString());
}());

// add param to url
function addParam(url, param, value){
var newurl = url;
var delimiter = "&";
if(newurl.indexOf("?") == -1) {
delimiter = "?";
}
newurl += delimiter + param + "=" + value;
return newurl;
};

/* create UUID
* */
function createUUID(){
var s = [];
var hexDigits = "0123456789ABCDEF";
for( var i = 0; i 0) {
offset = cookie.indexOf(search);
if(offset != -1) {
offset += search.length;
end = cookie.indexOf(“;”, offset)
if(end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return (setStr);
};

function deleteCookie(name){
document.cookie = name + ‘=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};

var hasLocalStorage = (function(){
try {
return “localStorage” in window && window["localStorage"] !== null;
} catch(e) {
return false;
}
}());

var hasFlash = (function(){
if(typeof navigator.plugins == “undefined” || navigator.plugins.length == 0) {
try {
return !!(new ActiveXObject(“ShockwaveFlash.ShockwaveFlash”));
} catch(er) {
return false;
}
} else {
return navigator.plugins["Shockwave Flash"];
}
}());

var isIE = (function(){
return /MSIE/.test(navigator.userAgent);
}());

var isIE7 = (function(){
return /MSIE\ 7/.test(navigator.userAgent);
}());

function getBody(){
var body;
try {
body = document.getElementsByTagName(“body”)[0];
} catch(e) {
}
if(typeof body == “undefined” || body == null) {
if(typeof document.body != “undefined”) {
body = document.body;
if(!body) {
// console.warn(“body is not availible”);
}
}
}
return body;
};

var isCookieEnabled = (function(){
var cookieEnabled = (navigator.cookieEnabled) ? true : false;

if(typeof navigator.cookieEnabled == “undefined” && !cookieEnabled) {
document.cookie = “testcookie”;
cookieEnabled = (document.cookie.indexOf(“testcookie”) != -1) ? true
: false;
deleteCookie(“testcookie”);
}
return (cookieEnabled);
}());

function isNotEmpty(str){
return undefined !== str && null != str && str.replace(/\s/g, “”) != “”;
};

function getPath(str, root){
var path = str;
if(path.toLowerCase().indexOf(“/”) == 0) {
if(root) {
path = root + path;
} else {
var location = window.location.protocol.toString() + “//”
+ window.location.hostname.toString()
+ window.location.port.toString();
if(location != “”) {
path = location + path;
}
}
}
return encodeURIComponent(path);
};

function round(n){
return Math.floor(n * 100) / 100;
};

function makeArray(items){
try {
return Array.prototype.slice.call(items);
} catch(ex) {
var i = 0, len = items.length, result = Array(len);
while(i < len) {
result[i] = items[i];
i++;
}
return result;
}
};

var idScope = (function(){
var scope = "l";
if(hasFlash){
scope = "b";
}else if(window.postMessage && (hasLocalStorage || isCookieEnabled)){
scope = "d";
}else if(hasLocalStorage == false && isCookieEnabled == false){
scope = "g";
}
try {
if(window.chrome){
for(var i in navigator.plugins){
if(/PepperFlashPlayer/gi.test(navigator.plugins[i].filename)){
scope = "c";
break;
}
}
}
}catch(e){
console.warn("chrome : PepperFlashPlayer – has some error");
}
return scope;
}());

var IDCore = (function(){

var isReady = false;
var host = window.addonCMeter && addonCMeter.hostAddon;
var version = "1.73-r52607";
var short_version = version.replace(/-r\d+$/, "");
var juke_host = CONFIG.juke_host || 'juke.mmi.bemobile.ua/bug/pic.gif';
var hostForFlash = "https://" + CONFIG.source;
var cookie = {};
cookie["id"] = "vplayer_user_id";
cookie["wasInitialized"] = "tns_was_initialized";
cookie["wasMigrated"] = "tns_was_migrated";
cookie["flag"] = "flag";
var wasInitialized = false;
var holder = "div_holder";
var buffer = new Array();
var uid = "";
var refs = new Array();

function cds(){
function initCds() {
try {
var remoteStorage = new CrossDomainStorage(hostForFlash, "/id-core/"
+ version + "/id.html");
remoteStorage["requestValue"](cookie["id"], function(key, id){
onLocalReady(id);
});
} catch(e) {
console.error("cds.js:" + e);
uid = createUUID();
onLocalReady(uid);
}
}
if (typeof CrossDomainStorage === "undefined") {
head.js(host + "/id-core/" + version + "/cds.js", initCds);
} else {
initCds();
}
}

function setMigrate(){
var expirationDate = new Date();
expirationDate.setFullYear(expirationDate.getFullYear() + 1);
// toGMTString() is deprecated
setCookie(cookie["wasMigrated"], true, expirationDate.toUTCString(), "/", "");
// when everything is okay
onLocalReady(uid);
}

function migrate(){
if(getCookie(cookie["wasMigrated"])) {
return false;
}
if(isCookieEnabled) {
var initialized = getCookie(cookie["wasInitialized"]);
if(initialized) {
uid = getCookie(cookie["id"]);

if(hasLocalStorage) {
head.js(host + "/id-core/cds.js",
function(){
try {
var remoteStorage = new CrossDomainStorage(
hostForFlash, "id.html");
remoteStorage["requestValue"](cookie["id"]
+ ":" + uid, function(key, id){
if(id != uid) {
console.error("id: " + id + " != "
+ uid);
} else {
setMigrate();
}
});
} catch(e) {
console.error("migrate:" + e);
}
});
deleteCookie(cookie["id"]);
deleteCookie(cookie["wasInitialized"]);
} else if(hasFlash) {
window["tns_uid"] = uid;
head.js(host + "/id-core/" + version + "/flash.js",
function(){
setMigrate();
// delete window["tns_uid"];
});
}
return true;
}
}
return false;
}

function init(){
wasInitialized = true;
if(migrate()) {
return;
}
if(hasLocalStorage) {
uid = localStorage.getItem(cookie["id"]);
if(uid) {
onLocalReady(uid);
} else {
if(window.postMessage && !window.JSON && window.localStorage) {
head.js(host + "/json2.min.js", function(){
if(getBody()) {
cds();
} else {
head.ready(function(){
cds();
});
}
});
} else if(window.postMessage && window.JSON
&& window.localStorage) {
if(getBody()) {
cds();
} else {
head.ready(function(){
cds();
});
}
} else {
onLocalReady(createUUID());
}
}
} else {
if(hasFlash) {
if(getBody()) {
head.js(host + "/id-core/" + version + "/flash.js");
} else {
head.ready(function(){
head.js(host + "/id-core/" + version + "/flash.js");
});
}
} else {
uid = getCookie(cookie["id"]);
if(!uid) {
uid = createUUID();
}
onLocalReady(uid);
}
}
}

function flushOnReady(){
var i;
for(i in buffer) {
if(buffer.hasOwnProperty(i)) {
var url = buffer[i]["url"];
var params = buffer[i]["params"];
var time = buffer[i]["time"];
var type = buffer[i]["type"];
var onError = buffer[i]["onError"];

if(/^POST$/ig.test(type)) {
sendPost(url, params, time, onError);
} else {
sendGet(url, params, time, type, onError);
}
}
}
buffer = Array();
var ref;
for(ref in refs) {
if(refs.hasOwnProperty(ref)) {
refs[ref].call(this, uid);
}
}
refs = new Array();
}

function onLocalReady(id){
saveId(id);
isReady = true;
flushOnReady();
if(hasLocalStorage){
if(!localStorage.getItem(cookie["flag"])) {
(new Image).src = location.protocol + "//" + juke_host + "?uid=" + id + "&time=" + new Date().valueOf();
localStorage.setItem(cookie["flag"], "true");
}
} else if(isCookieEnabled) {
if(!getCookie(cookie["flag"])){
var expirationDate = new Date();
expirationDate.setFullYear(expirationDate.getFullYear() + 1);
setCookie(cookie["flag"], "true", expirationDate.toGMTString(), "/", "");
(new Image).src = location.protocol + "//" + juke_host + "?uid=" + id + "&time=" + new Date().valueOf();
}
}
}

function saveId(id){
uid = id;
if(hasLocalStorage) {
localStorage.setItem(cookie["id"], id);
} else if(isCookieEnabled) {
var expirationDate = new Date();
expirationDate.setFullYear(expirationDate.getFullYear() + 1);

setCookie(cookie["id"], id, expirationDate.toGMTString(),
"/", "");
setCookie(cookie["wasInitialized"], true, expirationDate
.toGMTString(), "/", "");
}
}

function addParams(url, params){
var i, key;
if(params instanceof Array) {
for(i in params) {
url = addParam(url, params[i]["key"],
params[i]["value"]);
}
} else {
for(key in params) {
url = addParam(url, key, params[key]);
}
}
return url;
}

function onFlashReady(id){
try {
var div = document.getElementById(holder);
div.parentNode.removeChild(div);
} catch(e) {

}
swfobjectlite = null;
onLocalReady(id);
}

function getVersion(){
return short_version;
}

function sendPost(url, params, time, onError){
try {
var cors = createCors(onError);

cors.open("POST", url, true);

if(!params) {
params = {};
}
if(params instanceof Array) {
params.push({
"key" : "cookie",
"value" : uid
});
params.push({
"key" : "time",
"value" : time ? time : new Date().valueOf()
});
} else {
params["cookie"] = uid;
params["time"] = time ? time : new Date().valueOf();
}

if(isIE) {
cors.contentType = "text/plain";
} else {
cors.setRequestHeader("Content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
}

var postParams = addParams("?", params).replace(/^\?/, "");

cors.send(postParams);
}catch(e){
console.error(e);
}
}

function sendGet(url, params, time, type, onError){
if(!params) {
params = {};
}
url = addParam(url, "cookie", uid);
url = addParam(url, "time", time ? time : new Date().valueOf());

url = addParams(url, params);
// TODO: If this version will be in production — return send JSONP capability
try {
// Opera supports CORS only since v12
// For other Operas there is no obvious way to call external API
// except injecting script into page
if((type && type == "JSONP") || (window.opera && !("withCredentials" in new XMLHttpRequest))) {
var script = document.createElement("script");
script.setAttribute("src", url);
document.getElementsByTagName("head")[0].appendChild(script);
} else if(type && type == "GET") {
var cors = createCors(onError);
cors.open("GET", url, true);
if(isIE == false) {
cors.setRequestHeader("Accept", "application/json");
}
cors.send();
}
} catch(e) {
console.log(e);
}
}

return {
"init" : function(){
if(wasInitialized == false) {
if(isCookieEnabled && !getCookie(cookie["wasMigrated"])){
if(getBody()){
init();
}else{
head.ready(function(){
init();
});
}
}else{
init();
}
} else if(isReady) {
flushOnReady();
}
},
"send" : function(url, params, type, onError){
if(!params){
params = {};
}
params["vt"] = idScope;
var now = new Date().valueOf();
if(isReady) {
if(/^POST$/ig.test(type)) {
sendPost(url, params, now, onError);
} else {
sendGet(url, params, now, type, onError);
}
} else {
buffer.push({
"url" : url,
"params" : params,
"type" : type,
"time" : now,
"onError": onError
});
}
},
"onFlashReady" : function(id){
onFlashReady(id);
},
"addOnReadyListener" : function(ref){
refs.push(ref);
},
"isReady" : function(){
return isReady;
},
"getId" : function(){
return uid;
},
"version" : function(){
return getVersion();
}
};
})();

IDCore["init"]();

/*jslint browser:true,devel:true,plusplus:true,regexp:true*/
/*global TUtility,IDCore,addonCMeter,ENABLE_CONSOLE*/

/** @const */
var VERSION = "3.3.291_ua";

var v = VERSION + "/" + IDCore.version(),

perf = window.performance,
perf_t = perf ? perf.timing : null,
started = perf_t ? new Date(perf_t.navigationStart || perf_t.connectStart) : new Date(),

ua = navigator.userAgent,
mobile = /android|mobi|mini|blackberry|samsung|bada|nokia|series|symb(ian|os)|playstation/i.test(ua),
vendors = ["", "moz", "ms", "webkit"],

isFrame = top !== self,

id = IDCore.getId(),
templates = {},
excludeElements = [], // array for keeping exclude elements from video tags
subscribers = {},
previousLocation = location.href.replace(location.hash,"");

// Utils

/**
* Just empty function. Intended for some cases as callback where no actions should be performed
*/
function nop() {}

function random() {
var d = new Date().valueOf().toString();
return parseInt(d.substr(d.length – 8, d.length)) + Math.round(Math.random() * Math.pow(10, 9));
};

var hasFlash = (function(){
if(typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) {
try {
return !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"));
} catch(er) {
return false;
}
} else {
return navigator.plugins["Shockwave Flash"];
}
}());
/**
* Strip initial & trailing whitespaces.
*
* @param str
* @returns {String}
*/
function trim(str) {
if (String.prototype.trim !== undefined) {
return String.prototype.trim.call(str);
}
return str.replace(/^\s+|\s+$/g, '');
}

/**
* Apply callback to each element of the sequence (arr item / sting symbol)
*
* @param {Array|String|NodeList} arr array to process
* @param {Function} cb callback to apply to each array item
*/
function each(arr, cb) {
var i, l;
if (!arr) {
return;
}
l = arr.length;
if (!l) {
return;
}
for (i = 0; i < l; i += 1) {
try {
cb(arr[i], i, arr);
} catch (ignore) {}
}
}

/**
* We need such function since IE = 0 if found, -1 otherwise
*/
function indexOf(arr, item) {
var i = 0, l = arr.length;
while (i 0 ? new Date(perf_t[e]) : new Date();

while (q.length) {
q.shift()(load.time);
}
}

if (load.time) {
cb(load.time);
return;
}

if (!load.queue) {
load.queue = [];
on(window, “load”, done);
}
q = load.queue;
q.push(cb);

if (“complete” === document.readyState) {
done();
}
}

function onViewportChange(cb) {
on(window, “scroll”, cb);
on(window, “resize”, cb);
cb();
}

// TODO: Investigate if it is better to pass object w/ methods
// instead of two separate callbacks.
// Will it need to implement @interface to compile properly?
function onVisibilityChange(cbVis, cbInv) {
var i, field;
cbInv = cbInv || nop;

function trigger() {
var state = document[field] || “visible”;
switch (state) {
case “hidden”:
cbInv(state);
break;
default:
cbVis(state);
break;
}
}

for (i = 0; i 0) { return r.top 0) { return r.bottom 0) {
i = props[type].length;
while (i–) {
s[type] -= parseInt(getStyle(node, props[type][i]), 10) || 0;
}
}
style = s[type] || getStyle(node, “w” === type ? “width” : “height”);
if (/%/.test(style)) { continue; }
s[type] = parseInt(style, 10);
}
}
return s;
}

function getDoc(node) {
// second is for IE -1 && index < 8)) {
document = getDoc(frame);
if (document && document.getElementById) {
return true;
}
}
} catch (ignore) {}
return false;
}

function getNodeSrc(node) {
var src, i, params, param;
function checkExcludes(element) {
if (-1 === indexOf(excludeElements, element)) {
excludeElements.push(element);
}
}
if (!node.tagName) {
return false;
}
if ("OBJECT" === node.tagName) {
src = node.getAttribute("data");
if (!src) {
// [fix23828] as of msdn.microsoft.com/library/ms536439#5
/*
params = node.getElementsByTagName("param");
i = params.length;
while (i–) {
if ("movie" === params[i].getAttribute("name")) {
return params[i].getAttribute("value");
}
}
*/
params = node.childNodes;
i = params.length;
while (i–) {
param = params[i];
if ("PARAM" === param.nodeName && "movie" === param.getAttribute("name").toLowerCase()) {
return param.getAttribute("value");
}
}
}
return src;
}
if ("VIDEO" === node.tagName) {
var sources = node.childNodes, length = sources.length, sourceElement, src ,type;
if (!node.canPlayType){
return false;
}
for (var i = 0; i = 2) {
extend(this, obj, true);
}

/**
* `params` must be an array, but may have additional own properties.
* They will be sent along w/ ordinary array items.
*
* For instance, consider the following:
* var params = ["~param1~", 2];
* params.customKey = “customVal”;
*
* This will send following message:
* param1: “~param1~”
* param2: 2
* customKey: “customVal”
*/
this.params = this.params || [];
this.params[0] = “~cm_” + type + “~”;

if (this.initialize) {
// XXX: Google Chrome extension workaround.
if (window.localStorage && “initializing” === localStorage.getItem(“AddonCMeter”)) {
window.addEventListener(“message”, addonReady, false);
} else {
this.initialize();
}
}
}

extend(CM_Message.prototype, {
httpMethod: “GET”,
origin: location.protocol + “//” + (“https:” === location.protocol ? CONFIG.sslhost : CONFIG.host),

sid: random(),

/**
* Compile and return common properties of client, such as location, referrer, screen properties and others
*
* @this {CM_Message}
* @return {Object} Keys: location, referrer, is_flash, session_id, version, sw, sh, scd [, spd, tnscm_plid, tnscm_cat, tnscm_adn]
* */
getCommonParams: function () {
var p = {
“location”: encodeURIComponent(window.location.href),
“referrer”: encodeURIComponent(this.referrer || document.referrer),
“is_flash”: hasFlash ? “1” : “0”,
“session_id”: this.sid,
“version”: v,
“sw”: screen.width,
“sh”: screen.height,
“scd”: screen.colorDepth
};
if (screen.pixelDepth) {
/** @expose */
p.spd = screen.pixelDepth;
}
if (window.addonCMeter && addonCMeter.PLID) {
/** @expose */
p.tnscm_plid = addonCMeter.PLID;
}
if (window.tnscm_cat) {
/** @expose */
p.tnscm_cat = tnscm_cat;
}
if (window.tnscm_adn) {
/** @expose */
p.tnscm_adn = window.tnscm_adn;
}
if (window.tnscm_pak) {
/** @expose */
p.tnscm_pak = tnscm_pak;
}
return p;
},

/**
* Send message. Run either commit or onBeforeCommit handler if exists
*
* @this {CM_Message}
**/
send: function () {
if (this.onBeforeCommit) {
this.onBeforeCommit();
} else {
this.commit();
}
},

/**
* Actually send message (with id.js)
*
* @protected
* @this {CM_Message}
**/
commit: function () {
var that = this, i = 0, item, params = {}, cloned = [];
extend(params, that.getCommonParams());
extend(cloned, that.params);
while (cloned.length) {
i += 1;
item = cloned.shift();
if (item || 0 === item) {
params["param" + i] = item;
}
}
extend(params, cloned);
if (!ENABLE_ERROR_HANDLING) {
IDCore.send(that.url, emit(“send”, params), that.httpMethod);
} else {
IDCore.send(that.url, emit(“send”, params), that.httpMethod, function (xhr) {
if (that.doNotSendError) { return; };
// setup error handler (see #36588)
var params, resp = xhr.responseText || “”;
params = {
“http_code”: encodeURIComponent(xhr.status),
“http_status”: encodeURIComponent(xhr.statusText),
“http_body”: encodeURIComponent(resp.substr(0, 400)),
“message_type”: that.params[0]
};
extend(params, that.getCommonParams());
if (ENABLE_CONSOLE) {
console.log(params, “error reported”);
}
IDCore.send(location.protocol + “//” + CONFIG.err_host + “/e”, params, “GET”);
});
}
if (ENABLE_CONSOLE) {
console.log(that.params[0], “sent”);
console.log(params);
}
}
});
extend(CM_Message.prototype, {
url: CM_Message.prototype.origin + “/pagestat/PageStatEntry”
});

/**
* An advertisement template.
* @constructor
*/
function CM_Template(params) {
var that = this,
num = ["w", "h"],
rexp = ["src"];

// default values
// XXX: it is not exposed anywhere, but current implementation of
// this constructor is tied to names. Consider rewriting into code,
// better optimized for compiling by Google Closure Compiler in future
/** @expose */
this.w = null;
/** @expose */
this.h = null;

each(params, function (param) {
var k, v = parseInt(param, 10);

if (!isNaN(v)) {
k = num.shift();
} else if (param instanceof RegExp) {
k = rexp.shift();
v = param;
}

if (k) {
that[k] = v;
}
});

// empty template should not catch anything
if (!this.src && (this.w || this.h)) {
// see comment about Closure Compiler above
/** @expose */
this.src = /./;
}
}

extend(CM_Template, {

/**
* Create list of signatures (objects) based on incoming array of templates. Synchronous method
*
* @param {Array} arr list of signature templates
* @returns {Object} array of signatures
*/
build: function (arr) {
var use = true,
isCurrent = false,
retVal = {common: [], current: []};
each(arr, function (t) {
if (t instanceof RegExp) {
use = isCurrent = t.test(window.location.host);
} else if (use && !isCurrent) {
retVal.common.push(new CM_Template(t));
} else if (use && isCurrent) {
retVal.current.push(new CM_Template(t));
}
});
return retVal;
},

embeds: function (doc) {
var embeds = [], objects = [];
doc = doc || document;

each(doc.getElementsByTagName(“embed”), function (embed) {
var parent = embed.parentNode;
while (parent) {
if (“OBJECT” === parent.nodeName) {
objects.push(parent);
break;
}
parent = parent.parentNode;
}
if ( -1 === indexOf(excludeElements, embed)) {
embeds.push(embed);
}
});
each(doc.getElementsByTagName(“object”), function (node) {
// skip s, that contain nested
if (-1 === indexOf(objects, node) && -1 === indexOf(excludeElements, node)) {
embeds.push(node);
}
});

return embeds;
},

// passing real DOM Nodes every time was considered too expensive
scan: function (nodesData) {
var ads = [], isAd, typeTemplate;

function checkNodes(type, node) {
each(templates.yes[type], function (t) {
if (t.check(node[0], node[1], node[2])) {
isAd = true;
if (ENABLE_CONSOLE) {
console.log(‘include ‘ + ‘ ‘ + node[0] + ‘ [‘ + node[1] + ‘, ‘ + node[2] + ‘] by signature – ‘ + t.src + ‘[' + t.w + ', ' + t.h + '] (‘ + type + ‘)’);
}
}
});

if (isAd) {
// take out from inside templates.yes loop because it didn’t execute if templates.yes.current is empty
each(templates.no[type], function (t) {
if (t.check(node[0], node[1], node[2])) {
if (ENABLE_CONSOLE) {
console.log(‘exclude ‘ + node[0] + ‘ [‘ + node[1] + ‘, ‘ + node[2] + ‘] by signature – ‘ + t.src + ‘[' + t.w + ', ' + t.h + '] (‘ + type + ‘)’);
}
isAd = false;
}
});
}
}

// TODO: use filter() here instead of each()
each(nodesData, function (node, index) {
isAd = false;
for (typeTemplate in templates.yes) {
if (templates.yes.hasOwnProperty(typeTemplate)) {
checkNodes(typeTemplate, node);
}
}
if (isAd) {
ads.push(index);
}
});
return ads;
}
});

extend(CM_Template.prototype, {

/** @this {CM_Template} */
check: function (src, w, h) {
if (this.src && !this.src.test(src)) {
return false;
}
if (this.w && this.w !== w) {
return false;
}
if (this.h && this.h !== h) {
return false;
}

return true;
}
});

// Run only once
if (!window["__cm"]) {
var cm = window["__cm"] = [];

extend(cm, {
“on”: function (event, callback) {
if (!subscribers[event]) {
subscribers[event] = [];
}
subscribers[event].push(callback);
}
});
}

// TODO: !region-id is better to be defined as @const and
// then replaced during Closure Compiler compilation
// as well as VERSION variable
if (indexOf(window['__cm'], “ua”) == -1) {

window.tnscm_adn = window.tnscm_adn || [];

if (indexOf(window.tnscm_adn, “inline_cm”) < 0) {
var cmInlined = domIterate(document, function (node) {
if (8 === node.nodeType && "MMI CMeter" === trim(node.nodeValue)) {
return true;
}
});
if (cmInlined) {
tnscm_adn.push("inline_cm");
}
}

templates.yes = CM_Template.build([
[/\.adocean\.pl\//i],
[/\.googlesyndication\.com\//i],
[/static\..*\.kcdn\.kz\//i],
[/base\.kiwi\.kz\//i],
[/rate\.ru\/banner/i],
[/b\.c8\.net\.ua\//i],
[/post\.rmbn\.net\//i],
[/sensismediasmart\.com\.ua/i],
[/dotua\.org\//i],
[/advideo\.com\.ua\//i],
[/admixer\.net/i],
[234, 200],
[205, 333],
[205, 280],
[205, 60],
[203, 70],
[950, 90],
[760, 90],
[730, 60],
[730, 90],
[728, 90],
[640, 90],
[500, 100],
[468, 120],
[468, 60],
[320, 76],
[320, 60],
[300, 600],
[300, 250],
[300, 240],
[285, 130],
[250, 250],
[240, 400],
[240, 350],
[240, 200],
[240, 90],
[234, 60],
[230, 90],
[230, 60],
[180, 150],
[160, 600],
[160, 60],
[150, 60],
[120, 600],
[120, 240],
[120, 60],
[/bigbn\.com\.ua/i],
[/adriver\.ru/i],
[/banner\.km\.ua/i],
[/bannerka\.ua/i],
[/\/.*\/adfox\/.*\/.*\.swf/i],
[/rle\.ru/i],
[/reclama\./i],
[/adcenter\.net/i],
[/bbn\.img\.com\.ua/i],
[/images\.rambler\.ru\/upl\//i],
[/\/images\/.*\/.*\/.*\/.*300x250\./i],
[/ab\.adpro\.com\.ua\/.*\/.*\/.*\./i],
[/images\/.*\/.*300x150.*\./i],
[/baner\./i],
[/www\.ukr\.net\/img\/autos\/auto.*\.jpg$/i],
[/\/data\/enquetes\/images\/banner_.*\./i],
[/www\.ukr\.net\/_temp\/.*\/..\/..\/.*\.jpg$/i],
[/ad.*\.bigmir\.net/i],
[/meta\.ua\/img\/.*\/.*_200_300_.*href=/i],
[/\/css\/partner-swf\/.*\./i],
[/\/banners_files\/.*\./i],
[/b\.ex\.ua\/.*\/.*\.swf/i],
[/adbrite\.com/i],
[/\/openx\/www\/images\/.*\./i],
[/\/bnr\//i],
[/ban\./i],
[/\/adban\/.*\/.*\/.*\./i],
[/informers\.sinoptik\.ua/i],
[/adnet\.com\.ua\/banners\/.*\/.*\/.*\/.*\./i],
[/rose\.ixbt\.com/i],
[/\/adv\//i],
[/\/pagead\/imgad.id=/i],
[/\/adimage\.php/i],
[/i\.holder\.com\.ua\/.*\/.*\/.*\/.*\./i],
[/img\.gad\.org\.ua\/.*\/.*\./i],
[/\/images\/.*\/.*\/.*\/.*\.swf$/i],

/\.ge/,
[/\/www\/images\//i],
[/baner/i],
[/banner/i],
[640, 100],

/\.md/,
[/\/banner/i],

/\.kz/,
[/\/banners/i],

/mail\.ru/,
[/r\.mradx\.net\//i, 300, 300],
[/r.*\.mail\.ru\/b.*\.gif$/i],
[/r.*\.mail\.ru\/b.*\.png$/i],
[/r.*\.mail\.ru\/b.*\.jpg$/i],
[/r.*\.mail\.ru\/b.*\.swf$/i],
[/promoblocks\.ru/i],

/podrobnosti\.ua/,
[/media\.adrcdn\.com\/ads\//i],

/football\.ua/,
[/spadsmedia\.com\/www\/delivery\/afr\.php\//i],
[/sportingbet\.host\.bannerflow\.com\//i],

/total\.kz/,
[1000, 115],
[/\/gb\.php..*=/i],

/namba\.net/,
[468, 90],
[1000, 90],
[200, 350],

/besplatka\.ua/,
[300, 300],
[660, 90],

/nur\.kz/,
[/\/advert\//i],

/magnolia-tv\.com/,
[668, 60],
[300, 100],
[/\/files\/ban\//i],
[100, 100],

/blogas\.lt/,
[/static-system\.adtarget\.me\//i],
[/banners\.adnet.*\.lt\//i],
[980, 200],
[750, 200],
[980, 180],

/companion\.ua\//,
[960, 90],

/172\.16\.0\./,
[/\.gif/i],
[/\.png/i],
[/\.swf/i],
[/\.jpeg/i],
[/\.jpg/i],

/ex\.ua/,
[/ad_click/i],

/^cm\.mmi\.macc\.com\.ua$/,
[100, 100],

/aviso\.ua/,
[/banner\.ool\.ua\//i]
]);

templates.no = CM_Template.build([
[/ticket\.net\//i],
[/hoptopboy\.com\//i],
[/porn\..*com\//i],
[/kvihit\.com\//i],
[/imagevenue\.com\//i],
[/obrona\.org\//i],
[/null$/i],
[/interakt\.md\/content/i],
[/gwallet\.com\//i],
[/predictormedia\.com\//i],
[/img\.ubr\.ua\/banners\/.*adsense\./i],
[/dotomi\.com\//i],
[/mobileadhost\.com\//i],
[/adsoptimizer\.net\//i],
[/ad-sys\.com\//i],
[/drivesection\.net\//i],
[/tooldiv\.net\//i],
[/livexjs\.net\//i],
[/fellabooks\.net.*\/$/i],
[/chocolatemx\.net\//i],
[/aspire-guitar\.com\//i],
[/golinkon\.info\//i],
[/perfectnavigator\.com\//i],
[/aceadsys\.net\/show_banner\//i],
[/googleads/i],
[/\.host\.bannerflow\.com\//i],
[/serving.*\.com\//i],
[/tracking\.m6r\.eu\//i],
[/upload.*\/articles\//i],
[/zedo\.com\//i],
[/gogorithm\.com\//i],
[/pdmayt\.com\//i],
[/metrigo\.com\//i],
[/vdaqyqwsrd\.ru\//i],
[/qrdeom\.com\//i],
[/tatami-solutions\.com\//i],
[/cloudfront\.net\//i],
[/mrlmedia\.net\//i],
[/mothernist\.hiro\.tv\//i],
[/\.wlboon\.com\//i],
[/admetaserver\.com\//i],
[/\.ru\/show_banner\//i],
[/tags\.qservz\.com\//i],
[/neomion\.com\//i],
[/^http:\/\/54\./i],
[/x\.abk954\.com/i],
[/creative\.xtendmedia\.com\//i],
[/statisticsreporting\.com\//i],
[/imhonet\.ru\/element\//i],
[/mailsmania\.ru\//i],
[/romilit\.com\//i],
[/proligtb\.com\//i],
[/brucelead\.com\//i],
[/exebid\.ru\//i],
[/koluty\.com\//i],
[/\.retark\.com\//i],
[/com\.adv\.vz\.ru\//i],
[/adserver/i],
[/webmoney\.ua\/tools\//i],
[/weropiy\.com\//i],
[/\/games\/img\//i],
[/flashgames.*\..*\//i],
[/games\.info\//i],
[/maikaru\.ru\/picture\//i],
[/zvek\.com\.ua\/images\//i],
[/get_qrapi/i],
[/grandcapital\.ru\/static\/img/i],
[/creativecdn\.com\//i],
[/\.rontar\.com\//i],
[/greefl\.com\//i],
[/\.jutulep\.com\//i],
[/baseflash\.com\//i],
[/media\.tumblr\.com\//i],
[/gstatic\.com\//i],
[/ssp\.adriver\.ru\/cgi-bin\/sync\.cgi/i],
[/tractionize\.com\//i],
[/secure\.demand-go\.com\//i],
[/rbc\.ua\/static\/adsense/i],
[/tvi\.ua\/adsense/i],
[/yourbucks\.org\//i],
[/datamind\.ru\//i],
[/fresh-cup\.org\//i],
[/ad\.starlightmedia\.ua\//i],
[/financecontext\.ru\//i],
[/attiveri\.com\/.* $/i],
[/youtube\.com\//i],
[/meta\.ua\/cell\.php/i],
[/paramedjo\.com\//i],
[/intencysrv\.com\//i],
[/kilopog\.com\//i],
[/gravyseals\.com\//i],
[/media6degrees\.com\//i],
[/lokomusic\.com\//i],
[/tisa.ama\.com\/banner\.php/i],
[/ministerial5\.com\//i],
[/admailtiser\.com\//i],
[/adgorithms\.com\//i],
[/\/media\/gallery\//i],
[/\.dotua\.org\/.*\/cover\/.*\.jpg$/i],
[/wp-content\/upload/i],
[/netdna-cdn\.com\//i],
[/\/logo/i],
[/adsmile\.biz\//i],
[/medads\.ru\//i],
[/gittigidiyor\.com\//i],
[/oneund\.com\//i],
[/xmasdom\.com\//i],
[/rainoftraffic\.info\//i],
[/1xbet\.com\//i],
[/clkrev\.com\//i],
[/pub-fit\.com\//i],
[/clicksor\.com\//i],
[/sendspace\.com\//i],
[/pgssl\.com\//i],
[/rutarget\.ru\//i],
[/datropy\.com\//i],
[/dolka\.ru\//i],
[/batanga\.net\//i],
[/adorika\.net\//i],
[/rfihub\.com\//i],
[/loponop\.com\//i],
[/palgames\.info\//i],
[/play882\.info\//i],
[/medialand\.ru\//i],
[/funnygamezer\.info\//i],
[/cloudgamezer\.com\//i],
[/utrehter\.com\//i],
[/hopto\.me\//i],
[/intag\.co\/.* $/i],
[/adk2\.com\//i],
[/img\.admaster\.net\//i],
[/openx\.net\//i],
[/firstadvplug\.com\//i],
[/pirrit\.com\//i],
[/metka\.ru\//i],
[/tomobol\.com\//i],
[/adzoook\.com\//i],
[/adservingfree\.info\//i],
[/drgo\.ru\//i],
[/slopty\.ru\//i],
[/tradedoubler\.com\//i],
[/fastloca\.com\//i],
[/hide4you\.com\//i],
[/proxy\.net\//i],
[/bannerhost\.ru\//i],
[/bannercity\.ru\//i],
[/m2pub\.com\//i],
[/theseaapp\.com\//i],
[/holisticmedicalwellness\.com\//i],
[/qonenoj\.ru\//i],
[/amazonaws\.com\//i],
[/ipicture\.ru\/uploads\//i],
[/reacten\.com\//i],
[/thinglink\.me\//i],
[/ad\.mail\.ru\/adi\//i],
[/k8media\.com\//i],
[/notificatoin\.com\//i],
[/co-co-co\.co\//i],
[/\.dd34\.ru\//i],
[/screenshot/i],
[/yidop\.com\//i],
[/phncdn\.com\//i],
[/pokitom\.com\//i],
[/perfectmoney\.is\//i],
[/20dollars2surf\.com\//i],
[/bet-at-home\.com\//i],
[/\.derploime\.com\//i],
[/\.nekki\.ru\/banner\.php/i],
[/tlvmedia\.com\//i],
[/yoz5\.info\//i],
[/game.*\.info\//i],
[/jumbaexchange\.com\//i],
[/media-servers\.net\//i],
[/gnezdo\.ru\//i],
[/quelliclub\.ru\/slider\//i],
[/all\.biz\/img\/.*\/catalog\/.*\.png/i],
[/azd3\.info\//i],
[/26sec\.com\//i],
[/magicplayer\.torrentstream\.org\//i],
[/refban\.com\//i],
[/microads\.ru\//i],
[/scanmedios\.com\//i],
[/trkclk\.net\//i],
[/game.*\.com\//i],
[/062\.ua\/delivery\/afr\.php/i],
[/ro2\.biz\/ad\.php/i],
[/gmodules\.com\//i],
[/bremdy\.ru\//i],
[/biglu\.ru\//i],
[/pricora\.com\//i],
[/twitbridge\.com\//i],
[/resultsaccelerator\.net\//i],
[/gayua\.com\//i],
[/okitspace\.com\//i],
[/yottos\.com\//i],
[/teaserjs\.info\//i],
[/wambacdn\.net\//i],
[/adultadworld\.com\//i],
[/adnetworkme\.com\//i],
[/seethisinaction\.com\//i],
[/cameleo\.ru\//i],
[/exoclick\.com\//i],
[/\.rubiconproject\.com\//i],
[/\.adnetwork.*\.net\//i],
[/mediads\.info\//i],
[/\.zanox\.com\//i],
[/\.abnad\.net/i],
[/reachjunction\.com\//i],
[/\.e-viral\.com\//i],
[/\.traffichaus\.com\//i],
[/\.cmle\.ru\//i],
[/datam\.com\//i],
[/improvemedianetwork\.com\//i],
[/adxplosions\.com\//i],
[/mediaplex\.com\//i],
[/redintelligence\.net\/request_content\.php/i],
[/baserve\.net\/serve\.php/i],
[/ktbt\.ru\/b\.php/i],
[/sociomantic\.com\//i],
[/yangot\.com\//i],
[/static.*\.rutracker\.org\/iframe/i],
[/partners\.otpusk\.com\/media\.php/i],
[/image\.tsn\.ua\/media\/images/i],
[/nepalon\.com\//i],
[/\.56.*\.net\/.*2\.php/i],
[/\/vast\.php/i],
[/ad.*\.adkserve\.com\//i],
[/r\.c8\.net\.ua\/getiframe\.php/i],
[/s\.holder\.com\.ua\/s/i],
[/\.avazu\.net\//i],
[/media\.glispa\.com\//i],
[/squirrelsigdrs\.in\//i],
[/overridingnichts\.in\//i],
[/tecontx\.com\//i],
[/ad-srvr\.com\//i],
[/pswec\.com\//i],
[/hubrus\.com\//i],
[/beatwaretranscribing\.in\//i],
[/ads\.people-group\.net/i],
[/holyclick\.ru/i],
[/\.bidsystem\.com/i],
[/zpk200\.com\/serve/i],
[/imgads\..*\.net\/afr\.php/i],
[/\.btricl3\.ru\/js\/rot\.php/i],
[/\.tizerbank\.com\//i],
[/\.plomihy\.com/i],
[/static\.adv.*\.ru\/banners\//i],
[/meta\.ua\/f_new\.asp/i],
[/bdv\.bidvertiser\.com\/bidvertiser\.dbm/i],
[/squirrelsigdrs\.in\/banners\/show\.php/i],
[/code\.gif/i],
[/calend\.ru\/img\/calendar\//i],
[/hochu\.ua\/images\/articles\//i],
[/tagcloud\.swf/i],
[/myinfotopia\.com\//i],
[/swfhttprequest\.swf/i],
[/cityads\.ru\//i],
[/\/www\/delivery\//i],
[/z5x\.net\//i],
[/adotube\.com\//i],
[/lux-bn\.com\.ua\//i],
[/criteo\.com\//i],
[/autocompleteplus\.com\//i],
[/akamaihd\.net\//i],
[/etgdta\.com/i],
[/soundmanager.*\.swf/i],
[/player\.swf/i],
[/img\.traffim\.com\//i],
[/sharedaddomain\.com\//i],
[/avalala\.com\//i],
[/meta\.ua\/img\/b\/roll_flv2\.swf/i],
[/flowplayer/i],
[/manifest\.f4m/i],
[/radikal\.ru\//i],
[/jsonlock\.net\//i],
[/medbrowse\.com\.ua\/oops/i],
[/\.yandex\./i],
[/proxy\.com/i],
[/ternopilmarket\.net\/modules\/goods\/images\//i],
[/proxy.*\.media\.online\.ua\//i],
[/\/picture.*_user\//i],
[/img.*\.begun\.ru\//i],
[/topdownloads\.ru\//i],
[/gloker\.org\/upload/i],
[/e-parfum\.in\.ua\/products_image\//i],
[/mycdn\.me\//i],
[/gallery\.ru\//i],
[/adxpansion\.com\//i],
[/creoads\.com\//i],
[/bm\.img\.com\.ua\//i],
[/adserver\.juicyads\.com\//i],
[/a\.s3\.ua\//i],
[/servedbyadbutler\.com/i],
[/kidstaff\.net/i],
[/counter\.png/i],
[100, 100],
[/\.rjainc\.com\/images\/uploads\//i],
[/\/widget.*\//i],
[/lh.*\.ggpht\.com\//i],
[/cdn\.adnxs\.com/i],
[/mathtag\.com/i],
[/kavanga\.ru/i],
[/anonymizer\.com\.ua/i],
[/\.adnxs\.com/i],
[/\.yadro\.ru/i],
[/\/img.*\/photo.*\//i],
[/\/foto\//i],
[/odnoklassniki\./i],
[/static\/images/i],
[/\.vk\.me\//i],
[/rollingstone\.com\//i],
[/\/interview.*\//i],
[/\/post.*\//i],
[/ads.*\.contentabc\.com\//i],
[/ads.*\.msn\.com\//i],
[/ads\.webmasters\.ru\//i],
[/ads\.vsisumy\.com\//i],
[/ads\.trk4\.com\//i],
[/ads\.trafficjunky\.net\//i],
[/files\/images/i],
[/ads\.porn.*\//i],
[/4baby\.ua\/pictures/i],
[/\.de\//i],
[/\/thumb.*\//i],
[/ad\.drugasmuga\.com\/ban\.php/i],
[/\/public\/images\/gallery\//i],
[/w.*\.am15\.net\//i],
[/imgn\.dt00\.net\//i],
[/lcads\.ru\//i],
[/gazzete\.mk\.ua\/wp-content\/uploads\//i],
[/techniks\.mk\.ua\/wp-content\/uploads\//i],
[/img\.terrikon\.info\//i],
[/img\.ria\.ua\/photos\/adv\//i],
[/optimizedby\.brealtime\.com\//i],
[/\/uploads\/posts/i],
[/source\.mmi\.bemobile\.ua\/video\//i],
[/avatar/i],
[/\.pcads\.ru\//i],
[78, 78],
[/uploads\.ru\//i],
[88, 40],
[/fliphotos\.com\//i],
[/rand_img\.php/i],
[/\/images_slandocomua\//i],
[/chrome-extension:/i],
[/about:blank/i],
[/data:/i],
[/hotline\.ua\/img\/tx\//i],
[/gazeta\.ua\/img\/preview\//i],
[/www\.ex\.ua\/show\//i],
[/4baby\.ua\/productpicture\//i],
[/img\.gad\.org\.ua/i],
[/1x1\.gif/i],
[/vk\.jpg/i],
[/c\.bigmir\.net/i],
[/adlesse\.com/i],
[/turzona\.com\.ua/i],
[/kartinka\.com\.ua/i],
[/totoro\.com\.ua/i],
[/tas-ua\.toboads\.com/i],
[/vk\.com/i],
[/infrm\.weather\.ua\/image\//i],
[/vk_banner/i],
[/\.doubleclick\.net/i],
[/twitter\.com/i],
[/facebook\.com/i],
[/captcha/i],
[/images\.mob\.ua\//i],
[/gorgeoushandbag\.com\//i],
[/imgg\.dt0.*\.net\//i],
[/banner\.ua\/cgi-bin\/core\.fcgi/i],
[/adverserve\.net/i],
[/yield.*\.com\//i],
[/tbn\.ru/i],
[/adv\.fraza\.ua\//i],
[/sinoptik\.ua\/_uploaded_files\/..\/..\/uft_................................\.jpg$/i],
[/liga\.net\/www\/images\/.*\./i],
[/x\.magnet\.kiev\.ua\/www\/images\/.*\./i],
[/ads.*\.com\//i],

/\.kz/,
[/\/i\/0.*\.gif/i],

/krisha\.kz/,
[/\/i\/pro\//i],
[70, 50],
[120, 90],
[60, 50],

/kolesa\.kz/,
[60, 50],
[/\/idrive\//i],
[/\/uploads\/content\//i],

/magnolia-tv\.com/,
[/pictures\/avatar\//i],

/infohome\.com\.ua/,
[250, 250],

/auto\.mail\.ru/,
[/r.*\.mail\.ru\/b.*\.jpg$/i],

/sport\.ua/,
[/sport\.ua\/images\//i],

/autocentre\.ua/,
[/autocentre\.ua\/images\//i],

/terrikon\.com/,
[/\/fans\//i],

/kievskaya\.com\.ua/,
[/image\.tsn\.ua\//i],

/mbox2\.i\.ua/,
[/fsimg\.ru\//i],

/uaua\.info/,
[/\/pictures\//i],

/telekritika\.ua/,
[/telekritika\.ua.*\/imgs\//i],
[/telekritika\.ua.*\/images\//i],

/meteo\.ua/,
[/meteo\.ua\/var\/banners\/favorites_ua\.jpg/i],

/smartphone\.ua/,
[/smartphone\.ua\/img\//i],
[240, 400],

/ria\.ua/,
[/img\.ria\.ua\/photos\/auto/i],

/itc\.ua/,
[/itc\.ua\/files\/pic/i],
[/wp-content/i],

/lissod\.com\.ua/,
[/\/st_img\/flash\//i],

/onlinetb\.com\.ua/,
[200, 200],

/delo\.ua/,
[/inf\.korrespondent\.net/i],
[/informers\.ukr\.net/i],

/sport-express\.ua/,
[/sport-express\.ua\/img\//i],

/calend\.ru/,
[/promo\.1000zakazov\.ru\//i],
[/shkolazhizni\.ru\/img\/adv\//i],

/bestdroid\.ru/,
[/upload/i],

/hnb\.com\.ua/,
[/artimage/i],

/biathlon\.com\.ua/,
[/img\/ministerstvo\.gif/i],

/hotline\.ua/,
[120, 60],

/gazeta\.ua/,
[300, 240],

/mamaclub\.ua/,
[300, 250],

/myradio\.ua/,
[300, 250],

/oceni\.ua/,
[250, 250],

/ava\.ua/,
[240, 400],

/games\.bigmir\.net/,
[/ads\..*\./i],

/connect\.ua/,
[300, 240],

/bilshe\.com/,
[/banner/i],

/realty\.mail\.ru/,
[/img\.pre\.realty\.mail\.ru\/.*\.jpg$/i],

/pogoda\.mail\.ru/,
[/r.*\.mail\.ru\/b.*\.jpg$/i],

/cards\.mail\.ru/,
[/r.*\.mail\.ru\/b.*\.png$/i],

/hi-tech\.mail\.ru/,
[/r.*\.mail\.ru\/b.*\.png$/i],
[/r.*\.mail\.ru\/b.*\.jpg$/i],

/otvet\.mail\.ru/,
[/r.*\.mail\.ru\/b.*\.gif$/i],

/health\.mail\.ru/,
[/r.*\.mail\.ru\/b.*\.gif$/i],
[/r.*\.mail\.ru\/b.*\.jpg$/i],

/deti\.mail\.ru/,
[/r.*\.mail\.ru\/b.*\.jpg$/i],

/mail\.ru/,
[/ban\./i],
[/\/adv\//i],

/^cm\.mmi\.macc\.com\.ua$/,
[/\.png$/i]
]);

var banners = new CM_Message("banners", {
invisible: [],
sentCount: 0,
initCounter: 1,

/** @this {CM_Message} */
initialize: function () {
var ie = /MSIE/.test(ua),
iphone3 = /iPhone OS 3/.test(ua);

if (isFrame && !CONFIG.work_in_frame) {
return;
}

this.httpMethod = window.opera || ie || iphone3 ? "GET" : "POST";

setInterval(function () {
banners.scan(banners.onAdsDone);
}, CONFIG.ads.scan_frequency * 1000);
// Set `sr` by default to inactive tab value.
// It will be removed immediately by the call of
// onTabActive(), if tab has been opened active.
/** @expose */
this.params.sr = 1;
// XXX: should not need timeout
setTimeout(function () {
banners.scan(banners.onAdsDone);
}, 4);
// scan(this.onAdsDone);
onVisibilityChange(this.onTabActive, this.onTabInactive);
},

restart: function () {
this.referrer = previousLocation;
this.sentCount = 0;
this.invisible = [];
this.initCounter++;
},
/** @this {CM_Message} */
onTabActive: function () {
if (isFrame) {
this.params.sr = 2;
} else {
delete this.params.sr;
}
},
/** @this {CM_Message} */
onTabInactive: function () {
this.params.sr = 1;
},

/**
* Scan document for ads based on pre-configured positive & negative templates.
* Passes found ads as Array to callback function from 1st param.
*
* @param {Function} cb callback where to pass found list of ads
*/
scan: function (cb) {
var ads = [],
callbacks = banners.scan.callbacks = banners.scan.callbacks || [],
nodes = [],
nodesData = [],
SEARCH_DEPTH = 4;
// same callback must not be called twice w/ same ads
if (-1 === indexOf(callbacks, cb)) {
callbacks.push(cb);
}

function searchBg(node, depth) {
var items = node.childNodes || [], l = items.length,
nodes = searchBg.nodes = searchBg.nodes || [],
excludeTags = ['head', 'script', 'style'];
if (depth = MIN_WIDTH && node.offsetHeight >= MIN_HEIGHT && bg !== ‘none’) {
nodes.push({“node”: node, “bg”: bg.slice(4, -1).split(‘”‘).join(”)});
}
}
while (l–) {
if (items[l].nodeType == 1 && indexOf(excludeTags, items[l].tagName.toLowerCase()) < 0) {
getBg(items[l]);
searchBg(items[l], depth – 1);
}
}
return nodes;
}
// prepare cache of DOM to improve overall performance
function prepare(doc) {
function append(node) {
var src = getNodeSrc(node), size = getSize(node);

if (size.w <= CONFIG.ads.width || size.h = 50) {
send();
r = [];
}
}
});
each(ads, function (ad) {
if (getSentAttr(ad) !== CMeterAttrValue) {
var pos,
src = getNodeSrc(ad),
cl = getDestinationPath(ad);

if (isVisible(ad)) {
pos = getOffset(ad).top + getSize(ad).h;
} else {
// Ad may be considered invisible due to it is still
// being loaded. Delay it’s sending ‘till next scan.
// See bug #29960
if (-1 === indexOf(that.invisible, ad)) {
that.invisible.push(ad);
return;
}
pos = -1;
}
setSentAttr(ad);

r.push(append(src, pos, cl));

// Note: if there are 50 ads, then it will try to send()
// twice (but second time should not make HTTP request)
if (r.length >= 50) {
send();
r = [];
}
}
});

send();
}
});

var timer = new CM_Message(“timer”, {
/** @this {CM_Message} */
initialize: function () {
// null can later be safely compared w/ numbers
this.maxScrollHeight = null;
if (isFrame && (!CONFIG.work_in_frame || CONFIG.addon_disable_frame_timers)) {
return;
}
this.pings = [];
extend(this.pings, CONFIG.timer.pings);
load(this.onWindowLoad);
onViewportChange(this.onViewportChange);
// since cm.js is executed exactly before
// onload callback fires,
// this delay gives scripts some time to subscribe
// for very first __cm.on(“send”, …); to modify it
setTimeout(function () {
onVisibilityChange(timer.onTabActive, timer.onTabInactive);
}, 20);
},
/** @this {CM_Message} */
onBeforeCommit: function () {
var now = new Date(),
activated = this.activated || started,

total = now – started,
active = (this.inactived || now) – activated;

this.params[1] = Math.round(active / 1000);
this.params[2] = this.maxScrollHeight;
this.params[4] = Math.round(total / 1000);

this.commit();
this.commit.time = now;
},

/** @this {CM_Message} */
tick: function () {
var now = new Date(),
commited = this.commit.time || 0,
active = now – this.activated,
param2 = Math.round(active / 1000),

canCommit = Math.round((now – commited) / 1000) >= CONFIG.timer.frequency;

if (!this.activated) {
return;
}

if (!canCommit) {
return;
}

if (param2 >= CONFIG.timer.stop_after * 60) {
clearInterval(this.interval);

if (ENABLE_CONSOLE) {
console.log(“timer stopped:”, param2);
}
}

// TODO: May param2 be lower than lastPing?

if (param2 >= CONFIG.timer.pings[0]) {
this.send();
if (1 === CONFIG.timer.pings.length) {
this.pingsFrequency = CONFIG.timer.pings[0] – this.lastPing;

if (ENABLE_CONSOLE) {
console.log(“last ping interval:”, this.pingsFrequency);
}
}
this.lastPing = CONFIG.timer.pings.shift();
} else if (param2 % this.pingsFrequency == 0) {
this.send();
this.lastPing = param2;
} else if (this.params[2] !== this.maxScrollHeight) {
if (ENABLE_CONSOLE) {
console.log(“scrolled to point”, this.maxScrollHeight);
}

this.send();
}
},

/** @this {CM_Message} */
onWindowLoad: function (date) {
this.params[3] = date – started;
this.onViewportChange();
},
/** @this {CM_Message} */
onTabActive: function () {
var now = new Date();

// it can be inactivated only after it was activated
// and cm.js should count only first activation
if (!this.inactived) {
this.activated = now;

if (ENABLE_CONSOLE) {
console.log(“timer activated”, +now);
}

if (mobile) {
var that = this;
setTimeout(function () {
if (!(banners.sentCount + banners.invisible.length)) {
that.tick();
}
}, CONFIG.ads.scan_frequency * 1000 + 1000);
} else {
this.interval = setInterval(this.tick , 1000);
// and send on 0th second
this.send();
}
}
},
/** @this {CM_Message} */
onTabInactive: function () {
var now = new Date();
if (!this.inactived) {
this.inactived = now;

if (!mobile)
this.send();

if (ENABLE_CONSOLE) {
console.log(“timer deactivated”, +now);
}

clearInterval(this.interval);
}
},
/** @this {CM_Message} */
onViewportChange: function () {
var b = document.body,
d = document.documentElement,
t = getWindowTop(),
h = “clientHeight” in d ? d.clientHeight : 0;
if (b) {
h = document.compatMode === “CSS1Compat” ? d.clientHeight : b.clientHeight;
}
if (t + h >= this.maxScrollHeight) {
this.maxScrollHeight = t + h;
}
},
restart: function () {
if (ENABLE_CONSOLE) {
console.log(‘start new timers’);
}
this.maxScrollHeight = null;
this.inactived = undefined;
this.referrer = previousLocation;
started = new Date();
clearInterval(this.interval);

if (isFrame && (!CONFIG.work_in_frame || CONFIG.addon_disable_frame_timers)) {
return;
}

load(this.onWindowLoad);
this.params[3] = 0;
CONFIG.timer.pings = [];
extend(CONFIG.timer.pings, this.pings);
this.onTabActive();
}
});
setInterval(function () {
var currentLocation = location.href.replace(location.hash,””);
if (previousLocation !== currentLocation) {
banners.restart();
timer.restart();
previousLocation = currentLocation;
}
}, CONFIG.timer.check_location_timer * 1000 || 1000);

window['__cm'].push(“ua”);
}

}(window, document));
// ]]>

Рекомендуем

You can skip to the end and leave a response. Pinging is currently not allowed.

Оставить комментарий