﻿/// <reference path="jQuery/jquery-1.4.2.min.js" />
function SubmitFormData(parentElementID) {
    AppendHtmlMessage(parentElementID, "SubmitFormDataResult", "One moment while your responses are submitted.");

    var formData = {};
    $("#" + parentElementID + " :input:not(:button):not(:submit):not(:reset):not(:image):not(:file)").each(
        function (index, element) {
            if ((element.type == "radio" || element.type == "checkbox") && !element.checked)  {
                return;
            }

            if (element.type == "hidden" && (element.name == "ErrorMessage" || element.name == "ConfirmationMessage")) {
                return;
            }

            switch (element.type) {
                case "select-one":
                    formData[element.name] = $(element).find(":selected").val();
                    break;

                case "select-multiple":
                    $(element).find(":selected").each(
                        function (selectedElementIndex, selectedElement) {
                            formData[GetUniqueElementName(formData, element.name)] = selectedElement.value;
                        }
                    );
                    break;

                case "checkbox":
                    formData[GetUniqueElementName(formData, element.name)] = element.value;
                    break;

                default:
                    formData[element.name] = element.value;
                    break;
            }
        }
    );

    ContentServices.FormDataHandler.SubmitData(Sys.Serialization.JavaScriptSerializer.serialize(formData), SubmitFormDataSuccess, SubmitFormDataFailed, parentElementID);
}

function GetUniqueElementName(formData, elementName) {
    var i = 0;
    var uniqueElementName = elementName;

    while (formData[uniqueElementName] != null) {
        i++;
        uniqueElementName = elementName + i;
    }

    return uniqueElementName; 
}

function SubmitFormDataSuccess(result, userContext, methodName) {
    var confirmationMessage = "Your responses have been submitted.";
    if ($("#" + userContext + " input:hidden[name='ConfirmationMessage']").length) {
        confirmationMessage = $("#" + userContext + " input:hidden[name='ConfirmationMessage']").val();
    }

    AppendHtmlMessage(userContext, "SubmitFormDataResult", confirmationMessage);
}

function SubmitFormDataFailed(error, userContext, methodName) {
    var errorMessage = "An error has occured submitting your responses.";
    if ($("#" + userContext + " input:hidden[name='ErrorMessage']").length) {
        errorMessage = $("#" + userContext + " input:hidden[name='ErrorMessage']").val();
    }

    AppendHtmlMessage(userContext, "SubmitFormDataResult", errorMessage);
}

function AppendHtmlMessage(elementID, newDivID, htmlMessage) {
    if ($("#" + newDivID).length) {
        $("#" + newDivID).html(htmlMessage);
    }
    else {
        $("#" + elementID).append("<div id=" + newDivID + ">" + htmlMessage + "</div>");
    }
}