/* Created by jankoatwarpspeed.com */

(function($) {
    $.fn.formToWizard = function(options) {
        options = $.extend({  
            submitButton: "" 
        }, options); 
        
        var element = this;

		var validationEnabled = 1;
        var steps = $(element).find("fieldset");
		var actual = 0;
        var count = steps.size();
        var submmitButtonName = "#" + options.submitButton;
        $(submmitButtonName).hide();

        // 2
        $(element).before("<ul id='steps'></ul>");

        steps.each(function(i) {
            $(this).wrap("<div id='step" + i + "'></div>");
            $(this).append("<div class='steps-nav' id='step" + i + "commands'></div>");

            // 2
            var name = $(this).find("legend").html();
            $("#steps").append("<li id='stepDesc" + i + "'>Passo " + (i + 1) + "<span>" + name + "</span></li>");
			
            if (i == 0) {
                createNextButton(i);
                selectStep(i);
            }
            else if (i == count - 1) {
                $("#step" + i).hide();
                createPrevButton(i);
            }
            else {
                $("#step" + i).hide();
                createPrevButton(i);
                createNextButton(i);
            }
        });

        function createPrevButton(i) {
            var stepName = "step" + i;
            $("#" + stepName + "commands").append("<a href='#formulario' id='" + stepName + "Prev' class='sec-button alignleft' title='Voltar ao passo anterior'>&laquo; Voltar</a>");

            $("#" + stepName + "Prev").bind("click", function(e) {
				$('.warning').hide();
			    $("#" + stepName).hide();
                $("#step" + (i - 1)).fadeIn("normal");
                $(submmitButtonName).hide();
                selectStep(i - 1);
            });
        }
		

        function createNextButton(i) {
            var stepName = "step" + i;
            $("#" + stepName + "commands").append("<a href='#formulario' id='" + stepName + "Next' class='sec-button alignright' title='Avan&ccedil;ar para o pr&oacute;ximo passo'>Avan&ccedil;ar &raquo;</a>");
            $("#" + stepName + "Next").bind("click", function(e) {
				
				//Valida os campos antes de continuar para o próximo passo
				if (validationEnabled == '1') {
					var stepIsValid = true;
					$("#" + stepName + " :input").each( function(index) {
						 stepIsValid = element.validate().element($(this)) && stepIsValid;
					});
					if (!stepIsValid) {
						// Mostra uma mensagem de notoficação ao usuário
						$('.steps-nav').after('<div class="warning">Algum campo obrigat&oacute;rio ficou sem resposta ou &eacute; inv&aacute;lido.<br /> <a href="#formulario" class="sec-button fix-it">Arrumar isso</a></div>'); 
							$('.fix-it').click(function () {
								$('.warning').hide();
							});
						 return false;
					}
				}
				
				$('.warning').hide();
                $("#" + stepName).hide();
                $("#step" + (i + 1)).fadeIn("normal");
                if (i + 2 == count)
                    $(submmitButtonName).show();
                selectStep(i + 1);            			
			});
        }

        function selectStep(i) {
            $("#steps li").removeClass("current-step");
            $("#stepDesc" + i).addClass("current-step");
        }
    }
})(jQuery); 