﻿var formUrl = "/inc/script/DynamicEmailFormLibrary.php"
var FormItems;
var Container;
var RequiredErrorCount = 0;
var RequiredErrorText = "";
var HumanTestText = "";

function CreateForm(container) {
    Container = container;
    $.getJSON(formUrl, {
        'action': 'CreateForm'
    },
    parseInfo);
}

function parseInfo(data) {
    $(Container).html(htmlDecode(data.FormHtml[0].title));
    FormItems = data.ItemList
    InitClicks()
}

function GenerateSubmitData() {
    RequiredErrorText = "";
    var sendData = "";

    $.each(FormItems, function (i, formItem) {

        if (formItem != null) {
            var id = formItem.id;
            var title = formItem.title;
            var required = formItem.required;
            var type = formItem.type;
            var requiredType = formItem.requiredType;

            if (title != "undefined") {
                var formData = '<br/>' + title + ' : ';

                switch (type) {
                case "TextBox":
                    formData += $("#" + id).val() + '<br/>';
                    if (required == "true" && $("#" + id).val() == "") {
                        ++RequiredErrorCount;
                        RequiredErrorText += "Enter " + title + '<br/>';
                    } else if (required == "true" && requiredType == "email") {
                        if (!isValidEmailAddress($("#" + id).val())) {
                            ++RequiredErrorCount;
                            RequiredErrorText += "Enter Valid " + title + '<br/>';
                        }
                    }
                    break;
                case "TextArea":
                    formData += $("#" + id).val() + '<br/>';
                    if (required == "true" && $("#" + id).val() == "") {
                        ++RequiredErrorCount;
                        RequiredErrorText += "Enter " + title + '<br/>';
                    }
                    break;

                case "DropDownList":
                    formData += $("#" + id).val() + '<br/>';
                    if (required == "true" && $("select#" + id).attr("selectedIndex") == 0) {
                        ++RequiredErrorCount;
                        RequiredErrorText += "Enter " + title + '<br/>';
                    }
                    break;

                case "RadioButtonList":
                    formData += $("input[@name='" + id + "']:checked").val() + '<br/>';
                    if (required == "true" && $("input[@name='" + id + "']:checked").val() == undefined) {
                        ++RequiredErrorCount;
                        RequiredErrorText += "Enter " + title + '<br/>';
                    }
                    break;

                case "HumanTest":
                    //formData += $("#" + id).val() + '<br/>';
                    if (required == "true" && $("#" + id).val() == "") {
                        ++RequiredErrorCount;
                        RequiredErrorText += "Enter Human Test<br/>";
                    } else {
                        HumanTestText = $("#" + id).val();
                    }
                    break;

                default:

                }



                sendData += formData;
            }
        }
    });

    return sendData;
}





function InitClicks() {
    $("#DynamicEmailFormfromXmlFilePhp").submit(function () {
        return false;
    });

    $("#submit").click(function () {
        RequiredErrorCount = 0;
        var sendData = GenerateSubmitData();
        if (RequiredErrorCount == 0) {
            $.ajax({
                type: "POST",
                url: formUrl,
                data: "action=FormPost&sendData=" + sendData + "&HumanTestText=" + HumanTestText,
                complete: function (data) {
                    if (data.responseText == "false") {
                        $("#error-logs").empty();
                        $("#error-logs").html("Enter Human Text");
                        $("#error-logs").show("slow");
                    } else {
                        $(Container).empty();
                        $(Container).html(data.responseText);
                        $(Container).show("slow");
                    }
                }
            });
        } else {
            $("#error-logs").empty();
            $("#error-logs").html(RequiredErrorText);
            $("#error-logs").show("slow");
        }

        return false;

    });

}

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
}

function htmlEncode(value) {
    return $('<div/>').text(value).html();
}

function htmlDecode(value) {
    return $('<div/>').html(value).text();
}