//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "telegram.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TTelegr *Telegr;
//---------------------------------------------------------------------------
__fastcall TTelegr::TTelegr(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TTelegr::FormCreate(TObject *Sender)
{
    FILE *f0;
    int i;
    char ch[2048];
    Telegr->Top=Mon->Top;
    Telegr->Left=Mon->Left+Mon->Width+8;
    f0=fopen("telegram.ini","rt");
    fscanf(f0,"%s",&ch); MailServer=AnsiString(ch);
    fscanf(f0,"%s",&ch); FromName=AnsiString(ch);
    fscanf(f0,"%s",&ch); FromStation=AnsiString(ch);
    fscanf(f0,"%d",&NumStation);
    fscanf(f0,"%d",&NAdres1);
    for(i=0; i<NAdres1; i++) // это в Москву ИПГ
     {
             fscanf(f0,"%s",&ch); Adres1[i]=AnsiString(ch);
     }
    fscanf(f0,"%d",&NAdres2);
    for(i=0; i<NAdres2; i++) // это в Новосибирск
     {
             fscanf(f0,"%s",&ch); Adres2[i]=AnsiString(ch);
     }
    fclose(f0);
    Edit2->Text=IntToStr(NumStation);
    sprintf(ch,"ГММДД - Дата зондирования\nГ - последняя цифра года\nММ - месяц\nДД - день ( по гринвичскому времени)");
    Edit3->Hint=AnsiString(ch);
    sprintf(ch,"М - количество сеансов зондирования, одновременно сообщаемых в коде\nК - сумма цифр во всех передаваемых группах, следующих после служебной;\nтолько разряд единиц общей суммы");
    Edit4->Hint=AnsiString(ch);
    sprintf(ch,"ЧЧ - часы\nММ - минуты");
    Edit5->Hint=AnsiString(ch);
    sprintf(ch,"Слой F2\nФФФ - критическая частота в десятых долях МГц\nВВ - минимальная высота, только сотни и десятки км");
    Edit6->Hint=AnsiString(ch);
    sprintf(ch,"ПП - коэффициент М3000F2\nММ - минимальная частота отражения  в десятых долях МГц");
    Edit7->Hint=AnsiString(ch);
    sprintf(ch,"Слой Es\nCCC -  критическая частота в десятых долях МГц\nВВ - минимальная высота, только десятки и единицы км\n- превышение над уровнем в 100 км");
    Edit8->Hint=AnsiString(ch);
    sprintf(ch,"Слой F1\nООО - критическая частота в долях МГц\nВВ - минимальная высота , только сотни и десятки км");
    Edit9->Hint=AnsiString(ch);
    sprintf(ch,"КК - коэффициент М3000F2\nЭЭЭ - действующая высота максимума электронной концентрации\nпараболического слоя F2, в км");
    Edit10->Hint=AnsiString(ch);
    sprintf(ch,"ЕЕЕ - критическая частота в десятых долях МГц\nВВ - минимальная высота, только десятки и единицы км\n- превышение над уровнем в 100 км");
    Edit11->Hint=AnsiString(ch);
    sprintf(ch,"ААА - частота экранировки в десятых долях МГц\nТ - тип Es  ( от 1 до 9)");
    Edit12->Hint=AnsiString(ch);
    sprintf(ch,"РРР - предельная частота рассеянного или наклонного\nотражения от области F, в десятых долях МГц");
    Edit13->Hint=AnsiString(ch);
}
//---------------------------------------------------------------------------
void TTelegr::SendMailIon(void)
{
    FILE *f0;
    int i;
    AnsiString FirstText, SecondText;
    char ch[256];
    char file[256];
    int tt, day,mon,year;
    int mons[]={31,28,31,30,31,30,31,31,30,31,30,31};
    struct date d;
    struct time t;
        getdate(&d);
	day=d.da_day;
	mon=d.da_mon-1;
	year=d.da_year;
	if((int)(year/4)*4==year) mons[1]=29;
        gettime(&t);
        tt =  t.ti_hour - 7;
        if(tt < 0)
		{
		tt += 24;
		day--;
		if(day<1)
			{
			mon--;
			if(mon<0) mon=11;
			day=mons[mon];
			}
		}
    sprintf(ch,"ЗЦЗЦ 025 020001/\nЗИРА40 НВСБ %02d%02d%02d\n",day,tt,t.ti_min);
//    sprintf(ch,"ъйтб40 очув 020893\n");
    FirstText=AnsiString(ch);
    sprintf(ch,"=\nНННН");
//    sprintf(ch,"=\nоооо");
    SecondText=AnsiString(ch);
    TextTel1=Edit1->Text+" "+Edit2->Text+" "+Edit3->Text+" "+Edit4->Text+" "+Edit5->Text+" "+Edit6->Text+" "+
    Edit7->Text+" "+Edit8->Text+" "+Edit9->Text+" "+Edit10->Text+" "+Edit11->Text+" "+Edit12->Text+" "+Edit13->Text;
//        sprintf(file,"%s\\tel\\sumtel.dat",PathIon);
        f0=fopen("telegram.log","at");
        fprintf(f0,"%s\n",TextTel1.c_str());
        fclose(f0);
    TextTel2=FirstText+TextTel1+SecondText;
    //TextTel2="ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ";
    //TextTel2="йцукенгшщзхъфывапролджэячсмитьбю";

    NMSMTP1->Host=AnsiString(MailServer);
//    NMSMTP1->UserID = "serkol";
//    NMSMTP1->PasswordID = "gfhjkm";
//    NMSMTP1->Port = 25;
    NMSMTP1->PostMessage->FromAddress = FromName;
    NMSMTP1->PostMessage->FromName = "Telegramma";
    NMSMTP1->PostMessage->Subject =FromStation;
//    NMSMTP1->AuthenticationType = atLogin;
    if (!NMSMTP1->Connected) NMSMTP1->Connect();
    if (NMSMTP1->Connected)
    {
    YNMail=0;
    for(i=0; i<NAdres1; i++) // это в Москву ИПГ
     {
             SendOneMail(Adres1[i],TextTel1);
             while(YNMail==0);
             YNMail=0;
     }
    for(i=0; i<NAdres2; i++) // это в Новосибирск
     {
             SendOneMail(Adres2[i],TextTel2);
             while(YNMail==0);
             YNMail=0;
     }
//    SendFirstMail();
//    SendSecondMail();
    }
    NMSMTP1->Disconnect();
}
//---------------------------------------------------------------------------
void TTelegr::SendOneMail(AnsiString MailAdres, AnsiString MailText)
{
    Adr=MailAdres;
    NMSMTP1->PostMessage->ToAddress->Text = MailAdres;
//  NMSMTP1->PostMessage->ToCarbonCopy->Text = MemoTelegr->Text;
    NMSMTP1->PostMessage->Body->Text = MailText;
    NMSMTP1->SendMail();
}
//---------------------------------------------------------------------------

void __fastcall TTelegr::NMSMTP1Success(TObject *Sender)
{
     StatusBar1->Panels->Items[0]->Text="Телеграмма отправлена на "+Adr;
     YNMail=1;
}
//---------------------------------------------------------------------------
void __fastcall TTelegr::NMSMTP1Connect(TObject *Sender)
{
      StatusBar1->Panels->Items[0]->Text="Соединение с сервером "+NMSMTP1->Host;
      YNMail=1;
}
//---------------------------------------------------------------------------
void __fastcall TTelegr::NMSMTP1ConnectionFailed(TObject *Sender)
{
       StatusBar1->Panels->Items[0]->Text="Соединение с сервером "+NMSMTP1->Host+ " невозможно";
       YNMail=1;
}
//---------------------------------------------------------------------------

void __fastcall TTelegr::NMSMTP1Disconnect(TObject *Sender)
{
      StatusBar1->Panels->Items[0]->Text="Соединение с сервером "+NMSMTP1->Host+" отключено";
      YNMail=1;
}
//---------------------------------------------------------------------------

void __fastcall TTelegr::NMSMTP1Failure(TObject *Sender)
{
      StatusBar1->Panels->Items[0]->Text="Телеграмма не отправлена на "+Adr;
      YNMail=1;
}
//---------------------------------------------------------------------------

void __fastcall TTelegr::Button1Click(TObject *Sender)
{
        SendMailIon();
}
//---------------------------------------------------------------------------

void __fastcall TTelegr::NMSMTP1SendStart(TObject *Sender)
{
//      StatusBar1->Panels->Items[0]->Text="Телеграмма стартовала на "+Adr;
//      YNMail=1;
}
//---------------------------------------------------------------------------

void __fastcall TTelegr::NMSMTP1ConnectionRequired(bool &Handled)
{
      StatusBar1->Panels->Items[0]->Text="Соединение установлено с сервером "+NMSMTP1->Host;
}
//---------------------------------------------------------------------------

