
-- Obtiene la pregunta y las alternativass

require 'tcp'

local line = 0

function writeQuestion(text,size, postion_x, position_y)
   canvas:attrColor(255,255,255,0) -- setea el color a utilizar a continuación, en formato RGBA
   canvas:attrFont("in_font", size) -- setea la fuente a utilizar para el texto, junto a su tamaño.
   canvas:drawText(postion_x, position_y, text) -- dibuja el texto text en la posición x,y de la región
   canvas:flush() -- actualiza el contenido en pantalla
end

function writeAnswers(text,size, postion_x, position_y)
   canvas:attrColor(255,255,255,0) -- setea el color a utilizar a continuación, en formato RGBA
   canvas:attrFont("in_font", size) -- setea la fuente a utilizar para el texto, junto a su tamaño.
   canvas:drawText(postion_x, position_y, text) -- dibuja el texto text en la posición x,y de la región
   canvas:flush() -- actualiza el contenido en pantalla
end

-- Funcion que inicia con el evento
local function winHandler (evt)
	if evt.class == "ncl" and evt.type == "presentation" then 												--se revisa que el formato del evento sea coherente
		if (evt.action == 'start') then	-- si el evento comienza																	--en el caso de que la accion del evento sea "start"																							--se desplega el panel donde se mostrara la informacion meteorologica
		local host = "www2.elo.utfsm.cl"																	--se especifica el host como "www2.elo.utfsm.cl"
		tcp.execute(
			function ()
				--Se realiza la conexion tcp con el host
				tcp.connect(host, 80)
				--Se realiza peticion de la pregunta y las alternativas al host
				local url = "GET http://"..host.."/~elo323/survey/get_question.php"	
				tcp.send(url)
				tcp.send("\n")
				local result = nil
				--Se obtiene respuesta del servidor
				result = tcp.receive()
				line = 0
				if result then			
					--formateo de datos
					canvas:clear()
					_,_,dirQuestion = string.find(result, "<askid>(.*)</askid>")
					_,_,question1 = string.find(result, "<question>(.*)</question>")
					_,_,option1 = string.find(result, "<opt1>(.*)</opt1>")
					_,_,option2 = string.find(result, "<opt2>(.*)</opt2>")
					_,_,option3 = string.find(result, "<opt3>(.*)</opt3>")
					_,_,option4 = string.find(result, "<opt4>(.*)</opt4>")
					--comienza el pespliegue de datos
					--local img_code = "100x100/" ..tcode.. ".png"
					--local thmb = canvas:new(img_code)
					--canvas:compose(0,0,thmb)
					writeQuestion(question1,25,65,28)
					writeAnswers(option1,14,100,110) -- 40,100
					writeAnswers(option2,14,650,110)
					writeAnswers(option3,14,100,155)
					writeAnswers(option4,14,650,155)
					canvas:flush()
					--writeText(weathertext,14)
					--writeweather(tcode,14)
				else																						--en caso de error se muestra en pantalla
					writeText("Error al recibir datos de conexion TCP",14)
					if evt.error ~= nil then 
						result = 'error: ' .. evt.error
					end
				end
				tcp.disconnect()
			end
		)
		end
	end
	
end
event.register(winHandler)
