local TEXT = ''

local dx, dy = canvas:attrSize()
canvas:attrFont('vera', dy/8)

-- Funcion encargada de escribir el text y pintar el fondo de la region
function redraw ()
	canvas:attrColor('black')
	canvas:drawRect('fill', 0,0, dx,dy)

	canvas:attrColor('white')
	
	-- Se busca los retornos de carro para imprimir correctamente el texto
	jj, ii = string.find(TEXT, '\n')

	if jj == nil then
		canvas:drawText(0, 0, TEXT)
	else
		k = 0
		while jj ~= nil do
			-- Se dibuja cada linea de texto
			canvas:drawText(0, k, string.sub(TEXT, 0, jj-1))
			TEXT = string.sub(TEXT, ii+1, string.len(TEXT))
			jj, ii = string.find(TEXT, '\n')
			k = k + 20
		end 
		canvas:drawText(0, k, TEXT)
	end
	
	canvas:flush()
end

local function handler (evt)
	if evt.class ~= 'ncl' then return end

	if evt.type == 'attribution' then
		if evt.name == 'text' then
			if evt.action == 'start' then
				if string.sub(evt.value, 0, 5) == "No se" then
					-- Si no se ha encontrado ningun tweet con el contenido 
					-- se manda el texto de que no se encontro tweet
					TEXT = evt.value
					evt.action = 'stop'
					event.post(evt)
					-- Habiendo un nuevo mensaje se redibuja la region con el nuevo mensaje
					redraw()
				else
					-- Se separa el string del usuario y del tweet y se arregla el formato
					j, i = string.find(evt.value, ';;')
					if j == nil then
						TEXT = ''
					else
						user = string.sub(evt.value, 0, j-1)		
						tweet = string.sub(evt.value, i+1, string.len(evt.value))
						-- Si el tweet tiene mas de 80 caracteres se le inserta un retorno
						-- de carro para que el texto no quede fuera de la region
						if string.len(tweet) > 80 then
							l, k = string.find(string.sub(tweet, 0, 80), "%s", -5)
							if l ~= nil then
								tweet = string.sub(tweet, 0, l) .. '\n' .. string.sub(tweet, k+1, string.len(tweet))
							end
						end
						TEXT = 'RESULTADO: \nUsuario: ' .. user .. '\n' .. tweet
					end
					evt.action = 'stop'
					event.post(evt)
					-- Habiendo un nuevo mensaje se redibuja la region con el nuevo mensaje
					redraw()
				end
			end
		end
	end
end

event.register(handler)
