/* 
	Created by jankoatwarpspeed.com
	Edited by neongoldfish.com
 */

(function($) {
    $.fn.formToWizard = function(options) {
        options = $.extend({  
            submitButton: "" 
        }, options); 
        
        var element = this;

        var steps = $(element).find("fieldset");
        var count = steps.size();
		if ( options.submitButton.length > 0) {
			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("<p id='step" + i + "commands'></p>");

            // 2
            var name = $(this).find("legend").html();
            $("#steps").append("<li id='stepDesc" + i + "'>Step " + (i + 1) + "<span>" + name + "</span></li>");

            if (i == 0) {
                createNextButton(i);
                selectStep(i);
            }
            else if (i == count - 1) {
                $("#step" + i).hide();
                createPrevButton(i);
                createSubmitButton(i);
            }
            else {
                $("#step" + i).hide();
                createPrevButton(i);
                createNextButton(i);
            }
        });

        function createPrevButton(i) {
            var stepName = "step" + i;
            $("#" + stepName + "commands").append("<a id='" + stepName + "Prev' class='prev'>< Back</a>");

            $("#" + stepName + "Prev").bind("click", function(e) {
                $("#" + stepName).hide();
                $("#step" + (i - 1)).show();
                $(submmitButtonName).hide();
                selectStep(i - 1);
            });
        }

        function createNextButton(i) {
            var stepName = "step" + i;
            $("#" + stepName + "commands").append("<a id='" + stepName + "Next' class='next'>Next ></a>");

            $("#" + stepName + "Next").bind("click", function(e) {
				var valid = true;
				$('#'+stepName+' :input').each(function() {
					if ($(this).hasClass('required') && $(this).val() == '') {
						valid = false;
						$(this).focus();
						alert('Please fill out all required fields to continue.');
						return false;
					}
				});
				if (valid) {
					$("#" + stepName).hide();
					$("#step" + (i + 1)).show();
					selectStep(i + 1);
				}
            });
        }
		
		function createSubmitButton(i) {
			var stepName = "step" + i;
            $("#" + stepName + "commands").append('<input type="image" src="images/btn-submit.png" class="submit-btn" name="submit" id="'+stepName+'Submit" />');

            $("#" + stepName + "Submit").bind("click", function(e) {
				var valid = true;
				$('#'+stepName+' :input.required').each(function() {
					if ($(this).val() == '') {
						valid = false;
						$(this).focus();
						alert('Please fill out all required fields to continue.');
						return false;
					}
				});
				return valid;
            });
		}

        function selectStep(i) {
            $("#steps li").removeClass("current");
            $("#stepDesc" + i).addClass("current");
        }

    }
})(jQuery); 
