//**** Mail Checking *******************************************************************

/**
 * Answer to check email prompt
 * reference2 - name of the server being checked
*/
OnBIFFBegin
 {
	"\0\s[0]Ага, предоставь это Люме.\e"

	"\0\s[0]Почта? Сейчас проверю.\e"

	"\0\s[0]\f[name,Hymmnos,hymmnos.ttf]\f[height,16]j.w. mea ADDR => \f[default]\n\n%(reference2)\e"
 }

/**
 * Email number successfully retieved.
 * reference0 - number of emails
 * reference2 - name of the server being checked
 * reference7 - the senders and titles delimited by C_BYTE1 characters
 * see: https://ukagakadreamteam.github.io/ukadoc/manual/list_shiori_event.html
*/
OnBIFFComplete
 {
	if reference0 == 0 
 	{
 		"\0\s[0]%(username), в ящике пусто. Наверное лучше проверить позже.\e"

 		"\0\s[0]Ничего нового.\e"
	}
	elseif reference0 > 0 && reference0 < 13 
	{
		"\0\s[0]Ответ от сервера получен, пришло %( OnCorrectEmailNumberSuffix( reference0 % 10 ) ). Посмотрим?"

		"\0\s[0]Передача данных завершена. На сервере %( OnCorrectEmailNumberSuffix( reference0 % 10 ) )."

		"\0\s[0]Письма из Хогвартса там всё ещё нет, но есть %( OnCorrectEmailNumberSuffix( reference0 % 10 ) ) новых писем. Сейчас зачитаю..."

		--

		"\n\n\![set,autoscroll,disable]\_q%( OnPrintMailAsList( reference7 ) )\e" 
	}
	elseif reference0 > 12 && reference0 < 100 
	{
		"\0\s[0]%( OnCorrectEmailNumberSuffix( reference0 % 10 ) ), довольно много. Давай не будем читать каждое.\e"
	}
	elseif reference0 > 99 
	{
		"\0\s[0]%( OnCorrectEmailNumberSuffix( reference0 % 10 ) )? %(username), давно ты в последний раз проверял свой почтовый ящик?\e"

		"\0\s[0]%( OnCorrectEmailNumberSuffix( reference0 % 10 ) ). Наверное, тебе всё таки стоит начать их читать.\e"
	}
 }

/**
 * Dialogs in case Lyuma cannot fetch email for some reason
 * reference[0] - error code
*/
OnBIFFFailure
 {
	if reference0 == "timeout" //If the connection times out.
 	{
 		"\0\s[0]Сервер не отвечает, %(username).\e"

 		"\0\s[0]Сервер не отвечает, нет смысла ждать дальше.\e"
	}
	/*
	 * If the account blocks the ghost from accessing it.
	 * In gmail it might happen if POP access is not allowed in the account settings, or Gmail has not proccessed POP access request yet.
	 * might need to wait or go to Gmail > all settings > pop/imap forwarding
	*/
 	elseif reference0 == "kick" 
	{
		"\0\s[0]Сервер отказал в доступе. Люма что-то сделала не так?\e"
 	}
	elseif reference0 == "defect" // If the information put into the POP menu is wrong.
 	{
 		"\0\s[0]Не получается. С этим аккаунтом что-то не так. Ты точно всё правильно настроил в настройках POP?\e"
	}
 	else 
	{
		"\0\s[0]Не работает. Вот, что говорит: '%(reference[0])'\e"
 	}
 }

/**
 * Function that prints a string of email senders and titles as unordered list
 * _argv[0] - a string of entries in format "SenderName <Sender@email.eg> Message title" separated by SOH(U+0001) chars
 * returns formatted headers as list
 * : last modifier will ensure only last return candidate gets returned
*/
OnPrintMailAsList : last
 {
	_headers = SPLIT(_argv[0],"")
	_letters = ""
	_headerRegex = "\s*(\S+)\s*<([^>]+)>\s(.*)" // Name <email@example.com> Message title

	foreach _headers; _header
	{
		if RE_MATCH(_header,_headerRegex) > 0 
		{
			_letterTitle = SHIORI3FW.EscapeAllTags(RE_GETSTR[3])
			if RE_GETSTR[3] == ""
			{
				_letterTitle = "<не указано>"
			}
			_letters += "От: %(RE_GETSTR[1]) \nАдрес: %(RE_GETSTR[2]) \nТема: '%(_letterTitle)'\n\n"
		}
	}

	_letters // returning formatted string
 }

/**
 * Function to get a correct spelling for the given given number of emails
 * _argv[0] - number of emails recieved
 * returns  - <number> письмо(-сьма,-сем)
 * 
 * NOTE: It's not placed in word.dic because its only useful for the function above, there is little use in adding it to the global envelope dictionary
 * furthermore its more of a function than a dictionary
*/ 
OnCorrectEmailNumberSuffix
{
	case _argv[0]
	{
		when 1
		{
			"одно новое письмо"
		}
		when 2-4
		{
			"%(_argv[0]) новых письма"
		}
		when 0,5,6,7,8,9
		{
			"%(_argv[0]) новых писем"
		}
	}
}
