dojo.require("dojo.parser");
dojox.off.ui.appName = "Scraps";
dojox.off.files.slurp();
dojo.connect(dojox.off.ui, "onLoad", "initScraps");
dojox.off.initialize();

function displayData() {
	var scrapsContainer = dojo.byId("scrapsContainer");
	while (scrapsContainer.firstChild) {
	 	scrapsContainer.removeChild(scrapsContainer.firstChild);
	}
	dojo.forEach(dojox.storage.get("scraps"), 
		function(scrap) { 
			var scrapId = scrap.id;
			var answerContainer = document.createElement("div");
			var answer = document.createElement("textarea");
			answer.id = "answer" + scrapId;
			answer.setAttribute("receiver", scrap.sender.id);
			var message = document.createElement("div");
			message.innerHTML = scrap.sender.name + ":<br>" +
					scrap.message;
			var button = document.createElement("input");
			button.type = "button";
			button.value = "Responder";
			dojo.connect(button, "onclick", 
				function() {
					if (dojox.off.isOnline) { 
						replyOnline(scrapId); 
					} else { 
						replyOffline(scrapId); 
					}	
				}
			)
			var scrapContainer = document.createElement("div");
			scrapContainer.appendChild(message);														
			answerContainer.appendChild(answer);
			answerContainer.appendChild(button);
			scrapContainer.appendChild(answerContainer);
			scrapsContainer.appendChild(scrapContainer);
		}
	)
}

function getData() {
	return [
		{
			id: 1,
			sender: {
				id: 1,
				name: "Alberto"
			},
			message: "Oi, tudo bem?"
		},
		{
			id: 2,
			sender: {
				id: 3,
				name: "Michelle"
			},
			message: "O jogo vai ser amanhã."
		},
		{
			id: 3,
			sender: {
				id: 5,
				name: "Thaís"
			},
			message: "5 horas chego la."
		}
	];
}

function initScraps() {

	if(!dojox.off.isOnline){	
		displayData();
	}

	dojo.connect(dojox.off.sync, "onSync", 
			function(type) {
				if (type == "download") {
					dojox.storage.put("scraps", getData());
					dojox.off.sync.finishedDownloading();
				} else if (type == "finished") {
					displayData();
				}
			}
	)

	dojo.connect(dojox.off.sync.actions, "onReplay", 
			function(action, actionLog) {
				window.alert("Enviando mensagem '" + action.data.message
						+ "' para o usuario com id " + action.data.receiver);
				actionLog.continueReplay();
			}
	)
}

function replyOnline(id) {
	dojo.byId("answer" + id).parentNode.innerHTML = "Resposta enviada com sucesso.";
}

function replyOffline(id) {
	var answer = dojo.byId("answer" + id);
	var action = {
		name: "reply",
		data : {
			message: answer.value,
			receiver: answer.getAttribute("receiver")
		}
	}
	dojox.off.sync.actions.add(action);
	answer.parentNode.innerHTML = "A resposta sera enviada quando o sistema ficar online.";
}
