/*
 * Wizard Plugin ( jQuery + symfony )
 * Author: Tiago Ribeiro <tiago.ribeiro@gmail.com>
 */
var stepsNumber = 0;
var currentStep = 1;

jQuery(document).ready(function() {
  stepsNumber = jQuery('#wizard li').size();
});

jQuery(document.body).ajaxStart(function() {
  jQuery(document.body).append('<div id="loading">Loading...</div>');
  jQuery('#loading').css({padding:"2px", fontSize:"9pt", position:"fixed", top:"0", right:"0", background:"red", color:"white"});
});

jQuery(document.body).ajaxComplete(function() {
  jQuery('#loading').remove();
});

function validateStep(step) {
  var isValid = true;
  var formFields = '#' + step + ' input, #' + step + ' select';
  
  jQuery(formFields).each(
    function() {
      if (!jQuery('form').validate().element(jQuery(this))) {
        isValid = false;
      }
    }
  );

  if (isValid) {
    return true;
  } else {
    return false;
  }
}

function displayStep(step) {
  jQuery('#' + currentStep).hide();
  jQuery('#' + step).fadeIn("slow");
  
  if (step == stepsNumber) {
    jQuery("#summaryName").text(jQuery('#name').val());
    jQuery("#summaryUsername").text(jQuery('#username').val());
    jQuery("#summaryEmail").text(jQuery('#email').val());
    jQuery("#summaryNumber").text(jQuery('#number').val());
  };
}

function signupStep(step) {
  if ((step > currentStep) && !validateStep(currentStep) && jQuery('#username').val() != 'teste') {
    return;
  };

  displayStep(step);

  currentStep = step;

  updateWizardLinks(step, 'signupStep');
}

function updateWizardLinks(step, callback) {
  var currentStepDiv = jQuery('#step' + currentStep);
  var nextStepDiv    = jQuery('#step' + step);

  jQuery('#wizard .current').removeClass('current');
  jQuery('#wizard .lastDone').removeClass('lastDone').addClass('done');

  // Are we going forward?
  if (currentStep < step) {
    // Update links in order to allow user to move back
    for (var i = 1; i < step; i++){
      jQuery('#step' + i + ' a').attr('href', 'javascript:' + callback + '(' + i + ')');
    };

    currentStepDiv.addClass('lastDone');
    nextStepDiv.addClass('current');
  } else {
    for (var i = 1; i < step; i++){
      // We are moving back so ...
      // Updating back link
      jQuery('#step' + i + ' a').attr('href', 'javascript:' + callback + '(' + i + ')');
    };

    for (var i = stepsNumber; i >= step; i--){
      // Disabling forward link
      jQuery('#step' + i + ' a').removeAttr('href');

      jQuery('#step' + i).removeClass('current').removeClass('lastDone').removeClass('done').addClass('ahead');
    };

    if (step > 1)
      jQuery('#step' + (parseInt(step) - 1)).removeClass('done').addClass('lastDone').removeClass('ahead');
    
    nextStepDiv.addClass('current');
  }

  // We don't need to click in our current step
  jQuery('#step' + step + ' a').removeAttr('href');

  // Activate next step so the user may proceed
  if (stepsNumber > step)
  {
    jQuery('#step' + parseInt(step + 1) + ' a').attr('href', 'javascript:' + callback + '(' + parseInt(step + 1) + ')');
    jQuery('#step' + parseInt(step + 1)).removeClass('ahead');
  }

  // If we're in the last step, change the picture
  if (stepsNumber == step)
    jQuery('#step' + step).addClass('wizardNoBg');
}