var quizzer;
var form1;
var form2;
var friends;

$().ready(function() {
  $('#form-step1, #form-step2').submit(function(event) {
    event.preventDefault();
    return false;
  });
  
  $('#form-step1').validate({
    rules: {
      name: {
        required: true,
        minLength: 2
      },
      email: {
        required: true,
        email: true
      }
    },
    messages: {
      name: "Please enter your name.",
      email: "Please enter a valid email address."
    },
    showErrors: function(errors, validator) {
      var message = "";
      $.each(errors, function(i, n) {
        message += n + "\n";
      });
      if (message) alert(message);
      validator.defaultShowErrors();
    },
    errorPlacement: function(error, element) { return false; },
    
    submitHandler: function(form) {
      form1 = form;
      $('#page-step1').fadeOut('slow', function() {
        $('#page-step2').fadeIn('slow');
      });
    }
  });
  
  $('#form-step2').validate({
    rules: {
      friend0_name: {
        required: true,
        minLength: 2
      },
      friend0_email: {
        required: true,
        email: true
      },
      friend1_email: {
        email: true
      },
      friend2_email: {
        email: true
      }
    },
    
    messages: {
      friend0_name: "Please enter at least one friend's name.",
      friend0_email: "Please enter a valid email address."
    },
    
    showErrors: function(errors, validator) {
      var message = "";
      $.each(errors, function(i, n) {
        message += n + "\n";
      });
      if (message) alert(message);
      validator.defaultShowErrors();
    },
    errorPlacement: function(error, element) { return false; },
    
    submitHandler: function(form) {
      form2 = form;
      
      friends = Array();
      for (var i = 0; (form2['friend'+ i +'_email'] && form2['friend'+ i +'_email'].value); i++) {
        if (form2['friend'+ i +'_name'] && form2['friend'+ i +'_name'].value) {
          friends.push({
            name: form2['friend'+ i +'_name'].value,
            email: form2['friend'+ i +'_email'].value
          });
        }
      }
      
      var related = false;
      $.each(form2['friends_related'], function(n, i) {
        if (i.id == 'step2-friends-related-yes' && i.checked) related = true;
      });
      
      if (related) {
        $.getJSON('_get_random_which_friend.php', null, function (json) {
          $.each(json, function(n1, i1) {
            $.each(friends, function(n2, i2) {
              json[n1].choices[n2] = friends[n2].name;
            });
            json[n1].choices.push('You');
          });
          $.getJSON('_get_random_group.php', null, function (json2) {
            json = json.concat(json2.slice(0, 10 - json.length));
            json.shuffle();
            var quizzer = new Quizzer(QUIZ_THERAPY, null, sendAnswers, document.body);
            quizzer.quiz = json;
            $('#page-step2').fadeOut('slow', function() {
              quizzer.showNext();
            });
          });
        });
      }
      else {
        $('#page-step2').fadeOut('slow', function() {
          quizzer = new Quizzer(
            QUIZ_THERAPY, '_get_random_group.php', sendAnswers, document.body
          );
        });
      }
    }
  });
});

function sendAnswers(answers) {
  var quiz = this.quiz;
  
  $.each(quiz, function (n, i) {
    quiz[n].answer = answers[n];
  });
  
  // TODO: give user option to register
  var data = {
    friends: friends,
    questions: quiz,
    name: form1.name.value,
    email: form1.email.value,
    register: form1.register.checked
  };
  
  var o = this;
  $.ajax({
    type: 'post',
    url: '_post_quiz.php',
    data: $.toJSON(data),
    success: function() {
      o.currentPage.hide(function() {
        $('#page-step3').fadeIn('slow');
      });
    }
  });
};

