function template_folder()
{
    global $context, $settings, $options, $scripturl, $modSettings, $txt;
    // The every helpful javascript!
    echo '
	<script type="text/javascript"><!-- // --><![CDATA[
		var allLabels = {};
		var currentLabels = {};
		function loadLabelChoices()
		{
			var listing = document.forms.pmFolder.elements;
			var theSelect = document.forms.pmFolder.pm_action;
			var add, remove, toAdd = {length: 0}, toRemove = {length: 0};

			if (theSelect.childNodes.length == 0)
				return;';
    // This is done this way for internationalization reasons.
    echo '
			if (!(\'-1\' in allLabels))
			{
				for (var o = 0; o < theSelect.options.length; o++)
					if (theSelect.options[o].value.substr(0, 4) == "rem_")
						allLabels[theSelect.options[o].value.substr(4)] = theSelect.options[o].text;
			}

			for (var i = 0; i < listing.length; i++)
			{
				if (listing[i].name != "pms[]" || !listing[i].checked)
					continue;

				var alreadyThere = [], x;
				for (x in currentLabels[listing[i].value])
				{
					if (!(x in toRemove))
					{
						toRemove[x] = allLabels[x];
						toRemove.length++;
					}
					alreadyThere[x] = allLabels[x];
				}

				for (x in allLabels)
				{
					if (!(x in alreadyThere))
					{
						toAdd[x] = allLabels[x];
						toAdd.length++;
					}
				}
			}

			while (theSelect.options.length > 2)
				theSelect.options[2] = null;

			if (toAdd.length != 0)
			{
				theSelect.options[theSelect.options.length] = new Option("', $txt['pm_msg_label_apply'], '", "");
				setInnerHTML(theSelect.options[theSelect.options.length - 1], "', $txt['pm_msg_label_apply'], '");
				theSelect.options[theSelect.options.length - 1].disabled = true;

				for (i in toAdd)
				{
					if (i != "length")
						theSelect.options[theSelect.options.length] = new Option(toAdd[i], "add_" + i);
				}
			}

			if (toRemove.length != 0)
			{
				theSelect.options[theSelect.options.length] = new Option("', $txt['pm_msg_label_remove'], '", "");
				setInnerHTML(theSelect.options[theSelect.options.length - 1], "', $txt['pm_msg_label_remove'], '");
				theSelect.options[theSelect.options.length - 1].disabled = true;

				for (i in toRemove)
				{
					if (i != "length")
						theSelect.options[theSelect.options.length] = new Option(toRemove[i], "rem_" + i);
				}
			}
		}
	// ]]></script>';
    echo '
<form action="', $scripturl, '?action=pm;sa=pmactions;', $context['display_mode'] == 2 ? 'conversation;' : '', 'f=', $context['folder'], ';start=', $context['start'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', '" method="post" accept-charset="', $context['character_set'], '" name="pmFolder">';
    // If we are not in single display mode show the subjects on the top!
    if ($context['display_mode'] != 1) {
        template_subject_list();
        echo '<br />';
    }
    // Got some messages to display?
    if ($context['get_pmessage']('message', true)) {
        // Show a few buttons if we are in conversation mode and outputting the first message.
        if ($context['display_mode'] == 2) {
            // Build the normal button array.
            $conversation_buttons = array('reply' => array('text' => 'reply_to_all', 'image' => 'reply.gif', 'lang' => true, 'url' => $scripturl . '?action=pm;sa=send;f=' . $context['folder'] . ($context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '') . ';pmsg=' . $context['current_pm'] . ';u=all'), 'delete' => array('text' => 'delete_conversation', 'image' => 'delete.gif', 'lang' => true, 'url' => $scripturl . '?action=pm;sa=pmactions;pm_actions[' . $context['current_pm'] . ']=delete;conversation;f=' . $context['folder'] . ';start=' . $context['start'] . ($context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '') . ';' . $context['session_var'] . '=' . $context['session_id'], 'custom' => 'onclick="return confirm(\'' . addslashes($txt['remove_message']) . '?\');"'));
            // Show the conversation buttons.
            echo '
				<div class="modbuttons_top margintop flow_hidden">';
            template_button_strip($conversation_buttons, 'right');
            echo '
				</div>';
        }
        echo '
	<div class="tborder" style="padding: 1px">';
        // Show the helpful titlebar - generally.
        if ($context['display_mode'] != 1) {
            echo '
		<div id="forumposts">
			<h3 class="catbg3">
				<span>', $txt['author'], '</span>
				<span id="top_subject">', $txt[$context['display_mode'] == 0 ? 'messages' : 'conversation'], '</span>
			</h3>
		</div>';
        }
        // Cache some handy buttons.
        $quote_button = create_button('quote.gif', 'reply_quote', 'quote', 'align="middle"');
        $reply_button = create_button('im_reply.gif', 'reply', 'reply', 'align="middle"');
        $reply_all_button = create_button('im_reply_all.gif', 'reply_to_all', 'reply_to_all', 'align="middle"');
        $forward_button = create_button('quote.gif', 'reply_quote', 'reply_quote', 'align="middle"');
        $delete_button = create_button('delete.gif', 'remove_message', 'remove', 'align="middle"');
        while ($message = $context['get_pmessage']('message')) {
            $is_first_post = !isset($is_first_post) ? true : false;
            // Show information about the poster of this message.
            echo '
		<div class="bordercolor" id="msg', $message['id'], '">
			<div class="clearfix ', !$is_first_post ? 'topborder ' : '', $message['alternate'] == 0 ? 'windowbg' : 'windowbg2', ' largepadding">
				<div class="floatleft poster">
					<h4>', $message['member']['link'], '</h4>
					<ul class="reset smalltext" id="msg_', $message['id'], '_extra_info">';
            // Show the member's custom title, if they have one.
            if (isset($message['member']['title']) && $message['member']['title'] != '') {
                echo '
						<li>', $message['member']['title'], '</li>';
            }
            // Show the member's primary group (like 'Administrator') if they have one.
            if (isset($message['member']['group']) && $message['member']['group'] != '') {
                echo '
						<li>', $message['member']['group'], '</li>';
            }
            // Don't show these things for guests.
            if (!$message['member']['is_guest']) {
                // Show the post group if and only if they have no other group or the option is on, and they are in a post group.
                if ((empty($settings['hide_post_group']) || $message['member']['group'] == '') && $message['member']['post_group'] != '') {
                    echo '
						<li>', $message['member']['post_group'], '</li>';
                }
                echo '
						<li>', $message['member']['group_stars'], '</li>';
                // Is karma display enabled?  Total or +/-?
                if ($modSettings['karmaMode'] == '1') {
                    echo '
						<li class="margintop">', $modSettings['karmaLabel'], ' ', $message['member']['karma']['good'] - $message['member']['karma']['bad'], '</li>';
                } elseif ($modSettings['karmaMode'] == '2') {
                    echo '
						<li class="margintop">', $modSettings['karmaLabel'], ' +', $message['member']['karma']['good'], '/-', $message['member']['karma']['bad'], '</li>';
                }
                // Is this user allowed to modify this member's karma?
                if ($message['member']['karma']['allow']) {
                    echo '
						<li>
							<a href="', $scripturl, '?action=modifykarma;sa=applaud;uid=', $message['member']['id'], ';f=', $context['folder'], ';start=', $context['start'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pm=', $message['id'], ';', $context['session_var'], '=', $context['session_id'], '">', $modSettings['karmaApplaudLabel'], '</a>
							<a href="', $scripturl, '?action=modifykarma;sa=smite;uid=', $message['member']['id'], ';f=', $context['folder'], ';start=', $context['start'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pm=', $message['id'], ';', $context['session_var'], '=', $context['session_id'], '">', $modSettings['karmaSmiteLabel'], '</a>
						</li>';
                }
                // Show online and offline buttons?
                if (!empty($modSettings['onlineEnable'])) {
                    echo '
						<li>', $context['can_send_pm'] ? '<a href="' . $message['member']['online']['href'] . '" title="' . $message['member']['online']['label'] . '">' : '', $settings['use_image_buttons'] ? '<img src="' . $message['member']['online']['image_href'] . '" alt="' . $message['member']['online']['text'] . '" border="0" style="margin-top: 2px;" />' : $message['member']['online']['text'], $context['can_send_pm'] ? '</a>' : '', $settings['use_image_buttons'] ? '<span class="smalltext"> ' . $message['member']['online']['text'] . '</span>' : '', '</li>';
                }
                // Show the member's gender icon?
                if (!empty($settings['show_gender']) && $message['member']['gender']['image'] != '' && !isset($context['disabled_fields']['gender'])) {
                    echo '
						<li>', $txt['gender'], ': ', $message['member']['gender']['image'], '</li>';
                }
                // Show how many posts they have made.
                if (!isset($context['disabled_fields']['posts'])) {
                    echo '
						<li>', $txt['member_postcount'], ': ', $message['member']['posts'], '</li>';
                }
                // Any custom fields for standard placement?
                if (!empty($message['member']['custom_fields'])) {
                    foreach ($message['member']['custom_fields'] as $custom) {
                        if (empty($custom['placement']) && !empty($custom['value'])) {
                            echo '
						<li>', $custom['title'], ': ', $custom['value'], '</li>';
                        }
                    }
                }
                // Show avatars, images, etc.?
                if (!empty($settings['show_user_images']) && empty($options['show_no_avatars']) && !empty($message['member']['avatar']['image'])) {
                    echo '
						<li class="margintop" style="overflow: auto;">', $message['member']['avatar']['image'], '</li>';
                }
                // Show their personal text?
                if (!empty($settings['show_blurb']) && $message['member']['blurb'] != '') {
                    echo '
						<li class="margintop">', $message['member']['blurb'], '</li>';
                }
                // Any custom fields to show as icons?
                if (!empty($message['member']['custom_fields'])) {
                    $shown = false;
                    foreach ($message['member']['custom_fields'] as $custom) {
                        if ($custom['placement'] != 1 || empty($custom['value'])) {
                            continue;
                        }
                        if (empty($shown)) {
                            $shown = true;
                            echo '
						<li class="margintop">
							<ul class="reset nolist">';
                        }
                        echo '
								<li>', $custom['value'], '</li>';
                    }
                    if ($shown) {
                        echo '
							</ul>
						</li>';
                    }
                }
                // This shows the popular messaging icons.
                if ($message['member']['has_messenger'] && $message['member']['can_view_profile']) {
                    echo '
						<li class="margintop">
							<ul class="reset nolist">
								', !isset($context['disabled_fields']['icq']) && !empty($message['member']['icq']['link']) ? '<li>' . $message['member']['icq']['link'] . '</li>' : '', '
								', !isset($context['disabled_fields']['msn']) && !empty($message['member']['msn']['link']) ? '<li>' . $message['member']['msn']['link'] . '</li>' : '', '
								', !isset($context['disabled_fields']['aim']) && !empty($message['member']['aim']['link']) ? '<li>' . $message['member']['aim']['link'] . '</li>' : '', '
								', !isset($context['disabled_fields']['yim']) && !empty($message['member']['yim']['link']) ? '<li>' . $message['member']['yim']['link'] . '</li>' : '', '
							</ul>
						</li>';
                }
                // Show the profile, website, email address, and personal message buttons.
                if ($settings['show_profile_buttons']) {
                    echo '
						<li class="margintop">
							<ul class="reset nolist">';
                    // Don't show the profile button if you're not allowed to view the profile.
                    if ($message['member']['can_view_profile']) {
                        echo '
								<li><a href="', $message['member']['href'], '">', $settings['use_image_buttons'] ? '<img src="' . $settings['images_url'] . '/icons/profile_sm.gif" alt="' . $txt['view_profile'] . '" title="' . $txt['view_profile'] . '" border="0" />' : $txt['view_profile'], '</a></li>';
                    }
                    // Don't show an icon if they haven't specified a website.
                    if ($message['member']['website']['url'] != '' && !isset($context['disabled_fields']['website'])) {
                        echo '
								<li><a href="', $message['member']['website']['url'], '" title="' . $message['member']['website']['title'] . '" target="_blank" class="new_win">', $settings['use_image_buttons'] ? '<img src="' . $settings['images_url'] . '/www_sm.gif" alt="' . $message['member']['website']['title'] . '" border="0" />' : $txt['www'], '</a></li>';
                    }
                    // Don't show the email address if they want it hidden.
                    if (in_array($message['member']['show_email'], array('yes', 'yes_permission_override', 'no_through_forum'))) {
                        echo '
								<li><a href="', $scripturl, '?action=emailuser;sa=email;uid=', $message['member']['id'], '" rel="nofollow">', $settings['use_image_buttons'] ? '<img src="' . $settings['images_url'] . '/email_sm.gif" alt="' . $txt['email'] . '" title="' . $txt['email'] . '" />' : $txt['email'], '</a></li>';
                    }
                    // Since we know this person isn't a guest, you *can* message them.
                    if ($context['can_send_pm']) {
                        echo '
								<li><a href="', $scripturl, '?action=pm;sa=send;u=', $message['member']['id'], '" title="', $message['member']['online']['is_online'] ? $txt['pm_online'] : $txt['pm_offline'], '">', $settings['use_image_buttons'] ? '<img src="' . $settings['images_url'] . '/im_' . ($message['member']['online']['is_online'] ? 'on' : 'off') . '.gif" alt="' . ($message['member']['online']['is_online'] ? $txt['pm_online'] : $txt['pm_offline']) . '" border="0" />' : ($message['member']['online']['is_online'] ? $txt['pm_online'] : $txt['pm_offline']), '</a></li>';
                    }
                    echo '
							</ul>
						</li>';
                }
                // Are we showing the warning status?
                if ($message['member']['can_see_warning']) {
                    echo '
						<li>', $context['can_issue_warning'] ? '<a href="' . $scripturl . '?action=profile;area=issuewarning;u=' . $message['member']['id'] . '">' : '', '<img src="', $settings['images_url'], '/warning_', $message['member']['warning_status'], '.gif" alt="', $txt['user_warn_' . $message['member']['warning_status']], '" />', $context['can_issue_warning'] ? '</a>' : '', '<span class="warn_', $message['member']['warning_status'], '">', $txt['warn_' . $message['member']['warning_status']], '</span></li>';
                }
            }
            // Done with the information about the poster... on to the post itself.
            echo '
					</ul>
				</div>
				<div class="postarea">
					<div class="flow_hidden">
						<div class="keyinfo">
							<h5>
								<strong>', $message['subject'], '</strong>
							</h5>';
            // Show who the message was sent to.
            echo '
							<div class="smalltext">
								&#171; <strong> ', $txt['sent_to'], ':</strong> ';
            // People it was sent directly to....
            if (!empty($message['recipients']['to'])) {
                echo implode(', ', $message['recipients']['to']);
            } elseif ($context['folder'] != 'sent') {
                echo '(', $txt['pm_undisclosed_recipients'], ')';
            }
            echo '
								<strong> ', $txt['on'], ':</strong> ', $message['time'], ' &#187;
							</div>';
            // If we're in the sent items, show who it was sent to besides the "To:" people.
            if (!empty($message['recipients']['bcc'])) {
                echo '
							<div class="smalltext">&#171; <strong> ', $txt['pm_bcc'], ':</strong> ', implode(', ', $message['recipients']['bcc']), ' &#187;</div>';
            }
            if (!empty($message['is_replied_to'])) {
                echo '
							<div class="smalltext">&#171; ', $txt['pm_is_replied_to'], ' &#187;</div>';
            }
            echo '
						</div>
						<ul class="reset smalltext postingbuttons">';
            // Show reply buttons if you have the permission to send PMs.
            if ($context['can_send_pm']) {
                // You can't really reply if the member is gone.
                if (!$message['member']['is_guest']) {
                    // Were than more than one recipient you can reply to? (Only shown when not in conversation mode.)
                    if ($message['number_recipients'] > 1 && $context['display_mode'] != 2) {
                        echo '
							<li><a href="', $scripturl, '?action=pm;sa=send;f=', $context['folder'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pmsg=', $message['id'], ';quote;u=all">', $reply_all_button, '</a></li>';
                    }
                    echo '
							<li><a href="', $scripturl, '?action=pm;sa=send;f=', $context['folder'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pmsg=', $message['id'], ';u=', $message['member']['id'], '">', $reply_button, '</a></li>
							<li><a href="', $scripturl, '?action=pm;sa=send;f=', $context['folder'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pmsg=', $message['id'], ';quote', $context['folder'] == 'sent' ? '' : ';u=' . $message['member']['id'], '">', $quote_button, '</a></li>';
                } else {
                    echo '
							<li><a href="', $scripturl, '?action=pm;sa=send;f=', $context['folder'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pmsg=', $message['id'], ';quote">', $forward_button, '</a></li>';
                }
            }
            echo '
							<li><a href="', $scripturl, '?action=pm;sa=pmactions;pm_actions[', $message['id'], ']=delete;f=', $context['folder'], ';start=', $context['start'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';', $context['session_var'], '=', $context['session_id'], '" onclick="return confirm(\'', addslashes($txt['remove_message']), '?\');">', $delete_button, '</a></li>';
            if (empty($context['display_mode'])) {
                echo '
							<li><input style="vertical-align: middle;" type="checkbox" name="pms[]" id="deletedisplay', $message['id'], '" value="', $message['id'], '" onclick="document.getElementById(\'deletelisting', $message['id'], '\').checked = this.checked;" class="input_check" /></li>';
            }
            echo '
						</ul>
					</div>
					<div class="personalmessage">
						<hr width="100%" size="1" class="hrcolor" />
						', $message['body'], '
					</div>';
            if (!empty($modSettings['enableReportPM']) && $context['folder'] != 'sent') {
                echo '
					<div class="reportlinks smalltext righttext">
						<a href="', $scripturl, '?action=pm;sa=report;l=', $context['current_label_id'], ';pmsg=', $message['id'], '">', $txt['pm_report_to_admin'], '</a>
					</div>';
            }
            // Are there any custom profile fields for above the signature?
            if (!empty($message['member']['custom_fields'])) {
                $shown = false;
                foreach ($message['member']['custom_fields'] as $custom) {
                    if ($custom['placement'] != 2 || empty($custom['value'])) {
                        continue;
                    }
                    if (!$shown) {
                        $shown = true;
                        echo '
						<div class="custom_fields_above_signature">
							<ul class="reset nolist>';
                    }
                    echo '
								<li>', $custom['value'], '</li>';
                }
                if ($shown) {
                    echo '
							</ul>
						</div>';
                }
            }
            // Show the member's signature?
            if (!empty($message['member']['signature']) && empty($options['show_no_signatures']) && $context['signature_enabled']) {
                echo '
						<div class="signature">', $message['member']['signature'], '</div>';
            }
            // Add an extra line at the bottom if we have labels enabled.
            if ($context['folder'] != 'sent' && !empty($context['currently_using_labels']) && $context['display_mode'] != 2) {
                echo '
						<div class="labels righttext">';
                // Add the label drop down box.
                if (!empty($context['currently_using_labels'])) {
                    echo '
							<select name="pm_actions[', $message['id'], ']" onchange="if (this.options[this.selectedIndex].value) form.submit();">
								<option value="">', $txt['pm_msg_label_title'], ':</option>
							<option value="" disabled="disabled">---------------</option>';
                    // Are there any labels which can be added to this?
                    if (!$message['fully_labeled']) {
                        echo '
							<option value="" disabled="disabled">', $txt['pm_msg_label_apply'], ':</option>';
                        foreach ($context['labels'] as $label) {
                            if (!isset($message['labels'][$label['id']])) {
                                echo '
							<option value="', $label['id'], '">&nbsp;', $label['name'], '</option>';
                            }
                        }
                    }
                    // ... and are there any that can be removed?
                    if (!empty($message['labels']) && (count($message['labels']) > 1 || !isset($message['labels'][-1]))) {
                        echo '
								<option value="" disabled="disabled">', $txt['pm_msg_label_remove'], ':</option>';
                        foreach ($message['labels'] as $label) {
                            echo '
								<option value="', $label['id'], '">&nbsp;', $label['name'], '</option>';
                        }
                    }
                    echo '
							</select>
							<noscript>
								<input type="submit" value="', $txt['pm_apply'], '" class="button_submit" />
							</noscript>';
                }
                echo '
						</div>';
            }
            echo '
					</div>
				</div>
			</div>';
        }
        echo '
		</div>';
        if (empty($context['display_mode'])) {
            echo '
		<div class="catbg flow_hidden" style="padding: 1px; margin-top: 1ex;">
			<div class="floatleft pagesection">', $txt['pages'], ': ', $context['page_index'], '</div>
			<div class="floatright"><input type="submit" name="del_selected" value="', $txt['quickmod_delete_selected'], '" style="font-weight: normal;" onclick="if (!confirm(\'', $txt['delete_selected_confirm'], '\')) return false;" class="button_submit" /></div>
		</div>';
        } elseif ($context['display_mode'] == 2 && isset($conversation_buttons)) {
            template_button_strip($conversation_buttons);
        }
        echo '
		<br />';
    }
    // Individual messages = buttom list!
    if ($context['display_mode'] == 1) {
        template_subject_list();
        echo '<br />';
    }
    echo '
	<input type="hidden" name="', $context['session_var'], '" value="', $context['session_id'], '" />
</form>';
}
function template_folder()
{
    global $context, $settings, $options, $scripturl, $modSettings, $txt;
    // The every helpful javascript!
    echo '
	<script type="text/javascript"><!-- // --><![CDATA[
		var allLabels = {};
		var currentLabels = {};
		function loadLabelChoices()
		{
			var listing = document.forms.pmFolder.elements;
			var theSelect = document.forms.pmFolder.pm_action;
			var add, remove, toAdd = {length: 0}, toRemove = {length: 0};

			if (theSelect.childNodes.length == 0)
				return;';
    // This is done this way for internationalization reasons.
    echo '
			if (!(\'-1\' in allLabels))
			{
				for (var o = 0; o < theSelect.options.length; o++)
					if (theSelect.options[o].value.substr(0, 4) == "rem_")
						allLabels[theSelect.options[o].value.substr(4)] = theSelect.options[o].text;
			}

			for (var i = 0; i < listing.length; i++)
			{
				if (listing[i].name != "pms[]" || !listing[i].checked)
					continue;

				var alreadyThere = [], x;
				for (x in currentLabels[listing[i].value])
				{
					if (!(x in toRemove))
					{
						toRemove[x] = allLabels[x];
						toRemove.length++;
					}
					alreadyThere[x] = allLabels[x];
				}

				for (x in allLabels)
				{
					if (!(x in alreadyThere))
					{
						toAdd[x] = allLabels[x];
						toAdd.length++;
					}
				}
			}

			while (theSelect.options.length > 2)
				theSelect.options[2] = null;

			if (toAdd.length != 0)
			{
				theSelect.options[theSelect.options.length] = new Option("', $txt['pm_msg_label_apply'], '", "");
				setInnerHTML(theSelect.options[theSelect.options.length - 1], "', $txt['pm_msg_label_apply'], '");
				theSelect.options[theSelect.options.length - 1].disabled = true;

				for (i in toAdd)
				{
					if (i != "length")
						theSelect.options[theSelect.options.length] = new Option(toAdd[i], "add_" + i);
				}
			}

			if (toRemove.length != 0)
			{
				theSelect.options[theSelect.options.length] = new Option("', $txt['pm_msg_label_remove'], '", "");
				setInnerHTML(theSelect.options[theSelect.options.length - 1], "', $txt['pm_msg_label_remove'], '");
				theSelect.options[theSelect.options.length - 1].disabled = true;

				for (i in toRemove)
				{
					if (i != "length")
						theSelect.options[theSelect.options.length] = new Option(toRemove[i], "rem_" + i);
				}
			}
		}
	// ]]></script>';
    echo '
<form class="flow_hidden" action="', $scripturl, '?action=pm;sa=pmactions;', $context['display_mode'] == 2 ? 'conversation;' : '', 'f=', $context['folder'], ';start=', $context['start'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', '" method="post" accept-charset="', $context['character_set'], '" name="pmFolder">';
    // If we are not in single display mode show the subjects on the top!
    if ($context['display_mode'] != 1) {
        template_subject_list();
        echo '<div class="clear_right"><br /></div>';
    }
    // Got some messages to display?
    if ($context['get_pmessage']('message', true)) {
        // Show the helpful titlebar - generally.
        if ($context['display_mode'] != 1) {
            echo '
				<div class="cat_bar">
					<h3 class="catbg">
						<span id="author">', $txt['author'], '</span>
						<span id="topic_title">', $txt[$context['display_mode'] == 0 ? 'messages' : 'conversation'], '</span>
					</h3>
				</div>';
        }
        // Show a few buttons if we are in conversation mode and outputting the first message.
        if ($context['display_mode'] == 2) {
            // Build the normal button array.
            $conversation_buttons = array('reply' => array('text' => 'reply_to_all', 'image' => 'reply.gif', 'lang' => true, 'url' => $scripturl . '?action=pm;sa=send;f=' . $context['folder'] . ($context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '') . ';pmsg=' . $context['current_pm'] . ';u=all', 'active' => true), 'delete' => array('text' => 'delete_conversation', 'image' => 'delete.gif', 'lang' => true, 'url' => $scripturl . '?action=pm;sa=pmactions;pm_actions[' . $context['current_pm'] . ']=delete;conversation;f=' . $context['folder'] . ';start=' . $context['start'] . ($context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '') . ';' . $context['session_var'] . '=' . $context['session_id'], 'custom' => 'onclick="return confirm(\'' . addslashes($txt['remove_message']) . '?\');"'));
            // Show the conversation buttons.
            echo '
					<div class="pagesection">';
            template_button_strip($conversation_buttons, 'right');
            echo '
					</div>';
        }
        while ($message = $context['get_pmessage']('message')) {
            $window_class = $message['alternate'] == 0 ? 'windowbg' : 'windowbg2';
            echo '
	<div class="', $window_class, ' clear">
		<div class="bwgrid">
		<div class="bwcell2">
			<a id="msg', $message['id'], '"></a>
			<h4>';
            // Show online and offline buttons?
            if (!empty($modSettings['onlineEnable']) && !$message['member']['is_guest']) {
                echo '
				<img src="', $message['member']['online']['image_href'], '" alt="', $message['member']['online']['text'], '" />';
            }
            echo '
				', $message['member']['link'], '
			</h4>
			<ul class="reset smalltext" id="msg_', $message['id'], '_extra_info">';
            // Show the member's primary group (like 'Administrator') if they have one.
            if (isset($message['member']['group']) && $message['member']['group'] != '') {
                echo '
				<li class="membergroup">', $message['member']['group'], '</li>';
            }
            // Done with the information about the poster... on to the post itself.
            echo '
			</ul>
		</div>
		<div class="bwcell14">
			<div class="flow_hidden">
				<div class="keyinfo">
					<h5 id="subject_', $message['id'], '" class="largetext">
						', $message['subject'], '
					</h5>';
            // Show who the message was sent to.
            echo '
					<span class="smalltext">&#171; <strong> ', $txt['sent_to'], ':</strong> ';
            // People it was sent directly to....
            if (!empty($message['recipients']['to'])) {
                echo implode(', ', $message['recipients']['to']);
            } elseif ($context['folder'] != 'sent') {
                echo '(', $txt['pm_undisclosed_recipients'], ')';
            }
            echo '
						<strong> ', $txt['on'], ':</strong> ', $message['time'], ' &#187;
					</span>';
            // If we're in the sent items, show who it was sent to besides the "To:" people.
            if (!empty($message['recipients']['bcc'])) {
                echo '
					<br /><span class="smalltext">&#171; <strong> ', $txt['pm_bcc'], ':</strong> ', implode(', ', $message['recipients']['bcc']), ' &#187;</span>';
            }
            if (!empty($message['is_replied_to'])) {
                echo '
					<br /><span class="smalltext">&#171; ', $txt['pm_is_replied_to'], ' &#187;</span>';
            }
            echo '
				</div>
			</div>
			<div class="clear">
				<div  id="msg_', $message['id'], '"', ' class="post" style="margin-left: 0;">', $message['body'], '</div>
				<div class="smalltext reportlinks">
					', !empty($modSettings['enableReportPM']) && $context['folder'] != 'sent' ? '<div class="righttext"><a href="' . $scripturl . '?action=pm;sa=report;l=' . $context['current_label_id'] . ';pmsg=' . $message['id'] . '">' . $txt['pm_report_to_admin'] . '</a></div>' : '';
            echo '
				</div>';
            // Add an extra line at the bottom if we have labels enabled.
            if ($context['folder'] != 'sent' && !empty($context['currently_using_labels']) && $context['display_mode'] != 2) {
                echo '
				<div class="labels righttext">';
                // Add the label drop down box.
                if (!empty($context['currently_using_labels'])) {
                    echo '
					<select name="pm_actions[', $message['id'], ']" onchange="if (this.options[this.selectedIndex].value) form.submit();">
						<option value="">', $txt['pm_msg_label_title'], ':</option>
						<option value="" disabled="disabled">---------------</option>';
                    // Are there any labels which can be added to this?
                    if (!$message['fully_labeled']) {
                        echo '
						<option value="" disabled="disabled">', $txt['pm_msg_label_apply'], ':</option>';
                        foreach ($context['labels'] as $label) {
                            if (!isset($message['labels'][$label['id']])) {
                                echo '
							<option value="', $label['id'], '">&nbsp;', $label['name'], '</option>';
                            }
                        }
                    }
                    // ... and are there any that can be removed?
                    if (!empty($message['labels']) && (count($message['labels']) > 1 || !isset($message['labels'][-1]))) {
                        echo '
						<option value="" disabled="disabled">', $txt['pm_msg_label_remove'], ':</option>';
                        foreach ($message['labels'] as $label) {
                            echo '
							<option value="', $label['id'], '">&nbsp;', $label['name'], '</option>';
                        }
                    }
                    echo '
					</select>
					<noscript>
						<input type="submit" value="', $txt['pm_apply'], '" class="button_submit" />
					</noscript>';
                }
                echo '
				</div>';
            }
            echo '
			</div>
			<br class="clear" />
		</div>
		</div>
	</div>';
        }
        if (empty($context['display_mode'])) {
            echo '

	<div class="pagesection">
		<div class="floatleft">', $txt['pages'], ': ', $context['page_index'], '</div>
		<div class="floatright"><input type="submit" name="del_selected" value="', $txt['quickmod_delete_selected'], '" style="font-weight: normal;" onclick="if (!confirm(\'', $txt['delete_selected_confirm'], '\')) return false;" class="button_submit" /></div>
	</div>';
        } elseif ($context['display_mode'] == 2 && isset($conversation_buttons)) {
            echo '

	<div class="pagesection">';
            template_button_strip($conversation_buttons, 'right');
            echo '
	</div>';
        }
        echo '
		<br />';
    }
    // Individual messages = buttom list!
    if ($context['display_mode'] == 1) {
        template_subject_list();
        echo '<br />';
    }
    echo '
	<input type="hidden" name="', $context['session_var'], '" value="', $context['session_id'], '" />
</form>';
}
/**
 * Template layer to show items below the subject list
 */
function template_subject_list_below()
{
    global $context;
    // Individual messages = button list!
    if ($context['display_mode'] == 1) {
        template_subject_list();
    }
}
function template_folder()
{
    global $context, $settings, $options, $scripturl, $modSettings, $txt;
    $imgsrc = $settings['images_url'] . '/clipsrc.png';
    // The every helpful javascript!
    echo '
	<script type="text/javascript"><!-- // --><![CDATA[
		var allLabels = {};
		var currentLabels = {};
		function loadLabelChoices()
		{
			var listing = document.forms.pmFolder.elements;
			var theSelect = document.forms.pmFolder.pm_action;
			var add, remove, toAdd = {length: 0}, toRemove = {length: 0};

			if (theSelect.childNodes.length == 0)
				return;';
    // This is done this way for internationalization reasons.
    echo '
			if (!(\'-1\' in allLabels))
			{
				for (var o = 0; o < theSelect.options.length; o++)
					if (theSelect.options[o].value.substr(0, 4) == "rem_")
						allLabels[theSelect.options[o].value.substr(4)] = theSelect.options[o].text;
			}

			for (var i = 0; i < listing.length; i++)
			{
				if (listing[i].name != "pms[]" || !listing[i].checked)
					continue;

				var alreadyThere = [], x;
				for (x in currentLabels[listing[i].value])
				{
					if (!(x in toRemove))
					{
						toRemove[x] = allLabels[x];
						toRemove.length++;
					}
					alreadyThere[x] = allLabels[x];
				}

				for (x in allLabels)
				{
					if (!(x in alreadyThere))
					{
						toAdd[x] = allLabels[x];
						toAdd.length++;
					}
				}
			}

			while (theSelect.options.length > 2)
				theSelect.options[2] = null;

			if (toAdd.length != 0)
			{
				theSelect.options[theSelect.options.length] = new Option("', $txt['pm_msg_label_apply'], '", "");
				setInnerHTML(theSelect.options[theSelect.options.length - 1], "', $txt['pm_msg_label_apply'], '");
				theSelect.options[theSelect.options.length - 1].disabled = true;

				for (i in toAdd)
				{
					if (i != "length")
						theSelect.options[theSelect.options.length] = new Option(toAdd[i], "add_" + i);
				}
			}

			if (toRemove.length != 0)
			{
				theSelect.options[theSelect.options.length] = new Option("', $txt['pm_msg_label_remove'], '", "");
				setInnerHTML(theSelect.options[theSelect.options.length - 1], "', $txt['pm_msg_label_remove'], '");
				theSelect.options[theSelect.options.length - 1].disabled = true;

				for (i in toRemove)
				{
					if (i != "length")
						theSelect.options[theSelect.options.length] = new Option(toRemove[i], "rem_" + i);
				}
			}
		}
	// ]]></script>';
    echo '
<form style="padding-right:5px;" action="', $scripturl, '?action=pm;sa=pmactions;', $context['display_mode'] == 2 ? 'conversation;' : '', 'f=', $context['folder'], ';start=', $context['start'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', '" method="post" accept-charset="UTF-8" name="pmFolder">';
    // If we are not in single display mode show the subjects on the top!
    if ($context['display_mode'] == 2) {
        template_subject_list();
        echo '<div class="clear"><br /></div>';
    } else {
        echo '
	<div class="cat_bar2">
		<div class="floatright tinytext">
	 		<a href="', $scripturl, '?action=pm;view;f=', $context['folder'], ';start=', $context['start'], ';sort=', $context['sort_by'], $context['sort_direction'] == 'up' ? '' : ';desc', $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', '">', $txt['pm_change_view'], '</a>
		</div>
		<h3>', $context['pmboxname'], ' (', $context['display_mode'] == 1 ? $txt['pm_single_view'] : $txt['pm_flat_view'], ')</h3>
	</div>';
    }
    echo '
	<div class="clear"></div>';
    // Got some messages to display?
    echo '<div class="posts_container">';
    if ($context['get_pmessage']('message', true)) {
        // Show a few buttons if we are in conversation mode and outputting the first message.
        if ($context['display_mode'] == 2) {
            // Build the normal button array.
            $conversation_buttons = array('reply' => array('text' => 'reply_to_all', 'image' => 'reply.gif', 'lang' => true, 'url' => $scripturl . '?action=pm;sa=send;f=' . $context['folder'] . ($context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '') . ';pmsg=' . $context['current_pm'] . ';u=all', 'active' => true), 'delete' => array('text' => 'delete_conversation', 'image' => 'delete.gif', 'lang' => true, 'url' => $scripturl . '?action=pm;sa=pmactions;pm_actions[' . $context['current_pm'] . ']=delete;conversation;f=' . $context['folder'] . ';start=' . $context['start'] . ($context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '') . ';' . $context['session_var'] . '=' . $context['session_id'], 'custom' => 'onclick="return confirm(\'' . addslashes($txt['remove_message']) . '?\');"'));
            // Show the conversation buttons.
            echo '
					<div class="pagesection">';
            template_button_strip($conversation_buttons, 'right');
            echo '
					</div>';
        }
        while ($message = $context['get_pmessage']('message')) {
            EoS_Smarty::getSmartyInstance()->display('pm/pmbit.tpl');
        }
        echo '
	</div>';
        if (empty($context['display_mode'])) {
            echo '

	<div class="pagesection">
		<div class="floatleft pagelinks">', $context['page_index'], '</div>
		<div class="floatright"><input type="submit" name="del_selected" value="', $txt['quickmod_delete_selected'], '" style="font-weight: normal;" onclick="if (!confirm(\'', $txt['delete_selected_confirm'], '\')) return false;" class="button_submit" /></div>
	</div>';
        } elseif ($context['display_mode'] == 2 && isset($conversation_buttons)) {
            echo '

	<div class="pagesection">';
            template_button_strip($conversation_buttons, 'right');
            echo '
	</div>';
        }
    } else {
        echo '
		<div class="red_container norounded mediumpadding">', $txt['pm_no_messages'], '
		</div>';
    }
    // Individual messages = buttom list!
    if ($context['display_mode'] == 1) {
        template_subject_list();
        echo '<br />';
    }
    echo '
	<input type="hidden" name="', $context['session_var'], '" value="', $context['session_id'], '" />
</form>';
}
function template_folder()
{
    global $context, $settings, $options, $scripturl, $modSettings, $txt;
    // The every helpful javascript!
    echo '
	<script>
		var allLabels = {};
		var currentLabels = {};
		var txt_pm_msg_label_remove = "', $txt['pm_msg_label_remove'], '";
		var txt_pm_msg_label_apply = "', $txt['pm_msg_label_apply'], '";
	</script>';
    echo '
<form class="flow_hidden" action="', $scripturl, '?action=pm;sa=pmactions;', $context['display_mode'] == 2 ? 'conversation;' : '', 'f=', $context['folder'], ';start=', $context['start'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', '" method="post" accept-charset="', $context['character_set'], '" name="pmFolder">';
    template_subject_list();
    // Got some messages to display?
    if ($context['get_pmessage']('message', true)) {
        while ($message = $context['get_pmessage']('message')) {
            echo '
		<ul data-role="listview" data-inset="true">
			<li data-theme="b">
				<span><a id="msg', $message['id'], '"></a></span>';
            // Show avatars, images, etc.?
            if (!empty($settings['show_user_images']) && empty($options['show_no_avatars']) && !empty($message['member']['avatar']['image'])) {
                echo '
				<div class="avatar">', $message['member']['avatar']['image'], '</div>';
            }
            echo '
				<h4 id="subject_', $message['id'], '">', $txt['subject'], ': ', $message['subject'], ' </h4>
				<p>', $txt['from'], ': ', $message['member']['link'], '</p>
				<p class="ui-li-aside">&#171; <strong> ', $txt['sent_to'], ':</strong>';
            // People it was sent directly to....
            if (!empty($message['recipients']['to'])) {
                echo implode(', ', $message['recipients']['to']);
            } elseif ($context['folder'] != 'sent') {
                echo '(', $txt['pm_undisclosed_recipients'], ')';
            }
            echo '
					<strong> ', $txt['on'], ':</strong> ', $message['time'], ' &#187;
				</p>
			</li>';
            // Don't show these things for guests.
            // if (!$message['member']['is_guest'])
            // {
            // if ($message['can_report'])
            // echo '
            // <li class="report_link"><a href="' . $scripturl . '?action=pm;sa=report;l=' . $context['current_label_id'] . ';pmsg=' . $message['id'] . '">' . $txt['pm_report_to_admin'] . '</a></li>';
            // The post itself.
            echo '
			<li>
				<p id="msg_', $message['id'], '">', $message['body'], '</p>
				<div data-role="controlgroup" data-mini="true" data-type="horizontal" class="ui-li-aside">';
            // Show reply buttons if you have the permission to send PMs.
            if ($context['can_send_pm']) {
                // You can't really reply if the member is gone.
                if (!$message['member']['is_guest']) {
                    // Is there than more than one recipient you can reply to?
                    if ($message['number_recipients'] > 1) {
                        echo '
					<a data-role="button" href="', $scripturl, '?action=pm;sa=send;f=', $context['folder'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pmsg=', $message['id'], ';quote;u=all" class="reply_all_button">', $txt['reply_to_all'], '</a>';
                    }
                    echo '
					<a data-role="button" href="', $scripturl, '?action=pm;sa=send;f=', $context['folder'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pmsg=', $message['id'], ';u=', $message['member']['id'], '" class="reply_button">', $txt['reply'], '</a>
					
					<a data-role="button" href="', $scripturl, '?action=pm;sa=send;f=', $context['folder'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pmsg=', $message['id'], ';quote', $context['folder'] == 'sent' ? '' : ';u=' . $message['member']['id'], '" class="quote_button">', $txt['quote'], '</a>';
                } else {
                    echo '
					<a data-role="button" href="', $scripturl, '?action=pm;sa=send;f=', $context['folder'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';pmsg=', $message['id'], ';quote" class="quote_button">', $txt['reply_quote'], '</a>';
                }
            }
            echo '
					<a class="deleteMsg" data-role="button" href="', $scripturl, '?action=pm;sa=pmactions;pm_actions[', $message['id'], ']=delete;f=', $context['folder'], ';start=', $context['start'], $context['current_label_id'] != -1 ? ';l=' . $context['current_label_id'] : '', ';', $context['session_var'], '=', $context['session_id'], '">', $txt['delete'], '</a>				
				</div>
			</li>';
            // If we're in the sent items, show who it was sent to besides the "To:" people.
            if (!empty($message['recipients']['bcc'])) {
                echo '
		<br /><span class="smalltext">&#171; <strong> ', $txt['pm_bcc'], ':</strong> ', implode(', ', $message['recipients']['bcc']), ' &#187;</span>';
            }
            // Add an extra line at the bottom if we have labels enabled.
            if ($context['folder'] != 'sent' && !empty($context['currently_using_labels']) && $context['display_mode'] != 2) {
                echo '
				<div class="labels righttext flow_auto">';
                // Add the label drop down box.
                if (!empty($context['currently_using_labels'])) {
                    echo '
					<select name="pm_actions[', $message['id'], ']" onchange="if (this.options[this.selectedIndex].value) form.submit();">
						<option value="">', $txt['pm_msg_label_title'], ':</option>
						<option value="" disabled="disabled">---------------</option>';
                    // Are there any labels which can be added to this?
                    if (!$message['fully_labeled']) {
                        echo '
						<option value="" disabled="disabled">', $txt['pm_msg_label_apply'], ':</option>';
                        foreach ($context['labels'] as $label) {
                            if (!isset($message['labels'][$label['id']])) {
                                echo '
							<option value="', $label['id'], '">&nbsp;', $label['name'], '</option>';
                            }
                        }
                    }
                    // ... and are there any that can be removed?
                    if (!empty($message['labels']) && (count($message['labels']) > 1 || !isset($message['labels'][-1]))) {
                        echo '
						<option value="" disabled="disabled">', $txt['pm_msg_label_remove'], ':</option>';
                        foreach ($message['labels'] as $label) {
                            echo '
							<option value="', $label['id'], '">&nbsp;', $label['name'], '</option>';
                        }
                    }
                    echo '
					</select>
					<noscript>
						<input type="submit" value="', $txt['pm_apply'], '" class="button_submit" style="float: none" />
					</noscript>';
                }
                echo '
				</div>';
            }
            echo '
		</ul>';
        }
    }
    echo '
	<input type="hidden" name="', $context['session_var'], '" value="', $context['session_id'], '" />
</form>';
}