%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/catalog.comments/templates/.default/ |
Current File : /home/bitrix/www/bitrix/components/bitrix/catalog.comments/templates/.default/script.js |
;(function(window) { if (!!window.JCCatalogSocnetsComments) { return; } window.JCCatalogSocnetsComments = function(arParams) { var i; this.errorCode = 0; this.params = {}; this.serviceList = { blog: false, facebook: false, vk: false }; this.settings = { blog: { ajaxUrl: '', ajaxParams: {}, contID: 'bx-cat-soc-comments-blg' }, facebook: { contID: 'bx-cat-soc-comments-fb', contWidthID: '', parentContID: 'soc_comments', facebookJSDK: 'facebook-jssdk', facebookPath: '' }, vk: {} }; this.services = { blog: { obBlogCont: null }, facebook: { obFBCont: null, obFBContWidth: null, obFBParentCont: null, obFBjSDK: null, currentWidth: 0 } }; this.activeTabId = ''; this.currentTab = -1; this.tabsContId = ''; this.tabList = []; this.obTabList = []; if (typeof arParams === 'object') { this.params = arParams; if (!!this.params.serviceList && typeof(this.params.serviceList) === 'object') { for (i in this.serviceList) { if (this.serviceList.hasOwnProperty(i) && !!this.params.serviceList[i]) this.serviceList[i] = true; } } if (this.serviceList.blog) this.initParams('blog'); if (this.serviceList.facebook) this.initParams('facebook'); if (typeof(this.params.tabs) === 'object') { this.activeTabId = this.params.tabs.activeTabId; this.tabsContId = this.params.tabs.tabsContId; this.tabList = this.params.tabs.tabList; } } else { this.errorCode = -1; } if (this.errorCode === 0) BX.ready(BX.proxy(this.Init, this)); }; window.JCCatalogSocnetsComments.prototype.initParams = function(id) { var i; if (!!this.params.settings && typeof(this.params.settings) === 'object' && typeof(this.params.settings[id]) === 'object') { for (i in this.settings[id]) { if (this.settings[id].hasOwnProperty(i) && !!this.params.settings[id][i]) this.settings[id][i] = this.params.settings[id][i]; } } }; window.JCCatalogSocnetsComments.prototype.Init = function() { if (!this.tabList || !BX.type.isArray(this.tabList) || this.tabList.length === 0) { this.errorCode = -1; return; } var i, strFullId; for (i = 0; i < this.tabList.length; i++) { strFullId = this.tabsContId + this.tabList[i]; this.obTabList[i] = { id: this.tabList[i], tabId: strFullId, contId: strFullId+'_cont', tab: BX(strFullId), cont: BX(strFullId+'_cont') }; if (!this.obTabList[i].tab || !this.obTabList[i].cont) { this.errorCode = -2; break; } if (this.activeTabId === this.tabList[i]) this.currentTab = i; BX.bind(this.obTabList[i].tab, 'click', BX.proxy(this.onClick, this)); } if (this.serviceList.blog) { this.services.blog.obBlogCont = BX(this.settings.blog.contID); if (!this.services.blog.obBlogCont) { this.serviceList.blog = false; this.errorCode = -16; } } if (this.serviceList.facebook) { this.services.facebook.obFBCont = BX(this.settings.facebook.contID); if (!this.services.facebook.obFBCont) { this.serviceList.facebook = false; this.errorCode = -32; } else { this.services.facebook.obFBContWidth = this.services.facebook.obFBCont.firstChild; } this.services.facebook.obFBParentCont = BX(this.settings.facebook.parentContID); } if (this.errorCode === 0) { this.showActiveTab(); if (this.serviceList.blog) this.loadBlog(); if (this.serviceList.facebook) this.loadFB(); } this.params = {}; }; window.JCCatalogSocnetsComments.prototype.loadBlog = function() { var postData; if (this.errorCode !== 0 || !this.serviceList.blog || this.settings.blog.ajaxUrl.length === 0) { return; } postData = this.settings.blog.ajaxParams; postData.sessid = BX.bitrix_sessid(); BX.ajax({ timeout: 30, method: 'POST', dataType: 'html', url: this.settings.blog.ajaxUrl, data: postData, onsuccess: BX.proxy(this.loadBlogResult, this) }); }; window.JCCatalogSocnetsComments.prototype.loadBlogResult = function(result) { if (BX.type.isNotEmptyString(result)) BX.adjust(this.services.blog.obBlogCont, { html: result }); }; window.JCCatalogSocnetsComments.prototype.loadFB = function() { var width; if (this.services.facebook.obFBParentCont && this.services.facebook.obFBContWidth) { width = parseInt(this.services.facebook.obFBParentCont.offsetWidth, 10); if (!isNaN(width) && width > 20) { BX.adjust(this.services.facebook.obFBContWidth, { attrs: { 'data-width': (width-20) } }); this.services.facebook.currentWidth = width; } if (!this.services.facebook.obFBjSDK) { this.services.facebook.obFBjSDK = true; BX.defer(BX.proxy((function(d, s, id, fbpath) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) { return; } js = d.createElement(s); js.id = id; js.src = fbpath; fjs.parentNode.insertBefore(js, fjs); }(document, "script", this.settings.facebook.facebookJSDK, this.settings.facebook.facebookPath)), this)); } } }; window.JCCatalogSocnetsComments.prototype.getFBParentWidth = function() { var width = 0; if (!!this.services.facebook.obFBParentCont) { width = parseInt(this.services.facebook.obFBParentCont.offsetWidth, 10); if (isNaN(width)) width = 0; } return width; }; window.JCCatalogSocnetsComments.prototype.setFBWidth = function(width) { var obFrame = null, src, newSrc; if ( this.serviceList.facebook && this.services.facebook.currentWidth !== width && width > 20 && !!this.services.facebook.obFBContWidth ) { if (!!this.services.facebook.obFBContWidth.firstChild && !!this.services.facebook.obFBContWidth.firstChild.fitrstChild) { obFrame = this.services.facebook.obFBContWidth.firstChild.fitrstChild; if (!!obFrame) { src = obFrame.getAttribute("src"); newSrc = src.replace(/width=(\d+)/ig, "width="+width); BX.adjust(this.services.facebook.obFBContWidth, { attrs: { 'data-width': (width-20) } }); this.services.facebook.currentWidth = width; BX.style(this.services.facebook.obFBContWidth.firstChild, 'width', width+'px'); BX.adjust(obFrame, { attrs : { src: newSrc }, style: { width: width+'px' } }); } } } }; window.JCCatalogSocnetsComments.prototype.onResize = function() { if (this.serviceList.facebook) this.setFBWidth(this.getFBParentWidth()); }; window.JCCatalogSocnetsComments.prototype.onClick = function() { var target = BX.proxy_context, index = -1, i; for (i = 0; i < this.obTabList.length; i++) { if (target.id === this.obTabList[i].tabId) { index = i; break; } } if (index > -1) { if (index !== this.currentTab) { this.hideActiveTab(); this.currentTab = index; this.showActiveTab(); } } }; window.JCCatalogSocnetsComments.prototype.hideActiveTab = function() { BX.removeClass(this.obTabList[this.currentTab].tab, 'active'); BX.addClass(this.obTabList[this.currentTab].cont, 'tab-off'); BX.addClass(this.obTabList[this.currentTab].cont, 'hidden'); }; window.JCCatalogSocnetsComments.prototype.showActiveTab = function() { BX.onCustomEvent('onAfterBXCatTabsSetActive_'+this.tabsContId,[{activeTab: this.obTabList[this.currentTab].id}]); BX.addClass(this.obTabList[this.currentTab].tab, 'active'); BX.removeClass(this.obTabList[this.currentTab].cont, 'tab-off'); BX.removeClass(this.obTabList[this.currentTab].cont, 'hidden'); }; })(window);