/* Created by jankoatwarpspeed.com */

(function($){
	$.fn.formToWizard = function(options){
			options = $.extend({
			submitButton: "submit",
			validationEnabled: false
		}, options);

		var element = this;

		var steps = $(element).find(".mystep");
		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("<p id='step" + i + "commands'></p>");

			// 2
			var name = $(this).find("h4").html();
			$("#steps").append("<li id='stepDesc" + i + "' class='stepsname'>Step " + (i + 1) + "<span>" + name + "</span></li>");
			$("#stepDesc" + i).bind("click", function(e){
				for (var f = 0; f <= count; f++) {
					$("#step" + f).hide();
				}
				$("#step" + i).show();
				if (i + 1 == count)
					$(submmitButtonName).show();
				selectStep(i);
			});
			//add Class to <li> for CSS
			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='#' 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 href='#' id='" + stepName + "Next' class='next'>Next ></a>");

			$("#" + stepName + "Next").bind("click", function(e){
				if (options.validationEnabled) {
					var stepIsValid = true;
					$("#" + stepName + " :input").each(function(index){
						var xy = element.validate().element($(this));
						if (xy == undefined)
							xy = true;
						stepIsValid = xy && stepIsValid;
					});
					if (!stepIsValid) {
						return false;
					};
				};
				$("#" + stepName).hide();
				$("#step" + (i + 1)).show();
				if (i + 2 == count)
					$(submmitButtonName).show();
				selectStep(i + 1);
			});
		}

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