| 
									
										
										
										
											2019-02-12 10:29:50 +00:00
										 |  |  | // @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPLv3-or-later
 | 
					
						
							| 
									
										
										
										
											2019-06-03 12:30:24 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill
 | 
					
						
							|  |  |  | if (!Element.prototype.matches) { | 
					
						
							|  |  |  | 	Element.prototype.matches = | 
					
						
							|  |  |  | 		Element.prototype.matchesSelector || | 
					
						
							|  |  |  | 		Element.prototype.mozMatchesSelector || | 
					
						
							|  |  |  | 		Element.prototype.msMatchesSelector || | 
					
						
							|  |  |  | 		Element.prototype.oMatchesSelector || | 
					
						
							|  |  |  | 		Element.prototype.webkitMatchesSelector || | 
					
						
							|  |  |  | 		function(s) { | 
					
						
							|  |  |  | 			var matches = (this.document || this.ownerDocument).querySelectorAll(s), | 
					
						
							|  |  |  | 				i = matches.length; | 
					
						
							|  |  |  | 			while (--i >= 0 && matches.item(i) !== this) {} | 
					
						
							|  |  |  | 			return i > -1; | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function resizeIframe(obj) { | 
					
						
							|  |  |  | 	_resizeIframe(obj, 0); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-12-28 17:27:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function _resizeIframe(obj, desth) { | 
					
						
							|  |  |  | 	var h = obj.style.height; | 
					
						
							|  |  |  | 	var ch = obj.contentWindow.document.body.scrollHeight; | 
					
						
							| 
									
										
										
										
											2010-07-08 14:03:25 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	if (h == (ch + 'px')) { | 
					
						
							|  |  |  | 		return; | 
					
						
							| 
									
										
										
										
											2016-09-29 03:17:49 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 	if (desth == ch && ch > 0) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		obj.style.height  = ch + 'px'; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	setTimeout(_resizeIframe, 100, obj, ch); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2010-07-12 07:49:06 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-11 08:41:14 +00:00
										 |  |  | function initWidget(inflated, deflated) { | 
					
						
							|  |  |  | 	var elInf = document.getElementById(inflated); | 
					
						
							|  |  |  | 	var elDef = document.getElementById(deflated); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (!elInf || !elDef) { | 
					
						
							|  |  |  | 		return; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-01-14 07:04:42 +00:00
										 |  |  | 	if (localStorage.getItem(window.location.pathname.split("/")[1] + ":" + inflated) != "none") { | 
					
						
							| 
									
										
										
										
											2020-01-11 08:41:14 +00:00
										 |  |  | 		elInf.style.display = "block"; | 
					
						
							|  |  |  | 		elDef.style.display = "none"; | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		elInf.style.display = "none"; | 
					
						
							|  |  |  | 		elDef.style.display = "block"; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function openCloseWidget(inflated, deflated) { | 
					
						
							|  |  |  | 	var elInf = document.getElementById(inflated); | 
					
						
							|  |  |  | 	var elDef = document.getElementById(deflated); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (!elInf || !elDef) { | 
					
						
							|  |  |  | 		return; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (window.getComputedStyle(elInf).display === "none") { | 
					
						
							|  |  |  | 		elInf.style.display = "block"; | 
					
						
							|  |  |  | 		elDef.style.display = "none"; | 
					
						
							| 
									
										
										
										
											2020-01-14 07:04:42 +00:00
										 |  |  | 		localStorage.setItem(window.location.pathname.split("/")[1] + ":" + inflated, "block"); | 
					
						
							| 
									
										
										
										
											2020-01-11 08:41:14 +00:00
										 |  |  | 	} else { | 
					
						
							|  |  |  | 		elInf.style.display = "none"; | 
					
						
							|  |  |  | 		elDef.style.display = "block"; | 
					
						
							| 
									
										
										
										
											2020-01-14 07:04:42 +00:00
										 |  |  | 		localStorage.setItem(window.location.pathname.split("/")[1] + ":" + inflated, "none"); | 
					
						
							| 
									
										
										
										
											2020-01-11 08:41:14 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function openClose(theID) { | 
					
						
							| 
									
										
										
										
											2019-02-15 03:26:18 +00:00
										 |  |  | 	var el = document.getElementById(theID); | 
					
						
							|  |  |  | 	if (el) { | 
					
						
							|  |  |  | 		if (window.getComputedStyle(el).display === "none") { | 
					
						
							|  |  |  | 			openMenu(theID); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			closeMenu(theID); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2016-09-29 03:17:49 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2010-07-12 07:49:06 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function openMenu(theID) { | 
					
						
							| 
									
										
										
										
											2018-10-24 14:20:10 +00:00
										 |  |  | 	var el = document.getElementById(theID); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	if (el) { | 
					
						
							| 
									
										
										
										
											2019-02-15 03:26:18 +00:00
										 |  |  | 		if (!el.dataset.display) { | 
					
						
							|  |  |  | 			el.dataset.display = 'block'; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		el.style.display = el.dataset.display; | 
					
						
							| 
									
										
										
										
											2016-09-29 03:17:49 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2010-07-12 07:49:06 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function closeMenu(theID) { | 
					
						
							| 
									
										
										
										
											2019-02-15 03:26:18 +00:00
										 |  |  | 	var el = document.getElementById(theID); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	if (el) { | 
					
						
							| 
									
										
										
										
											2019-02-15 03:26:18 +00:00
										 |  |  | 		el.dataset.display = window.getComputedStyle(el).display; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		el.style.display = "none"; | 
					
						
							| 
									
										
										
										
											2016-09-29 03:17:49 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2012-03-31 12:51:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function decodeHtml(html) { | 
					
						
							|  |  |  | 	var txt = document.createElement("textarea"); | 
					
						
							| 
									
										
										
										
											2012-04-18 11:23:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	txt.innerHTML = html; | 
					
						
							|  |  |  | 	return txt.value; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-07-29 09:30:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-14 04:40:00 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Retrieves a single named query string parameter | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param {string} name | 
					
						
							|  |  |  |  * @returns {string} | 
					
						
							|  |  |  |  * @see https://davidwalsh.name/query-string-javascript
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | function getUrlParameter(name) { | 
					
						
							|  |  |  | 	name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); | 
					
						
							|  |  |  | 	var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); | 
					
						
							|  |  |  | 	var results = regex.exec(location.search); | 
					
						
							|  |  |  | 	return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | var src = null; | 
					
						
							|  |  |  | var prev = null; | 
					
						
							|  |  |  | var livetime = null; | 
					
						
							|  |  |  | var force_update = false; | 
					
						
							| 
									
										
										
										
											2018-02-28 04:58:53 +00:00
										 |  |  | var update_item = 0; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | var stopped = false; | 
					
						
							|  |  |  | var totStopped = false; | 
					
						
							|  |  |  | var timer = null; | 
					
						
							|  |  |  | var pr = 0; | 
					
						
							|  |  |  | var liking = 0; | 
					
						
							|  |  |  | var in_progress = false; | 
					
						
							|  |  |  | var langSelect = false; | 
					
						
							|  |  |  | var commentBusy = false; | 
					
						
							|  |  |  | var last_popup_menu = null; | 
					
						
							|  |  |  | var last_popup_button = null; | 
					
						
							|  |  |  | var lockLoadContent = false; | 
					
						
							| 
									
										
										
										
											2020-05-26 14:23:27 +00:00
										 |  |  | var originalTitle = document.title; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-11 19:27:05 +00:00
										 |  |  | const urlRegex = /^(?:https?:\/\/|\s)[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})(?:\/+[a-z0-9_.:;-]*)*(?:\?[&%|+a-z0-9_=,.:;-]*)?(?:[&%|+&a-z0-9_=,:;.-]*)(?:[!#\/&%|+a-z0-9_=,:;.-]*)}*$/i; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | $(function() { | 
					
						
							|  |  |  | 	$.ajaxSetup({cache: false}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* setup comment textarea buttons */ | 
					
						
							|  |  |  | 	/* comment textarea buttons needs some "data-*" attributes to work: | 
					
						
							|  |  |  | 	 * 		data-role="insert-formatting" : to mark the element as a formatting button | 
					
						
							|  |  |  | 	 * 		data-bbcode="<string>" : name of the bbcode element to insert. insertFormatting() will insert it as "[name][/name]" | 
					
						
							|  |  |  | 	 * 		data-id="<string>" : id of the comment, used to find other comment-related element, like the textarea | 
					
						
							|  |  |  | 	 * */ | 
					
						
							|  |  |  | 	$('body').on('click','[data-role="insert-formatting"]', function(e) { | 
					
						
							|  |  |  | 		e.preventDefault(); | 
					
						
							|  |  |  | 		var o = $(this); | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 		var bbcode = o.data('bbcode'); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		var id = o.data('id'); | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 		if (bbcode == "img") { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			Dialog.doImageBrowser("comment", id); | 
					
						
							|  |  |  | 			return; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-09-13 15:46:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		if (bbcode == "imgprv") { | 
					
						
							|  |  |  | 			bbcode = "img"; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		insertFormatting(bbcode, id); | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	/* event from comment textarea button popups */ | 
					
						
							|  |  |  | 	/* insert returned bbcode at cursor position or replace selected text */ | 
					
						
							|  |  |  | 	$("body").on("fbrowser.image.comment", function(e, filename, bbcode, id) { | 
					
						
							|  |  |  | 		$.colorbox.close(); | 
					
						
							|  |  |  | 		var textarea = document.getElementById("comment-edit-text-" +id); | 
					
						
							|  |  |  | 		var start = textarea.selectionStart; | 
					
						
							|  |  |  | 		var end = textarea.selectionEnd; | 
					
						
							|  |  |  | 		textarea.value = textarea.value.substring(0, start) + bbcode + textarea.value.substring(end, textarea.value.length); | 
					
						
							|  |  |  | 		$(textarea).trigger('change'); | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-28 01:36:33 +00:00
										 |  |  | 	$(".comment-edit-wrapper textarea, .wall-item-comment-wrapper textarea") | 
					
						
							|  |  |  | 		.editor_autocomplete(baseurl + '/search/acl') | 
					
						
							|  |  |  | 		.bbco_autocomplete('bbcode'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Ensures asynchronously-added comment forms recognize mentions, tags and BBCodes as well
 | 
					
						
							|  |  |  | 	document.addEventListener("postprocess_liveupdate", function() { | 
					
						
							|  |  |  | 		$(".comment-edit-wrapper textarea, .wall-item-comment-wrapper textarea") | 
					
						
							|  |  |  | 			.editor_autocomplete(baseurl + '/search/acl') | 
					
						
							|  |  |  | 			.bbco_autocomplete('bbcode'); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	/* popup menus */ | 
					
						
							|  |  |  | 	function close_last_popup_menu() { | 
					
						
							|  |  |  | 		if (last_popup_menu) { | 
					
						
							|  |  |  | 			last_popup_menu.hide(); | 
					
						
							|  |  |  | 			last_popup_menu.off('click', function(e) {e.stopPropagation()}); | 
					
						
							|  |  |  | 			last_popup_button.removeClass("selected"); | 
					
						
							|  |  |  | 			last_popup_menu = null; | 
					
						
							|  |  |  | 			last_popup_button = null; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	$('a[rel^="#"]').click(function(e) { | 
					
						
							|  |  |  | 		e.preventDefault(); | 
					
						
							|  |  |  | 		var parent = $(this).parent(); | 
					
						
							|  |  |  | 		var isSelected = (last_popup_button && parent.attr('id') == last_popup_button.attr('id')); | 
					
						
							|  |  |  | 		close_last_popup_menu(); | 
					
						
							|  |  |  | 		if (isSelected) { | 
					
						
							|  |  |  | 			return false; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 		menu = $($(this).attr('rel')); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		e.preventDefault(); | 
					
						
							|  |  |  | 		e.stopPropagation(); | 
					
						
							|  |  |  | 		if (menu.attr('popup') == "false") { | 
					
						
							|  |  |  | 			return false; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		parent.toggleClass("selected"); | 
					
						
							|  |  |  | 		menu.toggle(); | 
					
						
							|  |  |  | 		if (menu.css("display") == "none") { | 
					
						
							|  |  |  | 			last_popup_menu = null; | 
					
						
							|  |  |  | 			last_popup_button = null; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			last_popup_menu = menu; | 
					
						
							|  |  |  | 			last_popup_menu.on('click', function(e) {e.stopPropagation()}); | 
					
						
							|  |  |  | 			last_popup_button = parent; | 
					
						
							|  |  |  | 			$('#nav-notifications-menu').perfectScrollbar('update'); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return false; | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 	$('html').click(function() { | 
					
						
							|  |  |  | 		close_last_popup_menu(); | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	// fancyboxes
 | 
					
						
							|  |  |  | 	$("a.popupbox").colorbox({ | 
					
						
							|  |  |  | 		'inline' : true, | 
					
						
							|  |  |  | 		'transition' : 'elastic', | 
					
						
							|  |  |  | 		'maxWidth' : '100%' | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 	$("a.ajax-popupbox").colorbox({ | 
					
						
							|  |  |  | 		'transition' : 'elastic', | 
					
						
							|  |  |  | 		'maxWidth' : '100%' | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* notifications template */ | 
					
						
							|  |  |  | 	var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 	var notifications_all = unescape($('<div>').append($("#nav-notifications-see-all").clone()).html()); //outerHtml hack
 | 
					
						
							|  |  |  | 	var notifications_mark = unescape($('<div>').append($("#nav-notifications-mark-all").clone()).html()); //outerHtml hack
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	var notifications_empty = unescape($("#nav-notifications-menu").html()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* enable perfect-scrollbars for different elements */ | 
					
						
							|  |  |  | 	$('#nav-notifications-menu, aside').perfectScrollbar(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* nav update event  */ | 
					
						
							|  |  |  | 	$('nav').bind('nav-update', function(e, data) { | 
					
						
							|  |  |  | 		var invalid = data.invalid || 0; | 
					
						
							|  |  |  | 		if (invalid == 1) { | 
					
						
							|  |  |  | 			window.location.href=window.location.href | 
					
						
							| 
									
										
										
										
											2015-06-24 07:49:53 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-26 14:23:27 +00:00
										 |  |  | 		let tabNotifications = data.mail + data.notification; | 
					
						
							|  |  |  | 		if (tabNotifications > 0) { | 
					
						
							|  |  |  | 			document.title = '(' + tabNotifications + ') ' + originalTitle; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			document.title = originalTitle; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-25 16:25:11 +00:00
										 |  |  | 		['net', 'home', 'intro', 'mail', 'events', 'birthdays', 'notification'].forEach(function(type) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			var number = data[type]; | 
					
						
							|  |  |  | 			if (number == 0) { | 
					
						
							|  |  |  | 				number = ''; | 
					
						
							|  |  |  | 				$('#' + type + '-update').removeClass('show'); | 
					
						
							| 
									
										
										
										
											2012-03-23 13:09:06 +00:00
										 |  |  | 			} else { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 				$('#' + type + '-update').addClass('show'); | 
					
						
							| 
									
										
										
										
											2012-03-23 13:09:06 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			$('#' + type + '-update').text(number); | 
					
						
							| 
									
										
										
										
											2012-03-23 13:09:06 +00:00
										 |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		var intro = data['intro']; | 
					
						
							|  |  |  | 		if (intro == 0) { | 
					
						
							|  |  |  | 			intro = ''; $('#intro-update-li').removeClass('show') | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			$('#intro-update-li').addClass('show') | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2011-07-25 14:54:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		$('#intro-update-li').html(intro); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		var mail = data['mail']; | 
					
						
							|  |  |  | 		if (mail == 0) { | 
					
						
							|  |  |  | 			mail = ''; $('#mail-update-li').removeClass('show') | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			$('#mail-update-li').addClass('show') | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		$('#mail-update-li').html(mail); | 
					
						
							| 
									
										
										
										
											2012-04-06 09:19:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		$(".sidebar-group-li .notify").removeClass("show"); | 
					
						
							|  |  |  | 		$(data.groups).each(function(key, group) { | 
					
						
							|  |  |  | 			var gid = group.id; | 
					
						
							|  |  |  | 			var gcount = group.count; | 
					
						
							|  |  |  | 			$(".group-"+gid+" .notify").addClass("show").text(gcount); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2011-10-10 07:26:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		$(".forum-widget-entry .notify").removeClass("show"); | 
					
						
							|  |  |  | 		$(data.forums).each(function(key, forum) { | 
					
						
							|  |  |  | 			var fid = forum.id; | 
					
						
							|  |  |  | 			var fcount = forum.count; | 
					
						
							|  |  |  | 			$(".forum-"+fid+" .notify").addClass("show").text(fcount); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2015-11-08 17:02:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		if (data.notifications.length == 0) { | 
					
						
							|  |  |  | 			$("#nav-notifications-menu").html(notifications_empty); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			var nnm = $("#nav-notifications-menu"); | 
					
						
							|  |  |  | 			nnm.html(notifications_all + notifications_mark); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			var lastItemStorageKey = "notification-lastitem:" + localUser; | 
					
						
							|  |  |  | 			var notification_lastitem = parseInt(localStorage.getItem(lastItemStorageKey)); | 
					
						
							|  |  |  | 			var notification_id = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// Insert notifs into the notifications-menu
 | 
					
						
							| 
									
										
										
										
											2020-01-24 17:56:34 +00:00
										 |  |  | 			$(data.notifications).each(function(key, notification) { | 
					
						
							|  |  |  | 				var text = notification.message.format('<span class="contactname">' + notification.name + '</span>'); | 
					
						
							|  |  |  | 				var contact = ('<a href="' + notification.url + '"><span class="contactname">' + notification.name + '</span></a>'); | 
					
						
							|  |  |  | 				var seenclass = (notification.seen == 1) ? "notification-seen" : "notification-unseen"; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 				var html = notifications_tpl.format( | 
					
						
							| 
									
										
										
										
											2020-01-24 17:56:34 +00:00
										 |  |  | 					notification.href,                     // {0}  // link to the source
 | 
					
						
							|  |  |  | 					notification.photo,                    // {1}  // photo of the contact
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 					text,                           // {2}  // preformatted text (autor + text)
 | 
					
						
							| 
									
										
										
										
											2020-01-24 17:56:34 +00:00
										 |  |  | 					notification.date,                     // {3}  // date of notification (time ago)
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 					seenclass,                      // {4}  // visited status of the notification
 | 
					
						
							| 
									
										
										
										
											2020-01-24 17:56:34 +00:00
										 |  |  | 					new Date(notification.timestamp*1000), // {5}  // date of notification
 | 
					
						
							|  |  |  | 					notification.url,                      // {6}  // profile url of the contact
 | 
					
						
							|  |  |  | 					notification.message.format(contact),  // {7}  // preformatted html (text including author profile url)
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 					''                              // {8}  // Deprecated
 | 
					
						
							|  |  |  | 				); | 
					
						
							|  |  |  | 				nnm.append(html); | 
					
						
							| 
									
										
										
										
											2015-11-24 21:14:26 +00:00
										 |  |  | 			}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			// Desktop Notifications
 | 
					
						
							|  |  |  | 			$(data.notifications.reverse()).each(function(key, e) { | 
					
						
							|  |  |  | 				notification_id = parseInt(e.timestamp); | 
					
						
							|  |  |  | 				if (notification_lastitem !== null && notification_id > notification_lastitem && Number(e.seen) === 0) { | 
					
						
							|  |  |  | 					if (getNotificationPermission() === "granted") { | 
					
						
							|  |  |  | 						var notification = new Notification(document.title, { | 
					
						
							|  |  |  | 										  body: decodeHtml(e.message.replace('→ ', '').format(e.name)), | 
					
						
							|  |  |  | 										  icon: e.photo, | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 										}); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 						notification['url'] = e.href; | 
					
						
							|  |  |  | 						notification.addEventListener("click", function(ev) { | 
					
						
							|  |  |  | 							window.location = ev.target.url; | 
					
						
							|  |  |  | 						}); | 
					
						
							| 
									
										
										
										
											2015-06-24 08:56:10 +00:00
										 |  |  | 					} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-05 12:01:21 +00:00
										 |  |  | 			}); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			notification_lastitem = notification_id; | 
					
						
							|  |  |  | 			localStorage.setItem(lastItemStorageKey, notification_lastitem) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			$("img[data-src]", nnm).each(function(i, el) { | 
					
						
							|  |  |  | 				// Add src attribute for images with a data-src attribute
 | 
					
						
							|  |  |  | 				// However, don't bother if the data-src attribute is empty, because
 | 
					
						
							|  |  |  | 				// an empty "src" tag for an image will cause some browsers
 | 
					
						
							|  |  |  | 				// to prefetch the root page of the Friendica hub, which will
 | 
					
						
							|  |  |  | 				// unnecessarily load an entire profile/ or network/ page
 | 
					
						
							|  |  |  | 				if ($(el).data("src") != '') { | 
					
						
							|  |  |  | 					$(el).attr('src', $(el).data("src")); | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2011-09-05 12:01:21 +00:00
										 |  |  | 			}); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-25 16:25:11 +00:00
										 |  |  | 		var notif = data['notification']; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		if (notif > 0) { | 
					
						
							|  |  |  | 			$("#nav-notifications-linkmenu").addClass("on"); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			$("#nav-notifications-linkmenu").removeClass("on"); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-12-28 22:16:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		$(data.sysmsgs.notice).each(function(key, message) { | 
					
						
							|  |  |  | 			$.jGrowl(message, {sticky: true, theme: 'notice'}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 		$(data.sysmsgs.info).each(function(key, message) { | 
					
						
							|  |  |  | 			$.jGrowl(message, {sticky: false, theme: 'info', life: 5000}); | 
					
						
							| 
									
										
										
										
											2011-06-16 10:04:27 +00:00
										 |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2012-12-29 23:28:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		// Update the js scrollbars
 | 
					
						
							|  |  |  | 		$('#nav-notifications-menu').perfectScrollbar('update'); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-14 01:01:36 +00:00
										 |  |  | 	// Asynchronous calls are deferred until the very end of the page load to ease on slower connections
 | 
					
						
							|  |  |  | 	window.addEventListener("load", function(){ | 
					
						
							|  |  |  | 		NavUpdate(); | 
					
						
							| 
									
										
										
										
											2018-09-09 13:54:54 +00:00
										 |  |  | 		if (typeof acl !== 'undefined') { | 
					
						
							|  |  |  | 			acl.get(0, 100); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-08-14 01:01:36 +00:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	// Allow folks to stop the ajax page updates with the pause/break key
 | 
					
						
							|  |  |  | 	$(document).keydown(function(event) { | 
					
						
							|  |  |  | 		if (event.keyCode == '8') { | 
					
						
							|  |  |  | 			var target = event.target || event.srcElement; | 
					
						
							|  |  |  | 			if (!/input|textarea/i.test(target.nodeName)) { | 
					
						
							|  |  |  | 				return false; | 
					
						
							| 
									
										
										
										
											2012-03-31 12:51:56 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (event.keyCode == '19' || (event.ctrlKey && event.which == '32')) { | 
					
						
							|  |  |  | 			event.preventDefault(); | 
					
						
							|  |  |  | 			if (stopped == false) { | 
					
						
							|  |  |  | 				stopped = true; | 
					
						
							|  |  |  | 				if (event.ctrlKey) { | 
					
						
							|  |  |  | 					totStopped = true; | 
					
						
							| 
									
										
										
										
											2010-08-24 03:48:47 +00:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 				$('#pause').html('<img src="images/pause.gif" alt="pause" style="border: 1px solid black;" />'); | 
					
						
							| 
									
										
										
										
											2011-12-06 08:00:27 +00:00
										 |  |  | 			} else { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 				unpause(); | 
					
						
							| 
									
										
										
										
											2011-07-21 00:17:08 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		} else if (!totStopped) { | 
					
						
							|  |  |  | 			unpause(); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	// Scroll to the next/previous thread when pressing J and K
 | 
					
						
							|  |  |  | 	$(document).keydown(function (event) { | 
					
						
							|  |  |  | 		var threads = $('.thread_level_1'); | 
					
						
							|  |  |  | 		if ((event.keyCode === 74 || event.keyCode === 75) && !$(event.target).is('textarea, input')) { | 
					
						
							|  |  |  | 			var scrollTop = $(window).scrollTop(); | 
					
						
							|  |  |  | 			if (event.keyCode === 75) { | 
					
						
							|  |  |  | 				threads = $(threads.get().reverse()); | 
					
						
							| 
									
										
										
										
											2017-04-12 21:16:44 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			threads.each(function(key, item) { | 
					
						
							|  |  |  | 				var comparison; | 
					
						
							|  |  |  | 				var top = $(item).offset().top - 100; | 
					
						
							|  |  |  | 				if (event.keyCode === 74) { | 
					
						
							|  |  |  | 					comparison = top > scrollTop + 1; | 
					
						
							|  |  |  | 				} else if (event.keyCode === 75) { | 
					
						
							|  |  |  | 					comparison = top < scrollTop - 1; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				if (comparison) { | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 					$('html, body').animate({scrollTop: top}, 200); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 					return false; | 
					
						
							| 
									
										
										
										
											2016-05-10 23:52:05 +00:00
										 |  |  | 				} | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2010-08-19 11:59:31 +00:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	// Set an event listener for infinite scroll
 | 
					
						
							|  |  |  | 	if (typeof infinite_scroll !== 'undefined') { | 
					
						
							|  |  |  | 		$(window).scroll(function(e) { | 
					
						
							|  |  |  | 			if ($(document).height() != $(window).height()) { | 
					
						
							|  |  |  | 				// First method that is expected to work - but has problems with Chrome
 | 
					
						
							|  |  |  | 				if ($(window).scrollTop() > ($(document).height() - $(window).height() * 1.5)) | 
					
						
							|  |  |  | 					loadScrollContent(); | 
					
						
							|  |  |  | 			} else { | 
					
						
							|  |  |  | 				// This method works with Chrome - but seems to be much slower in Firefox
 | 
					
						
							|  |  |  | 				if ($(window).scrollTop() > (($("section").height() + $("header").height() + $("footer").height()) - $(window).height() * 1.5)) { | 
					
						
							|  |  |  | 					loadScrollContent(); | 
					
						
							| 
									
										
										
										
											2016-11-17 04:26:43 +00:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2011-12-13 02:08:09 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-11 20:12:36 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Inserts a BBCode tag in the comment textarea identified by id | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param {string} BBCode | 
					
						
							|  |  |  |  * @param {int} id | 
					
						
							|  |  |  |  * @returns {boolean} | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | function insertFormatting(BBCode, id) { | 
					
						
							|  |  |  | 	let textarea = document.getElementById('comment-edit-text-' + id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (textarea.value === '') { | 
					
						
							|  |  |  | 		$(textarea) | 
					
						
							|  |  |  | 			.addClass("comment-edit-text-full") | 
					
						
							|  |  |  | 			.removeClass("comment-edit-text-empty"); | 
					
						
							|  |  |  | 		closeMenu("comment-fake-form-" + id); | 
					
						
							|  |  |  | 		openMenu("item-comments-" + id); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	insertBBCodeInTextarea(BBCode, textarea); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Inserts a BBCode tag in the provided textarea element, wrapping the currently selected text. | 
					
						
							|  |  |  |  * For URL BBCode, it discriminates between link text and non-link text to determine where to insert the selected text. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param {string} BBCode | 
					
						
							|  |  |  |  * @param {HTMLTextAreaElement} textarea | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | function insertBBCodeInTextarea(BBCode, textarea) { | 
					
						
							|  |  |  | 	let selectionStart = textarea.selectionStart; | 
					
						
							|  |  |  | 	let selectionEnd = textarea.selectionEnd; | 
					
						
							|  |  |  | 	let selectedText = textarea.value.substring(selectionStart, selectionEnd); | 
					
						
							|  |  |  | 	let openingTag = '[' + BBCode + ']'; | 
					
						
							|  |  |  | 	let closingTag = '[/' + BBCode + ']'; | 
					
						
							|  |  |  | 	let cursorPosition = selectionStart + openingTag.length + selectedText.length; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (BBCode === 'url') { | 
					
						
							|  |  |  | 		if (urlRegex.test(selectedText)) { | 
					
						
							|  |  |  | 			openingTag = '[' + BBCode + '=' + selectedText + ']'; | 
					
						
							|  |  |  | 			selectedText = ''; | 
					
						
							|  |  |  | 			cursorPosition = selectionStart + openingTag.length; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			openingTag = '[' + BBCode + '=]'; | 
					
						
							|  |  |  | 			cursorPosition = selectionStart + openingTag.length - 1; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	textarea.value = textarea.value.substring(0, selectionStart) + openingTag + selectedText + closingTag + textarea.value.substring(selectionEnd, textarea.value.length); | 
					
						
							|  |  |  | 	textarea.setSelectionRange(cursorPosition, cursorPosition); | 
					
						
							|  |  |  | 	textarea.dispatchEvent(new Event('change')); | 
					
						
							|  |  |  | 	textarea.focus(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function NavUpdate() { | 
					
						
							|  |  |  | 	if (!stopped) { | 
					
						
							| 
									
										
										
										
											2020-01-13 20:10:13 +00:00
										 |  |  | 		var pingCmd = 'ping?format=json' + ((localUser != 0) ? '&uid=' + localUser : ''); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		$.get(pingCmd, function(data) { | 
					
						
							|  |  |  | 			if (data.result) { | 
					
						
							|  |  |  | 				// send nav-update event
 | 
					
						
							|  |  |  | 				$('nav').trigger('nav-update', data.result); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// start live update
 | 
					
						
							| 
									
										
										
										
											2018-11-06 21:22:42 +00:00
										 |  |  | 				['network', 'profile', 'community', 'notes', 'display', 'contact'].forEach(function (src) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 					if ($('#live-' + src).length) { | 
					
						
							|  |  |  | 						liveUpdate(src); | 
					
						
							| 
									
										
										
										
											2012-11-02 00:31:50 +00:00
										 |  |  | 					} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 				}); | 
					
						
							|  |  |  | 				if ($('#live-photos').length) { | 
					
						
							|  |  |  | 					if (liking) { | 
					
						
							|  |  |  | 						liking = 0; | 
					
						
							|  |  |  | 						window.location.href = window.location.href; | 
					
						
							| 
									
										
										
										
											2012-11-02 00:31:50 +00:00
										 |  |  | 					} | 
					
						
							| 
									
										
										
										
											2010-08-19 11:59:31 +00:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2011-04-19 02:08:50 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2010-08-19 11:59:31 +00:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	timer = setTimeout(NavUpdate, updateInterval); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2010-08-19 11:59:31 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-16 11:38:32 +00:00
										 |  |  | function updateConvItems(data) { | 
					
						
							|  |  |  | 	// add a new thread
 | 
					
						
							|  |  |  | 	$('.toplevel_item',data).each(function() { | 
					
						
							|  |  |  | 		var ident = $(this).attr('id'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Add new top-level item.
 | 
					
						
							| 
									
										
										
										
											2020-02-14 04:40:00 +00:00
										 |  |  | 		if ($('#' + ident).length === 0 | 
					
						
							|  |  |  | 			&& (!getUrlParameter('page') | 
					
						
							| 
									
										
										
										
											2020-02-16 09:38:56 +00:00
										 |  |  | 				&& !getUrlParameter('max_id') | 
					
						
							| 
									
										
										
										
											2020-10-13 03:45:02 +00:00
										 |  |  | 				&& !getUrlParameter('min_id') | 
					
						
							| 
									
										
										
										
											2020-02-14 04:40:00 +00:00
										 |  |  | 				|| getUrlParameter('page') === '1' | 
					
						
							|  |  |  | 			) | 
					
						
							|  |  |  | 		) { | 
					
						
							| 
									
										
										
										
											2018-06-16 11:38:32 +00:00
										 |  |  | 			$('#' + prev).after($(this)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Replace already existing thread.
 | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			// Find out if the hidden comments are open, so we can keep it that way
 | 
					
						
							|  |  |  | 			// if a new comment has been posted
 | 
					
						
							|  |  |  | 			var id = $('.hide-comments-total', this).attr('id'); | 
					
						
							|  |  |  | 			if (typeof id != 'undefined') { | 
					
						
							|  |  |  | 				id = id.split('-')[3]; | 
					
						
							|  |  |  | 				var commentsOpen = $("#collapsed-comments-" + id).is(":visible"); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			$('#' + ident).replaceWith($(this)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			if (typeof id != 'undefined') { | 
					
						
							|  |  |  | 				if (commentsOpen) { | 
					
						
							|  |  |  | 					showHideComments(id); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		prev = ident; | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	$('.like-rotator').hide(); | 
					
						
							|  |  |  | 	if (commentBusy) { | 
					
						
							|  |  |  | 		commentBusy = false; | 
					
						
							|  |  |  | 		$('body').css('cursor', 'auto'); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function liveUpdate(src) { | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 	if ((src == null) || stopped || !profile_uid) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		$('.like-rotator').hide(); return; | 
					
						
							| 
									
										
										
										
											2010-08-19 11:59:31 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 	if (($('.comment-edit-text-full').length) || in_progress) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		if (livetime) { | 
					
						
							|  |  |  | 			clearTimeout(livetime); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		livetime = setTimeout(function() {liveUpdate(src)}, 5000); | 
					
						
							|  |  |  | 		return; | 
					
						
							| 
									
										
										
										
											2010-08-19 11:59:31 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2010-09-17 10:10:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	if (livetime != null) { | 
					
						
							|  |  |  | 		livetime = null; | 
					
						
							| 
									
										
										
										
											2010-09-17 10:10:19 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	prev = 'live-' + src; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	in_progress = true; | 
					
						
							| 
									
										
										
										
											2010-09-30 05:11:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-27 12:30:26 +00:00
										 |  |  | 	let force = force_update || $(document).scrollTop() === 0; | 
					
						
							| 
									
										
										
										
											2018-06-16 11:05:33 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	var orgHeight = $("section").height(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	var udargs = ((netargs.length) ? '/' + netargs : ''); | 
					
						
							| 
									
										
										
										
											2020-02-14 04:40:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-27 12:30:26 +00:00
										 |  |  | 	var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&force=' + (force ? 1 : 0) + '&item=' + update_item; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (force_update) { | 
					
						
							|  |  |  | 		force_update = false; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-02-14 04:40:00 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	if (getUrlParameter('page')) { | 
					
						
							|  |  |  | 		update_url += '&page=' + getUrlParameter('page'); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2020-10-13 03:45:02 +00:00
										 |  |  | 	if (getUrlParameter('min_id')) { | 
					
						
							|  |  |  | 		update_url += '&min_id=' + getUrlParameter('min_id'); | 
					
						
							| 
									
										
										
										
											2020-02-16 09:38:56 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	if (getUrlParameter('max_id')) { | 
					
						
							|  |  |  | 		update_url += '&max_id=' + getUrlParameter('max_id'); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-09-28 02:53:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-27 12:30:26 +00:00
										 |  |  | 	$.get(update_url, function(data) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		in_progress = false; | 
					
						
							| 
									
										
										
										
											2018-02-28 04:58:53 +00:00
										 |  |  | 		update_item = 0; | 
					
						
							| 
									
										
										
										
											2012-09-28 02:53:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-23 20:29:29 +00:00
										 |  |  | 		if ($('.wall-item-body', data).length == 0) { | 
					
						
							| 
									
										
										
										
											2020-10-20 20:43:51 +00:00
										 |  |  | 			return; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-16 11:05:33 +00:00
										 |  |  | 		$('.wall-item-body', data).imagesLoaded(function() { | 
					
						
							| 
									
										
										
										
											2018-06-16 11:38:32 +00:00
										 |  |  | 			updateConvItems(data); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-20 02:51:51 +00:00
										 |  |  | 			document.dispatchEvent(new Event('postprocess_liveupdate')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-16 11:38:32 +00:00
										 |  |  | 			// Update the scroll position.
 | 
					
						
							|  |  |  | 			$(window).scrollTop($(window).scrollTop() + $("section").height() - orgHeight); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2010-09-30 05:11:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function imgbright(node) { | 
					
						
							|  |  |  | 	$(node).removeClass("drophide").addClass("drop"); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2010-09-30 05:11:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function imgdull(node) { | 
					
						
							|  |  |  | 	$(node).removeClass("drop").addClass("drophide"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Since our ajax calls are asynchronous, we will give a few
 | 
					
						
							|  |  |  | // seconds for the first ajax call (setting like/dislike), then
 | 
					
						
							|  |  |  | // run the updater to pick up any changes and display on the page.
 | 
					
						
							|  |  |  | // The updater will turn any rotators off when it's done.
 | 
					
						
							|  |  |  | // This function will have returned long before any of these
 | 
					
						
							|  |  |  | // events have completed and therefore there won't be any
 | 
					
						
							|  |  |  | // visible feedback that anything changed without all this
 | 
					
						
							|  |  |  | // trickery. This still could cause confusion if the "like" ajax call
 | 
					
						
							|  |  |  | // is delayed and NavUpdate runs before it completes.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-27 12:40:00 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @param {int}     ident The id of the relevant item | 
					
						
							|  |  |  |  * @param {string}  verb  The verb of the action | 
					
						
							|  |  |  |  * @param {boolean} un    Whether to perform an activity removal instead of creation | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2021-01-30 21:42:34 +00:00
										 |  |  | function doActivityItem(ident, verb, un) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	unpause(); | 
					
						
							|  |  |  | 	$('#like-rotator-' + ident.toString()).show(); | 
					
						
							| 
									
										
										
										
											2020-05-27 12:40:00 +00:00
										 |  |  | 	verb = un ? 'un' + verb : verb; | 
					
						
							| 
									
										
										
										
											2021-01-30 22:11:54 +00:00
										 |  |  | 	$.post('item/' + ident.toString() + '/activity/' + verb, NavUpdate); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	liking = 1; | 
					
						
							|  |  |  | 	force_update = true; | 
					
						
							|  |  |  | 	update_item = ident.toString(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function dosubthread(ident) { | 
					
						
							|  |  |  | 	unpause(); | 
					
						
							|  |  |  | 	$('#like-rotator-' + ident.toString()).show(); | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 	$.get('subthread/' + ident.toString(), NavUpdate); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	liking = 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-30 22:51:27 +00:00
										 |  |  | function doStar(ident) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	ident = ident.toString(); | 
					
						
							|  |  |  | 	$('#like-rotator-' + ident).show(); | 
					
						
							| 
									
										
										
										
											2021-01-30 22:52:01 +00:00
										 |  |  | 	$.post('item/' + ident + '/star') | 
					
						
							| 
									
										
										
										
											2021-01-30 22:51:27 +00:00
										 |  |  | 	.then(function(data) { | 
					
						
							|  |  |  | 		if (data.state === 1) { | 
					
						
							|  |  |  | 			$('#starred-' + ident) | 
					
						
							|  |  |  | 				.addClass('starred') | 
					
						
							|  |  |  | 				.removeClass('unstarred'); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			$('#star-' + ident).addClass('hidden'); | 
					
						
							|  |  |  | 			$('#unstar-' + ident).removeClass('hidden'); | 
					
						
							|  |  |  | 		} else { | 
					
						
							| 
									
										
										
										
											2021-01-30 22:51:27 +00:00
										 |  |  | 			$('#starred-' + ident) | 
					
						
							|  |  |  | 				.addClass('unstarred') | 
					
						
							|  |  |  | 				.removeClass('starred'); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			$('#star-' + ident).removeClass('hidden'); | 
					
						
							|  |  |  | 			$('#unstar-' + ident).addClass('hidden'); | 
					
						
							| 
									
										
										
										
											2010-09-30 05:11:26 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2021-01-30 22:51:27 +00:00
										 |  |  | 	}) | 
					
						
							|  |  |  | 	.always(function () { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		$('#like-rotator-' + ident).hide(); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-30 23:05:40 +00:00
										 |  |  | function doPin(ident) { | 
					
						
							| 
									
										
										
										
											2019-11-07 05:39:15 +00:00
										 |  |  | 	ident = ident.toString(); | 
					
						
							|  |  |  | 	$('#like-rotator-' + ident).show(); | 
					
						
							| 
									
										
										
										
											2021-01-30 23:42:23 +00:00
										 |  |  | 	$.post('item/' + ident + '/pin') | 
					
						
							| 
									
										
										
										
											2021-01-30 23:05:40 +00:00
										 |  |  | 	.then(function(data) { | 
					
						
							| 
									
										
										
										
											2021-01-30 23:42:23 +00:00
										 |  |  | 		if (data.state === 1) { | 
					
						
							| 
									
										
										
										
											2021-01-30 23:05:40 +00:00
										 |  |  | 			$('#pinned-' + ident) | 
					
						
							|  |  |  | 				.addClass('pinned') | 
					
						
							|  |  |  | 				.removeClass('unpinned'); | 
					
						
							| 
									
										
										
										
											2019-11-07 05:39:15 +00:00
										 |  |  | 			$('#pin-' + ident).addClass('hidden'); | 
					
						
							|  |  |  | 			$('#unpin-' + ident).removeClass('hidden'); | 
					
						
							|  |  |  | 		} else { | 
					
						
							| 
									
										
										
										
											2021-01-30 23:05:40 +00:00
										 |  |  | 			$('#pinned-' + ident) | 
					
						
							|  |  |  | 				.addClass('unpinned') | 
					
						
							|  |  |  | 				.removeClass('pinned'); | 
					
						
							| 
									
										
										
										
											2019-11-07 05:39:15 +00:00
										 |  |  | 			$('#pin-' + ident).removeClass('hidden'); | 
					
						
							|  |  |  | 			$('#unpin-' + ident).addClass('hidden'); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2021-01-30 23:05:40 +00:00
										 |  |  | 	}) | 
					
						
							|  |  |  | 	.always(function () { | 
					
						
							| 
									
										
										
										
											2019-11-07 05:39:15 +00:00
										 |  |  | 		$('#like-rotator-' + ident).hide(); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-30 21:22:53 +00:00
										 |  |  | function doIgnoreThread(ident) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	ident = ident.toString(); | 
					
						
							|  |  |  | 	$('#like-rotator-' + ident).show(); | 
					
						
							| 
									
										
										
										
											2021-01-30 21:23:46 +00:00
										 |  |  | 	$.post('item/' + ident + '/ignore', function(data) { | 
					
						
							|  |  |  | 		if (data.state === 1) { | 
					
						
							| 
									
										
										
										
											2019-12-01 04:16:34 +00:00
										 |  |  | 			$('#ignored-' + ident) | 
					
						
							|  |  |  | 				.addClass('ignored') | 
					
						
							|  |  |  | 				.removeClass('unignored'); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			$('#ignore-' + ident).addClass('hidden'); | 
					
						
							|  |  |  | 			$('#unignore-' + ident).removeClass('hidden'); | 
					
						
							|  |  |  | 		} else { | 
					
						
							| 
									
										
										
										
											2019-12-01 04:16:34 +00:00
										 |  |  | 			$('#ignored-' + ident) | 
					
						
							|  |  |  | 				.addClass('unignored') | 
					
						
							|  |  |  | 				.removeClass('ignored'); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			$('#ignore-' + ident).removeClass('hidden'); | 
					
						
							|  |  |  | 			$('#unignore-' + ident).addClass('hidden'); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		$('#like-rotator-' + ident).hide(); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function getPosition(e) { | 
					
						
							|  |  |  | 	var cursor = {x:0, y:0}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (e.pageX || e.pageY) { | 
					
						
							|  |  |  | 		cursor.x = e.pageX; | 
					
						
							|  |  |  | 		cursor.y = e.pageY; | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		if (e.clientX || e.clientY) { | 
					
						
							|  |  |  | 			cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft; | 
					
						
							|  |  |  | 			cursor.y = e.clientY + (document.documentElement.scrollTop  || document.body.scrollTop)  - document.documentElement.clientTop; | 
					
						
							|  |  |  | 		} else if (e.x || e.y) { | 
					
						
							|  |  |  | 			cursor.x = e.x; | 
					
						
							|  |  |  | 			cursor.y = e.y; | 
					
						
							| 
									
										
										
										
											2010-09-30 05:11:26 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	return cursor; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2010-09-30 05:11:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | var lockvisible = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-26 22:35:02 +00:00
										 |  |  | function lockview(event, type, id) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	event = event || window.event; | 
					
						
							|  |  |  | 	cursor = getPosition(event); | 
					
						
							|  |  |  | 	if (lockvisible) { | 
					
						
							| 
									
										
										
										
											2020-07-26 22:35:02 +00:00
										 |  |  | 		lockvisible = false; | 
					
						
							|  |  |  | 		$('#panel').hide(); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	} else { | 
					
						
							|  |  |  | 		lockvisible = true; | 
					
						
							| 
									
										
										
										
											2020-07-26 22:35:02 +00:00
										 |  |  | 		$.get('permission/tooltip/' + type + '/' + id, function(data) { | 
					
						
							|  |  |  | 			$('#panel') | 
					
						
							|  |  |  | 				.html(data) | 
					
						
							|  |  |  | 				.css({'left': cursor.x + 5 , 'top': cursor.y + 5}) | 
					
						
							|  |  |  | 				.show(); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2010-09-30 05:11:26 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function post_comment(id) { | 
					
						
							|  |  |  | 	unpause(); | 
					
						
							|  |  |  | 	commentBusy = true; | 
					
						
							|  |  |  | 	$('body').css('cursor', 'wait'); | 
					
						
							|  |  |  | 	$.post( | 
					
						
							|  |  |  | 		"item", | 
					
						
							|  |  |  | 		$("#comment-edit-form-" + id).serialize(), | 
					
						
							|  |  |  | 		function(data) { | 
					
						
							|  |  |  | 			if (data.success) { | 
					
						
							|  |  |  | 				$("#comment-edit-wrapper-" + id).hide(); | 
					
						
							|  |  |  | 				$("#comment-edit-text-" + id).val(''); | 
					
						
							|  |  |  | 				var tarea = document.getElementById("comment-edit-text-" + id); | 
					
						
							|  |  |  | 				if (tarea) { | 
					
						
							|  |  |  | 					commentClose(tarea,id); | 
					
						
							| 
									
										
										
										
											2011-02-14 12:43:19 +00:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 				if (timer) { | 
					
						
							|  |  |  | 					clearTimeout(timer); | 
					
						
							| 
									
										
										
										
											2011-02-17 05:17:49 +00:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 				timer = setTimeout(NavUpdate,10); | 
					
						
							|  |  |  | 				force_update = true; | 
					
						
							|  |  |  | 				update_item = id; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			if (data.reload) { | 
					
						
							|  |  |  | 				window.location.href=data.reload; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		"json" | 
					
						
							|  |  |  | 	); | 
					
						
							|  |  |  | 	return false; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2011-02-14 12:43:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function preview_comment(id) { | 
					
						
							|  |  |  | 	$("#comment-edit-preview-" + id).show(); | 
					
						
							|  |  |  | 	$.post( | 
					
						
							|  |  |  | 		"item", | 
					
						
							| 
									
										
										
										
											2019-07-30 01:58:37 +00:00
										 |  |  | 		$("#comment-edit-form-" + id).serialize() + '&preview=1', | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		function(data) { | 
					
						
							|  |  |  | 			if (data.preview) { | 
					
						
							|  |  |  | 				$("#comment-edit-preview-" + id).html(data.preview); | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 				$("#comment-edit-preview-" + id + " a").click(function() {return false;}); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		"json" | 
					
						
							|  |  |  | 	); | 
					
						
							|  |  |  | 	return true; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2012-01-06 00:38:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function showHideComments(id) { | 
					
						
							| 
									
										
										
										
											2019-02-15 03:24:34 +00:00
										 |  |  | 	if ($('#collapsed-comments-' + id).is(':visible')) { | 
					
						
							|  |  |  | 		$('#collapsed-comments-' + id).slideUp(); | 
					
						
							|  |  |  | 		$('#hide-comments-' + id).hide(); | 
					
						
							|  |  |  | 		$('#hide-comments-total-' + id).show(); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2019-02-15 03:24:34 +00:00
										 |  |  | 		$('#collapsed-comments-' + id).slideDown(); | 
					
						
							|  |  |  | 		$('#hide-comments-' + id).show(); | 
					
						
							|  |  |  | 		$('#hide-comments-total-' + id).hide(); | 
					
						
							| 
									
										
										
										
											2012-01-06 00:38:24 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2012-01-06 00:38:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function preview_post() { | 
					
						
							|  |  |  | 	$("#jot-preview-content").show(); | 
					
						
							|  |  |  | 	$.post( | 
					
						
							|  |  |  | 		"item", | 
					
						
							| 
									
										
										
										
											2019-11-28 17:47:53 +00:00
										 |  |  | 		$("#profile-jot-form").serialize() + '&preview=1', | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		function(data) { | 
					
						
							|  |  |  | 			if (data.preview) { | 
					
						
							|  |  |  | 				$("#jot-preview-content").html(data.preview); | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 				$("#jot-preview-content" + " a").click(function() {return false;}); | 
					
						
							| 
									
										
										
										
											2018-09-21 01:03:23 +00:00
										 |  |  | 				document.dispatchEvent(new Event('postprocess_liveupdate')); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		"json" | 
					
						
							|  |  |  | 	); | 
					
						
							|  |  |  | 	return true; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2012-01-06 00:38:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function unpause() { | 
					
						
							|  |  |  | 	// unpause auto reloads if they are currently stopped
 | 
					
						
							|  |  |  | 	totStopped = false; | 
					
						
							|  |  |  | 	stopped = false; | 
					
						
							|  |  |  | 	$('#pause').html(''); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2012-01-06 00:38:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | // load more network content (used for infinite scroll)
 | 
					
						
							|  |  |  | function loadScrollContent() { | 
					
						
							|  |  |  | 	if (lockLoadContent) { | 
					
						
							|  |  |  | 		return; | 
					
						
							| 
									
										
										
										
											2012-11-02 00:31:50 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	lockLoadContent = true; | 
					
						
							| 
									
										
										
										
											2012-11-02 00:31:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	$("#scroll-loader").fadeIn('normal'); | 
					
						
							| 
									
										
										
										
											2012-11-02 00:31:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	match = $("span.received").last(); | 
					
						
							|  |  |  | 	if (match.length > 0) { | 
					
						
							|  |  |  | 		received = match[0].innerHTML; | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		received = "0000-00-00 00:00:00"; | 
					
						
							| 
									
										
										
										
											2012-01-10 02:52:49 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	match = $("span.created").last(); | 
					
						
							|  |  |  | 	if (match.length > 0) { | 
					
						
							|  |  |  | 		created = match[0].innerHTML; | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		created = "0000-00-00 00:00:00"; | 
					
						
							| 
									
										
										
										
											2011-12-06 09:22:59 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	match = $("span.commented").last(); | 
					
						
							|  |  |  | 	if (match.length > 0) { | 
					
						
							|  |  |  | 		commented = match[0].innerHTML; | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		commented = "0000-00-00 00:00:00"; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-07-31 06:04:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-13 20:07:13 +00:00
										 |  |  | 	match = $("span.uriid").last(); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	if (match.length > 0) { | 
					
						
							| 
									
										
										
										
											2020-08-13 20:07:13 +00:00
										 |  |  | 		uriid = match[0].innerHTML; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2020-08-13 20:07:13 +00:00
										 |  |  | 		uriid = "0"; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-07-31 06:04:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	// get the raw content from the next page and insert this content
 | 
					
						
							|  |  |  | 	// right before "#conversation-end"
 | 
					
						
							| 
									
										
										
										
											2020-11-03 01:07:26 +00:00
										 |  |  | 	$.get({ | 
					
						
							|  |  |  | 		url: infinite_scroll.reload_uri, | 
					
						
							|  |  |  | 		data: { | 
					
						
							|  |  |  | 			'mode'          : 'raw', | 
					
						
							|  |  |  | 			'last_received' : received, | 
					
						
							|  |  |  | 			'last_commented': commented, | 
					
						
							|  |  |  | 			'last_created'  : created, | 
					
						
							|  |  |  | 			'last_uriid'    : uriid | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | 	.done(function(data) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		$("#scroll-loader").hide(); | 
					
						
							|  |  |  | 		if ($(data).length > 0) { | 
					
						
							|  |  |  | 			$(data).insertBefore('#conversation-end'); | 
					
						
							| 
									
										
										
										
											2017-07-31 06:04:37 +00:00
										 |  |  | 		} else { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 			$("#scroll-end").fadeIn('normal'); | 
					
						
							| 
									
										
										
										
											2017-07-31 06:04:37 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-09-20 02:51:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		document.dispatchEvent(new Event('postprocess_liveupdate')); | 
					
						
							| 
									
										
										
										
											2020-11-03 01:07:26 +00:00
										 |  |  | 	}) | 
					
						
							|  |  |  | 	.always(function () { | 
					
						
							|  |  |  | 		$("#scroll-loader").hide(); | 
					
						
							|  |  |  | 		lockLoadContent = false; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	}); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function bin2hex(s) { | 
					
						
							| 
									
										
										
										
											2018-02-27 22:37:11 +00:00
										 |  |  | 	// Converts the binary representation of data to hex
 | 
					
						
							|  |  |  | 	//
 | 
					
						
							|  |  |  | 	// version: 812.316
 | 
					
						
							|  |  |  | 	// discuss at: http://phpjs.org/functions/bin2hex
 | 
					
						
							|  |  |  | 	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 | 
					
						
							|  |  |  | 	// +   bugfixed by: Onno Marsman
 | 
					
						
							|  |  |  | 	// +   bugfixed by: Linuxworld
 | 
					
						
							|  |  |  | 	// *     example 1: bin2hex('Kev');
 | 
					
						
							|  |  |  | 	// *     returns 1: '4b6576'
 | 
					
						
							|  |  |  | 	// *     example 2: bin2hex(String.fromCharCode(0x00));
 | 
					
						
							|  |  |  | 	// *     returns 2: '00'
 | 
					
						
							|  |  |  | 	var v,i, f = 0, a = []; | 
					
						
							|  |  |  | 	s += ''; | 
					
						
							|  |  |  | 	f = s.length; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for (i = 0; i<f; i++) { | 
					
						
							|  |  |  | 		a[i] = s.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1"); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return a.join(''); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2011-04-13 04:21:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | function groupChangeMember(gid, cid, sec_token) { | 
					
						
							|  |  |  | 	$('body .fakelink').css('cursor', 'wait'); | 
					
						
							|  |  |  | 	$.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) { | 
					
						
							|  |  |  | 			$('#group-update-wrapper').html(data); | 
					
						
							|  |  |  | 			$('body .fakelink').css('cursor', 'auto'); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2011-04-13 04:21:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-23 20:36:06 +00:00
										 |  |  | function contactgroupChangeMember(checkbox, gid, cid) { | 
					
						
							|  |  |  | 	let url; | 
					
						
							|  |  |  | 	// checkbox.checked is the checkbox state after the click
 | 
					
						
							|  |  |  | 	if (checkbox.checked) { | 
					
						
							|  |  |  | 		url = 'group/' + gid + '/add/' + cid; | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		url = 'group/' + gid + '/remove/' + cid; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	$('body').css('cursor', 'wait'); | 
					
						
							| 
									
										
										
										
											2019-02-23 20:36:06 +00:00
										 |  |  | 	$.post(url) | 
					
						
							|  |  |  | 	.error(function () { | 
					
						
							|  |  |  | 		// Restores previous state in case of error
 | 
					
						
							|  |  |  | 		checkbox.checked = !checkbox.checked; | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | 	.always(function() { | 
					
						
							|  |  |  | 		$('body').css('cursor', 'auto'); | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2019-02-23 20:36:06 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	return true; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2011-08-03 05:39:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-18 05:58:15 +00:00
										 |  |  | function checkboxhighlight(box) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	if ($(box).is(':checked')) { | 
					
						
							|  |  |  | 		$(box).addClass('checkeditem'); | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		$(box).removeClass('checkeditem'); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2011-06-18 05:58:15 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-24 18:08:03 +00:00
										 |  |  | function notificationMarkAll() { | 
					
						
							| 
									
										
										
										
											2020-01-24 17:32:38 +00:00
										 |  |  | 	$.get('notification/mark/all', function(data) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		if (timer) { | 
					
						
							|  |  |  | 			clearTimeout(timer); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2012-02-23 07:34:30 +00:00
										 |  |  | 		timer = setTimeout(NavUpdate,1000); | 
					
						
							| 
									
										
										
										
											2014-08-01 22:35:25 +00:00
										 |  |  | 		force_update = true; | 
					
						
							| 
									
										
										
										
											2012-02-23 07:34:30 +00:00
										 |  |  | 	}); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * sprintf in javascript | 
					
						
							|  |  |  |  *	"{0} and {1}".format('zero','uno'); | 
					
						
							| 
									
										
										
										
											2011-06-16 12:56:43 +00:00
										 |  |  |  **/ | 
					
						
							|  |  |  | String.prototype.format = function() { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	var formatted = this; | 
					
						
							|  |  |  | 	for (var i = 0; i < arguments.length; i++) { | 
					
						
							|  |  |  | 		var regexp = new RegExp('\\{'+i+'\\}', 'gi'); | 
					
						
							|  |  |  | 		formatted = formatted.replace(regexp, arguments[i]); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return formatted; | 
					
						
							| 
									
										
										
										
											2011-06-16 12:56:43 +00:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2011-07-19 14:17:58 +00:00
										 |  |  | // Array Remove
 | 
					
						
							|  |  |  | Array.prototype.remove = function(item) { | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	to=undefined; from=this.indexOf(item); | 
					
						
							|  |  |  | 	var rest = this.slice((to || from) + 1 || this.length); | 
					
						
							|  |  |  | 	this.length = from < 0 ? this.length + from : from; | 
					
						
							|  |  |  | 	return this.push.apply(this, rest); | 
					
						
							| 
									
										
										
										
											2011-07-19 14:17:58 +00:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2011-08-11 04:06:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-26 02:05:14 +00:00
										 |  |  | function previewTheme(elm) { | 
					
						
							|  |  |  | 	theme = $(elm).val(); | 
					
						
							| 
									
										
										
										
											2020-01-13 20:10:13 +00:00
										 |  |  | 	$.getJSON('pretheme?theme=' + theme,function(data) { | 
					
						
							| 
									
										
										
										
											2012-07-24 02:37:00 +00:00
										 |  |  | 			$('#theme-preview').html('<div id="theme-desc">' + data.desc + '</div><div id="theme-version">' + data.version + '</div><div id="theme-credits">' + data.credits + '</div><a href="' + data.img + '"><img src="' + data.img + '" width="320" height="240" alt="' + theme + '" /></a>'); | 
					
						
							| 
									
										
										
										
											2012-03-26 02:05:14 +00:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-12 07:15:08 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2015-06-24 07:49:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // notification permission settings in localstorage
 | 
					
						
							|  |  |  | // set by settings page
 | 
					
						
							|  |  |  | function getNotificationPermission() { | 
					
						
							| 
									
										
										
										
											2015-06-24 09:04:38 +00:00
										 |  |  | 	if (window["Notification"] === undefined) { | 
					
						
							| 
									
										
										
										
											2015-06-24 07:49:53 +00:00
										 |  |  | 		return null; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	if (Notification.permission === 'granted') { | 
					
						
							|  |  |  | 		var val = localStorage.getItem('notification-permissions'); | 
					
						
							|  |  |  | 		if (val === null) { | 
					
						
							|  |  |  | 			return 'denied'; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-06-24 09:15:35 +00:00
										 |  |  | 		return val; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 	} else { | 
					
						
							|  |  |  | 		return Notification.permission; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-06-24 07:49:53 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Show a dialog loaded from an url | 
					
						
							|  |  |  |  * By defaults this load the url in an iframe in colorbox | 
					
						
							|  |  |  |  * Themes can overwrite `show()` function to personalize it | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | var Dialog = { | 
					
						
							|  |  |  | 	/** | 
					
						
							|  |  |  | 	 * Show the dialog | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * @param string url | 
					
						
							|  |  |  | 	 * @return object colorbox | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	show : function (url) { | 
					
						
							|  |  |  | 		var size = Dialog._get_size(); | 
					
						
							|  |  |  | 		return $.colorbox({href: url, iframe:true,innerWidth: size.width+'px',innerHeight: size.height+'px'}) | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/** | 
					
						
							|  |  |  | 	 * Show the Image browser dialog | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * @param string name | 
					
						
							|  |  |  | 	 * @param string id (optional) | 
					
						
							|  |  |  | 	 * @return object | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * The name will be used to build the event name | 
					
						
							|  |  |  | 	 * fired by image browser dialog when the user select | 
					
						
							|  |  |  | 	 * an image. The optional id will be passed as argument | 
					
						
							|  |  |  | 	 * to the event handler | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	doImageBrowser : function (name, id) { | 
					
						
							|  |  |  | 		var url = Dialog._get_url("image",name,id); | 
					
						
							|  |  |  | 		return Dialog.show(url); | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/** | 
					
						
							|  |  |  | 	 * Show the File browser dialog | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * @param string name | 
					
						
							|  |  |  | 	 * @param string id (optional) | 
					
						
							|  |  |  | 	 * @return object | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * The name will be used to build the event name | 
					
						
							|  |  |  | 	 * fired by file browser dialog when the user select | 
					
						
							|  |  |  | 	 * a file. The optional id will be passed as argument | 
					
						
							|  |  |  | 	 * to the event handler | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	doFileBrowser : function (name, id) { | 
					
						
							| 
									
										
										
										
											2015-11-08 11:05:23 +00:00
										 |  |  | 		var url = Dialog._get_url("file",name,id); | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 		return Dialog.show(url); | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	_get_url : function(type, name, id) { | 
					
						
							|  |  |  | 		var hash = name; | 
					
						
							| 
									
										
										
										
											2018-02-27 21:10:05 +00:00
										 |  |  | 		if (id !== undefined) { | 
					
						
							|  |  |  | 			hash = hash + "-" + id; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-11-08 11:01:19 +00:00
										 |  |  | 		return baseurl + "/fbrowser/"+type+"/?mode=minimal#"+hash; | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	_get_size: function() { | 
					
						
							|  |  |  | 		return { | 
					
						
							|  |  |  | 			width: window.innerWidth-50, | 
					
						
							|  |  |  | 			height: window.innerHeight-100 | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-02-12 10:29:50 +00:00
										 |  |  | // @license-end
 |