/* Created by jankoatwarpspeed.com */

(function($) {
    $.fn.formToWizard = function(options) {
        options = $.extend({  
            submitButton: "" 
        }, options); 
        
        var element = this;

        var steps = $(element).find("fieldset");
        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("legend").html();
            $("#steps").append("<li id='stepDesc" + i + "'><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;
            if( 2 == i) return ;
            
            $("#" + stepName + "commands").append("<a href='#' id='" + stepName + "Prev' class='prev'>Indietro</a>");

            $("#" + stepName + "Prev").bind("click", function(e) {
                //if(!validateStep(i)) return;

                $("#" + 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'>Avanti</a>");

            $("#" + stepName + "Next").bind("click", function(e) {
                if(!validateStep(i)) return;
                
                $("#" + 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");
        }

        function validateStep(i) {

            var isValid = false;
            switch(i) {
                case 0:
                    $("#cvForm").validate().element( "input[name=firstname]" );
                    $("#cvForm").validate().element( "input[name=lastname]" );
                    $("#cvForm").validate().element( "input[name=email]" );
                    $("#cvForm").validate().element( "input[name=tipo]" );

                    if(
                        $("#cvForm").validate().element( "input[name=firstname]" )
                        &&
                        $("#cvForm").validate().element( "input[name=lastname]" )
                        &&
                        $("#cvForm").validate().element( "input[name=email]" )
                        &&
                        $("#cvForm").validate().element( "input[name=tipo]" )
                    ) {
                            isValid = true;
                    }
                break;
                case 1:
                    $("#cvForm").validate().element( "input[name=cv]" );
                    $("#date").val();
                    if( $("#cvForm").validate().element( "input[name=cv]" )
                        && $("#date").val() != "")
                    {
                        isValid = true;
                        $("#inserisci_data").hide();
                        upload();
                    } else {
                        $("#inserisci_data").show();
                    }
                break;
                case 2:
                    isValid = true;
                default:
            }

            return isValid;
        }

        function upload() {
             var options = {
                    //target:        '#output1',   // target element(s) to be updated with server response
                    //beforeSubmit:  showRequest,  // pre-submit callback
                    //success:       showResponse  // post-submit callback

                    // other available options:
                    url:       ajaxurl ,        // override for form's 'action' attribute
                    type:      'post',        // 'get' or 'post', override for form's 'method' attribute
                    dataType:  'json',       // 'xml', 'script', or 'json' (expected server response type)
                    //clearForm: true        // clear all form fields after successful submit
                    //resetForm: true        // reset the form after successful submit

                    // $.ajax options can be used here too, for example:
                    data:   { action: 'put_cv' }
                };

                // bind form using 'ajaxForm'
                $('#cvForm').ajaxForm(options);
                $('#cvForm').submit();
        }
    }
})(jQuery); 
