Uncaught error vk not initialized please use vk init

Вместо кнопки Вконтакта, выдает такие ошибки: Uncaught ReferenceError: API_ID is not defined openapi.js:953Uncaught Error: VK not initialized. Please use

Автор zonzuJIro Обновлено 18.01.2023

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Вместо кнопки Вконтакта, выдает такие ошибки:

Uncaught ReferenceError: API_ID is not defined
openapi.js:953Uncaught Error: VK not initialized. Please use VK.init
VK.Widgets.Likeopenapi.js:953
(anonymous function)

— адрес сайта.
Кнопка в данный момент находится на странице «О сайте» в div «vkontakte»

Создай свой первый сайт на WordPress

  1. Sergey Biryukov 24.01.2011 в 23:07

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

    Ответить

    1. Sergey Biryukov 24.01.2011 в 23:09

      адрес идентификатор

      Слово «адрес» лишнее. Просто идентификатор.

      Ответить

    2. psionic 24.01.2011 в 23:38

      Вставил ID приложения вместо API_ID в коде кнопки.

      ]<!-- Put this script tag to the <head> of your page -->
      <script type="text/javascript" src="http://userapi.com/js/api/openapi.js?20"></script>
      
      <script type="text/javascript">
        VK.init({apiId: API_ID, onlyWidgets: true});
      </script>

      Теперь вместо кнопки: No application domain

      Ответить

      1. Sergey Biryukov 24.01.2011 в 23:48

        На главной странице есть идентификатор, но нет кода самой кнопки. На странице «О сайте» есть кнопка, но нет идентификатора (возможно, из-за кэширования). Сохранил страницу и добавил код вручную — кнопка появилась.

        Ответить

        1. psionic 25.01.2011 в 08:56

          У меня оба куска кода и там и там отображаются.

          Ответить

          1. Sergey Biryukov 25.01.2011 в 12:57

            Ответить

      2. Sergey Biryukov 25.01.2011 в 12:56

        Возможно, при добавлении сайта не был указан домен? Когда я для проверки добавлял свой, там было три поля: «Название сайта», «Адрес сайта», «Основной домен сайта».

        Ответить

        1. Sergey Biryukov 25.01.2011 в 13:02

          Да, стоит перепроверить домен. Если сохранить HTML-страницу на диск с помощью Firefox, кнопка появляется.

          Ответить

        2. psionic 25.01.2011 в 12:59

          Основной домен генерируется автоматически из адреса сайта.

          Ответить

  2. psionic 25.01.2011 в 13:08

    Разобрался — в настройках уже созданного приложения Вконтакте, есть пункт Open API, если зайти туда — ссылок на домены и адрес сайта нет.
    Плюс видимо в поле «Название» приложения нужно было вводить адрес сайта %)

    Ответить

0 Пользователей и 1 Гость просматривают эту тему.

  • 29 Ответов
  • 1644 Просмотров

Здравствуйте! Друзья, помогите, пожалуйста! Когда открываю страницу с JComments, то кнопки «Facebook, ВКонтакте, JComments» не работают. Начинают работать, только если «Разрешить небезопасное скрипты». Но «ВКонтакте» не открывается, а «JComments» не отправляет комментарий. К «Facebook» претензий нет. Также теги BBCode разрешены, а в форме они не появляются. Пробовал отключать и включать компонент, пробовал в разных браузерах и телефонах, всё одно и то же. Читаю, смотрю, но ответа не нахожу и боюсь сделать что-то ещё хуже. На всех страницах кроме «Главная» и «Форум» JComments есть. Спасибо!

Попробуйте подключать те скрипты через https

Попробуйте подключать те скрипты через https

Спасибо за ответ, но не очень понял, что это значит. У меня подключен SSL, если Вы это имеете ввиду.

Спасибо за ответ, но не очень понял, что это значит. У меня подключен SSL, если Вы это имеете ввиду.

Ну найдите пути скриптов и пропишите им https

У меня подключен SSL, если Вы это имеете ввиду.

Почти это. Ресурсы, которые подгружаются с других доменов (не с вашего сайта) тоже дожны загружаться по https. Соцсети как раз к таким и относятся.

Спасибо, друзья! Понял, но где искать эти настройки, в общих чертах.

Спасибо, друзья! Понял, но где искать эти настройки, в общих чертах.

Ну вам виднее откуда они подключаются

Спасибо, AlexB, но пока понятнее не стало. Я не знаю откуда они подключаются, точнее я не понимаю о чём речь.

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

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

А еще проще ссылку на сайт

Был бы признателен, alaniya-tr.ru

Спасибо, sivers, но я все модули и плагины связанные с JComments отключал, но результата никакого. Мало того, сам [/size]JComments со страниц сайта не пропадает.[/size]

Модуль Реклама «по ссылке» — там ссылки http://

Откройте консоль
Там все вхождения видны
Плагин soccoment

Модуль Реклама «по ссылке» — там ссылки http://

Удалить? Это может мешать?

Откройте консоль
Там все вхождения видны
Плагин soccoment

Извините, консоль это «Исследовать элемент»? 

Извините, консоль это «Исследовать элемент»?

Да и вкладка консоль
Там обращение к js  тоже через http

AlexB, консоль нашёл. Вижу красные крестики. Видимо это проблемы. Скажите, если не сложно, что с этим делать? 

Там есть стрелочки с описанием проблемы и местом где проблема находится

Удалить? Это может мешать?

если они вам нужны, то удалять не надо. попробуйте заменить в ссылках http:// на https:// и проверьте будет ли после этого работать переход по ссылке. Если будет — то оставьте. Иначе вернете как было.

Там есть стрелочки с описанием проблемы и местом где проблема находится

Спасибо большое, буду искать.

если они вам нужны, то удалять не надо. попробуйте заменить в ссылках http:// на https:// и проверьте будет ли после этого работать переход по ссылке. Если будет — то оставьте. Иначе вернете как было.

Спасибо! Буду пробовать все варианты.

AlexB, так выглядит проблема: jquery-ui-1.8.16.custom.min.js:10 Uncaught ReferenceError: jQuery is not defined
    at jquery-ui-1.8.16.custom.min.js:10
Я нашёл место там строчка: (function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)try{b(d).triggerHandler(«remove»)}catch(e){}k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b(«*»,this).add([this]).each(function(){try{b(this).triggerHandler(«remove»)}catch(d){}});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(«.»)[0],f;a=a.split(«.»)[1];f=e+»-«+a;if(!d){d=c;c=b.Widget}b.expr[«:»][f]= Можете подсказать в чём проблема и как её решить? С остальными проблемами буду разбираться по аналогии. 

Основная проблема у вас где vk
Там js подгружается по http

Похоже я не смогу разобраться. Печально. AlexB, может видео подскажите по этой теме или книгу?

Да какое тут видео.
Вам в плагине надо обращение http заменить на https

Спасибо. Позже попытаюсь ещё.

Спасибо, AlexB! Я разобрался с http — https, нашёл, заменил и этой проблемы нет. Но осталась ещё одна, которую я не могу решить. Инициализация VK. Вкладка VK не открывается. Подскажите, пожалуйста, как это сделать? А ещё вопрос: можно ли вообще вкладки Фейсбука и Вконтакте убрать, а оставить только  JComments? Напомню адрес сайта: https://alaniya-tr.ru
Возможно, AlexB занят и не сможет ответить, так что вопросы для всех, кто может помочь. Огромное спасибо всем.

Нут хз я с контакта без проблем залогинился

А как залогиниться, в этом случае? Инициализация имеет к этому отношение? А плагин «Social Login Vkontakte auth» связан с JComments? AlexB, если не сложно, подскажите, пожалуйста, где находится моя проблема:
———————————————————
JQMIGRATE: Migrate is installed       jquery-migrate.min.js?e0f1a12bd5d3e6200e7c55767206b794:2
version 1.4.1
———————————————————
Х Uncaught SyntaxError: Unexpected token ‘,’       katalog-predpriyatij-alanii:337
———————————————————
Х Uncaught Error: VK not initialized. Please use VK.init       openapi.js?34:1307
    at
Object.VK.Widgets.Comments (openapi.js?34:1307)
    at katalog-predpriyatij-alanii:337

Спасибо!

Установка виджета комментариев от ВКонтакте

Оффлайн Ascendens Отправлено в Понедельник, 23.05.2011, 10:38:22

Ascendens

 Идейный лидер

Сообщений: 54

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


Внимательно читаем правила постановки вопросов.

Оффлайн SexPublic Отправлено в Среда, 25.05.2011, 12:27:53

SexPublic

 Читатель

Сообщений: 6

Установка виджета комментариев от Вконтакте в каталоге статей (ucoz).

Полученный код от «Вконтакте»

В дизайне шаблона «Страница материала и коментариев к нему»
Добавляю в head

Code

<script type=»text/javascript» src=»http://userapi.com/js/api/openapi.js?29″></script>

Добавляю в body

Code

<script type=»text/javascript»>
   VK.init({apiId: мой_api_id, onlyWidgets: true});
</script>

Где «мой_api_id» — 7 цифр, api id которое я получаю вместе с кодом в «Вконтакте»

В шаблоне, рядом с блоком комментариев(ucoz) добавляю

Code

<div id=»vk_comments»></div>
<script type=»text/javascript»>
VK.Widgets.Comments(«vk_comments», {limit: 5, width: «496», attach: «graffiti,photo,video,audio»});
</script>

В итоге, на странице ничего не отображается.
Решил первые 2 кода

вставить вместе в head.

Результата нет.

Так же пробовал установить виджет-кнопку «Мне нравится». Установил. Когда начал ставить «комментарии», кнопка «мне нравится» тоже пропала. Не могу понять причину. Код написан верно, я ничего не менял.

Что можно сделать?

Оффлайн Ascendens Отправлено в Среда, 25.05.2011, 12:42:33

Ascendens

 Идейный лидер

Сообщений: 54

В head вставляются один под другим в одну строку:

Quote (SexPublic)

<script type=»text/javascript» src=»http://userapi.com/js/api/openapi.js?29″></script>
<script type=»text/javascript»>VK.init({apiId: мой_api_id, onlyWidgets: true});</script>

Далее, в body, опять же, скрипт в одну строку:

Quote (SexPublic)

<div id=»vk_comments»></div>
<script type=»text/javascript»>VK.Widgets.Comments(«vk_comments», {limit: 5, width: «496», attach: «graffiti,photo,video,audio»});</script>

После этого, если результата нет, смотрите ошибки JavaScript в любом браузере и(или) даете адрес страницы, где установлен код.


Внимательно читаем правила постановки вопросов.

Оффлайн SexPublic Отправлено в Среда, 25.05.2011, 15:16:18

SexPublic

 Читатель

Сообщений: 6

http://www.fayloobmennik.net/648699
код страницы в тхт
Оффлайн Ascendens Отправлено в Среда, 25.05.2011, 15:18:45

Ascendens

 Идейный лидер

Сообщений: 54

Quote (SexPublic)

http://www.fayloobmennik.net/648699
код страницы в тхт

И? Работает/не работает? Какая ошибка возникает?


Внимательно читаем правила постановки вопросов.

Оффлайн SexPublic Отправлено в Среда, 25.05.2011, 20:37:47

SexPublic

 Читатель

Сообщений: 6

не работает, если бы работал я бы не писал.
Есть идеи?

Добавлено (25.05.11, 20:37)
———————————————
под словом «не работает» я имею ввиду, что нету вообще ничего

Оффлайн Ascendens Отправлено в Среда, 25.05.2011, 22:54:23

Ascendens

 Идейный лидер

Сообщений: 54

Quote (SexPublic)

не работает, если бы работал я бы не писал.
Есть идеи?

Идея крайне проста — написать полный текст ошибки или дать посмотреть его на странице где код уже установлен. Ваш ID будут видеть ВСЕ, когда оно заработает и толку от него другим целый 0.


Внимательно читаем правила постановки вопросов.

Оффлайн SexPublic Отправлено в Четверг, 26.05.2011, 19:54:06

SexPublic

 Читатель

Сообщений: 6

хм, проверял на ошибки в линте, ничего не нашёл.

Каталог статей = материал и коментарии к нему.
http://sexpublic.ru/publ/o_sekse/o_sekse/marikhuana_i_seks_neformalnyj_obzor/6-1-0-24
Код установлен, отображения ноль.

Оффлайн Ascendens Отправлено в Четверг, 26.05.2011, 20:36:33

Ascendens

 Идейный лидер

Сообщений: 54

Ошибка: Uncaught Error: VK not initialized. Please use VK.init

Причина: дважды подключена библиотека openapi.js; удалите её подключение перед вызовом VK.Widgets.Group — из-за этого сбрасывается ID и комментарии не отображаются.


Внимательно читаем правила постановки вопросов.

Оффлайн SexPublic Отправлено в Четверг, 26.05.2011, 21:10:28

SexPublic

 Читатель

Сообщений: 6

Сори, не понял, где она подключена дважды?

Добавлено (26.05.11, 21:03)
———————————————
ой, сори. действительно, повторялся скрипт… когда устанавливал виджет для групп.
Спасибо тебе, ты мне не плохо помог

Добавлено (26.05.11, 21:10)
———————————————
Можно ещё одну просьбу?

Понравилось как вы сделали комментарии на этом портале.
Могли бы вы мне подробно объяснить как это реализовать у себя.

Аватара пользователя

sergiks

Сообщения: 51
Зарегистрирован: 06 окт 2012, 11:59
Откуда: Москва, Австрия, Франция, Таиланд

Как узнать, когда VK.init() выполнился?

В iframe приложении использую и виджет комментариев, и хочу сразу по окончании загрузки выполнить вызов js api метода getCountries().

Затык в том, что писать сразу после VK.init({apiId: 12345}); следующей строчкой VK.api(…) нельзя: получаю ошибку «Error: VK not initialized. Please use VK.init».
Виджет загружается и работает. Ошибка пропадает, если не вызывать API метод.

Как правильно инициализировать VK для одновременного использования и виджетов и методов API через JavaScript?

Serge

WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Как узнать, когда VK.init() выполнился?

Сообщение

Serge » 30 окт 2012, 08:34

sergiks писал(а):В iframe приложении использую и виджет комментариев, и хочу сразу по окончании загрузки выполнить вызов js api метода getCountries().

Затык в том, что писать сразу после VK.init({apiId: 12345}); следующей строчкой VK.api(…) нельзя: получаю ошибку «Error: VK not initialized. Please use VK.init».
Виджет загружается и работает. Ошибка пропадает, если не вызывать API метод.

Как правильно инициализировать VK для одновременного использования и виджетов и методов API через JavaScript?

Не понял. Вроде же как правильная конструкция

Код: Выделить всё

VK.init(function(){//все запросы к вк тут}); 

Аватара пользователя

sergiks

Сообщения: 51
Зарегистрирован: 06 окт 2012, 11:59
Откуда: Москва, Австрия, Франция, Таиланд

Re: вопрос закрыт

Сообщение

sergiks » 30 окт 2012, 13:46

Я перепутал OpenAPI вызов виджета с iframe js api. Действительно, всё заработало без проблем примерно так:

Код: Выделить всё

<script src="http://vk.com/js/api/xd_connection.js?2" type="text/javascript"></script>...<script type="text/javascript">    VK.init(        function(){            VK.Widgets.Comments(                'vk_comments',                {},                'abcdefgh'            );            getCountries();        }    );     function getCountries(){        VK.api(            'places.getCountries',            {                code: 'RU,UA,BY',                test_mode: 1,            },            gotCountries        )    }    function gotCountries( data){        ...    } 

#1

Отправлено 21 Март 2012 — 15:11

Возникла необходимость добавить форму комментариев из ВКонтакте. Но добавить нужно не на все, а на отдельные страницы. Это возможно?

  • Наверх


#2

desbest

Отправлено 21 Март 2012 — 15:23

Просмотр сообщенияKotofeeva (21 Март 2012 — 15:11) писал:

Возникла необходимость добавить форму комментариев из ВКонтакте. Но добавить нужно не на все, а на отдельные страницы. Это возможно?

На какие именно?

  • Наверх


#3

Kotofeeva

Отправлено 21 Март 2012 — 15:30

Просмотр сообщенияdesbest (21 Март 2012 — 15:23) писал:

Хочу сделать странички со более подробными описаниями товаров и «тест-драйвами». Страницы будут создаваться через сайт—страницы. Вот на этих страницах я и хочу установить комментарии.

  • Наверх


#4

desbest

Отправлено 21 Март 2012 — 22:58

Просмотр сообщенияKotofeeva (21 Март 2012 — 15:30) писал:

Хочу сделать странички со более подробными описаниями товаров и «тест-драйвами». Страницы будут создаваться через сайт—страницы. Вот на этих страницах я и хочу установить комментарии.

Конечно это возможно, сгенерируйте код на сайте Вконтакте и вставляйте через html редактор (страница-редактировать-html)

  • Наверх


#5

Kotofeeva

Отправлено 21 Март 2012 — 23:25

Просмотр сообщенияdesbest (21 Март 2012 — 22:58) писал:

Конечно это возможно, сгенерируйте код на сайте Вконтакте и вставляйте через html редактор (страница-редактировать-html)

Не получается. Сгенерировала. Вставила первую часть сверху, внутри тега head, а вторую часть  -внизу, перед тегом /body. Но ничего не отображается.
И еще, если и будет отображаться, то, видимо, на всех страницах, а мне нужно выборочно.

  • Наверх


#6

desbest

Отправлено 22 Март 2012 — 10:25

Просмотр сообщенияKotofeeva (21 Март 2012 — 23:25) писал:

Не получается. Сгенерировала. Вставила первую часть сверху, внутри тега head, а вторую часть  -внизу, перед тегом /body. Но ничего не отображается.
И еще, если и будет отображаться, то, видимо, на всех страницах, а мне нужно выборочно.

Вам не надо делить код по частям, вставляйте весь код полноценный, и незабудте убрать промежутки между строками, а то не будет отображаться.

  • Наверх


#7

Kotofeeva

Отправлено 22 Март 2012 — 12:39

Просмотр сообщенияdesbest (22 Март 2012 — 10:25) писал:

Вам не надо делить код по частям, вставляйте весь код полноценный, и незабудте убрать промежутки между строками, а то не будет отображаться.

пошла пробовать…

  • Наверх


#8

Kotofeeva

Отправлено 22 Март 2012 — 12:52

получилось. Но все равно стоит на всех страницах. Ну да ладно. Пусть так будет. Спасибо!

  • Наверх


#9

fortuna

Отправлено 09 Апрель 2012 — 21:38

Просмотр сообщенияdesbest (22 Март 2012 — 10:25) писал:

Вам не надо делить код по частям, вставляйте весь код полноценный, и незабудте убрать промежутки между строками, а то не будет отображаться.

Добрый день!
Почему-то у меня не получается добавить виджет(( И целиком пробовала добавить, и по частям, все равно не отображается.

  • Наверх


#10

fortuna

Отправлено 09 Апрель 2012 — 23:13

Все, уже разобралась, помогите, пожалуйста, убрать закладку «ВАШ ОТЗЫВ» на sitematic — давно это было, не помню, как и куда вставляла код))

  • Наверх


#11

fortuna

Отправлено 09 Апрель 2012 — 23:31

Просмотр сообщенияfortuna (09 Апрель 2012 — 23:13) писал:

Все, уже разобралась, помогите, пожалуйста, убрать закладку «ВАШ ОТЗЫВ» на sitematic — давно это было, не помню, как и куда вставляла код))

Извините за беспокойство, все вспомнила)

  • Наверх


#12

inoted

inoted

    Новичок

  • Пользователи
  • Pip

  • 7 сообщений
  • ГородТатарстан

Отправлено 15 Сентябрь 2012 — 11:45

Доброе время суток. Я что-то так и не понял куда именно в файле HTML вставлять виджет сгенерированный сайтом вконтакте? Между какими блоками?

  • Наверх


#13

Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 283 сообщений

Отправлено 17 Сентябрь 2012 — 10:46

Можно вставить после кода каталога или после всех блоков. Например в шаблоне «HTML» вставьте после блока

<!-- Материалы СМИ -->
				{%IFNOT news_list_mass_media_empty %}
				  <br /><h4 class="contentTbodyCatalogHeader"><a href="{NEWS_MASS_MEDIA_URL}">Новости СМИ</a></h4>
				  <div class="contentTbodyNews">
		
					<!-- Список статей -->
					<div class="contentTbodyNewsBlock">
					  {% FOR news_list_mass_media %}
						<div class="contentTbodyNewsBlockItem"> 
						  <a href="{news_list_mass_media.URL}" class="contentTbodyNewsBlockItemTitle" title="Перейти к странице новости">{news_list_mass_media.TITLE}</a><br />
						  
						  <div class="newsListBlockItemPreview">{news_list_mass_media.TEXT_SHORT} </div>
						  {% IF news_list_mass_media.SHOW_TIME %}<em class="contentTbodyNewsBlockItemTime">{news_list_mass_media.TIME | date("d.m.Y")}</em><br />{% ENDIF %}
						</div>
					  {% ENDFOR %}
					</div>
		
					<a href="{NEWS_MASS_MEDIA_URL}">Архив новостей</a>
				  </div>
				{% ENDIF %}

  • Наверх


#14

inoted

inoted

    Новичок

  • Пользователи
  • Pip

  • 7 сообщений
  • ГородТатарстан

Отправлено 18 Сентябрь 2012 — 10:27

Благодарю Вас, Vaccina, за предыдущий ответ.
Но что-то кнопка » мне нравится» так и не появилась. В чем дело? что сделал не так?
Виджет брал вот здесь: http://vk.com/develo…p?oid=-1&p=Like
Мой сайт: cosplaykzn.ru

  • Наверх


#15

Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 283 сообщений

Отправлено 19 Сентябрь 2012 — 10:15

В данный момент у вас присутствуют ошибки javascript

ReferenceError: API_ID is not defined
VK.init({apiId: API_ID, onlyWidgets: true});

Error: VK not initialized. Please use VK.init
if (!VK._apiId) throw Error('VK not initialized. Please use VK.init');

Думаю вам лучше задать этот вопрос в службу поддержки VK

  • Наверх


#16

topwalker

topwalker

    Новичок

  • Пользователи
  • Pip

  • 2 сообщений

Отправлено 30 Сентябрь 2012 — 02:53

Vaccina, та же проблема с виджетом комментариев, в хэд вставил первую часть, как и пишут в вк, остальное в тело шаблона товар, но ничего(
Вот что просит вставить вк:

<!— Put this script tag to the <head> of your page —>
<script type=»text/javascript» src=»http://userapi.com/j…s?52″></script>

<script type=»text/javascript»>
  VK.init({apiId: API_ID, onlyWidgets: true});
</script>

<!— Put this div tag to the place, where the Comments block will be —>
<div id=»vk_comments»></div>
<script type=»text/javascript»>
VK.Widgets.Comments(«vk_comments», {limit: 10, width: «496», attach: «*»});
</script>

сайт

Прикрепленные изображения

  • Наверх


#17

Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 283 сообщений

Отправлено 01 Октябрь 2012 — 12:41

Попробуйте обратиться в службу поддержки VK. В данный момент у вас на сайте ошибки

ReferenceError: API_ID is not defined	
VK.init({apiId: API_ID, onlyWidgets: true});

Error: VK not initialized. Please use VK.init
VK.init({apiId: API_ID, onlyWidgets: true});

  • Наверх


(function(w) { if (w.fastXDM) return; var handlers = {}; var onEnvLoad = []; var env = {}; // Key generation function genKey() { var key = »; for (var 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) { var newValue; switch (typeof value) { case ‘string’: if (clean) { newValue = value.replace(/&/g, ‘&amp;’).replace(/</g, ‘&lt;’).replace(/>/g, ‘&gt;’).replace(/»/g, ‘&quot;’).replace(/’/g, ‘'’); } else { newValue = value.replace(/'/g, »’).replace(/&quot;/g, ‘»‘).replace(/&gt;/g, ‘>’).replace(/&lt;/g, ‘<‘).replace(/&amp;/g, ‘&’); } break; case ‘object’: if (Object.prototype.toString.apply(value) === ‘[object Array]’) { newValue = []; for (var i = 0, len = value.length; i < len; i++) { newValue[i] = walkVar(value[i], clean); } } else { newValue = {}; for (var k in value) { if (Object.hasOwnProperty.call(value, k)) { newValue[k] = walkVar(value[k], clean); } } } break; default: newValue = value; break; } 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; for (var i = 0, len = onEnvLoad.length; i < len; i++) { onEnvLoad[i][1].apply(onEnvLoad[i][0], [env]); } } function applyMethod(strData, self) { getEnv(function(env) { var data = env.json.parse(strData); if (data[0]) { if (!data[1]) data[1] = []; for (var i = 0, len = data[1].length; i < len; i++) { if (data[1][i] && data[1][i]._func) { var funcNum = data[1][i]._func; data[1][i] = function() { var args = Array.prototype.slice.call(arguments); args.unshift(‘_func’ + funcNum); self.callMethod.apply(self, args); } } else if (self.options.safe) { data[1][i] = walkVar(data[1][i], 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); } }); } function extend(obj1, obj2) { for (var i in obj2) { if (obj1[i] && typeof(obj1[i]) === ‘object’) { extend(obj1[i], obj2[i]) } else { obj1[i] = obj2[i]; } } } // XDM object w.fastXDM = { _id: 0, helperUrl: ‘https://vk.com/js/api/xdmHelper.js’, Server: function(methods, filter, options) { this.methods = methods || {}; this.filter = filter; this.options = options || {}; this.id = w.fastXDM._id++; this.key = genKey(); this.frameName = ‘fXD’ + this.key; this.server = true; this.methods[‘%init%’] = this.methods.__fxdm_i = function() { w.fastXDM.run(this.id); if (this.methods.onInit) { this.methods.onInit(); } }; handlers[this.key] = [applyMethod, this]; }, Client: function(methods, options) { this.methods = methods || {}; this.options = options || {}; this.id = w.fastXDM._id++; this.client = true; 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]; 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) { var data = e.data; if (!data) { return false; } 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](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) { for (var i in exEnv) { env[i] = exEnv[i]; } 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; for (var i = 0; i < len; i++) { this._q[key][i][0].apply(this._q[key][i][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() { delete handlers[this.key]; } w.fastXDM.Server.prototype.append = function(obj, options, attrs) { var div = document.createElement(‘DIV’); div.innerHTML = ‘<iframe name=»‘ + this.frameName + ‘» ‘ + (attrs || ») + ‘></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(); for (var i = 0, len = args.length; i < len; i++) { if (typeof(args[i]) === ‘function’) { this.funcsCount = (this.funcsCount || 0) + 1; var func = args[i]; var funcName = ‘_func’ + this.funcsCount; this.methods[funcName] = function() { func.apply(this, arguments); delete this.methods[funcName]; } args[i] = {_func: this.funcsCount}; } else if (this.options.safe) { args[i] = walkVar(args[i], 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); if (win) { try { win.postMessage(xdm.key + ‘:’ + strData, «*»); } catch(e) { window.postMessage.call(win, 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; }; VK._protocol = ‘https:’; 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’) var 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[i].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=4&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: 560, height: 304 }); 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; } if (m == ‘messages.allowmessagesfromgroup’) { var method_access = ‘_’ + (Math.random()).toString(16).substr(2); var query = VK._protocol + ‘//vk.com/widget_allow_messages_from_community.php?act=allow_box&group_id=’ + parseInt(params.group_id, 10) + ‘&app_id=’ + parseInt(VK._apiId, 10) + ‘&method_access=’ + method_access; VK.UI.popup({ url: query, width: 560, height: 304 }); 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[i]).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;»>Войти</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;»>Контакте</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[i]; 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[i] != null) { subscribers[i].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[i] == handler) { subscribers[i] = null; } } } else { delete this._subscribers()[eventName]; } } }; } if (!VK.Widgets) { VK.Widgets = {}; VK.Widgets.count = 0; VK.Widgets.RPC = {}; VK.Widgets.showBoxUrl = function(domain, url) { domain = (domain || VK._protocol + ‘//vk.com’).replace(//?s*$/, »); url = url.replace(/^s*/?/, »); return domain + ‘/’ + url; }; 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 obj = document.getElementById(objId), 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 ? 0 : 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(VK.Widgets.showBoxUrl(options.base_domain, 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 }, 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: (116 + params.limit * 47 — 15), minWidth: 150 }); }; VK.Widgets.Post = function(objId, ownerId, postId, hash, options) { options = options || {}; var obj = document.getElementById(objId), params = { owner_id: ownerId, post_id: postId, hash: hash || » }, 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(VK.Widgets.showBoxUrl(options.base_domain, 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 }, function(o, i, r) {iframe = i; rpc = r;}); }; VK.Widgets.Like = (function(Like) { if (Like) return Like; var instances = []; 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}); var verticalBtnHeightWidth = { 18: 43, 20: 47, 22: 51, 24: 55, 30: 67, }, type = (options.type == ‘full’ || options.type == ‘button’ || options.type == ‘vertical’ || options.type == ‘mini’) ? options.type : ‘full’, autoWidth = options.width === ‘auto’ && (type == ‘button’ || type == ‘mini’), btnHeight = parseInt(options.height, 10) || 22, size = btnHeight && verticalBtnHeightWidth[btnHeight] ? btnHeight : 22, width = autoWidth ? 153 : (type == ‘full’ ? Math.max(200, options.width || 350) : (type == ‘button’ ? 180 : (type == ‘mini’ ? 115 : verticalBtnHeightWidth[size]))), height = type == ‘vertical’ ? (2 * btnHeight + 7) : 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, hideTimeout = null, obj, buttonIfr, buttonRpc, tooltipIfr, tooltipRpc, checkTO, statsBox; if (type == ‘vertical’ || type == ‘button’ || type == ‘mini’) delete options.width; if (autoWidth) params.auto_width = 1; function showTooltip(force) { if ((!isOver && !force) || !tooltipRpc) return; if (!tooltipIfr || !tooltipRpc || tooltipIfr.style.display != ‘none’ && tooltipIfr.getAttribute(‘vkhidden’) != ‘yes’) return; hideTimeout && clearTimeout(hideTimeout); checkTO && clearTimeout(checkTO); 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, type+’_’+size); } else { tooltipIfr.style.top = (startY — 128) + ‘px’; tooltipRpc.callMethod(‘show’, true, type+’_’+size); } VK.Util.ss(tooltipIfr, {left: (ttHere ? 0 : objPos[0]) — (type == ‘full’ || type == ‘button’ ? 32 : 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’); hideTimeout = setTimeout(function() { tooltipIfr.style.display = ‘none’ }, 400); } function handleStatsBox(act) { hideTooltip(true); statsBox = VK.Util.Box(buttonIfr.src + ‘&act=a_stats_box&widget_width=638&from=wlike’); statsBox.show(); } var widgetId = VK.Widgets._constructor(‘widget_like.php’, objId, options, params, { initTooltip: function(counter) { tooltipRpc = new fastXDM.Server({ onInit: counter ? function() { showTooltip(); } : function() {}, proxy: function() { buttonRpc.callMethod.apply(buttonRpc, arguments); }, showBox: function(url, props) { var box = VK.Util.Box(VK.Widgets.showBoxUrl(options.base_domain, 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: ‘none’, opacity: 0.01, filter: ‘alpha(opacity=1)’, border: ‘0’, width: ‘274px’, height: ‘130px’, zIndex: 5000, overflow: ‘hidden’} }); tooltipIfr.setAttribute(‘vkhidden’, ‘yes’); tooltipIfr.onmouseover = function() { clearTimeout(checkTO); isOver = true; }; tooltipIfr.onmouseout = function() { clearTimeout(checkTO); isOver = false; checkTO = setTimeout(function() {hideTooltip(); }, 200); }; }, statsBox: handleStatsBox, showTooltip: showTooltip, hideTooltip: hideTooltip, destroy: function() { buttonRpc.destroy(); try {buttonIfr.src = ‘about: blank;’;} catch (e) {} buttonIfr.parentNode.removeChild(buttonIfr); if (tooltipIfr) { try {tooltipIfr.src = ‘about: blank;’;} catch (e) {} tooltipIfr.parentNode.removeChild(tooltipIfr); } tooltipRpc && tooltipRpc.destroy(); if (statsBox) { if (statsBox.iframe) { try {statsBox.iframe.src = ‘about: blank;’;} catch (e) {} statsBox.iframe.parentNode.removeChild(statsBox.iframe); } statsBox.rpc && statsBox.rpc.destroy(); } }, showBox: function(url, props) { var box = VK.Util.Box(VK.Widgets.showBoxUrl(options.base_domain, 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}); obj.onmouseover = function() { clearTimeout(checkTO); isOver = true; }; obj.onmouseout = function() { clearTimeout(checkTO); isOver = false; checkTO = setTimeout(function() {hideTooltip(); }, 200); }; }); instances.push(widgetId); return widgetId; }; Like.destroyAll = function() { var xdm = null; while (instances[0]) { xdm = VK.Widgets.RPC[instances.pop()]; xdm && xdm.methods.destroy(); } } return Like; })(VK.Widgets.Like); VK.Widgets.Poll = function(objId, options, pollId) { var pData = VK.Util.getPageData(); 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(‘al_widget_poll.php’, objId, options, params, {}, { startHeight: 144, minWidth: 300 }); }; VK.Widgets.Community = VK.Widgets.Group = function(objId, options, gid) { gid = parseInt(gid, 10); 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’ }, startHeight = options.mode == 3 ? 185 : (options.mode == 1 ? 141 : options.height|0 || 290), rpc; 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.no_cover) params.no_cover = 1; if (options.wide) { params.wide = 1; if (!options.width || options.width < 300) { options.width = 300; } } if (!options.width|0) options.width = 200; 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(VK.Widgets.showBoxUrl(options.base_domain, 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, maxWidth: 1200, startHeight: startHeight }, 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[i]).replace(/&/g, ‘%26’).replace(/?/, ‘%3F’)); } window.location.href = href + vars.join(‘&’); } }}, { startHeight: 134 }); }; VK.Widgets.Subscribe = function(objId, options, oid) { oid = parseInt(oid, 10); if (!oid) { throw Error(‘No owner_id passed’); } var params = { oid: oid }, rpc; 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(VK.Widgets.showBoxUrl(options.base_domain, url), [], { proxy: function() { rpc.callMethod.apply(rpc, arguments); } }); box.show(); }, auth: function() { VK.Auth.login(null, 1); } }, { minWidth: 220, startHeight: 22 }, function(o, i, r) { rpc = r; }); }; VK.Widgets.ContactUs = function(objId, options, oid) { oid = parseInt(oid, 10); if (!options) options = {}; if (!oid) throw Error(‘No group or user id passed’); var params = { oid: oid, height: ({18: 18, 20: 20, 22: 22, 24: 24, 30: 30})[parseInt(options.height, 10) || 24], text: (options.text || »).substr(0, 140) }, rpc; return VK.Widgets._constructor(‘widget_contactus.php’, objId, options, params, {}, { startHeight: params.height, height: params.height }, 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[i]]; 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[i] == 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.AllowMessagesFromCommunity = function (objId, options, groupId) { groupId = parseInt(groupId, 10); if (!options) options = {}; if (!groupId || groupId < 0) throw Error(‘No group id passed’); var params = { height: ({22: 22, 24: 24, 30: 30})[parseInt(options.height, 10) || 24], key: options.key ? options.key.substr(0, 256) : », group_id: groupId }, rpc; return VK.Widgets._constructor(‘widget_allow_messages_from_community.php’, objId, options, params, {}, { startHeight: params.height, height: params.height }, function(o, i, r) { rpc = r; }); }; VK.Widgets.CommunityMessages = (function(CommunityMessages) { if (CommunityMessages) return CommunityMessages; var instances = {}, wCur = {}; var BUTTONS_CONF = { no_button: {width: 0, height: 0}, blue_circle: { width: 50, height: 50, margin: { bottom: 20 } } }, DEFAULT_BUTTON_TYPE = ‘blue_circle’, BUTTON_POSITIONS = { left: { bottom: 0, left: 20 }, right: { bottom: 0, right: 20 } }, DEFAULT_BUTTON_POSITION = ‘right’; /* options — welcomeScreen — expandTimeout — shown || expended — widgetPosition — buttonType — disableButtonTooltip — tooltipButtonText — disableNewMessagesSound — disableExpandChatSound — disableTitleChange */ CommunityMessages = function(objId, gid, options) { options = options || {}; options.width = 300; options.height = 399; if (!options.base_domain) { options.base_domain = options.base_domain || VK._protocol + ‘//vk.com’; } options.expandTimeout = parseInt(options.expandTimeout) || 0; var params = { gid: gid }; options.expanded = parseInt(options.expanded) || 0; if (!options.from_dev && lsGet(‘expanded’) != null || options.expanded) { options.shown = 1; } if (options.shown) { params.shown = 1; } if (!options.welcomeScreen) { params.disable_welcome_screen = 1; } var buttonType = options.buttonType; if (Object.keys(BUTTONS_CONF).indexOf(buttonType) == -1) { buttonType = DEFAULT_BUTTON_TYPE; } if (buttonType == ‘no_button’) { options.disableButtonTooltip = 1; } if (options.disableButtonTooltip) { params.disable_tooltip = 1; } if (options.tooltipButtonText) { params.tooltip_text = options.tooltipButtonText; } if (options.disableNewMessagesSound) { params.disable_new_messages_sound = 1; } if (instances[objId]) { CommunityMessages.destroy(objId); } params.domain = document.domain; options.no_loading = 1; var curBox = false, expanded = 0; var ttSize = [0, 0], widgetPosition; changeWidgetPosition(options.widgetPosition); params.button_position = options.widgetPosition; var chatRpc, chatIfr; var inited = 0, timers = {}; instances[objId] = VK.Widgets._constructor(‘widget_community_messages.php’, objId, options, params, { onStartLoading: function() { var obj = document.getElementById(objId); obj.style.position = ‘fixed’; obj.style[‘z-index’] = 10000; updateWidgetPosition(); }, onReady: function () { inited = 1; if (options.expandTimeout > 0 && !options.shown) { timers.showTimer = setTimeout(function () { expandChat({ playSong: !options.disableExpandChatSound, noSaveState: 1 }); }, options.expandTimeout); } }, showBox: function(url) { if (curBox) { try { curBox.hide(); try { curBox.iframe.src = ‘about: blank;’; } catch (e) {} curBox.iframe.parentNode.removeChild(curBox.iframe); } catch(e) { } } curBox = VK.Util.Box(VK.Widgets.showBoxUrl(options.base_domain, url), [], { proxy: function() { rpc.callMethod.apply(rpc, arguments); } }); curBox.show(); }, setTooltipSize: function (size) { ttSize = size; if (!expanded) { minimize(); } }, expand: function(opts) { opts = opts || {}; expanded = 1; expand(); if (!opts.noSaveState) { lsSet(‘expanded’, 1); } }, minimize: function() { setTimeout(function() { expanded = 0; minimize(objId); lsRemove(‘expanded’); }, 120); }, canNotWrite: function(type) { options.onCanNotWrite && options.onCanNotWrite(type); }, destroy: function() { chatRpc.destroy(); try {chatIfr.src = ‘about: blank;’;} catch (e) {} try { chatIfr.parentNode.removeChild(chatIfr); } catch(e) { } }, fatalError: function(error_code, public_id) { var query = { code: error_code, widget: 2, public_id: public_id, }; if (error_code == 1903) { query.referrer_domain = document.domain; } var query_str = []; for(var i in query) { query_str.push(i+’=’+query[i]); } CommunityMessages.destroy(objId); var box = VK.Util.Box(VK.Widgets.showBoxUrl(options.base_domain, ‘blank.php?’+query_str.join(‘&’))); box.show(); }, setPageTitle: function (title) { if (options.disableTitleChange) { return; } stopTitleAnimation(); wCur.oldTitle = document.title || null; wCur.title = title; wCur.changeTitleMode = 0; startTitleNotify(1); }, resetPageTitle: function () { stopTitleAnimation(); }, newMessage: function () { if (document.hasFocus && !document.hasFocus() && !options.disableNewMessagesSound) { callRpcMethod(‘playNewMsgSong’); } } }, {}, function(o, i, r) { chatRpc = r; chatIfr = i; if (!options.shown) { minimize(); } else { expand(); } }); function startTitleNotify(fast) { clearTimeout(wCur.titleTimer); wCur.titleTimer = setTimeout(function () { if (wCur.changeTitleMode == 1) { document.title = wCur.oldTitle || »; } else { document.title = wCur.title; } wCur.changeTitleMode = wCur.changeTitleMode == 1 ? 0 : 1; startTitleNotify(); }, fast ? 0 : 1500); } function stopTitleAnimation() { if (options.disableTitleChange) { return; } clearTimeout(wCur.titleTimer); if (wCur.oldTitle) { document.title = wCur.oldTitle; } else if (wCur.oldTitle === null) { document.title = »; } wCur.title = »; } function expand() { var obj = document.getElementById(objId), frame = obj.getElementsByTagName(‘iframe’)[0]; obj.style.width = frame.width = ‘372px’; obj.style.height = frame.height = ‘399px’; obj.style.margin = ‘0px 0px 0px 0px’; //frame.style.boxShadow = ‘0 0 0 1px rgba(0, 20, 51, .12), 0 20px 40px 0 rgba(0, 0, 0, 0.3)’; //frame.style.borderRadius = ‘6px’; } function minimize() { var obj = document.getElementById(objId), frame = obj.getElementsByTagName(‘iframe’)[0]; var btnConf = BUTTONS_CONF[buttonType]; var w = btnConf.width + ttSize[0]; var h = Math.max(btnConf.height, ttSize[1]); obj.style.width = w + ‘px’; obj.style.height = h + ‘px’; frame.style.boxShadow = ‘none’; var margin = btnConf.margin ? btnConf.margin : {}; obj.style.margin = ‘0px ‘ + (margin.right || 0) + ‘px ‘ + (margin.bottom || 0) + ‘px 0px’; if (frame) { frame.width = w; frame.height = h; } } function changeWidgetPosition(position) { widgetPosition = position; if (Object.keys(BUTTON_POSITIONS).indexOf(widgetPosition) == -1) { widgetPosition = DEFAULT_BUTTON_POSITION; } updateWidgetPosition(); callRpcMethod(‘changeButtonPosition’, widgetPosition); } function updateWidgetPosition() { var obj = document.getElementById(objId); if (!obj) { return; } var props = [‘left’, ‘right’, ‘top’, ‘bottom’]; for(var i in props) { obj.style[props[i]] = »; } var conf = BUTTON_POSITIONS[widgetPosition]; for(var i in conf) { obj.style[i] = conf[i] + ‘px’; } if (!inited) { return; } if (expanded) { expand(); } else { minimize(); } } function callRpcMethod() { chatRpc && chatRpc.callMethod.apply(chatRpc, arguments); } /* opts — welcomeScreen */ function expandChat(opts) { if (!opts || Object.prototype.toString.call(opts) !== ‘[object Object]’) { opts = {}; } if (opts.welcomeScreen == undefined) { opts.welcomeScreen = options.welcomeScreen; } clearTimeout(timers.showTimer); callRpcMethod(‘expand’, opts); } function minimizeChat() { callRpcMethod(‘minimize’); } function destroyChat() { stopTitleAnimation(); CommunityMessages.destroy(objId); } return { expand: expandChat, minimize: minimizeChat, destroy: destroyChat, changeButtonPosition: changeWidgetPosition, stopTitleAnimation: stopTitleAnimation, }; }; function lsGet(key) { if (!window.localStorage) { return null; } return localStorage.getItem(‘vk_community_widget_’ + key); } function lsSet(key, value) { window.localStorage && localStorage.setItem(‘vk_community_widget_’ + key, value); } function lsRemove(key) { window.localStorage && localStorage.removeItem(‘vk_community_widget_’ + key); } CommunityMessages.destroy = function(objId) { if (!instances[objId]) { return; } var xdm = VK.Widgets.RPC[instances[objId]]; xdm && xdm.methods.destroy(); delete instances[objId]; }; CommunityMessages.expand = function (objId) { console.log(instances[objId]); }; return CommunityMessages; })(VK.Widgets.CommunityMessages); 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; } options = options || {}; defaults = defaults || {}; funcs = funcs || {}; var ifr, url, urlQueryString, encodedParam, rpc, iframe, i, base_domain = options.base_domain || VK._protocol + ‘//vk.com’, width = options.width === ‘auto’ ? (obj.clientWidth || obj.offsetWidth || defaults.minWidth) | 0 : parseInt(options.width || 0, 10); width = width ? (Math.max(defaults.minWidth || 200, Math.min(defaults.maxWidth || 10000, width)) + ‘px’) : ‘100%’; obj.style.width = width; if (options.height) { params.height = options.height; obj.style.height = options.height + ‘px’; } else { obj.style.height = (defaults.startHeight || 200) + ‘px’; } if (width === ‘100%’) params.startWidth = (obj.clientWidth || obj.offsetWidth) | 0; if (!params.url) params.url = options.pageUrl || location.href.replace(/#.*$/, »); url = base_domain + ‘/’ + widgetUrl; urlQueryString = »; if (!options.noDefaultParams) { urlQueryString += ‘&app=’ + (VK._apiId || ‘0’) + ‘&width=’ + encodeURIComponent(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[i].length > 80) params[i] = params[i].substr(0, 80)+’…’; if (i == ‘description’ && params[i].length > 160) params[i] = params[i].substr(0, 160)+’…’; if (typeof(params[i]) == ‘number’) { encodedParam = params[i]; } else { try { encodedParam = encodeURIComponent(params[i]); } catch (e) { encodedParam = »; } } urlQueryString += ‘&’ + i + ‘=’ + encodedParam; } urlQueryString += ‘&’ + (+new Date()).toString(16); url += ‘?’ + urlQueryString.substr(1); funcs.onStartLoading && funcs.onStartLoading(); if (!options.no_loading) { VK.Widgets.loading(obj, true); } funcs.showLoader = function(enable) { VK.Util.Loader(enable); }; 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[i].getAttribute) continue; if (metas[i].getAttribute && ((metaName = metas[i].getAttribute(‘name’)) || (metaName = metas[i].getAttribute(‘property’)))) { for (var j in keys) { if (metaName == keys[j] || metaName == ‘og:’+keys[j] || metaName == ‘vk:’+keys[j]) { pData[keys[j]] = metas[i].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]; }, Loader: function self(enable) { if (!self.loader) { self.loader = document.createElement(‘DIV’); self.loader.innerHTML = ‘<style type=»text/css»> @-webkit-keyframes VKWidgetsLoaderKeyframes {0%{opacity: 0.2;}30%{opacity: 1;}100%{opacity: 0.2;}} @keyframes VKWidgetsLoaderKeyframes {0%{opacity: 0.2;}30%{opacity: 1;}100%{opacity: 0.2;}} .VKWidgetsLoader div {width: 7px;height: 7px;-webkit-border-radius: 50%;-khtml-border-radius: 50%;-moz-border-radius: 50%;border-radius: 50%;background: #fff;top: 21px;position: absolute;z-index: 2;-o-transition: opacity 350ms linear; transition: opacity 350ms linear;opacity: 0.2;-webkit-animation-duration: 750ms;-o-animation-duration: 750ms;animation-duration: 750ms;-webkit-animation-name: VKWidgetsLoaderKeyframes;-o-animation-name: VKWidgetsLoaderKeyframes;animation-name: VKWidgetsLoaderKeyframes;-webkit-animation-iteration-count: infinite;-o-animation-iteration-count: infinite;animation-iteration-count: infinite;-webkit-transform: translateZ(0);transform: translateZ(0);}</style><div class=»VKWidgetsLoader» style=»position: fixed;left: 50%;top: 50%;margin: -25px -50px;z-index: 1002;height: 50px;width: 100px;»><div style=»left: 36px;-webkit-animation-delay: 0ms;-o-animation-delay: 0ms;animation-delay: 0ms;»></div><div style=»left: 47px;-webkit-animation-delay: 180ms;-o-animation-delay: 180ms;animation-delay: 180ms;»></div><div style=»left: 58px;-webkit-animation-delay: 360ms;-o-animation-delay: 360ms;animation-delay: 360ms;»></div><span style=»display: block;background-color: #000;-webkit-border-radius: 4px;-khtml-border-radius: 4px;-moz-border-radius: 4px;border-radius: 4px;-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);position: absolute;left: 0;top: 0;bottom: 0; right: 0;z-index: 1;opacity: 0.7;»></span></div>’; document.body.insertBefore(self.loader, document.body.firstChild); } self.loader.style.display = enable ? ‘block’ : ‘none’; }, Box: function(src, sizes, fnc, options) { fnc = fnc || {}; var overflowB = document.body.style.overflow; VK.Util.Loader(true); var is_vk = /(^|.)(vk.com|vkontakte.ru)$/.test(location.hostname); var rpc = new fastXDM.Server(VK.extend(fnc, { onInit: function() { iframe.style.background = ‘transparent’; iframe.style.visibility = ‘visible’; document.body.style.overflow = ‘hidden’; iframe.setAttribute(‘allowfullscreen’, 1); if (is_vk) document.body.className += ‘ layers_shown’; VK.Util.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’; if (is_vk) document.body.className = document.body.className.replace(/bs*?layers_showns*b/, ‘ ‘); document.body.style.overflow = overflowB; }, destroy: function() { try { iframe.src = ‘about: blank;’; } catch (e) {} iframe.parentNode.removeChild(iframe); if (is_vk) document.body.className = document.body.className.replace(/bs*?layers_showns*b/, ‘ ‘); 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’} }); 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){}
Другие темы раздела
WordPress Не отображается логотип в шапке сайта
Здравствуйте! Прошу помочь отобразить логотип в шапке сайта. Расположение определила правильное, но вместо него маленький квадратик.
Файл логотипа logo.png в папку images положила, размер 515*349…

https://www.cyberforum.ru/ wordpress/ thread1538342.html
WordPress Локальный сайт на Денвере с доступом по wifi
Доброго времени суток, дело вот в чем хочу сделать локальный сайт на Денвере что бы был доступ к нему по wifi, хочу что бы пользователи зашедшие на сайт могли заполнять данные на странице выборкой…
WordPress Прикрутить лэндинг на стартовую страницу
Добрый день.
Я конечно немного нубоват во всех этих делах. Вкратце суть излагаю.
Есть сайт на вордпресс, шаблон customizr. И есть идея стартовой страницей сделать посадочную страницу, по сути…

https://www.cyberforum.ru/ wordpress/ thread1538102.html
WordPress Как исправить неверное отображение страницы?
https://www.cyberforum.ru/ wordpress/ thread1537945.html
Здравствуйте, у меня возник небольшой баг с bbpress.

Неверно отображается страница, сгенерированная данным плагином. Страница на которой должны отображатся форумы. Кроме того у меня вызывает…

Восстановление медиабиблиотеки WordPress
В результате различных не продуманных действий в библиотеке косяки.
В частности, были удалены или не создавались различные дополнительные размеры изображений при загрузки в библиотеку.
Есть ли…
WordPress Удаление и создания «с нуля» медиабиблиотеки?
В результате различных не продуманных действий в библиотеке косяки.

Хотелось бы ее удалить и создать и заполнить по новой.
Возникают вопросы:
1.Как правильно удалить медиа библиотеку? Достаточно…
https://www.cyberforum.ru/ wordpress/ thread1537752.html

WordPress Чем делать sitemap?
Нашел следующие плагины:

Dagon Design Sitemap Generator
Google Sitemap by BestWebSoft
Google XML Sitemap
Google XML Sitemaps

Какой плагин нужно использовать?
Или вообще надо как то по…
https://www.cyberforum.ru/ wordpress/ thread1537742.html

Не приходят письма с сайта WordPress
После регистрации пользователя не приходят письма подтверждения регистрации. На стороне хостинга все включено.

Сделал все, как тут написано, чтобы выявить ошибку:…

WordPress Не отображается автор и некорректно отображается дата добавления поста
Всем привет.
Подскажите из-за чего в слайдах отображаются не те даты, что в обычном новостном блоке. То есть, выводятся даты: 01-01-70.

Код слайдера:

<div id=»slider»>

https://www.cyberforum.ru/ wordpress/ thread1537456.html

WordPress Как получить авторов товаров в корзине
https://www.cyberforum.ru/ wordpress/ thread1537251.html
как получить авторов товаров в корзине на стадии заказа?
Посоветуйте плагин для вывода популярных постов WordPress
Нужен плагин для вывода популярных постов с миниатюрами фото и видео на главную.
Спасибо.
WordPress Подскажите самый удобный плагин по affiliate
https://www.cyberforum.ru/ wordpress/ thread1536977.html
Привет. Нужен понятный и простой в использовании плагин по affiliate. Есть у кого опыт с этим делом?
Спасибо.

163 / 164 / 78

Регистрация: 06.09.2015

Сообщений: 632

26.09.2015, 14:09

0

26.09.2015, 14:09. Показов 536. Ответов 1


Ответ

oleg_coma, консоль выдает ошибку Uncaught Error: VK not initialized. Please use VK.init

Вернуться к обсуждению:
При полной загрузке страницы пропадает форма ввода комментариев WordPress



1



Понравилась статья? Поделить с друзьями:
  • Uncaught error unable to initialize bitrix24 js library
  • Uncaught error syntax error unrecognized expression unsupported pseudo
  • Uncaught error syntax error unrecognized expression ajax
  • Uncaught error syntax error unrecognized expression a href
  • Uncaught error reducers may not dispatch actions