function block(){
	var colors = {mag : "#ff6600", sport: "#336699", tg24: "#990000", life: "#339999"};
	$.blockUI({
	message: $('.poll-alert'),
	css: { 
	    border: 'none', 
	    padding: '15px', 
	    backgroundColor: colors[document.location.pathname.split("/")[1]],
	    color: '#fff' 
	} }); 
	setTimeout($.unblockUI, 5000);
};
function setClickBind(element, cod, noChecked, expiresDate, message, ajaxOpt, poll, cond){
	var selected = null;
	element.click(function(event){
		$.unblockUI
		event.preventDefault();
		if (cond == "start"){
			var custom = ($(this).parent().find('input[type=radio]:hidden').length != 0);
			if (custom) 
				$(this).parent().find('input[type=radio]').attr({"checked":"checked"});
			var checked = $("input[name=" + cod.questId + "]:checked");
			if (checked.length != 0){
				element.unbind();
				noChecked.html("");
				var param = {pollid : poll};
				param[poll + '_' + cod.questId] = checked.attr('id');
				ajaxOpt['url'] = servlet.vote;
				ajaxOpt['type'] = "POST";
				ajaxOpt['data'] = param;
				ajaxOpt['success'] = function(response){
					var options = { path: '/', expires: 1 };
					$.cookie("genericPoll" + cod.questId + expiresDate, checked.attr('id'), options);
					$("input[name=" + cod.questId + "]").attr({"disabled" : "disabled"});
					selected = $("label[for=" + $("input[name=" + cod.questId + "]:checked").attr("id") + "]").text()
					if (custom) 
						nielsenRefresh(document.location.href);
					noChecked.html("<span class='poll-alert'>Grazie per aver votato. Torna domani.</span>");
					block();
				};
				ajaxOpt['timeout'] = function(response){
					noChecked.html("<span class='poll-alert'>" +message.timeout + "!</span>");
					setClickBind(element, cod, noChecked, expiresDate, message, ajaxOpt, poll);
					block();
				};
				ajaxOpt['error'] = function(response){
					noChecked.html("<span class='poll-alert'>" +message.error + "!</span>");
					setClickBind(element, cod, noChecked, expiresDate, message, ajaxOpt, poll);
					block();
				};
				$.ajax(ajaxOpt);
			}
			else {
				noChecked.html("<span class='poll-alert'>" + message.noVote + "!</span>");
				block();
			}
		}
		else if (cond == "end" || cond == "notStart" || cond == "voted"){
			block();
		}
	});
	return selected;
};

function createDate(YY,MM,DD,hh,mm,ss){
	var newDate = new Date();
	newDate.setDate(DD);
	newDate.setFullYear(YY);
	newDate.setHours(hh);
	newDate.setMinutes(mm);
	newDate.setMonth(MM);
	newDate.setSeconds(ss);
	newDate.setYear(YY);
	return newDate;
};
function getPollParsedDate(element) {
	var endDate = createDate(element.POLL.ENDDATE.year + 1900, element.POLL.ENDDATE.month, element.POLL.ENDDATE.date, element.POLL.ENDDATE.hours, element.POLL.ENDDATE.minutes, element.POLL.ENDDATE.seconds),
	startDate = createDate(element.POLL.STARTDATE.year + 1900, element.POLL.STARTDATE.month, element.POLL.STARTDATE.date, element.POLL.STARTDATE.hours, element.POLL.STARTDATE.minutes, element.POLL.STARTDATE.seconds);
	return {end :  endDate , start : startDate};
};

function init(poll, message, servlet, resultsURL, /*new */custom/* end new */) {
	
	$(".generic-poll .poll-footer").append('<a class="poll-results" href="' + resultsURL +'" target="_blank">' + message.results + '</a>');
	var ajaxOpt = {url: null, global: false,type: "GET",cache: false,dataType: null,success:null, data:null}, cod = {questId : null}, bodyPoll = $(".generic-poll .poll-body");
	ajaxOpt['url'] = servlet.poll;
	ajaxOpt['data'] = {"id" : poll};
	ajaxOpt['dataType'] = 'json';
	ajaxOpt['success'] = function(data){
		if (data.POLL == undefined){
			bodyPoll.append("<span class='poll-alert'>" + message.error + "</span>").removeClass("poll-loader").fadeIn("slow");
			return false;
		}
		ajaxOpt['url'] = servlet.date;
		ajaxOpt['data'] = null;
		ajaxOpt['success'] = function(date){
			var currentServerDate = o2s.parseDate(date.TIMESTAMP, "dd/mm/yyyy HH:ii:ss");
			var currentPoll = getPollParsedDate(data);
			var expiresDate = date.TIMESTAMP.split(" ")[0].split("/")[2] + date.TIMESTAMP.split(" ")[0].split("/")[1] + date.TIMESTAMP.split(" ")[0].split("/")[0];
			$(data.QUESTIONS).each(function(index, obj){
				$(obj).each(
					function(index, obj){
						var thumbSrc = null;
						if (obj.IMAGE != null)
							thumbSrc = obj.IMAGE;
						if (obj.THUMB != null)
							thumbSrc = obj.THUMB;
						thumbSrc != null ? bodyPoll.append( '<span class="poll-title">' + '<img class="img-title" src="' + thumbSrc + '"/>' + obj.DESCRIPTION + '<br style="clear:both;"></span>' ) : bodyPoll.append( '<span class="poll-title">' + obj.DESCRIPTION + '</span>' );
						cod.questId = obj.ID;
				});
			});
			var cookiePool = $.cookie("genericPoll" + cod.questId + expiresDate);
			$(data.ANSWERS).each(function(index, fields){
				$(fields[cod.questId]).each(function(index, obj){
					if (cookiePool != null || currentServerDate.getTime() > currentPoll.end.getTime() || currentServerDate.getTime() < currentPoll.start.getTime()){
						disabled = 'disabled="disabled" ';
						if (cookiePool == obj.ID)
							disabled += 'checked="checked" ';
					}
					else
						disabled = '';
					custom != undefined ? 
						bodyPoll.append(custom(obj)) :
						bodyPoll.append( '<div class="poll-input-container"><input class="poll-radio" type="radio" '+ disabled +' id=' +  obj.ID + ' name="' + obj.IDQUEST + '"/><label class="poll-label" for=' + obj.ID + '>' + obj.DESCRIPTION + '</label></div>' );
				});
			});
			if (cookiePool == null){
				if (currentServerDate.getTime() > currentPoll.end.getTime()){
					bodyPoll.append("<input type='submit' class='poll-submit' value='VOTA'/><span class='poll-no-checked'><span class='poll-alert'>" + message.end + "</span></span>").removeClass("poll-loader").fadeIn("slow");
					setClickBind(bodyPoll.find(".poll-submit"), cod, $(".poll-no-checked"), expiresDate, message, ajaxOpt, poll, "end");
				}
				else if (currentServerDate.getTime() < currentPoll.start.getTime()){
					bodyPoll.append("<input type='submit' class='poll-submit' value='VOTA'/><span class='poll-no-checked'><span class='poll-alert'>" + message.notStarted + "</span></span>").removeClass("poll-loader").fadeIn("slow");
					setClickBind(bodyPoll.find(".poll-submit"), cod, $(".poll-no-checked"), expiresDate, message, ajaxOpt, poll, "notStart");
				}
				else {
					bodyPoll.append('<input type="submit" class="poll-submit" value="VOTA"/>').append('<span class="poll-no-checked"></span>').removeClass("poll-loader").fadeIn("slow");
					bodyPoll.find('.poll-submit').fadeIn("slow");
					setClickBind(bodyPoll.find(".poll-submit"), cod, $(".poll-no-checked"), expiresDate, message, ajaxOpt, poll, "start");
				}
			}
			else {
				bodyPoll.append('<input type="submit" class="poll-submit" value="VOTA"/><span class="poll-no-checked"><span class="poll-alert">' + message.voted + '</span></span>').removeClass("poll-loader").fadeIn("slow");
				setClickBind(bodyPoll.find(".poll-submit"), cod, $(".poll-no-checked"), expiresDate, message, ajaxOpt, poll, "voted");
			}
		}
		$.ajax(ajaxOpt);
	};
	$.ajax(ajaxOpt);
};

