%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/components/bitrix/main.post.list/templates/mobile_app/
Upload File :
Create Path :
Current File : /home/bitrix/www/bitrix/components/bitrix/main.post.list/templates/mobile_app/script.js

;(function(){
	if (!window["BX"] || window["BX"]["MPLForm"] || !window["app"])
		return;

	var BX = window["BX"],
		repo = {
			entityId : 0,
			text : "",
			form : {},
			list : {},
			comments : {},
			commentExemplarId : {}
		},
		makeId = function(ENTITY_XMIL_ID, ID) {
			return ENTITY_XMIL_ID + '-' + (ID > 0 ? ID : '0');
		};
	var setText = function(text) {
		repo.text = (BX.type.isNotEmptyString(text) ? text : "");
		if (BX["localStorage"] && repo.entityId)
		{
			var res = BX.localStorage.get("main.post.list/text");
			res = (res || {});
			if (BX.type.isNotEmptyString(repo.text))
			{
				res[repo.entityId] = repo.text;
			}
			else
			{
				delete res[repo.entityId];
			}
			BX.localStorage.set("main.post.list/text", res);
		}
	},
	getText = function(entityId) {
		var text = "";
		if (BX["localStorage"] && entityId)
		{
			var res = BX.localStorage.get("main.post.list/text");
			if (res)
			{
				text = (res[entityId] || "");
				delete res[entityId];
				BX.localStorage.set("main.post.list/text", res);
			}
		}
		return text;
	};
	BX.addCustomEvent(window, 'OnUCFormSubmit', function(){ setText(''); });

	BXMobileApp.addCustomEvent("main.post.form/text", function(text){
		text = BX.type.isArray(text) ? text[0] : text;
		setText(text);
	});
	var inner = {
		keyBoardIsShown : false,
		mention : {}
	},
		appendToForm = function(fd, key, val) {
		if (!!val && typeof val == "object")
		{
			for (var ii in val)
			{
				if (val.hasOwnProperty(ii))
				{
					appendToForm(fd, key + '[' + ii + ']', val[ii]);
				}
			}
		}
		else
		{
			fd.append(key, (!!val ? val : ''));
		}
	};
	window.app.exec("enableCaptureKeyboard", true);
	BX.addCustomEvent("onKeyboardWillShow", function() { inner.keyBoardIsShown = true; });
	BX.addCustomEvent("onKeyboardDidHide", function() { inner.keyBoardIsShown = false; });
	BX.addCustomEvent("OnUCCommentWasRead", function(id) {
		var node = BX('record-' + id.join('-'));
		if (node)
		{
			BX.removeClass(node, "post-comment-block-new");
		}
	});

	var commentObj = function(id, text, attachments) {
		this.id = id;
		this.text = (text || "");
		this.attachments = (attachments || []);
		this.mentions = {};
	};
	commentObj.prototype = {
		text : "",
		attachments : [],
		node : null,
		getText : function() {
			return this.text;
		}
	};
	/*
		@return commentObj
	 */
	commentObj.getInstance = function(id, text, attachments) {
		var res = null;
		if (!BX.type.isArray(id) && id && id["___id"] && repo["comments"][id["___id"]])
		{
			res = id;
		}
		else if (repo["comments"][id.join("-")])
		{
			res = repo["comments"][id.join("-")];
		}
		else
		{
			res = new commentObj(id, text, attachments);
			res.___id = id.join("-");
			repo["comments"][id.join("-")] = res;
		}
		return res;
	};
	commentObj.removeInstance = function(comment) {
		if (comment && comment["___id"])
			delete repo["comments"][comment["___id"]];
	};
	var MPFForm = function(id) {
		this.bindEvents();
		repo['form'][this.handlerId] = this;
		this.entitiesId = {};

		this.comment = null;

		this.handlerId = id;
		this.handler = null;
		this.handlerEvents = {
			onMPFUserIsWriting : BX.delegate(this.writing, this),
			onMPFHasBeenDestroyed : BX.delegate(this.reboot, this)
		};

		this.visible = false;

		this.bindHandler = BX.delegate(this.bindHandler, this);
		BX.addCustomEvent(window, "onMPFIsInitialized", this.bindHandler);
		if (BX["MPF"])
			this.bindHandler(BX["MPF"].getInstance(this.handlerId));
		this.jsCommentId = BX.util.getRandomString(20);
	};
	MPFForm.prototype = {
		bindHandler : function(handler) {
			if (handler && handler.id == this.handlerId)
			{
				this.handler = handler;

				BX.removeCustomEvent(window, "onMPFIsInitialized", this.bindHandler);

				for (var ii in this.handlerEvents)
				{
					if (this.handlerEvents.hasOwnProperty(ii))
					{
						BX.addCustomEvent(this.handler, ii, this.handlerEvents[ii]);
					}
				}

				this.closeWait();
				BX.onCustomEvent(this, 'OnUCFormInit', [this]);
			}
		},
		bindEvents : function() {
			this.windowEvents = {
				OnUCUserReply : BX.delegate(function(entityId, authorId, authorName) {
					if (this.entitiesId[entityId])
					{
						var comment = [entityId, 0];
						authorId = parseInt(authorId);
						if (authorId > 0 && authorName)
						{
							comment = this.initComment(comment, "", false);
							comment.mentions[authorName] = '[USER=' + authorId + ']' + authorName + '[/USER]';
							var text = (this.handler && this.handler.simpleForm ? this.handler.simpleForm.writingParams["~text"] : comment.text);
							comment.text = text + (text == "" ? "" : " ") + '[USER=' + authorId + ']' + authorName + '[/USER]' + ', ';
						}
						this.show(comment, comment.text, false);
					}
				}, this),

				OnUCAfterRecordEdit : BX.delegate(function(entityId, id, data, act)
				{
					if (this.entitiesId[entityId]) {
						if (act === "EDIT")
						{
							this.show([entityId, id], data['messageBBCode'], data['messageFields']);
						}
						else if (act === "MODERATE")
						{
							BX.onCustomEvent(window, 'OnUCAfterRecordAdd', [
								data.messageId[0],
								data.messageId[1],
								this,
								data,
								{
									node: BX('record-' + data.messageId[0] + '-' + data.messageId[1])
								}
							]);
						}
						else if (data['errorMessage'])
						{
							this.showError([entityId, id], data['errorMessage']);
						}
						else if (data['okMessage'])
						{
							this.showNote([entityId, id], data['okMessage']);
						}
					}
				}, this)
			};

			BX.addCustomEvent(window, 'OnUCUserReply', this.windowEvents.OnUCUserReply);
			BX.addCustomEvent(window, 'OnUCAfterRecordEdit', this.windowEvents.OnUCAfterRecordEdit);
		},
		reboot : function(id, oldObj, newObj) {
			for (var ii in this.handlerEvents)
			{
				if (this.handlerEvents.hasOwnProperty(ii))
				{
					BX.removeCustomEvent(this.handler, ii, this.handlerEvents[ii]);
				}
			}
			this.bindHandler(newObj);
		},
		linkEntity : function(id, data) {
			if (this.handler === null)
			{
				this._linkEntity = BX.delegate(function(){this.linkEntity(id, data);}, this);
				BX.addCustomEvent(this, 'OnUCFormInit', this._linkEntity);
			}
			else
			{
				if (this["_linkEntity"])
					BX.removeCustomEvent(this, 'OnUCFormInit', this["_linkEntity"]);
				this.entitiesId[id] = data;
				repo.entityId = id;

				var f = BX.proxy(function(str){
					this.comment = this.reinitComment({id : [id, 0], text : str});
					this.comment.text = str;
					this.handler.init(this.comment);
				}, this);

				if (false && window["platform"] == "ios")
				{
					window.BXMobileApp.UI.Page.TextPanel.getText(f);
				}
				else
				{
					f(getText(id));
				}
			}
		},
		writing : function(comment) {
			BX.onCustomEvent(window, 'OnUCUserIsWriting', [comment["id"][0], comment["id"][1], this.jsCommentId]);
		},
		reinitComment : function(comment) {
			var id = [comment["id"][0], 0],
				text = (comment["text"] || "");
			commentObj.removeInstance(comment);
			return this.initComment(id, text, []);
		},
		initComment : function(id, text, data) {
			var comment = commentObj.getInstance(id, text, data);
			if (comment["bound"] !== "Y")
			{
				BX.addCustomEvent(comment, "onCancel", BX.delegate(BX.delegate(this.submitClear, this))); // Release comment
				BX.addCustomEvent(comment, "onStart", BX.delegate(BX.delegate(this.submitStart, this))); // Draw comment
				BX.addCustomEvent(comment, "onSubmit", BX.delegate(BX.delegate(this.submit, this))); // Submit form
				BX.addCustomEvent(comment, "onError", BX.delegate(BX.delegate(function(c, text) {
					this.showError(comment, text);
					this.submitClear(comment);
				}, this))); // Error form
				comment["bound"] = "Y";
			}
			return comment;
		},
		show : function(id, text, data) {
			this.comment = this.initComment(id, text, data);
			this.jsCommentId = BX.util.getRandomString(20);
			BX.onCustomEvent(this.handler, 'OnUCFormBeforeShow', [this, text, data]);
			repo.entityId = id[0];
			this.handler.show(this.comment, (!!data));
			BX.onCustomEvent(this.handler, 'OnUCFormAfterShow', [this, text, data]);
			return true;
		},
		submitClear : function(comment) {
			commentObj.removeInstance(comment);
			this.jsCommentId = BX.util.getRandomString(20);
			if (this.comment == comment)
			{

				this.comment = this.initComment([comment.id[0], 0], "", []);
				repo.entityId = comment.id[0];
				this.handler.init(this.comment);
			}
		},
		submitStart : function(comment, text, attachments) {
			BX.onCustomEvent(window, 'OnUCFormBeforeSubmit', [comment.id[0], comment.id[1], comment, this, text, attachments]); // Preview commetn
		},
		submit : function(comment) {
			var text = comment.getText(),
				attachments = comment.attachments,
				entityHdl = this.entitiesId[comment.id[0]],
				post_data = this.handler.getForm({
					ENTITY_XML_ID : comment.id[0],
					REVIEW_TEXT : text,
					NOREDIRECT : "Y",
					MODE : "RECORD",
					AJAX_POST : "Y",
					id : comment.id,
					sessid : BX.bitrix_sessid(),
					SITE_ID : BX.message("SITE_ID"),
					LANGUAGE_ID : BX.message("LANGUAGE_ID")
				}),
				post = new window.MobileAjaxWrapper(),
				fd = new window.FormData(),
				ii;
			if (this.jsCommentId !== null)
				post_data['COMMENT_EXEMPLAR_ID'] = this.jsCommentId;

			if (comment.id[1] > 0)
			{
				post_data['REVIEW_ACTION'] = "EDIT";
				post_data["FILTER"] = {ID : comment.id[1]};
				if (post_data["act"]) // if it is a socialnetwork
				{
					post_data["act"] = "edit";
					post_data["edit_id"] = comment.id[1];
				}
			}
			if (entityHdl['fields'])
			{
				for (ii in entityHdl['fields'])
				{
					if (entityHdl['fields'].hasOwnProperty(ii))
					{
						post_data[ii] = entityHdl['fields'][ii];
					}
				}
			}

			BX.onCustomEvent(window, 'OnUCFormSubmit', [comment.id[0], comment.id[1], this, post_data]);
			for (ii in post_data)
			{
				if (post_data.hasOwnProperty(ii))
				{
					appendToForm(fd, ii, post_data[ii]);
				}
			}
			if (attachments)
			{
				for (var ij = 0; ij < attachments.length; ij++)
				{
					appendToForm(fd, attachments[ij]["fieldName"], attachments[ij]["fieldValue"]);
				}
			}

			var actionUrl = entityHdl['url'];
			actionUrl = BX.util.add_url_param(actionUrl, {
				b24statAction: (comment.id[1] > 0 ? 'editComment' : 'addComment'),
				b24statContext: 'mobile'
			});

			post.Wrap({
				method: 'POST',
				url: actionUrl,
				data: {},
				type: 'json',
				processData : true,
				start : false,
				preparePost : false,
				callback: BX.proxy(function(data) {
					BX.onCustomEvent(window, 'OnUCFormResponse', [comment.id[0], comment.id[1], this, data, comment]);
					if (data['errorMessage'])
					{
						this.showError(comment, data['errorMessage']);
					}
					else
					{
						BX.onCustomEvent(window, 'OnUCAfterRecordAdd', [comment.id[0], comment.id[1], this, data, comment]);
					}
				}, this),
				callback_failure: BX.delegate(function(data) {
					BX.onCustomEvent(window, 'OnUCFormResponse', [comment.id[0], comment.id[1], this, data, comment]);
					this.showError(comment, BX.message('INCORRECT_SERVER_RESPONSE'));
				}, this)
			});
			post.xhr.send(fd);

			this.submitClear(comment);
		},
		showError : function(comment, text) {
			if (BX.type.isArray(comment))
				comment = this.initComment(comment, "", []);

			text = '<div class="feed-add-info-text"><span class="feed-add-info-icon"></span>' +
					'<b>' + BX.message('FC_ERROR') + '</b><br />' + text + '</div>';
			if (comment && comment.node)
			{
				BX.addClass(comment.node, "feed-com-block-cover-undelivered");

				var bindUndelivered = (
					typeof comment.attachments == 'undefined'
					|| comment.attachments.length <= 0
				);

				if (
					!bindUndelivered
					&& BX.type.isArray(comment.attachments)
				)
				{
					bindUndelivered = true;

					for (var ij = 0; ij < comment.attachments.length; ij++)
					{
						if (
							BX.type.isNotEmptyString(comment.attachments[ij].fieldValue) // attached UF
							|| BX.type.isNotEmptyString(comment.attachments[ij].url) // attached file
						)
						{
							bindUndelivered = false;
							break;
						}
					}
				}

				if (bindUndelivered)
				{
					BX.bind(comment.node, 'click', BX.proxy(function(e) {
						BX.unbindAll(comment.node);
						BX.removeClass(comment.node, "feed-com-block-cover-undelivered");
						this.handler.comment = comment;
						this.handler.simpleForm.handleAppData(comment.text, true);
					}, this));
				}

/*
				node = BX.findChild(comment.node, {'tagName' : "DIV", 'className' : "post-comment-text"}, true);
				if (node)
					node.innerHTML += text;
*/
			}
			else if (text)
			{
/*
				var container = BX.create("DIV", {
					attrs : {"className" : ".feed-com-block-cover feed-com-block-cover-error"},
					html : text});
				BX.show(node);
*/
			}
		},
		showNote : function(id, text) {
			/*
			return window.alert('Note: ' + text);
			var node = this._getPlacehoder(), nodes = BX.findChildren(node, {'tagName' : "DIV", 'className' : "feed-add-successfully"}, true), res = null;
			if (!!nodes)
			{
				while ((res = nodes.pop()) && !!res) {
					BX.remove(res);
				}
			}
			node.insertBefore(BX.create('div', {attrs : {"class": "feed-add-successfully"},
				html: '<span class="feed-add-info-text"><span class="feed-add-info-icon"></span>' + text + '</span>'}),
				node.firstChild);
			BX.show(node);*/
		},
		showWait : function() {
			this.handler.hide();
			this.handler.showWait();
		},
		closeWait : function() {
			this.handler.closeWait();
		}
	};
	MPFForm.link = function(ENTITY_XML_ID, form) {
		var id = form['id'];
		repo['form'][id] = (repo['form'][id] || (new MPFForm(id)));
		repo['form'][id].linkEntity(ENTITY_XML_ID, form);
	};

	window.mobileShowActions = function(ENTITY_XML_ID, ID, e) {
		e = e || window.event;

		var isKeyboardShown = (window.app.enableInVersion(14) && window.platform == "ios")
								? window.BXMobileAppContext.isKeyboardShown()
								: inner.keyBoardIsShown;


		if(isKeyboardShown)
		{
			return true;
		}

		if (
			e
			&& e.target
			&& e.target.tagName
			&& (
				e.target.tagName.toUpperCase() == 'A'
				|| (
					e.target.tagName.toUpperCase() == 'IMG'
					&& (BX.type.isNotEmptyString(e.target.getAttribute('data-bx-image'))) // inline or attached image
				)
			)
		)
		{
			return true;
		}

		BX.eventCancelBubble(e);
		e.preventDefault();

		var node = BX('record-' + makeId(ENTITY_XML_ID, ID)),
			menu = [], action;

		if (node.getAttribute("bx-mpl-reply-show") == "Y")
			menu.push({
				title: BX.message('BLOG_C_REPLY'),
				callback: function() {
					repo["list"][ENTITY_XML_ID].reply(BX('record-' + makeId(ENTITY_XML_ID, ID) + '-reply-action'));
				}
			});
		var like;
		if ((node.getAttribute("bx-mpl-vote-id") != "#VOTE_ID#") && window["RatingLikeComments"] &&
			(like = window.RatingLikeComments.getById(node.getAttribute('bx-mpl-vote-id'))) && like)
		{
			like["__delegatedVoteFunc"] = (like["__delegatedVoteFunc"] || BX.delegate(like.vote, like));
			menu.push({title: (like.voted ? BX.message("BPC_MES_VOTE2") : BX.message("BPC_MES_VOTE1")),
				callback: like["__delegatedVoteFunc"]});
			menu.push({ title: BX.message('BPC_MES_VOTE'),
				callback: function() { window.RatingLikeComments.List(node.getAttribute('bx-mpl-vote-id'));}});
		}

		if (node.getAttribute("bx-mpl-edit-show") == "Y")
			menu.push({
				title: BX.message('BPC_MES_EDIT'),
				callback: function() { repo["list"][ENTITY_XML_ID].act(node.getAttribute('bx-mpl-edit-url'), ID, 'EDIT'); }});
		if (node.getAttribute("bx-mpl-moderate-show") == "Y")
		{
			var hidden = node.getAttribute('bx-mpl-moderate-approved') == 'hidden';
			menu.push({
				title: (hidden ? BX.message("BPC_MES_SHOW") : BX.message("BPC_MES_HIDE")),
				callback: function() {
					var moderateUrl = node.getAttribute('bx-mpl-moderate-url').
						replace("#action#", (hidden ? "show" : "hide")).
						replace("#ACTION#", (hidden ? "SHOW" : "HIDE"));

					if (BX.type.isNotEmptyString(moderateUrl))
					{
						moderateUrl = BX.util.add_url_param(moderateUrl, {
							b24statAction: (hidden ? "showComment" : "hideComment"),
							b24statContext: 'mobile'
						});
					}

					repo["list"][ENTITY_XML_ID].act(moderateUrl, ID, 'MODERATE');
				}
			});
		}
		if (node.getAttribute("bx-mpl-delete-show") == "Y")
			menu.push({
				title: BX.message('BPC_MES_DELETE'),
				callback: function() { repo["list"][ENTITY_XML_ID].act(node.getAttribute('bx-mpl-delete-url'), ID, 'DELETE'); }});
		if (node.getAttribute("bx-mpl-createtask-show") == "Y")
		{
			var
				commentEntityType = node.getAttribute('bx-mpl-comment-entity-type'),
				postEntityType = node.getAttribute('bx-mpl-post-entity-type');

			menu.push({
				title: BX.message('BPC_MES_CREATETASK'),
				callback: function() {
					if (typeof oMSL != 'undefined')
					{
						oMSL.createTask({
							postEntityType: (BX.type.isNotEmptyString(postEntityType) ? postEntityType : 'BLOG_POST'),
							entityType: (BX.type.isNotEmptyString(commentEntityType) ? commentEntityType : 'BLOG_COMMENT'),
							entityId: ID
						});
					}
				}
			});
		}
		if (menu.length > 0)
		{
			action = new window.BXMobileApp.UI.ActionSheet({ buttons: menu }, "commentSheet" );
			action.show();
		}
		return false;
	};
	window.mobileReply = function(ENTITY_XML_ID, e) {
		BX.eventCancelBubble(e);
		e.preventDefault();
		repo["list"][ENTITY_XML_ID].reply(e.target);
		return false;
	};
	window.mobileExpand = function(node, e) {
		BX.eventCancelBubble(e);
		e.preventDefault();

		var el2 = (BX(node) ? BX.findChild(node.previousSibling, { className: 'post-comment-text'}, true) : null);
		if (BX(el2))
		{
			var el = el2.parentNode,
				fxStart = 200,
				fxFinish = parseInt(el2.offsetHeight),
				start1 = {height:fxStart},
				finish1 = {height:fxFinish};

			BX.remove(node);

			var time = (fxFinish - fxStart) / (2000 - fxStart);
			time = (time < 0.3 ? 0.3 : (time > 0.8 ? 0.8 : time));

			el.style.maxHeight = start1.height+'px';
			el.style.overflow = 'hidden';

			(new BX["easing"]({
				duration : time*1000,
				start : start1,
				finish : finish1,
				transition : BX.easing.makeEaseOut(BX.easing.transitions.quart),
				step : function(state){
					el.style.maxHeight = state.height + "px";
					el.style.opacity = state.opacity / 100;
				},
				complete : function(){
					el.style.cssText = '';
					el.style.maxHeight = 'none';
					BX.onCustomEvent(window, 'OnUCRecordWasExpanded', [el]);
					BX.LazyLoad.showImages(true);
				}
			})).animate();

		}
		return false;
	};

	var init = function(window) {
		BX.MPL = function(params, staticParams, formParams)
		{
			BX.MPL.superclass.constructor.apply(this, arguments);

			this.template = BX.message("MPL_RECORD_TEMPLATE");
			this.thumb = BX.message("MPL_RECORD_THUMB");
			this.thumbForFile = BX.message("MPL_RECORD_THUMB_FILE");

			BX.removeCustomEvent(window, 'OnUCAfterRecordAdd', this.windowEvents['OnUCAfterRecordAdd']);
			BX.removeCustomEvent(window, 'OnUCFormResponse', this.windowEvents['OnUCFormResponse']);

			this.postCounter = 0;
			this.windowEvents['OnUCFormBeforeSubmit'] = BX.delegate(function(ENTITY_XML_ID, ENTITY_ID, comment, obj, text, attachments) {
				if (this.ENTITY_XML_ID == ENTITY_XML_ID) {
					var id = [ENTITY_XML_ID, (ENTITY_ID > 0 ? ENTITY_ID : 'new_' + this.postCounter++)];
					this.makeThumb(id, comment, text, attachments);
					this.pullNewRecords[ENTITY_XML_ID + '-' + ENTITY_ID] = "busy";
				}
			}, this);
			this.windowEvents['OnUCAfterRecordAdd'] = BX.delegate(function(ENTITY_XML_ID, ENTITY_ID, obj, data, comment) {
				if (this.ENTITY_XML_ID == ENTITY_XML_ID)
				{
					this.add(comment, data["messageId"], data, true, "simple");
				}
			}, this);
			this.windowEvents['OnUCFormResponse'] = BX.delegate(function(ENTITY_XML_ID, ENTITY_ID, obj, data, comment) {
				if (this.ENTITY_XML_ID == ENTITY_XML_ID)
				{
					this.pullNewRecords[ENTITY_XML_ID + '-0'] = "ready";
					this.pullNewRecords[ENTITY_XML_ID + '-' + ENTITY_ID] = "done";
					this.clearThumb(comment);
				}
			}, this);
			this.windowEvents['onPull-unicomments'] = BX.delegate(function(data) {
				var params = data.params;
				if (
					data.command == "comment_mobile"
					&& params["ENTITY_XML_ID"] == this.ENTITY_XML_ID
					&& (
						((params["USER_ID"] + '') != (BX.message("USER_ID") + ''))
						||
						( params["EXEMPLAR_ID"] && params["EXEMPLAR_ID"] != this.exemplarId )
						||
						(
							typeof params["AUX"] != 'undefined'
							&& BX.util.in_array(params["AUX"], ['createtask', 'fileversion'])
						)
					)
				)
				{
					if (data.command == 'comment_mobile' && params["ID"])
					{
						if (params["COMMENT_EXEMPLAR_ID"])
							repo.commentExemplarId[params["ENTITY_XML_ID"] + '_' + params["COMMENT_EXEMPLAR_ID"]] = true;
						this.pullNewRecord(params);
					}
					else if (data.command === 'answer' &&
						((params["USER_ID"] + '') !== (BX.message("USER_ID") + '')) &&
						(!params["COMMENT_EXEMPLAR_ID"] || repo.commentExemplarId[params["ENTITY_XML_ID"] + '_' + params["COMMENT_EXEMPLAR_ID"]] !== true)
					)
					{
						this.pullNewAuthor(params["USER_ID"], params["NAME"], params["AVATAR"]);
					}
				}
			}, this);

			BX.addCustomEvent(window, 'OnUCFormResponse', this.windowEvents['OnUCFormResponse']);
			BX.addCustomEvent(window, 'OnUCAfterRecordAdd', this.windowEvents['OnUCAfterRecordAdd']);
			BX.addCustomEvent(window, 'OnUCFormBeforeSubmit', this.windowEvents['OnUCFormBeforeSubmit']);
			BXMobileApp.addCustomEvent(window, 'onPull-unicomments', this.windowEvents['onPull-unicomments']);

			if (staticParams['SHOW_POST_FORM'] == "Y")
			{
				MPFForm.link(this.ENTITY_XML_ID, formParams);
			}

			this.recalcMoreButtonsList();

			repo["list"][this.ENTITY_XML_ID] = this;
			return this;
		};
		BX.extend(BX.MPL, window["FCList"]);
		BX.MPL.prototype.init = function() {};
		BX.MPL.prototype.url["activity"] = BX.message("SITE_DIR") + 'mobile/?mobile_action=comment_activity';
		BX.MPL.prototype.makeThumb = function(id, message, txt, attachments) {
			var container = (message.node || BX('record-' + id.join('-') + '-cover'));
			if (!container)
			{
				var text = (BX.type.isString(txt) ? txt : "");
				text = BX.util.htmlspecialchars(text).replace(/\n/gi, "<br />");
				text = text.replace(/\001/, '').
					replace(/(\[\/user\])/gi, "\001").
					replace(/\[user=(\d+)\]([^\001]?.+)(\001)/gi, "$2").
					replace(/\001/, "[/user]");

				var html = window.fcParseTemplate(
					{ messageFields : { FULL_ID : id, POST_MESSAGE_TEXT : text, POST_TIMESTAMP : (new Date().getTime() / 1000) } },
					{ DATE_TIME_FORMAT : this.params.DATE_TIME_FORMAT, RIGHTS : this.rights },
					(BX.type.isArray(attachments) && attachments.length > 0 ? this.thumbForFile : this.thumb)), ob;

				ob = BX.processHTML(html, false);
				container = BX.create("DIV", {
					attrs : {id : ("record-" + id.join('-') + '-cover'), "className" : "feed-com-block-cover"},
					style : {opacity : 0, height : 0, overflow: "hidden"},
					html : ob.HTML});
				BX('record-' + id[0] + '-new').appendChild(container);

				var node = container,
					curPos = BX.pos(node),
					top = (curPos.top);

				window.scrollTo(0, top);

				(new BX["easing"]({
					duration : 500,
					start : { opacity : 0, height : 0},
					finish : { opacity: 100, height : node.scrollHeight},
					transition : BX.easing.makeEaseInOut(BX.easing.transitions.quad),
					step : function(state){
						node.style.height = state.height + "px";
						node.style.opacity = state.opacity / 100;
						window.scrollTo(0, top + state.height);
					},
					complete : function(){
						if (node.style.display !== 'none')
						{
							node.style.cssText = '';
						}
					}
				})).animate();

				var cnt = 0,
				func = function()
				{
					cnt++;
					if (cnt < 100)
					{
						var node = BX("record-" + id.join('-') + '-cover');
						if (node && node.childNodes.length > 0)
							BX.ajax.processScripts(ob.SCRIPT);
						else
							BX.defer(func, this)();
					}
				};
				BX.defer(func, this)();
			}
			BX.addClass(container, "feed-com-block-cover-wait");
			message.node = container;
			return container;
		};
		BX.MPL.prototype.clearThumb = function(message) {
			if (message && BX(message.node))
			{
				BX.removeClass(message.node, "feed-com-block-cover-wait");
			}
		};
		BX.MPL.prototype.add = function(comment, newId, data) {
			if (BX.type.isArray(comment))
			{
				BX.MPL.superclass.add.apply(this, arguments);
			}
			else if (BX(comment["node"]))
			{
				comment["node"].setAttribute("id", 'record-' + newId.join('-') + '-cover');
				BX.MPL.superclass.add.apply(this, [newId, data, true, "simple"]);
			}
			else
			{
				BX.MPL.superclass.add.apply(this, [newId, data]);
			}
			if (window["BitrixMobile"] && window["BitrixMobile"]["LazyLoad"])
				setTimeout(function() { window.BitrixMobile.LazyLoad.showImages(); }, 500);
		};
		BX.MPL.prototype.send = function() {
			if (BX(this.nav))
			{
				var waiter = BX.findChild(this.nav, { className: 'post-comments-button-waiter'});
				if (waiter)
				{
					BX.addClass(waiter, "post-comments-button-waiter-active");
				}
			}
			BX.MPL.superclass.send.apply(this, arguments);
		};
		BX.MPL.prototype.build = function() {
			if (BX(this.nav))
			{
				var waiter = BX.findChild(this.nav, { className: 'post-comments-button-waiter'});
				if (waiter)
				{
					BX.removeClass(waiter, "post-comments-button-waiter-active");
				}
			}
			BX.MPL.superclass.build.apply(this, arguments);
		};
		BX.MPL.prototype.complete = function() {
			if (BX(this.nav))
			{
				var waiter = BX.findChild(this.nav, { className: 'post-comments-button-waiter'});
				if (waiter)
				{
					BX.removeClass(waiter, "post-comments-button-waiter-active");
				}
			}
			BX.MPL.superclass.complete.apply(this, arguments);
		};
		BX.MPL.prototype.showWait = function(id) {
			var container = BX('record-' + this.ENTITY_XML_ID + '-' + id + '-cover');
			if (id > 0 && container)
				BX.addClass(container, "feed-com-block-cover-wait");
		};
		BX.MPL.prototype.closeWait = function(id) {
			var container = BX('record-' + this.ENTITY_XML_ID + '-' + id + '-cover');
			if (id > 0 && container)
				BX.removeClass(container, "feed-com-block-cover-wait");
		};
		BX.MPL.prototype.recalcMoreButtonsList = function(listContainer) {
			if (!BX(listContainer))
			{
				listContainer = BX.findParent(BX('record-' + this.ENTITY_XML_ID + '-new'), { className: 'post-comments-wrap'});
			}
			if (listContainer)
			{
				var nodes = BX.findChildren(listContainer, {className: 'post-comment-more'}, true);
				for (var i = 0; i < nodes.length; i++)
				{
					this.recalcMoreButton(nodes[i]);
				}
			}
		};
		BX.MPL.prototype.recalcMoreButton = function(buttonNode) {
			if (BX(buttonNode))
			{
				var outerNode = BX.findChild(BX(buttonNode).parentNode, { className: 'post-comment-wrap' });
				if (outerNode)
				{
					var innerNode = BX.findChild(outerNode, { className: 'post-comment-text' });
					if (innerNode)
					{
						var posInner = BX.pos(innerNode);
						var posOuter = BX.pos(outerNode);
						if (posOuter.height >= posInner.height)
						{
							BX.cleanNode(BX(buttonNode), true);
						}
					}
				}
			}
		};
		BX.MPL.prototype.findMoreButton = function(commentNode) {
			return BX.findChild(BX(commentNode), { className: 'post-comment-more' }, true);
		};
		BX.MPL.createInstance = function(params, staticParams, formParams) {
			return (new BX.MPL(params, staticParams, formParams));
		};

		BX.MPL.getInstance = function(entity_xml_id) {
			return repo['list'][entity_xml_id];
		};

		BX.addCustomEvent(window, "OnUCHasBeenDestroyed", function(ENTITY_XML_ID) {
			delete repo["list"][ENTITY_XML_ID];
		});
		BX.onCustomEvent("main.post.list/mobile", ["script.js"]);
		BX.removeCustomEvent("main.post.list/default", function(){ init(window); });
	};
	BX.addCustomEvent("main.post.list/default", function(){ init(window); });
	if (window["FCList"])
		init(window);
})();

Zerion Mini Shell 1.0