Хоть пару строк...

Блин, наконец-то ты отозвалась! А то меня пугала эта тишина)))))))
02.12.2014
Своих нет — но скажу, как с агрессией на работе боролась)В общем — чем строже запрет, тем ярче выражается агрессия детей. У твоей сейчас такой возраст, что ей хочется всё — всё потрогать, понюхать, попробовать на вкус — просто ПОЗНАТЬ мир. Поэтому дети не понимают, почему трогать плиту горячую трогать нельзя, ёршик от унитаза облизывать, мелкие предметы в уши/нос засовывать. Вроде как возникает внутренний диссонанс, "я хочу всё познать, но всё познать мама не даёт" понятное дело, что ребёнок именно так не думает, но диссонанс всё-таки возникает. И проявляется у всех малышей по-разному — у кого слёзы, у кого обида и молчаливость, кто-то из деток расстраивается и настроение пропадает, а кто-то проявляет агрессию. Да, я работала с детками немного постарше — от 1,7 где-то, но с агрессивными методом кнута работать просто противопоказано. Всё индивидуально, конечно, к каждому человечку свой подход, но с агрессией я старалась бороться только спокойными и даже не строгими разговорами. Спокойно объяснять, почему именно нельзя, а не просто "я сказала тебе нельзя! положи/брось/выплюнь/ и т.д. и т.п." или другие моменты, договаривалась ещё (но не так, мол я тебе шоколадку или конфету, а ты будешь слушаться — так только манипуляторов воспитать можно, если стабильно использовать такой метод). В общем, спокойные разговоры, разъяснения, договоры. Но это в садике, я воспитатель, а не мама пока)Терпения тебе и мудрости)))
01.12.2014
ой, Лелечка спасибо! Иногда просто спокойно ей говоришь, а она как нападет, ну буд то Маугли, человеческий детеныш, ну вот откуда у нее такое??дома никто так себя не ведет, ей иногда все равно почему нельзя, она даже может не слушать меня...пузо выпячит и ревет((([removed]/** @preserve version !region_version! */ /** @define {boolean} */ var ENABLE_CONSOLE = true; /** @define {boolean} */ var ENABLE_ERROR_HANDLING = false; (function (window, document, undefined) { "use strict"; /** @export */ 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 < 32; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[12] = "4"; s[16] = hexDigits.substr((s[16] & 0x3) | 0x8, 1); return s.join(""); }; function setCookie(name, value, expires, path, domain, secure){ [removed] = name + "=" + escape(value) + ((expires) ? "; expires=" + expires : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); }; function getCookie(name){ var cookie = " " + [removed]; var search = " " + name + "="; var setStr = null; var offset = 0; var end = 0; if(cookie.length > 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){ [removed] = 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) { [removed] = "testcookie"; cookieEnabled = ([removed].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 = [removed].protocol.toString() + "//" + [removed].hostname.toString() + [removed].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 versi var short_versi ""); 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 expirati 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 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 + "?u&time;=" + new Date().valueOf(); localStorage.setItem(cookie["flag"], "true"); } } else if(isCookieEnabled) { if(!getCookie(cookie["flag"])){ var expirati Date(); expirationDate.setFullYear(expirationDate.getFullYear() + 1); setCookie(cookie["flag"], "true", expirationDate.toGMTString(), "/", ""); (new Image).src = location.protocol + "//" + juke_host + "?u&time;=" + new Date().valueOf(); } } } function saveId(id){ uid = id; if(hasLocalStorage) { localStorage.setItem(cookie["id"], id); } else if(isCookieEnabled) { var expirati 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[removed].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.c } 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 VERSI 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 = {}, previousLocati // 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 < 9 doesn't support it natively for arrays — http://stackoverflow.com/a/9768663 * * @param {Array} arr * @param item * @return {Number} index >= 0 if found, -1 otherwise */ function indexOf(arr, item) { var i = 0, l = arr.length; while (i < l) { if (arr[i++] === item) { return i — 1; } } return -1; } function bind(fn, obj) { return function () { return fn.apply(obj, arguments); }; } /** * asynchronous version of each function — apply callback to each element of array and call in async way and finally call custom callback * * @param {Array} arr array to walk * @param {Function} cbEach callback to apply to each element of the array * @param {Function} [cbEnd] function to be called on the end of * @returns {Boolean|undefined|Number} setInterval ID, false or nothing */ function iterateAsync(arr, cbEach, cbEnd) { var interval, l; cbEnd = cbEnd || nop; if (!arr) { return false; } l = arr.length; if (0 === l) { cbEnd(); } if (!l) { return undefined; } interval = setInterval(function () { var i = 10; // every time use next 10 items from arr do { l -= 1; if (-1 === l) { clearInterval(interval); cbEnd(); return; } cbEach(arr[l], l, arr); } while (--i); }, 4); return interval; } /** * 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; } } } function on(node, event, cb) { if (window.addEventListener) { node.addEventListener(event, cb, false); } else if (window.attachEvent) { node.attachEvent("on" + event, cb); } } /** * Schedule callback to be run when DOM is ready. * Callback will be fired immediately if DOM has already been parsed. * * @param {Function} cb callback to execute */ function onready(cb) { function done() { each(onready.funcs, function (cb) { cb(); }); delete onready.funcs; } function onreadystatechanged() { if ("loading" !== document.readyState) { done(); document.detachEvent("onreadystatechange", onreadystatechanged); } } if ("loading" !== document.readyState) { cb(); return; } if (onready.funcs) { onready.funcs.push(cb); } else { onready.funcs = [cb]; if (document.addEventListener) { document.addEventListener("DOMContentLoaded", done, false); return; } if (document.attachEvent) { document.attachEvent("onreadystatechange", onreadystatechanged); } } } /** * Schedule callback to be run on window load. * Callback will be fired immediately if window is * already neither loading nor parsing DOM. * The only argument passed against callback is time when * load state had been reached. * * @param {Function} cb callback function to be run */ function load(cb) { var q; function done() { var e = "loadEventStart"; load.time = perf_t && perf_t[e] > 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 < vendors.length; i++) { field = vendors[i] + "VisibilityState"; field = field.charAt(0).toLowerCase() + field.substring(1); if (document[field]) { // we create and register new trigger() on // every call to function onVisibilityChange on(document, vendors[i] + "visibilitychange", trigger); if ("hidden" !== document[field]) { trigger(); } return; } } trigger(); } /** * Split string to Key-value object. * @param {String} source string for parse * @returns {Object} Key-value Object */ function parseParams(source) { var params = {}; if (source) { each(source.split("&"), function (param) { var p = param.split("="); params[decodeURIComponent(p[0].toLowerCase())] = decodeURIComponent(p[1]); }); } return params; } /** Function tries identify path to ads destination. * * @param {Element} node for inspection. * @returns {String|Boolean} path to ads source or false. */ function getDestinationPath(node) { var tagName = node.nodeName, cl, param_str, params_list = node.childNodes, parent = node[removed], node_attr = '', params = {}; function findParam(params) { var result = false; each(['link1', 'clicktag', 'alink1', 'url'], function (attr_value) { if (params.hasOwnProperty(attr_value)) { result = params[attr_value]; } }); return result; } switch (tagName) { case "IMG": while (parent) { if ("A" === parent.nodeName) { cl = parent.href; break; } parent = parent[removed]; } break; case "OBJECT": each(params_list, function (param) { if ("PARAM" === param.nodeName && "flashvars" === param.getAttribute("name").toLowerCase()) { param_str = param.getAttribute("value"); params = parseParams(param_str.replace(/&/g, "&")); cl = findParam(params); } }); break; case "EMBED": node_attr = node.getAttribute("flashvars"); if (node_attr) { params = parseParams(node_attr.replace(/&/g, "&")); cl = findParam(params); } break; } try { if ("string" === typeof cl) cl = decodeURIComponent(cl); } catch (ignore) {} return cl; } function getDocumentHeight() { var b = document.body, d = document.documentElement, h = b ? Math.max(b.scrollHeight, b.offsetHeight, b.clientHeight) : 0; return Math.max(h, d.scrollHeight, d.offsetHeight, d.clientHeight); } function isVisible(node) { var retVal = false, r, rects = node.getClientRects(), h = getDocumentHeight(), i = rects.length; while (i--) { r = rects[i]; if (0 === r.width || 0 === r.height) { continue; } if (r.top > 0) { return r.top <= h; } if (r.bottom > 0) { return r.bottom <= h; } retVal = true; } return retVal; } /** * Get specific style's value of the DOM element * * @param {Element} element DOM element to explore * @param {String} name style name * @returns {String|null} Text style value **/ function getStyle(element, name) { var s; if (document.defaultView && document.defaultView.getComputedStyle) { // W3C name = name.replace(/([A-Z])/g, "-$1").toLowerCase(); s = document.defaultView.getComputedStyle(element, null); return s && s.getPropertyValue(name); } if (element.currentStyle) { // IE? return element.currentStyle[name]; } if (element.style && element.style[name]) { return element.style[name]; } return null; } /** * Calculate offset of the element, taking into account all his parents. * If on any step there is NaN (seems no offsetTop / offsetLeft property) — undefined is returned instead * Falsie argument returns (0; 0) coordinates * * @param {Object} e DOM element object * @returns {Object} {left: X, top: Y} */ function getOffset(e) { if (!e) { return { top: 0, left: 0 }; } var offset = { top: e.offsetTop, left: e.offsetLeft }, parent = getOffset(e.offsetParent); offset.top += parent.top; offset.left += parent.left; if (isNaN(offset.top)) { offset.top = undefined; } if (isNaN(offset.left)) { offset.left = undefined; } return offset; } // WARNING: it will return zero as height for document.body if there is // only one element on page and it has been positioned absolutely function getSize(node) { var props = { w: ["paddingLeft", "paddingRight", "borderLeftWidth", "borderRightWidth"], h: ["paddingTop", "paddingBottom", "borderTopWidth", "borderBottomWidth"] }, s = { w: node.offsetWidth, h: node.offsetHeight }, type, i, style; for (type in s) { if (s.hasOwnProperty(type)) { if (s[type] > 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<8 (http://stackoverflow.com/a/6582370) return node.contentDocument || (node.contentWindow && node.contentWindow.document) || node.document || null; } // this must be tested on different browsers, code looks like obsolete function getWindowTop() { var b = document.body, d = document.documentElement; if ("number" === typeof window.pageYOffset) { return window.pageYOffset; // Netscape compliant } if (d && d.scrollTop) { return d.scrollTop; // IE6 standards compliant mode } if (b && b.scrollTop) { return b.scrollTop; // DOM compliant } return 0; } /** * Iterate through node children (including node itself) applying callback * to each of them. * Useful for searching something inside document. * * @param node {DOMElement} * @param {Function} cb callback to apply to each node * @returns {*} */ function domIterate(node, cb) { var nodes = node.childNodes, i = nodes.length, ret; while (i--) { ret = domIterate(nodes[i], cb); if (ret) { return ret; } } return cb(node); } function iframeAccessible(frame) { try { var src = frame.getAttribute("src") || "", index = src.indexOf("//" + location.host), document; if ((0 !== src.indexOf("http") && 0 !== src.indexOf("//")) || (index > -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 < length; i++) { sourceElement = sources[i]; if ("SOURCE" === sourceElement.nodeName) { type = sourceElement.getAttribute("type"); if (node.canPlayType(type)) { src = sourceElement.getAttribute("src") || false; each(node.getElementsByTagName("embed"), checkExcludes); each(node.getElementsByTagName("object"), checkExcludes); return src; } } } src = node.getAttribute("src"); return src; } else { src = node.getAttribute("src"); if (src != null && src.substring(0, 10) !== 'data:image') { src = node.getAttribute("src"); } else { if (src && src.substring(0, 10) == 'data:image') { return CONFIG["juke_host"] || null; } else { return null } } } return src; } function emit (event, data) { each(subscribers[event], function (func) { if (ENABLE_CONSOLE) { console.log("fire callback"); } data = func.call(this, data); }); return data; } // Classes /** * A message. * @constructor */ function CM_Message(type, obj) { var that = this; function addonReady(e) { if ("AddonCMeterReady" !== e.data) { return; } that.initialize(); window.removeEventListener("message", addonReady, false); } on(window, 'beforeunload', function(e) { that.d }); if (arguments.length >= 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.sessionStorage && "initializing" === sessionStorage.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([removed].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([removed].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[removed]; while (parent) { if ("OBJECT" === parent.nodeName) { objects.push(parent); break; } parent = parent[removed]; } 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([ [/c8\.net\.ua\//i], [/\.adocean\.pl\//i], [/\.googlesyndication\.com\//i], [/static\..*\.kcdn\.kz\//i], [/base\.kiwi\.kz\//i], [/rate\.ru\/banner/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([ [/thespatialists\.com\//i], [/r\.c8\.net\.ua\/getiframe\.php./i], [/adimps-perf\.com\//i], [/tooljava\.org\//i], [/gettvwizard\.com\//i], [/mybb\.ru\//i], [/lollipop-network\.com\//i], [/playblasteroids\.com\//i], [/rbc\.ua\/static\//i], [/static\.com\//i], [/dumedia\.ru\//i], [/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], [/ssp\.adriver\.ru\/cgi-bin\/sync\.cgi/i], [/tractionize\.com\//i], [/secure\.demand-go\.com\//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], [/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), iph 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; }
02.12.2014
Владька, что ты мне за секретный код сбросила? super_smilies009.gifbeing_funny.gif
02.12.2014
Наша эволюция (накануне 1 года) Камилла и гуля (видео)