try {
//	window.event.cancelBubble = true;
} catch (e) {
}

try {
//	e.stopPropagation();
} catch (e) {
}
var wysiwygConfig = {controls: {insertImage   : { visible : false },strikeThrough : { visible : false },underline     : { visible : true },separator00 : { visible : false },justifyLeft   : { visible : false },justifyCenter : { visible : false },justifyRight  : { visible : false },justifyFull   : { visible : false },separator01 : { visible : false },indent  : { visible : false },outdent : { visible : false },separator02 : { visible : false },subscript : { visible : false },superscript : { visible : false },separator03 : { visible : true },undo : { visible : true },redo : { visible : true },separator04 : { visible : false },insertOrderedList    : { visible : false },insertUnorderedList  : { visible : false },insertHorizontalRule : { visible : false },createLink : { visible : false },separator05 : { visible : false },separator06 : { visible : false },h1mozilla : { visible : false },h2mozilla : { visible : false },h3mozilla : { visible : false },h4mozilla : { visible : false },h5mozilla : { visible : false },h6mozilla : { visible : false },h1 : { visible : false },h2 : { visible : false },h3 : { visible : false },h4 : { visible : false },h5 : { visible : false },h6 : { visible : false },separator07 : { visible : false },cut   : { visible : false },copy  : { visible : false },paste : { visible : false }}}

var iMessageTypeNormal = 1;
var iMessageTypeQuick = 2;
var bMessageInterface = false;
var bUpdateNav = true;

function helpFreeZone() {
	$.blockUI({ fadeOut: 0, message: '<div id="helpFreeZone" class="bgPale"><div class="clearfix"><a href="#" onclick="$.unblockUI(function() { $(\'#helpFreeZone\').remove(); }); return false;" class="msgComp-x" title="click to close message window">x</a></div><h5 id="msgWait" class="bgPale jhide">'+sTextHelpFreeZoneTitle+'</h5><div id="msgForm" class="bgPale">'+sTextHelpFreeZoneBody+'</div></div>', css: { top: '133px', width: '600px', left: ( ($(window).width() / 2) - 300) }, applyPlatformOpacityRules: true });
}

function helpQConnect() {
	$.blockUI({ fadeOut: 0, message: '<div id="helpQConnect" class="bgPale"><div class="clearfix"><a href="#" onclick="$.unblockUI(function() { $(\'#helpQConnect\').remove(); }); return false;" class="msgComp-x" title="click to close message window">x</a></div><div id="msgForm" class="bgPale"><h4>'+sTextHelpUpgradeTitle+'</h4><p>'+sTextHelpUpgradeBody+'</p><h5 class="txt-ctr">---------------- OR ----------------</h5><h4>'+sTextHelpAddBookTitle+'</h4><p>'+sTextHelpAddBookBody+'</p></div></div>', css: { top: '133px', width: '600px', left: ( ($(window).width() / 2) - 300) }, applyPlatformOpacityRules: true });
}

function startComposer(iMessageType, iToId, iThreadId) {
	// bug fix G.F - 2008/08/29 only 1 msgComposer div is now created, however each instance creates an FCK iframe - no destroy method for fck!
	if (iMessageType == iMessageTypeNormal) {
		if (iThreadId) {
			$.blockUI({ fadeOut: 0, message: '<div id="msgComposer"><h5 id="msgWait" class="bgPale jhide">'+sTextWait+'</h5><div id="msgForm" class="bgPale"><form onsubmit="return false;"><div class="clearfix"><a href="#" onclick="$.unblockUI(function() { $(\'#msgComposer\').remove(); }); return false;" class="msgComp-x" title="click to close message window">x</a></div><dl id="msgFields" class="clearfix"><div id="msgError" class="notice jhide" style="margin-bottom: 5px;"><div class="err"><!-- --></div></div><dt><label for="msgTitle">Subject</label></dt><dd><input type="text" id="msgTitle" name="msgTitle"/></dd><dt><label for="msgBody" class="msgBodyLabel">Message</label></dt><dd><div><textarea name="msgBody" id="wysiwyg" style="width: 460px;"></textarea></div></dd><dt>&nbsp;</dt><dd><button onclick="$(\'#msgForm\').slideUp(function() { $(\'#msgWait\').slideDown(function() { sendMessage('+iMessageType+', '+iToId+', '+iThreadId+'); }) });" class="frmBtn">'+sTextSend+'</button>&nbsp;<button onclick="$.unblockUI(function() { $(\'#msgComposer\').remove(); }); return false;" class="frmBtn">'+sTextCancel+'</button></dd><dt>Thread</dt><dd id="msgFormThread" class="msgThreadView"></dd></dl></form></div></div>', css: { top: '52px', width: '600px', left: ( ($(window).width() / 2) - 300) }, applyPlatformOpacityRules: true });
			bUpdateNav = false;
			loadMailThread('#msgFormThread', iThreadId, false);
		} else {
			$.blockUI({ fadeOut: 0, message: '<div id="msgComposer"><h5 id="msgWait" class="bgPale jhide">'+sTextWait+'</h5><div id="msgForm" class="bgPale"><form onsubmit="return false;"><div class="clearfix"><a href="#" onclick="$.unblockUI(function() { $(\'#msgComposer\').remove(); }); return false;" class="msgComp-x" title="click to close message window">x</a></div><dl id="msgFields" class="clearfix"><div id="msgError" class="notice jhide" style="margin-bottom: 5px;"><div class="err"><!-- --></div></div><dt><label for="msgTitle">Subject</label></dt><dd><input type="text" id="msgTitle" name="msgTitle"/></dd><dt><label for="msgBody" class="msgBodyLabel">Message</label></dt><dd><div><textarea name="msgBody" id="wysiwyg" style="width: 460px;"></textarea></div></dd><dt>&nbsp;</dt><dd><button onclick="$(\'#msgForm\').slideUp(function() { $(\'#msgWait\').slideDown(function() { sendMessage('+iMessageType+', '+iToId+'); }) });" class="frmBtn">'+sTextSend+'</button>&nbsp;<button onclick="$.unblockUI(function() { $(\'#msgComposer\').remove(); }); return false;" class="frmBtn">'+sTextCancel+'</button></dd></dl></form></div></div>', css: { top: '52px', width: '600px', left: ( ($(window).width() / 2) - 300) }, applyPlatformOpacityRules: true });
		}
		// left requires half of specified width value to subtract from window - when changing do both!
		//$.blockUI({ fadeOut: 0, message: $('#msgComposer'), css: { top: '133px', width: '500px', left: ( ($(window).width() / 2) - 250) }, applyPlatformOpacityRules: true });
		$('#msgForm').slideDown();
		$('#wysiwyg').wysiwyg(wysiwygConfig);
		bMessageInterface = true;
	}
}

// iExtraId is the thread ID for normal messages (if required) and the
// message type index for quick messages
function sendMessage(iMessageType, iToId, iExtraId) {
	if (iMessageType == iMessageTypeNormal) {
		if (!iExtraId) {
			iExtraId = 0;
		}
		$.post("/api/js/message/send.php", { to: iToId, tid: iExtraId, t: $('#msgComposer #msgTitle').val(), b: $('#wysiwyg').val() }, function(aData){
				eval("aData = "+aData);
				sendMessageRsp(aData);
			});
	} else {
		if (!iExtraId) {
			iExtraId = 1;
		}
		$.post("/api/js/message/sendquick.php", { to: iToId, t: iExtraId }, function(aData){
				eval("aData = "+aData);
				sendQuickMessageRsp(aData);
			});
	}
}

function sendQuickMessageRsp(aData) {
	if (aData['errors'] === false) {
		oMasterNotifier.alert(sTextMessageSent);
	} else {
		if (aData['errors'] == -99) {
			$.blockUI({ fadeOut: 0, message: '<div id="membersOnly" class="bgPale"><div class="clearfix"><a href="#" onclick="$.unblockUI(function() { $(\'#membersOnly\').remove(); }); return false;" class="msgComp-x" title="click to close message window">x</a></div><h5>Join Now</h5> This feature is restricted to members only. <button type="button" class="frmBtn" onmousedown="window.location=\'/join/\';">Join now</button></div>', css: { top: '133px', width: '600px', left: ( ($(window).width() / 2) - 300) }, applyPlatformOpacityRules: true });
		} else if (aData['errors'] == -2) {
			$('#msgError .err').html('<h5>Oops! Sorry!</h5> To send unlimited messages to Quechup members, outside of those that you have invited to join the site... please <a href="/member/subscribe/">UPGRADE NOW!</a><br /><br /> To invite friends so that you can message them for FREE please follow this link <a href="/member/addressbook/">INVITE FRIENDS</a>');
			$('#msgError').show();
			$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
			$.unblockUI();
		} else if (aData['errors'] == -3) {
			$('#msgError .err').html('<h5>Oops! Sorry!</h5> To send unlimited messages to Quechup members, outside of "<a href="#" onclick="helpFreeZone(); try { event.stopPropagation(); } catch (e) {} return false;">Free Zone</a>" members and those that you have invited to join the site... please <a href="/member/subscribe/">UPGRADE NOW!</a><br /><br /> To invite friends so that you can message them for FREE please follow this link <a href="/member/addressbook/">INVITE FRIENDS</a>');
			$('#msgError').show();
			$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
			$.unblockUI();
		} else if (aData['errors'] == -4) {
			$('#msgError .err').html('<h5>Oops! Sorry!</h5> <b>Message Limit Reached:</b> You have reached the maximum messages per day limit. This limit is to help prevent members being spammed and other abuses of Quechup\'s messaging system. We apologise to genuine members for any inconvenience this may cause.');
			$('#msgError').show();
			$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
			$.unblockUI();
		} else if (aData['errors'] == -5) {
			$('#msgError .err').html('<h5>Oops! Sorry!</h5> <b>Message Blocked:</b> You have been blocked by this user and can no longer message them.');
			$('#msgError').show();
			$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
			$.unblockUI();
		} else if (aData['errors'] == -1) {
			oMasterNotifier.alert('Unable to send message to member or member could not be found');
			$.unblockUI();
		}
	}
}

function sendMessageRsp(aData) {
	if (aData['errors'] === false) {
		if (!$('#msgComposer').hasClass('static')) {
			$.unblockUI();
			$('#msgComposer').remove();
		} else {
			$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
			$('#msgTitle').val('');
			$('#wysiwyg').val('');
		}
		$('#msgError').slideUp();
		$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
		oMasterNotifier.alert(sTextMessageSent);
		iQMailSent++;
	} else {
		if (aData['errors'] == -1) {
			$('#msgError .err').html('Unable to send message to member or member could not be found.');
			$('#msgError').slideDown();
		} else if (aData['errors'] == -2) {
			$('#msgError .err').html('<h5>Oops! Sorry!</h5> You have reached your daily limit. <a href="#" onclick="helpQConnect(); try { event.stopPropagation(); } catch (e) {} return false;">For information and options click here.</a>');
			$('#msgError').slideDown();
			$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
		} else if (aData['errors'] == -3) {
			$('#msgError .err').html('<h5>Oops! Sorry!</h5> You have reached your daily limit from Quechup members outside of "<a href="#" onclick="helpFreeZone(); try { event.stopPropagation(); } catch (e) {} return false;">Free Zone</a>". For information and options <a href="#" onclick="helpQConnect(); try { event.stopPropagation(); } catch (e) {} return false;">click here.</a>');
			$('#msgError').slideDown();
			$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
		} else if (aData['errors'] == -4) {
			$('#msgError .err').html('<h5>Oops! Sorry!</h5> <b>Message Limit Reached:</b> This limit is to help prevent members being spammed and other abuses of Quechup\'s messaging system. We apologise to genuine members for any inconvenience this may cause.');
			$('#msgError').slideDown();
			$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
		} else if (aData['errors'] == -5) {
			$('#msgError .err').html('<h5>Oops! Sorry!</h5> <b>Message Blocked:</b> You have been blocked by this user and can no longer message them.');
			$('#msgError').slideDown();
			$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
		} else {
			sMsg = '';
			if (aData['errors'] == -99) {
				sMsg = '<h5>Join Now</h5> This feature is restricted to members only. <button type="button" class="frmBtn" onmousedown="window.location=\'/join/\';">Join now</button>';
			} else {
				for (iKey in aData['errors']) {
					if (aData['errors'][iKey] == 5) {
						sMsg += 'Error: '+iKey+' is too long.<br />';
					} else if (aData['errors'][iKey] == 6) {
						sMsg += 'Error: '+iKey+' is too short.<br />';
					} else if (aData['errors'][iKey] == 7) {
						sMsg += 'Error: '+iKey+' has invalid characters present.<br />';
					}
				}
			}
			$('#msgError .err').html(sMsg);
			$('#msgError').slideDown();
		}
		$('#msgWait').slideUp(function() { $('#msgForm').slideDown() });
	}
}

function markAsRead(iMessageId) {
	$.getJSON("/api/js/message/markread.php", { id: iMessageId }, function(aData){ markAsReadRsp(aData, false); });
}

function markAllAsRead() {
	$.getJSON("/api/js/message/markread.php", function(aData){ markAsReadRsp(aData, true); });
}

function markAllSelectedAsRead(oTarget) {
	var sReadIds = '';
	$("input:checkbox:checked", oTarget).each(function() {
			sReadIds += ','+$(this).val();
		});
	if (sReadIds != '') {
		if (confirm("Please confirm that you would like to mark these messages as read.")) {
			$.getJSON("/api/js/message/markread.php", { ids: sReadIds }, function(aData){ markAsReadRsp(aData, false); });
		}
	}
}

function markAsReadRsp(aData, bMarkAll) {
	if (aData['errors'] === false) {
		if (aData['ids']) {
			for (iKey in aData['ids']) {
				$('#msgID'+aData['ids'][iKey]).removeClass('msgUnread');
				$('#msgMarkA'+aData['ids'][iKey]).remove();
			}
		} else if (!bMarkAll) {
			$('#msgID'+aData['id']).removeClass('msgUnread');
			$('#msgMarkA'+aData['id']).remove();
		} else {
			$('.message').removeClass('msgUnread');
			$('.msgMarkA').remove();
			iQMailRead++;
		}
	} else {
		alert(aData['errors']);
	}
}

function deleteMessage(iMessageId) {
	$('#msgID'+iMessageId).addClass('msgToDelete');
	if (confirm("Please confirm that you would like to delete this message permanently?")) {
		$.getJSON("/api/js/message/delete.php", { id: iMessageId }, function(aData){ deleteMessageRsp(aData, false); });
	} else {
		$('#msgID'+iMessageId).removeClass('msgToDelete');
	}
}

function deleteAllSelectedMessages(oTarget) {
	var sDeleteIds = '';
	$("input:checkbox:checked", oTarget).each(function() {
			sDeleteIds += ','+$(this).val();
			$('#msgID'+$(this).val()).addClass('msgToDelete');
		});
	if (sDeleteIds != '') {
		if (confirm("Please confirm that you would like to permanently delete these messages.")) {
			$.getJSON("/api/js/message/delete.php", { ids: sDeleteIds }, function(aData){ deleteMessageRsp(aData, false); });
		} else {
			$('.message').removeClass('msgToDelete');
		}
	} else {
		$('.message').removeClass('msgToDelete');
	}
}

function deleteAllMessages(iFolderId) {
	if (!iFolderId) {
		iFolderId = 0;
	}
	if (confirm("Please confirm that you would like to delete ALL messages permanently from this folder?")) {
		$.getJSON("/api/js/message/delete.php", { fid: iFolderId }, function(aData){ deleteMessageRsp(aData, true); });
	} else {
		$('#msgID'+iMessageId).removeClass('msgToDelete');
	}
}

function deleteMessageRsp(aData, bDelAll) {
	if (aData['errors'] === false) {
		if (aData['ids']) {
			$('.message').removeClass('msgToDelete');
			for (iKey in aData['ids']) {
				$('#msgID'+aData['ids'][iKey]).slideUp(function() { $(this).remove(); });
			}
		} else if (!bDelAll) {
			$('.message').removeClass('msgToDelete');
			$('#msgID'+aData['id']).slideUp(function() { $(this).remove(); });
		} else {
			$('.message').parent().slideUp(function() { $('.message', this).remove(); $(this).slideDown() });
		}
	} else {
		alert(aData['errors']);
	}
}

function deleteFolder(iFolderId) {
	$('#msgFld'+iFolderId).addClass('msgToDelete');
	if (confirm("Please confirm that you would like to delete this folder permanently?\nAll message found in this folder will be moved to your inbox.")) {
		$.getJSON("/api/js/message/deletefolder.php", { id: iFolderId }, function(aData){ deleteFolderRsp(aData); });
	} else {
		$('#msgFld'+iFolderId).removeClass('msgToDelete');
	}
}

function deleteFolderRsp(aData) {
	if (aData['errors'] == '') {
		$('#msgFld'+aData['id']).slideUp(function() { $(this).remove(); });
	} else {
		alert(aData['errors']);
	}
	$('.folder').removeClass('msgToDelete');
}

function moveMessage(iMessageId, iFolderId) {
	$.getJSON("/api/js/message/move.php", { id: iMessageId, fid: iFolderId }, function(aData){ moveMessageRsp(aData); });
}

function moveSelectedMessages(oTarget, iFolderId) {
	var sMoveIds = '';
	$("input:checkbox:checked", oTarget).each(function() {
			sMoveIds += ','+$(this).val();
		});
	if (!iFolderId || (iFolderId == '')) {
		alert('You must select a folder to move the messages to.');
		return false;
	}
	if (sMoveIds != '') {
		if (confirm("Please confirm that you would like to move these messages.")) {
			$.getJSON("/api/js/message/move.php", { ids: sMoveIds, fid: iFolderId }, function(aData){ moveMessageRsp(aData, false); });
		}
	} else {
		alert('You have not selected any messages to be moved.');
		return false;
	}
}

function moveMessageRsp(aData) {
	if (aData['errors'] === false) {
		if (aData['ids']) {
			$('.message').removeClass('msgToDelete');
			for (iKey in aData['ids']) {
				$('#msgID'+aData['ids'][iKey]).slideUp(function() { $(this).remove(); });
			}
		} else {
			$('#msgID'+aData['id']).slideUp(function() { $(this).remove(); });
		}
	} else {
		alert(aData['errors']);
	}
}

currentInboxTarget = '';
currentInboxFolderTarget = '';
showingSent = false;
prevFolderId = false;
currentFolderId = false;
currentThreadId = false;
currentManagable = true;
tmpFolderId = false;
currentPage = 1;

function loadMail(sTarget, iFolderId, bManagable) {
	if (!iFolderId) {
		iFolderId = 0;
	}
	if (bManagable !== false) {
		bManagable = true;
	}
	prevFolderId = currentFolderId;
	currentFolderId = iFolderId;
	currentThreadId = false;
	_loadMail(sTarget, iFolderId, false, bManagable)
}

function loadMailSent(sTarget, bManagable) {
	if (bManagable !== false) {
		bManagable = true;
	}
	prevFolderId = currentFolderId;
	currentFolderId = false;
	currentThreadId = false;
	_loadMail(sTarget, -1, false, bManagable)
}

function loadMailFrom(sTarget, iUserId, bManagable) {
	if (bManagable !== false) {
		bManagable = true;
	}
	prevFolderId = currentFolderId;
	currentFolderId = false;
	currentThreadId = false;
	_loadMail(sTarget, false, false, bManagable, iUserId)
}

function loadMailThread(sTarget, iThreadId, bManagable) {
	if (bUpdateNav) {
		tmpFolderId = prevFolderId;
	}
	if (bManagable !== false) {
		bManagable = true;
	}
	prevFolderId = currentFolderId;
	currentFolderId = false;
	currentThreadId = iThreadId;
	_loadMail(sTarget, false, iThreadId, bManagable)
}

function _loadMail(sTarget, iFolderId, iThreadId, bManagable, iPage) {
	if (currentInboxTarget == '') {
		if (!iPage) {
			iPage = 1;
		}
		currentPage = iPage;
		currentManagable = bManagable;
		currentInboxTarget = sTarget;
		if (iThreadId) {
			showingSent = false;
			$.getJSON("/api/js/message/getall.php", { tid: iThreadId, p: iPage }, function(aData){ loadMailRsp(aData, true); });
		} else if (iFolderId != -1) {
			showingSent = false;
			$.getJSON("/api/js/message/getall.php", { id: iFolderId, p: iPage }, function(aData){ loadMailRsp(aData, (iFolderId != 0)); });
		} else {
			showingSent = true;
			$.getJSON("/api/js/message/getall.php", { sent: 1, p: iPage }, function(aData){ loadMailRsp(aData, false); });
		}
	} else {
		alert('Already being loaded...');
	}
}

var tog = false;

function loadMailRsp(aData, bShowBack) {
	if (currentInboxTarget == '') {
		currentInboxTarget = '#msgInbox';
	}
	oTarget = $(currentInboxTarget);
	oToolbar = $('.secSubToolbar');
	scroll(0,0);
	if (!aData['errors']) {
		if (bUpdateNav) {
			if (bShowBack && (!showingSent && (currentFolderId === false))) {
				if (prevFolderId === false) {
					oToolbar.html('<a href="#" onclick="loadMailSent(\''+currentInboxTarget+'\', '+currentManagable+'); return false;">&laquo; back</a>');
				} else {
					oToolbar.html('<a href="#" onclick="loadMail(\''+currentInboxTarget+'\', '+prevFolderId+'); return false;">&laquo; back</a>');
				}
			} else if (currentManagable && (showingSent || (currentFolderId !== false))) {
				if (currentFolderId > 0) {
					sDeleteFolderHtml = ' <button onclick="deleteFolder('+currentFolderId+');" class="frmBtn">Delete this folder</button>';
				} else {
					sDeleteFolderHtml = '';
				}
				if (bIsFreeMember) {
					oToolbar.html('Select <input type="checkbox" onclick="$(\'input[type=checkbox]\').attr(\'checked\',!tog); tog = !tog;" class="rad" /> <button onclick="deleteAllSelectedMessages($(currentInboxTarget));" class="frmBtn">delete selected</button><span id="moveFolderToCont">'+sFolderSelectBoxHtml+' <button onclick="moveSelectedMessages($(currentInboxTarget), $(\'#moveMailToFolder\').val());" class="frmBtn">Move Mail</button>'+sDeleteFolderHtml+'</span>');
					//oToolbar.html('Select <input type="checkbox" onclick="$(\'input[type=checkbox]\').attr(\'checked\',!tog); tog = !tog;" class="rad" /> <button onclick="deleteAllSelectedMessages($(currentInboxTarget));" class="frmBtn">delete selected</button><span id="moveFolderToCont">'+sFolderSelectBoxHtml+' <button onclick="moveSelectedMessages($(currentInboxTarget), $(\'#moveMailToFolder\').val());" class="frmBtn">Move Mail</button></span></div>');
				} else {
					oToolbar.html('Select <input type="checkbox" onclick="$(\'input[type=checkbox]\').attr(\'checked\',!tog); tog = !tog;" class="rad" /> <button id="btnMarkAllRead" onclick="markAllSelectedAsRead();" class="frmBtn">mark selected as read</button> <button onclick="deleteAllSelectedMessages($(currentInboxTarget));" class="frmBtn">delete selected</button><span id="moveFolderToCont">'+sFolderSelectBoxHtml+' <button onclick="moveSelectedMessages($(currentInboxTarget), $(\'#moveMailToFolder\').val());" class="frmBtn">Move Mail</button>'+sDeleteFolderHtml+'</span>');
				}
			}
		}

		if (currentFolderId === 0) {
			$(".curFolder").removeClass("curFolder");
			$("#msgFld0").addClass("curFolder");
			$("#btnMarkAllRead").show();
		} else if (showingSent === true) {
			$(".curFolder").removeClass("curFolder");
			$("#msgFldSent").addClass("curFolder");
			$("#btnMarkAllRead").hide();
		} else if (currentFolderId === false) {
			$(".curFolder").removeClass("curFolder");
			$("#msgFld"+prevFolderId).addClass("curFolder");
		} else {
			$(".curFolder").removeClass("curFolder");
			$("#msgFld"+currentFolderId).addClass("curFolder");
			$("#btnMarkAllRead").show();
		}

		oTarget.html('');
		iCount = 0;
		for (iMessageKey in aData['msgs']) {
			iCount++;
			oMessage = aData['msgs'][iMessageKey];
			sClass = ' clearfix';
			if (iMessageKey % 2) {
				sClass += '';
			}
			//not read AND not restricted AND not showing sent or viewing message in full
			if (oMessage['s'] == 0 && !showingSent && (!oMessage['b'] || oMessage['r'])) {
				sClass += ' msgUnread';
			}

			if ($('#msgTitle') && ($('#msgTitle').val() == '')) {
				if (oMessage['t'].indexOf('RE: ') != -1) {
					$('#msgTitle').val(oMessage['t']);
				} else {
					$('#msgTitle').val('RE: '+oMessage['t']);
				}
			}

			oTableRow = $('<div id="msgID'+oMessage['id']+'" messageid="'+oMessage['id']+'" threadid="'+oMessage['tid']+'" divtarget="'+currentInboxTarget+'" class="message'+sClass+'"></div>');

			if (currentManagable && !oMessage['b']) {
				oTableRow.append('<div class="msg-slct"><input type="checkbox" value="'+oMessage['id']+'" onclick="try { event.stopPropagation(); } catch (e) {}" class="rad" /></div>');
			}

			if (oMessage['f']) {
				if (oMessage['p']) {
					sAvatarHtml = '/images/photos/'+oMessage['f']+iThumbWidthB+'x'+iThumbHeightB;
				} else {
					sAvatarHtml = '/api/images/processimage.php?o=1&w='+iThumbWidthB+'&h='+iThumbHeightB+'&f=/../images/photos/'+oMessage['f'];
				}
			} else {
				sAvatarHtml = '/images/phNo-35.png';
			}
			sAvatarHtml = "<a href=\"/profile/view/"+oMessage['a']+"\" title=\"view "+oMessage['a']+"'s profile\" onclick=\"try { event.stopPropagation(); } catch (e) {}\"><img src=\""+sAvatarHtml+"\" border=\"0\" class=\"ph friend\" userid=\""+oMessage['uid']+"\" /></a>";
			//alt=\""+oMessage['a']+"'s photo\"
			oTableRow.append('<div class="msg-ph">'+sAvatarHtml+'</div>');
			if (oMessage['cr']) {
				sRecipientCount = '<div class=\"txt-sm\">'+oMessage['cr']+'</div>';
			} else {
				sRecipientCount = '';
			}
			oTableRow.append("<div class=\"msg-date\"><a href=\"/profile/view/"+oMessage['a']+"\" title=\"view "+oMessage['a']+"'s profile\" onclick=\"try { event.stopPropagation(); } catch (e) {}\">"+oMessage['a']+"</a><div class=\"txt-sm\">"+oMessage['dt']+"</div>"+sRecipientCount+"</div>");
			if (currentManagable) {
				oTableRow.append('<a href="#" onclick="deleteMessage('+oMessage['id']+'); try { event.stopPropagation(); } catch (e) {} return false;" class="box-x" title="delete message">x</a>');
			}
			if (oMessage['r']) {
				sXtraHtml = '';
				sCntClass = 'msg-cnt';
				if (oMessage['r'] == 1) {
					sCntHtml = '<h5>'+oMessage['t']+'</h5><span class="subtle">You have reached your daily limit. <a href="#" onclick="helpQConnect(); try { event.stopPropagation(); } catch (e) {} return false;">For information &amp; options click here.</a></span>';

				} else {
					sCntHtml = '<h5>'+oMessage['t']+'</h5><span class="subtle">You have reached your daily limit from Quechup members outside of "<a href="#" onclick="helpFreeZone(); try { event.stopPropagation(); } catch (e) {} return false;">Free Zone</a>". For information &amp; options <a href="#" onclick="helpQConnect(); return false;">click here.</a></span>';
				}
			} else if (!oMessage['b']) {
				sCntClass = 'msg-cnt';
				sCntHtml = oMessage['t'];
				if (currentManagable && (oMessage['s'] == 0)) {
					sXtraHtml = '<div class="msg-nav clearfix">';
					if (!showingSent) {
						sXtraHtml += '<div class="msgMarkA" id="msgMarkA'+oMessage['id']+'"><a href="#" onclick="markAsRead('+oMessage['id']+'); try { event.stopPropagation(); } catch (e) {} return false;" class="icoMsgUnread" title="mark message read"><html:abbr title="mark message read">&#x2709;</html:abbr></a></div>';
					}
					sXtraHtml += '<a href="#" onclick="loadMailThread($(this).attr(\'divtarget\'), $(this).attr(\'threadid\')); try { event.stopPropagation(); } catch (e) {} return false;" threadid="'+oMessage['tid']+'" divtarget="'+currentInboxTarget+'">view message</a></div>';
				} else {
					sXtraHtml = '<div class="msg-nav clearfix">';
					if (!showingSent) {
						sXtraHtml += '<div class="msgMarkA" id="msgMarkA'+oMessage['id']+'"><span class="icoMsgRead" title="message read"><html:abbr title="message read">&#x2709;</html:abbr></span></div>';
					}
					sXtraHtml += '<a href="#" onclick="loadMailThread($(this).attr(\'divtarget\'), $(this).attr(\'threadid\')); try { event.stopPropagation(); } catch (e) {} return false;" threadid="'+oMessage['tid']+'" divtarget="'+currentInboxTarget+'">view message</a></div>';
				}
			} else {
				sCntClass = 'msg-cnt-xtra';

				sCntHtml = '<h5>'+oMessage['t']+'</h5>'+oMessage['b'];
				if (currentManagable && (oMessage['uid'] != iUserId)) {
					sXtraHtml = '<div class="msg-nav-xtra clearfix bgGray"><a href="#" onclick="startReporter(iQuickIssueTypeMessage, '+oMessage['id']+'); try { event.stopPropagation(); } catch (e) {} return false;" class="float-r icoQ">report abuse</a> <a href="#" onclick="startComposer(iMessageTypeNormal, '+oMessage['uid']+', '+oMessage['tid']+'); try { event.stopPropagation(); } catch (e) {} return false;" class="icoMsg">reply</a></div>';
				} else {
					sXtraHtml = '';
				}
			}
			oTableRow.append('<div class="'+sCntClass+'">'+sCntHtml+'</div>');
			oTableRow.append(sXtraHtml);

			oTarget.append(oTableRow);
		}

		if (!showingSent) {
			iPageFolderId = currentFolderId;
		} else {
			iPageFolderId = -1;
		}
		//only show if not viewing msg
		if (!bShowBack) {
			if (currentPage == 1) {
				oTarget.append('<div class="pageBar"><span class="pageCur">'+currentPage+'</span><a href="#" onclick="_loadMail(\''+currentInboxTarget+'\', '+iPageFolderId+', '+currentThreadId+', '+currentManagable+', '+(currentPage+1)+'); return false;">'+(currentPage+1)+'</a><a href="#" onclick="_loadMail(\''+currentInboxTarget+'\', '+currentFolderId+', '+currentThreadId+', '+currentManagable+', '+(currentPage+2)+'); return false;">'+(currentPage+2)+'</a></div>');
			} else if (iCount == 30) {
				oTarget.append('<div class="pageBar"><a href="#" onclick="_loadMail(\''+currentInboxTarget+'\', '+iPageFolderId+', '+currentThreadId+', '+currentManagable+', '+(currentPage-1)+'); return false;">'+(currentPage-1)+'</a><span class="pageCur">'+currentPage+'</span><a href="#" onclick="_loadMail(\''+currentInboxTarget+'\', '+currentFolderId+', '+currentThreadId+', '+currentManagable+', '+(currentPage+1)+'); return false;">'+(currentPage+1)+'</a></div>');
			} else {
				oTarget.append('<div class="pageBar"><a href="#" onclick="_loadMail(\''+currentInboxTarget+'\', '+iPageFolderId+', '+currentThreadId+', '+currentManagable+', '+(currentPage-1)+'); return false;">'+(currentPage-1)+'</a><span class="pageCur">'+currentPage+'</span></div>');
			}
		}

		if (currentManagable && !showingSent) {
			// why can't we view sent items?
			//$('.message').each(function() { $(this).click(function(e) { loadMailThread($(this).attr('divtarget'), $(this).attr('threadid')); },false); });
		}

		// Activate the new dragable elements
/*		$('.drag').draggable({
				cursor: "grabbing",
				cursorAt: {right: -1, top: -1},
				helper: 'original',
				revert: true,
				opacity: 0.7,
				zIndex: 99,
				start: function(e, ui) { $('#dropMask').fadeIn(); $(this).addClass('dragging'); },
				stop: function(e, ui) { $('#dropMask').hide(); $(this).removeClass('dragging'); }
			});*/

		if (!bUpdateNav) {
			currentFolderId = prevFolderId;
			prevFolderId = tmpFolderId;
			bUpdateNav = true;
		}
	} else {
		oTarget.html(aData['errors']);
	}
	currentInboxTarget = '';
}

function createFolder(sNewFolderId) {
	$.blockUI({ fadeOut: 0, message: $(sNewFolderId), css: { width: '600px', left: ( ($(window).width() / 2) - 300) }, applyPlatformOpacityRules: true }); //, overlayCSS: { backgroundColor:'#FFFFFF', opacity: '0.4' }
}

var newFolderName = '';

function _createFolder(sFolderName, sFolderTarget, sMailTarget) {
	if ((currentInboxFolderTarget == '') && (currentInboxTarget == '')) {
		currentInboxFolderTarget = sFolderTarget;
		currentInboxTarget = sMailTarget;
		newFolderName = sFolderName;
		$.getJSON("/api/js/message/createfolder.php", { name: sFolderName }, function(aData){ _createFolderRsp(aData); });
	} else {
		alert('Inbox folders still being loaded.');
	}
}

function _createFolderRsp(aData) {
	if (aData['errors'] == '') {
		$.unblockUI();
		$(currentInboxFolderTarget).append('<li id="msgFld'+aData['id']+'" class="drop-folder drag folder plaintext" name="folder'+aData['id']+'" folderid="'+aData['id']+'" onclick="loadMail(\''+currentInboxTarget+'\', '+aData['id']+');">'+newFolderName+'</li>');

		// Activate the new dropable elements
		$(".drop-folder").droppable({
				accept: ".message",
				tolerance: 'pointer',
				activeClass: 'dropActive',
				greedy: true,
				hoverClass: 'dropHover',
				drop: function(ev, ui) {
					if ($(ui.draggable).hasClass('message')) {
						moveMessage($(ui.draggable).attr('messageid'), $(this).attr('folderid'));
					} else {
						alert('Oops, you can\'t drop that here!');
					}
				}
			});

		// Activate the new dragable elements
		$('.drag').draggable({
				cursor: "grabbing",
				cursorAt: {right: -1, top: -1},
				helper: 'original',
				revert: true,
				opacity: 0.7,
				zIndex: 99,
				start: function(e, ui) { $('#dropMask').fadeIn(); $(this).addClass('dragging'); },
				stop: function(e, ui) { $('#dropMask').hide(); $(this).removeClass('dragging'); }
			});
	} else {
		alert(aData['errors']);
	}
	currentInboxFolderTarget = '';
	currentInboxTarget = '';
}

function getFolders(sTarget) {
	if (currentInboxFolderTarget == '') {
		currentInboxFolderTarget = sTarget;
		$.getJSON("/api/js/message/getfolders.php", function(aData){ getFoldersRsp(aData); });
	} else {
		alert('Inbox folders still being loaded.');
	}
}

var sFolderSelectBoxHtml = '';

function getFoldersRsp(aData, bShowBack) {
	oTarget = $(currentInboxFolderTarget);
	if (!aData['errors']) {
		if (currentFolderId == 0) {
			oTarget.append('<li id="msgFld0" onclick="loadMail(\''+currentInboxTarget+'\', 0);" class="folder curFolder">Inbox</li>');
		} else {
			oTarget.append('<li id="msgFld0" onclick="loadMail(\''+currentInboxTarget+'\', 0);" class="folder">Inbox</li>');
		}
		if (showingSent) {
			oTarget.append('<li id="msgFldSent" onclick="loadMailSent(\''+currentInboxTarget+'\');" class="folder curFolder">Sent Messages</li>');
		} else {
			oTarget.append('<li id="msgFldSent" onclick="loadMailSent(\''+currentInboxTarget+'\');" class="folder">Sent Messages</li>');
		}

		sTmpFolderSelectBoxHtml = '';
		for (iFolderKey in aData['flds']) {
			oFolder = aData['flds'][iFolderKey];
			oTarget.attr('editid', oTarget.attr('editid')+'_'+oFolder['id']);
			if (currentFolderId === oFolder['id']) {
				oTarget.append('<li id="msgFld'+oFolder['id']+'" class="drop-folder folder drag curFolder plaintext" name="folder'+oFolder['id']+'" folderid="'+oFolder['id']+'" onclick="loadMail(\''+currentInboxTarget+'\', '+oFolder['id']+');">'+oFolder['n']+'</li>');
			} else {
				oTarget.append('<li id="msgFld'+oFolder['id']+'" class="drop-folder folder drag plaintext" name="folder'+oFolder['id']+'" folderid="'+oFolder['id']+'" onclick="loadMail(\''+currentInboxTarget+'\', '+oFolder['id']+');">'+oFolder['n']+'</li>');
			}
			sTmpFolderSelectBoxHtml += '<option value="'+oFolder['id']+'">'+oFolder['n']+'</option>';
		}
		if (sTmpFolderSelectBoxHtml != '') {
			sTmpFolderSelectBoxHtml = ' <select id="moveMailToFolder"><option value="">Move to...</option>'+sTmpFolderSelectBoxHtml+'</select>';
		}

		sFolderSelectBoxHtml = sTmpFolderSelectBoxHtml;
		if ($('#moveFolderToCont').html() == '') {
			$('#moveFolderToCont').html(sFolderSelectBoxHtml+' <button onclick="moveSelectedMessages($(currentInboxTarget), $(\'#moveMailToFolder\').val());" class="frmBtn">Move Mail</button>');
		}

		// Activate the new dropable elements
		$(".drop-folder").droppable({
				accept: ".message",
				tolerance: 'pointer',
				activeClass: 'dropActive',
				greedy: true,
				hoverClass: 'dropHover',
				drop: function(ev, ui) {
					if ($(ui.draggable).hasClass('message')) {
						moveMessage($(ui.draggable).attr('messageid'), $(this).attr('folderid'));
					} else {
						alert('Oops, you can\'t drop that here!');
					}
				}
			});

		// Activate the new dragable elements
		$('.drag').draggable({
				cursor: "grabbing",
				cursorAt: {right: -1, top: -1},
				helper: 'original',
				revert: true,
				opacity: 0.7,
				zIndex: 99,
				start: function(e, ui) { $('#dropMask').fadeIn(); $(this).addClass('dragging'); },
				stop: function(e, ui) { $('#dropMask').hide(); $(this).removeClass('dragging'); }
			});
	} else {
		oTarget.html(aData['errors']);
	}
	currentInboxFolderTarget = '';
}
