%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.218.21.96
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/js/main/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/js/main/rating_like.js
if (!BXRL)
{
	var BXRL = {};
	var BXRLW = null;
	var lastVoteRepo = {};
	var lastReactionRepo = {};
	var BXRLParams = {
		pathToUserProfile: null
	};
}

RatingLike = function(likeId, entityTypeId, entityId, available, userId, localize, template, pathToUserProfile, pathToAjax)
{
	var key = entityTypeId+'_'+entityId;

	this.enabled = true;
	this.likeId = likeId;
	this.entityTypeId = entityTypeId;
	this.entityId = entityId;
	this.available = (available == 'Y');
	this.userId = userId;
	this.localize = localize;
	this.template = template;
	this.pathToUserProfile = pathToUserProfile;
	this.pathToAjax = (
		BX.type.isNotEmptyString(pathToAjax)
			? pathToAjax
			: '/bitrix/components/bitrix/rating.vote/vote.ajax.php'
	);

	this.box = BX('bx-ilike-button-'+likeId);
	if (this.box === null)
	{
		this.enabled = false;
		return false;
	}

	this.button = BX.findChild(this.box, { className: 'bx-ilike-left-wrap' }, true, false);
	this.buttonText = BX.findChild(this.button, { className: 'bx-ilike-text' }, true, false);
	this.count = BX.findChild(this.box,  { tagName: 'span', className: 'bx-ilike-right-wrap' }, true, false);
	if (!this.count)
	{
		this.count = BX('bx-ilike-count-' + likeId);
	}
	this.countText = BX.findChild(this.count, { className: 'bx-ilike-right' }, true, false);
	this.topPanelContainer = BX('feed-post-emoji-top-panel-container-' + likeId);
	this.topPanel = BX('feed-post-emoji-top-panel-' + likeId);
	this.topUsersText = BX('bx-ilike-top-users-' + likeId);
	this.topUsersDataNode = BX('bx-ilike-top-users-data-' + likeId);
	this.userReactionNode = BX('bx-ilike-user-reaction-' + likeId);
	this.reactionsNode = BX('feed-post-emoji-icons-' + likeId);
	this.popup = null;
	this.popupId = null;
	this.popupTimeoutIdShow = null;
	this.popupTimeoutIdList = null;
	this.popupContent = BX.findChild(BX('bx-ilike-popup-cont-' + likeId), {tagName:'span', className:'bx-ilike-popup'}, true, false);
	this.popupContentPage = 1;
	this.popupTimeout = false;
	this.likeTimeout = false;
	this.mouseOverHandler = null;
	this.version = (BXRL.render && this.topPanel ? 2 : 1);
	this.mouseInShowPopupNode = {};
	this.listXHR = null;

	if (typeof lastVoteRepo[key] != 'undefined')
	{
		this.lastVote = lastVoteRepo[key];
		var ratingNode = (template == 'standart' ? this.button: this.count);
		if (this.lastVote == 'plus')
		{
			BX.addClass(ratingNode, 'bx-you-like');
		}
		else
		{
			BX.removeClass(ratingNode, 'bx-you-like');
		}
	}
	else
	{
		this.lastVote = BX.hasClass(template == 'standart'? this.button: this.count, 'bx-you-like')? 'plus': 'cancel';
		lastVoteRepo[key] = this.lastVote;
	}

	if (typeof lastReactionRepo[key] != 'undefined')
	{
		this.lastReaction = lastReactionRepo[key];
		this.count.setAttribute('data-myreaction', this.lastReaction);
	}
	else
	{
		var lastReaction = this.count.getAttribute('data-myreaction');
		this.lastReaction = (BX.type.isNotEmptyString(lastReaction) ? lastReaction : 'like');
		lastReactionRepo[key] = this.lastReaction;
	}

	if (
		this.topPanelContainer
		&& typeof BXRL.manager != 'undefined'
	)
	{
		BXRL.manager.addEntity(key, this);
	}
};

RatingLike.Draw = function(likeId, params)
{
	var i = likeId;

	var element = BXRL[i];
	element.countText.innerHTML = parseInt(params.TOTAL_POSITIVE_VOTES);

	if (
		typeof params.TYPE != 'undefined'
		&& typeof params.USER_ID != 'undefined'
		&& parseInt(params.USER_ID) > 0
		&& typeof params.USER_DATA != 'undefined'
		&& typeof params.USER_DATA.WEIGHT != 'undefined'
	)
	{
		var userWeight = parseFloat(params.USER_DATA.WEIGHT);

		var usersData = (
			BXRL[i].topUsersDataNode
				? JSON.parse(BXRL[i].topUsersDataNode.getAttribute('data-users'))
				: false
		);

		if (
			params.TYPE != 'CHANGE'
			&& BX.type.isPlainObject(usersData)
		)
		{
			usersData.TOP = Object.values(usersData.TOP);
			var recalcNeeded = (usersData.TOP.length < 2);

			for(var k in usersData.TOP)
			{
				if (recalcNeeded)
				{
					break;
				}

				if (!usersData.TOP.hasOwnProperty(k))
				{
					continue;
				}

				if (
					(
						params.TYPE == 'ADD'
						&& userWeight > usersData.TOP[k].WEIGHT
					)
					|| (
						params.TYPE == 'CANCEL'
						&& params.USER_ID == usersData.TOP[k].ID
					)
				)
				{
					recalcNeeded = true;
				}
			}

			if (recalcNeeded)
			{
				if (
					params.TYPE == 'ADD'
					&& params.USER_ID != BX.message('USER_ID')
				)
				{
					if (!usersData.TOP.find(function(a) {
						return a.ID == params.USER_ID
					}))
					{
						usersData.TOP.push({
							ID: parseInt(params.USER_ID),
							NAME_FORMATTED: params.USER_DATA.NAME_FORMATTED,
							WEIGHT: parseFloat(params.USER_DATA.WEIGHT)
						});
					}
				}
				else if (params.TYPE == 'CANCEL')
				{
					usersData.TOP = usersData.TOP.filter(function(a) {
						return a.ID != params.USER_ID
					});
				}

				usersData.TOP.sort(function(a, b) {
					if (a.WEIGHT == b.WEIGHT) { return 0; } return (a.WEIGHT > b.WEIGHT) ? -1 : 1;
				});

				if (
					usersData.TOP.length > 2
					&& params.TYPE == 'ADD'
				)
				{
					usersData.TOP.pop();
					usersData.MORE++;
				}
			}
			else
			{
				if (params.TYPE == 'ADD')
				{
					usersData.MORE = (
						typeof usersData.MORE != 'undefined'
							? parseInt(usersData.MORE) + 1
							: 1
					);
				}
				else if (params.TYPE == 'CANCEL')
				{
					usersData.MORE = (
						typeof usersData.MORE != 'undefined'
						&& parseInt(usersData.MORE) > 0
							? parseInt(usersData.MORE) - 1
							: 0
					);
				}
			}

			BXRL[i].topUsersDataNode.setAttribute('data-users', JSON.stringify(usersData));

			if (BXRL[i].topUsersText)
			{
				BXRL[i].topUsersText.innerHTML = BXRL.render.getTopUsersText({
					you: (
						params.USER_ID == BX.message('USER_ID')
							? params.TYPE != 'CANCEL'
							: BX.hasClass(BXRL[i].count, 'bx-you-like')
					),
					top: usersData.TOP,
					more: usersData.MORE
				});
			}
		}

		if (
			BX.type.isNotEmptyString(params.REACTION)
			&& BX.type.isNotEmptyString(params.REACTION_OLD)
			&& params.TYPE == 'CHANGE'
		)
		{
			BXRL.render.setReaction({
				likeId: i,
				rating: BXRL[i],
				action: 'change',
				userReaction: params.REACTION,
				userReactionOld: params.REACTION_OLD,
				totalCount: params.TOTAL_POSITIVE_VOTES,
				userId: params.USER_ID
			});
		}
		else if (
			BX.type.isNotEmptyString(params.REACTION)
			&& BX.util.in_array(params.TYPE, ['ADD', 'CANCEL'])
		)
		{
			BXRL.render.setReaction({
				likeId: i,
				rating: BXRL[i],
				userReaction: params.REACTION,
				action: (params.TYPE == 'ADD' ? 'add' : 'cancel'),
				totalCount: params.TOTAL_POSITIVE_VOTES,
				userId: params.USER_ID
			});
		}
	}

	if (BXRL[i].topPanel)
	{
		BXRL[i].topPanel.setAttribute('data-popup', 'N');
	}

	if (!BXRL[i].userReactionNode)
	{
		element.count.insertBefore(
			BX.create("span", { props : { className : "bx-ilike-plus-one" }, style: {width: (element.countText.clientWidth-8)+'px', height: (element.countText.clientHeight-8)+'px'}, html: (params.TYPE == 'ADD'? '+1': '-1')})
			, element.count.firstChild);
	}

	if (element.popup)
	{
		element.popup.close();
		element.popupContentPage = 1;
	}
};

RatingLike.LiveUpdate = function(params)
{
	if (params.USER_ID == BX.message('USER_ID'))
	{
		return false;
	}

	for(var i in BXRL)
	{
		if (!BXRL.hasOwnProperty(i))
		{
			continue;
		}

		if (
			BXRL[i].entityTypeId == params.ENTITY_TYPE_ID
			&& BXRL[i].entityId == params.ENTITY_ID
		)
		{
			RatingLike.Draw(i, params);
		}
	}

	if (typeof BXRL.manager != 'undefined')
	{
		BXRL.manager.live(params);
	}
};

RatingLike.Set = function(likeId, entityTypeId, entityId, available, userId, localize, template, pathToUserProfile, pathToAjax, mobile)
{
	mobile = !!mobile;

	if (template === undefined)
		template = 'standart';

	if (BXRLParams.pathToUserProfile)
	{
		pathToUserProfile = BXRLParams.pathToUserProfile;
	}

	if (!BXRL[likeId] || BXRL[likeId].tryToSet <= 5)
	{
		var tryToSend = BXRL[likeId] && BXRL[likeId].tryToSet? BXRL[likeId].tryToSet: 1;
		BXRL[likeId] = new RatingLike(likeId, entityTypeId, entityId, available, userId, localize, template, pathToUserProfile, pathToAjax);
		if (BXRL[likeId].enabled)
		{
			RatingLike.Init(likeId, {
				mobile: mobile
			});
		}
		else
		{
			setTimeout(function(){
				BXRL[likeId].tryToSet = tryToSend+1;
				RatingLike.Set(likeId, entityTypeId, entityId, available, userId, localize, template, pathToUserProfile, pathToAjax, mobile);
			}, 500);
		}
	}
};

RatingLike.ClickVote = function(likeId, userReaction, forceAdd)
{
	var
		cont = null,
		likeNode = null,
		likeThumbNode = null;

	if (typeof userReaction == 'undefined')
	{
		userReaction = 'like';
	}

	if (
		BXRL[likeId].version == 2
		&& BXRL[likeId].userReactionNode
	)
	{
		BXRL.render.hideReactionsPopup({
			likeId: likeId
		});
		BXRL.render.blockReactionsPopup();
		BX.unbind(document, 'mousemove', BXRL.render.reactionsPopupMouseOutHandler);
	}

	clearTimeout(BXRL[likeId].likeTimeout);

	var active = (
		BX.hasClass(
			(BXRL[likeId].template == 'standart' ? this : BXRL[likeId].count),
			'bx-you-like'
		)
	);

	forceAdd = !!forceAdd;
	var
		change = false,
		userReactionOld = false;

	if (active && !forceAdd)
	{
		userReaction = (
			BXRL[likeId].version == 2
				? BXRL.render.getUserReaction({
					userReactionNode: BXRL[likeId].userReactionNode
				})
				: false
		);

		BXRL[likeId].buttonText.innerHTML = BXRL[likeId].localize['LIKE_N'];
		BXRL[likeId].countText.innerHTML = parseInt(BXRL[likeId].countText.innerHTML)-1;
		BX.removeClass(BXRL[likeId].template == 'standart'? this: BXRL[likeId].count, 'bx-you-like');
		BX.removeClass(BXRL[likeId].button, 'bx-you-like-button');
		if (userReaction)
		{
			BX.removeClass(BXRL[likeId].button, 'bx-you-like-button-' + userReaction);
		}

		BXRL[likeId].likeTimeout = setTimeout(function() {
			if (BXRL[likeId].lastVote != 'cancel')
			{
				RatingLike.Vote(likeId, 'cancel', userReaction);
			}
		}, 1000);
	}
	else if (active && forceAdd)
	{
		change = true;
		userReactionOld = (
			BXRL[likeId].version == 2
				? BXRL.render.getUserReaction({
					userReactionNode: BXRL[likeId].userReactionNode
				})
				: false
		);

		if (userReaction != userReactionOld)
		{
			if (userReactionOld)
			{
				BX.removeClass(BXRL[likeId].button, 'bx-you-like-button-' + userReactionOld);
			}
			BX.addClass(BXRL[likeId].button, 'bx-you-like-button-' + userReaction);

			BXRL[likeId].likeTimeout = setTimeout(function(){
				RatingLike.Vote(likeId, 'change', userReaction, userReactionOld);
			}, 1000);
		}
	}
	else if (!active)
	{
		BXRL[likeId].buttonText.innerHTML = BXRL[likeId].localize['LIKE_Y'];
		BXRL[likeId].countText.innerHTML = parseInt(BXRL[likeId].countText.innerHTML) + 1;
		BX.addClass(BXRL[likeId].template == 'standart'? this: BXRL[likeId].count, 'bx-you-like');

		BX.addClass(BXRL[likeId].button, 'bx-you-like-button');
		BX.addClass(BXRL[likeId].button, 'bx-you-like-button-' + userReaction);

		BXRL[likeId].likeTimeout = setTimeout(function(){
			if (BXRL[likeId].lastVote != 'plus')
			{
				RatingLike.Vote(likeId, 'plus', userReaction);
			}
			else if (userReaction != BXRL[likeId].lastReaction) // http://jabber.bx/view.php?id=99339
			{
				RatingLike.Vote(likeId, 'change', userReaction, BXRL[likeId].lastReaction);
			}
		}, 1000);
	}

	if (BXRL[likeId].version == 2)
	{
		if (change)
		{
			BXRL.render.setReaction({
				likeId: likeId,
				rating: BXRL[likeId],
				action: 'change',
				userReaction: userReaction,
				userReactionOld: userReactionOld,
				totalCount: parseInt(BXRL[likeId].countText.innerHTML)
			});
		}
		else
		{
			BXRL.render.setReaction({
				likeId: likeId,
				rating: BXRL[likeId],
				action: (active ? 'cancel' : 'add'),
				userReaction: userReaction,
				totalCount: parseInt(BXRL[likeId].countText.innerHTML)
			});
		}
	}

	if (
		!change
		&& BXRL[likeId].version == 2
	)
	{
		var dataUsers = (
			BXRL[likeId].topUsersDataNode
				? JSON.parse(BXRL[likeId].topUsersDataNode.getAttribute('data-users'))
				: false
		);

		if (dataUsers)
		{
			dataUsers.TOP = Object.values(dataUsers.TOP);

			BXRL[likeId].topUsersText.innerHTML = BXRL.render.getTopUsersText({
				you: !active,
				top: dataUsers.TOP,
				more: dataUsers.MORE
			});
		}
	}

	if (
		BXRL[likeId].template == 'light'
		&& !BXRL[likeId].userReactionNode
	)
	{
		cont = BXRL[likeId].box;
		likeNode = cont.cloneNode(true);
		likeNode.id = 'like_anim'; // to not dublicate original id

		var type = 'normal';
		if (BX.findParent(cont, { 'className': 'feed-com-informers-bottom' }))
		{
			type = 'comment';
		}
		else if (BX.findParent(cont, { 'className': 'feed-post-informers' }))
		{
			type = 'post';
		}

		BX.removeClass(likeNode, 'bx-ilike-button-hover');
		BX.addClass(likeNode, 'bx-like-anim');

		BX.adjust(cont.parentNode, { style: { position: 'relative' } });

		BX.adjust(likeNode, {
			style: {
				position: 'absolute',
				whiteSpace: 'nowrap',
				top: (type == 'post' ? '1px' : (type == 'comment' ? '0' : ''))
			}
		});

		BX.adjust(cont, { style: { visibility: 'hidden' } });
		BX.prepend(likeNode, cont.parentNode);

		new BX.easing({
			duration: 140,
			start: { scale: 100 },
			finish: { scale: (type == 'comment' ? 110 : 115) },
			transition : BX.easing.transitions.quad,
			step: function(state) {
				likeNode.style.transform = "scale(" + state.scale / 100 + ")";
			},
			complete: function() {
				likeThumbNode = BX.create('SPAN', {
					props: {
						className: (active ? 'bx-ilike-icon' : 'bx-ilike-icon bx-ilike-icon-orange')
					}
				});

				BX.adjust(likeThumbNode, {
					style: {
						position: 'absolute',
						whiteSpace: 'nowrap'
					}
				});

				BX.prepend(likeThumbNode, cont.parentNode);

				new BX.easing({
					duration: 140,
					start: { scale: (type == 'comment' ? 110 : 115) },
					finish: { scale: 100 },
					transition : BX.easing.transitions.quad,
					step: function(state) {
						likeNode.style.transform = "scale(" + state.scale / 100 + ")";
					},
					complete: function() {
					}
				}).animate();

				var propsStart = { opacity: 100, scale: (type == 'comment' ? 110 : 115), top: 0 };
				var propsFinish = { opacity: 0, scale: 200, top: (type == 'comment' ? -3 : -2) };

				if (type != 'comment')
				{
					propsStart.left = -5;
					propsFinish.left = -13;
				}

				new BX.easing({
					duration: 200,
					start: propsStart,
					finish: propsFinish,
					transition : BX.easing.transitions.linear,
					step: function(state) {
						likeThumbNode.style.transform = "scale(" + state.scale / 100 + ")";
						likeThumbNode.style.opacity = state.opacity / 100;
						if (type != 'comment')
						{
							likeThumbNode.style.left = state.left + 'px';
						}
						likeThumbNode.style.top = state.top + 'px';
					},
					complete: function() {
						likeNode.parentNode.removeChild(likeNode);
						likeThumbNode.parentNode.removeChild(likeThumbNode);

						BX.adjust(cont.parentNode, { style: { position: 'static' } });
						BX.adjust(cont, { style: { visibility: 'visible' } });
					}
				}).animate();

			}
		}).animate();
	}

	BX.removeClass(this.box, 'bx-ilike-button-hover');
};

RatingLike.Init = function(likeId, params)
{
	if (typeof params == 'undefined')
	{
		params = {};
	}

	if (typeof BXRL.manager != 'undefined')
	{
		BXRL.manager.init(params);
	}

	// like/unlike button
	if (BXRL[likeId].available)
	{
		var eventNode = (
			BXRL[likeId].template == 'standart'
				? BXRL[likeId].button
				: BXRL[likeId].buttonText
		);

		if (
			BXRL[likeId].version >= 2
			&& BXRL.manager.mobile
		)
		{
			BX.bind(
				eventNode,
				'touchstart',
				BX.delegate(function(e) {
					BXRL.manager.startScrollTop = (
						(
							document.documentElement
							&& document.documentElement.scrollTop
						)
						|| document.body.scrollTop
					);
				})
			);
		}

		var eventName = (
			typeof BXRL.manager != 'undefined'
			&& BXRL.manager.mobile
				? 'touchend'
				: 'click'
		);

		BX.bind(
			eventNode,
			eventName,
			BX.delegate(function(e) {

				if (
					BXRL[likeId].version >= 2
					&& BXRL.manager.mobile
					&& BXRL.render.blockTouchEndByScroll
				)
				{
					BXRL.render.blockTouchEndByScroll = false;
					return;
				}

				if (
					BXRL[likeId].version < 2
					|| !BXRL.manager.mobile
					|| !BXRL.render.reactionsPopupLikeId
				)
				{
					if (
						BXRL[likeId].version >= 2
						&& BXRL.manager.mobile
					)
					{
						var currentScrollTop = (
							(
								document.documentElement
								&& document.documentElement.scrollTop
							)
							|| document.body.scrollTop
						);

						if (Math.abs(currentScrollTop - BXRL.manager.startScrollTop) > 2)
						{
							return;
						}
					}

					RatingLike.ClickVote(likeId);
				}

				if (BXRL[likeId].version == 2)
				{
					BXRL.render.afterClick({
						likeId: likeId
					});
				}

				e.preventDefault();
			}, this)
		);

		if (
			typeof BXRL.manager == 'undefined'
			|| !BXRL.manager.mobile
		)
		{
			// Hover/unHover like-button
			BX.bind(BXRL[likeId].box, 'mouseover', function() {BX.addClass(this, 'bx-ilike-button-hover')});
			BX.bind(BXRL[likeId].box, 'mouseout', function() {BX.removeClass(this, 'bx-ilike-button-hover')});
		}
		else
		{
			BXRL[likeId].pathToAjax = BX.message('SITE_DIR') + 'mobile/ajax.php?mobile_action=like';
			BX.bind(BXRL[likeId].topPanel, 'click', function(e) {
				BXRL.render.openMobileReactionsPage({
					entityTypeId: BXRL[likeId].entityTypeId,
					entityId: BXRL[likeId].entityId
				});
				e.stopPropagation();
			});
		}
	}
	else if (BXRL[likeId].buttonText != undefined)
	{
		BXRL[likeId].buttonText.innerHTML = BXRL[likeId].localize['LIKE_D'];
		BXRL[likeId].buttonText.classList.add('bx-ilike-text-unavailable');
	}
	// get like-user-list

	var clickShowPopupNode = (
		BXRL[likeId].topUsersText
			? BXRL[likeId].topUsersText
			: BXRL[likeId].count
	);

	if (
		typeof BXRL.manager == 'undefined'
		|| !BXRL.manager.mobile
	)
	{
		BX.bind(clickShowPopupNode, 'mouseenter', function(e)
		{
			RatingLike.onResultMouseEnter({
				likeId: likeId,
				event: e,
				nodeId: e.currentTarget.id
			});
		});

		BX.bind(clickShowPopupNode, 'mouseleave', BX.proxy(function()
		{
			RatingLike.onResultMouseLeave({
				likeId: likeId
			});
		}, { likeId: likeId }));
	}


	if (
		typeof BXRL.manager == 'undefined'
		|| !BXRL.manager.mobile
	)
	{
		BX.bind(clickShowPopupNode, 'click' , function(e)
		{
			RatingLike.onResultClick({
				likeId: likeId,
				event: e,
				nodeId: e.currentTarget.id
			});
		});
	}

	if (
		BXRL[likeId].version == 2
		&& BXRL[likeId].available
		&& BXRL[likeId].userReactionNode
	)
	{
		BXRL.render.bindReactionsPopup({
			likeId: likeId
		});
	}
};

RatingLike.onResultClick = function(params)
{
	var
		likeId = (BX.type.isNotEmptyString(params.likeId) ? params.likeId : false),
		clickEvent = (typeof params.event != 'undefined' ? params.event : null),
		reaction = (BX.type.isNotEmptyString(params.reaction) ? params.reaction : '');

	if (BXRL[likeId].resultPopupAnimation)
	{
		return;
	}

	if (
		BXRL[likeId].popup
		&& BXRL[likeId].popup.isShown()
	)
	{
		BXRL[likeId].popup.close();
	}
	else
	{
		clearTimeout(BXRL[likeId].popupTimeoutIdList);
		clearTimeout(BXRL[likeId].popupTimeoutIdShow);

		if (
			BXRL[likeId].popupContentPage == 1
			&& (
				clickEvent.currentTarget.getAttribute('data-popup') != 'Y'
				|| BXRL[likeId].popupCurrentReaction != reaction
			)
		)
		{
			RatingLike.List(likeId, 1, reaction, true);
		}
		RatingLike.OpenWindow(
			likeId,
			(clickEvent.currentTarget == BXRL[likeId].count ? null : clickEvent),
			clickEvent.currentTarget,
			clickEvent.currentTarget.id
		);
	}
};

RatingLike.onResultMouseEnter = function(params)
{
	var
		likeId = (BX.type.isNotEmptyString(params.likeId) ? params.likeId : false),
		mouseEnterEvent = (typeof params.event != 'undefined' ? params.event : null),
		reaction = (BX.type.isNotEmptyString(params.reaction) ? params.reaction : ''),
		nodeId = (mouseEnterEvent && BX.type.isNotEmptyString(mouseEnterEvent.currentTarget.id) ? mouseEnterEvent.currentTarget.id : '');

	BXRL[likeId].mouseInShowPopupNode[reaction] = true;

	clearTimeout(BXRL[likeId].popupTimeoutIdList);
	clearTimeout(BXRL[likeId].popupTimeoutIdShow);

	BXRL[likeId].popupTimeoutIdList = setTimeout(BX.proxy(function() {

		if (BXRLW == this.likeId)
		{
			return false;
		}

		if (
			BXRL[this.likeId].popupContentPage == 1
			&& this.target.getAttribute('data-popup') != 'Y'
		)
		{
			RatingLike.List(this.likeId, 1, this.reaction, true);
		}

		BXRL[this.likeId].popupTimeoutIdShow = setTimeout(BX.proxy(function() {

			BXRL[this._likeId].resultPopupAnimation = true;

			var _likeId = this._likeId;
			setTimeout(function() {
				BXRL[_likeId].resultPopupAnimation = false;
			}, 500);

			if (BXRL[this._likeId].mouseInShowPopupNode[this._reaction])
			{
				RatingLike.OpenWindow(
					this._likeId,
					null,
					this._target,
					this._nodeId
				);
			}
		}, {
			_likeId: this.likeId,
			_reaction: this.reaction,
			_target: this.target,
			_nodeId: this.nodeId
		}), 100);
	}, {
		likeId: likeId,
		target: mouseEnterEvent.currentTarget,
		reaction: reaction,
		nodeId: nodeId
	}), 300);
};

RatingLike.onResultMouseLeave = function(params) {

	var
		likeId = (BX.type.isNotEmptyString(params.likeId) ? params.likeId : false),
		reaction = (BX.type.isNotEmptyString(params.reaction) ? params.reaction : '');

	BXRL[likeId].mouseInShowPopupNode[reaction] = false;
	BXRL[likeId].resultPopupAnimation = false;
};

RatingLike.OpenWindow = function(likeId, clickEvent, target, targetId)
{
	if (parseInt(BXRL[likeId].countText.innerHTML) == 0)
	{
		return;
	}

	var bindNode = (
		BXRL[likeId].template == 'standart'
			? BXRL[likeId].count
			: (
				BXRL[likeId].version == 2
					? (
						BX(target)
						? BX(target)
						: (BX.type.isNotEmptyString(targetId) && BX(targetId) ? BX(targetId): null)
					)
					: BXRL[likeId].box
			)
	);

	if (!BX(bindNode))
	{
		return;
	}

	if (BXRL[likeId].popup == null)
	{
		var globalZIndex = RatingLike.getGlobalIndex(BX(bindNode));
		BXRL[likeId].popup = new BX.PopupWindow('ilike-popup-'+likeId, bindNode, {
			lightShadow : true,
			offsetTop: 0,
			offsetLeft: (
				typeof clickEvent != 'undefined'
				&& clickEvent != null
				&& typeof clickEvent.offsetX != 'undefined'
					? (clickEvent.offsetX - 100)
					: (BXRL[likeId].version == 2 ? -30 : 5)
			),
			autoHide: true,
			closeByEsc: true,
			zIndexAbsolute: (globalZIndex > 1000 ? globalZIndex + 1 : 1000),
			bindOptions: { position: "top" },
			animation: "fading-slide",
			events : {
				onPopupClose : function() { BXRLW = null; },
				onPopupDestroy : function() {  }
			},
			content : BX('bx-ilike-popup-cont-'+likeId),
			className: (BXRL[likeId].topPanel ? 'bx-ilike-wrap-block-react-wrap' : '') + (typeof BXRL.manager != 'undefined' && BXRL.manager.mobile ? ' bx-ilike-mobile-wrap' : '')
		});

		if (
			!BXRL[likeId].topPanel
			&& (
				typeof BXRL.manager == 'undefined'
				|| !BXRL.manager.mobile
			)
		)
		{
			BXRL[likeId].popup.setAngle({});

			BX.bind(BX('ilike-popup-'+likeId), 'mouseout' , function() {
				clearTimeout(BXRL[likeId].popupTimeout);
				BXRL[likeId].popupTimeout = setTimeout(function(){
					BXRL[likeId].popup.close();
				}, 1000);
			});

			BX.bind(BX('ilike-popup-'+likeId), 'mouseover' , function() {
				clearTimeout(BXRL[likeId].popupTimeout);
			});
		}
	}
	else
	{
		if (
			typeof clickEvent != 'undefined'
			&& clickEvent != null
			&& typeof clickEvent.offsetX != 'undefined'
		)
		{
			BXRL[likeId].popup.offsetLeft = (clickEvent.offsetX - 100);
		}

		if (BX(bindNode))
		{
			BXRL[likeId].popup.setBindElement(bindNode);
		}
	}


	if (
		BXRLW != null
		&& BXRLW != likeId
	)
	{
		BXRL[BXRLW].popup.close();
	}

	BXRLW = likeId;

	BXRL[likeId].popup.show();

	if (
		typeof BX.SidePanel != 'undefined'
		&& BX.SidePanel.Instance.getTopSlider()
	)
	{
		BX.addCustomEvent(
			BX.SidePanel.Instance.getTopSlider().getWindow(),
			"SidePanel.Slider:onClose",
			function removeOnCloseHandler()
			{
				BX.removeCustomEvent(BX.SidePanel.Instance.getTopSlider().getWindow(), "SidePanel.Slider:onClose", removeOnCloseHandler);
				if (typeof BXRL[BXRLW] != 'undefined')
				{
					BXRL[BXRLW].popup.close();
				}
			}
		);
	}

	RatingLike.AdjustWindow(likeId);
};

RatingLike.getGlobalIndex = function(element)
{
	var index = 0,
		propertyValue = "";

	do
	{
		propertyValue = BX.style(element, "z-index");
		if (propertyValue !== "auto")
		{
			index = BX.type.stringToInt(propertyValue);
		}
		element = element.offsetParent;
	}
	while (
		element && element.tagName !== "BODY"
	);

	return index;
};

RatingLike.Vote = function(likeId, voteAction, voteReaction, voteReactionOld)
{
	if (!BX.type.isNotEmptyString(voteReaction))
	{
		voteReaction = 'like';
	}

	var BMAjaxWrapper = null;

	if (
		typeof BXRL.manager != 'undefined'
		&& BXRL.manager.mobile
	)
	{
		BMAjaxWrapper = new MobileAjaxWrapper;
	}

	var
		f = (BMAjaxWrapper ? BX.proxy(BMAjaxWrapper.Wrap, BMAjaxWrapper) : BX.ajax),
		callbackSuccessName = (BMAjaxWrapper ? 'callback' : 'onsuccess'),
		callbackFailureName = (BMAjaxWrapper ? 'callback_failure' : 'onfailure');

	var actionUrl = BXRL[likeId].pathToAjax;
	actionUrl = BX.util.add_url_param(actionUrl, {
		b24statAction: 'addLike'
	});

	if (
		BXRL[likeId].version >= 2
		&& BXRL.manager.mobile
	)
	{
		actionUrl = BX.util.add_url_param(actionUrl, {
			b24statContext: 'mobile'
		});
	}

	var ajaxProperties = {
		url: actionUrl,
		method: 'POST',
		dataType: 'json',
		type: 'json',
		data: {
			RATING_VOTE : 'Y',
			RATING_VOTE_TYPE_ID : BXRL[likeId].entityTypeId,
			RATING_VOTE_ENTITY_ID : BXRL[likeId].entityId,
			RATING_VOTE_ACTION : voteAction,
			RATING_VOTE_REACTION : voteReaction,
			sessid: BX.bitrix_sessid()
		}
	};

	ajaxProperties[callbackSuccessName] = function(data) {
		BXRL[likeId].lastVote = data.action;
		BXRL[likeId].lastReaction = voteReaction;

		lastVoteRepo[BXRL[likeId].entityTypeId + '_' + BXRL[likeId].entityId] = data.action;
		lastReactionRepo[BXRL[likeId].entityTypeId + '_' + BXRL[likeId].entityId] = data.voteReaction;

		BXRL[likeId].countText.innerHTML = data.items_all;
		BXRL[likeId].popupContentPage = 1;

		BXRL[likeId].popupContent.innerHTML = '';
		spanTag0 = document.createElement("span");
		spanTag0.className = "bx-ilike-wait";
		BXRL[likeId].popupContent.appendChild(spanTag0);

		if (BXRL[likeId].topPanel)
		{
			BXRL[likeId].topPanel.setAttribute('data-popup', 'N');
		}

		RatingLike.AdjustWindow(likeId);

		if(
			BX('ilike-popup-'+likeId)
			&& BX('ilike-popup-'+likeId).style.display == "block"
		)
		{
			RatingLike.List(likeId, null, '', true);
		}

		if (
			BXRL[likeId].version >= 2
			&& BXRL.manager.mobile
		)
		{
			BXMobileApp.onCustomEvent('onRatingLike', {
				action: data.action,
				ratingId: likeId,
				entityTypeId : BXRL[likeId].entityTypeId,
				entityId: BXRL[likeId].entityId,
				voteAction: voteAction,
				voteReaction: voteReaction,
				voteReactionOld: voteReactionOld,
				userId: BX.message('USER_ID'),
				userData: (typeof data.user_data != 'undefined' ? data.user_data : null),
				itemsAll: data.items_all
			}, true);
		}
	};

	ajaxProperties[callbackFailureName] = function(data) {

		var dataUsers = ((BXRL[likeId].topUsersDataNode)
				? JSON.parse(BXRL[likeId].topUsersDataNode.getAttribute('data-users'))
				: false
		);

		if (BXRL[likeId].version == 2)
		{
			if (voteAction == 'change')
			{
				BXRL.render.setReaction({
					likeId: likeId,
					rating: BXRL[likeId],
					action: voteAction,
					userReaction: voteReaction,
					userReactionOld: voteReactionOld,
					totalCount: parseInt(BXRL[likeId].countText.innerHTML)
				});
			}
			else
			{
				BXRL.render.setReaction({
					likeId: likeId,
					rating: BXRL[likeId],
					action: (voteAction == 'cancel' ? 'add' : 'cancel'),
					userReaction: voteReaction,
					totalCount: (
						voteAction == 'cancel'
							? parseInt(BXRL[likeId].countText.innerHTML) + 1
							: parseInt(BXRL[likeId].countText.innerHTML) - 1
					)
				});
			}

			if (BXRL[likeId].buttonText)
			{
				if (voteAction == 'add')
				{
					BXRL[likeId].buttonText.innerHTML = BX.message('RATING_LIKE_EMOTION_LIKE_CALC');
				}
				else if (voteAction == 'change')
				{
					BXRL[likeId].buttonText.innerHTML = BX.message('RATING_LIKE_EMOTION_' + voteReactionOld.toUpperCase() + '_CALC');
				}
				else
				{
					BXRL[likeId].buttonText.innerHTML = BX.message('RATING_LIKE_EMOTION_' + voteReaction.toUpperCase() + '_CALC');
				}
			}
		}

		if (
			dataUsers
			&& voteAction != 'change'
			&& BXRL[likeId].version == 2
		)
		{
			dataUsers.TOP = Object.values(dataUsers.TOP);

			BXRL[likeId].topUsersText.innerHTML = BXRL.render.getTopUsersText({
				you: (voteAction == 'cancel'), // negative
				top: dataUsers.TOP,
				more: dataUsers.MORE
			});
		}
	};

	f(ajaxProperties);

	return false;
};

RatingLike.List = function(likeId, page, reaction, clear)
{
	if (parseInt(BXRL[likeId].countText.innerHTML) == 0)
	{
		return false;
	}

	reaction = (BX.type.isNotEmptyString(reaction) ? reaction : '');

	if (page == null)
	{
		page = (
			BXRL[likeId].version == 2
				? (typeof BXRL.render.popupPagesList[reaction] != 'undefined' ? BXRL.render.popupPagesList[reaction] : 1)
				: BXRL[likeId].popupContentPage
		);
	}

	if (
		clear
		&& page == 1
		&& BXRL[likeId].version == 2
	)
	{
		BXRL.render.clearPopupContent({
			likeId: likeId
		});
	}

	if (BXRL[likeId].listXHR)
	{
		BXRL[likeId].listXHR.abort();
	}

	BXRL[likeId].listXHR = BX.ajax({
		url: BXRL[likeId].pathToAjax,
		method: 'POST',
		dataType: 'json',
		data: {
			RATING_VOTE_LIST : 'Y',
			RATING_VOTE_TYPE_ID : BXRL[likeId].entityTypeId,
			RATING_VOTE_ENTITY_ID : BXRL[likeId].entityId,
			RATING_VOTE_LIST_PAGE : page,
			RATING_VOTE_REACTION : (reaction == 'all' ? '' : reaction),
			PATH_TO_USER_PROFILE : BXRL[likeId].pathToUserProfile,
			sessid: BX.bitrix_sessid()
		},
		onsuccess: function(data)
		{
			if (!data)
			{
				return false;
			}

			BXRL[likeId].countText.innerHTML = data.items_all;

			if (parseInt(data.items_page) == 0)
			{
				return false;
			}

			if (BXRL[likeId].version == 2)
			{
				BXRL.render.buildPopupContent({
					likeId: likeId,
					reaction: reaction,
					rating: BXRL[likeId],
					page: page,
					data: data,
					clear: clear
				});
				BXRL[likeId].topPanel.setAttribute('data-popup', 'Y');
			}
			else
			{
				if (page == 1)
				{
					BXRL[likeId].popupContent.innerHTML = '';
					spanTag0 = document.createElement("span");
					spanTag0.className = "bx-ilike-bottom_scroll";
					BXRL[likeId].popupContent.appendChild(spanTag0);
				}
				BXRL[likeId].popupContentPage += 1;

				var avatarNode = null;

				for (var i = 0; i < data.items.length; i++)
				{
					if (data.items[i]['PHOTO_SRC'].length > 0)
					{
						avatarNode = BX.create("IMG", {
							attrs: {src: data.items[i]['PHOTO_SRC']},
							props: {className: "bx-ilike-popup-avatar-img"}
						});
					}
					else
					{
						avatarNode = BX.create("IMG", {
							attrs: {src: '/bitrix/images/main/blank.gif'},
							props: {className: "bx-ilike-popup-avatar-img bx-ilike-popup-avatar-img-default"}
						});
					}

					BXRL[likeId].popupContent.appendChild(
						BX.create("A", {
							attrs: {
								href: data.items[i]['URL'],
								target: '_blank'
							},
							props: {
								className: "bx-ilike-popup-img" + (!!data.items[i]['USER_TYPE'] ? " bx-ilike-popup-img-" + data.items[i]['USER_TYPE'] : "")
							},
							children: [
								BX.create("SPAN", {
									props: {
										className: "bx-ilike-popup-avatar-new"
									},
									children: [
										avatarNode,
										BX.create("SPAN", {
											props: {className: "bx-ilike-popup-avatar-status-icon"}
										})
									]
								}),
								BX.create("SPAN", {
									props: {
										className: "bx-ilike-popup-name-new"
									},
									html: data.items[i]['FULL_NAME']
								})
							]
						})
					);
				}
			}

			RatingLike.AdjustWindow(likeId);
			RatingLike.PopupScroll(likeId);
		},
		onfailure: function(data) {}
	});
	return false;
};

RatingLike.AdjustWindow = function(likeId)
{
	if (BXRL[likeId].popup != null)
	{
		BXRL[likeId].popup.bindOptions.forceBindPosition = true;
		BXRL[likeId].popup.adjustPosition();
		BXRL[likeId].popup.bindOptions.forceBindPosition = false;
	}
};

RatingLike.PopupScroll = function(likeId)
{
	var contentContainerNodeList = BX.findChildren(BXRL[likeId].popupContent, { className: 'bx-ilike-popup-content' }, true); // reactions
	if (contentContainerNodeList.length <= 0)
	{
		contentContainerNodeList = [ BXRL[likeId].popupContent ];
	}

	var contentContainerNode = null;

	for (var i = 0; i < contentContainerNodeList.length; i++)
	{
		contentContainerNode = contentContainerNodeList[i];

		BX.bind(contentContainerNode, 'scroll' , function() {
			if (this.scrollTop > (this.scrollHeight - this.offsetHeight) / 1.5)
			{
				RatingLike.List(likeId, null, (BXRL[likeId].version == 2 ? BXRL.render.popupCurrentReaction : false));
				BX.unbindAll(this);
			}
		});
	}
};

RatingLike.setParams = function(params)
{
	if (typeof params != 'undefined')
	{
		if (typeof params.pathToUserProfile != 'undefined')
		{
			BXRLParams.pathToUserProfile = params.pathToUserProfile;
		}
	}
};


Youez - 2016 - github.com/yon3zu
LinuXploit