(function($) {
  
  
  function wem_poll_animate_result(form, results) {
    for ( var i = 0 ; i < results.length ; i ++ ) {
      var answer_id = results[i].answer_id;
      var votes = results[i].votes;
      var percentage = results[i].percentage;
      
      $(form).find('#wem_poll_answer_bar_' + answer_id).css('width', '0%').animate({'width': percentage + '%'},{
        'duration': 500,
        'complete': function() {
          $(this).parents('.wem_poll_answer_result').find('.wem_poll_answer_percentage').fadeIn();
        },
        'easing' : 'linear'
      });
    }
  }
  
  
  function wem_poll_submit(e) {
    try {
      var form = $(this).parents('.wem_poll').find('form');
      var action = $(form).attr('action');
      var query = $(form).serialize();
      
      if ( query != '' ) { query += '&'; }
      query += 'ajax=1';
      
      $.ajax({
        'url': action,
        'dataType': 'json',
        'data': query,
        'success': function(data) {
          $(form).find(".wem_poll_submitting").remove();
          
          if ( data.error == undefined ) {
            if ( data.results != undefined ) {
              // Okay, the vote had been submitted. Add the html we need afterwards to show the results.
              
              
              for ( var i = 0 ; i < data.results.length ; i ++ ) {
                var answer_id = data.results[i].answer_id;
                var votes = data.results[i].votes;
                var percentage = data.results[i].percentage;
                
                $(form).find('#wem_poll_answer_' + answer_id).append('<div class="wem_poll_answer_result" style="display:none;">' +
                  '<div class="wem_poll_answer_bar_back">' +
                  '<div class="wem_poll_answer_bar" id="wem_poll_answer_bar_' + answer_id + '" style="width: 0%;"></div>' +
                  '</div><div class="wem_poll_answer_percentage" style="display: none;">' + percentage + '%</div><div class="clearer"></div></div>');
              }
              
              $(form).find('.wem_poll_answer_result').not(':last').slideToggle(300);
              $(form).find('.wem_poll_answer_result:last').slideToggle(300, function() { $(form).delay(200).queue(function() { wem_poll_animate_result(form, data.results); }); });
              
            }
          } else {
            alert(data.error);
            
            $(form).find('input').removeAttr('disabled');
          }
        }
      });
      
      $(form).find('input').attr('disabled', 'disabled');
      
    } catch (e) {  }
    
    return false;
  }
  
  
  function wem_poll_answer_change(e) {
    $(this).blur();
    $(this).parents('.wem_poll').find('.wem_poll_submit').removeAttr('disabled');
  }
  
  
  $(document).ready(function() {
    // Set the change handler to all radio buttons in wem_poll forms.
    $('.wem_poll input[type=radio]').change(wem_poll_answer_change);
    
    // Set the submit handler to all wem_poll forms.
    $('.wem_poll form').submit(wem_poll_submit);
    
    // Get all wem_poll forms and check if there are no radio buttons checked. If so, disable the submit button.
    var forms = $('.wem_poll form');
    for ( var i = 0 ; i < forms.length ; i ++ ) {
      if ( $(forms[i]).find('input:radio:checked').length == 0 ) {
        $(forms[i]).find('.wem_poll_submit').attr('disabled', 'disabled');
      } else {
        $(forms[i]).find('.wem_poll_submit').removeAttr('disabled');
      }
    }
  });

})(jQuery);
;

