YUI().use("node", "io-base", "json-parse", function(Y) {
	Y.on('domready', function() {
		var elements = Y.all('div.poll-wrapper div.state-default div.answers input[name="vote"], div.poll-wrapper div.state-default div.button');
		elements.on('click', function(e) {
			var yui_this = e.currentTarget;
			var wrapper = yui_this.ancestor('.poll-wrapper');
			
			if (yui_this.hasClass('button')) {
				/* It's a submit button */
				var val = elements.filter(":checked").get("value");
			} else {
				/* Stop execution if there is an existing submit button */
				if (Y.all('div.button').size() > 0) {
					return;
				}
				var val = e.currentTarget.get('value');
			}
			var poll = wrapper.get('id').replace(/[^0-9]*/, "");
			try {
				Y.one('div.state-default').setStyle('display', 'none');
				Y.one('div.state-saving').setStyle('display', 'block');
			} catch (x) {}
			
			var complete = function (id, o) {
				wrapper.ancestor('.poll-block');
				e.currentTarget.setStyle('display', 'block');
				
				Y.one('div.state-default').setStyle('display', 'none');
				
				var wrapper_state_complete = Y.one('div.state-complete');
				if (wrapper_state_complete) {
					
					Y.one('.wrapper_state_complete').setStyle('display', 'block');
					
				} else {
					
					Y.io(
						'/poll_results/show_result/' + poll,
						{
							on: {
								success: function (id, o) {
								
									data = Y.JSON.parse(o.responseText);
									var results_container = wrapper.one('div.state-results div.results-container');
									var poll_results_total = results_container.one('#poll-results-total');
									
									if (poll_results_total) {
										poll_results_total.setContent(data.total);
									}
									
									var k, item, key, value, el;
									for (k in data.results) {
										item = data.results[k];
										
										for (key in item) {
											value = item[key];
											
											el = results_container.one('#poll-choice-' + item.id + '-' + key);
											if (el) {
												el.setContent(value);
											}
											
										}
										
										var bar = results_container.one('#poll-choice-' + item.id + '-chart');
										
										if (bar) {
											bar.setStyle('width', item.percent + '%');
										}
										
									}
									
									try {
										wrapper.one('div.state-results').setStyle('display', 'block');
										wrapper.one('div.state-saving').setStyle('display', 'none');
									} catch (x) {}
									wrapper.removeClass('ui-loading');
								
								}
							}
						}
					)
				}
				
			}
			Y.io(
				'/poll_results/vote/' + val + '/' + poll,
				{
					on: {
						success: complete
					}
				}
			)
			
		});
	});
});	

