#include "DoorPack.h"
#define	CTRL	0x0C

top()
{
	putdoorchar(CTRL);
	sendmessage("\033[0m\33[44;32m", 0 );
	sendmessage("                 DoWnLoAd LiSt By CrIsTiAn RoBeRt GaLlAs 1995             V1.0 ", 0 );
}

void dmain(void)
{
	int pp = 0, y = 0, ff, nivel, cc, x1, x;
	char c, a, aca[2], teste[256], usuario[80];
	FILE *gallas;
	getsvar(1, usuario);
	nivel = getsnum(1);
	top();

	if(!(gallas = fopen("bbs:logfiles/dnloadlog.text", "r")))
	{
		sendmessage("\33[0m\33[5;8H", 0);
		sendmessage("*<>* LoG dE dOwNlOaD nAo ExIsTe: bbs:logfiles/DnLoadLog.TeXt *<>*", 0);
		sendmessage("\33[7;0H\33[44;32m", 0 );
		sendmessage("                                                                               ", 0 );
		pausa();
	}
	fclose(gallas);

	if(!(gallas = fopen("doors:lithiumdownlist/lithiumgrep", "r")))
	{
		sendmessage("\33[0m\33[5;4H", 0);
		sendmessage("*<>* MoDuLo ExTrA NaO EnCoNtRaDo: Doors:LithiumDownList/LithiumGrep *<>*", 0);
		sendmessage("\33[7;0H\33[44;32m", 0 );
		sendmessage("                                                                               ", 0 );
		fclose(gallas);
		pausa();
	}

	fclose(gallas);

/*
	PEDE USUARIO SE FOR DE ACESSO > 5000
*/
	if(nivel >= 5000)
	{
		sendmessage("\33[44;32m\33[3;0H", 0 );
		sendmessage("                                                                               ", 0 );
		sendmessage("\33[7;0H", 0);
		sendmessage("                                                                               ", 0 );
		sendmessage("\33[0m\33[5;14HQuAl UsUaRiO \33[40;33m[                                        ]", 0);
		prompt("\33[5;28H\33[40;32m", usuario, 40);
		if(usuario[0] == 0)
			end();
		else
		{
			for(y = 0; usuario[y] != '\0'; y++)
			{
				if(usuario[y] == ' ') {
					y++;
					usuario[y] = toupper(usuario[y]);
					y--; }
			}
			usuario[0] = toupper(usuario[0]);
		}
	}

	sendmessage("\33[5;0H", 0);
	sendmessage("                                                                              ", 0 );
	sendmessage("\33[7;0H", 0);
	sendmessage("                                                                               ", 0 );
	sendmessage("\33[3;0H\33[44;32m", 0);
	sendmessage(" DaTa              HoRa        UsUaRiO           ArQuIvO           CpS           ", 0 );
	sendmessage("\33[11;0H\33[44;32m", 0);
	sendmessage("                                                                               ", 0 );
	sendmessage("\33[0m\33[12;18H", 0); 
	sendmessage("*<>* PrOcUrAnDo ToDoS oS sEuS DoWnLoAdS *<>*", 0);
	sendmessage("\33[13;0H\33[44;32m", 0);
	sendmessage("                                                                               ", 0);
	sendmessage("\33[0m", 0);
		
	sprintf(teste, "doors:lithiumdownlist/lithiumgrep \"%s\" bbs:logfiles/dnloadlog.text > \"ram:%s.DoWnLiSt\"", usuario, usuario);
	system(teste);

	sprintf(teste, "ram:%s.downlist", usuario);

	gallas = fopen(teste, "r");
	x = 0;
	while(a = getc(gallas), ! feof(gallas))
		if(a == '\n')
			x++;
	ff = 11;

	inicio:
	
	sendmessage("\33[11;0H\33[44;32m", 0);
	sendmessage("                                                                               ", 0 );
	sendmessage("\33[0m\33[12;15H", 0); 
	sendmessage("*<>* PoSiCiOnAnDo PoNtEiRo No LoG dE dOwNlOaD *<>*", 0);
	sendmessage("\33[13;0H\33[44;32m", 0);
	sendmessage("                                                                               ", 0 );
	sendmessage("\33[0m", 0);

	x1 = x;
	if(ff > x1)
		ff = x1;
	x = x - ff;
	if(x < 0) 
		x = 0;

	fseek(gallas, SEEK_SET, 0);
	cc = 0;
	while(a = getc(gallas), ! feof(gallas))
	{
		if(cc == x)
			break;
		if(a == '\n')
			cc++;
	}

	fseek(gallas, +3, 1);
	cc = 0;
	sendmessage("\33[0m\33[11;0H", 0);
	sendmessage("                                                                               ", 0 );
	sendmessage("\33[0m\33[12;0H", 0);
	sendmessage("                                                                               ", 0 );
	sendmessage("\33[0m\33[13;0H", 0);
	sendmessage("                                                                               ", 0 );
/* 
	DISPLAY DO COUNTER
*/
	sendmessage("\33[44;32m\33[1;2H", 0);
	sendmessage("      ", 0);
	sendmessage("\33[1;2H", 0);
	sprintf(teste, "[%d/%d]", x1-ff, x1);
	sendmessage(teste);
	sendmessage("\33[0m", 0);
	sendmessage("\33[4;0H", 0);

	while(a = getc(gallas), ! feof(gallas))
	{
		if(cc >= 11)
			break;
		if(a == '\n')
		{
			if(pp == 0) {
				pp = 1;
				sendmessage("\33[33m", 0); 
			} else {
				pp = 0;
				sendmessage("\33[0m", 0); }

			fseek(gallas, +4, 1);
			cc++;
			a = '\n';
		}

		sprintf(teste, "%c", a);
		sendmessage(teste);
	}

	sendmessage("\33[25;0H\33[44;32m", 0 );
	sendmessage("                                                                               ", 0 );
	sendmessage("\33[25;11H\33[44;32mOpCoEs [+ AdIaNtA pAgInA, - ReToRnA pAgInA, EnTeR=AbOrTa]    ", 0);
	sendmessage("\33[44;32m\33[25;68H", 0);
	hotkey("", aca);
	sendmessage("\33[0m", 0);
	if(!strcmp(aca, "-"))
	{
		ff = ff + 11;
/*
		if(ff > x)
			ff = (x1);
*/
		x = x1;
		top();
		sendmessage("\33[3;0H\33[44;32m", 0);
		sendmessage(" DaTa              HoRa        UsUaRiO           ArQuIvO           CpS           ", 0 );
		sendmessage("\33[0m", 0);
		goto inicio;
	}
	if(!strcmp(aca, "+"))
	{
		ff = ff - 11;
		if(ff < 11)
			ff = 11;
		x = x1;
		top();
		sendmessage("\33[3;0H\33[44;32m", 0);
		sendmessage(" DaTa              HoRa        UsUaRiO           ArQuIvO           CpS           ", 0 );
		sendmessage("\33[0m", 0);
		goto inicio;
	}

	fclose(gallas);
	sprintf(teste, "ram:%s.Downlist", usuario);
	remove(teste);
}

pausa()
{
	sendmessage("\33[7;37H\33[44;32m<EnTeR>", 0);
	sendmessage("\33[44;32m\33[7;44H", 0);
	hotkey("", 0);
	sendmessage("\33[0m", 0);
	end();
}
