Jump to content
View in the app

A better way to browse. Learn more.

ROCKhell.ru

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Батюк - хам и не воспитанный мудак.

On 15.01.2016 at 11:45 PM, vitalij.batiuk said:

Улетевшие надежды

 

 

 

 

 

1.

 

Потерялись все надежды

 

С ними вера и любовь,

 

В сумасшедших бурях снежных

 

Ждет погибель их миров.

 

Не разжечь огня былого

 

Подружить  нельзя со льдом.

 

Потеряли слишком много

 

В разговорах ни о чём.

 

 

 

 

 

Припев:

 

Улетевшие надежды

 

На ушедшую любовь

 

Будоражат сердце прежде,

 

Ранят душу вновь и вновь.

 

Улетевшие надежды,

 

Как погибшие цветы,

 

Так хотят в судьбе мятежной

 

С новой силой расцвести.

 

 

 

 

 

 

 

2.

 

В диалоге непонятном

 

Лишь к разлуке мы пришли,

 

Наши чувства, вероятно,

 

Возгореться не смогли.

 

И любовь в других пространствах

 

Ищет спутника судьбы,

 

Нерастраченные шансы

 

Вдохновенье обрели.

 

 

 

 

 

Припев:

 

 

 

 

 

 

 

 

 

 

 

ну вот я украл твой текст, за который ты деньги просишь. вот ты лох!! теперь я знаменит

https://vk.com/wall181786007_6 

 

<div id="vk_post_181786007_6"></div>

<script type="text/javascript">

 (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0];

if (d.getElementById(id)) return; js = d.createElement(s);

js.id = id;

js.src = "//vk.com/js/api/openapi.js?121";

fjs.parentNode.insertBefore(js, fjs); }

(document, 'script', 'vk_openapi_js'));  

(function() {    if (!window.VK || !VK.Widgets || !VK.Widgets.Post || !VK.Widgets.Post("vk_post_181786007_6", 181786007, 6, 'UnH2tvzL5QbhVcfAUTfh0QzhtOQ', {width: 500})) setTimeout(arguments.callee, 50);  }());

</script>

Edited by Дьявол стояков
а впрочем похуй

Just now, Дьявол стояков said:

https://vk.com/wall181786007_6 

 

<div id="vk_post_181786007_6"></div><script type="text/javascript">

 (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0];

if (d.getElementById(id)) return; js = d.createElement(s);

js.id = id; js.src = "//vk.com/js/api/openapi.js?121";

fjs.parentNode.insertBefore(js, fjs); }

(document, 'script', 'vk_openapi_js'));  

(function() {    if (!window.VK || !VK.Widgets || !VK.Widgets.Post || !VK.Widgets.Post("vk_post_181786007_6", 181786007, 6, 'UnH2tvzL5QbhVcfAUTfh0QzhtOQ', {width: 500})) setTimeout(arguments.callee, 50);  }());

</script>

в треде хакер, остановите его!!! 

1 минуту назад, x_rain_x сказал:

в треде хакер, остановите его!!! 

(function(w) {
  if (w.fastXDM) return;

  var handlers = {};
  var onEnvLoad = [];
  var env = {};

// Key generation
  function genKey() {
    var key = '';
    for (i=0;i<5;i++) key += Math.ceil(Math.random()*15).toString(16);
    return key;
  }

  function waitFor(obj, prop, func, self,  count) {
    if (obj[prop]) {
      func.apply(self);
    } else {
      count = count || 0;
      if (count < 1000) setTimeout(function() {
        waitFor(obj, prop, func, self, count + 1)
      }, 0);
    }
  }

  function attachScript(url) {
    setTimeout(function() {
      var newScript = document.createElement('script');
      newScript.type = 'text/javascript';
      newScript.src = url || w.fastXDM.helperUrl;
      waitFor(document, 'body', function() {
        document.getElementsByTagName('HEAD')[0].appendChild(newScript);
      });
    }, 0);
  }

  function walkVar(value, clean) {
    switch (typeof value) {
      case 'string':
        if (clean) {
          return value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#039;');
        }
        return value.replace(/&#039;/g, '\'').replace(/&quot;/g, '"').replace(/&gt;/g, '>').replace(/&lt;/g, '<').replace(/&amp;/g, '&');

      case 'object':
        if (Object.prototype.toString.apply(value) === '[object Array]') {
          newValue = [];
          for (var i = 0; i < value.length; i++) {
            newValue = walkVar(value, clean);
          }
        } else {
          for (var k in value) {
            newValue = {};
            if (Object.hasOwnProperty.call(value, k)) {
              newValue[k] = walkVar(value[k], clean);
            }
          }
        }
      default:
        newValue = value;
    }

    return newValue;
  }

// Env functions
  function getEnv(callback, self) {
    if (env.loaded) {
      callback.apply(self, [env]);
    } else {
      onEnvLoad.push([self, callback]);
    }
  }

  function envLoaded() {
    env.loaded = true;
    var i = onEnvLoad.length;
    while (i--) {
      onEnvLoad[1].apply(onEnvLoad[0], [env]);
    }
  }

  function applyMethod(strData, self) {
    getEnv(function(env) {
      var data = env.json.parse(strData);
      if (data[0]) {
        if (!data[1]) data[1] = [];
        var i = data[1].length;
        while (i--) {
          if (data[1]._func) {
            var funcNum = data[1]._func;
            data[1] = function() {
              var args = Array.prototype.slice.call(arguments);
              args.unshift('_func'+funcNum);
              self.callMethod.apply(self, args);
            }
          } else if (self.options.safe) {
            data[1] = walkVar(data[1], true);
          }
        }
        setTimeout(function() {
          if (!self.methods[data[0]]) {
            throw Error('fastXDM: Method ' + data[0] + ' is undefined');
          }
          self.methods[data[0]].apply(self, data[1]);
        }, 0);
      }
    });
  }

// XDM object
  w.fastXDM = {
    _id: 0,
    helperUrl: ((location.protocol === 'https:') ? 'https:' : 'http:') + '//vk.com/js/api/xdmHelper.js',

    Server: function(methods, filter, options) {
      this.methods = methods || {};
      this.id = w.fastXDM._id++;
      this.options = options || {};
      this.filter = filter;
      this.key = genKey();
      this.methods['%init%'] = this.methods.__fxdm_i = function() {
        w.fastXDM.run(this.id);
        if (this.methods.onInit) this.methods.onInit();
      };
      this.frameName = 'fXD'+this.key;
      this.server = true;
      handlers[this.key] = [applyMethod, this];
    },

    Client: function(methods, options) {
      this.methods = methods || {};
      this.id = w.fastXDM._id++;
      this.options = options || {};
      w.fastXDM.run(this.id);
      if (window.name.indexOf('fXD') === 0) {
        this.key = window.name.substr(3);
      } else {
        throw Error('Wrong window.name property.');
      }
      this.caller = window.parent;
      handlers[this.key] = [applyMethod, this];
      this.client = true;

      w.fastXDM.on('helper', function() {
        w.fastXDM.onClientStart(this);
      }, this);

      getEnv(function(env) {
        env.send(this, env.json.stringify(['%init%']));
        var methods = this.methods;
        setTimeout(function() {
          if (methods.onInit) methods.onInit();
        }, 0);
      }, this);
    },

    onMessage: function(e) {
      if (!e.data) return false;
      var data = e.data;
      if (typeof data != 'string' && !(data instanceof String)) return false;
      var key = data.substr(0, 5);
      if (handlers[key]) {
        var self = handlers[key][1];
        if (self && (!self.filter || self.filter(e.origin))) {
          handlers[key][0](e.data.substr(6), self);
        }
      }
    },

    setJSON: function(json) {
      env.json = json;
    },

    getJSON: function(callback) {
      if (!callback) return env.json;
      getEnv(function(env) {
        callback(env.json);
      });
    },

    setEnv: function(exEnv) {
      var i;
      for (i in exEnv) {
        env = exEnv;
      }
      envLoaded();
    },

    _q: {},

    on: function(key, act, self) {
      if (!this._q[key]) this._q[key] = [];
      if (this._q[key] == -1) {
        act.apply(self);
      } else {
        this._q[key].push([act, self]);
      }
    },

    run: function(key) {
      var len = (this._q[key] || []).length;
      if (this._q[key] && len > 0) {
        for (var i = 0; i < len; i++) this._q[key][0].apply(this._q[key][1]);
      }
      this._q[key] = -1;
    },

    waitFor: waitFor
  }

  w.fastXDM.Server.prototype.start = function(obj, count) {
    if (obj.contentWindow) {
      this.caller = obj.contentWindow;
      this.frame = obj;

      w.fastXDM.on('helper', function() {
        w.fastXDM.onServerStart(this);
      }, this);

    } else { // Opera old versions
      var self = this;
      count = count || 0;
      if (count < 50) setTimeout(function() {
        self.start.apply(self, [obj, count+1]);
      }, 100);
    }
  }

  w.fastXDM.Server.prototype.destroy = function() {
    handlers.splice(handlers.indexOf(this.key), 1);
  }

  function extend(obj1, obj2){
    for (var i in obj2) {
      if (obj1 && typeof(obj1) == 'object') {
        extend(obj1, obj2)
      } else {
        obj1 = obj2;
      }
    }
  }

  w.fastXDM.Server.prototype.append = function(obj, options) {
    var div = document.createElement('DIV');
    div.innerHTML = '<iframe name="'+this.frameName+'" ></iframe>';
    var frame = div.firstChild;
    var self = this;
    setTimeout(function() {
      frame.frameBorder = '0';
      if (options) extend(frame, options);
      obj.insertBefore(frame, obj.firstChild);
      self.start(frame);
    }, 0);
    return frame;
  }

  w.fastXDM.Client.prototype.callMethod = w.fastXDM.Server.prototype.callMethod = function() {
    var args = Array.prototype.slice.call(arguments);
    var method = args.shift();
    var i = args.length;
    while (i--) {
      if (typeof(args) == 'function') {
        this.funcsCount = (this.funcsCount || 0) + 1;
        var func = args;
        var funcName = '_func' + this.funcsCount;
        this.methods[funcName] = function() {
          func.apply(this, arguments);
          delete this.methods[funcName];
        }
        args = {_func: this.funcsCount};
      } else if (this.options.safe) {
        args = walkVar(args, false);
      }
    }
    waitFor(this, 'caller', function() {
      w.fastXDM.on(this.id, function() {
        getEnv(function(env) {
          env.send(this, env.json.stringify([method, args]));
        }, this);
      }, this);
    }, this);
  }

  if (w.JSON && typeof(w.JSON) == 'object' && w.JSON.parse && w.JSON.stringify && w.JSON.stringify({a:[1,2,3]}).replace(/ /g, '') == '{"a":[1,2,3]}') {
    env.json = {parse: w.JSON.parse, stringify: w.JSON.stringify};
  } else {
    w.fastXDM._needJSON = true;
  }

// PostMessage cover
  if (w.postMessage) {
    env.protocol = 'p';
    env.send = function(xdm, strData) {
      var win = (xdm.frame ? xdm.frame.contentWindow : xdm.caller);
      win.postMessage(xdm.key+':'+strData, "*");
    }
    if (w.addEventListener) {
      w.addEventListener("message", w.fastXDM.onMessage, false);
    } else {
      w.attachEvent("onmessage", w.fastXDM.onMessage);
    }

    if (w.fastXDM._needJSON) {
      w.fastXDM._onlyJSON = true;
      attachScript();
    } else {
      envLoaded();
    }
  } else {
    attachScript();
  }

})(window);


if (!window.VK) window.VK = {};


/*
 * Based on JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Copyright (C) Paul Johnston 1999 - 2009
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 */
if(!VK.MD5){VK.MD5=function(n){var j=function(o,r){var q=(o&65535)+(r&65535),p=(o>>16)+(r>>16)+(q>>16);return(p<<16)|(q&65535)},g=function(o,p){return(o<<p)|(o>>>(32-p))},k=function(w,r,p,o,v,u){return j(g(j(j(r,w),j(o,u)),v),p)},a=function(q,p,w,v,o,u,r){return k((p&w)|((~p)&v),q,p,o,u,r)},h=function(q,p,w,v,o,u,r){return k((p&v)|(w&(~v)),q,p,o,u,r)},c=function(q,p,w,v,o,u,r){return k(p^w^v,q,p,o,u,r)},m=function(q,p,w,v,o,u,r){return k(w^(p|(~v)),q,p,o,u,r)},b=function(A,u){var z=1732584193,y=-271733879,w=-1732584194,v=271733878,r,q,p,o;A[u>>5]|=128<<((u)%32);A[(((u+64)>>>9)<<4)+14]=u;for(var t=0,s=A.length;t<s;t+=16){r=z;q=y;p=w;o=v;z=a(z,y,w,v,A[t+0],7,-680876936);v=a(v,z,y,w,A[t+1],12,-389564586);w=a(w,v,z,y,A[t+2],17,606105819);y=a(y,w,v,z,A[t+3],22,-1044525330);z=a(z,y,w,v,A[t+4],7,-176418897);v=a(v,z,y,w,A[t+5],12,1200080426);w=a(w,v,z,y,A[t+6],17,-1473231341);y=a(y,w,v,z,A[t+7],22,-45705983);z=a(z,y,w,v,A[t+8],7,1770035416);v=a(v,z,y,w,A[t+9],12,-1958414417);w=a(w,v,z,y,A[t+10],17,-42063);y=a(y,w,v,z,A[t+11],22,-1990404162);z=a(z,y,w,v,A[t+12],7,1804603682);v=a(v,z,y,w,A[t+13],12,-40341101);w=a(w,v,z,y,A[t+14],17,-1502002290);y=a(y,w,v,z,A[t+15],22,1236535329);z=h(z,y,w,v,A[t+1],5,-165796510);v=h(v,z,y,w,A[t+6],9,-1069501632);w=h(w,v,z,y,A[t+11],14,643717713);y=h(y,w,v,z,A[t+0],20,-373897302);z=h(z,y,w,v,A[t+5],5,-701558691);v=h(v,z,y,w,A[t+10],9,38016083);w=h(w,v,z,y,A[t+15],14,-660478335);y=h(y,w,v,z,A[t+4],20,-405537848);z=h(z,y,w,v,A[t+9],5,568446438);v=h(v,z,y,w,A[t+14],9,-1019803690);w=h(w,v,z,y,A[t+3],14,-187363961);y=h(y,w,v,z,A[t+8],20,1163531501);z=h(z,y,w,v,A[t+13],5,-1444681467);v=h(v,z,y,w,A[t+2],9,-51403784);w=h(w,v,z,y,A[t+7],14,1735328473);y=h(y,w,v,z,A[t+12],20,-1926607734);z=c(z,y,w,v,A[t+5],4,-378558);v=c(v,z,y,w,A[t+8],11,-2022574463);w=c(w,v,z,y,A[t+11],16,1839030562);y=c(y,w,v,z,A[t+14],23,-35309556);z=c(z,y,w,v,A[t+1],4,-1530992060);v=c(v,z,y,w,A[t+4],11,1272893353);w=c(w,v,z,y,A[t+7],16,-155497632);y=c(y,w,v,z,A[t+10],23,-1094730640);z=c(z,y,w,v,A[t+13],4,681279174);v=c(v,z,y,w,A[t+0],11,-358537222);w=c(w,v,z,y,A[t+3],16,-722521979);y=c(y,w,v,z,A[t+6],23,76029189);z=c(z,y,w,v,A[t+9],4,-640364487);v=c(v,z,y,w,A[t+12],11,-421815835);w=c(w,v,z,y,A[t+15],16,530742520);y=c(y,w,v,z,A[t+2],23,-995338651);z=m(z,y,w,v,A[t+0],6,-198630844);v=m(v,z,y,w,A[t+7],10,1126891415);w=m(w,v,z,y,A[t+14],15,-1416354905);y=m(y,w,v,z,A[t+5],21,-57434055);z=m(z,y,w,v,A[t+12],6,1700485571);v=m(v,z,y,w,A[t+3],10,-1894986606);w=m(w,v,z,y,A[t+10],15,-1051523);y=m(y,w,v,z,A[t+1],21,-2054922799);z=m(z,y,w,v,A[t+8],6,1873313359);v=m(v,z,y,w,A[t+15],10,-30611744);w=m(w,v,z,y,A[t+6],15,-1560198380);y=m(y,w,v,z,A[t+13],21,1309151649);z=m(z,y,w,v,A[t+4],6,-145523070);v=m(v,z,y,w,A[t+11],10,-1120210379);w=m(w,v,z,y,A[t+2],15,718787259);y=m(y,w,v,z,A[t+9],21,-343485551);z=j(z,r);y=j(y,q);w=j(w,p);v=j(v,o)}return[z,y,w,v]},f=function(r){var q="",s=-1,p=r.length,o,t;while(++s<p){o=r.charCodeAt(s);t=s+1<p?r.charCodeAt(s+1):0;if(55296<=o&&o<=56319&&56320<=t&&t<=57343){o=65536+((o&1023)<<10)+(t&1023);s++}if(o<=127){q+=String.fromCharCode(o)}else{if(o<=2047){q+=String.fromCharCode(192|((o>>>6)&31),128|(o&63))}else{if(o<=65535){q+=String.fromCharCode(224|((o>>>12)&15),128|((o>>>6)&63),128|(o&63))}else{if(o<=2097151){q+=String.fromCharCode(240|((o>>>18)&7),128|((o>>>12)&63),128|((o>>>6)&63),128|(o&63))}}}}}return q},e=function(p){var o=Array(p.length>>2),r,q;for(r=0,q=o.length;r<q;r++){o[r]=0}for(r=0,q=p.length*8;r<q;r+=8){o[r>>5]|=(p.charCodeAt(r/8)&255)<<(r%32)}return o},l=function(p){var o="";for(var r=0,q=p.length*32;r<q;r+=8){o+=String.fromCharCode((p[r>>5]>>>(r%32))&255)}return o},d=function(o){return l(b(e(o),o.length*8))},i=function(q){var t="0123456789abcdef",p="",o;for(var s=0,r=q.length;s<r;s++){o=q.charCodeAt(s);p+=t.charAt((o>>>4)&15)+t.charAt(o&15)}return p};return i(d(f(n)))}}

/*
 * VKontakte Open API JavaScript library
 * http://vk.com/
 */

VK.extend = function(target, source, overwrite) {
  for (var key in source) {
    if (overwrite || typeof target[key] === 'undefined') {
      target[key] = source[key];
    }
  }
  return target;
};

if (VK._protocol !== 'https:') {
  VK._protocol = ((location.protocol === 'https:') ? 'https:' : 'http:');
}

if (!VK.xdConnectionCallbacks) {

  VK.extend(VK, {
    version: 1,
    _apiId: null,
    _session: null,
    _userStatus: 'unknown',
    _domain: {
      main: 'https://oauth.vk.com/',
      api: 'https://api.vk.com/'
    },
    _path: {
      login: 'authorize',
      proxy: 'fxdm_oauth_proxy.html'
    },
    _rootId: 'vk_api_transport',
    _nameTransportPath: '',
    xdReady: false,
    access: {
      FRIENDS:   0x2,
      PHOTOS:    0x4,
      AUDIO:     0x8,
      VIDEO:     0x10,
      MATCHES:   0x20,
      QUESTIONS: 0x40,
      WIKI:      0x80
    }
  });

  VK.init = function(options) {
    var body, root;

    VK._apiId = null;
    if (!options.apiId) {
      throw Error('VK.init() called without an apiId');
    }
    VK._apiId = options.apiId;

    if (options.onlyWidgets) return true;

    if (options.nameTransportPath && options.nameTransportPath !== '') {
      VK._nameTransportPath = options.nameTransportPath;
    }

    root = document.getElementById(VK._rootId);
    if (!root) {
      root = document.createElement('div');
      root.id = VK._rootId;
      body = document.getElementsByTagName('body')[0];
      body.insertBefore(root, body.childNodes[0]);
    }
    root.style.position = 'absolute';
    root.style.top = '-10000px';

    var session = VK.Cookie.load();
    if (session) {
      VK.Auth._loadState = 'loaded';
      VK.Auth.setSession(session, session ? 'connected' : 'unknown');
    }
  };

  if (!VK.Cookie) {
    VK.Cookie = {
      _domain: null,
      load: function() {
        var
            cookie = document.cookie.match('\\bvk_app_' + VK._apiId + '=([^;]*)\\b'),
            session;

        if (cookie) {
          session = this.decode(cookie[1]);
          if (session.secret != 'oauth') {
            return false;
          }
          session.expire = parseInt(session.expire, 10);
          VK.Cookie._domain = '.' + window.location.hostname;//session.base_domain;
        }

        return session;
      },
      setRaw: function(val, ts, domain, time) {
        var rawCookie;
        rawCookie = 'vk_app_' + VK._apiId + '=' + val + '';
        var exp = time ? (new Date().getTime() + time * 1000) : ts * 1000;
        rawCookie += (val && ts === 0 ? '' : '; expires=' + new Date(exp).toGMTString());
        rawCookie += '; path=/';
        rawCookie += (domain ? '; domain=.' + domain : '');
        document.cookie = rawCookie;

        this._domain = domain;
      },
      set: function(session, resp) {
        if (session) {
          this.setRaw(this.encode(session), session.expire, window.location.hostname, (resp || {}).time);
        } else {
          this.clear();
        }
      },
      clear: function() {
        this.setRaw('', 0, this._domain, 0);
      },
      encode: function(params) {
        var
            pairs = [],
            key;

        for (key in params) {
          if (key != 'user') pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key]));
        }
        pairs.sort();

        return pairs.join('&');
      },
      decode: function(str) {
        var
            params = {},
            parts = str.split('&'),
            i,
            pair;

        for (i=0; i < parts.length; i++) {
          pair = parts.split('=', 2);
          if (pair && pair[0]) {
            params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
          }
        }

        return params;
      }
    };
  }

  if (!VK.Api) {
    VK.Api = {
      _headId: null,
      _callbacks: {},

      ie6_7: function() {
        if (!VK.Api.ieTested) {
          VK.Api.isIE6_7 = navigator.userAgent.match(/MSIE [6|7]/i);
          VK.Api.ieTested = true;
        }
        return VK.Api.isIE6_7;
      },

      supportCORS: function() {
        var xhr = new XMLHttpRequest();
        if ("withCredentials" in xhr) {
          return true;
        }

        if (typeof XDomainRequest != "undefined") {
          return true;
        }

        return false;
      },

      makeRequest: function(url, cb) {
        var xhr = VK.Api.createRequest('GET', url);
        if (!xhr) {
          return false;
        }

        xhr.onload = function() {
          var text = xhr.responseText;
          if (xhr.status === 200) {
            cb(text);
          } else {
            try {
              console.error('Open api access error', xhr.response);
            } catch(e) {
              //nop
            }
          }
        };

        xhr.onerror = function() {
          try {
            console.error('Open api access error');
          } catch(e) {
            //nop
          }
        };

        xhr.send();
        return true;
      },

      createRequest: function(method, url) {
        var xhr = new XMLHttpRequest();

        if ("withCredentials" in xhr) {
          // XHR for Chrome/Firefox/Opera/Safari.
          xhr.open(method, url, true);
          xhr.withCredentials = true;
        } else if (typeof XDomainRequest != "undefined") {
          // XDomainRequest for IE.
          xhr = new XDomainRequest();
          xhr.open(method, url);
          xhr.withCredentials = true;
        } else {
          // CORS not supported.
          xhr = null;
        }

        return xhr;
      },

      attachScript: function(url) {
        if (!VK.Api._headId) VK.Api._headId = document.getElementsByTagName("head")[0];
        var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.setAttribute('encoding', 'UTF-8');
        newScript.src = url;
        VK.Api._headId.appendChild(newScript);
      },

      checkMethod: function(method, params, cb, queryTry) {
        var m = method.toLowerCase();
        if (m == 'wall.post' || m == 'activity.set') {
          var text = (m == 'activity.set') ? params.text : params.message;
          if (!text) {
            text = '';
          }
          var query =  VK._protocol + '//vk.com/al_apps.php?act=wall_post_box&widget=1&method='+m+'&aid=' + parseInt(VK._apiId, 10) + '&text=' + encodeURIComponent(text);
          if (m == 'wall.post') {
            query += '&owner_id=' + parseInt(params.owner_id || 0, 10) + '&attachments=' + (params.attachments || params.attachment || '') + '&publish_date=' + (params.publish_date || '');
          }
          var method_access = '_'+(Math.random()).toString(16).substr(2);
          query += '&method_access='+method_access;
          var popup = VK.UI.popup({
            url: query,
            width: 460,
            height: 249
          });
          var timer = setInterval(function() {
            if (VK.UI.active.closed) {
              clearInterval(timer);
              params.method_access = method_access;
              VK.Api.call(method, params, cb, queryTry);
            }
          }, 500);
          return false;
        }
        return true;
      },

      call: function(method, params, cb, queryTry) {
        var
            query = params || {},
            qs,
            responseCb;

        if (typeof query != 'object' || typeof cb != 'function') {
          return false;
        }
        if (!params.method_access && !params.method_force && !VK.Api.checkMethod(method, params, cb, queryTry)) {
          return;
        }

        if (!queryTry) queryTry = 0;

        if (VK.Auth._loadState != 'loaded') {
          var authFunc = function(result) {
            if (result && result.session) {
              VK.Observer.unsubscribe('auth.loginStatus', authFunc);
              VK.Api.call(method, params, cb);
            }
          };
          VK.Observer.subscribe('auth.loginStatus', authFunc);
          VK.Auth.getLoginStatus();
          return;
        }

        if (VK.Api.queryLength(query) < 1500 && !VK.Api.ie6_7()) {
          var useXDM = false;
          var rnd = parseInt(Math.random() * 10000000, 10);
          while (VK.Api._callbacks[rnd]) {
            rnd = parseInt(Math.random() * 10000000, 10)
          }
          query.callback = 'VK.Api._callbacks['+rnd+']';
        } else {
          var useXDM = true;
        }

        if (VK._session && VK._session.sid) {
          query.access_token = VK._session.sid;
        }

        qs = VK.Cookie.encode(query);

        responseCb = function(response) {
          if (response.error && (response.error.error_code == 3 || response.error.error_code == 4 || response.error.error_code == 5)) {
            if (queryTry > 3) return false;
            var repeatCall = function(resp) {
              VK.Observer.unsubscribe('auth.sessionChange', repeatCall);
              delete params.access_token;
              if (resp.session) VK.Api.call(method, params, cb, queryTry + 1);
            }
            VK.Observer.subscribe('auth.sessionChange', repeatCall);
            VK.Auth.getLoginStatus();
          } else {
            cb(response);
          }
          if (!useXDM) delete VK.Api._callbacks[rnd];
        };

        if (useXDM) {
          if (VK.xdReady) {
            VK.XDM.remote.callMethod('apiCall', method, qs, responseCb);
          } else {
            VK.Observer.subscribe('xdm.init', function() {
              VK.XDM.remote.callMethod('apiCall', method, qs, responseCb);
            });
            VK.XDM.init();
          }
        } else {
          VK.Api._callbacks[rnd] = responseCb;
          VK.Api.attachScript(VK._domain.api + 'method/' + method +'?' + qs);
        }
      },

      queryLength: function(query) {
        var len = 100, i; // sid + sig
        for (i in query) {
          len += i.length + encodeURIComponent(query).length + 1;
        }
        return len;
      }
    };

// Alias
    VK.api = function(method, params, cb) {VK.Api.call(method, params, cb);}
  };

  if (!VK.Auth) {
    VK.Auth = {
      popup: null,
      lsCb: {},

      setSession: function(session, status, settings, resp) {
        var
            login = !VK._session && session,
            logout = VK._session && !session,
            both = VK._session && session && VK._session.mid != session.mid,
            sessionChange = login || logout || (VK._session && session && VK._session.sid != session.sid),
            statusChange = status != VK._userStatus,
            response = {
              'session': session,
              'status': status,
              'settings': settings
            };

        VK._session = session;

        VK._userStatus = status;

        VK.Cookie.set(session, resp);

        if (sessionChange || statusChange || both) {
          setTimeout(function() {
            if (statusChange) {
              VK.Observer.publish('auth.statusChange', response);
            }

            if (logout || both) {
              VK.Observer.publish('auth.logout', response);
            }

            if (login || both) {
              VK.Observer.publish('auth.login', response);
            }

            if (sessionChange) {
              VK.Observer.publish('auth.sessionChange', response);
            }
          }, 0);
        }

        return response;
      },

      // Public VK.Auth methods
      login: function(cb, settings) {
        if (!VK._apiId) {
          return false;
        }

        var url = VK._domain.main + VK._path.login + '?client_id='+VK._apiId+'&display=popup&redirect_uri=close.html&response_type=token';
        if (settings && parseInt(settings, 10) > 0) {
          url += '&scope=' + settings;
        }

        VK.Observer.unsubscribe('auth.onLogin');
        VK.Observer.subscribe('auth.onLogin', cb);

        VK.UI.popup({
          width: 665,
          height: 370,
          url: url
        });

        var authCallback = function() {
          VK.Auth.getLoginStatus(function(resp) {
            VK.Observer.publish('auth.onLogin', resp);
            VK.Observer.unsubscribe('auth.onLogin');
          }, true);
        }

        VK.UI.popupOpened = true;
        var popupCheck = function() {
          if (!VK.UI.popupOpened) {
            return false;
          }

          try {
            if (!VK.UI.active.top || VK.UI.active.closed) {
              VK.UI.popupOpened = false;
              authCallback();
              return true;
            }
          } catch(e) {
            VK.UI.popupOpened = false;
            authCallback();
            return true;
          }
          setTimeout(popupCheck, 100);
        };

        setTimeout(popupCheck, 100);
      },

      // Logout user from app, vk.com & login.vk.com
      logout: function(cb) {
        VK.Auth.revokeGrants(cb);
      },

      revokeGrants: function(cb) {
        var onLogout = function(resp) {
          VK.Observer.unsubscribe('auth.statusChange', onLogout);
          if (cb) {
            cb(resp);
          }
        }

        VK.Observer.subscribe('auth.statusChange', onLogout);
        if (VK._session && VK._session.sid) {
          var url = 'https://login.vk.com/?act=openapi&oauth=1&aid=' + parseInt(VK._apiId, 10) + '&location=' + encodeURIComponent(window.location.hostname) + '&do_logout=1&token=' + VK._session.sid;
          if (VK.Api.supportCORS()) {
            var logoutCallback = function() {
              VK.Auth.setSession(null, 'unknown');
            };

            VK.Api.makeRequest(url + '&new=1', logoutCallback);
          } else {
            VK.Api.attachScript(url);
          }
        }

        VK.Cookie.clear();
      },

      // Get current login status from session (sync) (not use on load time)
      getSession: function() {
        return VK._session;
      },

      // Get current login status from vk.com (async)
      getLoginStatus: function(cb, force) {
        if (!VK._apiId) {
          return;
        }

        if (cb) {
          if (!force && VK.Auth._loadState == 'loaded') {
            cb({status: VK._userStatus, session: VK._session});
            return;
          } else {
            VK.Observer.subscribe('auth.loginStatus', cb);
          }
        }

        if (!force && VK.Auth._loadState == 'loading') {
          return;
        }

        VK.Auth._loadState = 'loading';

        var url = 'https://login.vk.com/?act=openapi&oauth=1&aid=' + parseInt(VK._apiId, 10) + '&location=' + encodeURIComponent(window.location.hostname);
        if (VK.Api.supportCORS()) {
          var loginCallback = function(response) {
            if (!this.JSON) {
              this.JSON = {};
            }

            if (typeof JSON.parse !== 'function') {
              //IE6 and IE7
              response = eval(response);
            } else {
              response = JSON.parse(response);
            }

            VK.Auth._loadState = 'loaded';
            if (response && response.auth) {
              var session = {
                mid: response.user.id,
                sid: response.access_token,
                sig: response.sig,
                secret: response.secret,
                expire: response.expire
              };

              if (force) {
                session.user = response.user;
              }

              var status = 'connected';
            } else {
              var session = null;
              var status = response.user ? 'not_authorized' : 'unknown';
              VK.Cookie.clear();
            }

            VK.Auth.setSession(session, status, false, response);
            VK.Observer.publish('auth.loginStatus', {session: session, status: status});
            VK.Observer.unsubscribe('auth.loginStatus');
          };

          VK.Api.makeRequest(url + '&new=1', loginCallback);
        } else {
          var rnd = parseInt(Math.random() * 10000000, 10);
          while (VK.Auth.lsCb[rnd]) {
            rnd = parseInt(Math.random() * 10000000, 10);
          }

          VK.Auth.lsCb[rnd] = function(response) {
            delete VK.Auth.lsCb[rnd];
            VK.Auth._loadState = 'loaded';
            if (response && response.auth) {
              var session = {
                mid: response.user.id,
                sid: response.access_token,
                sig: response.sig,
                secret: response.secret,
                expire: response.expire
              };
              if (force) session.user = response.user;
              var status = 'connected';
            } else {
              var session = null;
              var status = response.user ? 'not_authorized' : 'unknown';
              VK.Cookie.clear();
            }
            VK.Auth.setSession(session, status, false, response);
            VK.Observer.publish('auth.loginStatus', {session: session, status: status});
            VK.Observer.unsubscribe('auth.loginStatus');
          };

            // AttachScript here
          VK.Api.attachScript(url+'&rnd='+rnd);
        }
      }
    };
  }

} else { // if VK.xdConnectionCallbacks
  setTimeout(function() {
    var callback;
    while (callback = VK.xdConnectionCallbacks.pop()) {
      callback();
    }
  }, 0);
  if (VK.Widgets && !VK.Widgets._constructor) {
    VK.Widgets = false;
  }
}

if (!VK.UI) {
  VK.UI = {
    active: null,
    _buttons: [],
    popup: function(options) {
      var
          screenX = typeof window.screenX != 'undefined' ? window.screenX : window.screenLeft,
          screenY = typeof window.screenY != 'undefined' ? window.screenY : window.screenTop,
          outerWidth = typeof window.outerWidth != 'undefined' ? window.outerWidth : document.body.clientWidth,
          outerHeight = typeof window.outerHeight != 'undefined' ? window.outerHeight : (document.body.clientHeight - 22),
          width = options.width,
          height = options.height,
          left = parseInt(screenX + ((outerWidth - width) / 2), 10),
          top = parseInt(screenY + ((outerHeight - height) / 2.5), 10),
          features = (
              'width=' + width +
              ',height=' + height +
              ',left=' + left +
              ',top=' + top
          );
      this.active = window.open(options.url, 'vk_openapi', features);
    },
    button: function(el, handler) {
      var html = '';

      if (typeof el == 'string') {
        el = document.getElementById(el);
      }


      this._buttons.push(el);
      index = this._buttons.length - 1;

      html = (
          '<table cellspacing="0" cellpadding="0" id="openapi_UI_' + index + '" onmouseover="VK.UI._change(1, ' + index + ');" onmouseout="VK.UI._change(0, ' + index + ');" onmousedown="VK.UI._change(2, ' + index + ');" onmouseup="VK.UI._change(1, ' + index + ');" style="cursor: pointer; border: 0px; font-family: tahoma, arial, verdana, sans-serif, Lucida Sans; font-size: 10px;"><tr style="vertical-align: middle">' +
          '<td><div style="border: 1px solid #3b6798;border-radius: 2px 0px 0px 2px;-moz-border-radius: 2px 0px 0px 2px;-webkit-border-radius: 2px 0px 0px 2px;"><div style="border: 1px solid #5c82ab; border-top-color: #7e9cbc; background-color: #6D8DB1; color: #fff; text-shadow: 0px 1px #45688E; height: 15px; padding: 2px 4px 0px 6px;line-height: 13px;">&#1042;&#1086;&#1081;&#1090;&#1080;</div></div></td>' +
          '<td><div style="background: url(' + VK._protocol + '//vk.com/images/btns.png) 0px -42px no-repeat; width: 21px; height: 21px"></div></td>' +
          '<td><div style="border: 1px solid #3b6798;border-radius: 0px 2px 2px 0px;-moz-border-radius: 0px 2px 2px 0px;-webkit-border-radius: 0px 2px 2px 0px;"><div style="border: 1px solid #5c82ab; border-top-color: #7e9cbc; background-color: #6D8DB1; color: #fff; text-shadow: 0px 1px #45688E; height: 15px; padding: 2px 6px 0px 4px;line-height: 13px;">&#1050;&#1086;&#1085;&#1090;&#1072;&#1082;&#1090;&#1077;</div></div></td>' +
          '</tr></table>'
      );
      el.innerHTML = html;
      el.style.width = el.childNodes[0].offsetWidth + 'px';
    },
    _change: function(state, index) {
      var row = document.getElementById('openapi_UI_' + index).rows[0];
      var elems = [row.cells[0].firstChild.firstChild, row.cells[2].firstChild.firstChild];
      for (var i = 0; i < 2; ++i) {
        var elem = elems;
        if (state === 0) {
          elem.style.backgroundColor = '#6D8DB1';
          elem.style.borderTopColor = '#7E9CBC';
          elem.style.borderLeftColor = elem.style.borderRightColor = elem.style.borderBottomColor = '#5C82AB';
        } else if (state == 1) {
          elem.style.backgroundColor = '#7693B6';
          elem.style.borderTopColor = '#88A4C4';
          elem.style.borderLeftColor = elem.style.borderRightColor = elem.style.borderBottomColor = '#6088B4';
        } else if (state == 2) {
          elem.style.backgroundColor = '#6688AD';
          elem.style.borderBottomColor = '#7495B8';
          elem.style.borderLeftColor = elem.style.borderRightColor = elem.style.borderTopColor = '#51779F';
        }
      }
      if (state === 0 || state == 2) {
        row.cells[2].firstChild.style.backgroundPosition = '0px -42px';
      } else if (state == 1) {
        row.cells[2].firstChild.style.backgroundPosition = '0px -63px';
      }
    }
  };
}

if (!VK.XDM) {
  VK.XDM = {
    remote: null,
    init: function() {
      if (this.remote) return false;
      var url = VK._domain.api + VK._path.proxy;
      this.remote = new fastXDM.Server({
        onInit: function() {
          VK.xdReady = true;
          VK.Observer.publish('xdm.init');
        }
      });

      this.remote.append(document.getElementById(VK._rootId), {
        src: url
      });
    },
    xdHandler: function(code) {
      try {
        eval('VK.' + code);
      } catch(e) {}
    }
  };
}

if (!VK.Observer) {
  VK.Observer = {
    _subscribers: function() {
      if (!this._subscribersMap) {
        this._subscribersMap = {};
      }
      return this._subscribersMap;
    },
    publish: function(eventName) {
      var
          args = Array.prototype.slice.call(arguments),
          eventName = args.shift(),
          subscribers = this._subscribers()[eventName],
          i, j;

      if (!subscribers) return;

      for (i = 0, j = subscribers.length; i < j; i++) {
        if (subscribers != null) {
          subscribers.apply(this, args);
        }
      }
    },
    subscribe: function(eventName, handler) {
      var
          subscribers = this._subscribers();

      if (typeof handler != 'function') return false;

      if (!subscribers[eventName]) {
        subscribers[eventName] = [handler];
      } else {
        subscribers[eventName].push(handler);
      }
    },
    unsubscribe: function(eventName, handler) {
      var
          subscribers = this._subscribers()[eventName],
          i, j;

      if (!subscribers) return false;
      if (typeof handler == 'function') {
        for (i = 0, j = subscribers.length; i < j; i++) {
          if (subscribers == handler) {
            subscribers = null;
          }
        }
      } else {
        delete this._subscribers()[eventName];
      }
    }
  };
}

if (!VK.Widgets) {
  VK.Widgets = {};

  VK.Widgets.count = 0;
  VK.Widgets.RPC = {};

  VK.Widgets.loading = function(obj, enabled) {
    obj.style.background = enabled ? 'url("' + VK._protocol + '//vk.com/images/upload.gif") center center no-repeat transparent' : 'none';
  };

  VK.Widgets.Comments = function(objId, options, page) {
    var pData = VK.Util.getPageData();
    if (!VK._apiId) throw Error('VK not initialized. Please use VK.init');
    options = options || {};
    var params = {
      limit: options.limit || 10,
      height: options.height || 0,
      mini: options.mini === undefined ? 'auto' : options.mini,
      norealtime: options.norealtime ? 1 : 0
    }, mouseup = function() {
      rpc.callMethod('mouseUp');
      return false;
    }, move = function(event) {
      rpc.callMethod('mouseMove', {screenY: event.screenY});
    }, iframe, rpc;

    if (options.browse) { // browse all comments
      params.browse = 1;
      params.replies = options.replies || 0;
    } else { // page
      var url = options.pageUrl || pData.url;
      if (url.substr(0, 1) == '/') {
        url = (location.protocol + '//' + location.host) + url;
      }
      VK.extend(params, {
        page: page || 0,
        status_publish: options.autoPublish === undefined ? 1 : options.autoPublish,
        attach: options.attach === undefined ? '*' : (options.attach ? options.attach : ''),
        url: url,
        title: options.pageTitle || pData.title,
        description: options.pageDescription || pData.description,
        image: options.pageImage || pData.image
      });
    }
    if (options.onChange) { // DEPRECATED
      VK.Observer.subscribe('widgets.comments.new_comment', options.onChange);
      VK.Observer.subscribe('widgets.comments.delete_comment', options.onChange);
    }

    return VK.Widgets._constructor('widget_comments.php', objId, options, params, {
      showBox: function(url, props) {
        var box = VK.Util.Box((options.base_domain || VK._protocol + '//vk.com') + '/' + url, [], {
          proxy: function() {
            rpc.callMethod.apply(rpc, arguments);
          }
        });
        box.show();
      },
      startDrag: function() {
        cursorBack = window.document.body.style.cursor;
        window.document.body.style.cursor = 'pointer';
        VK.Util.addEvent('mousemove', move);
        VK.Util.addEvent('mouseup', mouseup);
      },
      stopDrag: function() {
        window.document.body.style.cursor = cursorBack;
        VK.Util.removeEvent('mousemove', move);
        VK.Util.removeEvent('mouseup', mouseup);
      }
    }, {
      startHeight: 133,
      minWidth: 300,
      width: '100%'
    }, function(o, i, r) {iframe = i; rpc = r;});
  };

  VK.Widgets.CommentsBrowse = function(objId, options) {
    options = options || {};
    options.browse = 1;
    return VK.Widgets.Comments(objId, options);
  };

  VK.Widgets.Recommended = function(objId, options) {
    var pData = VK.Util.getPageData();
    if (!VK._apiId) throw Error('VK not initialized. Please use VK.init');
    options = options || {};
    var params = {
      limit: options.limit || 5,
      max: options.max || 0,
      sort: options.sort || 'friend_likes',
      verb: options.verb || 0,
      period: options.period || 'week',
      target: options.target || 'parent'
    };
    return VK.Widgets._constructor('widget_recommended.php', objId, options, params, {}, {
      startHeight: (90 + params.limit * 30),
      minWidth: 150,
      width: '100%'
    });
  };

  VK.Widgets.Post = function(objId, ownerId, postId, hash, options) {
    options = options || {};
    var params = {
      owner_id: ownerId,
      post_id: postId,
      hash: hash || '',
      width: options.width || 500
    }, iframe, rpc, cursorBack;
    if (options.preview) {
      params.preview = 1;
      delete options['preview'];
    }
    return VK.Widgets._constructor('widget_post.php', objId, options, params, {
      showBox: function(url, props) {
        var box = VK.Util.Box((options.base_domain || VK._protocol + '//vk.com') + '/' + url, [], {
          proxy: function() {
            rpc.callMethod.apply(rpc, arguments);
          }
        });
        box.show();
      },
      startDrag: function() {
        cursorBack = window.document.body.style.cursor;
        window.document.body.style.cursor = 'pointer';
      },
      stopDrag: function() {
        window.document.body.style.cursor = cursorBack;
      }
    }, {
      startHeight: 90,
      minWidth: 250,
      width: '100%'
    }, function(o, i, r) {iframe = i; rpc = r;});
  };

  VK.Widgets.Like = function(objId, options, page) {
    var pData = VK.Util.getPageData();
    if (!VK._apiId) throw Error('VK not initialized. Please use VK.init');
    options = VK.extend(options || {}, {allowTransparency: true});
    if (options.type == 'button' || options.type == 'vertical' || options.type == 'mini') delete options.width;
    var
        type = (options.type == 'full' || options.type == 'button' || options.type == 'vertical' || options.type == 'mini') ? options.type : 'full',
        width = type == 'full' ? Math.max(200, options.width || 350) : (type == 'button' ? 180 : (type == 'mini' ? 100 : 41)),
        btnHeight = parseInt(options.height, 10) || 22,
        height = type == 'vertical' ? (2 * btnHeight + 7) : (type == 'full' ? btnHeight + 1 : btnHeight),
        params = {
          page: page || 0,
          url: options.pageUrl || pData.url,
          type: type,
          verb: options.verb == 1 ? 1 : 0,
          color: options.color || '',
          title: options.pageTitle || pData.title,
          description: options.pageDescription || pData.description,
          image: options.pageImage || pData.image,
          text: (options.text || '').substr(0, 140),
          h: btnHeight
        },
        ttHere = options.ttHere || false,
        isOver = false,
        obj, buttonIfr, buttonRpc, tooltipIfr, tooltipRpc, checkTO, statsBox;

    function showTooltip(force) {
      if ((!isOver && !force) || !tooltipRpc) return;
      if (!tooltipIfr || !tooltipRpc || tooltipIfr.style.display != 'none' && tooltipIfr.getAttribute('vkhidden') != 'yes') return;
      var scrollTop = options.getScrollTop ? options.getScrollTop() : (document.body.scrollTop || document.documentElement.scrollTop || 0);
      var objPos = VK.Util.getXY(obj, options.fixed);
      var startY = ttHere ? 0 : objPos[1];
      if (scrollTop > objPos[1] - 120 && options.tooltipPos != 'top' || type == 'vertical' || options.tooltipPos == 'bottom') {
        tooltipIfr.style.top = (startY + height + 2) + 'px';
        tooltipRpc.callMethod('show', false);
      } else {
        tooltipIfr.style.top = (startY - 125) + 'px';
        tooltipRpc.callMethod('show', true);
      }
      VK.Util.ss(tooltipIfr, {left: ((ttHere ? 0 : objPos[0]) - (type == 'vertical' || type == 'mini' ? 36 : 2)) + 'px', display: 'block', opacity: 1, filter: 'none'});
      tooltipIfr.setAttribute('vkhidden', 'no');
      isOver = true;
    }

    function hideTooltip(force) {
      if ((isOver && !force) || !tooltipRpc) return;
      tooltipRpc.callMethod('hide');
      buttonRpc.callMethod('hide');
      setTimeout(function() {
        tooltipIfr.style.display = 'none'
      }, 400);
    }

    function handleStatsBox(act) {
      hideTooltip(true);
      statsBox = VK.Util.Box(buttonIfr.src + '&act=a_stats_box&widget_width=620');
      statsBox.show();
    }

    return VK.Widgets._constructor('widget_like.php', objId, options, params, {
      initTooltip: function(counter) {
        tooltipRpc = new fastXDM.Server({
          onInit: counter ? function() {showTooltip(true)} : function() {},
          proxy: function() {
            buttonRpc.callMethod.apply(buttonRpc, arguments);
          },
          showBox: function(url, props) {
            var box = VK.Util.Box((options.base_domain || VK._protocol + '//vk.com/') + url, [props.width, props.height], {
              proxy: function() {
                tooltipRpc.callMethod.apply(tooltipRpc, arguments);
              }
            });
            box.show();
          },
          statsBox: handleStatsBox
        }, false, {safe: true});
        tooltipIfr = tooltipRpc.append(ttHere ? obj : document.body, {
          src: buttonIfr.src + '&act=a_like_tooltip',
          scrolling: 'no',
          allowTransparency: true,
          id: buttonIfr.id + '_tt',
          style: {position: 'absolute', padding: 0, display: 'block', opacity: 0.01, filter: 'alpha(opacity=1)', border: '0', width: '238px', height: '124px', zIndex: 5000, overflow: 'hidden'}
        });
        tooltipIfr.setAttribute('vkhidden', 'yes');

        obj.onmouseover = tooltipIfr.onmouseover = function() {
          clearTimeout(checkTO);
          isOver = true;
        };
        obj.onmouseout = tooltipIfr.onmouseout = function() {
          clearTimeout(checkTO);
          isOver = false;
          checkTO = setTimeout(function() {hideTooltip(); }, 200);
        };
      },
      statsBox: handleStatsBox,
      showTooltip: showTooltip,
      hideTooltip: hideTooltip,
      showBox: function(url, props) {
        var box = VK.Util.Box((options.base_domain || VK._protocol + '//vk.com/') + url, [], {
          proxy: function() {
            buttonRpc.callMethod.apply(buttonRpc, arguments);
          }
        });
        box.show();
      },
      proxy: function() {if (tooltipRpc) tooltipRpc.callMethod.apply(tooltipRpc, arguments);}
    }, {
      startHeight: height,
      minWidth: width
    }, function(o, i, r) {
      buttonRpc = r;
      VK.Util.ss(obj = o, {height: height + 'px', width: width + 'px', position: 'relative', clear: 'both'});
      VK.Util.ss(buttonIfr = i, {height: height + 'px', width: width + 'px', overflow: 'hidden', zIndex: 150});
    });
  };

  VK.Widgets.Poll = function(objId, options, pollId) {
    var pData = VK.Util.getPageData();
    // if (!VK._apiId) throw Error('VK not initialized. Please use VK.init');
    if (!pollId) throw Error('No poll id passed');
    options = options || {};
    var params = {
      poll_id: pollId,
      url: options.pageUrl || pData.url || location.href,
      title: options.pageTitle || pData.title,
      description: options.pageDescription || pData.description
    };
    return VK.Widgets._constructor('widget_poll.php', objId, options, params, {}, {
      startHeight: 133,
      minWidth: 300,
      width: '100%'
    });
  };

  VK.Widgets.PagePoll = function(objId, options, page) {
    var pData = VK.Util.getPageData();
    // if (!VK._apiId) throw Error('VK not initialized. Please use VK.init');
    options = options || {};
    var params = {
      page: page || 0,
      norealtime: options.norealtime ? 1 : 0,
      poll_id: options.pollId || '',
      url: options.pageUrl || pData.url || location.href,
      title: options.pageTitle || pData.title,
      description: options.pageDescription || pData.description
    };
    return VK.Widgets._constructor('al_widget_poll.php', objId, options, params, {}, {
      startHeight: 133,
      minWidth: 300,
      width: '100%'
    });
  };

  VK.Widgets.Community = VK.Widgets.Group = function(objId, options, gid) {
    gid = parseInt(gid, 10);
    var RPC;
    if (!gid) {
      throw Error('No group_id passed');
    }
    options.mode = parseInt(options.mode, 10).toString();
    var params = {
      gid: gid,
      mode: (options.mode) ? options.mode : '0'
    };
    if (!options.width) options.width = 200;
    if (options.wall) params.wall = options.wall;
    params.color1 = options.color1 || '';
    params.color2 = options.color2 || '';
    params.color3 = options.color3 || '';
    params.class_name = options.class_name || '';
    if (options.no_head) params.no_head = 1;
    if (!options.height) options.height = 290;
    if (options.wide) {
      params.wide = 1;
      if (options.width < 300) {
        options.width = 300;
      }
    }

    var cursorBack;

    function mouseup() {
      RPC.callMethod('mouseUp');
      return false;
    }

    function move(event) {
      RPC.callMethod('mouseMove', {screenY: event.screenY});
      return false;
    }

    return VK.Widgets._constructor('widget_community.php', objId, options, params, {
      showBox: function(url, props) {
        var box = VK.Util.Box((options.base_domain || VK._protocol + '//vk.com/') + url, [], {
          proxy: function() {
            rpc.callMethod.apply(rpc, arguments);
          }
        });
        box.show();
      },
      startDrag: function() {
        cursorBack = window.document.body.style.cursor;
        window.document.body.style.cursor = 'pointer';
        VK.Util.addEvent('mousemove', move);
        VK.Util.addEvent('mouseup', mouseup);
      },
      stopDrag: function() {
        window.document.body.style.cursor = cursorBack;
        VK.Util.removeEvent('mousemove', move);
        VK.Util.removeEvent('mouseup', mouseup);
      },
      auth: function() {
        VK.Auth.login(null, 1);
      }
    }, {
      minWidth: 120,
      width: '200',
      height: '290',
      startHeight: 200
    }, function(o, i, r) {
      RPC = r;
    });
  };

  VK.Widgets.Auth = function(objId, options) {
    var pData = VK.Util.getPageData();
    if (!VK._apiId) throw Error('VK not initialized. Please use VK.init');
    if (!options.width) {
      options.width = 200;
    }
    if (options.type) {
      type = 1;
    } else {
      type = 0;
    }
    return VK.Widgets._constructor('widget_auth.php', objId, options, {}, {makeAuth: function(data) {
      if (data.session) {
        VK.Auth._loadState = 'loaded';
        VK.Auth.setSession(data.session, 'connected');
        VK.Observer.publish('auth.loginStatus', {session: data.session, status: 'connected'});
        VK.Observer.unsubscribe('auth.loginStatus');
      }
      if (options.onAuth) {
        options.onAuth(data);
      } else {
        if (options.authUrl) {
          var href = options.authUrl;
        } else {
          var href = window.location.href;
        }
        if (href.indexOf('?') == -1) {
          href+='?';
        } else {
          href+='&';
        }
        var vars = [];

        for (var i in data) {
          if (i != 'session') vars.push(i+'='+decodeURIComponent(data).replace(/&/g, '%26').replace(/\?/, '%3F'));
        }
        window.location.href = href + vars.join('&');
      }
    }}, {startHeight: 80});
  };

  VK.Widgets.Subscribe = function(objId, options, oid) {
    oid = parseInt(oid, 10);
    var RPC;
    if (!oid) {
      throw Error('No owner_id passed');
    }
    var params = {
      oid: oid
    };
    if (options.mode) {
      params.mode = options.mode;
    }
    if (options.soft) {
      params.soft = options.soft;
    }

    return VK.Widgets._constructor('widget_subscribe.php', objId, options, params, {
      showBox: function(url, props) {
        var box = VK.Util.Box((options.base_domain || VK._protocol + '//vk.com/') + url, [], {
          proxy: function() {
            rpc.callMethod.apply(rpc, arguments);
          }
        });
        box.show();
      },
      auth: function() {
        VK.Auth.login(null, 1);
      }
    }, {
      minWidth: 220,
      startHeight: 22,
      height: options.height || 22
    }, function(o, i, r) {
      RPC = r;
    });
  };

  VK.Widgets.Ads = function(objId, options, paramsExtra) {
    options = options || {};
    paramsExtra = paramsExtra || {};
    var params = {};
    var defaults = {};
    var funcs = {};
    var obj = document.getElementById(objId);
    var iframe;
    var rpc;

    var adsParams = {};
    var adsParamsLocal = {};
    var adsParamsDefault = {};
    for (var key in paramsExtra) {
      var keyFix = (inArray(key, ['hash']) ? key : 'ads_' + key);
      adsParams[keyFix] = paramsExtra[key];
    }

    if (obj && obj.getBoundingClientRect) {
      obj.style.width  = '100%';
      obj.style.height = '100%';
      var rect = obj.getBoundingClientRect();
      obj.style.width  = '';
      obj.style.height = '';
      adsParams.ads_ad_unit_width_auto  = Math.floor(rect.right - rect.left);
      adsParams.ads_ad_unit_height_auto = Math.floor(rect.bottom - rect.top);
    }

    adsParamsDefault.ads_ad_unit_width  = 100;
    adsParamsDefault.ads_ad_unit_height = 100;

    adsParamsLocal.ads_ad_unit_width  = (parseInt(adsParams.ads_ad_unit_width)  || adsParams.ads_ad_unit_width === 'auto'  && adsParams.ads_ad_unit_width_auto  || adsParamsDefault.ads_ad_unit_width);
    adsParamsLocal.ads_ad_unit_height = (parseInt(adsParams.ads_ad_unit_height) || adsParams.ads_ad_unit_height === 'auto' && adsParams.ads_ad_unit_height_auto || adsParamsDefault.ads_ad_unit_height);
    if (adsParams.ads_handler) {
      adsParamsLocal.ads_handler = adsParams.ads_handler;
    }
    if (adsParams.ads_handler_empty_html) {
      adsParamsLocal.ads_handler_empty_html = adsParams.ads_handler_empty_html;
    }

    delete adsParams.ads_handler;
    delete adsParams.ads_handler_empty_html;

    params.act = 'ads_web';
    params.url = location.href;
    VK.extend(params, adsParams);

    options.noDefaultParams   = true;
    options.width             = adsParamsLocal.ads_ad_unit_width;
    options.allowTransparency = true;
    defaults.startHeight = adsParamsLocal.ads_ad_unit_height;
    defaults.minWidth    = adsParamsLocal.ads_ad_unit_width;
    funcs.adsOnInitLoader = adsOnInitLoader;
    funcs.adsOnInit       = adsOnInit;

    return VK.Widgets._constructor('ads_rotate.php', objId, options, params, funcs, defaults, onDone);

    function adsOnInitLoader(adsScriptVersion) {
      VK.Widgets.loading(obj, true);
      adsAttachScript(adsScriptVersion);
    }
    function adsOnInit(errorCode, adsParamsExport) {
      VK.Widgets.loading(obj, false);
      adsProcessParams(adsParamsExport);
      if (options.onAdsReady) options.onAdsReady.apply(options.onAdsReady, Array.prototype.slice.call(arguments));
      adsProcessHandler(errorCode);
    }
    function adsAttachScript(adsScriptVersion) {
      if (!('vk__adsLight' in window)) {
        window.vk__adsLight = false;
        adsScriptVersion = parseInt(adsScriptVersion);
        var attachScriptFunc = (VK.Api && VK.Api.attachScript || VK.addScript);
        var base_domain = (options.base_domain || VK._protocol + '//vk.com');
        attachScriptFunc(base_domain + '/js/al/aes_light.js?' + adsScriptVersion);
      } else if (window.vk__adsLight && vk__adsLight.userHandlers && vk__adsLight.userHandlers.onInit) {
        vk__adsLight.userHandlers.onInit(false); // false - do not publish initial onInit
      }
    }
    function adsProcessParams(adsParamsExport) {
      if (!adsParamsExport) {
        return;
      }
      for (var paramName in adsParamsExport) {
        var paramValue = adsParamsExport[paramName];
        if (paramName === 'ads_ad_unit_width' || paramName === 'ads_ad_unit_height') {
          if (!(paramName in adsParams)) {
            adsParamsLocal[paramName] = (parseInt(paramValue) || paramValue === 'auto' && adsParams[paramName + '_auto'] || adsParamsDefault[paramName]);
          }
        } else {
          if (!(paramName in adsParamsLocal)) {
            adsParamsLocal[paramName] = paramValue;
          }
        }
      }
    }
    function adsProcessHandler(errorCode) {
      var handlerResult = adsEvalHandler(adsParamsLocal.ads_handler, errorCode);
      if (errorCode <= 0 && handlerResult !== true) {
        try { console.log('VK: ad_unit_id = ' + adsParams.ads_ad_unit_id, ', errorCode = ', errorCode); } catch (e) {}
        adsInsertHtmlHandler(adsParamsLocal.ads_handler_empty_html, adsParamsLocal.ads_ad_unit_width, adsParamsLocal.ads_ad_unit_height);
      }
    }
    function adsEvalHandler(handler) {
      var result = false;
      try {
        if (!handler) {
          return false;
        }
        var func = false;
        if (isFunction(handler)) {
          func = handler;
        } else if (isString(handler)) {
          var handlerFuncs = handler.split('.');
          func = window;
          for (var i = 0, len = handlerFuncs.length; i < len; i++) {
            func = func[handlerFuncs];
            if (!func) {
              break;
            }
          }
          if (!func) {
            if (handler.substr(0, 8) === 'function') {
              handler = 'return ' + handler + ';';
            }
            var handlerResult = (new Function(handler))();
            if (isFunction(handlerResult)) {
              func = handlerResult;
            } else {
              result = handlerResult;
            }
          }
        }
        if (func) {
          var args = Array.prototype.slice.call(arguments, 1);
          result = func.apply(func, args);
        }
      } catch (e) {
        try {
          console.error(e);
        } catch (e2) {}
      }

      return result;

      function isFunction(obj) {
        return Object.prototype.toString.call(obj) === '[object Function]';
      }
      function isString(obj) {
        return Object.prototype.toString.call(obj) === '[object String]';
      }
    }
    function adsInsertHtmlHandler(handlerHtml, width, height) {
      if (!handlerHtml) {
        return;
      }
      if (!obj) {
        return;
      }

      width  = (width  ? width  + 'px' : '');
      height = (height ? height + 'px' : '');

      var iframeHandlerHtml = '<html><head></head><body style="padding: 0; margin: 0;"><div>' + handlerHtml + '</div></body></html>';

      var iframeHandler = document.createElement('iframe');
      iframeHandler.onload            = fixIframeHeight;
      iframeHandler.id                = (iframe ? iframe.id : ('vkwidget-' + Math.round(Math.random() * 1000000))) + '_ads_html_handler';
      iframeHandler.src               = 'about:blank';
      iframeHandler.width             = '100%';
      iframeHandler.height            = '100%';
      iframeHandler.scrolling         = 'no';
      iframeHandler.frameBorder       = '0';
      iframeHandler.allowTransparency = true;
      iframeHandler.style.overflow    = 'hidden';
      iframeHandler.style.width       = width;
      iframeHandler.style.height      = height;

      obj.style.width                 = width;
      obj.style.height                = height;

      obj.appendChild(iframeHandler);

      iframeHandler.contentWindow.vk_ads_html_handler = iframeHandlerHtml;
      iframeHandler.src = 'javascript:window["vk_ads_html_handler"]';

      function fixIframeHeight() {
        if (height) {
          return;
        }
        try {
          var rect = iframeHandler.contentWindow.document.body.firstChild.getBoundingClientRect();
          var heightFix = Math.ceil(rect.bottom - rect.top);
          if (heightFix) {
            iframeHandler.style.height = heightFix;
            obj.style.height           = heightFix;
          }
        } catch (e) {}
      }
    }
    function indexOf(arr, value, from) {
      for (var i = from || 0, l = (arr || []).length; i < l; i++) {
        if (arr == value) return i;
      }
      return -1;
    }
    function inArray(value, arr) {
      return indexOf(arr, value) != -1;
    }
    function onDone(o, i, r) {
      obj = o;
      iframe = i;
      rpc = r;
    }
  };

  VK.Widgets._constructor = function(widgetUrl, objId, options, params, funcs, defaults, onDone, widgetId, iter) {
    var obj = document.getElementById(objId);
    widgetId = widgetId || (++VK.Widgets.count);

    if (!obj) {
      iter = iter || 0;
      if (iter > 10) {
        throw Error('VK.Widgets: object #' + objId + ' not found.');
      }
      setTimeout(function() {
        VK.Widgets._constructor(widgetUrl, objId, options, params, funcs, defaults, onDone, widgetId, iter + 1);
      }, 500);
      return widgetId;
    }

    var ifr, base_domain, width, url, urlQueryString, encodedParam, rpc, iframe, i;
    options = options || {};
    defaults = defaults || {};
    funcs = funcs || {};

    base_domain = options.base_domain || VK._protocol + '//vk.com';
    width = (options.width == 'auto') ? obj.clientWidth || '100%' : parseInt(options.width, 10);

    if (options.height) {
      params.height = options.height;
      obj.style.height = options.height + 'px';
    } else {
      obj.style.height = (defaults.startHeight || 200) + 'px';
    }

    width = width ? (Math.max(defaults.minWidth || 200, Math.min(10000, width)) + 'px') : '100%';

    if (!params.url) {
      params.url = options.pageUrl || location.href.replace(/#.*$/, '');
    }
    url = base_domain + '/' + widgetUrl;
    urlQueryString = '';
    if (!options.noDefaultParams) {
      urlQueryString += '&app=' + (VK._apiId || '0') + '&width=' + width
    }
    urlQueryString += '&_ver=' + VK.version
    if (VK._iframeAppWidget) {
      params.iframe_app = 1;
    }
    var pData = VK.Util.getPageData();
    params.url      = params.url     || pData.url || "";
    params.referrer = params.referrer || document.referrer || "";
    params.title    = params.title   || pData.title  || document.title || "";
    for (i in params) {
      if (i == 'title' && params.length > 80) params = params.substr(0, 80)+'...';
      if (i == 'description' && params.length > 160) params = params.substr(0, 160)+'...';
      if (typeof(params) == 'number') {
        encodedParam = params;
      } else {
        try {
          encodedParam = encodeURIComponent(params);
        } catch (e) {
          encodedParam = '';
        }
      }
      urlQueryString += '&' + i + '=' + encodedParam;
    }
    urlQueryString += '&' + (+new Date()).toString(16);
    url += '?' + urlQueryString.substr(1);

    obj.style.width = width;
    VK.Widgets.loading(obj, true);

    funcs.publish = function() {
      var args = Array.prototype.slice.call(arguments);
      args.push(widgetId);
      VK.Observer.publish.apply(VK.Observer, args);
    };
    funcs.onInit = function() {
      VK.Widgets.loading(obj, false);
      if (funcs.onReady) funcs.onReady();
      if (options.onReady) options.onReady();
    }
    funcs.resize = function(e, cb) {
      obj.style.height = e + 'px';
      var el = document.getElementById('vkwidget' + widgetId);
      if (el) {
        el.style.height = e + 'px';
      }
    }
    funcs.resizeWidget = function(newWidth, newHeight) {
      newWidth  = parseInt(newWidth);
      newHeight = parseInt(newHeight);
      var widgetElem = document.getElementById('vkwidget' + widgetId);
      if (isFinite(newWidth)) {
        obj.style.width = newWidth + 'px';
        if (widgetElem) {
          widgetElem.style.width = newWidth + 'px';
        }
      }
      if (isFinite(newHeight)) {
        obj.style.height = newHeight + 'px';
        if (widgetElem) {
          widgetElem.style.height = newHeight + 'px';
        }
      }
      if (options.onResizeWidget) options.onResizeWidget();
    }
    funcs.updateVersion = function(ver) {
      if (ver > 1) {
        VK.Api.attachScript('//vk.com/js/api/openapi_update.js?'+parseInt(ver));
      }
    }
    rpc = VK.Widgets.RPC[widgetId] = new fastXDM.Server(funcs, function(origin) {
      if (!origin) return true;
      origin = origin.toLowerCase();
      return (origin.match(/(\.|\/)vk\.com($|\/|\?)/));
    }, {safe: true});
    iframe = VK.Widgets.RPC[widgetId].append(obj, {
      src: url,
      width: (width.indexOf('%') != -1) ? width : (parseInt(width) || width),
      height: defaults.startHeight || '100%',
      scrolling: 'no',
      id: 'vkwidget' + widgetId,
      allowTransparency: options.allowTransparency || false,
      style: {
        overflow: 'hidden'
      }
    });
    onDone && setTimeout(function() {onDone(obj, iframe || obj.firstChild, rpc);}, 10);
    return widgetId;
  };
}

if (!VK.Util) {
  VK.Util = {
    getPageData: function() {
      if (!VK._pData) {
        var metas = document.getElementsByTagName('meta'), pData = {}, keys = ['description', 'title', 'url', 'image', 'app_id'], metaName;
        for (var i in metas) {
          if (!metas.getAttribute) continue;
          if (metas.getAttribute && ((metaName = metas.getAttribute('name')) || (metaName = metas.getAttribute('property')))) {
            for (var j in keys) {
              if (metaName == keys[j] || metaName == 'og:'+keys[j] || metaName == 'vk:'+keys[j]) {
                pData[keys[j]] = metas.content;
              }
            }
          }
        }
        if (pData.app_id && !VK._apiId) {
          VK._apiId = pData.app_id;
        }
        pData.title = pData.title || document.title || '';
        pData.description = pData.description || '';
        pData.image = pData.image || '';
        if (!pData.url && VK._iframeAppWidget && VK._apiId) {
          pData.url = '/app' + VK._apiId;
          if (VK._browserHash) {
            pData.url += VK._browserHash
          }
        }
        var loc = location.href.replace(/#.*$/, '');
        if (!pData.url || !pData.url.indexOf(loc)) {
          pData.url = loc;
        }
        VK._pData = pData;
      }
      return VK._pData;
    },
    getStyle: function(elem, name) {
      var ret, defaultView = document.defaultView || window;
      if (defaultView.getComputedStyle) {
        name = name.replace(/([A-Z])/g, '-$1').toLowerCase();
        var computedStyle = defaultView.getComputedStyle(elem, null);
        if (computedStyle) {
          ret = computedStyle.getPropertyValue(name);
        }
      } else if (elem.currentStyle) {
        var camelCase = name.replace(/\-(\w)/g, function(all, letter){
          return letter.toUpperCase();
        });
        ret = elem.currentStyle[name] || elem.currentStyle[camelCase];
      }

      return ret;
    },

    getXY: function(obj, fixed) {
      if (!obj || obj === undefined) return;

      var left = 0, top = 0;
      if (obj.getBoundingClientRect !== undefined) {
        var rect = obj.getBoundingClientRect();
        left = rect.left;
        top = rect.top;
        fixed = true;
      } else if (obj.offsetParent) {
        do {
          left += obj.offsetLeft;
          top += obj.offsetTop;
          if (fixed) {
            left -= obj.scrollLeft;
            top -= obj.scrollTop;
          }
        } while (obj = obj.offsetParent);
      }
      if (fixed) {
        top += window.pageYOffset || window.scrollNode && scrollNode.scrollTop || document.documentElement.scrollTop;
        left += window.pageXOffset || window.scrollNode && scrollNode.scrollLeft || document.documentElement.scrollLeft;
      }

      return [left, top];
    },

    Box: function(src, sizes, fnc, options) {
      fnc = fnc || {};
      var overflowB = document.body.style.overflow;
      var loader = document.createElement('DIV');
      var rpc = new fastXDM.Server(VK.extend(fnc, {
            onInit: function() {
              iframe.style.background = 'transparent';
              iframe.style.visibility = 'visible';
              document.body.style.overflow = 'hidden';
              document.body.removeChild(loader);
            },
            hide: function() {
              iframe.style.display = 'none';
            },
            tempHide: function() {
              iframe.style.left = '-10000px';
              iframe.style.top = '-10000px';
              iframe.style.width = '10px';
              iframe.style.height = '10px';
              document.body.style.overflow = overflowB;
            },
            destroy: function() {
              try {
                iframe.src = 'about: blank;';
              } catch (e) {}
              iframe.parentNode.removeChild(iframe);
              document.body.style.overflow = overflowB;
            },
            resize: function(w, h) {
            }
          }, true), false, {safe: true}),
          iframe = rpc.append(document.body, {
            src: src.replace(/&amp;/g, '&'),
            scrolling: 'no',
            allowTransparency: true,
            style: {position: 'fixed', left: 0, top: 0, zIndex: 1002, background: VK._protocol + '//vk.com/images/upload.gif center center no-repeat transparent', padding: '0', border: '0', width: '100%', height: '100%', overflow: 'hidden', visibility: 'hidden'}
          });
      loader.innerHTML = '<div style="position: fixed;left: 50%;top: 50%;margin: 0px auto 0px -60px;z-index: 1002;width: 100px;"><div style="background: url(//vk.com/images/upload_inv_mono'+(window.devicePixelRatio >= 2 ? '_2x' : '')+'.gif) no-repeat 50% 50%;background-size: 64px 16px;height: 50px;position: absolute;width: 100%;z-index: 100;"></div><div style="background-color: #000;opacity: 0.7;filter: alpha(opacity=70);height: 50px;-webkit-border-radius: 5px;-khtml-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;-webkit-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.35);-moz-box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.35);box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.35);"></div></div>';
      document.body.insertBefore(loader, document.body.firstChild);
      return {
        show: function(scrollTop, height) {
          iframe.style.display = 'block';
          document.body.style.overflow = 'hidden';
        },
        hide: function() {
          iframe.style.display = 'none';
          document.body.style.overflow = overflowB;
        },
        iframe: iframe,
        rpc: rpc
      }
    },

    addEvent: function(type, func) {
      if (window.document.addEventListener) {
        window.document.addEventListener(type, func, false);
      } else if (window.document.attachEvent) {
        window.document.attachEvent('on'+type, func);
      }
    },

    removeEvent: function(type, func) {
      if (window.document.removeEventListener) {
        window.document.removeEventListener(type, func, false);
      } else if (window.document.detachEvent) {
        window.document.detachEvent('on'+type, func);
      }
    },

    ss: function(el, styles) {VK.extend(el.style, styles, true);}
  };
}

// Init asynchronous library loading
window.vkAsyncInit && setTimeout(vkAsyncInit, 0);

if (window.vkAsyncInitCallbacks && vkAsyncInitCallbacks.length) {
  setTimeout(function() {
    var callback;
    while (callback = vkAsyncInitCallbacks.pop()) {
      try {
        callback();
      } catch(e) {
        try {
          console.error(e);
        } catch (e2) {}
      }
    }
  }, 0);
}

try{stManager.done('api/openapi.js');}catch(e){}

Батюк у нас таких не любят, у нас в почете аццкая сотона.

А ты слаб и телом и духом. Ты червь.  Пшел проч халоп

Вот вы травите Батька, а он же Украиец, европеец, сверхчеловек, не че та вам, рашкованскому быдлу! Иисус на страшном суде все вспомнит!

Edited by Родновепрь

Исуска гниет и сверххахол тутаже пойдет ирод и пес вот он кто.

6 minutes ago, Родновепрь said:

Вот вы травите Батька, а он же Украиец, европеец, сверхчеловек, не че та вам, рашкованскому быдлу! Иисус на страшном суде все вспомнит!

о, здарова, Жавдед!! Как ты смог воскреснуть?

9 минут назад, Родновепрь сказал:

Вот вы травите Батька, а он же Украиец, европеец, сверхчеловек, не че та вам, рашкованскому быдлу! Иисус на страшном суде все вспомнит!

с каких пор даугавпилс украиновский город?

Please sign in to comment

You will be able to leave a comment after signing in

Sign In Now

Recently Browsing 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.