var QA = QA || {};
QA.Beeline = QA.Beeline || {};
QA.Beeline.Pages = QA.Beeline.Pages || {};
QA.Beeline.Pages.PressCenter = QA.Beeline.Pages.PressCenter || {};

QA.Beeline.Pages.PressCenter.Index = QA.Beeline.Pages.PressCenter.Index || (function () {
    var options = {
        type: 2,
        pageIndex: 0,
        pageSize: 12,
        total: 0,
        isSearchResult: false,
        SubscriptionParamsValidationError: "",
        SubscribeRequestUrl: '',
        ElasticsearchUrl: 'http://ms-webdvlp004.bee.vimpelcom.ru:2900/api/Search/PressCenter'
    };

    var Init = function (data) {
        if (data.type)
            options.type = data.type;
        if (data.pageIndex)
            options.pageIndex = data.pageIndex;
        if (data.pageSize)
            options.pageSize = data.pageSize;
        if (data.total) {
            options.total = data.total;
        }
        if (data.SubscribeRequestUrl) {
            options.SubscribeRequestUrl = data.SubscribeRequestUrl;
        }

        if (data.SubscriptionParamsValidationError) {
            options.SubscriptionParamsValidationError = data.SubscriptionParamsValidationError;
        }
    };
    var getSearchModel = function () {
        var model = $(".press-search-form").serializeAnything();
        if ($("#Query").hasClass("empty")) {
            model.Query = "";
        }
        if ($("[name='Region']").parent().is(":visible")) {
            model.SelectedRegion = $("[name='Region']").val();
        }
        return model;
    }
    var search = function () {
        var model = getSearchModel();
        model.IsElastic = true;
        $("input[name='IsElastic']").val("true");
        model.PageIndex = options.pageIndex = 0;
        model.PageSize = 0;
        $(".press-search-news_column-cnt .b-loader").removeClass("hidden");
        $.post("/presscenterajax/search", model)
         .done(function (jsonView) {
             $(".press-search-news_column-cnt .list").html(jsonView.View);
             var pageInfo = jsonView.Extra;
             if (pageInfo.skip + pageInfo.take >= pageInfo.total) {
                 $(".press-search-news_column-cnt_submit-foot").addClass("hidden");
             }
             else {
                 $(".press-search-news_column-cnt_submit-foot").removeClass("hidden");
                 var showMore = (pageInfo.total - (pageInfo.skip + pageInfo.take)) > pageInfo.nextTake
                        ? pageInfo.nextTake
                        : pageInfo.total - (pageInfo.skip + pageInfo.take);
                 $(".press-search-news_column-cnt_submit-foot label").html('Показать еще ' + showMore);
                 $(".press-search-news_column-cnt_submit-foot slan.disabled").html('Показать еще ' + showMore);
             }
         })
        .always(function () {
            $(".press-search-news_column-cnt .b-loader").addClass("hidden");
        })
    };

    var playVideo = function (id) {
        QA.Beeline.Popup.showLoading();
        $.post("/presscenterajax/play", {
            id: id
        })
       .done(function (jsonView) {
           QA.Beeline.Popup.show(jsonView.View);

           QA.Beeline.Popup.hideLoading();
       })
        .always(function () {
            QA.Beeline.Popup.hideLoading();
        })
    };

    var OnNextPage = function () {
        var model = getSearchModel();
        model.PageIndex = ++options.pageIndex;
        //model.PageSize = options.pageSize;
        $(".press-search-news_column-cnt .b-loader").removeClass("hidden");
        $.post("/presscenterajax/list",model)
        .done(function (jsonView) {
            $(".press-search-news_column-cnt .list .press-search-news_column-cnt_box").last().after(jsonView.View);
            var pageInfo = jsonView.Extra;
            if (pageInfo.skip + pageInfo.take >= pageInfo.total) {
                $(".press-search-news_column-cnt_submit-foot").addClass("hidden");
            }
            else {
                var showMore = (pageInfo.total - (pageInfo.skip + pageInfo.take)) > pageInfo.nextTake
                      ? pageInfo.nextTake
                      : pageInfo.total - (pageInfo.skip + pageInfo.take);
                $(".press-search-news_column-cnt_submit-foot label").html('Показать еще ' + showMore);
                $(".press-search-news_column-cnt_submit-foot slan.disabled").html('Показать еще ' + showMore);
            }
        })
        .always(function () {
            $(".press-search-news_column-cnt .b-loader").addClass("hidden");
        })
    };

    var regionLatestNewsChange = function (s, ui) {
        var id = ui.target.attr("data-id");
        var $self = ui.target;
        var $widget = $self.parents(".press-center-section.latest-news");
        $widget.find(".b-loader").removeClass("hidden");
        $.post("/presscenterajax/latestnews", {
            id: id
        })
       .done(function (jsonView) {
           if (jsonView.IsSucceeded) {
               $widget.find(".regional-news-column-box.clearfix").html(jsonView.View);
           }
       })
        .always(function () {
            $widget.find(".b-loader").addClass("hidden");
        })
    }


    var validateSubscriptionThemes = function () {
        if ($("[name='Regions'] input:checkbox").length == 0) return true;
        var isValid = $("[name='Regions'] input:checkbox:checked").length > 0;
        if (isValid) {
            return true;
        }
        else {

            QA.Beeline.Validation.AddError("Regions", options.SubscriptionParamsValidationError, QA.Beeline.Validation.ErrorTypes.Other, //Тут может быть Reqiured или Other
                                                false,
                                                QA.Beeline.Validation.ErrorSourceTypes.Client,
                                           "[data-block-validation-id='press-center-subscribe']");
            return false;
        }
    }

    var submitSubscription = function () {
        var $context = $(this).parents().find("[data-block-validation-id='press-center-subscribe']");

        var model = $("[data-block-validation-id='press-center-subscribe']").serializeAnything();
        var i = 0;
        if (typeof (model["Regions[0].Title"]) != "undefined") {
            do {
                if (model["Regions[" + i + "].Selected"] != "true") {
                    model["Regions[" + i + "].Selected"] = "false";
                }
                i++;
            } while (typeof (model["Regions[" + i + "].Selected"]) != "undefined");
        }
        $context.find(".b-loader").removeClass("hidden");
        $.post(options.SubscribeRequestUrl, model)
        .done(function (data) {
            if (data.IsSucceeded) {
                $(".press-preference_form-box.request").hide();
                if (data.FromWidget) {
                    $(".press-liner-section_cnt.request").addClass("hidden");
                    $(".press-liner-section_cnt.responce h2").html(data.SubscriptionResponse);
                    $(".press-liner-section_cnt.responce").removeClass("hidden");
                }
                else {
                    $(".press-preference_form-box.responce .form-row").html(data.SubscriptionResponse);
                }
                $(".press-preference_form-box.responce").show();
            }
            else {
                new QaCaptcha().update();
                QA.Beeline.Validation.Validate(data.Errors, false, null, "[data-block-validation-id='press-center-subscribe']");
            }
        })
        .always(function () {
            $context.find(".b-loader").addClass("hidden");
        })
    }

    var regionLatestNewsOnInit = function (s, ui) {
        ui.target.aSpan.width(240);
    }

    var searchFormRegionSelectOnInit = function (s, ui) {
        ui.target.aSpan.width(200);
    }

    var toggleSubscWidgetView = function () {
        $(".press-liner-section_cnt.request").toggleClass("hidden");
        new QaCaptcha().update($(".press-liner-section_cnt.request"));
        $(".press-liner-section_cnt.responce").toggleClass("hidden");
        $(".press-liner-section_cnt.request input[type='text']").each(function (s, ui) {
            $(this).val("");
        });
    }

    return {
        Init: Init,
        OnNextPage: OnNextPage,
        OnSearch: search,
        PlayVideo: playVideo,
        ValidateSubscriptionThemes: validateSubscriptionThemes,
        SubmitSubscription: submitSubscription,
        OnRegionLatestNewsChange: regionLatestNewsChange,
        RegionLatestNewsOnInit: regionLatestNewsOnInit,
        SearchFormRegionSelectOnInit: searchFormRegionSelectOnInit,
        ToggleSubscWidgetView: toggleSubscWidgetView
    };
})();
