/* Minification failed. Returning unminified contents.
(3,1): run-time error CSS1019: Unexpected token, found '('
(3,11): run-time error CSS1031: Expected selector, found '('
(3,11): run-time error CSS1025: Expected comma or open brace, found '('
(1067,2): run-time error CSS1019: Unexpected token, found '('
(1067,22): run-time error CSS1031: Expected selector, found '='
(1067,22): run-time error CSS1025: Expected comma or open brace, found '='
(1067,48): run-time error CSS1019: Unexpected token, found ','
(1067,64): run-time error CSS1031: Expected selector, found '='
(1067,64): run-time error CSS1025: Expected comma or open brace, found '='
(1067,85): run-time error CSS1019: Unexpected token, found ','
(1067,110): run-time error CSS1031: Expected selector, found ')'
(1067,110): run-time error CSS1025: Expected comma or open brace, found ')'
 */
//const { target } = require("modernizr");

(function (sign, assert, $, document) {
    assert.forms = {

        className: "forms-view",

        getViews: function (context) {
            return $(sign.helpers.findByClass(this.className, context, true));
        },
        addOverLay: function (callback) {
            $("<div></div>").addClass("view-container-overlay-loading").appendTo(assert.forms.getViews());

            if (typeof callback === 'function') {
                callback();
            }
        },

        removeOverLay: function () {
            var formView = assert.forms.getViews();
            $(".view-container-overlay-loading").remove();
        },
        loadFormCost: function () {
            var $formContent = $(document).findByClass("form-content-container")
            var url = $formContent.data("load-cost-url");
            var tableContent = $formContent.findByClass("form-cost-table-container")
            //tableContent.htmlFromUrl(url, { formCost: formCost, identity: identity })
            $.ajax({
                url: url,
                cache: false,
                async: true,
                success: function (html) {
                    $html = $(html);
                    tableContent.empty()
                    tableContent.htmlUpdate($html)
                    
                }, error: function (ex) {
                    alert(ex)
                }
            });
        },
        loadFormCostView: function () {
            var $formContent = $(document).findByClass("form-content-container")
            var url = $formContent.data("load-cost-view-url");
            var tableContent = $formContent.findByClass("form-cost-view-container")
            //tableContent.htmlFromUrl(url, { formCost: formCost, identity: identity })
            $.ajax({
                url: url,
                cache: false,
                async: true,
                success: function (html) {
                    $html = $(html);
                    tableContent.empty()
                    tableContent.htmlUpdate($html)

                }, error: function (ex) {
                    alert(ex)
                }
            });
        }
    }

    $(document).on("click", ".send-claim-email", function () {
        var $sendMailButton = $(this);
        $sendMailButton
            .addClass("loading-in-progress")
            .prop("disabled", true);

        var url = $(this).data("url");
        sign.popup.show(null, { url: url, autoClose: false, customClass: "claim-send-email-container", modal: true, verticalAlign: "center", horizontalAlign: "center" }, function (html) {
            var $popup = $(html);
            $sendMailButton
                .removeClass("loading-in-progress")
                .prop("disabled", false);
            $popup.on("click touchstart", ".close-button-popup-message-box", function () {
                sign.popup.close($popup);
            });
        });
    });
    $(document).on("click", ".my-claim-item", function () {
        var url = $(this).data("url")
        location.href = url;

    });

    $(document).on("click", ".search-unassigned-form", function () {

        var view = $(document).findByClass("unassigned-claim-data-view-container");

        var actionurl = view.data("load-unassigned-claim-view");

        view.htmlFromUrl(actionurl, function (html) {
            var $html = $(html);
            var $dataView = $html.find(".all-unassgined-claim-data-view");
            sign.dataview.initViews($dataView, function (dataView, data) {
                var searchview = $(document).findByClass("unassigned-claim-search-container");
                var textToSearch = searchview.findByClass("unassigned-claim-search-term").val();

                data.searchTerm = textToSearch;

            });
        });

    });

    $(document).on('keypress', '.unassigned-claim-search-term', function (e) {

        if (e.keyCode == 13) { 
            $('.search-unassigned-form').trigger("click")
        }
    });

    $(document).on("click", ".assign-me-claim", function () {
        var $this = $(this);
        if ($this.hasClass('add-in-progress')) {
            return false;
        }
        var claimIdentity = $this.data("claim-identity");
        var url = $this.data("update-assign-url");
        $this.addClass('add-in-progress');
        $.ajax({
            url: url,
            type: "POST",
            cache: false,
            async: true,
            /*contentType: "application/json",*/
            data: { claimIdentity: claimIdentity },

            success: function (info) {

                assert.main.addNotificationHtml(info.messageView, false, function () {
                    $this.removeClass('add-in-progress');
                });

                if (info.status == true) {
                    
                }
                else {
                    
                }
            }, error: function (ex) {
                alert(ex)
            }
        });
        
    });

    //$(document).on("change", ".form-drop-down-customer", function (event) {
    //    var user = sign.combobox.getValue($(this));
    //    var $formContent = $(document).findByClass("form-content-container")
    //    var url = $formContent.data("customer-address-url");
    //    //sign.helpers.mergeParams($formContent.data("customer-address-url"),  {});
    //    var addressContainer = $formContent.findByClass("customer-address-container")
    //    if (user != undefined && user.length > 0) {
    //        $(addressContainer).htmlFromUrl(url, { userName: user });

    //    }

    //});
    $(document).on("click", ".claim-row-item", function () {

        var url = $(this).data("url")
        window.location.href = url;
    });



    $(document).on("click", ".presentation-claim", function () {

        var url = $(this).data("url")
        var context = $(this).getPresentionContext();
        var u = sign.helpers.mergeParams(url, context);
        window.location.href = u;
    });
    //*************************************//
    /*******************Cost information*****************/
    //**************************************//
    $(document).on("click", ".cost-dependency", function () {
        //if ($(this).attr('checked')) $(this).attr('checked', false)
        //else $(this).attr('checked', true)
        var $costItemContainer = $(this).closest(".cost-item")
        var allCheckBoxItems = $costItemContainer.findByClass("cost-dependency");
        var dependencyFulfilled = false
        allCheckBoxItems.each(function () {
            var checked = $(this).prop('checked');
            if (checked == true) {
                dependencyFulfilled = true
            }
        });
        var button = $costItemContainer.findByClass("action-submit-button")

        if (dependencyFulfilled) {
            button.prop("disabled", false)//.removeAttr('disabled');
        }
        else {
            button.attr('disabled', 'disabled');
        }
    });
    $(document).on("click", ".add-form-part", function () {
        var $addButton = $(this);
        $addButton.addClass("loading-in-progress");
        var validCost = true;
        var $formContent = $(document).findByClass("form-content-container")
        var $costItemContainer = $(this).closest(".cost-item")
        var costTypeIdentity = $costItemContainer.data("cost-type-identity")
        var costType = {}
        costType.Identity = costTypeIdentity;
        var formCost = {}
        formCost.Type = costType

        var $costInputElement = $costItemContainer.findByClass("part-cost-input")
        $costInputElement.each(function () {
            var $item = $(this);
            var costField = $item.data("form-cost-attribute");
            var inputValue = "";
            if ($item.hasClass("signifikant-combobox")) {
                inputValue = sign.combobox.getValue($item)
                if (inputValue.length <= 0) {
                    inputValue = sign.combobox.getText($item)
                }
                sign.combobox.clear($item);

            }
            //else if ($item.hasClass("signifikant-numeric-input")) {
            //    inputValue = sign.numeric.input.getValue($item)
            //}
            else {
                inputValue = $item.val();
                $item.val("1");
            }
            //inputValue = getValue($item, $item)
            //setValue($item,$item,"")
            if (inputValue.length <= 0) validCost = false;
           
            switch (costField) {
                case "Identity":
                    formCost.Identity = inputValue
                    break;
                case "Description":
                    formCost.Description = inputValue
                    break;
                case "Quantity":
                    formCost.Quantity = inputValue
                    break;
                case "TotalValue":
                    formCost.TotalValue = inputValue
                    break;
                case "Currency":
                    formCost.Currency = inputValue
                    break;
            }
        })
        var $dependencyElement = $costItemContainer.findByClass("form-dependency-container")
        if ($dependencyElement.length > 0) {
            var allCheckBoxItems = $dependencyElement.findByClass("cost-dependency");
            var dependencyFulfilled = false
            allCheckBoxItems.each(function () {
                var dependencyVal = $(this)
                var checked = $(this).prop('checked');
                if (checked) {
                    var dependencyAttribure = $(this).data("form-cost-attribute");
                    switch (dependencyAttribure) {
                        case "Invoice":
                            formCost.Invoice = true
                            break;
                        case "PartWorkedOn":
                            formCost.PartWorkedOn = true
                            break;
                    }
                    dependencyFulfilled = true
                    $(this).prop('checked', "false")
                }

            });
            if (dependencyFulfilled == false) validCost = false
        }

        //end cost information
        var identity = $formContent.data("form-identity")

        if (validCost) {
            var url = $formContent.data("add-cost-url");
            var tableContent = $formContent.findByClass("form-cost-table-container")
            //tableContent.htmlFromUrl(url, { formCost: formCost, identity: identity })
            $.ajax({
                url: url,
                //dataType: "html",
                type: "POST",
                cache: false,
                async: true,
                data: { formCost: formCost, identity: identity },

                success: function (data) {
                    //$html = $(html);
                    //tableContent.empty()
                    //tableContent.htmlUpdate($html)
                    if (data.status == true) {
                        

                        if (data.html.length > 0) {
                            sign.popup.show($(data.html), { autoClose: false, customClass: "cost-message-popup", modal: true, verticalAlign: "center", horizontalAlign: "center" }, function (html) {
                                var $popup = $(html);
                                $popup.on("click touchstart", ".close-button-popup-message-box", function () {
                                    assert.forms.loadFormCost();
                                    sign.popup.close($popup);

                                });
                            });
                        }
                        else {
                            assert.forms.loadFormCost();
                        }
                      
                    }
                    else {
                        //Show error message in popup
                        sign.popup.show($(data.html), { autoClose: false, customClass: "cost-message-popup", modal: true, verticalAlign: "center", horizontalAlign: "center" }, function (html) {
                            var $popup = $(html);

                            $popup.on("click touchstart", ".close-button-popup-message-box", function () {
                                sign.popup.close($popup);
                            });
                        });
                    }
                    $addButton.removeClass("loading-in-progress");
                }, error: function (ex) {
                    alert(ex)
                }
            });
        }
        else {
            $addButton.removeClass("loading-in-progress");
        }


    });
    $(document).on("change", ".cost-input", function () {
        var validCost = true;
        var $formContent = $(document).findByClass("form-content-container")
        var $costItemContainer = $(this).closest(".cost-item")
        var costTypeIdentity = $costItemContainer.data("cost-type-identity")
        var costType = {}
        costType.Identity = costTypeIdentity;
        var formCost = {}
        formCost.Type = costType

        var $costInputElement = $costItemContainer.findByClass("cost-input")
        $costInputElement.each(function () {
            var $item = $(this);
            var costField = $item.data("form-cost-attribute");
            var inputValue = "";
            if ($item.hasClass("signifikant-combobox")) {
                inputValue = sign.combobox.getValue($(this))
            }
            //else if ($item.hasClass("signifikant-numeric-input")) {
            //    inputValue = sign.numeric.input.getValue($item)
            //}
            else {
                inputValue = $item.val();
            }

            //if (inputValue.length <= 0 ) validCost = false;

            switch (costField) {
                case "Identity":
                    formCost.Identity = inputValue
                    break;
                case "Description":
                    var costDescription = {}
                    costDescription.Value = inputValue;
                    formCost.Description = costDescription;
                    break;
                case "Quantity":
                    formCost.Quantity = inputValue.length > 0 ? inputValue : 0
                    break;
                case "TotalValue":
                    formCost.TotalValue = inputValue.length >0 ? inputValue : 0
                    break;
                case "Currency":
                    formCost.Currency = inputValue
                    break;
            }
        })
        var $dependencyElement = $costItemContainer.findByClass("form-dependency-container")
        if ($dependencyElement.length > 0) {
            var allCheckBoxItems = $dependencyElement.findByClass("cost-dependency");
            var dependencyFulfilled = false
            allCheckBoxItems.each(function () {
                var checked = $(this).prop('checked');
                if (checked == true) {
                    var dependencyAttribure = $(this).data("form-cost-attribute");
                    switch (dependencyAttribure) {
                        case "Invoice":
                            formCost.Invoice = true
                            break;
                        case "PartWorkedOn":
                            formCost.PartWorkedOn = true
                            break;
                    }
                    dependencyFulfilled = true
                }

            });
            if (dependencyFulfilled == false) validCost = false
        }

        //end cost information
        var identity = $formContent.data("form-identity")

        if (validCost) {
            var url = $formContent.data("add-cost-url");
            var tableContent = $formContent.findByClass("form-cost-table-container")
            //tableContent.htmlFromUrl(url, { formCost: formCost, identity: identity })
            $.ajax({
                url: url,
                //dataType: "html",
                type: "POST",
                cache: false,
                async: true,
                data: { formCost: formCost, identity: identity },

                success: function (result) {
                    //tableContent.empty()
                    //tableContent.htmlUpdate($html)
                    if (result.status == true) {
                        assert.forms.loadFormCost();
                    }
                    else {
                        //Show error message
                        sign.popup.show($(result.html), { autoClose: false, customClass: "cost-message-popup", modal: true, verticalAlign: "center", horizontalAlign: "center" }, function (html) {
                            var $popup = $(html);

                            $popup.on("click touchstart", ".close-button-popup-message-box", function () {
                                sign.popup.close($popup);
                            });
                        });
                    }
                }, error: function (ex) {
                    alert(ex)
                }
            });
        }


    });

    $(document).on("click", ".delete-cost-item-lnk", function () {
        //end cost information
        var $formContent = $(document).findByClass("form-content-container")
        var identity = $formContent.data("form-identity")
        var costIdentity = $(this).data("cost-identity");
        var url = $formContent.data("delete-cost-url");
        var tableContent = $formContent.findByClass("form-cost-table-container")
        //tableContent.htmlFromUrl(url, { costIdentity: costIdentity, identity: identity })
        $.ajax({
            url: url,
            //dataType: "html",
            type: "POST",
            cache: false,
            data: { costIdentity: costIdentity, identity: identity },

            success: function (data) {
                //$html = $(html);
                //tableContent.empty()
                //tableContent.htmlUpdate($html)
                if (data.status == true) {
                    assert.forms.loadFormCost();
                }
                else {
                    //Show error message
                    sign.popup.show($(data.html), { autoClose: false, customClass: "upload-note-popup", modal: true, verticalAlign: "center", horizontalAlign: "center" }, function (html) {
                        var $popup = $(html);

                        $popup.on("click touchstart", ".close-button-popup-message-box", function () {
                            sign.popup.close($popup);
                        });
                    });
                }

            }, error: function (ex) {
                alert(ex)
            }
        });
    });
    //$(document).on("selectionChanged", ".form-field", function (e) {

    //});
     //*************************************//
    /*******************End Cost information*****************/
    //**************************************//
 //part cost
    //end part cost

    var ignoreFieldChanges = false;

    $(document).on("change selectionChanged", ".form-field", function (e) {
        if (ignoreFieldChanges == true) return;

        let input = e.target;
        let $input = $(input);

        if ($input.is("input:file") == true) return;
        let $field = $(this);

        let $combobox = $field.findByClass("signifikant-combobox")//.closest(".");
        if ($combobox.length > 0) {
            if (e.type != "selectionChanged" && !$combobox.hasClass("allow-new") ) {
                return
            }
            //else if (e.type != "selectionChanged") return
            
        }
        //if ($combobox.length && e.type != "selectionChanged") return;

        let formFieldIdentity = $field.data("identity");
        let val = getValue($field, $input);
        /*Why this? to report validity only??*/
        if ($input.is("input, select") == true && val.length<=0) {
            let validity = input.checkValidity();
            if (validity == false) {
                //    //input.setCustomValidity("ugh");
                input.reportValidity();
                return;
            }
        }
        var url = $field.data("update-field-url") || $field.closest("[data-update-field-url]").data("update-field-url");

        try {

            sign.helpers.getJson(url, { fieldIdentity: formFieldIdentity, value: val }, function (data) {
                applyUpdate(data);
            });
        }
        catch (ex)
        {
            console.exception(ex);
        }
    });
    $(document).on("change", ".form-upload-input:file", function () {
        var uploadattachmentButton = $(this).closest(".upload-files-container").findByClass("upload-attachment-button")
        if (uploadattachmentButton.length > 0 && $(this).val().length > 0) {
            uploadattachmentButton.prop("disabled", false)//.removeAttr("disabled")
        }
        else {
            uploadattachmentButton.attr("disabled","disabled")
        }
    });
    $(document).on("click", ".upload-attachment-button", function (e) {
        var $uploadButton = $(this);
        var $formAttachmentContainer = $uploadButton.closest(".upload-files-container");
        var fileName = $formAttachmentContainer.findByClass("form-upload-input").val()
        if (fileName.length > 0) {
            $uploadButton.addClass("loading-in-progress");
            let formFieldIdentity = $formAttachmentContainer.data("identity");
            let formFieldUploadSize = $formAttachmentContainer.findByClass("form-upload-input").data("restrict-file-size");
            var url = sign.helpers.mergeParams($formAttachmentContainer.data("url"), { fieldIdentity: formFieldIdentity });
            var attchmentUrl = sign.helpers.mergeParams($formAttachmentContainer.data("attachment-url"), { noteIdentity: formFieldIdentity, maxMBFileSize: formFieldUploadSize });
            $.ajax({
                type: "POST",
                contentType: false,
                processData: false,
                async: true,
                url: attchmentUrl,
                //content: "application/json; charset=utf-8",
                //dataType: "json",
                data: new FormData($formAttachmentContainer.findByClass("formUploadAttachment").get(0)),
                success: function (html) {
                    if ($(html.Message).length > 0) {
                        sign.popup.show($(html.Message), { autoClose: false, customClass: "upload-note-popup", modal: true, verticalAlign: "center", horizontalAlign: "center" }, function (html) {
                            var $popup = $(html);
                            $popup.on("click touchstart", ".close-button-popup-message-box", function () {
                                sign.popup.close($popup);
                                //save note
                                $.ajax({
                                    type: "POST",
                                    contentType: false,
                                    processData: false,
                                    async: true,
                                    url: url,
                                    success: function (html) {
                                        var $t = sign.notehelper;
                                        var $controls = $t.getControls();
                                        $controls.each(function () {
                                            $t.init($(this));
                                        });
                                        //end loading
                                        $uploadButton.removeClass("loading-in-progress");
                                        $formAttachmentContainer.findByClass("form-upload-input").val("")
                                    },
                                    error: function (xhr, textStatus, errorThrown) {
                                        // TODO: Show error
                                    }
                                });
                                //end save note
                            });
                        });
                    }
                    else {
                        //save the note
                        $.ajax({
                            type: "POST",
                            contentType: false,
                            processData: false,
                            async: true,
                            url: url,
                            success: function (data) {
                                var $t = sign.notehelper;
                                var $controls = $t.getControls();
                                $controls.each(function () {
                                    $t.init($(this));
                                });
                                //end loading
                                $uploadButton.removeClass("loading-in-progress");
                                $formAttachmentContainer.findByClass("form-upload-input").val("");

                                applyUpdate(data);
                            },
                            error: function (xhr, textStatus, errorThrown) {
                                // TODO: Show error
                            }
                        });
                        //end save note
                    }

                },
                error: function (xhr, textStatus, errorThrown) {
                    // TODO: Show error
                }
            });
        }
        
       
    });

    $(document).on("click", ".add-new-user-claim", function (e) {

        var username = $(this).data("username");

        var view = $(document).findByClass("form-content-container");
        var loadViewUrl = view.data("load-new-user-view-url");

        var actionUrl = sign.helpers.mergeParams(loadViewUrl, { username: username });

        sign.popup.show(null, {
            url: actionUrl, autoClose: false, modal: true, customClass: "add-new-user-claim-pop-up", verticalAlign: "center", horizontalAlign: "center" }, function (html) {

            var $popup = $(html);

            $popup.on("click touchstart", ".close-neweuser-claim-form", function () {
                sign.popup.close($popup);
            });

            //$popup.find('.required').on('change keyup paste', function () {
            //    if ($(this).val().length == 0) {
            //        $(this).addClass("input-validation-error");
            //    }
            //    else {
            //        $(this).removeClass("input-validation-error");
            //    }
            //});

            $popup.find('.signifikant-combobox').on("selectionChanged", function () {
                var addressCountry = sign.combobox.getValue($(this));
                if (addressCountry.length == 0) {
                    $(this).addClass("input-validation-error");
                }
                else {
                    $(this).removeClass("input-validation-error");
                }
            });

            $popup.find('.copyshippingaddresslink').on("click", function () {

                $popup.find("#txtBillingAddressName").val($popup.find("#txtShippingAddressName").val());
                $popup.find("#txtBillingAddressStreetAddress1").val($popup.find("#txtShippingAddressStreetAddress1").val());
                $popup.find("#txtBillingAddressStreetAddress2").val($popup.find("#txtShippingAddressStreetAddress2").val());
                $popup.find("#txtBillingAddressZipCode").val($popup.find("#txtShippingAddressZipCode").val());
                $popup.find("#txtBillingAddressCity").val($popup.find("#txtShippingAddressCity").val());
                $popup.find("#bilingAddressCountryDropdown").val($popup.find("#shippingAddressCountryDropdown").val());
            });

            $popup.on("click", ".create-user", function (e) {

                var saveButton = $popup.find('.create-user');
                if (saveButton.hasClass('add-in-progress')) {
                    return false;
                }

                var formValid = true;

                var firstName = null;
                var lastName = null;
                var password = null;
                var email = null;
                var confirmPassword = null;
                var phone = null;

                var shippingAddress = null;
                var billingAddress = null;

                var firstNameControl = $popup.find("#txtFirstname");
                if (firstNameControl.length > 0) {
                    firstName = firstNameControl.val();

                    if (firstName == "") {
                        /*firstNameControl.addClass("input-validation-error");*/
                        formValid = false;
                    }
                    else {
                        /*firstNameControl.removeClass("input-validation-error");*/
                    }
                }

                var lastNameControl = $popup.find("#txtLastname");
                if (lastNameControl.length > 0) {
                    lastName = lastNameControl.val();

                    if (lastName == "") {
                        /*lastNameControl.addClass("input-validation-error");*/
                        formValid = false;
                    }
                    else {
                        /*lastNameControl.removeClass("input-validation-error");*/
                    }
                }

                var emailControl = $popup.find("#txtEmail");
                if (emailControl.length > 0) {
                    email = emailControl.val();
                    if (email == "") {
                        /*emailControl.addClass("input-validation-error");*/
                        formValid = false;
                    }
                    else {
                        /*emailControl.removeClass("input-validation-error");*/
                    }
                }

                var passwordControl = $popup.find("#txtPassword");
                if (passwordControl.length > 0) {
                    password = passwordControl.val();
                }

                var confirmPasswordControl = $popup.find("#txtConfirmPassword");
                if (confirmPasswordControl.length > 0) {
                    confirmPassword = confirmPasswordControl.val();
                }

                var phoneControl = $popup.find("#txtPhone");
                if (phoneControl.length > 0) {
                    phone = phoneControl.val();
                    if (phone == "") {
                        /*phoneControl.addClass("input-validation-error");*/
                        formValid = false;
                    }
                    else {
                        /*phoneControl.removeClass("input-validation-error");*/
                    }
                }

                $popup.find('.shippingaddresscontrol').each(function (i, obj) {
                    var addressValue = $(this).val();
                    if (addressValue == "") {
                        /*$(this).addClass("input-validation-error");*/
                        formValid = false;
                    }
                    else {
                        /*$(this).removeClass("input-validation-error");*/
                    }
                });

                $popup.find('.billingaddresscontrol').each(function (i, obj) {
                    var addressValue = $(this).val();
                    if (addressValue == "") {
                        /*$(this).addClass("input-validation-error");*/
                        formValid = false;
                    }
                    else {
                        /*$(this).removeClass("input-validation-error");*/
                    }
                });

                var gdprAcceptanceControl = $popup.find("#gdpr-acceptance");
                if (gdprAcceptanceControl.prop("checked")) {
                    var messsageContainer = $popup.find(".gdpr-message");
                    messsageContainer.removeClass("required-selection");
                }
                else {
                    var messsageContainer = $popup.find(".gdpr-message");
                    messsageContainer.addClass("required-selection");
                    formValid = false;
                }
                var x = $popup.find("#shippingAddressId").val();

                var shippingAddress = {
                    "Id": $popup.find("#shippingAddressId").val(),
                    "Name": $popup.find("#txtShippingAddressName").val(),
                    "StreetAddress1": $popup.find("#txtShippingAddressStreetAddress1").val(),
                    "StreetAddress2": $popup.find("#txtShippingAddressStreetAddress2").val(),
                    "ZipCode": $popup.find("#txtShippingAddressZipCode").val(),
                    "City": $popup.find("#txtShippingAddressCity").val(),
                    "Country": $popup.find("#shippingAddressCountryDropdown").val(),
                };

                var billingAddress = {
                    "Id": $popup.find("#billingAddressId").val(),
                    "Name": $popup.find("#txtBillingAddressName").val(),
                    "StreetAddress1": $popup.find("#txtBillingAddressStreetAddress1").val(),
                    "StreetAddress2": $popup.find("#txtBillingAddressStreetAddress2").val(),
                    "ZipCode": $popup.find("#txtBillingAddressZipCode").val(),
                    "City": $popup.find("#txtBillingAddressCity").val(),
                    "Country": $popup.find("#bilingAddressCountryDropdown").val(),
                };

                var newUserViewModel = {
                    "UserId": $popup.find("#userId").val(),
                    "FirstName": firstName,
                    "LastName": lastName,
                    "Email": email,
                    "Phone": phone,
                    "Password": password,
                    "ConfirmPassword": confirmPassword,
                    "ShippingAddress": shippingAddress,
                    "BillingAddress": billingAddress

                };

                var saveUrl = view.data("save-new-claim-user-url");

                if (formValid == true) {

                    saveButton.addClass('add-in-progress');

                    $.ajax({
                        url: saveUrl,
                        type: "POST",
                        dataType: "json",
                        contentType: 'application/json',
                        data: JSON.stringify(newUserViewModel),
                        success: function (info) {
                            if (info.status == "true") {

                                sign.popup.close($popup);
                                setTimeout(function () {

                                    assert.main.addNotificationHtml(info.messageView, false, function () {

                                        if (info.loadCustomerView == true && info.status == "true" ) {

                                            assert.forms.addOverLay();

                                            var customerInfoContainer = $(document).findByClass("selected-user-info-ui");
                                            customerInfoContainer.htmlUpdate(info.customerDetailView);

                                            var formContainer = $(document).findByClass("form-content-container");

                                            //TODO- Discuss if this is correct way to get the update url.
                                            var url = formContainer.data("update-field-url");

                                            try {

                                                sign.helpers.getJson(url, { fieldIdentity: info.fieldIdentity, value: info.value }, function (data) {
                                                    applyUpdate(data);
                                                });
                                            }
                                            catch (ex) {
                                                console.exception(ex);
                                                assert.forms.removeOverLay();
                                            }


                                        }
                                    });
                                }, 1000);
                            }
                            else {
                                saveButton.removeClass('add-in-progress');
                                assert.main.addNotificationHtml(info.messageView, false, function () {
                                });
                            }
                        },
                        error: function (xhr, status, error) {
                            saveButton.removeClass('add-in-progress');
                            alert("Error: " + status + " " + error + " " + xhr.status + " " + xhr.statusText)
                        }
                    });
                }
            });

        });
    });

    $(function () {
        var myClaimView = $(document).findByClass("my-all-claim-data-view");
        if (myClaimView.length > 0) {
            sign.dataview.initViews(myClaimView);
        }
    });

    $(document).on("click", ".form-send-button", function (e) {
        var $btn = $(this);
        $btn.addClass("loading-in-progress").prop("disabled", true);
        assert.forms.addOverLay();

        var url = $(this).data("url");
        var confirmSendClaimForReviewUrl = $(this).data("url-confirm-popup");

        // if warnReviewUrl is undefined then that means claim is about to be sent for review
        if (confirmSendClaimForReviewUrl) {
            sign.popup.show(null, { url: confirmSendClaimForReviewUrl, autoClose: false, customClass: "yes-no-send-claim-review", modal: true, verticalAlign: "center", horizontalAlign: "center" }, function (html) {
                var $popup = $(html);

                $popup.on("click touchstart", ".close-button", function () {
                    sign.popup.close($popup);
                    assert.forms.removeOverLay();
                    $btn.removeClass("loading-in-progress").prop("disabled", false);
                });

                $popup.on("click touchstart", ".cancel-button", function () {
                    sign.popup.close($popup);
                    assert.forms.removeOverLay();
                    $btn.removeClass("loading-in-progress").prop("disabled", false);
                    // cancel was clicked
                });

                $popup.on("click touchstart", ".delete-button", function () {
                    sign.popup.close($popup);
                    assert.forms.removeOverLay();
                    $btn.removeClass("loading-in-progress").prop("disabled", false);
                    // delete (Ok) was clicked
                    updateClaimStatus(url);
                });
            });
        }
        else {
            updateClaimStatus(url);
        }
        
    });

    function updateClaimStatus(url) {
        $.ajax({
            type: "POST",
            contentType: false,
            processData: false,
            async: true,
            url: url,
            success: function (data) {
                if (data.status == true)
                    window.location.href = data.url;
                else {
                    sign.popup.show($(data.html), { autoClose: false, customClass: "validation-message-popup", modal: true, verticalAlign: "center", horizontalAlign: "center" }, function (html) {
                        var $popup = $(html);

                        $popup.on("click touchstart", ".close-button-popup-message-box", function () {
                            sign.popup.close($popup);
                            assert.forms.removeOverLay();
                        });
                    });
                }

            },
            error: function (xhr, textStatus, errorThrown) {
                // TODO: Show error
            }
        });
            //end save note
    }

    function getValue($field, $obj) {
        //var val = $field.data("value");
        //if (!val)
        let val = null;
        var $combobox = $obj.closest(".signifikant-combobox");
        if ($combobox.length > 0) {
            val = sign.combobox.getValue($combobox);
            if (val.length <= 0 && $combobox.hasClass("allow-new")) {
                val = sign.combobox.getText($combobox)
            }
        } else if ($obj.hasClass("signifikant-checkbox")) {
            val = $obj.is(':checked')
        } else {
            val = $obj.val();
        }
        return val;
    }

    function setValue($field, $obj, val) {
        if ($obj == null) $obj = $field.find("input, select");
        var $combobox = $obj.closest(".signifikant-combobox");
        if ($combobox.length > 0) {
            if (val != null && val != "") {
                sign.combobox.setValue($combobox, val ?? "");
            } else {
                sign.combobox.clear($combobox);
            }
        } else if ($obj.hasClass("signifikant-checkbox")) {
            val = $obj.prop('checked', val == "true");
        } else {
            $obj.val(val);

            if ($obj.is("select") && $obj.prop("required") == true && val != null) {
                $obj.find(".noselection").remove();
            }
        }
    }

    function applyUpdate(data) {
        try {

            ignoreFieldChanges = true;

            //setValue($field, $input, data.Value);

            if (data.UpdatedFields) {
                for (let i = 0; i < data.UpdatedFields.length; i++) {
                    let update = data.UpdatedFields[i];
                    if (update.Field) {
                        var $updatedField = $(document).find(".form-field[data-identity='" + update.Field.Object.toLowerCase() + "." + update.Field.Field.toLowerCase() + "']"); // TODO NOT WHOLE DOCUMENT SEARCH!!
                        if ($updatedField.length) {
                            if (update.ValueChanged === true && update.View == null) {
                                setValue($updatedField, null, update.Value);
                            }
                            if (update.AllowNew != null) {
                                var $combobox = $updatedField.findByClass("signifikant-combobox");

                                if (update.AllowNew == "true" && $combobox.length > 0 && !$combobox.hasClass("allow-new")) {
                                    $combobox.addClass("allow-new")
                                }
                                else if (update.AllowNew == "false" && $combobox.length > 0 && $combobox.hasClass("allow-new")) {
                                    $combobox.removeClass("allow-new")
                                }
                            }
                            if (update.Visible != null) {
                                //$updatedField.toggleClass("hidden", update.Visible == false);
                                $updatedField.add($updatedField.prev(".form-field-label")).toggleClass("hidden", update.Visible == false);
                            }
                            if (update.ReadOnly != null) {
                                $updatedField.toggleClass("readonly", update.ReadOnly);
                                $updatedField.prop("disabled", update.ReadOnly);
                                $updatedField.find("input, select, textarea").prop("disabled", update.ReadOnly);
                            }
                            if (update.View != null) {
                                $updatedField.htmlUpdate(update.View);
                            }
                        }
                    }
                }
            }
            if (data.CostsViewUpdated) {
                // Reload cost view
                assert.forms.loadFormCostView();

            }
            else if (data.CostsUpdated) {
                // Reload cost view
                assert.forms.loadFormCost();
               
            }
        }
        finally {
            ignoreFieldChanges = false;
            assert.forms.removeOverLay();
        }
    }

}(window.signifikant = window.signifikant || {}, window.assert = window.assert || {}, window.jQuery, document));
