
var $app = {
  activateAnswers : function() { }
};

$app.activateAnswers = function(context) {

  var submit = function(form) {

    var newQuestion = $('<div></div>').hide();
    $('.question').fadeOut(600, function() {
      $(this).before(newQuestion).remove();
    });

    $.post(window.location.pathname, form.serialize(),
             function() {
               newQuestion.load(window.location.pathname, function() {
                                  $app.activateAnswers(newQuestion);
                                  setTimeout(function() {
                                               newQuestion.fadeIn(300); // Show new question
                                             }, 1000);                  // Time between fadeOut and fadeIn
                                });
             });
    return false;
  };

  // Trigger form submission for links, select fields and forms
  $('.question .answer a', context).click(function() {
    return submit($(this).parents('form'));
  });
  $('.question .answer .single_select select', context).change(function() {
    return submit($(this).parents('form'));
  });
  $('.question form.answer', context).submit(function() {
    return submit($(this));
  });

  // Disable/enable submit button for text fields
  $('.question form.answer input[type=text]', context).keyup(function() {
    $(this).parents('form').find('input[type=submit]').attr('disabled', !$app.valid(this));
  }).keyup();
};

$app.valid = function(field) {
  var pattern;
  if(field.name.match(/email/)) {
    pattern = /^(\S+@\S+\.\S\S+( |, *)?)+$/;
  } else {
    pattern = /\S/;
  }
  return pattern.test(field.value);
};


$(function() {
  $app.activateAnswers(document);

  $.ajaxSetup({cache : false});

  setTimeout(function() {
    $('.flash').fadeOut();
  }, 3000);
});
