$(document).ready(function () {

    // script to fix button size
    var width = 16;

    // fix css
    width += Number($("button[id^='button-submit']").outerWidth());
    width += Number($("button[id^='button-previous']").outerWidth());
    $(".button-add-algin button[id^='button-submit']").parent().css({width: (width)});

    // on form submit, check required fields
    $("#button-submit").bind("click", function (e) {
        $(window).scrollTo($("div#question-required"), 0, {queue:true} );
        
        if ($("body").data("validated") === false) {
            e.preventDefault();
        }

        if ($("body").data("submitted") === false) {
            $("body").data("submitted", true);
            $.post(uri_required, $("#survey").serialize() + "&a=req", function (data) {
                $("#question-required").hide();
                $("ul#survey-questions").children().removeClass("error");

                var displayErrors = false;
                if (data.validate) {
                    $.each(data.validate, function (questionId, v) {
                        if (v.required === false) {
                            displayErrors = true;
                            $("ul#survey-questions li#question-" + questionId).addClass("error");
                        }

                        if (v.validated === false) {
                            displayErrors = true;
                            $("ul#survey-questions li#question-" + questionId).addClass("error");
                        }
                    });
                }

                if (displayErrors === true) {
                    $("#question-required").show();
                    $("body").data("submitted", false);
                } else {
                    $("body").data("validated", true);
                    $("#button-submit").trigger("click");
                }

            }, "json");
        }
    });

    // check if we have a userinfo submit button
    $("#button-submit-userinfo").bind("click", function (e) {
        $(window).scrollTo($("div#question-required"), 0, {queue:true} );
        
        if ($("body").data("reqvalidated") === false) {
            e.preventDefault();
        }

        if ($("body").data("reqsubmitted") === false) {
            $("body").data("reqsubmitted", true);
            $.post(uri_required, $("#form").serialize() + "&a=req", function (data) {
                $("#question-required").hide();
                $("ul#userinfo li input").removeClass("error");

                var displayErrors = false;
                if (data.validate) {
                    $.each(data.validate, function (field, v) {
                        if (v === false) {
                            displayErrors = true;
                            $("ul#userinfo li input#field-" + field).addClass("error");
                        }
                    });
                }

                if (displayErrors === true) {
                    $("#question-required").show();
                    $("body").data("reqsubmitted", false);
                } else {
                    $("body").data("reqvalidated", true);
                    $("#button-submit-userinfo").trigger("click");
                }

            }, "json");
        }
    });

    // check if we have clicked the previous button
    $("#button-previous").bind("click", function (e) {
        e.preventDefault();

        top.location = uri_required + "&a=prev&cp=" + $("input[name='cp']").val();
    });

    // set data variables
    $("body").data("validated", false);
    $("body").data("submitted", false);

    $("body").data("reqvalidated", false);
    $("body").data("reqsubmitted", false);
});
