/* Created by jankoatwarpspeed.com */

(function($) {
    $.fn.formToWizard = function(options) {
        options = $.extend({
            submitButton: ''
        }, options);

        var element = this;

        $(window).bind('selectstep', function(event, data) {
        	selectStep(data.i);
        });

        var steps = $(element).find('fieldset');
        var count = steps.size();
        var submmitButtonName = '#'+options.submitButton;
        $(submmitButtonName).hide();

        // 2
        $(element).addClass('formwizard');
        $(element).before('<ul id="steps"></ul>');

        $(steps).each(function(i) {

        		//stepIndex = i;

            $(this).wrap('<div id="step'+i+'" class="step"></div>');
            $(this).append('<p id="step'+i+'commands" class="commands"></p>');

            // 2
            var name = $(this).find('legend').html();
            var li = $('<li></li>').attr('id', 'stepDesc'+i).attr('rel', i).html('Step '+(i+1)+'<span>'+name+'</span>');

            $('#steps').append($(li));

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

        });

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

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

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

            $('#'+stepName+'Next').bind('click', function(e) {
            	e.preventDefault();
              $('#'+stepName).hide();
              $('#step'+(i+1)).show();
              if (i+2 == count)
                  $(submmitButtonName).show();
              selectStep(i+1);
              return false;
            });
        }

        function selectStep(i) {

        		var stepName = 'step'+i;
            $('#steps li').removeClass('current');
            $('#stepDesc'+i).addClass('current');
            $('.step').hide();
            $('#step'+i).show();
            if (i+1 == count) {
                $(submmitButtonName).show();
            }

        }

        $(element).prepend($("ul#steps"));

				$('ul#steps').find('li').mousedown(function(event) {
					event.preventDefault();
					$(window).trigger('selectstep', {i: $(this).attr('rel')});
				});

    }


})(jQuery);
