$(function()
{
  $('.answer input[type=checkbox]').each(function()
  {
    $(this)
      .after($('<div class="chkbx' + (this.checked ? 'Checked' : '') + '"></div>'))
      .hide();
  });
  
  $('.answer input[type=radio]').each(function()
  {
    $(this)
      .after($('<div class="radio' + (this.checked ? 'Checked' : '') + '"></div>'))
      .hide();
  });
  
  $('.answer').hover(function()
  {
    $(this).addClass('answerHover');
  }, function()
  {
    $(this).removeClass('answerHover');
  }).click(function()
  {
    var chk = $('input[type=checkbox]', this);
    if (chk.length)
    {
      chk = chk[0];
    
      chk.checked = !chk.checked;

      $('.chkbx, .chkbxChecked', this)
        [ chk.checked ? 'removeClass' : 'addClass']('chkbx')
        [!chk.checked ? 'removeClass' : 'addClass']('chkbxChecked');
        
      return;
    }
    
    var radio = $('input[type=radio]', this);
    if (radio.length)
    {
      if (radio[0].checked) return;
      radio[0].checked = true;

      var q = radio.parents('.question:eq(0)');
      
      $('.radioChecked', q)
        .removeClass('radioChecked')
        .addClass('radio');
        
      $('.radio, .radioChecked', this)
        .addClass('radioChecked')
        .removeClass('radio');
        
      return;
    }
  });
});

