/* Minification failed. Returning unminified contents.
(1,20): run-time error CSS1031: Expected selector, found '='
(1,20): run-time error CSS1025: Expected comma or open brace, found '='
(160,1): run-time error CSS1019: Unexpected token, found '$'
(160,2): run-time error CSS1019: Unexpected token, found '('
(160,12): run-time error CSS1031: Expected selector, found '('
(160,12): run-time error CSS1025: Expected comma or open brace, found '('
(163,2): run-time error CSS1019: Unexpected token, found ')'
 */
var PageStatistics = function () {

    var self = this;
    var viewModel = null;

    var pageElements = {
        feedbackModalId: "feedback-modal",
        localStorageKey: "visitedUrls",
        isLocalStorageEnabled: window.localStorage ? true : false
    };

    var viewModelSchema = function () {
        this.comments = ko.observable("");
        this.feedbackMode = ko.observable(false);
        this.title = ko.computed(function () {
            return this.feedbackMode() ? "How can we improve?" : "Is this page helpful?";
        }, this);
        this.yesClick = function () {
            yesClickHandler();
        };
        this.noClick = function () {
            noClickHandler();
        };
        this.submitClick = function () {
            submitClickHandler()
        };
        this.cancelClick = function () {
            cancelClickHandler();
        };
        this.closeClick = function () {
            closeClickHandler();
        }
    };

    self.init = function () {
        var needToShow = fnNeedToShow();
        if (needToShow) {
            fnDisplayPopup();
            fnApplyBindings();
        }
    };

    var fnNeedToShow = function () {
        var matchedItems = ["/blogs/"];
        var url = window.location.href;
        var needToShowPopup = false;

        $.each(matchedItems, function (index, item) {
            if (url.indexOf(item) > -1) {
                needToShowPopup = true;
                return;
            }
        });
        if (pageElements.isLocalStorageEnabled) {
            if (needToShowPopup) {
                var visitedUrls = JSON.parse(localStorage.getItem(pageElements.localStorageKey));
                needToShowPopup = (visitedUrls && Array.isArray(visitedUrls) && visitedUrls.indexOf(url) > -1) ? false : true;
            }
        }
        return needToShowPopup;
    };

    var fnDisplayPopup = function () {

        var html = "";
        html += '<div id="feedback-modal" class="feedback-modal">';
        html += '<div><i class="fa fa-window-close" data-bind="click:closeClick"></i></div>';
        html += '<div class="feedback-modal-body">';
        html += '<p  data-bind="text:title"></p>';
        html += '<textarea class="form-control" data-bind="value:comments, visible:feedbackMode"></textarea>';
        html += '</div>';
        html += '<div class="feedback-modal-footer">';
        html += '<button type="button" data-bind="click:yesClick, visible:!feedbackMode()" class="btn btn-primary">Yes</button>';
        html += '<button type="button" data-bind="click:noClick, visible:!feedbackMode()" class="btn btn-secondary">No</button>';
        html += '<button type="button" data-bind="click:submitClick, visible:feedbackMode" class="btn btn-primary">Submit</button>';
        html += '<button type="button" data-bind="click:cancelClick, visible:feedbackMode" class="btn btn-secondary">Cancel</button>';
        html += '</div>';
        html += '</div>';

        $("body").append(html);
    };

    var fnApplyBindings = function () {
        viewModel = new viewModelSchema();
        ko.applyBindings(viewModel, $("#" + pageElements.feedbackModalId)[0]);
    };

    var yesClickHandler = function () {
        var data = {
            Url: window.location.href,
            IsHelpful: true,
            Comments: ""
        };
        appUtility.doAjaxPost("Shared/UpdateIsPageHelpful", data, function (response) {
            if (response.Success) {
               // CommonManager.showSuccessNotification(response.Message);
            }
        }, {
                contentType: appUtility.ajaxContentType.applicationJson,
                dataType: appUtility.ajaxDataType.json
            });

        CommonManager.showSuccessNotification("Thanks for providing your feedback.");
        $("#" + pageElements.feedbackModalId).remove();
        updateLocalStorage(data.Url)
    };

    var noClickHandler = function () {
        viewModel.feedbackMode(true);
    };

    var submitClickHandler = function () {

        if ($.trim(viewModel.comments()).length == 0) {
            $("#" + pageElements.feedbackModalId).find("textarea").focus();
            return;
        }

        var data = {
            Url: window.location.href,
            IsHelpful: false,
            Comments: viewModel.comments()
        };

        appUtility.doAjaxPost("Shared/UpdateIsPageHelpful", data, function (response) {
            if (response.Success) {
           
            }
        }, {
                contentType: appUtility.ajaxContentType.applicationJson,
                dataType: appUtility.ajaxDataType.json
            });

        CommonManager.showSuccessNotification("Thanks for providing your feedback.");
        $("#" + pageElements.feedbackModalId).remove();
        updateLocalStorage(data.Url)
    };

    var cancelClickHandler = function () {
        viewModel.feedbackMode(false);
    };

    var closeClickHandler = function () {
        $("#" + pageElements.feedbackModalId).remove();
    };

    var updateLocalStorage = function (url) {
        if (pageElements.isLocalStorageEnabled) {
            var visitedUrls = JSON.parse(localStorage.getItem(pageElements.localStorageKey));
            if (visitedUrls && Array.isArray(visitedUrls)) {
                visitedUrls.push(url);
            } else {
                visitedUrls = [url];
            }
            localStorage.setItem(pageElements.localStorageKey, JSON.stringify(visitedUrls));
        }
    };
};

$(function () {
    var pageStatistics = new PageStatistics();
    pageStatistics.init();
});
