﻿function initializeActionFormValidation(formName) {
    
    $.validator.messages.required = "";
    $.validator.messages.minlength = "";
    $.validator.messages.digits = "";
    $.validator.messages.email = "";

    var ajaxOptions = { dataType: 'json', beforeSubmit: handleActionFormPreSubmit, success: handleActionFormResponse };

    $(formName).validate(
        {
            errorClass: "input-validation-error",
            errorElement: "span",
            submitHandler: function(form) { $(form).ajaxSubmit(ajaxOptions); return false; }
        }
    );
}



function handleActionFormPreSubmit(formData, form, options) {
    
    // Disable submit button to prevent duplicate submits
    form.find(":submit,input:image").attr('disabled', 'disabled');
    
    // Remove the server-side error messages, if present
    form.find("div.validation-summary-message").empty();
    form.find("ul.validation-summary-errors").empty();
    
}



function handleActionFormResponse(response, status) {

    var form = $("#" + response.FormName);
    var resultArea = $("#" + response.FormName + "-result");

    if (response.Errors == null) {

        if (response.SuccessUrl != null && response.SuccessUrl != "") {
            document.location.href = response.SuccessUrl;
        }
        else {
            form.hide();
            resultArea.fadeIn("slow");

            // Call the custom post-success JS function, if it exists
            var afterFunctionName = response.FormName + 'After';
            if (window[afterFunctionName] != undefined) {
                window[afterFunctionName]();   
            }            
        }
    }
    else {

        // Check if we have an error message and error list already
        var errorMessage = form.find("div.validation-summary-message");

        if (errorMessage.length == 0) {
            errorMessage = $("<div class='validation-summary-message'></div>");
            form.append(errorMessage);
        }
        
        errorMessage.text(response.Message);

        var errorList = form.find("ul.validation-summary-errors");

        if (errorList.length == 0) {
            errorList = $("<ul class='validation-summary-errors'></ul>");
            form.append(errorList);
        }

        // Ensure list is empty and add list items
        errorList.html('');
        
        $.each(response.Errors, function(i, error) { errorList.append("<li>" + error + "</li>"); });
        form.append(errorList);
    }
    
    form.find(":submit,input:image").removeAttr('disabled');
}


function recordGoogleAdwordsConversion(id, format, label) {
    window.google_conversion_id = id;
    window.google_conversion_language = "en_US";
    window.google_conversion_format = format;
    window.google_conversion_color = "ffffff";
    window.google_conversion_label = label;

    var protocol = (("https:" == document.location.protocol) ? "https://www." : "http://www.");
    var scriptUrl = protocol + 'googleadservices.com/pagead/conversion.js';
    $.getScript(scriptUrl);
}