﻿function commentForm(controllerPath, moduleID) {
    this.controllerPath = controllerPath;
    this.moduleID = moduleID;
}

commentForm.prototype.refreshCaptcha = function(moduleID) {
    var data = {};
    data.width = jQuery("#commentform" + moduleID + " form .captchaContainer img").attr("width");
    data.height = jQuery("#commentform" + moduleID + " form .captchaContainer img").attr("height");
    var manager = this;
    jQuery.ajax({
        type: "POST",
        url: this.controllerPath + "/RefreshCaptcha/",
        data: data,
        success: function(data) {
            jQuery("#commentform" + moduleID + " form .captchaContainer").html(data);
        },
        error: function(data) {
            alert(data.responseText);
        }
    })

};

commentForm.prototype.submitForm = function() {
    var manager = this;
    jQuery("#commentform" + manager.moduleID + " .commentFormSubmit").attr("disabled", "disabled");
    var formData = jQuery("#commentform" + manager.moduleID + " form").serialize();
    jQuery.ajax({
        type: "POST",
        url: this.controllerPath + "/Create/" + manager.moduleID,
        data: formData,
        success: function(data) {
            alert("Your comment has been submitted and will appear on the comment board after it has been approved.");
            window.location.href = window.location.href;
        },
        error: function(data) {
            manager.refreshCaptcha(manager.moduleID);
            jQuery("#commentform" + manager.moduleID + " .commentFormSubmit").removeAttr("disabled");
            try {
                var modelState = window["eval"]("(" + data.responseText + ")");
                jQuery("#commentform" + manager.moduleID + " form .errorMessage").remove();
                jQuery("#commentform" + manager.moduleID + " form .error").removeClass("error");
                for (var i = 0; i < modelState.length; i++) {
                    var modelStateItem = modelState[i];
                    if (modelStateItem.value.errors.length > 0) {
                        for (var j = 0; j < modelStateItem.value.errors.length; j++) {
                            jQuery(jQuery("#" + modelStateItem.key)[0].parentNode).append(jQuery("<div/>").addClass("errorMessage").text(modelStateItem.value.errors[j].errorMessage));
                        }
                        jQuery("#" + modelStateItem.key).addClass("error");
                    }
                }
            }
            catch (ex) {
                alert(data.responseText);
            }
        }
    })
}