var global = window;(function(){"use strict";var exports = {};function require(){return exports;};(function (factory, context) {
"use strict";
if (typeof exports !== 'undefined') {
factory(global, exports);
} else {
factory(context, context);
}
})(function (global, exports) {
"use strict";
/**
* Определяет возможности UserAgent пользователя.
*
* Содержит следующие свойства:
* * browser - Информация о браузере {@see UserAgentDetector#_getBrowser}
* * flash - Информация о флеш-плеере {@see UserAgentDetector#_getFlash}
* * os - Информация об операционной системе {@see UserAgentDetector#_getOS}
* * device - Информация об устройстве {@see UserAgentDetector#_getDevice}
*
* @param navigator Объект, содержащий информацию об UserAgent {@link https://developer.mozilla.org/en-US/docs/Web/API/Navigator}
* @constructor
*/
function UserAgentDetector(navigator) {
this._navigator = navigator? navigator:(global.navigator?global.navigator:(window?window.navigator:undefined));
this.browser = this._getBrowser();
this.flash = this._getFlash();
this.os = this._getOS();
this.device = this._getDevice();
this.locales = this._getLocales();
this.locale = this.locales ? this.locales[0] : undefined;
}
UserAgentDetector.prototype.constructor = UserAgentDetector;
/**
* Получает информацию о браузере
*
* @returns {Object} Объект вида
* {
* name: 'Opera', //имя браузера
* version: '12.14', //версия браузера, необязательна
* opera: true // флаг браузера, необязателен
* }
*
* Список поддерживаемых браузеров (флагов):
* * opera
* * safari
* * chrome
* * firefox
* * yandexbrowser
* * ie
* * silk
* * seamonkey
* * phantom
*
* Есть также вспомогательный флаги, который позволяют определить движок браузера:
* * webkit
* * gecko
* * msedge
* * msie
*
*
* Если браузер опеределить не удалось, возвращается
* {
* name: 'Other',
* other: true
* }
*
* @private
*/
UserAgentDetector.prototype._getBrowser = function () {
var ua = typeof this._navigator !== 'undefined' ? this._navigator.userAgent.toLowerCase() : '';
var getFirstMatch = function (regex) {
var match = ua.match(regex);
return (match && match.length > 1 && match[1]) || '';
};
var result;
var chromeBook = /CrOS/.test(ua),
edgeVersion = getFirstMatch(/edge\/(\d+(\.\d+)?)/i),
versionIdentifier = getFirstMatch(/version\/(\d+(\.\d+)?)/i),
isWindowsPhone = false;
if (/opera|opr/i.test(ua)) {
result = {
name: 'Opera',
opera: true,
version: versionIdentifier || getFirstMatch(/(?:opera|opr)[\s\/](\d+(\.\d+)?)/i)
};
} else if (/yabrowser/i.test(ua)) {
result = {
name: 'Yandex Browser',
yandexbrowser: true,
version: versionIdentifier || getFirstMatch(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)
};
} else if (/windows phone/i.test(ua)) {
isWindowsPhone = true;
result = {
name: 'Windows Phone IE',
ie: true
};
if (edgeVersion) {
result.msedge = true;
result.version = edgeVersion;
} else {
result.msie = true;
result.version = getFirstMatch(/iemobile\/(\d+(\.\d+)?)/i);
}
} else if (/msie|trident/i.test(ua)) {
result = {
name: 'Internet Explorer',
msie: true,
ie: true,
version: getFirstMatch(/(?:msie |rv:)(\d+(\.\d+)?)/i)
};
if (/trident/i.test(ua)) {
if (result.version === '7.0' && (getFirstMatch(/(?:trident\/)(\d+(\.\d+)?)/i) === '4.0')) {
result.version = '8.0';
}
if (result.version === '7.0' && (getFirstMatch(/(?:trident\/)(\d+(\.\d+)?)/i) === '5.0')) {
result.version = '9.0';
}
}
} else if (/silk/i.test(ua)) {
result = {
name: 'Amazon Silk',
silk: true,
version: getFirstMatch(/silk\/(\d+(\.\d+)?)/i)
};
} else if (chromeBook) {
result = {
name: 'Chrome',
chrome: true,
version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)
};
} else if (/chrome.+? edge/i.test(ua)) {
result = {
name: 'Microsoft Edge',
ie: true,
msedge: true,
version: edgeVersion
};
} else if (/chrome|crios|crmo/i.test(ua)) {
result = {
name: 'Chrome',
chrome: true,
version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)
};
} else if (/seamonkey\//i.test(ua)) {
result = {
name: 'SeaMonkey',
seamonkey: true,
version: getFirstMatch(/seamonkey\/(\d+(\.\d+)?)/i)
};
} else if (/firefox|iceweasel/i.test(ua)) {
result = {
name: 'Firefox',
firefox: true,
version: getFirstMatch(/(?:firefox|iceweasel)[ \/](\d+(\.\d+)?)/i)
};
} else if (/phantom/i.test(ua)) {
result = {
name: 'PhantomJS',
phantom: true,
version: getFirstMatch(/phantomjs\/(\d+(\.\d+)?)/i)
};
} else if (/safari/i.test(ua)) {
result = {
name: 'Safari',
safari: true,
version: versionIdentifier
};
} else {
result = {
other: true
};
}
// устанавливаем флаг движка браузера (webkit || gecko)
if (!isWindowsPhone && !result.msie && !result.msedge && /(apple)?webkit/i.test(ua)) {
result.name = result.name || "Webkit";
result.webkit = true;
if (!result.version && versionIdentifier) {
result.version = versionIdentifier;
}
} else if (!result.opera && /gecko\//i.test(ua)) {
result.name = result.name || "Gecko";
result.gecko = true;
result.version = result.version || getFirstMatch(/gecko\/(\d+(\.\d+)?)/i);
}
if (!result.name) {
result.name = 'Other';
}
return result;
};
/**
* Получает информацию о версии flash player, установленной у User Agent
*
* @returns {Array|null} [Major, Minor, Version] (ie [10.3.1]), если flash player присутствует,
* и null, если определить его наличие невозможно
* @private
*/
UserAgentDetector.prototype._getFlash = function () {
var UNDEF = "undefined",
OBJECT = "object",
SHOCKWAVE_FLASH = "Shockwave Flash",
SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
FLASH_MIME_TYPE = "application/x-shockwave-flash";
var flashPlayerVersion = null;
if (typeof this._navigator.plugins !== UNDEF && typeof this._navigator.plugins[SHOCKWAVE_FLASH] === OBJECT) {
var d = this._navigator.plugins[SHOCKWAVE_FLASH].description;
// navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates
// whether plug-ins are enabled or disabled in Safari 3+
if (d && !(typeof this._navigator.mimeTypes !== UNDEF && this._navigator.mimeTypes[FLASH_MIME_TYPE] && !this._navigator.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) {
var ie = false; // cascaded feature detection for Internet Explorer
d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
flashPlayerVersion = [
parseInt(d.replace(/^(.*)\..*$/, "$1"), 10),
parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10),
/[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0];
}
} else if (typeof global.ActiveXObject !== UNDEF) {
try {
var a = new global.ActiveXObject(SHOCKWAVE_FLASH_AX);
if (a) { // a will return null when ActiveX is disabled
d = a.GetVariable("$version");
if (d) {
ie = true; // cascaded feature detection for Internet Explorer
d = d.split(" ")[1].split(",");
flashPlayerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
}
}
} catch (e) {
}
}
return flashPlayerVersion;
};
/**
* Получает информацию об операционной системе User Agent
*
* @returns {Object} Объект вида
* {
* name: 'iOS', //имя ОС
* version: '8.1.2', //версия ОС
* ios: true // флаг ОС, необязателен
* }
*
* Список поддерживаемых флагов:
* * ios
* * android
* * mac
* * windows
* * blackberry
* * webos
* * bada
* * tizen
* * firefoxos
*
* Если операционную систему опеределить не удалось, возвращается структура
* {
* name: 'Other',
* other: true
* }
* @private
*/
UserAgentDetector.prototype._getOS = function () {
var ua = typeof this._navigator !== 'undefined' ? this._navigator.userAgent.toLowerCase() : '';
var getFirstMatch = function (regex) {
var match = ua.match(regex);
return (match && match.length > 1 && match[1]) || '';
};
var result = {
name: 'Other',
other: true
};
var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase(),
likeAndroid = /like android/i.test(ua),
android = !likeAndroid && /android/i.test(ua),
versionIdentifier = getFirstMatch(/version\/(\d+(\.\d+)?)/i);
if (iosdevice) {
result = {
name: 'iOS',
version: getFirstMatch(/os\s(\d+_*\d*_*\d*)/).split('_').join('.'),
ios: true
};
} else if (android) {
result = {
name: 'Android',
version: getFirstMatch(/android\s(\d+\.*\d*\.*\d*)/),
android: true
};
} else if (/mac os/.test(ua)) {
result = {
name: 'Mac OS',
mac: true
};
} else if (/windows/i.test(ua)) {
result = {
name: 'Windows',
windows: true
};
} else if (/playbook|blackberry|\bbb\d+/i.test(ua) || /rim\stablet/i.test(ua)) {
result = {
name: 'Blackberry',
blackberry: true,
version: versionIdentifier || getFirstMatch(/blackberry[\d]+\/(\d+(\.\d+)?)/i)
};
} else if (/(web|hpw)os/i.test(ua)) {
result = {
name: 'WebOS',
webos: true,
version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)
};
if (/touchpad\//i.test(ua)) {
result.touchpad = true;
}
} else if (/bada/i.test(ua)) {
result = {
name: 'Bada',
bada: true,
version: getFirstMatch(/dolfin\/(\d+(\.\d+)?)/i)
};
} else if (/tizen/i.test(ua)) {
result = {
name: 'Tizen',
tizen: true,
version: getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i) || versionIdentifier
};
} else if (/sailfish/i.test(ua)) {
result = {
name: 'Sailfish',
sailfish: true,
version: getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i)
};
} else if (/firefox|iceweasel/i.test(ua) && /\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)) {
result = {
name: 'Firefox OS',
firefoxos: true
};
}
return result;
};
/**
* Получает информацию об устройстве, на котором запущен User Agent
* @returns {Object} Объект вида
* {
* name: 'ipad',
* ipad: true
* }
*
* Список поддерживаемых устройств:
* * iphone
* * ipad
* * ipod
* * android
* * wphone
* * desktop
*
* Если устройство определить не удалось, возвращается структура
* {
* name: 'other',
* other: true
* }
* @private
*/
UserAgentDetector.prototype._getDevice = function () {
var ua = typeof this._navigator !== 'undefined' ? this._navigator.userAgent.toLowerCase() : '';
var device = {};
var likeAndroid = /like android/i.test(ua),
android = !likeAndroid && /android/i.test(ua),
chromeBook = /cros/.test(ua);
device.name = ua.match(/ipad/) ?
'ipad' :
ua.match(/ipod/) ?
'ipod' :
ua.match(/iphone/) ?
'iphone' :
android ?
'android' :
ua.match(/windows phone/) ?
'wphone' :
ua.match(/mobile/) ?
"mobile" :
ua.match(/mac|win|linux/) || chromeBook ?
'desktop' : 'other';
device[device.name] = true;
return device;
};
/**
* Возвращает локали пользователя в сокращенном виде,
* если вернуть не удалось - возвращает undefined
* @returns {*}
* @private
*/
UserAgentDetector.prototype._getLocales = function () {
if(typeof this._navigator !== 'undefined'){
if (this._navigator.languages && this._navigator.languages.length > 0) {
var languages = [], lang;
for (var i = 0; i < this._navigator.languages.length; i++) {
lang = this._navigator.languages[i];
lang = lang.split("_")[0].split("-")[0];
if(languages.indexOf(lang) === -1) {
languages.push(lang);
}
}
return languages;
}
var language = this._navigator.language || this._navigator.browserLanguage || this._navigator.userLanguage;
if (language) {
var systemLocale = language.split("_")[0].split("-")[0];
return [systemLocale];
}
}
return undefined;
};
exports.UserAgentDetector = UserAgentDetector;
}, this);
;(function (factory, context) {
"use strict";
if (typeof exports !== 'undefined') {
factory(global, exports);
} else {
factory(context, context);
}
})(function (global, exports) {
"use strict";
/**
* Детектор, определяющий, какие публикации возможно рендерить
* @param userAgentInfo
* @param priorities - Array с приоретизированными версиями публикаций, которые поддерживает сервер, например ['html',mobile']
* @constructor
*/
function PublicationDetector(userAgentInfo, priorities) {
this.userAgentInfo = userAgentInfo;
this.priorities = priorities;
}
PublicationDetector.prototype.constructor = PublicationDetector;
/**
* Возвращает массив с доступными версиями публикации
*
* @returns {Array}
*/
PublicationDetector.prototype.getSupportedVersions = function () {
var versions = [];
if (this.userAgentInfo.device.desktop){
var minPlayerVersion = (this.userAgentInfo.os.mac && this.userAgentInfo.browser.safari) ? [19,0] :[10,3];
var fpVersion = this.userAgentInfo.flash;
if (fpVersion && (fpVersion[0] > minPlayerVersion[0] ||
(fpVersion[0] === minPlayerVersion[0] && fpVersion[1] >= minPlayerVersion[1]))){
versions.push('flash');
}
if (this.userAgentInfo.browser.ie)
{
var ieVersion = (this.userAgentInfo.browser.version || '7.0').split('.')[0];
if (ieVersion > 10){
versions.push('html');
}
}
else{
versions.push('html');
}
}
else{
var isIOS = this.userAgentInfo.os.ios,
// Android >= 4.1
isAndroid = this.userAgentInfo.os.android &&
(parseInt(this.userAgentInfo.os.version.split('.')[0], 10) > 4 ||
(parseInt(this.userAgentInfo.os.version.split('.')[0], 10) === 4 &&
parseInt(this.userAgentInfo.os.version.split('.')[1], 10) >= 1));
if (isIOS || isAndroid){
versions.push('mobile');
}
}
return versions;
};
/**
* Возвращает имя главной версии
* @returns {*}
*/
PublicationDetector.prototype.mainVersion = function(){
var versions = this.getSupportedVersions();
//Если заданы приоритеты, возвращает версию в соответствии с приоритетами
if(this.priorities){
for (var p = 0; p < this.priorities.length; p++) {
for(var v = 0; v < versions.length; v++) {
if (versions[v] === this.priorities[p]) {
return this.priorities[p];
}
}
}
} else{
if(versions && versions.length > 0){
return versions[0];//Возвращает поддерживаемую версию
}
}
return null;
};
/**
* Возможен ли рендер какой-либо версии публикации в текущих условиях
* @returns {boolean}
*/
PublicationDetector.prototype.isRenderable = function () {
return this.mainVersion() !== null;
};
exports.PublicationDetector = PublicationDetector;
}, this);
;(function (factory, context) {
"use strict";
if (typeof exports !== 'undefined') {
factory(global, exports);
} else {
factory(context, context);
}
})(function (global, exports) {
"use strict";
var fitScreenSizes = function (origWidth, origHeight, maxSizes) {
var padding = 100,
maxSizes = maxSizes || false;
var screenWidth = global.innerWidth - padding,
screenHeight = global.innerHeight - padding,
screenRatio = screenWidth / screenHeight,
origRatio = origWidth / origHeight,
resultWidth = screenRatio > origRatio ? origWidth * screenHeight / origHeight : screenWidth,
resultHeight = screenRatio > origRatio ? screenHeight : origHeight * screenWidth / origWidth;
if (maxSizes && (resultWidth > origWidth || resultHeight > origHeight)) {
resultWidth = origWidth;
resultHeight = origHeight;
screenWidth = screenWidth + padding;
screenHeight = screenHeight + padding;
padding = 0;
} else {
resultWidth = Math.round(resultWidth);
resultHeight = Math.round(resultHeight);
}
return {
width: resultWidth,
height: resultHeight,
paddingTop: ((screenHeight + padding) - resultHeight) / 2,
paddingLeft: ((screenWidth + padding) - resultWidth) / 2
};
};
var addListener = function (el, event, callback) {
if (window.addEventListener) {
el.addEventListener(event, callback);
} else {
el.attachEvent('on' + event, callback);
}
};
var removeListener = function (el, event, callback) {
if (window.removeEventListener) {
el.removeEventListener(event, callback);
} else {
el.detachEvent('on' + event, callback);
}
};
function FBLightbox(rootEl, onShow) {
var that = this;
addListener(rootEl, 'click', function (event) {
var shouldOpen = true;
if (onShow){
shouldOpen = shouldOpen && onShow(event);
}
if (shouldOpen) {
event.preventDefault();
that.render.call(that, event.currentTarget);
}
});
}
FBLightbox.prototype.render = function (rootEl) {
this.blackout = document.createElement('div');
this.lightbox = document.createElement('div');
this.closeButton = document.createElement('img');
this.lightbox.style.position = "relative";
this.lightbox.style.display = "block";
this.lightbox.style.margin = "50px auto";
this.lightbox.style.minWidth = "200px";
this.lightbox.style.minHeight = "150px";
this.lightbox.style.maxWidth = "90%";
this.lightbox.style.backgroundColor = "#fff";
this.lightbox.style.padding = "10px";
this.lightbox.style.borderRadius = "5px";
this.closeButton.style.width = "30px;";
this.closeButton.style.height = "30px";
this.closeButton.style.top = "-15px";
this.closeButton.style.right = "-15px";
this.closeButton.style.position = "absolute";
this.closeButton.style.cursor = "pointer";
this.closeButton.setAttribute('src', this._getCloseIcon());
this.blackout.style.width = "100%";
this.blackout.style.height = "100%";
this.blackout.style.backgroundColor = "rgba(0, 0, 0, 0.7)";
this.blackout.style.position = "fixed";
this.blackout.style.top = "0px";
this.blackout.style.left = "0px";
this.blackout.style.zIndex = "12147483646";
this.lightbox.appendChild(this.closeButton);
this.blackout.appendChild(this.lightbox);
var that = this;
if (rootEl.getAttribute('data-img')) {
var img = document.createElement('img');
this.sizing(100, 100, true);
img.onload = function () {
that.width = img.width;
that.height = img.height;
that.sizing(img.width, img.height, true);
img.style.width = '100%';
img.style.height = '100%';
that.lightbox.appendChild(img);
};
img.src = rootEl.getAttribute('data-img');
addListener(window, 'resize', function () {
that.sizing.call(that, that.width, that.height, true);
});
} else if (rootEl.getAttribute('href')) {
var frame = document.createElement('iframe');
frame.src = rootEl.getAttribute('href');
frame.width = '100%';
frame.height = '100%';
frame.setAttribute('type', 'text/html');
frame.setAttribute('scrolling', 'no');
frame.setAttribute('frameborder', '0');
frame.setAttribute('allowfullscreen', 'allowfullscreen');
this.width = rootEl.getAttribute('data-width') || 600;
this.height = rootEl.getAttribute('data-height') || 400;
this.sizing();
this.lightbox.appendChild(frame);
addListener(window, 'resize', function () {
that.sizing.call(that);
});
}
this.bindClose();
document.body.appendChild(this.blackout);
};
FBLightbox.prototype._getCloseIcon = function () {
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAAEAUlEQVR42oWVbWwUZRDH/+3e9l5h2yu9tsddX+hRWnupR2uFQK8hMWnrGcRCCKGKcJQ0aKgmJh4mJFWspmArYgiQGtvqN0MipOIXPyARRSIagYgJIRIhsaZRIIF723vrOHu7163cGWf2w+7M/O55ZuZ55vCIFKEYxRsM7WJLicc4Zj1uaylpKWkXNxgUO3t1yQMFiDCtWrLX8UHdqGeo4cgTE2s63EH3W65gRYUNJvYKKCqMGmCssHU7PvR+Hfj7cPISaZK6cv+jcxs317rs/ANGGPLxYjaa60q31kx2hj/PYXOZ2xnS5MFnq+pXO8skmMEpPLqqxWV/wTPzbOY2UXJ+ItkdQ1jVjuj7yfg8W6+e295eI5XBoq6uo+al9h7PqT5KEH2Vro2omK5N0Z/SROx7vqmOcbOOCzBCaq1/rzd9h2g6KYRRQIXwuwkFP9nndENiQmCcHxG2Zc6XO+9/qayqo/l6IkkU/h6PoQo2porBj2mpvav5kyBRNOPSNtwWXb+QsyMyIFuybyXh2RTRN2+6VsIOEwQFtlqcWzt//5ToWFIN90aJ5WBCeV8RneViTWieQZno7nm0oho2GMC8JK0I9MauEq3VVquNxEjFVyooy1hC9ZRHlLqVdqEepSgB8+WV3k39RA8zenbPxFT8YRY9ndIrcY3Ltn9oSROWwQSINkdLx55XiG6mdVjBZcZ0NKdfMHzysPVxVMLMsKXauy4YIvo1/e/O3p1X4bcTi+1nGD5+FG1wwsownI51/iGie+nF6FwWTWu5654f4kSvj5ifxHINFtfUDyT/Iso1SorMablu1HLfJ+eOygNuVutL4gJcLXa07Lx1gehVLWRtTM9VLd2plOrp5o+5X7Ad7bltO0Rf47YjH7M5ZQnn+rlPFhYuxsFEbk8XokRnz2IztIJxq9BsDLhCs1f0fhbWXZxv+M/y/ehFs9oqARLqDX77wJ4JYtkV/y90fSyV4UqfQRD+3CHh44lq+IS+yjdOZMfAcMHVd8RlRi9eRgib4NOOJ8Mm2OFBl7Cz7J1jMwp+Q94W17LXynSJC8XozxjBi+iCR70Y2pVEFbzoEQalQ3tn/rhJLHLmWmJSnpR/lLk5LPdmx8/jEAbRA69+JbVhADdWIyAMWkYwdfS7327QIrlza/qyOI0RRgMcpQ+D3BhCGWrgQw9vK2Qex5R0+qlvD1w/cD1wcfkMpjCOEHt64OMofQzpA5CNbnjhx3PYjdcwbBg1jGHMMFo8zF+72epnrxvaAMwbvZA4mwb4OOxpbEE/drD2Ywt/+dnawF599Ob9XxhhRRmH1KIRXg5vY/XxWyNbqthj1XPNw1mVHYgcYoYFVk0tMLNFVFbMxvyPFBXQAvIP9TCL+Lre4wwAAAAASUVORK5CYII=";
};
FBLightbox.prototype.sizing = function (width, height, maxSizes) {
width = width || this.width;
height = height || this.height;
maxSizes = maxSizes || false;
var rect = fitScreenSizes(width, height, maxSizes);
this.lightbox.style.width = rect.width + 'px';
this.lightbox.style.height = rect.height + 'px';
this.lightbox.style.top = rect.paddingTop + 'px';
this.lightbox.style.left = rect.paddingLeft + 'px';
this.lightbox.style.margin = '0';
};
FBLightbox.prototype.bindClose = function () {
var that = this;
var closeFromESC = function (event) {
if (event.keyCode === 27) {
event.stopPropagation();
that.blackout.parentNode.removeChild(that.blackout);
}
};
var close = function (event) {
event.stopPropagation();
that.blackout.parentNode.removeChild(that.blackout);
removeListener(document, 'keyup', closeFromESC);
};
addListener(this.closeButton, 'click', close);
addListener(this.blackout, 'click', close);
addListener(document, 'keyup', closeFromESC);
};
exports.FBLightbox = FBLightbox;
}, this);
/**
* embed.js нужен для вставки fb публикации в контент страницы
* Пример использования:
* Artbookmania-62 - текст внутри ссылки, если скрипт не отработал то публикация остается ввиде ссылки, а так же
*
*/
;(function (factory, context) {
"use strict";
if (typeof exports !== 'undefined') {
var UserAgentDetector = require('../ua-detector').UserAgentDetector,
PublicationDetector = require('../publication-detector').PublicationDetector,
FBLightbox = require('./lightbox').FBLightbox;
factory(global, exports, UserAgentDetector, PublicationDetector, FBLightbox);
} else {
factory(context, context, context.UserAgentDetector, context.PublicationDetector, context.FBLightbox);
}
})(function (global, exports, UserAgentDetector, PublicationDetector, FBLightbox) {
"use strict";
var PRODUCT_CODE = 'fbo';
if (typeof global[PRODUCT_CODE + 'Embed'] !== 'undefined') {
global[PRODUCT_CODE + 'Embed'].parseAllEmbeds();
return;
}
function FBEmbed() {
this.THUMBNAIL_URL = 'https://online.flippingbook.com/Thumbnail.aspx?url=';
this.API_URL = 'https://b.fbonline.mediaparts.net/FrontendAPI.svc/GetPublicationForDisplay';
this.elementsArray = [];
this.userAgentDetector = new UserAgentDetector();
this.publicationDetector = new PublicationDetector(this.userAgentDetector,['html']);
this.parseAllEmbeds();
}
FBEmbed.prototype.parseAllEmbeds = function () {
var elements = this._getElementsByClass(PRODUCT_CODE + '-embed');
for (var i = 0; i < elements.length; i++) {
var currentElement = elements[i];
if (this._indexOf(this.elementsArray, currentElement) < 0) {
this._parseEmbed(currentElement);
}
}
};
FBEmbed.prototype._insertAfter = function (newElement,targetElement) {
//target is what you want it to go after. Look for this elements parent.
var parent = targetElement.parentNode;
//if the parents lastChild is the targetElement...
if(parent.lastChild === targetElement) {
//add the newElement after the target element.
parent.appendChild(newElement);
} else {
// else the target has siblings, insert the new element between the target and it's next sibling.
parent.insertBefore(newElement, targetElement.nextSibling);
}
};
FBEmbed.prototype._parseEmbed = function (element) {
var that = this;
this.elementsArray.push(element);
var embedPublicationUrl = element.href;
var newDiv = global.document.createElement('div');
for (var i = 0, l=element.attributes.length; i < l; i++){
var a = element.attributes[i];
var filter = 'data-';
if (a.name.slice(0, filter.length)===filter){
newDiv.setAttribute(a.name, a.value);
}
}
newDiv.style.display = "inline-block";
newDiv.style.maxWidth = "100%";
this._insertAfter(newDiv,element);
element.style.display = "none";
element = newDiv;
var linkElement = global.document.createElement("a");
linkElement.setAttribute("href", embedPublicationUrl);
linkElement.setAttribute("title", "View Publication");
linkElement.setAttribute("target", "_blank");
//RESET CSS
linkElement.style.margin = "0";
linkElement.style.padding = "0";
linkElement.style.border = "0";
linkElement.style.fontSize = "100%;";
linkElement.style.font = "inherit";
linkElement.style.verticalAlign = "baseline";
linkElement.style.boxShadow = "none";
element.appendChild(linkElement);
/*
Div-bg
*/
var divBg = global.document.createElement('div');
divBg.style.width = "100%";
divBg.style.height = "100%";
divBg.style.position = "relative";
linkElement.appendChild(divBg);
var image = global.document.createElement('img');
image.style.maxWidth = "95%";
image.style.maxHeight = "95%";
image.style.height = "auto";
image.style.width = "auto";
image.style.position = "absolute";
image.style.top = "0px";
image.style.bottom = "0px";
image.style.left = "0px";
image.style.right = "0px";
image.style.margin = "auto";
image.style.boxShadow = "0px 2px 2px 0px rgba(55, 50, 50, 0.72)";
image.style.borderWidth = "0px";
if(this.THUMBNAIL_URL.length > 0){
image.src = this._getPublicationThumbLink(embedPublicationUrl);
} else {
image.src = this._getSelfhostPublicationThumbLink(embedPublicationUrl);
}
divBg.appendChild(image);
var icon = global.document.createElement('div');
icon.style.width = "50px";
icon.style.height = "50px";
icon.style.position = "absolute";
icon.style.top = "50%";
icon.style.left = "50%";
icon.style.margin = "-25px 0px 0px -25px";
icon.style.backgroundImage = "url('" + this._getPublicationThumbIcon() + "')";
icon.style.backgroundPosition = "center 0px";
var onMouseOver = function () {
icon.style.backgroundPosition = "center 50px";
};
this._addEvent(image, "mouseenter", onMouseOver);
this._addEvent(icon, "mouseenter", onMouseOver);
var onMouseOut = function () {
icon.style.backgroundPosition = "center 0px";
};
this._addEvent(image, "mouseleave", onMouseOut);
this._addEvent(icon, "mouseleave", onMouseOut);
divBg.appendChild(icon);
var overiddenWidth = element.getAttribute('data-' + PRODUCT_CODE + '-width');
var overiddenHeight = element.getAttribute('data-' + PRODUCT_CODE + '-height');
if (!overiddenWidth){
overiddenWidth = this._getEmbedDefaultWidth() + 'px';
}
if (!overiddenHeight){
overiddenHeight = this._getEmbedDefaultHeight() + 'px';
}
if (!element.style.width){
element.style.width = overiddenWidth;
}
if (!element.style.height){
element.style.height = overiddenHeight;
}
new FBLightbox(linkElement, function () {
var isEnoughSize = ((that._getWindowWidth() * 0.8) > that._getPayloadMinWidth()) &&
(that._getWindowHeight() * 0.8 > that._getPayloadMinHeight());
var showLightbox = element.getAttribute('data-' + PRODUCT_CODE + '-lightbox') !== 'no';
return isEnoughSize && (that.userAgentDetector.device.desktop === true) && showLightbox;
});
/*
Embed Container
*/
var payloadContainer = global.document.createElement("div");
element.appendChild(payloadContainer);
this._resizeEmbed(element, payloadContainer, linkElement, embedPublicationUrl);
this._addEvent(global, 'resize', function () {
that._resizeEmbed(element, payloadContainer, linkElement, embedPublicationUrl);
});
//применяется к последнему эмбеду на странице
this._doResize = function(){
that._resizeEmbed(element, payloadContainer, linkElement, embedPublicationUrl);
};
var analytics = element.getAttribute('data-' + PRODUCT_CODE + '-analytics');
if (this.API_URL.length > 0 && analytics !== 'no'){
this._sendAnalytics(this.API_URL, embedPublicationUrl);
}
};
FBEmbed.prototype._getPublicationThumbLink = function (publicationUrl) {
return this.THUMBNAIL_URL + encodeURIComponent(publicationUrl);
};
FBEmbed.prototype._getSelfhostPublicationThumbLink = function (publicationUrl) {
var publicationDir = publicationUrl.split('#')[0].split('?')[0].split('index.html')[0];
return publicationDir + '/files/assets/cover300.jpg';
};
FBEmbed.prototype._sendAnalytics = function(analyticsUrl, url){
this._ajax(analyticsUrl, function(text, response){
if (response.status !== 200) {
console.log(response);
}
},'{"RecordOnly":true,"Url":"' + url + '","EmbedDomain":"' + global.location.hostname + '","EmbedMethod":""}');
};
FBEmbed.prototype._ajax = function (url, callback, data) {
var xmlhttp;
try {
xmlhttp = new window.ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new window.ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest !== 'undefined') {
xmlhttp = new XMLHttpRequest();
}
try {
xmlhttp.open(data ? 'POST' : 'GET', url, 1);
xmlhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xmlhttp.setRequestHeader('Content-type', 'application/json');
xmlhttp.onreadystatechange = function () {
if(xmlhttp.readyState > 3 && callback){
callback(xmlhttp.responseText, xmlhttp);
}
};
xmlhttp.send(data);
} catch (e) {
if(window.console){
console.error(e);
}
}
};
FBEmbed.prototype._runPayload = function (payloadContainer, publicationUrl) {
if (this._shouldShowPayload() && !payloadContainer.hasChildNodes()) {
var iframe = global.document.createElement("iframe");
iframe.style.width = "100%";
iframe.style.height = "100%";
iframe.setAttribute('type', 'text/html');
iframe.setAttribute('scrolling', 'no');
iframe.setAttribute('frameborder', '0');
iframe.setAttribute('allowfullscreen', 'allowfullscreen');
iframe.setAttribute('src', publicationUrl);
payloadContainer.appendChild(iframe);
}
};
FBEmbed.prototype._removePayload = function (payloadContainer) {
var fc = payloadContainer.firstChild;
while (fc) {
payloadContainer.removeChild(fc);
fc = payloadContainer.firstChild;
}
};
FBEmbed.prototype._resizeEmbed = function (element, payloadContainer, linkElement, publicationUrl) {
var that = this,
rect = this._getBoundingClientRect(element);
if(rect.width === 0 || rect.height === 0){
setTimeout(function(){
that._resizeEmbed(element, payloadContainer, linkElement, publicationUrl);
}, 10);
return;
}
//when resize
if (rect.width >= this._getPayloadMinWidth() && rect.height >= this._getPayloadMinHeight() && this._shouldShowPayload()) {
this._runPayload(payloadContainer, publicationUrl);
payloadContainer.style.display = "inline";
linkElement.style.display = "none";
}
else {
this._removePayload(payloadContainer);
payloadContainer.style.display = "none";
linkElement.style.display = "block";
}
payloadContainer.style.width = linkElement.style.width = rect.width + 'px';
payloadContainer.style.height = linkElement.style.height = rect.height + 'px';
};
FBEmbed.prototype._getPayloadMinWidth = function () {
return 400;
};
FBEmbed.prototype._getPayloadMinHeight = function () {
return 200;
};
FBEmbed.prototype._getEmbedDefaultWidth = function () {
return 250;
};
FBEmbed.prototype._getEmbedDefaultHeight = function () {
return 150;
};
FBEmbed.prototype._shouldShowPayload = function () {
return this.publicationDetector.isRenderable();
};
FBEmbed.prototype._getPublicationThumbIcon = function () {
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAABkCAYAAADE6GNbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowRUFBRTJERDBGMjA2ODExODIyQUQ4OTVFODQyMkE1QyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowRTEzQkM2QTg3QUIxMUU1OUE1NkQzMTBBNzlBOEFDQyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRTEzQkM2OTg3QUIxMUU1OUE1NkQzMTBBNzlBOEFDQyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MEIyNzM2NzAxNzIwNjgxMTgyMkFEODQ2QkQ4Q0QwREMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MEVBQUUyREQwRjIwNjgxMTgyMkFEODk1RTg0MjJBNUMiLz4gPC9yZGY6RGVzY3Jp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";
};
FBEmbed.prototype._getWindowWidth = function () {
return global.innerWidth || global.document.documentElement.clientWidth || global.document.body.clientWidth;
};
FBEmbed.prototype._getWindowHeight = function () {
return global.innerHeight || global.document.documentElement.clientHeight || global.document.body.clientHeight;
};
FBEmbed.prototype._getBoundingClientRect = function (el) {
var rect = el.getBoundingClientRect();
return {
width: rect.width || rect.right - rect.left,
height: rect.height || rect.bottom - rect.top,
left: rect.left,
right: rect.right,
top: rect.top,
bottom: rect.bottom
};
};
FBEmbed.prototype._getElementsByClass = function (className, parent) {
if (typeof parent === 'undefined') {
parent = global.document;
}
if (typeof parent.getElementsByClassName === 'function') {
return parent.getElementsByClassName(className);
} else {
var resultArray = [],
arrayOfElements = parent.getElementsByTagName('*');
for (var i in arrayOfElements) {
if (Object.prototype.hasOwnProperty.call(arrayOfElements, i) && typeof arrayOfElements[i] === 'object') {
var currClassName = Object.prototype.hasOwnProperty.call(arrayOfElements[i], 'className') ? arrayOfElements[i].className : arrayOfElements[i].getAttribute('className'),
arrayOfClasses = currClassName === null ? [] : currClassName.split(' ');
if (this._indexOf(arrayOfClasses, className) !== -1) {
resultArray.push(arrayOfElements[i]);
}
}
}
return resultArray;
}
};
FBEmbed.prototype._indexOf = function (array, item) {
if (array === null){
return -1;
}
var l= array.length;
for (var i = 0 ; i < l; i++){
if (i in array && array[i] === item){
return i;
}
}
return -1;
};
FBEmbed.prototype._addEvent = function (el, eveName, callback) {
if (window.addEventListener) {
el.addEventListener(eveName, callback, true);
} else {
el.attachEvent('on' + eveName, callback);
}
};
global[PRODUCT_CODE + 'Embed'] = new FBEmbed();
}, this);})();