/*
 * expand.js
 * https://github.com/savetheinternet/Tinyboard/blob/master/js/expand.js
 *
 * Released under the MIT license
 * Copyright (c) 2012-2013 Michael Save <savetheinternet@tinyboard.org>
 * Copyright (c) 2013 Czterooki <czterooki1337@gmail.com>
 * Copyright (c) 2013-2014 Marcin Ɓabanowski <marcin@6irc.net>
 *
 * Usage:
 *   $config['additional_javascript'][] = 'js/jquery.min.js';
 *   $config['additional_javascript'][] = 'js/expand.js';
 */

$(document).ready(function() {
	if ($('span.omitted').length === 0) {
		// Nothing to expand.
		return;
	}

	let doExpand = function() {
		$(this)
			.html($(this).text().concat(' <a href="javascript:void(0)">' + _('Click to expand') + '</a>.'))
			.find('a').click(window.expandFun = function() {
				let thread = $(this).parents('[id^="thread_"]');
				$.ajax({
					url: thread.find('p.intro a.post_no:first').attr('href'),
					context: document.body,
					success: function(data) {
						let lastExpanded = false;
						$(data).find('div.post.reply').each(function() {
							thread.find('div.hidden').remove();
							let postInDoc = thread.find('#' + $(this).attr('id'));
							if (postInDoc.length === 0) {
								if (lastExpanded) {
									$(this).addClass('expanded').insertAfter(lastExpanded).before('<br class="expanded">');
								} else {
									let opBr = thread.find('div.post').first().next();
									$(this).addClass('expanded').insertAfter(opBr).after('<br class="expanded">');
								}
								lastExpanded = $(this);
								$(document).trigger('new_post', this);
							} else {
								lastExpanded = postInDoc;
							}
						});


						thread.find('span.omitted').css('display', 'none');

						$('<span class="omitted hide-expanded"><a href="javascript:void(0)">' + _('Hide expanded replies') + '</a>.</span>')
							.insertAfter(thread.find('.op div.body, .op span.omitted').last())
							.click(function() {
								thread.find('.expanded').remove();
								let parent = $(this).parent();
								parent.find('.omitted:not(.hide-expanded)').css('display', '');
								parent.find('.hide-expanded').remove();
							});
					}
				});
			});
	}

	$('div.post.op span.omitted').each(doExpand);

	$(document).on('new_post', function(e, post) {
		if (!$(post).hasClass('reply')) {
			$(post).find('div.post.op span.omitted').each(doExpand);
		}
	});
});