
/* EVENT LISTENER */

var eventListener = {
	init: function() {
		eventListener.loadXML();
	},
	startThread: function() {
		setTimeout(function() {
			eventListener.loadXML();
		}, eventListener.properties.interval);
	},
	loadXML: function() {
		$.ajax({
			url: eventListener.properties.url,
			data: eventListener.properties.data,
			cache: eventListener.properties.cache,
			async: eventListener.properties.async,
			type: eventListener.properties.type,
			dataType: eventListener.properties.dataType,
			timeout: eventListener.properties.timeout,
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				if(eventListener.properties.debug) {
					alert("Error loading XML document: " + textStatus);
				}
				eventListener.startThread();
			},
			success: function(xml, textStatus) {
				if(eventListener.properties.debug) {
					alert("XML document loaded: " + textStatus);
				}
				eventListener.readXML(xml);
				if(eventListener.countEvents() > 0) {
					eventListener.showMessage();
				} else {
					eventListener.startThread();
				}
			}
		});
	},
	readXML: function(xml) {
		$(xml).find("event").each(function() {
			var eventId = $(this).find("id").text();
			var eventValue = parseInt($(this).find("value").text());
			if(eventId == "offerte") {
				eventListener.events.offerte = eventValue;
			} else if(eventId == "messaggi") {
				eventListener.events.messaggi = eventValue;
			} else if(eventId == "domande") {
				eventListener.events.domande = eventValue;
			} else if(eventId == "risposte") {
				eventListener.events.risposte = eventValue;
			} else if(eventId == "feedback") {
				eventListener.events.feedback = eventValue;
			}
		});
	},
	countEvents: function() {
		return (eventListener.events.offerte + eventListener.events.messaggi + eventListener.events.domande + eventListener.events.risposte + eventListener.events.feedback);
	},
	showMessage: function() {
		var message = "Hai ricevuto";
		if(eventListener.events.offerte > 0) {
			message += (eventListener.events.offerte > 1) ? (" "  + eventListener.events.offerte + " nuove offerte") : (" una nuova offerta");
		}
		if(eventListener.events.messaggi > 0) {
			if(eventListener.events.offerte > 0) {
				if((eventListener.events.domande > 0) || (eventListener.events.risposte > 0) || (eventListener.events.feedback > 0)) {
					message += ",";
				} else {
					message += " e";
				}
			}
			message += (eventListener.events.messaggi > 1) ? (" "  + eventListener.events.messaggi + " nuovi messaggi") : (" un nuovo messaggio");
		}
		if(eventListener.events.domande > 0) {
			if((eventListener.events.offerte > 0) || (eventListener.events.messaggi > 0)) {
				if((eventListener.events.risposte > 0) || (eventListener.events.feedback > 0)) {
					message += ",";
				} else {
					message += " e";
				}
			}
			message += (eventListener.events.domande > 1) ? (" "  + eventListener.events.domande + " nuove domande") : (" una nuova domanda");
		}
		if(eventListener.events.risposte > 0) {
			if((eventListener.events.offerte > 0) || (eventListener.events.messaggi > 0) || (eventListener.events.domande > 0)) {
				if(eventListener.events.feedback > 0) {
					message += ",";
				} else {
					message += " e";
				}
			}
			message += (eventListener.events.risposte > 1) ? (" "  + eventListener.events.risposte + " nuove risposte") : (" una nuova risposta");
		}
		if(eventListener.events.feedback > 0) {
			if((eventListener.events.offerte > 0) || (eventListener.events.messaggi > 0) || (eventListener.events.domande > 0) || (eventListener.events.risposte > 0)) {
				message += " e";
			}
			message += (eventListener.events.feedback > 1) ? (" "  + eventListener.events.feedback + " nuovi feedback") : (" un nuovo feedback");
		}
		message += "!";
		message += "\r\n";
		var targetUrl = "/suesu/private/index.jsp";
		if((eventListener.events.offerte > 0) && (eventListener.events.offerte == eventListener.countEvents())) {
			message += "Premi OK per accedere alla pagina \"Offerte ricevute\" o Annulla per continuare la navigazione.";
			targetUrl = "/suesu/private/offerte/offerteRicevute.jsp";
		} else if((eventListener.events.messaggi > 0) && (eventListener.events.messaggi == eventListener.countEvents())) {
			message += "Premi OK per accedere alla pagina \"Posta in arrivo\" o Annulla per continuare la navigazione.";
			targetUrl = "/suesu/private/messaggi/messaggiRicevuti.jsp";
		} else if((eventListener.events.domande > 0) && (eventListener.events.domande == eventListener.countEvents())) {
			message += "Premi OK per accedere alla pagina \"Domande ricevute\" o Annulla per continuare la navigazione.";
			targetUrl = "/suesu/private/domande/domandeRicevute.jsp";
		} else if((eventListener.events.risposte > 0) && (eventListener.events.risposte == eventListener.countEvents())) {
			message += "Premi OK per accedere alla pagina \"Domande inviate\" o Annulla per continuare la navigazione.";
			targetUrl = "/suesu/private/domande/domandeInviate.jsp";
		} else if((eventListener.events.feedback > 0) && (eventListener.events.feedback == eventListener.countEvents())) {
			message += "Premi OK per accedere alla pagina \"Feedback ricevuti\" o Annulla per continuare la navigazione.";
			targetUrl = "/suesu/private/feedback/feedbackRicevuti.jsp";
		} else {
			message += "Premi OK per accedere alla tua homepage o Annulla per continuare la navigazione.";
			targetUrl = "/suesu/private/index.jsp";
		}
		var confirmed = confirm(message);
		if(confirmed) {
			location.href = targetUrl;
		} else {
			eventListener.startThread();	
		}
	},
	events: {
		offerte: 0,
		messaggi: 0,
		domande: 0,
		risposte: 0,
		feedback: 0
	},
	properties: {
		debug: false,
		url: "/suesu/servlets/EventListener",
		data: null,
		cache: false,
		async: true,
		type: "GET",
		dataType: "xml",
		timeout: 0,
		interval: 5000
	}
};