(function($) {
	
	var tankieta1Id = null;
	var container;
	
	$.fn.cmsPubPoll = function(options) {
		var defaults = {
			lang : "pl",
			poiPubUrl : "/poi/PoiPub"
		};
		var options = $.extend(defaults, options);

		var _this = this;
		this.regional = {
			en : {
				"więcej..." : "more..."
			},
			de : {}
		}[options.lang];
		_this._ = $.i18n;

		container = this;
		container.addClass("loading poll").hide();
		
        $.ajax({
            dataType: 'jsonp',
            jsonp: "jsonpCallback",
            jsonpCallback: "cmsPoll",
            success: function(data){
        		if( $.isEmptyObject(data) ) {
        			container.parent().remove();
        			return;
        		}
        		container.show();
        		var votedToday = $.cookies.get( "poll" + data.tankieta1Id );
        		if( votedToday ) {
        			renderResults( data );
        		} else {
        			
        			
        			
            		var pollContainer = $("<div class='pollContainer' />");
                	
            		tankieta1Id = data.tankieta1Id;
            		pollContainer.append("<p class='pollQuestion'>" + data.pytanie + "</p>");
            		var answers = $("<p class='pollAnswers'></p>");
            		$(data.odpowiedzTab).each( function(){
            			
            			answers.append( "<input type='radio' id='answer" + this.id + "' name='pollAnswer' value='" + this.id + "' />" );
            			answers.append( "<label for='answer" + this.id  +"'>" + this.opis + "</label><br />" );
            		});
            		pollContainer.append(answers);
            		var voteButton = $("<button class='voteButton'>Głosuj</button>");
            		voteButton.button({
            			icons: { primary: "ui-icon-check" },
            			disabled: true
            		}).click( function(){
            			vote( $("[name=pollAnswer]:checked", answers).val() );
            		});
            		
            		
            		$("[name=pollAnswer]", answers).change( function(){
            			if( $("[name=pollAnswer]:checked").length > 0 ) {
            				voteButton.button('enable');
            			}
            		});
            		
            		pollContainer.append(voteButton);
            		container.append(pollContainer).removeClass("loading");
            		pollContainer.hide().fadeIn(1000);
            		//container.css("height", $(container).height());
        		}
            },
            url: options.poiPubUrl + '?q=ankietaGlosuj&lang=' + options.lang
        });
        
        function renderResults( data ) {
        	var resultsContainer = $("<div class='pollResults'></div>");
    		resultsContainer.append($("<p class='pollQuestion'>" + data.pytanie +  "</p>"));
    		
    		
    		var results = $("<div class='pollResults' />");
    		
    		//Liczenie głosów
    		var votesSum = 0;
    		$(data.odpowiedzTab).each( function(){ votesSum += this.licz; });
    		
    		
    		
    		
    		$(data.odpowiedzTab).each( function(){
    			var percent = Math.round( this.licz * 100 / votesSum) ;
    			results.append( "<div class='pollBarContainer'><p>" + this.opis + "&nbsp;<strong>" + percent + "%</strong></p><div class='pollBar' style='width: " + percent + "%'></div></div>" );
    		}); 
    		
    		resultsContainer.append(results);
    		resultsContainer.append( "<p class='pollSummary'>Głosów ogółem: " + votesSum + " </p>" );
    		
    		container.empty().removeClass("loading").append( resultsContainer );
    		
    		$(results).find('.pollBar').hide().end().fadeIn('slow', function(){
				$(results).find('.pollBar').each(function(){
					var bar_width=$(this).css('width');
					$(this).show().css('width', '0').animate({ width: bar_width }, 1000);
				});
			});
        }
        
        function vote( idAnswer ) {
        	
        	container.find(".pollContainer").fadeOut(1000).end().addClass("loading");
            $.ajax({
                dataType: 'jsonp',
                jsonp: "jsonpCallback",
                jsonpCallback: "cmsPoll",
                success: function(data){
            		var today = new Date();
            		$.cookies.set("poll" + tankieta1Id, true, {expiresAt: today.getDate() + 1, hoursToLive: 24 });            	
            		renderResults(data);
            		
                },
                url: options.poiPubUrl + '?q=ankietaGlosuj&lang=' + options.lang + "&tankieta1Id=" + tankieta1Id + "&odpowiedzId=" + idAnswer
            });
        }
    }

})(jQuery);

