
/* EVENT LISTENER */

var eventListener = {
	
	init: function() {
		eventListener.loadXML();
	},
	
	startThread: function() {
		setTimeout(function() {
			eventListener.loadXML();
		}, eventListener.properties.interval);
	},
	
	loadXML: function() {
		$.ajax({
			url: eventListener.properties.context + 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 == "messaggi") {
				eventListener.events.messaggi = eventValue;
			} else if(eventId == "domande") {
				eventListener.events.domande = eventValue;
			} else if(eventId == "risposte") {
				eventListener.events.risposte = eventValue;
			} else if(eventId == "offerte") {
				eventListener.events.offerte = eventValue;
			} else if(eventId == "feedback") {
				eventListener.events.feedback = eventValue;
			}
		});
	},
	
	countEvents: function() {
		return (eventListener.events.messaggi + eventListener.events.domande + eventListener.events.risposte + eventListener.events.offerte + eventListener.events.feedback);
	},
	
	showMessage: function() {
		
		var events = new Array(0);
		if(eventListener.events.messaggi > 0) {
			events.push("messaggi");
		}
		if(eventListener.events.domande > 0) {
			events.push("domande");
		}
		if(eventListener.events.risposte > 0) {
			events.push("risposte");
		}
		if(eventListener.events.offerte > 0) {
			events.push("offerte");
		}
		if(eventListener.events.feedback > 0) {
			events.push("feedback");
		}
		
		var message = "<ul id=\"eventi\">";
		for(var i = 0; i < events.length; i++) {
			if(events[i] == "messaggi") {
				message += "<li class=\"messaggi\"><a href=\"" + eventListener.properties.context + "/private/messaggi/messaggiRicevuti.jsp\" title=\"Posta in arrivo\">" + eventListener.events.messaggi + " " + ((eventListener.events.messaggi == 1) ? ("nuovo messaggio") : ("nuovi messaggi")) + "</a></li>";
			} else if(events[i] == "domande") {
				message += "<li class=\"domande\"><a href=\"" + eventListener.properties.context + "/private/domande/domandeRicevute.jsp\" title=\"Domande ricevute\">" + eventListener.events.domande + " " + ((eventListener.events.domande == 1) ? ("nuova domanda") : ("nuove domande")) + "</a></li>";
			} else if(events[i] == "risposte") {
				message += "<li class=\"risposte\"><a href=\"" + eventListener.properties.context + "/private/domande/domandeInviate.jsp\" title=\"Domande inviate\">" + eventListener.events.risposte + " " + ((eventListener.events.risposte == 1) ? ("nuova risposta") : ("nuove risposte")) + "</a></li>";
			} else if(events[i] == "offerte") {
				message += "<li class=\"offerte\"><a href=\"" + eventListener.properties.context + "/private/offerte/offerteRicevute.jsp\" title=\"Offerte ricevute\">" + eventListener.events.offerte + " " + ((eventListener.events.offerte == 1) ? ("nuova offerta") : ("nuove offerte")) + "</a></li>";
			} else if(events[i] == "feedback") {
				message += "<li class=\"feedback\"><a href=\"" + eventListener.properties.context + "/private/feedback/feedbackRicevuti.jsp\" title=\"Feedback ricevuti\">" + eventListener.events.feedback + " " + ((eventListener.events.feedback == 1) ? ("nuovo feedback") : ("nuovi feedback")) + "</a></li>";
			}
		}
		message += "</ul>";
		
		$('<div id="qtip-blanket">').css({
			position: 'absolute',
			top: $(document).scrollTop(),
			left: 0,
			height: $(document).height(),
			width: '100%',
			opacity: 0.7,
			backgroundColor: 'black',
			zIndex: 5000
		}).hide().appendTo(document.body);
		
		$('body').qtip({
			content: {
				title: {
					text: eventListener.countEvents() + " " + ((eventListener.countEvents() == 1) ? "nuovo evento" : "nuovi eventi"),
					button: 'X'
				},
				text: message
			},
			position: {
				target: $(document.body),
				corner: 'center'
			},
			show: {
				ready: true,
				solo: true
			},
			hide: false,
			style: {
				width: {
					min: 300,
					max: 300
				},
				padding: 15,
				border: {
					width: 1,
					radius: 5,
					color: '#ffcc33'
				},
				button: {'color': '#0099ff'},
				name: 'light'
			},
			api: {
				beforeShow: function() {
					$('#qtip-blanket').fadeIn(this.options.show.effect.length);
				},
				beforeHide: function() {
					$('#qtip-blanket').fadeOut(this.options.hide.effect.length);
				},
				onHide: function() {
					$('body').qtip("destroy");
					$('#qtip-blanket').remove();
					eventListener.startThread();
				}
			}
		});
		
	},
	
	events: {
		messaggi: 0,
		domande: 0,
		risposte: 0,
		offerte: 0,
		feedback: 0
	},
	
	properties: {
		debug: false,
		context: "/e-barty",
		url: "/servlets/EventListener",
		data: null,
		cache: false,
		async: true,
		type: "GET",
		dataType: "xml",
		timeout: 0,
		interval: 5000
	}
	
};
