char DL_URL[10000];
dword DL_bufpointer, DL_bufsize, DL_http_transfer, DL_http_buffer;

int downloaded_size, full_size;

byte download_state;
enum { STATE_NOT_STARTED, STATE_IN_PROGRESS, STATE_COMPLETED };




void Downloading_SetDefaults()
{
	downloaded_size = full_size = 0;
}

void Downloading_Stop()
{
	download_state = STATE_NOT_STARTED;
	if (DL_http_transfer<>0)
	{
		EAX = DL_http_transfer;
		EAX = EAX.http_msg.content_ptr;		// get pointer to data
		$push	EAX							// save it on the stack
		http_free stdcall (DL_http_transfer);	// abort connection
		$pop	EAX							
		mem_Free(EAX);						// free data
		DL_http_transfer=0;
		DL_bufsize = 0;
		DL_bufpointer = mem_Free(DL_bufpointer);
		Downloading_SetDefaults();
	}
}

void Downloading_Start()
{
	download_state = STATE_IN_PROGRESS;
	http_get stdcall (#DL_URL, 0, 0, #accept_language);
	DL_http_transfer = EAX;
}

void Downloading_Completed()
{
	ESI = DL_http_transfer;
	DL_bufpointer = ESI.http_msg.content_ptr;
	DL_bufsize = ESI.http_msg.content_received;
	http_free stdcall (DL_http_transfer);
	DL_http_transfer=0;
	download_state = STATE_COMPLETED;
}