/* Minification failed. Returning unminified contents.
(9264,204-211): run-time error JS1019: Can't have 'break' outside of loop: break a
 */
var userAgent = (navigator.userAgent || navigator.vendor || window.opera).toLowerCase();
var iPadAndroid = userAgent.match(/ipad/i) || userAgent.match(/iphone/i) || userAgent.match(/itouch/i) || userAgent.match(/android/i) || false;
var isWebKit = (userAgent.match(/webkit/i)) || false;
var isEdge = (userAgent.match(/edge/i)) || false;

var changestoletter = false;

$(document).ready(function () {
    var arrayCulture = McConfig.DotDotDotApplyByLetter.split(',');

    arrayCulture.forEach(function (item) {
        if (item == UserSession.Locale)
            changestoletter = true;
    });

    var getDeviceTypeNewMedia = function () {
        return $('html').css('content').replace(/"/g, '');
    };
    /* Full Image slider : START 
    ============================================================ */
    setTimeout(function () {
        var $FullRotatorSlider = $("#home-rotator-v1:visible"),
            FullRotatorSliderDelay = $FullRotatorSlider.attr('data-duration');

        if ($FullRotatorSlider.length > 0) {
            $FullRotatorSlider.royalSlider({
                arrowsNav: true,
                arrowsNavAutoHide: false,
                arrowsNavHideOnTouch: false,
                fadeinLoadedSlide: false,
                numImagesToPreload: 3,
                controlsInside: false,
                keyboardNavEnabled: false,
                sliderDrag: false,
                controlNavigation: 'bullets',
                loop: true,
                allowCSS3: false,
                addActiveClass: true,
                autoHeight: true,
                autoScaleSlider: false,
                imageScaleMode: 'none',
                imageAlignCenter: false,
                navigateByClick: false,
                autoPlay: {
                    enabled: true,
                    pauseOnHover: true,
                    stopAtAction: false,
                    delay: FullRotatorSliderDelay
                }
            });

            if ($("#loading-overlay-spinner-full").length) {
                $("#loading-overlay-spinner-full").fadeOut('slow');
            }

            var FullRotatorSliderInstance = $FullRotatorSlider.data('royalSlider'),
                FullRotatorContentSetCounter = 0;

            var FullRotatorGetCurrentSlide = function () {
                return FullRotatorSliderInstance.currSlide.content;
            };

            var FullRotatorTextSize = function ($slide) {
                var $textWrap,
                    deviceType = getDeviceTypeNewMedia();
                if (typeof ($slide) === 'undefined') {
                    $textWrap = FullRotatorGetCurrentSlide().find('.slide-textv1');
                } else {
                    $textWrap = $slide.find('.slide-textv1');
                }
                if (deviceType === 'tablet991') {
                    $textWrap.attr('style', '');
                } else if (deviceType === 'mobile767') {
                    $textWrap.attr('style', '');
                }

                $textWrap.find('h2').trigger("update");
                if ($textWrap.find('div.ellipsisv1').length > 0) {
                    $textWrap.find('div.ellipsisv1').trigger("update");
                }
            };

            var FullRotatorTextPosition = function ($slide) {
                $slide.find('.slide-textv1 h2').dotdotdot({
                    wrap: changestoletter === true ? 'letter' : 'word',
                    callback: function (isTruncated, orgContent) {
                        var $el = $(this).find('a');
                    }
                });
                $slide.find('.slide-textv1 div.ellipsisv1').dotdotdot({
                    wrap: changestoletter === true ? 'letter' : 'word',
                    callback: function (isTruncated, orgContent) {
                        var $el = $(this).find('a');
                    }
                });
            };

            FullRotatorSliderInstance.ev.on('rsMaybeSizeReady', function (e, slideObject) {
                FullRotatorTextSize(slideObject.content);
                FullRotatorTextPosition(slideObject.content);
                if (FullRotatorContentSetCounter == 0) {
                    videoonOneSlide(FullRotatorSliderInstance);
                    FullRotatorContentSetCounter++;
                }
                var currSlide = FullRotatorSliderInstance.currSlide;
                var imageHeight = currSlide.content.find('.full-image-wrapper').height();
                $FullRotatorSlider.find('.full-image-wrapper').height(imageHeight);
            });

            FullRotatorSliderInstance.ev.on('rsBeforeAnimStart', function (event) {
                var $slide = event.currentTarget.currSlide.content;
                $("#home-rotator-v1 video").each(function () {
                    this.pause();
                    $(this).closest(".fullsize-bg-image").removeClass("vid-playing");
                    $(this).closest(".fullsize-bg-image").find(".vid-mute-unmute").css('display', 'none');
                });
                FullRotatorTextSize($slide);
            });

            //rsAfterContentSet
            FullRotatorSliderInstance.ev.on('rsAfterSlideChange', function (event, object) {
                var index = FullRotatorSliderInstance.currSlide.id;
                var currSlide = FullRotatorSliderInstance.currSlide;
                var nextSlide = FullRotatorSliderInstance.slides[index + 1];

                var collection = currSlide.content.find('.full-image-wrapper').find('img[data-src]');
                if (collection.length) {
                    collection.each(function () {
                        $(this).attr('src', $(this).data('src'));
                        $(this).removeAttr('data-src');
                    });
                } else {
                    videoPosterImage("slide" + (index));
                    var vid = currSlide.content.find('.full-image-wrapper').find("video").get(0);
                    if (vid && vid.children[0].src == "") {
                        vid.children[0].src = vid.children[0].dataset.src;
                        vid.load();
                    }
                }

                if (nextSlide) {
                    var collection2 = nextSlide.content.find('.full-image-wrapper').find('img[data-src]');
                    if (collection2.length) {
                        collection2.each(function () {
                            $(this).attr('src', $(this).data('src'));
                            $(this).removeAttr('data-src');
                        });
                    } else {
                        videoPosterImage("slide" + (index + 1));
                        var vid = nextSlide.content.find('.full-image-wrapper').find("video").get(0);
                        if (vid && vid.children[0].src == "") {
                            vid.children[0].src = vid.children[0].dataset.src;
                            vid.load();
                        }
                    }
                }
            });

            /* Video Poster Image change */
            var videoPosterImage = function (slide) {
                if ($('#' + slide).find(".video-slide-container video").length) {
                    deviceType = getDeviceTypeNewMedia();
                    var myVideo = $('#' + slide).find(".video-slide-container");
                    if (deviceType === 'desktop992') {
                        var DesktopId = slide.replace("slide", "hdnDesktop");
                        $('#' + slide).find(".video-slide-container video").attr("poster", $('input[type=hidden]#' + DesktopId).val());
                    } else if (deviceType === 'tablet991') {
                        if (myVideo.find("video").get(0).paused) {
                            var TabletId = slide.replace("slide", "hdnTablet");
                            $('#' + slide).find(".video-slide-container video").attr("poster", $('input[type=hidden]#' + TabletId).val());
                        }
                    } else if (deviceType === 'mobile767') {
                        if (myVideo.find("video").get(0).paused) {
                            if ($("#hidShowDesktopImage").val().toLowerCase() == "true") {
                                var DesktopId = slide.replace("slide", "hdnDesktop");
                                $('#' + slide).find(".video-slide-container video").attr("poster", $('input[type=hidden]#' + DesktopId).val());
                            }
                            else {
                                var MobileId = slide.replace("slide", "hdnMobile");
                                $('#' + slide).find(".video-slide-container video").attr("poster", $('input[type=hidden]#' + MobileId).val());
                            }
                        }
                    }
                }
            };

            $(window).resize(function () {
                var FullRotatorSliderInstance = $FullRotatorSlider.data('royalSlider');
                var $slide = FullRotatorSliderInstance.currSlide.content;
                var imageHeight = 0;
                videoPosterImage($slide.attr("id"));
                setTimeout(function () {
                    $FullRotatorSlider.find('.full-image-wrapper').removeAttr('style');
                    imageHeight = $slide.find('.full-image-wrapper').height();
                    $FullRotatorSlider.find('.full-image-wrapper').height(imageHeight);
                    FullRotatorTextPosition($slide);
                    FullRotatorTextSize($slide);
                }, 100);
            });
        }
        /* Full Image slider : END
        ============================================================ */

        /* Three Image slider : START 
        ============================================================ */
        var $MultiItemRotatorSlider = $("#home-rotator-v2:visible"),
            MultiItemRotatorSliderDelay = $MultiItemRotatorSlider.attr('data-duration');

        if ($MultiItemRotatorSlider.length > 0) {
            $MultiItemRotatorSlider.royalSlider({
                arrowsNav: true,
                arrowsNavAutoHide: false,
                arrowsNavHideOnTouch: false,
                fadeinLoadedSlide: false,
                numImagesToPreload: 3,
                controlsInside: false,
                keyboardNavEnabled: false,
                sliderDrag: false,
                controlNavigation: 'bullets',
                loop: true,
                allowCSS3: false,
                addActiveClass: true,
                autoHeight: true,
                autoScaleSlider: false,
                imageScaleMode: 'none',
                imageAlignCenter: false,
                navigateByClick: false,
                autoPlay: {
                    enabled: true,
                    pauseOnHover: true,
                    stopAtAction: false,
                    delay: MultiItemRotatorSliderDelay
                }
            });

            if ($("#loading-overlay-spinner-full").length) {
                $("#loading-overlay-spinner-full").fadeOut('slow');
            }

            var MultiItemRotatorSliderInstance = $MultiItemRotatorSlider.data('royalSlider'),
                MultiItemRotatorContentSetCounter = 0;

            var MultiItemRotatorGetCurrentSlide = function () {
                return MultiItemRotatorSliderInstance.currSlide.content;
            };

            var MultiItemRotatorTextSize = function ($slide) {
                var $textWrap,
                    deviceType = getDeviceTypeNewMedia();
                if (typeof ($slide) === 'undefined') {
                    $textWrap = MultiItemRotatorGetCurrentSlide().find('.slide-textv1');
                } else {
                    $textWrap = $slide.find('.slide-textv1');
                }
                if (deviceType === 'tablet991') {
                    $textWrap.attr('style', '');
                } else if (deviceType === 'mobile767') {
                    $textWrap.attr('style', '');
                }
                $textWrap.find('h2').trigger("update");
            };


            var MultiItemRotatorTextPosition = function ($slide) {
                $slide.find('.slide-textv1 h2').dotdotdot({
                    wrap: changestoletter === true ? 'letter' : 'word',
                    callback: function (isTruncated, orgContent) {
                        var $el = $(this).find('a');
                    }
                });
            };

            MultiItemRotatorSliderInstance.ev.on('rsMaybeSizeReady', function (e, slideObject) {
                MultiItemRotatorTextSize(slideObject.content);
                MultiItemRotatorTextPosition(slideObject.content);
                if (MultiItemRotatorContentSetCounter == 0) {
                    videoonOneSlide(MultiItemRotatorSliderInstance);
                    MultiItemRotatorContentSetCounter++;
                }

                var currSlide = MultiItemRotatorSliderInstance.currSlide;
                var imageHeight = currSlide.content.find('.slide-left-section .full-image-wrapper').height();
                $MultiItemRotatorSlider.find('.slide-left-section .full-image-wrapper').height(imageHeight);
            });

            MultiItemRotatorSliderInstance.ev.on('rsBeforeAnimStart', function (event) {
                var $slide = event.currentTarget.currSlide.content;
                $("#home-rotator-v2 video").each(function () {
                    this.pause();
                    $(this).closest(".fullsize-bg-image").removeClass("vid-playing");
                    $(this).closest(".fullsize-bg-image").find(".vid-mute-unmute").css('display', 'none');
                });
                MultiItemRotatorTextSize($slide);
            });

            $(window).resize(function () {
                var MultiItemRotatorSliderInstance = $MultiItemRotatorSlider.data('royalSlider');
                var $slide = MultiItemRotatorSliderInstance.currSlide.content;
                setTimeout(function () {
                    MultiItemRotatorTextPosition($slide);
                    MultiItemRotatorTextSize($slide);

                    $MultiItemRotatorSlider.find('.slide-left-section .full-image-wrapper').height('auto');
                }, 100);
            });

            //rsAfterContentSet
            MultiItemRotatorSliderInstance.ev.on('rsAfterSlideChange', function (event, object) {
                var index = MultiItemRotatorSliderInstance.currSlide.id;
                var currSlide = MultiItemRotatorSliderInstance.currSlide;
                var nextSlide = MultiItemRotatorSliderInstance.slides[index + 1];

                var image1 = currSlide.content.find('.full-image-wrapper').find('img[data-src]');
                if (image1.length) {
                    $(image1).each(function () {
                        $(this).attr('src', $(this).data('src'));
                        $(this).removeAttr('data-src');
                    });

                } else {
                    videoPosterImageMultiItem("slide" + (index));

                    var vid = currSlide.content.find('.full-image-wrapper').find("video").get(0);
                    if (vid && vid.children[0].src === "") {
                        vid.children[0].src = vid.children[0].dataset.src;
                        vid.load();
                    }
                }

                if (nextSlide) {
                    var image2 = nextSlide.content.find('.full-image-wrapper').find('img[data-src]');
                    if (image2.length) {
                        $(image2).each(function () {
                            $(this).attr('src', $(this).data('src'));
                            $(this).removeAttr('data-src');
                        });
                    } else {
                        videoPosterImageMultiItem("slide" + (index + 1));

                        var vid = nextSlide.content.find('.full-image-wrapper').find("video").get(0);
                        if (vid && vid.children[0].src === "") {
                            vid.children[0].src = vid.children[0].dataset.src;
                            vid.load();
                        }
                    }
                }
            });

            /* Video Poster Image change */
            var videoPosterImageMultiItem = function (slide) {
                if ($('#' + slide).find(".video-slide-container video").length) {
                    deviceType = getDeviceTypeNewMedia();

                    var myVideo = $('#' + slide).find(".video-slide-container");
                    if (deviceType === 'desktop992') {
                        var DesktopId = slide.replace("slide", "hdnDesktop");
                        $('#' + slide).find(".video-slide-container video").attr("poster", $('input[type=hidden]#' + DesktopId).val());
                    } else if (deviceType === 'tablet991') {
                        if (myVideo.find("video").get(0).paused) {
                            var TabletId = slide.replace("slide", "hdnTablet");
                            $('#' + slide).find(".video-slide-container video").attr("poster", $('input[type=hidden]#' + TabletId).val());
                        }
                    } else if (deviceType === 'mobile767') {
                        if (myVideo.find("video").get(0).paused) {
                            var MobileId = slide.replace("slide", "hdnMobile");
                            $('#' + slide).find(".video-slide-container video").attr("poster", $('input[type=hidden]#' + MobileId).val());
                        }
                    }
                }
            };
        }
    }, 100);
    /* Three Image slider : END
    ============================================================ */
});
$(window).load(function () {
    var getDeviceType = function () {
        return $('html').css('font-family').replace(/"/g, '');
    };

    var $search = $('.mobile-menu input[name="search"]');
    //$('body').on('click touchstart', function (e) {
    //    menuopendesicion(e);
    //});   

    $('.mobile-search-icon').on('click touchstart', function (e) {
        menuopendesicion(e);
    });

    $('.open-menu').on('click touchstart', function (e) {
        menuopendesicion(e);
    });

    //Manage clicks and hover of links in mobile menu and CultureSelector(if exists)
    $('.mobile-menu > ul > li:has(ul li a) > a').click(function (e) {
        e.preventDefault();
        var allowTopNav = (($(this).data().topmenunavigationlink !== undefined && $(this).data().topmenunavigationlink.toLowerCase()) === "deny" ? false : true);

        if ($(this).attr("href") === undefined && allowTopNav) {
            if ($(this).parent().hasClass('open')) {
                $(this).parent().removeClass('open');
            } else {
                $(this).parent().siblings().removeClass('open');
                $(this).parent().addClass('open');
            }
        } else {
            $(this).parent().siblings().removeClass('open');
        }

        if ($(this).attr("data-culture-seo-name") != null) //if it is country selector then return 
            return;

        if (($(this).hasClass('opened') || !$(this).next().hasClass('category-menu')) && allowTopNav) {
            var linkLoc = $(this).attr('href');
            window.location.href = "" + linkLoc + "";
        }

        if ($(this).parent().hasClass('open')) {
            $(this).parent().removeClass('open');
        } else {
            $('.mobile-menu > ul > li > a').removeClass("opened");
            $(this).addClass("opened");
            $(this).parent().siblings().removeClass('open');
            $(this).parent().addClass('open');
        }
    });
    $('.threelevel-mobile-menu-filter > ul > li:has(ul li a) > a').click(function (e) {
        e.preventDefault();
        if ($(this).attr("href") === undefined) {
            if ($(this).parent().hasClass('open')) {
                $(this).parent().removeClass('open');
            } else {
                $(this).parent().siblings().removeClass('open');
                $(this).parent().addClass('open');
            }
        } else {
            $(this).parent().siblings().removeClass('open');
        }

    });

    var $slider = $("#home-rotator"),
        sliderDelay = $slider.attr('data-duration') * 1000,
        sliderDelayAfterClick = $slider.attr('data-duration-after-clik') * 1000;

    if ($slider.length > 0) {
        $slider.royalSlider({
            arrowsNav: true,
            arrowsNavAutoHide: false,
            arrowsNavHideOnTouch: false,
            fadeinLoadedSlide: false,
            numImagesToPreload: 3,
            controlsInside: false,
            keyboardNavEnabled: false,
            sliderDrag: false,
            controlNavigation: 'bullets',
            loop: true,
            allowCSS3: false,
            addActiveClass: true,
            autoHeight: true,
            autoScaleSlider: false,
            imageScaleMode: 'none',
            imageAlignCenter: false,
            navigateByClick: false,
            autoPlay: {
                enabled: true,
                pauseOnHover: true,
                stopAtAction: false,
                delay: sliderDelay
            }
        });

        var sliderInstance = $slider.data('royalSlider'),
            contentSetCounter = 0, timeout;

        var getCurrentSlide = function () {
            return sliderInstance.currSlide.content;
        };

        var arrowsPosition = function (deviceType) {
            var imgH = getCurrentSlide().find('.eight.columns img').height(),
                $arrows = $slider.find('.rsArrow');

            var outerHeight = getCurrentSlide().find('.slide-text p.ellipsis').children('a').outerHeight();
            getCurrentSlide().find('.slide-text p.ellipsis').css('height', outerHeight);
            getCurrentSlide().find('.slide-text').find('p').trigger("update");

            if (deviceType == 'tablet') {
                $arrows.css(
                    {
                        'height': imgH,
                        'margin-top': '32px'
                    });
            } else {
                $arrows.css({
                    'height': '100%',
                    'margin-top': '0px'
                });
            }
        };

        var textSize = function ($slide) {
            var $img, $textWrap,
                deviceType = getDeviceType();
            if (typeof ($slide) === 'undefined') {
                $img = getCurrentSlide().find('img');
                $textWrap = getCurrentSlide().find('.slide-text');
            } else {
                $img = $slide.find('img');
                $textWrap = $slide.find('.slide-text');
            }
            if (deviceType == 'desktop') {
                var imgH = $img.height(),
                    txtH = $textWrap.outerHeight();
                $textWrap.css({
                    'margin-top': ((imgH - txtH) / 2) > 0 ? ((imgH - txtH) / 2) : 0
                });
            } else if (deviceType == 'tablet') {
                $textWrap.attr('style', '');
            } else if (deviceType == 'mobile') {
                $textWrap.attr('style', '');
            }
            $textWrap.find('h2').trigger("update");
            $textWrap.find('p').trigger("update");
        };

        var centerTitle = function (el, deviceType) {
            var $el = $(el);
            if (deviceType == 'mobile' && $el.height() < 30) {
                $el.css('padding-top', '8px');
            }
            if (deviceType == 'tablet' && $el.height() < 80) {
                $el.css('padding-top', '20px');
            }
        };

        var textPosition = function ($slide) {
            var deviceType = getDeviceType();

            $slide.find('.slide-text h2').dotdotdot({
                wrap: changestoletter === true ? 'letter' : 'word',
                callback: function (isTruncated, orgContent) {
                    var $el = $(this).find('a');
                    if (deviceType != 'desktop') {
                        if (!isTruncated) {
                            centerTitle($el, deviceType);
                        } else {
                            $el.css('padding-top', '');
                        }
                    }
                }
            });

            $slide.find('.slide-text p.ellipsis').dotdotdot({
                wrap: changestoletter === true ? 'letter' : 'word',
                after: 'a.read-more',
                callback: function (isTruncated, orgContent) {
                    if (!isTruncated) {
                        var outerHeigth = $(this).children('a').outerHeight();
                        $(this).css('height', outerHeigth);
                    }
                }
            });
        };
        sliderInstance.ev.on('rsMaybeSizeReady', function (e, slideObject) {
            textSize(slideObject.content);
            textPosition(slideObject.content);
            if (contentSetCounter == 0) {
                var $navItems = $slider.find('.rsNav .rsNavItem, .rsArrow');

                $navItems.on('click', function () {
                    var clickFlag = true;
                    sliderInstance.ev.on('rsAfterSlideChange', function (event) {
                        if (clickFlag) {
                            if (timeout) {
                                clearTimeout(timeout);
                            }
                            $slider.royalSlider('stopAutoPlay');
                            timeout = setTimeout(function () {
                                sliderInstance.next();
                                $slider.royalSlider('startAutoPlay');
                            }, sliderDelayAfterClick);
                            clickFlag = false;
                        }

                    });
                });

                if (sliderInstance.numSlides == 1) {
                    $('.rsBullets .rsNavItem.rsBullet').css('visibility', 'hidden');
                    $('.rsArrow ').css('visibility', 'hidden');
                }
                arrowsPosition(getDeviceType());
                contentSetCounter++;
            }
        });

        sliderInstance.ev.on('rsBeforeAnimStart', function (event) {
            var $slide = event.currentTarget.currSlide.content;
            textSize($slide);
            centerTitle($slide, getDeviceType());
        });

        $(window).resize(function () {
            setTimeout(function () {
                textSize();
            }, 100);
        });

        $(document).on('device.change', function (ev, deviceType) {
            arrowsPosition(deviceType);
            centerTitle(getCurrentSlide(), deviceType);
        });
    }

    if ($("#loading-overlay-spinner").length) {
        setTimeout(function () {
            $("#loading-overlay-spinner").fadeOut('slow');
        }, 200);
    }
});

$('#Region').change(function () {
    $.ajax(
        {
            url: $("#getCountry").val(),
            type: "POST",
            contenttype: "application/json;charset=utf-8",
            dataType: "json",
            data: { 'rname': $("#Region option:selected").val(), 'categoryname': $("#regional-news").val().toLowerCase() },
            //data: { 'rname': $("#Region option:selected").val(), 'categoryname': $("#Region").parent().siblings().find("input[type=hidden]").attr("Id").toLowerCase() },
            success: function (response) {

                var s = "'<option value=\"\">" + $("#showAll").val() + "</option>'";
                for (var i = 0; i < response.Countries.length; i++) {
                    s += '<option value="' + response.Countries[i].SeoName + '">' + response.Countries[i].Name + '</option>';
                }
                $("#Country").html(s);
            }
        }
    );
});

$(document).ready(function () {
    var region = $("#Region option:selected").val();
    var country = $("#Country option:selected").val();
    if (region !== "" && region !== null && region !== undefined) {
        $.ajax(
            {
                url: $("#getCountry").val(),
                type: "POST",
                contenttype: "application/json;charset=utf-8",
                dataType: "json",
                data: { 'rname': $("#Region option:selected").val(), 'categoryname': $("#regional-news").val().toLowerCase() },
                success: function (response) {
                    var s = "'<option value=\"\">" + $("#showAll").val() + "</option>'";
                    for (var i = 0; i < response.Countries.length; i++) {
                        s += '<option value="' + response.Countries[i].SeoName + '">' + response.Countries[i].Name + '</option>';
                    }
                    $("#Country").html(s);
                    $("#Country").val(country);
                }
            }
        );
    }
});

var $FullRotatorSlider = $("#home-rotator-v1:visible");
var $MultiItemRotatorSlider = $("#home-rotator-v2:visible");

/* Video Play Pause */
function playVid(obj) {
    var RotatorSliderSelector = null;
    var thisObj = $(obj);

    if (thisObj.closest("#home-rotator-v1").length) {
        RotatorSliderSelector = $FullRotatorSlider;
    }
    else if (thisObj.closest("#home-rotator-v2").length) {
        RotatorSliderSelector = $MultiItemRotatorSlider;
    }
    var RotatorSliderInstance = RotatorSliderSelector.data('royalSlider');

    if ((RotatorSliderInstance.numSlides != 1) || (RotatorSliderSelector == $MultiItemRotatorSlider)) {
        var vid = thisObj.closest(".fullsize-bg-image").find("video").get(0);

        if (vid.children[0].src == "") {
            vid.children[0].src = vid.children[0].dataset.src;
            vid.load();
        }
        var parentOfThis = thisObj.closest(".fullsize-bg-image");
        thisObj.closest(".fullsize-bg-image").addClass("vid-playing");
        vid.play();
        RotatorSliderSelector.royalSlider('stopAutoPlay');

        thisObj.closest(".fullsize-bg-image").find(".vid-mute-unmute").css('display', 'block');
        if (iPadAndroid) {
            $(parentOfThis).find("video[poster]").css({ "object-fit": "cover", "width": "", "height": "" });
            $(parentOfThis).find("video").css({ "object-fit": "cover", "width": "", "height": "" });
        }
    }
    else {
        videoonOneSlide(RotatorSliderInstance);
    }

}

function pauseVid(obj) {
    var RotatorSliderSelector = null;
    var thisObj = $(obj);

    if (thisObj.closest("#home-rotator-v1").length) {
        RotatorSliderSelector = $FullRotatorSlider;
    }
    else if (thisObj.closest("#home-rotator-v2").length) {
        RotatorSliderSelector = $MultiItemRotatorSlider;
    }
    var vid = thisObj.closest(".fullsize-bg-image").find("video").get(0);
    thisObj.closest(".fullsize-bg-image").removeClass("vid-playing");
    vid.pause();
    RotatorSliderSelector.royalSlider('startAutoPlay');
    thisObj.closest(".fullsize-bg-image").find(".vid-mute-unmute").css('display', 'none');

}

/* Video Mute Unmute */
function unmuteVid(obj) {
    var thisObj = $(obj);
    var vid = thisObj.closest(".fullsize-bg-image").find("video").get(0);
    //if (!vid.paused) { 
    thisObj.closest(".fullsize-bg-image").addClass("vid-muteenable");
    vid.muted = false;
    //} else { alert("not playing")}
}
function muteVid(obj) {
    var thisObj = $(obj);
    var vid = thisObj.closest(".fullsize-bg-image").find("video").get(0);
    thisObj.closest(".fullsize-bg-image").removeClass("vid-muteenable");
    vid.muted = true;
}

function videoonOneSlide(RotatorSliderObj) {
    var getParent = null;

    if ($FullRotatorSlider.length) {
        getParent = $FullRotatorSlider.selector;
    }

    else if ($MultiItemRotatorSlider.length) {
        getParent = $MultiItemRotatorSlider.selector;
    }

    if (RotatorSliderObj.numSlides == 1) {
        if (($(getParent + ' .slider-item').length == 1 && $(getParent + ' .video-player-div').length == 1) && (getParent != $MultiItemRotatorSlider.selector)) {
            var videofirst = $('.video-player-div');
            var checkvideo = videofirst.find("video").get(0);
            checkvideo.play();
            videofirst.closest(".fullsize-bg-image").addClass("vid-playing");
            videofirst.closest(".fullsize-bg-image").find(".vid-mute-unmute").css('display', 'block');
            if (iPadAndroid) {
                videofirst.closest(".fullsize-bg-image").find("video[poster]").css({ "object-fit": "cover", "width": "", "height": "" });
                videofirst.closest(".fullsize-bg-image").find("video").css({ "object-fit": "cover", "width": "", "height": "" });
            }
        }
        $('.rsBullets .rsNavItem.rsBullet').css('visibility', 'hidden');
        $('.rsArrow ').css('visibility', 'hidden');
    }
}
$(document).ready(function () {
    if (isWebKit) {
        if (isEdge) {
            $("body").addClass("edge-browser");
        }
        else {
            $("body").removeClass("edge-browser");
        }
    } else {
        $("body").removeClass("edge-browser");
    }

    var callTruncate = function () {
        truncate('news-item');
        truncate('img-item');
        truncate('lookbook-item');
        truncate('product-item');
        truncate('athletes-item');
    };
    var respond = false, fonts = false;

    var dotDotIe = function () {
        if (fonts && respond) {
            callTruncate();
        }
    };

    if ($('html').hasClass('lt-ie9')) {
        if ($('html').hasClass('respondReady')) {
            respond = true;
            dotDotIe();
        } else {
            $(document).on('respondReady', function () {
                respond = true;
                dotDotIe();
            });
        }
        if ($('html').hasClass('fontsLoaded')) {
            fonts = true;
            dotDotIe();
        } else {
            $('html').on('fontsLoaded', function () {
                fonts = true;
                dotDotIe();
            });
        }
    } else {
        if ($('html').hasClass('fontsLoaded')) {
            callTruncate();
        } else {
            $('html').on('fontsLoaded', function () {
                callTruncate();
            });
        }
    }

    //$(".cookies-message").cookiesDisclaimer();
    $("[data-culture-preference-cookie-name]").cultureSelector();

});

function menuopendesicion(e) {
    e.preventDefault();
    e.stopPropagation();
    $('body').toggleClass('menu-opened');


    $('.send-wrapper').removeClass('fixed-panel');


    if ($(this).hasClass('mobile-search-icon') && $('body').hasClass('menu-opened')) {
        $search.focus();
    }

    $('.full-wrapper').one('click touchstart', function () {
        if ($('body').hasClass('menu-opened')) {
            $('body').removeClass('menu-opened');
            $('.send-wrapper').addClass('fixed-panel');
        }
        return false;
    });
}

var getDeviceType = function () {
    return $('html').css('font-family').replace(/"/g, '');
};

function truncate(item) {
    var $item = $('.' + item);
    var arrayCulture = McConfig.DotDotDotApplyByLetter.split(',');
    var changestoletter = false;

    arrayCulture.forEach(function (item) {
        if (item == UserSession.Locale)
            changestoletter = true;
    });

    if ($item.length > 0) {
        $item.each(function () {
            var $self = $(this),
                $header = $self.find('.grid-context .context-header'),
                $content = $self.find('p');

            var dot = function () {
                $header.css('height', '');
                var headerSize = $header.text().split(' ').length;


                $header.dotdotdot({
                    watch: true,
                    wrap: changestoletter === true ? 'letter' : headerSize == 1 ? 'letter' : 'word',
                    fallbackToLetter: true,
                    callback: function (isTruncated, orgContent) {
                        var listItem = $header.parents('li:first');

                        if (!isTruncated) {
                            var $linkHeight = $header.find('a').outerHeight(),
                                $linkLineHeight = parseInt($header.find('a').css('line-height'), 10);
                            if ($linkLineHeight > $linkHeight) {
                                $header.height($linkLineHeight);
                            } else {
                                $header.height($linkHeight);
                            }
                        }
                        if (item != 'news-item') {
                            if (listItem.css('clear') == 'both') {
                                listItem = listItem.prev('li');
                                updateListRow(listItem);
                            } else {
                                if (item !== "athletes-item") {
                                    if (!listItem.next('li').length) {
                                        updateListRow(listItem);
                                    }
                                }
                            }
                        }

                        if ($content.length > 0) {
                            var contentSize = $content.text().split(' ').length;
                            var pressReleaseHeight = $self.find('.category-marker').length ? ($self.find('.category-marker').height() + 10) : 0;

                            /*TNMMCLITE-67 start*/
                            if ($($($(this).parent()).parent()).parent().hasClass('athletes-item')) {
                                $content.css({
                                    'height': 'auto'
                                });

                                $content.css(
                                    {
                                        'margin-top': $(this).height() + pressReleaseHeight,
                                        'visibility': 'visible',
                                        'height': $content.outerHeight() + 'px',
                                        'max-height': (95 - $(this).height()) + 'px'
                                    }
                                ).dotdotdot({
                                    watch: true,
                                    wrap: changestoletter === true ? 'letter' : contentSize == 1 ? 'letter' : 'word',
                                    fallbackToLetter: true
                                });
                                var deviceType = getDeviceType();
                                if (deviceType != 'mobile') {
                                    $content.parent().css(
                                        {
                                            'max-height': '95px',
                                            'height': ($content.outerHeight() + parseInt($content.css("margin-top").replace('px', ''))) + 'px'
                                        });
                                }
                            }
                            /*TNMMCLITE-67 end*/
                            else {
                                $content.css(
                                    {
                                        'margin-top': $(this).height() + pressReleaseHeight,
                                        'visibility': 'visible',
                                        'height': ($content.parents('.grid-context:first').height() - $(this).height()) + 'px'
                                    }
                                ).dotdotdot({
                                    watch: true,
                                    wrap: changestoletter === true ? 'letter' : contentSize == 1 ? 'letter' : 'word',
                                    fallbackToLetter: true
                                });
                            }
                        }
                    }
                });
            };
            dot();

            var refreshPlugin = function () {
                $header.trigger('destroy');
                $content.trigger('destroy');
                dot();
            };

            $(document).on('device.change', function () {
                refreshPlugin();
            });

            $(window).bind('orientationchange', function () {
                refreshPlugin();
            });
        });
    }
}
function updateListRow(listItem) {
    var tmpHeadersArray = [],
        tmpHeader,
        maxHeaderHeight = 0;
    while (listItem.length && listItem.css('clear') == 'none') {
        tmpHeader = listItem.find('.context-header');
        if (maxHeaderHeight < tmpHeader.height()) {
            maxHeaderHeight = tmpHeader.height();
        }
        tmpHeadersArray.push(tmpHeader);
        listItem = listItem.prev('li');
    }
    if (listItem.length) {
        tmpHeader = listItem.find('.context-header');
        if (maxHeaderHeight < tmpHeader.height()) {
            maxHeaderHeight = tmpHeader.height();
        }
        tmpHeadersArray.push(tmpHeader);
    }
    for (var i = 0, j; j = tmpHeadersArray[i]; i++) {
        if (j.height() < maxHeaderHeight) {
            j.css('min-height', maxHeaderHeight + 'px');
        }
    }
};;
(function ($, window, undefined) {
    'use strict';

    var $doc = $(document),
        Modernizr = window.Modernizr;
    /*Variables*/

    var userAgent = (navigator.userAgent || navigator.vendor || window.opera).toLowerCase();
    var iosDevices = (/iPad|iPhone|iPod|iTouch/.test(navigator.userAgent) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints && navigator.maxTouchPoints > 1) && !window.MSStream;
    var iPadAndroid = userAgent.match(/ipad/i) || userAgent.match(/iphone/i) || userAgent.match(/iPod/i) || userAgent.match(/itouch/i) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints && navigator.maxTouchPoints > 1 || userAgent.match(/android/i) || false;
    var iMacSystem = userAgent.match(/mac/i) || false;
    var iMacSafari = userAgent.match(/safari/i) && userAgent.match(/mac/i) || false;
    var isWebKit = userAgent.match(/webkit/i) || false;
    var isEdge = userAgent.match(/edge/i) || false;
    var isWindowsPhone = /windows phone/i.test(navigator.userAgent.toLowerCase());


    $(document).ready(function () {
        // Add Class for iOS-Android Devices
        if (iPadAndroid) {
            $("html").addClass("IpadAndroidHTML");
            $("body").addClass("IpadAndroidBODY");
        }
        if (iMacSystem) {
            if (isWebKit && !iPadAndroid) {
                $("body").addClass("macSafariChrome");
            }
        }

        $.fn.foundationAlerts ? $doc.foundationAlerts() : null;
        $.fn.foundationButtons ? $doc.foundationButtons() : null;
        $.fn.foundationAccordion ? $doc.foundationAccordion() : null;
        $.fn.foundationNavigation ? $doc.foundationNavigation() : null;
        //$.fn.foundationTopBar ? $doc.foundationTopBar() : null;
        $.fn.foundationCustomForms ? $doc.foundationCustomForms() : null;
        $.fn.foundationMediaQueryViewer ? $doc.foundationMediaQueryViewer() : null;
        $.fn.foundationTabs ? $doc.foundationTabs({
            callback: $.foundation.customForms.appendCustomMarkup
        }) : null;
        $.fn.foundationTooltips ? $doc.foundationTooltips() : null;
        $.fn.foundationMagellan ? $doc.foundationMagellan() : null;
        $.fn.foundationClearing ? $doc.foundationClearing() : null;


        //Disabled for MVC. This plugin does not work with jquery.validate.js
        //https://github.com/zurb/foundation/issues/747
        //$('input, textarea').placeholder();

    });

    $.fn.iOSversion = function () {
        if (/iP(hone|od|ad)/.test(navigator.platform)) {
            var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
            return parseInt(v[1], 10);
            // return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
        } else {
            return false;
        }
    };

    // UNCOMMENT THE LINE YOU WANT BELOW IF YOU WANT IE8 SUPPORT AND ARE USING .block-grids
    // $('.block-grid.two-up>li:nth-child(2n+1)').css({clear: 'both'});
    // $('.block-grid.three-up>li:nth-child(3n+1)').css({clear: 'both'});
    // $('.block-grid.four-up>li:nth-child(4n+1)').css({clear: 'both'});
    // $('.block-grid.five-up>li:nth-child(5n+1)').css({clear: 'both'});

    // Hide address bar on mobile devices (except if #hash present, so we don't mess up deep linking).
    if (Modernizr.touch && !window.location.hash) {
        $(window).load(function () {
            setTimeout(function () {
                window.scrollTo(0, 1);
            }, 0);
        });
    }
    var device = function () {
        $(document).ready(function () {
            var currDeviceType = $('html').css('font-family').replace(new RegExp('"', 'g'), '');

            var typeTrigger = function (event, deviceType) {
                if (deviceType == 'desktop') {
                    $(document).trigger(event, 'desktop');
                    window.device = 'desktop';
                    $(".global-news .global-news-items li").show();
                }
                if (deviceType == 'tablet') {
                    $(document).trigger(event, 'tablet');
                    window.device = 'tablet';
                    $(".global-news .global-news-items li:last").hide().prev("li").hide();
                }
                if (deviceType == 'mobile') {
                    window.device = 'mobile';
                    $(document).trigger(event, 'mobile');
                }
            };

            typeTrigger('device.load', currDeviceType);

            $(window).on('resize', function () {
                var temDeviceType = $('html').css('font-family');
                if (currDeviceType != temDeviceType) {
                    typeTrigger('device.change', temDeviceType);
                    currDeviceType = temDeviceType;
                }
            });
        });
    };

    if ($('html').hasClass('lt-ie9')) {
        if ($('html').hasClass('respondReady')) {
            device();
        } else {
            $(document).on('respondReady', function () {
                device();
            });
        }
    } else {
        $(window).load(function () {
            device();
        });
    }



    var controller = function (func) {
        $(document).ready(function () {
            func();
        });
        $(window).on('resize', function () {
            func();
        });
        $(window).bind('orientationchange', function () {
            func();
        });
    };

    $(document).ready(function () {

        $('.youtube-wrapper').fitVids();
        $('input, textarea').placeholder();

        $('.search').find('input').addClass("search-placeholder");
        setTimeout(function () {
            $(".gsc-input-active").find("input").keyup(function () {
                if ($(this).val() == "") {
                    $(".gsc-input-active").find("input").placeholder();
                    $(".gsc-input-active").find("input").addClass("search-placeholder");
                }
            });
        }, 1000);

        $('ul.lookbooks-items .lookbook-footer .date, ul.lookbooks-items .lookbook-footer .country').dotdotdot({
            watch: true,
            wrap: 'word',
            fallbackToLetter: true
        });
        if ($('.contact-us-wrapper').length == 0) {
            $('.about-this-newsroom-description').css('border-bottom', 'none');
        }

        if ($('html').hasClass("touch")) {
            //$('.media-for-story .download-all').hide();
            //$('.amp-wrapper .download-all').parent().hide();
            //$('.received .download-all').hide();
            //$('.mediacart .download-all').hide();
            //$('#asset-amp-popup .download-all').parent().hide();
            if ($('.mobile-send-media-cart-wrapper').length <= 0)
                $('.mediacart .actions').show();
        }

        $('.global-news .global-news-items p').dotdotdot({
            watch: true,
            wrap: 'word',
            fallbackToLetter: true
        });


        $('.downloadFile').click(function () {
            
            var docUrl = $(this).attr("data-href");
            var refUrl = window.location.href;
            var originUrl = window.location.origin;
            var Userip = $(this).attr("data-ip");
            var UserCountry = $(this).attr("data-country");
            var mrShortName = McConfig.MediaRoomShortName;
            var assetid = $(this).attr("data-assetid");
            var title = $(this).find('.title').text();
            var Culture = $(this).find('.lang').text();
            var LiveDate = $(this).attr('data-live-date');
            var param = {
                docURL: docUrl, refURL: refUrl, IP: Userip, country: UserCountry, mrShortName: mrShortName, assetid: assetid
            };

            $.ajax({
                url: McConfig.DownloadServiceBaseUrl + "DirectDownloadService/LogDocumentAssetDownloadInfo",
                data: param,
                type: 'POST',
                async: false,
                success: function (response) {
                    if (mrShortName.toLowerCase() !== 'gmem' && mrShortName.toLowerCase() !== 'gnis') {

                        var link = document.createElement('a');
                        link.href = docUrl;
                        link.download = docUrl.split('/').pop();
                        link.target = "_blank";
                        document.body.appendChild(link);
                        link.click();
                    }
                    else {
                        var filename = GenerateFilename(Culture, title, LiveDate, docUrl.split('/').pop());
                        SaveAsFile(docUrl, filename);
                    }
                },
                error: function (xhr, err) {
                    alert("error: " + xhr.responseText);
                }
            });

        });

        function GenerateFilename(Culture, Title, LiveDate, Filename) {
            var extention = Filename.split('.').pop();
            var newdate = "";
            if (($('#hdnStoryDate').length > 0 && $('#hdnStoryDate').val() !== '') || (LiveDate !== '')) {
                var dateObj = new Date();
                if ($('#hdnStoryDate').length > 0 && $('#hdnStoryDate').val() !== '') {
                    dateObj = new Date($('#hdnStoryDate').val());
                }
                else
                {
                    dateObj = new Date(LiveDate);
                }

                var month = pad(dateObj.getMonth() + 1); //months from 1-12
                var day = pad(dateObj.getDate());
                var year = pad(dateObj.getYear()).toString().substr(-2);
                newdate =  "_" + year + month + day;
            }
            Filename = Title;
            if (Culture !== '') {
                if (Culture.toLowerCase() === 'en') {
                    Filename = 'PR_' + Filename;
                }
                else if (Culture.toLowerCase() === 'de' || Culture.toLowerCase() === 'ch') {
                    Filename = 'PM_' + Filename;
                }
            }
            Filename = Filename + newdate + "." + extention;
            return Filename.replace(/[/\\?%*:|"<>]/g, '-');
        }

        function pad(numb) {
            return (numb < 10 ? '0' : '') + numb;
        }

        function SaveAsFile(URLToPDF, Filename) {
            var oReq = new XMLHttpRequest();
            // The Endpoint of your server 
            // Configure XMLHttpRequest
            oReq.open("GET", URLToPDF, true);

            // Important to use the blob response type
            oReq.responseType = "blob";

            // When the file request finishes
            // Is up to you, the configuration for error events etc.
            oReq.onload = function () {
                // Once the file is downloaded, open a new window with the PDF
                // Remember to allow the POP-UPS in your browser
                var file = new Blob([oReq.response]);

                // Generate file download directly in the browser !
                saveAs(file, Filename);
            };

            oReq.send();
        }
        //Fix for related and highlighted links on iPad
        function openRelatedLinks() {
            var touchY = 0;
            var moved;
            var element;
            $('.related ul li a').on('touchmove', function (event) {
                var rate = event.originalEvent.touches[0].pageY - touchY;
                if (event.originalEvent && !(rate < 10 && rate > -10)) {
                    moved = true;
                }
            });

            $('.related ul li a').on('touchstart', function (event) {
                moved = false;
                element = $(this);
                touchY = event.originalEvent.pageY;
            });

            $('.related ul li a').on('touchend', function (event) {
                if (!moved) {
                    var link = $(element).attr('href');
                    window.location.href = link;
                    moved = false;
                }
            });
        }
        openRelatedLinks();

    });
})(jQuery, this);

$(function () {
    $("img.lazy").unveil();
    $("html,body").on('scroll', function () {
        $(window).resize()
    });
});

$(document).ajaxStop(function () {
    $("img.lazy").unveil();
    $("img.lazy").removeClass("lazy");
});

$(document).ready(function () {
    if ($(".amp-height").length) {
        amp_height_init();
    }
    $(window).resize(function () {
        if ($(".amp-height").length) {
            amp_height_init();
        }

    });
});

function amp_height_init() {
    if ($('body').hasClass('devampv2')) {
        setTimeout(function () {
            var carousel_label_height = 0;
            if ($(".rsGCaption").length) {
                carousel_label_height = $(".rsGCaption").outerHeight(true);
            }
            img_height = $(".player-place-holder").height() + carousel_label_height;
            $(".amp-height").height(img_height);
        }, 300);
    } else {
        //$(".player-place-holder").css({
        //    position: "absolute"
        //});
        $(".player-place-holder").hide();
    }
}
function getDateInYears(years) {
    var date = new Date();
    return new Date(date.setFullYear(date.getFullYear() + years));
}
function AcceptCookies() {
    $('.dev-cookies-message').slideUp(600);
    $('body').removeClass('cookie-disclaimer-shown');
    
    var marketingCookie = 'optMark';
    var functionalCookie = 'optFunc';
    var requiredCookie = 'optReq';
    var date = getDateInYears(2);
    var cookiesamesite = $("input:hidden[name='McConfig.FrontendSameSite']").val();
    var cookiesecure = $("input:hidden[name='McConfig.FrontendSecure']").val();
    var isCookieConsentAcceptedCookieName = McConfig.IsCookieConsentAcceptedCookieName;
    document.cookie = marketingCookie + "=true;" + 365 + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";
    document.cookie = functionalCookie + "=true;" + 365 + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";
    document.cookie = requiredCookie + "=true;" + date + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";
    document.cookie = isCookieConsentAcceptedCookieName + "=true;" + date + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";

    /*Redraw DOM (fix for iPad)*/
    $('.detail-content-wpapper').hide();
    setTimeout(function () {
        $('.detail-content-wpapper').show();
    }, 0);

    var href = document.location.href;
    var lastPathSegment = href.substr(href.lastIndexOf('/') + 1);

    //To reload the page and load scripts as per settings applied
    if (lastPathSegment.toLowerCase() == 'cookiepolicy') {
        location.reload();
    }
    else if ($('.social-bar').length > 0 || $('.addthis-button').length > 0) {
        $('head').append(addThisConfigInternal.toString());
        var s = document.createElement("script");
        s.type = "text/javascript";
        s.src = addThisScriptUrl;
        $("head").append(s);
        $('.social-bar a').off('click');
        $('.addthis-button').off('click');
        $('.social-bar a').on('click', AddThisHelper.UpdateWindowShareData);
    }
};
(function ($) {
    var zIndex = parseInt($('input[name="McConfig.ZIndexPopUp"]').val());
    if (isNaN(zIndex)) {
        zIndex = 2000;
    }

    var zIndexTopDown = parseInt($('input[name="McConfig.ZIndexTopDownPopUp1"]').val());
    if (isNaN(zIndexTopDown)) {
        zIndexTopDown = 2000;
    }

    $.fn.animateType = function (action, callback) {
        var el = this;
        if ($('html').css('font-family') != 'desktop') {
            if (action == 'open') {
                el.show(0, callback);
            } else {
                el.hide(0, callback);
            }
        } else {
            if (action == 'open') {
                el.fadeIn(400, callback);
            } else {
                el.fadeOut(400, callback);
            }
        }
    };

    $.fn.closePopup = function (options) {
        options = options || {};
        var id = $(this).attr('id');

        $('[popup="' + id + '"]').unbind('click.popup');

        zIndex -= 2;
        $('body').removeClass('popup-opened');

        $(this).animateType('close', function () {
            $('.popup-bg[popup="' + id + '"]').remove();
            if ($.isFunction(options.closed)) {
                options.closed();
            }
        });

    };

    $.fn.openPopup = function (options) {        
        var ua = navigator.userAgent;
        if (ua.match(/iPad/i)) {
            if ($('body').hasClass('menu-opened')) {
                $('body').removeClass('menu-opened');
            }
        }


        options = options || {};
        var self = this;

        if ($.isFunction(options.beforeOpen)) {
            options.beforeOpen(self);
        }
        var css = {},
            width = this.outerWidth(),
            height = this.outerHeight(),
            wHeight = $(window).height(),
            id = this.attr('id'),
            bg = '<div class="popup-bg" popup="' + id + '" style="z-index: ' + (zIndex + 1) + '"></div>';

        $('body').append(bg);
        $('body').addClass('popup-opened');

        this.find('.popup-close').attr('popup', id);

        zIndex += 2;
        var top = $(document).scrollTop();
        if (options.absolute) {
            top += ($(window).height() - height) / 2;

            if (top <= 0) {
                top = 20;
            }
        }
        if (height > wHeight || options.absolute) {
            css = {
                'left': '50%',
                'margin-left': -width / 2 + 'px',
                'top': top,
                'position': 'absolute',
                'z-index': zIndex
            };
        } else {
            css = {
                'left': '50%',
                'margin-left': -width / 2 + 'px',
                'top': '50%',
                'margin-top': -height / 2 + 'px',
                'position': 'fixed',
                'z-index': zIndex
            };
        }

        this.attr('style', '').css(css).animateType('open', function () {
            if ($.isFunction(options.opened)) {
                options.opened(self);
            }
            var PopupName = GetPopNameById(id);
            if (PopupName != "") {                
                var isCookieEnabled = JSON.parse($.cookie('optFunc'));
                if (isCookieEnabled) {
                    if (window.ga && ga.create) {
                        //ga('set', 'anonymizeIp', true);
                        ga('send', {
                            hitType: 'pageview',
                            page: (location.pathname + "?modal=" + PopupName)
                        });
                        var GA4Key = $('#hdnGA4Id').length > 0 ? $('#hdnGA4Id').val() : '';
                        if (GA4Key != '') {
                            gtag('config', GA4Key, {
                                'page_path': location.pathname + "?modal=" + PopupName
                            });
                        }
                    }
                }
            }
        });

        var close = function (popup) {
            zIndex -= 2;
            $('body').removeClass('popup-opened');
            $('#' + popup).animateType('close', function () {
                $('.popup-bg[popup="' + popup + '"]').remove();
                if ($.isFunction(options.closed)) {
                    options.closed(zIndex);
                }
            });
        };

        $(this).find('.popup-close').on('click.popup', function () {
            $('[popup="' + id + '"]').unbind('click.popup');

            var popup = $(this).attr('popup');
            close(popup);
            $('#asset-amp-popup').removeClass('has-carousel');
        });

        $('.popup-bg[popup="' + $(this).attr('id') + '"]').on('click.popup', function () {
            var popup = $(this).attr('popup');
            if ($('#' + popup).is(':visible') && $('#' + popup).css('opacity') == 1) {
                $('[popup="' + id + '"]').unbind('click.popup');
                close(popup);
            }
        });
    };


    function GetPopNameById(id) {        
        switch (id) {          
            case "asset-share-popup":
                return "AssetSharePopup";
            case "contact-inquiry-popup":
                return "ContactInquiryPopup";
            case "AccountEdit-popup":
                return "AccountEditPopup";
            case "Logreg-popup":
                return "LogregPopup";
            case "forgotPassword-popup":
                return "ForgotPasswordPopup";
            case "activationFailed-popup":
                return "ActivationFailedPopup";
            case "register-popup":
                return "RegistrationStep1Popup";
            case "register2-popup":
                return "RegistrationStep2Popup";
            case "register4 - popup":
                return "Register4Popup";
            case "AccountSummary-popup":
                return "AccountSummaryPopup";
            case "trynewemail-popup":
                return "TryNewEmailPopup";            
            case "accessDenied-popup":
                return "AccessDeniedPopup";
            case "logreg-spinner":
            case "logreg-loading-icon":
                return "";
            case "download-additional-steps-required-popup":
                return "DownloadAdditionalStepsPopup";
            case "download-format-options-popup":
                return "DownloadFormatOptionsPopup";
            case "multiple-assets-download-tell-us-about-you-popup":
                return "TellUsAboutYouForMultipleAsset";
            case "single-asset-download-popup":
                return "SingleAssetDownloadPopup";
            case "asset-download-usage-restrictions-popup":
                return "AssetDownloadUsageRestrictionsPopup";
            case "asset-download-tell-us-about-you-popup":
                return "TellUsAboutYouForSingleAsset";
            case "copy-code-popup":
                return "CopyCodePopup";
            case "advance-search-popup":
                return "AdvanceSearchPopup";
            default:
                return id;
        }
    }

    $.fn.openTopDownMenu = function (options) {
        var ua = navigator.userAgent;
        if (ua.match(/iPad/i)) {
            if ($('body').hasClass('menu-opened')) {
                $('body').removeClass('menu-opened');
            }
        }

        options = options || {};
        var self = this;

        if ($.isFunction(options.beforeOpen)) {
            options.beforeOpen(self);
        }
        var css = {},
            width = this.outerWidth(),
            height = this.outerHeight(),
            wHeight = $(window).height(),
            id = this.attr('id'),
            bg = '<div class="popup-bg topdown-menu" popup="' + id + '" style="z-index: ' + (zIndexTopDown + 1) + '"></div>';

        $('body').append(bg);
        $('body').addClass('popup-opened');

        zIndexTopDown += 2;
        if (options.absolute) {
            css = {
                'left': '0',
                'margin-left': '0',
                'position': 'absolute',
                'z-index': zIndexTopDown,
                'width': '100% !important',
                'top': options.top
            };
        }

        this.attr('style', '').css(css).animateType('open', function () {
            if ($.isFunction(options.opened)) {
                options.opened(self);
            }
        });

        var close = function (popup) {
            zIndexTopDown -= 2;
            $('body').removeClass('popup-opened');
            $('#' + popup).animateType('close', function () {
                $('.popup-bg[popup="' + popup + '"]').remove();
                if ($.isFunction(options.closed)) {
                    options.closed(zIndexTopDown);
                }
            });
        };

        $('.popup-bg[popup="' + $(this).attr('id') + '"]').on('click.popup', function () {
            var popup = $(this).attr('popup');
            if ($('#' + popup).is(':visible') /*&& $('#' + popup).css('opacity') == 1*/ ) {
                $('[popup="' + id + '"]').unbind('click.popup');
                close(popup);
            }
        });
    };
})(jQuery);;
(function($) {
    $.fn.extend({
        amp: function(filter) {
            var ampElements = $(this).find('.amp');
            if (filter != null) {
                ampElements = ampElements.filter(filter);
            }

            return ampElements;
        }
    });

    var ampPopupOpeningEventName = 'ampPopupOpening',
        ampPopupClosingEventName = 'ampPopupClosing',
        ampSlideChangingEventName = 'ampSlideChanging',
        ampAssetDataChangedEventName = 'ampAssetDataChanged';

    $.amp = {
        popupOpening: function(hide) {
            $(window).trigger(ampPopupOpeningEventName, hide);
        },
        onPopupOpening: function(callback) {
            $(window).on(ampPopupOpeningEventName, callback);
        },
        popupClosing: function(popupZIndex) {
            $(window).trigger(ampPopupClosingEventName, popupZIndex);
        },
        onPopupClosing: function(callback) {
            $(window).on(ampPopupClosingEventName, callback);
        },
        slideChanging: function() {
            $(window).trigger(ampSlideChangingEventName);
        },
        onSlideChanging: function(callback) {
            $(window).on(ampSlideChangingEventName, callback);
        },
        assetDataChanged: function(element, data) {
            $(window).trigger(ampAssetDataChangedEventName, [element, data]);
        },
        onAssetDataChanged: function(callback) {
            $(window).on(ampAssetDataChangedEventName, callback);
        }
    };
})(jQuery);;
(function ($) {
    var addThisToolboxFilterName = '.addthis_toolbox';
    var ampBtnMoreInfoFilterName = '.amp-icons-btn-more-info';
    var ampBtnDownloadFilterName = '.amp-icons-btn-download';
    var ampBtnDownloadMobileFilterName = '.amp-icons-btn-download-mobile';
    var ampBtnMediaCartFilterName = '.media-cart-btn-wrapper';
    var ampBtnShareMobile = '.amp-icons-btn-share-mobile';
    
    $.fn.extend({
        addThisToolbox: function() {
            return $(this).find(addThisToolboxFilterName);
        },
        addThisToolboxClosest: function () {
            return $(this).closest(addThisToolboxFilterName);
        },
        ampBtnMoreInfo: function () {
            return $(this).find(ampBtnMoreInfoFilterName);
        },
        ampBtnDownload: function () {
            return $(this).find(ampBtnDownloadFilterName);
        },
        ampBtnMediaCart: function () {
            return $(this).find(ampBtnMediaCartFilterName);
        },
        ampBtnDownloadMobile: function () {
            return $(this).find(ampBtnDownloadMobileFilterName);
        },   
    ampBtnShareMobile: function () {
        return $(this).find(ampBtnShareMobile);
    }
    });
})(jQuery);;
(function($) {
    $.fn.extend({
        downloadButtons: function() {
            return $(this).find('.download-buttons, .download-buttons-mobile');
        },
        downloadButton: function() {
            return $(this).find('.download');
        },
        moreInfoButton: function() {
            return $(this).find('.more-info');
        },
        shareButton: function() {
            return $(this).find('.share');
        },
        galleryButton: function () {
            return $(this).find('.ampGallery');
        },
        carouselButton: function () {
            return $(this).find('.ampCarouselBtn');
        },
        galleryPreviewButton: function () {
            return $(this).find('.previewAsset');
        }
    });
})(jQuery);;
$(document).ready(function () {
    var ampElementId = 'assetAmpHolderForDetails';

    var ampElements = function() {
        return $(document).amp('.detail-amp');
    };

    ampElements().downloadButtons().moreInfoButton().on('click', function() {
        var currentAssetData = AmpHelper.GetDataForCurrentAsset(ampElementId);
        AmpHelper.ShowAssetMoreInfoPopup(ampElementId, currentAssetData);
    });
    
    ampElements().shareButton().on('click', function () {
        var currentAssetData = AmpHelper.GetDataForCurrentAsset(ampElementId);
        AmpHelper.ShowAssetSharePopup(ampElementId, currentAssetData);
    });

    var getAssetGuid = function() {
        var assetData = $(document).serverAssetData();
        return assetData != null
            ? assetData.assetGuid
            : null;
    };

    if (McConfig.IsDefaultAmp == "true") {
        AmpHelper.InitAmp(ampElements(), ampElementId, null, getAssetGuid, false, false);
    }
    else {
        var ampMode = "c";
        var popupMode = "a";
        var groupName = "";
        AmpHelper.InitAmp(ampElements(), ampElementId, null, getAssetGuid, false, false, ampMode, popupMode, groupName, true);
    }
});;
//var AssetsBehaviours = {};

var Assets = {
    BehaviourUrl: $('input[name="Asset.BehaviourUrl"]').val()
};

if (jQuery.isEmptyObject(AssetsBehaviours)) {
    $.ajax({
        url: Assets.BehaviourUrl,
        dataType: 'json',
        traditional: true,

        error: function (jqXHR, textStatus, error) {
            locked = false;
           // updateTip(phrases.error, settings.containerObject, 'completed', settings.autoCloseDuration, true);
        },
        success: function (data) {
            AssetsBehaviours = data;
        }
    });
}


//function GetAssetBehaviourProperty(behaviour, assetType, property, appliesBehaviourName) {
//    var propertyValue = true;
//    var isPropertyFound = false;
//    //$.each(AssetsBehaviours.behaviours, function (i, behaviours) {
//        var Applies = AssetsBehaviours.behaviours[behaviour].AppliesDictionary._Applies;
//        $.each(Applies, function (i, applies) {
          
//            if (i == appliesBehaviourName) {
//                $.each(GetAssetDictionary(behaviour, appliesBehaviourName).AssetDictionary, function (i, assets) {
//                    $.each(assets, function (i, assetprop) {
//                        switch (assetType) {
//                            case i:
//                                propertyValue = property.indexOf('.') > 0 ? GetChildPropertyData(assets[i], property.split(".")[0], property.split(".")[1]) :
//                                                                        GetPropertyData(assets[i], property);
//                                isPropertyFound = true;
//                                return false;
//                        };
//                    });

//                    if (isPropertyFound == false) {
//                        propertyValue = GetPropertyData(assets["All"], property);
//                        return false;
//                    }

//                });
//            }
//        //});
//        return false;
//    });
//    return propertyValue;
//}



function GetAssetBehaviourProperty(behaviour, assetType, property, appliesBehaviourName) {
    var propertyValue = true;
    var isPropertyFound = false;
    var appliesBehaviour = AppliesBehaviour(behaviour);
    $.each(appliesBehaviour, function (i, applies) {

        if (i == appliesBehaviourName) {

            $.each(applies.AssetDictionary, function (i, assets) {
                propertyValue = GetPropertyValue(assets, assetType, i, property);

                if (propertyValue == null) {
                    propertyValue = IsVisible(assets["All"], property,null);
                    return false;
                }

            });
            return false;
        }
      
      
    });
    return propertyValue;
}

function AppliesBehaviour(behaviour) {
    
 return  AssetsBehaviours.behaviours[behaviour].AppliesDictionary._Applies;
}

function GetPropertyValue(assets,assetType, i, property)
{
    var propertyValue = null;
    $.each(assets, function (i, assetprop) {

        if (assetType == i) {
            propertyValue = property.indexOf('.') > 0 ? IsVisible(assets[i], property.split(".")[0], property.split(".")[1]) :
                                                IsVisible(assets[i], property,null);
            return false;
        }
        
    });
    return propertyValue;
}

//function IsVisible(assetprop, parentProperty,childProperty) {
//    var propValue = true;
//    $.each(assetprop, function (j, prop) {
//        if (j == property) {
//            propValue = (property == "ShareLinks" ? prop.AllLinks.Show : prop.Show);
//            return false;
//        }

//    });
//    return propValue;
//}

function IsVisible(assetprop, parentproperty, childproperty) {

    var isAllLinksVisible = false;
    var propValue = true;
    $.each(assetprop, function (j, prop) {

        if (j == parentproperty) {
            if (childproperty != null)
            {
                $.each(prop, function (p, child) {
                    if (child != null) {
                        if (p == "AllLinks") {
                            isAllLinksVisible = child.Show;
                        }
                        if (p == childproperty) {
                            propValue = child.Show && isAllLinksVisible;
                            return false;
                        }
                    }
                });
            }
            else
            {
                if (j == parentproperty) {
                    if (parentproperty == "ShareLinks") {
                        if (typeof prop.AllLinks === 'undefined' || prop.AllLinks == null) {
                            propValue = true;
                        }
                        else {
                            propValue = prop.AllLinks.Show;
                        }
                    }
                    else {
                        propValue = prop.Show;
                    }
                    //propValue = (parentproperty == "ShareLinks" ? prop.AllLinks.Show : prop.Show);
                    return false;
                }
            }
        }
    });
    return propValue;
}

function GetAssetDictionary(behaviour,appliesBehaviourName)
{
    var assetDetail = {};

   // $.each(AssetsBehaviours.behaviours, function (i, behaviours) {
        var Applies = AssetsBehaviours.behaviours[behaviour].AppliesDictionary._Applies;
        $.each(Applies, function (i, applies) {
           
            if (i == appliesBehaviourName) {
                assetDetail = Applies[i];
                return false;
            }
        });
    //});
    return assetDetail;
}



;

$(document).ready(function () {    
    var ampElementId = 'assetAmpHolder';

    var ampElements = function () {
        return $(document).amp('#asset-amp-popup');
    };
    var showcasedecisionImagesAndVideosStorydetailItems = $(document).showcasedecisionImagesAndVideosStorydetailItems();
    if (showcasedecisionImagesAndVideosStorydetailItems) {
        showcasedecisionImagesAndVideosStorydetailItems.find('.story-detail-link').on('click', function (e) {
            e.preventDefault();
            window.location.href = $(this).closest('.story-detail-open').find('.story-detail-link').attr('href');
        });
        showcasedecisionImagesAndVideosStorydetailItems.find('.asset-count').on('click', function (e) {
            e.preventDefault();
            window.location.href = $(this).closest('.story-detail-open').find('.story-detail-link').attr('href');
        });
        showcasedecisionImagesAndVideosStorydetailItems.find('.image-wrapper img').on('touchend', function (e) {
            e.preventDefault();
            window.location.href = $(this).closest('.story-detail-open').find('.story-detail-link').attr('href');
        });
        showcasedecisionImagesAndVideosStorydetailItems.find('.grid-context').on('click', function (e) {
            e.preventDefault();
            window.location.href = $(this).closest('.story-detail-open').find('.story-detail-link').attr('href');
        });
        showcasedecisionImagesAndVideosStorydetailItems.find('.grid-context ').on('touchend', function (e) {
            e.preventDefault();
            window.location.href = $(this).closest('.story-detail-open').find('.story-detail-link').attr('href');
        });
    }

    var showcasedecisionImagesAndVideosItems = $(document).showcasedecisionImagesAndVideosItems();
    if (showcasedecisionImagesAndVideosItems) {
        showcasedecisionImagesAndVideosItems.find('.image-wrapper').on('click', function (e) {
            CallShowAmp(this, e);
        });

        showcasedecisionImagesAndVideosItems.find('.image-wrapper img').on('touchend', function (e) {
            CallShowAmp(this, e);
        });
        //TNMMCLITE-668 START
        showcasedecisionImagesAndVideosItems.find('.grid-context').on('click', function (e) {
            CallShowAmp(this, e);
        });
        showcasedecisionImagesAndVideosItems.find('.grid-context ').on('touchend', function (e) {
            CallShowAmp(this, e);
        });
        //TNMMCLITE-668 END
    }

    var showcaseImagesAndVideosItems = $(document).showcaseImagesAndVideosItems();
    if (showcaseImagesAndVideosItems) {
        showcaseImagesAndVideosItems.imgItem().find('.image-wrapper').on('click', function (e) {
           CallShowAmp(this, e);
        });
        showcaseImagesAndVideosItems.imgItem().find('.image-wrapper img').on('touchend', function (e) {
            CallShowAmp(this, e);
        });
        //TNMMCLITE-668 START
        showcaseImagesAndVideosItems.imgItem().find('.grid-context').on('click', function (e) {
            CallShowAmp(this, e);
        });
        showcaseImagesAndVideosItems.imgItem().find('.grid-context ').on('touchend', function (e) {
            CallShowAmp(this, e);
        });
        //TNMMCLITE-668 END
    }

    function CallShowAmp(btn, e) {
        e.preventDefault();
        if ($('#asset-amp-popup').not(':visible')) {
            var storyGuid = $(btn).closest('.img-item.media-type').find('#showcaseAmpStoryGuid').val();
            if (McConfig.IsDefaultAmp == "false") {
                var locale = $(btn).closest('.img-item.media-type').data("story-locale");
                $('input#CurrentShowCaseStoryGuid').data("locale", locale);
            }
            showAmp(storyGuid, null);
        }
    }

    ampElements().downloadButtons().moreInfoButton().on('click', function () {
        if ($(this).hasClass("disabled") == false) {
            var currentAssetData = AmpHelper.GetDataForCurrentAsset(ampElementId);
            if (currentAssetData.assetStatus != "PendingClientApproval") {
                AmpHelper.ShowAssetMoreInfoPopup(ampElementId, currentAssetData);
            }
        }
    });

    ampElements().shareButton().on('click', function () {
        var currentAssetData = AmpHelper.GetDataForCurrentAsset(ampElementId);
        if (currentAssetData.assetStatus != "PendingClientApproval") {
            AmpHelper.ShowAssetSharePopup(ampElementId, currentAssetData);
        }
    });
    var showAmp = function (storyGuid, assetData) {          
        if (storyGuid != null) {
            MediaPanelApi.GetStoryListing(storyGuid, function (data) {
                if (data.rows != undefined) {
                    if (McConfig.IsDefaultAmp == "true") {
                        openAmpPopup(storyGuid, assetData, data.rows.length > 1);
                    }
                    else {
                        openAmpPopup(storyGuid, assetData, false);
                    }
                }
            });
        } else {
            openAmpPopup(storyGuid, assetData, false);
        }
    };

    var openAmpPopup = function (storyGuid, assetData, showCarousel) {        
        var ampElementId = 'assetAmpHolder';
        if (McConfig.IsDefaultAmp == "true") {
            var $popup = ampElements();
            $popup.openPopup({
                beforeOpen: function (self) {
                    $(self).find('.top-tools').hide();
                    if (showCarousel) {
                        $(self).addClass('has-carousel');
                    }
                },
                opened: function () {        
                    AmpHelper.InitAmp(ampElements(), ampElementId, storyGuid, null == assetData ? null : assetData.assetGuid, true);
                    AmpHelper.Pause(ampElementId);
                },
                closed: function () {
                    AmpHelper.Pause(ampElementId);
                    $('.share-buttons, .download-buttons, .download-buttons-mobile').css('visibility', 'hidden');
                    $('#' + ampElementId).html('');
                }
            });
        }
        else {
            
            var ampMode = "c";
            var popupMode = "a";
            var groupName = "";
            
            AmpHelper.InitAmp(ampElements(), ampElementId, storyGuid, null == assetData ? null : assetData.assetGuid, true, null, ampMode, popupMode, groupName, showCarousel);
            AmpHelper.Pause(ampElementId);            
            $('.amp-popup-wrapper.slider-box').removeClass('d-none');                  
            $('#ampGalleryPopup').addClass('d-none');            
            $('.ampv2').show();
        }
    };

    var getAssetData = function (element) {
        return $(element).imgItemClosest().serverAssetData();
    };
});;
$(function () {
    var ampElementId = 'storyAmpHolder';

    var ampElements = function () {
        return $(document).amp('.story-amp, .mini-amp');
    };

    ampElements().downloadButtons().moreInfoButton().on('click', function () {
        var currentAssetData = AmpHelper.GetDataForCurrentAsset(ampElementId);
        if (currentAssetData.assetStatus != "PendingClientApproval") {
            AmpHelper.ShowAssetMoreInfoPopup(ampElementId, currentAssetData);
        }
    });

    ampElements().shareButton().on('click', function () {
        var currentAssetData = AmpHelper.GetDataForCurrentAsset(ampElementId);
        if (currentAssetData.assetStatus != "PendingClientApproval") {
            AmpHelper.ShowAssetSharePopup(ampElementId, currentAssetData);
        }
    });

    if (McConfig.IsDefaultAmp =="true") {
        AmpHelper.InitAmp(ampElements(), ampElementId, AmpHelper.GetStoryGuid(), null, false);
    }
    else {
         var ampMode = "c";
         var popupMode = "a";
        var groupName = "";
        AmpHelper.InitAmp(ampElements(), ampElementId, AmpHelper.GetStoryGuid(), null, false, true, ampMode, popupMode, groupName, true);
    }
});;

/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
var saveAs=saveAs||function(e){"use strict";if(typeof e==="undefined"||typeof navigator!=="undefined"&&/MSIE [1-9]\./.test(navigator.userAgent)){return}var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in r,a=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},i=/constructor/i.test(e.HTMLElement)||e.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},s="application/octet-stream",d=1e3*40,c=function(e){var t=function(){if(typeof e==="string"){n().revokeObjectURL(e)}else{e.remove()}};setTimeout(t,d)},l=function(e,t,n){t=[].concat(t);var r=t.length;while(r--){var o=e["on"+t[r]];if(typeof o==="function"){try{o.call(e,n||e)}catch(a){u(a)}}}},p=function(e){if(/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)){return new Blob([String.fromCharCode(65279),e],{type:e.type})}return e},v=function(t,u,d){if(!d){t=p(t)}var v=this,w=t.type,m=w===s,y,h=function(){l(v,"writestart progress write writeend".split(" "))},S=function(){if((f||m&&i)&&e.FileReader){var r=new FileReader;r.onloadend=function(){var t=f?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");var n=e.open(t,"_blank");if(!n)e.location.href=t;t=undefined;v.readyState=v.DONE;h()};r.readAsDataURL(t);v.readyState=v.INIT;return}if(!y){y=n().createObjectURL(t)}if(m){e.location.href=y}else{var o=e.open(y,"_blank");if(!o){e.location.href=y}}v.readyState=v.DONE;h();c(y)};v.readyState=v.INIT;if(o){y=n().createObjectURL(t);setTimeout(function(){r.href=y;r.download=u;a(r);h();c(y);v.readyState=v.DONE});return}S()},w=v.prototype,m=function(e,t,n){return new v(e,t||e.name||"download",n)};if(typeof navigator!=="undefined"&&navigator.msSaveOrOpenBlob){return function(e,t,n){t=t||e.name||"download";if(!n){e=p(e)}return navigator.msSaveOrOpenBlob(e,t)}}w.abort=function(){};w.readyState=w.INIT=0;w.WRITING=1;w.DONE=2;w.error=w.onwritestart=w.onprogress=w.onwrite=w.onabort=w.onerror=w.onwriteend=null;return m}(typeof self!=="undefined"&&self||typeof window!=="undefined"&&window||this.content);if(typeof module!=="undefined"&&module.exports){module.exports.saveAs=saveAs}else if(typeof define!=="undefined"&&define!==null&&define.amd!==null){define("FileSaver.js",function(){return saveAs})}

;
var AmpHelper = new function () {
     
    this.InitAmp = function (ampParentElement, ampHolderId, storyGuid, assetGuid, isAutoplay, globalCaptionFlag) {
        if ($getAmpHolder(ampHolderId).length == 0) {
            return;
        }

        $.amp.onPopupOpening(function(ev, hide) {
            hide = typeof hide == "undefined" ? true : hide;
            var state = AmpHelper.getCurrentAssetState(ampHolderId);
            if (state.paused) {
                isPausedByUser = true;
            } else if (state.paused == false) {
                isPausedByUser = false;
            }
            if (state.played) {
                AmpHelper.Pause(ampHolderId);
            }
            if (hide && $(document).iOSversion()) {
                $getAmpHolder(ampHolderId).find('video, audio').css('visibility', 'hidden');
            }
        });

        $.amp.onPopupClosing(function (event, popupZIndex) {
            var ampZIndex = $getAmpHolder(ampHolderId).parents('.popup:first').css('z-index');
            if (!popupZIndex || ampZIndex == popupZIndex || !ampZIndex) {
                var state = AmpHelper.getCurrentAssetState(ampHolderId);
                if (state.paused && !isPausedByUser) {
                    AmpHelper.Play(ampHolderId);
                }
                $getAmpHolder(ampHolderId).find('video, audio').css('visibility', 'visible');
            }
        });
        
        var flashvars = {
            templateId: McConfig.MediaPanelGuid,
            pageId: UserSession.CategoryId,
            template_feed_url: MediaPanelApi.TemplateUrl,
            IsAutoplay: isAutoplay,            
            ShowCarouselFlag: false,
            ShowActionBarFlag:false
        };

        var isPausedByUser;

        if (typeof storyGuid !== 'undefined' && storyGuid != null) {
            flashvars.storyId = storyGuid;
        }

        if (typeof assetGuid !== 'undefined' && assetGuid != null) {
            flashvars.assetId = assetGuid;
        }

        var params = {
            quality: 'high',
            bgcolor: '#ffffff',
            allowfullscreen: 'true',
            wmode: "transparent",
            allowscriptaccess: 'always'
        };

        var attributes = {
            id: 'flashMediaPanel'
        };
        var royalsliderConfig = {
            globalCaption: globalCaptionFlag,
            beforeSlideMove: $.amp.slideChanging,
            afterSlideChange: function(countData, currentSlide, assetFeedInfo) {
                if (ampParentElement != null) {
                    var behaiour = $("#htnCategoryBehaviour").val();
                    var appliesBehaviourNm = $("#hdnAppliesBehaviour").val();
                    var assetData = getDataForSlide(currentSlide);
                  
                    if (behaiour != '' && appliesBehaviourNm != '')
                    { assetData = SetBehaviours(behaiour, appliesBehaviourNm, assetData, assetFeedInfo); }
                    else
                    { assetData = SetDefaultBehaviours(assetData, assetFeedInfo); }
                    $.amp.assetDataChanged(ampParentElement, assetData);
                }

                if (countData.slidesCount > 1) {
                    ampParentElement.find('.paging .num').text(countData.sequence);
                    ampParentElement.find('.paging .of').text(countData.slidesCount);
                    ampParentElement.find('.top-tools').show();
                } else {
                    ampParentElement.find('.top-tools').hide();
                }
            },
            afterSliderPositionReset: function () {
                afterSize(ampHolderId);
            }
        };

        if ($('html').hasClass('lt-ie9') || $('html').hasClass('lt-ie10')) {
            $('#asset-amp-popup').find('.download-all').css('visibility', 'hidden');
        }

        loadAMP(ampHolderId, flashvars, params, attributes, '100%', '100%', royalsliderConfig, { isPreview: AmpHelper.GetIsPreview() });
    };

    var afterSize = function(ampHolderId) {
        var $ampHolder = $('#' + ampHolderId),
            topToolsHeight = $ampHolder.closest('.amp').hasClass('hasCarousel') ? $ampHolder.closest('.content').find('.top-tools').outerHeight() : 0,
            topPadding = topToolsHeight + $ampHolder.find('.rsGCaption ').outerHeight() + $ampHolder.find('.rsNav').outerHeight(),
            $wrap = $ampHolder.closest('.amp');

        $ampHolder.closest('.amp').find('.addthis_toolbox a').not('.embed, .copy-link').off('click.pause').on('click.pause', function () {
            AmpHelper.Pause(ampHolderId);
        });

        if ($wrap.css('font-family') != 'mini-amp') {
            $wrap.find('.download-buttons').css('padding-top', topPadding);
            $wrap.find('.share-buttons').css('padding-top', topPadding);
        } else {
            $wrap.find('.download-buttons').attr('style', '');
            $wrap.find('.share-buttons').attr('style', '');
        }
        $('.share-buttons, .download-buttons-mobile').css('visibility', 'visible');
        $('.download-buttons').css('visibility', 'hidden');
    };


    var getDataForSlide = function(slide) {
        var assetData = getAssetDataForSlide(slide.content);
        return getServerAssetData(assetData);
    };

    this.GetDataForCurrentAsset = function(ampHolderId) {
        var currentAssetData = AmpHelper.GetCurrentAssetData(ampHolderId);
        return getServerAssetData(currentAssetData);
    };

    this.GetCurrentAssetData = function (ampHolderId) {
        var currentAsset = getCurrentAsset(ampHolderId);
        return getAssetDataForSlide(currentAsset);
    };

    var getAssetDataForSlide = function (slideContext) {
        return slideContext != null
            ? slideContext.assetData()
            : null;
    };

    var getServerAssetData = function (assetData) {
        if (assetData == null)
            return $(document).createFakeAssetData();

        var serverAssetData = $(document).serverAssetData(assetData.metadata.AssetGuid);
        return serverAssetData != null ? serverAssetData : $(document).createFakeAssetData();
    };

    this.Pause = function(ampHolderId) {
        var currentAsset = getCurrentAsset(ampHolderId);
        if (currentAsset != null) {
            currentAsset.assetPause();
        }
    };

    this.Play = function(ampHolderId) {
        var currentAsset = getCurrentAsset(ampHolderId);
        if (currentAsset != null) {
            currentAsset.assetPlay();
        }
    };

    this.getCurrentAssetState = function(ampHolderId) {
        var currentAsset = getCurrentAsset(ampHolderId);
        if(currentAsset)
            var media = currentAsset.assetData().media;
        else
            return false;
        return {
            paused: media.Paused,
            played: media.Played
        };
    };

    this.ShowAssetMoreInfoPopup = function(ampHolderId, assetData) {
        $.amp.popupOpening();

        var assetGuid = null;
        if (assetData != null) {
            assetGuid = assetData.assetGuid;
        } else {
            var currentAssetData = AmpHelper.GetCurrentAssetData(ampHolderId);

            if (currentAssetData != null) {
                assetGuid = currentAssetData.metadata.AssetGuid;
            }
        }

        if (assetGuid != null) {
            MediaPanelApi.GetAssetMoreInfo(assetGuid, function(data) {
                var assetInfo = data.rows[0];
                var $popup = getAssetMoreInfoPopup();
                $popup.find('.asset-id').text(assetInfo.Asset_Id);
                $popup.find('.asset-url').attr("href", assetData.assetUrl);
                $popup.find('.asset-title').text(assetInfo.Title);

                var behaiour = $("#htnCategoryBehaviour").val();
                var appliesBehaviourNm = $("#hdnAppliesBehaviour").val();

                if (behaiour != '' && appliesBehaviourNm != '')
                {
                        if (GetAssetBehaviourProperty(behaiour, assetData.assetType, "SeeMore", appliesBehaviourNm) == false) {
                            $popup.find('.see-all-details').hide();
                        }
                        else {
                            $popup.find('.see-all-details').show();
                        }
                }
                $popup.find('img').attr({
                        src: assetInfo.Asset_Thumbnail_Path,
                    alt: assetInfo.Title
                });
                
                $popup.find('.asset-description').html(assetInfo.Description.Text.replace(/\n/g, '<br/>'));
                $popup.find('.asset-shotlist').html(assetInfo.Transcript.Text.replace(/\n/g, '<br/>'));
                $popup.find('.asset-usage-rights-and-restrictions').html(assetInfo.Rights_Usage_Details.Text);

                var titlesToClasses = {
                    'Caption': '.asset-caption-title',
                    'Transcript': '.asset-transcript-title',
                    'Shotlist': '.asset-shotlist-title'
                };
                _.each(titlesToClasses, function (className, title) {
                    $popup.find(className).toggle(title == assetInfo.Transcript_Title);
                });

                $popup.openPopup({
                    closed: function (popupZIndex) {
                        $.amp.popupClosing(popupZIndex);
                    }
                });
            });
        }
    };

    this.ShowAssetSharePopup = function (ampHolderId, assetData) {
        var $popup = $('#asset-share-popup');
        $.amp.popupOpening();


        var assetGuid = null;
        if (assetData != null) {
            assetGuid = assetData.assetGuid;
        } else {
            var currentAssetData = AmpHelper.GetCurrentAssetData(ampHolderId);

            if (currentAssetData != null) {
                assetGuid = currentAssetData.metadata.AssetGuid;
            }
        }

        if (assetGuid != null) {
            MediaPanelApi.GetAssetMoreInfo(assetGuid, function(data) {
                var assetInfo = data.rows[0];
                $popup.find('.asset-id').text(assetInfo.Asset_Id);
                $popup.find('.asset-title').text(assetInfo.Title);                
                $popup.find('img').attr({
                    src: assetInfo.Asset_Thumbnail_Path,
                    alt: assetInfo.Title
                });
                $popup.openPopup({
                    opened: function($self) {
                        var $addThis = $self.find('.addthis_toolbox a');
                        $addThis.off('click.addthis').on('click.addthis', function() {
                            $popup.closePopup();
                            $.amp.popupClosing();
                            AmpHelper.Pause(ampHolderId);
                            });
                        if (assetData.assetIsSharable != null && assetData.assetIsSharable) {
                            $popup.find('#Sharelinks').css('visibility', 'visible');
                        }
                    },
                    closed: function (popupZIndex) {
                        $.amp.popupClosing(popupZIndex);
                    }
                });
            });
        }
        //if sharing is disable from DB setting
        if (assetData.assetIsSharable != null && !assetData.assetIsSharable) {
            $popup.find('#SharelinksDisable').show();
            $popup.find('#Sharelinks').hide();
        } else {
            $popup.find('#SharelinksDisable').hide();
            $popup.find('#Sharelinks').show();
            $('#Sharelinks').css('visibility', 'visible');
        }

        var $addThisElements = $popup.find('.addthis_toolbox');
        //if sharing is disable from Config setting
        $addThisElements.find("li").each(function (i) {
            $(this).show();
        });
        if (!assetData.showAssetShareLink) {
            $addThisElements.find("li").each(function (i) {
                if ($(this).hasClass("share-embed") == false) {
                    $(this).hide();
                }
            });
        }

        //if embed is disable from DB setting
        var $el = $popup.find('.share-embed');
        
        if (!assetData.assetIsEmbeddable) {
            $el.addClass('disabled');
        }
        else {
            $el.css('display', 'inline-block');
            $el.removeClass('disabled');
            $('#asset-share-popup li.share-embed').css('display', 'inline-block');
        }
        //Hide embed link, if asset is audio type or config behaviour is hidden
        if (assetData.assetType.toLowerCase() == 'audio' || assetData.showAssetEmbedLink == false) {
            $el.css('display', 'none');
        } else {
            $el.css('display', 'inline-block');
        }
    };

    this.GetStoryGuid = function() {
        return $("input:hidden[name='Amp.StoryGuid']").val();
    };

    this.GetIsPreview = function () {
        var isPreview = $("input:hidden[name='Amp.IsPreview']").val();
        return typeof isPreview !== 'undefined' ? isPreview.toLowerCase() === 'true' : false;
    };

    var getAssetMoreInfoPopup = function() {
        return $('#asset-more-info-popup');
    };

    var getCurrentAsset = function(ampHolderId) {
        var sliderInstance = SliderInstance(ampHolderId);
        if (sliderInstance != null) {
            var currentSlide = sliderInstance.currSlide;
            if (currentSlide != null) {
                return currentSlide.content;
            }
        }

        return null;
        //return CurrentAsset(ampHolderId);
    };

    var $getAmpHolder = function(ampHolderId) {
        return $('#' + ampHolderId);
    };
};
function SetBehaviours(behaiour, appliesBehaviourNm, assetData, assetFeedInfo)
{
    var dic = GetAssetDictionary(behaiour, appliesBehaviourNm, assetData);

    var toptools = $(".top-tools");

    var assetLinkIsSharable = GetAssetBehaviourProperty(behaiour, assetData.assetType, "ShareLinks", appliesBehaviourNm);
    var downloadAll = true;
    var addToMediaCartAll = true;

    if (typeof dic !== 'undefined' && dic != null
        && typeof dic.DownLoadALL !== 'undefined' && dic.DownLoadALL != null
        && typeof dic.DownLoadALL.Show !== 'undefined' && dic.DownLoadALL.Show != null) {
        downloadAll = dic.DownLoadALL.Show;
    }

    if (typeof dic !== 'undefined' && dic != null
        && typeof dic.AddToMediaCartALL !== 'undefined' && dic.AddToMediaCartALL != null && typeof dic.AddToMediaCartALL.Show !== 'undefined') {
        addToMediaCartAll = dic.AddToMediaCartALL.Show;
    }
    ShowHideDownloadAllLinks(toptools, downloadAll);
    ShowHideAllMediaCartLinks(toptools, addToMediaCartAll);
    assetData.assetIsEmbeddable = (assetFeedInfo.rows[0].Is_Embeddable);
    assetData.assetIsSharable = (assetFeedInfo.rows[0].Is_Shareable); /*TNMMCLite-73*/
    assetData.assetIsDownloadable = (assetFeedInfo.rows[0].Is_Downloadable);

    assetData.showAssetEmbedLink = GetAssetBehaviourProperty(behaiour, assetData.assetType, "ShareLinks.Embedable", appliesBehaviourNm);
    assetData.showAssetShareLink = GetAssetBehaviourProperty(behaiour, assetData.assetType, "ShareLinks.Shareable", appliesBehaviourNm);
    assetData.showAssetDownloadLink = GetAssetBehaviourProperty(behaiour, assetData.assetType, "DownLoad", appliesBehaviourNm);

    assetData.assetIsMoreInfo = GetAssetBehaviourProperty(behaiour, assetData.assetType, "MoreInfo", appliesBehaviourNm);
    assetData.assetIsSeeMore = GetAssetBehaviourProperty(behaiour, assetData.assetType, "SeeMore", appliesBehaviourNm);
    assetData.assetIsAddtoMedia = McConfig.MediacartEnabled && GetAssetBehaviourProperty(behaiour, assetData.assetType, "AddToMediaCart", appliesBehaviourNm);
    assetData.assetLinksIsSharable = assetLinkIsSharable;
    return assetData;
}
function SetDefaultBehaviours(assetData, assetFeedInfo) {
    var toptools = $(".top-tools");

    ShowHideAllMediaCartLinks(toptools, true);
    ShowHideDownloadAllLinks(toptools, true);

    assetData.assetIsEmbeddable = (assetFeedInfo.rows[0].Is_Embeddable && true);
    assetData.assetIsSharable = (assetFeedInfo.rows[0].Is_Shareable && true); /*TNMMCLite-73*/
    assetData.assetIsDownloadable = assetFeedInfo.rows[0].Is_Downloadable;
    assetData.assetIsMoreInfo = true;
    assetData.assetIsSeeMore = true;
    assetData.assetIsAddtoMedia = McConfig.MediacartEnabled;
    assetData.assetLinksIsSharable = true;

    assetData.showAssetEmbedLink = true;
    assetData.showAssetShareLink = true;
    assetData.showAssetDownloadLink = true;
    return assetData;
};
$(document).ready(function() {
    var ampElementId = 'assetAmpHolder';
    
    var ampElements = function() {
        return $(document).amp('#asset-amp-popup');
    };
    
    var imagesAndVideosItems = $(document).imagesAndVideosItems();
    if (imagesAndVideosItems) {
        
        var Authentication = new Object();
        Authentication.authenticationmode = $(imagesAndVideosItems).data('authenticationmode');
        Authentication.authorizationmode = $(imagesAndVideosItems).data('authorizationmode');

        imagesAndVideosItems.imgItem().find('.image-wrapper').on('click', function (e) {
            e.preventDefault();
            if ($('#asset-amp-popup').not(':visible')) {
                var storyGuid = AmpHelper.GetStoryGuid();
                var assetData = getAssetData(this);
                showAmp(storyGuid, assetData, Authentication);
            }
        });

        imagesAndVideosItems.imgItem().find('.image-wrapper img').on('touchend', function (e) {
            e.preventDefault();
            if ($('#asset-amp-popup').not(':visible')) {
                var storyGuid = AmpHelper.GetStoryGuid();
                var assetData = getAssetData(this);
                showAmp(storyGuid, assetData, Authentication);
            }
        });
    }

    ampElements().downloadButtons().moreInfoButton().on('click', function () {
        if ($(this).hasClass("disabled") == false) {
            var currentAssetData = AmpHelper.GetDataForCurrentAsset(ampElementId);
            if (currentAssetData.assetStatus != "PendingClientApproval") {
                AmpHelper.ShowAssetMoreInfoPopup(ampElementId, currentAssetData);
            }
        }
    });

    ampElements().shareButton().on('click', function () {
        var currentAssetData = AmpHelper.GetDataForCurrentAsset(ampElementId);
        if (currentAssetData.assetStatus != "PendingClientApproval") {
            AmpHelper.ShowAssetSharePopup(ampElementId, currentAssetData);
        }
    });

    $(document).imagesAndVideosItems().imgItem().find('.info-icon a, .tablet-hover-icons .more-info').on('click', function(e) {
        //Disabling clicks on thumb image icon for touch devices
    if (Modernizr.touch && !$(e.target).parents('.tablet-hover-icons').length && !$('html').hasClass('desktop-1')) {
            return;
        }

        e.stopPropagation();
        var assetData = getAssetData(this);
        AmpHelper.ShowAssetMoreInfoPopup(ampElementId, assetData);
    });
  
    var showAmp = function (storyGuid, assetData, Authentication) {
        
        if (storyGuid != null) {
            MediaPanelApi.GetStoryListing(storyGuid, function (data) {
                if (data.rows != undefined) {
                    openAmpPopup(storyGuid, assetData, $(document).imagesAndVideosItems().parent().hasClass('media-for-story') && data.rows.length > 1, Authentication);
                }
            });
        } else {
            openAmpPopup(storyGuid, assetData, false, Authentication);
        }
    };

    var openAmpPopup = function (storyGuid, assetData, showCarousel, Authentication) {
        var $popup = ampElements();
        $popup.openPopup({
            beforeOpen: function (self) {
                $(self).find('.top-tools').hide();
                $('#' + ampElementId).data('authenticationmode', Authentication.authenticationmode);
                $('#' + ampElementId).data('authorizationmode', Authentication.authorizationmode);
                
                if (showCarousel) {
                    $(self).addClass('has-carousel');
                }
            },
            opened: function () {
                AmpHelper.InitAmp(ampElements(), ampElementId, storyGuid, null == assetData ? null : assetData.assetGuid, true);
                AmpHelper.Pause(ampElementId);
            },
            closed: function () {
                AmpHelper.Pause(ampElementId);
                $('.share-buttons, .download-buttons, .download-buttons-mobile').css('visibility', 'hidden');
                $('#' + ampElementId).html('');
                $('#' + ampElementId).removeData("authenticationmode");
                $('#' + ampElementId).removeData("authorizationmode");
            }
        });
    };

    var getAssetData = function(element) {
        return $(element).imgItemClosest().serverAssetData();
    };
});;
(function ($) {
    $.fn.extend({
        imagesAndVideosItems: function () {
            return $(this).find('.images-videos-items.asset-item') || [];
        },
        showcasedecisionImagesAndVideosItems: function () {            
            return $(this).find('.amp-open') || [];
        },
        showcasedecisionImagesAndVideosStorydetailItems: function () {
            return $(this).find('.story-detail-open') || [];
        },
        showcaseImagesAndVideosItems: function () {
            return $(this).find('.images-videos-items.showcase-item').filter(':not(.hideamp)') || [];
        },
        imgItem: function () {
            return $(this).find('.img-item');
        },
        imgAssetItem: function () {
            return $(this).find('li.asset-img-item');
        },
        imgItemClosest: function () {
            return $(this).closest('.img-item');
        },
        playIcon: function () {
            return $(this).find('.play-icon');
        },
        serverAssetData: function (assetGuid) {
            var input = $(this).find('input:hidden.asset-data');
            if (assetGuid != null) {
                input = input.filter("[data-asset-guid='" + assetGuid + "']");
            }

            return input.baseAssetData();
        },
        baseAssetData: function () {
            var baseAsset = $(this).data();
            if (baseAsset != null) {
                baseAsset.isVideo = function () {
                    return this.assetType === 'Video';
                };

                baseAsset.isAudio = function () {
                    return this.assetType === 'Audio';
                };

                baseAsset.isImage = function () {
                    return this.assetType === 'Image';
                };
            }

            return baseAsset;
        },
        createFakeAssetData: function () {
            return {
                assetDescription: '',
                assetGuid: "00000000-0000-0000-0000-000000000000",
                assetId: 0,
                assetIsApplyUsageRights: 'False',
                assetSmallThumbnailUrl: '',
                assetStatus: 'PendingClientApproval',
                assetTitle: '',
                assetType: '',
                assetUrl: '',
                assetUsageRightsDetails: '',
                assetVideoIsEmbeddable: 'False',
                assetIsDownloadable:false,
                isAudio: function () { return false; },
                isImage: function () { return false; },
                isVideo: function () { return false; },
                showAssetEmbedLink : false,
                showAssetShareLink : false,
                showAssetDownloadLink: false,
                assetMaxFileSize: 0
            };
        },
    });
})(jQuery);;
(function ($) {
    $.fn.extend({
        mediaForStory: function () {
            return $(this).find('.media-for-story');
        }
    });

    //$("html,body").on('click', function () {
    //    //$(window).resize();
    //});
})(jQuery);

$(function () {
    $("video").bind("contextmenu", function () {
        return false;
    });   

    $(document).mediaForStory().find('.filters ul li:first').addClass('active');
    var $items = $(document).mediaForStory().imgItem(),
        $mediaList = $(document).mediaForStory().find('ul.images-videos-items:first'),
        $hiddenMediaItems = $(document).mediaForStory().find('.hidden-media-items:first'),
        device = $('html').css('font-family'),
        $seeMore = $('.media-for-story .see-more'),
        $showcasefullwidth = $('.showcaselayoutfullwidth'),
        $showcaseLayout = $('.detail-pages showcase-layout'),
        isShowCaseLayoutPage = ($(document).mediaForStory().find('ul.images-videos-items.showcase-item').length > 0 ? true : false);

    var showContactListing = function () {
        var list = $(document).find('.contacts ul li').length;
        if (list > 2)
            $(document).find('.seeMoreLessitemsDiv').find('.more').show();
        else
            $(document).find('.seeMoreLessitemsDiv').find('.more').hide();
    };

     var showButtonController = function () {
        var curType = $(document).mediaForStory().find('.filters ul li.active a').attr('data-item-class'),
            numberOfItems,
            $localItems;
        device == 'mobile' ? numberOfItems = 4 : numberOfItems = 6;

        if (typeof $showcaseLayout != "undefined" && isShowCaseLayoutPage == true && $showcasefullwidth.length > 0 && device != "mobile") {
            numberOfItems = 6;
        }
        if (typeof $showcaseLayout != "undefined" && isShowCaseLayoutPage == true && $showcasefullwidth.length > 0 && device == "mobile") {
            numberOfItems = 4;
        }
        if (typeof $showcaseLayout != "undefined" && isShowCaseLayoutPage == true && $showcasefullwidth.length == 0) {
            numberOfItems = 4;
        }
        if (typeof $showcaseLayout != "undefined" && isShowCaseLayoutPage == false) {
            numberOfItems = 6;
        }

        if (typeof curType === "undefined") {
            curType = 'all';
        }

        if (curType == 'all') {
            $localItems = $items.parent();
        } else {
            $localItems = $items.filter('.' + curType).parent();
        }

        if ($items.length > 0) {
            if ($localItems.length > numberOfItems) {
                $seeMore.show();
            } else {
                $seeMore.hide();
            }
        }
    };

    var showLess = function (type) {
        $(document).mediaForStory().removeClass('show-less');
        $(document).mediaForStory().addClass('show-more');
        var $filteredItems;
        var $showcaseLayout = $('.detail-pages showcase-layout');

        if (type === undefined) {
            type = $('.filters > ul li.active a').attr('data-item-class');
        }
        if (typeof type === "undefined") {
            type = 'all';
        }

        if (type == 'all') {
            $filteredItems = $items.parent();
        } else {
            $filteredItems = $items.filter('.' + type).parent();
        }

        if (device == 'mobile' && isShowCaseLayoutPage == true) {
            $filteredItems.slice(4).appendTo($hiddenMediaItems);
        } else {
            if (isShowCaseLayoutPage == true && $showcasefullwidth.length == 0) {
                $filteredItems.slice(4).appendTo($hiddenMediaItems);
            }
            else {
                $filteredItems.slice(6).appendTo($hiddenMediaItems);
            }
        }
        $(window).trigger("lookup");
    };

    var showMore = function () {
        $(document).mediaForStory().removeClass('show-more');
        $(document).mediaForStory().addClass('show-less');
        var type = $('.filters ul li.active a').attr('data-item-class');
        if (typeof type === "undefined") {
            type = 'all';
        }
        if (type == 'all') {
            $hiddenMediaItems.find('.img-item').parent().appendTo($mediaList);
        } else {
            $hiddenMediaItems.find('.img-item').filter('.' + type).parent().appendTo($mediaList);
        }
        $(window).trigger("lookup");
    };

    var filtration = function (type) {
        if (type == 'all') {
            $items.filter('.video-type').parent().appendTo($mediaList);
            $items.filter('.img-type').parent().appendTo($mediaList);
            $items.filter('.audio-type').parent().appendTo($mediaList);
        } else {
            $items.parent().appendTo($hiddenMediaItems);
            $items.filter('.' + type).parent().appendTo($mediaList);
        }
        if ($(document).mediaForStory().hasClass('show-more')) {
            showLess(type);
        }
    };

    $(document).mediaForStory().find('.filters > ul').on('click', 'a', function () {
        var $li = $(this).closest('li');
        $li.siblings().removeClass('active');
        $li.addClass('active');
        var type = $(this).attr('data-item-class');
        filtration(type);
        showButtonController();
        $(document).mediaForStory().find(".context-header").dotdotdot();
        $(window).trigger("lookup");
    });

    $(document).mediaForStory().find('.see-more .more').on('click', function () {
        showMore();
        $(document).mediaForStory().find(".context-header").dotdotdot();

    });

    $(document).mediaForStory().find('.see-more .less').on('click', function () {
        showLess();
    });

    showLess();

    showButtonController();

    showContactListing();
});

function seeMoreItems(obj) {
    $(obj).closest('.seeMoreLessitemsDiv').find('ul li').show();
    $(obj).hide();
    $(obj).closest('.see-more').find('.less').show();
    $(obj).closest('.seeMoreLessitemsDiv').addClass("seeMoreExpand");
}
function seeLessItems(obj) {
    $(obj).closest('.seeMoreLessitemsDiv').find('ul li:gt(1)').hide();
    $(obj).hide();
    $(obj).closest('.see-more').find('.more').show();
    $(obj).closest('.seeMoreLessitemsDiv').removeClass("seeMoreExpand");
}

//For heroimage
function playStoryHeroVideo() {
    var videofirst = $('.story-video-player-div');
    var checkvideo = videofirst.find("video").get(0);
    checkvideo.play();
    videofirst.closest(".story-asset-wrapper").addClass("story-asset-vid-playing");
    $('.story-assetvid-mute-unmute').show();
}

function pauseStoryHeroVideo() {
    var videofirst = $('.story-video-player-div');
    var checkvideo = videofirst.find("video").get(0);
    checkvideo.pause();
    videofirst.closest(".story-asset-wrapper").removeClass("story-asset-vid-playing");
    $('.story-assetvid-mute-unmute').hide();
}
/* Video Mute Unmute */
function muteStoryHeroVideo() {
    var videofirst = $('.story-video-player-div');
    videofirst.closest(".story-asset-wrapper").addClass("story-asset-vid-muteenable");

    var vid = videofirst.find("video").get(0);
    vid.muted = false;
}

function unmuteStoryHeroVideo() {
    var videofirst = $('.story-video-player-div');
    videofirst.closest(".story-asset-wrapper").removeClass("story-asset-vid-muteenable");

    var vid = videofirst.find("video").get(0);
    vid.muted = true;
}
/* Video Full Screen */
function fullScreenStoryHeroVideo() {
    var videofirst = $('.story-video-player-div');
    videofirst.closest(".story-asset-wrapper").addClass("story-asset-vid-muteenable");

    var vid = videofirst.find("video").get(0);
    vid.requestFullscreen();
    
}

//For hero Audio
function playStoryHeroAudio() {
    var audiofirst = $('.story-audio-player-div');
    var checkAudio = audiofirst.find("audio").get(0);
    checkAudio.play();
    audiofirst.closest(".story-asset-wrapper").addClass("story-asset-audio-playing");
    $('.story-asset-audio-mute-unmute').show();
}

function pauseStoryHeroAudio() {
    var audiofirst = $('.story-audio-player-div');
    var checkAudio = audiofirst.find("audio").get(0);
    checkAudio.pause();
    audiofirst.closest(".story-asset-wrapper").removeClass("story-asset-audio-playing");
    $('.story-asset-audio-mute-unmute').hide();
}
/* Audio Mute Unmute */
function muteStoryHeroAudio() {
    var audiofirst = $('.story-audio-player-div');
    audiofirst.closest(".story-asset-wrapper").removeClass("story-asset-audio-muteenable");

    var aud = audiofirst.find("audio").get(0);
    aud.muted = false;
}

function unmuteStoryHeroAudio() {
    var audiofirst = $('.story-audio-player-div');
    audiofirst.closest(".story-asset-wrapper").addClass("story-asset-audio-muteenable");

    var aud = audiofirst.find("audio").get(0);
    aud.muted = true;
};
function ContactInquiryPopupViewModel(contactData) {
    var cookieName = 'inquiry-popup-data';
    var $popup = $('#contact-inquiry-popup');
    var $inputs = $popup.find('input, select, button, textarea');

    var samesitecontact = $('#samesitecontact').val();
    var securecontact = $('#securecontact').val();

    var validator;
    var viewModel;

    this.Start = function () {
        validator = createValidator();
        viewModel = createViewModel();

        initializeData();
        renderPopup();
    };

    var createValidator = function () {
        var isPublicationWebsite = false;
        isPublicationWebsite = $(".publicationwebsite-blank-config").attr('value');
        var isRequiredValidation;
        if ((isPublicationWebsite == 'true')) {
            isRequiredValidation = customValidation.rules.ifNot({ 'UserType': ['Fan', 'Others'] }, [customValidation.rules.required]);
        }
        else {
            isRequiredValidation = customValidation.rules.ignore;
        }

        var requiredIfNotUserType = customValidation.rules.ifNot({ 'UserType': ['Fan', 'Others'] }, [customValidation.rules.required]);
        var requiredInquiryType = (($popup.find("select[name='InquiryType']")).length > 0 ? [customValidation.rules.required] : [customValidation.rules.ignore]);

        return $popup.createCustomValidator({
            fields: {
                'InquiryType': requiredInquiryType,
                'Text': [customValidation.rules.required],
                //'Name': [customValidation.rules.required],
                'Name': {
                    rules: [customValidation.rules.required, customValidation.rules.namevalidate],
                    validateOn: ['change', 'focusout']
                },
                'Email': {
                    rules: [customValidation.rules.required, customValidation.rules.emailvalidate],
                    validateOn: ['change', 'focusout']
                },
                'UserType': [customValidation.rules.required],
                'Title': {
                    rules: [requiredIfNotUserType, customValidation.rules.titlevalidate],
                    validateOn: ['change', 'focusout']
                },
                'Website': {
                    rules: [isRequiredValidation, customValidation.rules.websitevalidate],
                    validateOn: ['change', 'focusout']
                },
                'Company': {
                    rules: [requiredIfNotUserType, customValidation.rules.namevalidate],
                    validateOn: ['change', 'focusout']
                },
                //'Title': [requiredIfNotUserType],
                //'Company': [requiredIfNotUserType],
                'Country': [customValidation.rules.required],
                'ContactRecaptchaResponse': [customValidation.rules.recaptchavalidate],
                'AgreeForPrivacyNotice': [customValidation.rules.agreevalidate],
            }
        });
    };
    $.validator.setDefaults({
        ignore: [],
    });

    $.validator.addMethod("regexvalidate",
        function (value, element) {
            if ($(element).is(':visible')) {
                var res = new RegExp($(element).attr("customregex"))
                return (this.optional(element) || res.test(value));
            } else {
                //Do not validate
                return true;
            }
        },
        $.validator.messages.namevalidate
    );

    $.validator.addMethod("namevalidate",
        function (value, element) {
            if ($(element).is(':visible')) {
                var res = new RegExp($(element).attr("customregex"))
                return (this.optional(element) || res.test(value));
            } else {
                //Do not validate
                return true;
            }
        },
        $.validator.messages.namevalidate
    );

    $.validator.addMethod("titlevalidate",
        function (value, element) {
            if ($(element).is(':visible')) {
                var res = new RegExp($(element).attr("customregex"))
                return (this.optional(element) || res.test(value));
            } else {
                //Do not validate
                return true;
            }
        },
        $.validator.messages.titlevalidate
    );

    $.validator.addMethod("websitevalidate",
        function (value, element) {
            if ($(element).is(':visible')) {
                var res = new RegExp($(element).attr("customregex"))
                return (this.optional(element) || res.test(value));
            } else {
                //Do not validate
                return true;
            }
        },
        $.validator.messages.websitevalidate
    );

    $.validator.addMethod("emailvalidate",
        function (value, element) {
            if ($(element).is(':visible')) {
                var res = new RegExp($(element).attr("customregex"))
                return (this.optional(element) || res.test(value));
            } else {
                //Do not validate
                return true;
            }
        },
        $.validator.messages.emailvalidate
    );

    $.validator.addMethod("recaptchavalidate",
        function (value, element) {
            var reCaptchaConfig = JSON.parse(McConfig.ReCaptcha);
            if (reCaptchaConfig.enabled) {
                return (value.length > 0);
            } else {
                return true;
            }
        },
        $.validator.messages.recaptchavalidate
    );

    var createViewModel = function () {
        return {
            doRememberMe: true,
            isSavedDataAvailable: false,
            rememberUserData: function () {
                if (this.doRememberMe) {
                    var userData = _.omit(validator.getValues(), ['InquiryType', 'Text', 'ContactRecaptchaResponse']);

                    var isFunctionalCookie = JSON.parse($.cookie('optFunc'));
                    if (isFunctionalCookie) {
                        //$.cookie(cookieName, JSON.stringify(userData), { path: '/', expires: 365 });
                        document.cookie = cookieName + "=" + JSON.stringify(userData) + ";" + 365 + ";path=/;SameSite=" + samesitecontact + ";" + securecontact + ";";
                    }
                } else {
                    $.removeCookie(cookieName, { path: '/' });
                }
            },
            forgetUserData: function () {
                if (this.doRememberMe == false) {
                    $.removeCookie(cookieName, { path: '/' });
                }
            }
        };
    };

    var initializeData = function () {
        var savedUserData = $.cookie(cookieName) != null ? JSON.parse($.cookie(cookieName)) : null;
        var formData = _.extend(savedUserData != null ? savedUserData : createDefaultUserData(), {
            'InquiryType': '',
            'Text': '',
        });
        viewModel.isSavedDataAvailable = savedUserData != null;
        validator.setValues(formData);
    };

    var createDefaultUserData = function () {
        return {
            'Name': '',
            'Email': '',
            'UserType': '',
            'Title': '',
            'Company': '',
            'Country': '',
            'ContactRecaptchaResponse': ''
        };
    };

    var renderPopup = function () {
        renderForm();
        setupEvents();

        validator.resetValidation();
        if (viewModel.isSavedDataAvailable) {
            validator.validate();
            validator.getFieldByName('InquiryType').resetValidation();
            validator.getFieldByName('Text').resetValidation();
        }

        $popup.openPopup({
            closed: function () {
                viewModel.forgetUserData();
            }
        });
    };

    var renderForm = function () {
        reCaptchaSetup();
        $popup.find('.validation-summary').hide();
        if (contactData.mobile == null && contactData.name == null) {
            var contactusTemplate = TemplateHelper.Find('#contact-inquiry-popup-info-contactus-template');
            $popup.find('.contact-info').html(TemplateHelper.Render(contactusTemplate))
        }
        else {
            var infoTemplate = TemplateHelper.Find('#contact-inquiry-popup-info-template');
            var phoneTemplate = TemplateHelper.Find('#contact-inquiry-popup-info-phone-template');
            var mobileTemplate = TemplateHelper.Find('#contact-inquiry-popup-info-mobile-template');

            var positionVal = validateData(contactData.position, '.position-blank-config');
            var emailVal = validateData(contactData.email, '.email-blank-config');
            var addrVal = validateData(contactData.address, '.country-blank-config');
            var phoneVal = validateData(contactData.phone, '.phone-blank-config');
            var mobileVal = validateData(contactData.mobile, '.mobile-blank-config');

            $popup.find('.contact-info').html(TemplateHelper.Render(infoTemplate, {
                name: contactData.name,
                position: positionVal,
                address: addrVal,
                email: emailVal,
                phoneBox: phoneVal != '' ? TemplateHelper.Render(phoneTemplate, { phone: phoneVal }) : '',
                mobileBox: mobileVal != '' ? TemplateHelper.Render(mobileTemplate, { mobile: mobileVal }) : ''
            }));
        }

        $popup.find('[name="RememberMe"]').prop('checked', viewModel.doRememberMe);


        if (positionVal == '')
            $popup.find('div.position').css("display", "none");
        else
            $popup.find('div.position').css("display", "block");


        if (emailVal == '') {
            $popup.find('div.email').css("display", "none");
        }
        else { $popup.find('div.email').css("display", "block"); }


        if (addrVal == '') {
            $popup.find('div.address').css("display", "none");
        }
        else { $popup.find('div.address').css("display", "block"); }
    };

    function getBlankValue(inpID) {

        var inpBlankVal = $(inpID);
        if (inpBlankVal != null) {
            return inpBlankVal.val();
        }
        else return '';
    }

    function validateData(value, inpID) {
        var blankVal = getBlankValue(inpID);

        if (value.toString().trim() == blankVal)
            return '';
        else
            return value;
    }

    var setupEvents = function () {
        $popup.off('change', '[name="RememberMe"]');
        $popup.on('change', '[name="RememberMe"]', function () {
            viewModel.doRememberMe = this.checked;
        });

        $popup.find('#AgreeForPrivacyNotice').on('click', function () {
            var isChecked = $popup.find("#AgreeForPrivacyNotice").prop('checked');
            if (!isChecked) {
                $(".agree-checkbox").find(".agree-note").addClass('error');
            }
            else {
                $(".agree-checkbox").find(".agree-note").removeClass('error');
            }
        });

        $popup.find('.custom-button.send, .custom-button.send-two').off('click');
        $popup.find('.custom-button.send, .custom-button.send-two').on('click', function () {
            var isValid = validator.isValid();
            $popup.find('.validation-summary').toggle(isValid == false);

            var isChecked = $popup.find("#AgreeForPrivacyNotice").prop('checked');
            if (!isChecked) {
                $(".agree-checkbox").find(".agree-note").addClass('error');
            }
            else {
                $(".agree-checkbox").find(".agree-note").removeClass('error');
            }
            if (isValid) {
                submitForm();
            } else {
                //Show error when recaptcha is enabled and not attempted. 
                var reCaptchaConfig = JSON.parse(McConfig.ReCaptcha);
                if (reCaptchaConfig.enabled) {
                    if (!validator.getFieldByName('ContactRecaptchaResponse').isValid()) {
                        $popup.find('.recaptcha-holder').addClass('error');
                    } else {
                        $popup.find('.recaptcha-holder').removeClass('error');
                    }
                }
                validator.validate()
            }
            return false;
        });
    };

    var submitForm = function () {

        if ($('#invalidname').val().length === 0) {
            $('#invalidname').val($('#invalidtext').val());
        }

        $inputs.prop('disabled', true);
        $("#contact-inquiry-popup").find("#Text").val(htmlEncode($("#contact-inquiry-popup").find("#Text").val()));

        $.ajax({
            url: $popup.find('.custom-button.send').attr('href'),
            data: _.extend(validator.getValues(), {
                'ToEmail': contactData.email,
                'IsInquiryTypeVisible': $("#contact-inquiry-popup").find("#IsInquiryTypeVisible").val(),
                'UserTypeName': $("#contact-inquiry-popup").find(".user-type option:selected").text(),
                'InvalidName': $("#contact-inquiry-popup").find('#invalidname').val()
            }),
            type: 'POST',
            success: function (data) {
                if (data.isSuccess == true) {
                    viewModel.rememberUserData();

                    //Clean up recaptcha.
                    $popup.find('.ContactRecaptchaResponse').val('');
                    widgetId = $popup.data('recaptcha-id');
                    if (widgetId !== undefined) {
                        grecaptcha.reset(widgetId);
                    }

                    $popup.closePopup();
                    $('#confirmation-contact-popup').openPopup();
                }
            },
            complete: function () {
                $inputs.prop('disabled', false);
            }
        });
    };

    function reCaptchaSetup() {
        var widgetId;
        var $inquiryPopup = $("#contact-inquiry-popup");
        widgetId = $inquiryPopup.data('recaptcha-id');
        $inquiryPopup.find('.recaptcha-holder').removeClass('error');

        var reCaptchaConfig = JSON.parse(McConfig.ReCaptcha);
        reCaptchaConfig.callback = function (response) {
            $inquiryPopup.find('.recaptcha-holder').removeClass('error');
            $inquiryPopup.find('input#ContactRecaptchaResponse').val(response);
        };
        reCaptchaConfig["expired-callback"] = function () {
            grecaptcha.reset(widgetId);
        };

        $inquiryPopup.removeClass('has-recaptcha');
        $inquiryPopup.find('.send-wrapper').hide();
        $inquiryPopup.find('.send-wrapper-recaptcha').hide();
        $inquiryPopup.find('.rememberme-recaptcha').hide();
        $inquiryPopup.find('.rememberme-ignore-recaptcha').hide();

        if (reCaptchaConfig.enabled) {
            $inquiryPopup.find('.rememberme-recaptcha').show();
            $inquiryPopup.addClass('has-recaptcha');
            $inquiryPopup.find('.send-with-recaptcha').css('min-height', '80px')
            $inquiryPopup.find('.send-wrapper-recaptcha').show('slow');
            if (widgetId == undefined) {
                widgetId = grecaptcha.render("contact-not-robot", reCaptchaConfig);
                $inquiryPopup.data('recaptcha-id', widgetId);
            } else {
                grecaptcha.reset(widgetId);
                $inquiryPopup.find('.ContactRecaptchaResponse').val('');
            }

            $('.recaptcha-holder').css('width', $('.recaptcha-holder div:first-child').width());
        } else {
            $inquiryPopup.find('.send-wrapper').show();
            $inquiryPopup.find('.rememberme-ignore-recaptcha').show();
        }
    }
};
$(document).ready(function () {
    if ($('#contact-country') != null && $('#contact-country').length > 0) {
        var initCountry = $('#contact-country').attr('selected-value');
        $('#contact-country option').filter('[value="' + initCountry + '"]').attr('selected', 'selected');

        $('#contact-country').on('change', function () {
            $(this).closest('form').submit();
        });
    }
    if ($('#contact-category') != null && $('#contact-category').length > 0) {

        var initCategory = $('#contact-category').attr('selected-value');
        $('#contact-category option').filter('[value="' + initCategory + '"]').attr('selected', 'selected');
        $('#contact-category').on('change', function () {
            $(this).closest('form').submit();
        });
    }
   
});
function LogregContactPopUp()
{
    var $popup = $('#Logreg-popup');

    $popup.openPopup({
        absolute: true
    });
}

$(document).on('device.load device.change', function (ev, type) {
    var contactItems = $(".contact-item .contacts-content"),
        contactItemsLength = contactItems.length, mod;

    if (type == "desktop") {
        mod = contactItemsLength % 3;
        if (mod == 0) {
            contactItems.slice(-3).css("border-bottom", "none");
        } else {
            contactItems.slice(-mod).css("border-bottom", "none");
        }
    }
    if (type == "tablet") {
        mod = contactItemsLength % 2;
        if (mod == 0) {
            contactItems.slice(-2).css("border-bottom", "none");
        } else {
            contactItems.slice(-mod).css("border-bottom", "none");
        }
    }
    if (type == "mobile") {
        contactItems.eq(contactItemsLength - 1).css("border-bottom", "none");
    }
});

$(document).on('device.load device.change', function (ev, type) {
    var $contactItems = $(".contact-item .contacts-content, .clickable-contacts-content .contacts-content");
    $contactItems.css({
        'min-height': '0',
        'padding-top': '0'
    });
    if (type != 'mobile') {
        if (!($('.detail-pages').length > 0) || ($('.detail-pages').length > 0 && type == 'desktop')) {
            var max = -1, current = null;
            var li = null;
            $contactItems.each(function (i, node) {
                if ((current = $(this).outerHeight()) > max) {
                    max = current, li = node;
                }
            });
            if (!$('html').hasClass('lt-ie8')) {
                $contactItems.not(li).each(function () {
                    var $this = $(this),
                        padding = (max - $this.outerHeight() > 0 ? max - $this.outerHeight() : 0) / 2;
                    /*TNMMCLITE-50 start*/
                    if ($('.detail-pages').length > 0 && type == 'desktop') {
                        padding = 0;
                    }
                    /*TNMMCLITE-50 start*/
                    $this.css({
                        'padding-top': 0//padding
                    });
                });
            } else {
                $contactItems.each(function () {
                    $(this).css({
                        'padding-bottom': '10px'
                    });
                });
            }
            $contactItems.css('min-height', max);
        }
    }
});
$(function () {
    var createContact = function (element) {
        return {
            name: element.data('contacts-content-name'),
            position: element.data('contacts-content-position'),
            address: element.data('contacts-content-address'),
            email: element.data('contacts-content-email'),
            phone: element.data('contacts-content-phone'),
            mobile: element.data('contacts-content-mobile-phone')
        };
    };

    $('.contacts-content').on('click', function () {
        if ($(this).hasClass('removepopup') === false)
        {
            var contactData = createContact($(this));
            new ContactInquiryPopupViewModel(contactData).Start();
            $("#contact-inquiry-popup").find("#AgreeForPrivacyNotice").prop('checked', false);
        }
    });

    $('#confirmation-contact-popup a.custom-button').on('click', function () {
        $('#confirmation-contact-popup').closePopup();
    });
    var ua = navigator.userAgent;
    if (ua.match(/iPad/i)) {
        $("#contact-inquiry-popup select").select2({
            minimumResultsForSearch: Infinity,
            width: '100%'
        });

        /*TNMMCLITE-3557*/
        var zIndex = parseInt($('input[name="McConfig.ZIndexPopUp"]').val());
        if (isNaN(zIndex)) {
            zIndex = 9999;
        }

        $("#contact-inquiry-popup select").on('select2:open', function (evt) {
            $('.select2-dropdown.select2-dropdown--below').css('z-index', (zIndex + 100));
        });
    }
});;
$(function () {
    var $container = $('.dev-cookies-message');

    var initializeDisclaimer = function () {
        var isCookieConsentAcceptedCookieName = $container.data("is-cookie-policy-accepted-cookie-name"),
            userCountryCodeCookieName = $container.data("user-country-code-cookie-name"),           
            euCountryCodes = $container.data("eu-country-codes").split(','),
            doShowForAll = $container.data("do-show-for-all") == "True",
            countryCode = $container.data("country-code");

        var strDomain = document.domain;
        var mainDomain = strDomain;
        var arrValue = strDomain.split(".");
        var subdomain = arrValue[0];
        if (arrValue.length > 2)
            strDomain = strDomain.replace(subdomain, '');

        $.cookie('isCookiePolicyAccepted', null, { path: '/' });
        $.cookie("isCookiePolicyAccepted", null, { domain: strDomain, path: "/" });
        $.cookie("isCookiePolicyAccepted", null, { domain: "." + strDomain, path: "/" });
        $.cookie("isCookiePolicyAccepted", null, { domain: "." + mainDomain, path: "/" });
        $.cookie("isCookiePolicyAccepted", null, { domain: ".thenewsmarket.info", path: "/" });
               
        var IsCookieConsentAccepted = JSON.parse($.cookie(isCookieConsentAcceptedCookieName));
        var isEuCountry = countryCode == '' ? _.contains(euCountryCodes, $.cookie(userCountryCodeCookieName)) : _.contains(euCountryCodes, countryCode.toUpperCase());
        
        if (!IsCookieConsentAccepted && (doShowForAll || isEuCountry)) {
            $container.show();
            $('body').addClass('cookie-disclaimer-shown');
            $container.on("click", ".cookies-button-ok", AcceptCookies);
        }
    };

    $container[0] && initializeDisclaimer();
});;
$(function () {

    $(document).ready(function () {

        var mrShortName = $("input:hidden[name='McConfig.MediaRoomShortName']").val()
        var customCSSFor = $("input:hidden[name='customCss']").val()

        if (customCSSFor) {
            var classExist = customCSSFor.indexOf(mrShortName)

            $("#cookieHeader").css("display", "block");
            if (classExist >= 0) {
                $("#cookieHeader").removeClass("page-header");
                $("#cookieHeader").addClass("page-header" + mrShortName);
            }
        }

        $(".accordion h3:last").addClass("active");
        $(".accordion h3:last").find("img").attr("src", "/Content/images/accordian-minus.png");
        $(".accordion .accordion-content:not(:last)").hide();

        $(".accordion h3").find("#lblCheck").click(function (e) {
            var val = $(this).val();
            e.stopPropagation();
        });

        var strDomain = document.domain;
        var mainDomain = strDomain;
        var arrValue = strDomain.split(".");
        var subdomain = arrValue[0];
        if (arrValue.length > 2)
            strDomain = strDomain.replace(subdomain, '');

        $.cookie('isCookiePolicyAccepted', null, { path: '/' });
        $.cookie("isCookiePolicyAccepted", null, { domain: strDomain, path: "/" });
        $.cookie("isCookiePolicyAccepted", null, { domain: "." + strDomain, path: "/" });
        $.cookie("isCookiePolicyAccepted", null, { domain: "." + mainDomain, path: "/" });
        $.cookie("isCookiePolicyAccepted", null, { domain: ".thenewsmarket.info", path: "/" });

        $(".accordion h3").click(function () {
            $(this).next(".accordion-content").slideToggle("slow")
                .siblings(".accordion-content:visible").slideUp("slow");
            $(this).toggleClass("active");
            $(this).siblings("h3").removeClass("active");
            $(this).siblings("h3").find("img").attr("src", "/Content/images/accordian-plus.png")
            var val = $(this).find("img").attr("src");
            if (val == "/Content/images/accordian-plus.png")
                $(this).find("img").attr("src", "/Content/images/accordian-minus.png");
            else
                $(this).find("img").attr("src", "/Content/images/accordian-plus.png");

        });

        $("#btnApplySetting").click(function () {
            var marketingCookie = 'optMark';
            var functionalCookie = 'optFunc';
            var requiredCookie = 'optReq';
            var date = getDateInYears(2);
            var cookiesamesite = $('#samesitecookieId').val();
            var cookiesecure = $('#securecookieId').val();

            if ($('#chkMarketing').prop('checked')) {
                //$.cookie(marketingCookie, 'true', { expires: 365, path: '/' });
                document.cookie = marketingCookie + "=true;" + 365 + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";
            }
            else {
                //$.cookie(marketingCookie, 'false', { expires: 365, path: '/' });
                document.cookie = marketingCookie + "=false;" + 365 + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";

                //remove cookies
                $.cookie('__atuvc', null, { path: '/' });
                $.cookie('__atuvs', null, { path: '/' });
                $.cookie('__atuvc', null, { domain: strDomain, path: "/" });
                $.cookie('__atuvs', null, { domain: strDomain, path: "/" });
                $.cookie('__atuvc', null, { domain: "." + strDomain, path: "/" });
                $.cookie('__atuvs', null, { domain: "." + strDomain, path: "/" });
                $.cookie('__atuvc', null, { domain: "." + mainDomain, path: "/" });
                $.cookie('__atuvs', null, { domain: "." + mainDomain, path: "/" });
            }

            if ($('#chkFunctional').prop('checked')) {
                //$.cookie(functionalCookie, 'true', { expires: 365, path: '/' });
                document.cookie = functionalCookie + "=true;" + 365 + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";
            }
            else {
                //$.cookie(functionalCookie, 'false', { expires: 365, path: '/' });
                document.cookie = functionalCookie + "=false;" + 365 + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";

                //remove cookies
                $.cookie('inquiry-popup-data', null, { path: '/' });
                $.cookie('CulturePreference', null, { path: '/' });
                $.cookie('cookieStore', null, { path: '/' });

                $.cookie('download-format-options', null, { path: '/' });
                $.cookie("download-format-options", null, { domain: strDomain, path: "/" });
                $.cookie("download-format-options", null, { domain: "." + strDomain, path: "/" });
                $.cookie("download-format-options", null, { domain: "." + mainDomain, path: "/" });
                $.cookie("download-format-options", null, { domain: ".thenewsmarket.info", path: "/" });

                $.cookie("_ga", null, { domain: strDomain, path: "/" });
                $.cookie("_gat", null, { domain: strDomain, path: "/" });
                $.cookie("_gid", null, { domain: strDomain, path: "/" });
                $.cookie("_ga", null, { domain: "." + mainDomain, path: "/" });
                $.cookie("_gat", null, { domain: "." + mainDomain, path: "/" });
                $.cookie("_gid", null, { domain: "." + mainDomain, path: "/" });
                $.cookie("_ga", null, { domain: "." + strDomain, path: "/" });
                $.cookie("_gat", null, { domain: "." + strDomain, path: "/" });
                $.cookie("_gid", null, { domain: "." + strDomain, path: "/" });

                $.cookie('__utma', null, { path: '/' });
                $.cookie('__utmb', null, { path: '/' });
                $.cookie('__utmc', null, { path: '/' });
                $.cookie('__utmt', null, { path: '/' });
                $.cookie('__utmz', null, { path: '/' });
                $.cookie('__utmd', null, { path: '/' });
                $.cookie('__utm', null, { path: '/' });

                $.cookie('__utma', null, { domain: strDomain, path: "/" });
                $.cookie('__utmb', null, { domain: strDomain, path: "/" });
                $.cookie('__utmc', null, { domain: strDomain, path: "/" });
                $.cookie('__utmt', null, { domain: strDomain, path: "/" });
                $.cookie('__utmz', null, { domain: strDomain, path: "/" });
                $.cookie('__utmd', null, { domain: strDomain, path: "/" });
                $.cookie('__utm', null, { domain: strDomain, path: "/" });

                $.cookie('__utma', null, { domain: "." + strDomain, path: "/" });
                $.cookie('__utmb', null, { domain: "." + strDomain, path: "/" });
                $.cookie('__utmc', null, { domain: "." + strDomain, path: "/" });
                $.cookie('__utmt', null, { domain: "." + strDomain, path: "/" });
                $.cookie('__utmz', null, { domain: "." + strDomain, path: "/" });
                $.cookie('__utmd', null, { domain: "." + strDomain, path: "/" });
                $.cookie('__utm', null, { domain: "." + strDomain, path: "/" });

                $.cookie('__utma', null, { domain: "." + mainDomain, path: "/" });
                $.cookie('__utmb', null, { domain: "." + mainDomain, path: "/" });
                $.cookie('__utmc', null, { domain: "." + mainDomain, path: "/" });
                $.cookie('__utmt', null, { domain: "." + mainDomain, path: "/" });
                $.cookie('__utmz', null, { domain: "." + mainDomain, path: "/" });
                $.cookie('__utmd', null, { domain: "." + mainDomain, path: "/" });
                $.cookie('__utm', null, { domain: "." + mainDomain, path: "/" });

                $.cookie("s_cc", null, { domain: strDomain, path: "/" });
                $.cookie("s_fid", null, { domain: strDomain, path: "/" });
                $.cookie("s_sq", null, { domain: strDomain, path: "/" });

                $.cookie("_ga", null, { domain: ".thenewsmarket.info", path: "/" });
                $.cookie("_gid", null, { domain: ".thenewsmarket.info", path: "/" });
                $.cookie("s_cc", null, { domain: ".thenewsmarket.info", path: "/" });
                $.cookie("s_fid", null, { domain: ".thenewsmarket.info", path: "/" });
                $.cookie("s_sq", null, { domain: ".thenewsmarket.info", path: "/" });

                $.cookie("_ga", null, { domain: ".thenewsmarket.com", path: "/" });
                $.cookie("_gid", null, { domain: ".thenewsmarket.com", path: "/" });
                $.cookie("s_cc", null, { domain: ".thenewsmarket.com", path: "/" });
                $.cookie("s_fid", null, { domain: ".thenewsmarket.com", path: "/" });
                $.cookie("s_sq", null, { domain: ".thenewsmarket.com", path: "/" });

                $.cookie('__utma', null, { domain: '.dlq.newsmarket.com', path: '/' });
                $.cookie('__utmb', null, { domain: '.dlq.newsmarket.com', path: '/' });
                $.cookie('__utmc', null, { domain: '.dlq.newsmarket.com', path: '/' });
                $.cookie('__utmt', null, { domain: '.dlq.newsmarket.com', path: '/' });
                $.cookie('__utmz', null, { domain: '.dlq.newsmarket.com', path: '/' });

                var ga_id = $('#GAID').val();
                $.cookie('_dc_gtm_' + ga_id, null, { path: '/' });
                $.cookie('_dc_gtm_' + ga_id, null, { domain: strDomain, path: "/" });
                $.cookie('_dc_gtm_' + ga_id, null, { domain: "." + strDomain, path: "/" });
                $.cookie('_dc_gtm_' + ga_id, null, { domain: "." + mainDomain, path: "/" });

                $.cookie('_gat_' + ga_id, null, { path: '/' });
                $.cookie('_gat_' + ga_id, null, { domain: strDomain, path: "/" });
                $.cookie('_gat_' + ga_id, null, { domain: "." + strDomain, path: "/" });
                $.cookie('_gat_' + ga_id, null, { domain: "." + mainDomain, path: "/" });

                $.cookie("NID", null, { domain: ".google.com", path: "/" });
            }

            if ($('#chkRequired').prop('checked')) {
                //$.cookie(requiredCookie, 'true', { expires: date, path: '/' });
                document.cookie = requiredCookie + "=true;" + date + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";
            }
            else {
                //$.cookie(requiredCookie, 'false', { expires: date, path: '/' });
                document.cookie = requiredCookie + "=false;" + date + ";path=/;SameSite=" + cookiesamesite + ";" + cookiesecure + ";";

                //remove cookies
                $.cookie('IsCookieConsentAccepted', null, { path: '/' });
                $.cookie('tell-us-about-you-data', null, { path: '/' });
                $.cookie('first-name', null, { path: '/' });
            }

            var $container = $('.cookies-message');

            var isCookiePolicyAcceptedCookieName = $container.data("is-cookie-policy-accepted-cookie-name"),
                samesite = $container.data("samesite"),
                secure = $container.data("secure");
            //$.cookie(isCookiePolicyAcceptedCookieName, true, { path: "/", expires: date });
            document.cookie = isCookiePolicyAcceptedCookieName + "=true;" + date + ";path=/;SameSite=" + samesite + ";" + secure + ";";
            $container.hide();

            //To reload the page and load scripts as per settings applied
            location.reload(true);
        });
        $(".devAcceptCookiesToShare").click(function () {
            AcceptCookies();
            $("#accept-cookies-to-share-popup").closePopup();
        });
    });
});;
String.prototype.replaceAll = function (find, replace) {
    var str = this;
    return str.replace(new RegExp(find, 'g'), replace);
};

var LogregLegacy = new function () {
    var logregproxyframe = 'logregproxyframe',
        $logregproxyframe = $('#logregproxyframe'),
        mrShortName = $("input:hidden[name='McConfig.MediaRoomShortName']").val(),
        messageTo = $("input:hidden[name='McConfig.Logregv3DomainUrl']").val(),
        iframeProxyUrl = $("input:hidden[name='McConfig.Logregv3DomainUrl']").val() + '/message-proxy.asp',
        logregEnabled = $("input:hidden[name='McConfig.IsLogregEnabled']").val(),
        logregWebApiUrl = $("input:hidden[name='McConfig.LogregWebApiDomainUrl']").val(),
        iframeInstance = null,
        LoginCallbackMethod = 'LogRegHelper.LoginCallBackMethod',
        CreateTellUsAboutYouCookieCallbackMethod = 'LogRegHelper.CreateTellUsAboutYouCookie',
        PopulateAccountDataCallbackMethod = 'LogRegHelper.PopulateAccountData',
        PopulateDropDownsCallbackMethod = 'LogRegHelper.PopulateDropDowns',
        PopulatePositionsMTVFCallbackMethod = 'LogRegHelper.PopulatePositionsMTVF',
        EditCallbackMethod = 'LogRegHelper.EditCallbackMethod',
        PasswordReminderCallbackMethod = 'LogRegHelper.ForgotPasswordCallbackMethod',
        RegCallbackMethod = 'LogRegHelper.RegCallBackMethod',
        Reg1CallbackMethod = 'LogRegHelper.Reg1CallBackMethod',
        UserRegistrationCallbackMethod = 'LogRegHelper.RegistrationCallbackMethod',
        PopulateUserTypeCallbackMethod = 'LogRegHelper.PopulateUserType',
        ActivationCallBack = 'LogRegHelper.ActivationCallBack',
        PopulateDropDownState = 'PopulateDropDownsCallbackMethod'

    var urls = {
        MyAccountUrl: logregWebApiUrl + '/api/account/{mrShortName}/{sessionGuid}/{callbackMethod}?callbackMethod={callbackMethod}',
        RegisterPrefillUrl: logregWebApiUrl + '/api/user/registerPrefill/{mrShortName}/{callbackMethod}?callbackMethod={callbackMethod}',
        MyAccountEditUrl: logregWebApiUrl + '/api/user/myaccount?callbackMethod={callbackMethod}',        
        PasswordReminderUrl: logregWebApiUrl + '/api/user/Passwordreminder?callbackMethod={CallbackMethod}',
        CheckEmailAvailabilityUrl: logregWebApiUrl + '/api/user/CheckEmailAvailability?callbackMethod={CallbackMethod}',
        UserRegistrationUrl: logregWebApiUrl + '/api/user/register?callbackMethod={CallbackMethod}',
        RegisterPrefillUserTypeUrl: logregWebApiUrl + '/api/user/RegisterPrefillUserType/{mrShortName}/{callbackMethod}?callbackMethod={callbackMethod}',
        UserActivationurl: logregWebApiUrl + '/api/user/Activation?callbackMethod={callbackMethod}'
    };

    LoadIFrame();
    OnSubmitForm();

    this.IsLegacyBrowser = function () {
        return $('html').hasClass('lt-ie9') || $('html').hasClass('lt-ie10');
    }

    this.SendLoginMessage = function () {
        SetState("form#frmLogin", LoginCallbackMethod);
        $("form#frmLogin").submit();
    }

    this.SendAccountSummaryMessage = function (sessionGuid) {
        $("body").data('sessionGuid', sessionGuid);
        SetState("form#frmLogin", PopulateAccountDataCallbackMethod);
        $("form#frmLogin").submit();
    }

    this.SendMyAccountEditMessage = function (userTypeId, formName) {
        $("form#frmAccountEdit").data('UserTypeId', userTypeId);
        OnSubmitEditForm();
        $("form#frmAccountEdit").submit();
    }    

    this.SendPasswordReminderMessage = function () {
        OnSubmitPasswordReminderForm();
        $("form#frmForgotPassword").submit();
    }

    this.SendCheckEmailMessage = function (email) {
        OnSubmitRegisterStep1Form(email);
        $("form#frmRegister").submit();
    }
    this.SendCheckEmailMessageStep2 = function (email) {
        OnSubmitRegisterStep2Form(email);
        $("form#frmRegistrationStep2").submit();
    }
    this.SendUserRegistrationMessage = function () {
        OnSubmitRegisterStep3Form();
        $("form#frmRegistrationStep3").submit();
    }
    
    this.SendGetRegisterPrefillUserType = function () {
        OnClickOfSignupFromLogin();
        $("form#frmLogin").submit();
    }

    this.SendActivateUserAccountMessage = function (activationGuid) {
        OnUserActivationLink(activationGuid);
         $("form#frmLogin").submit();
    }

    this.SendPopulateDropdownMessage = function () {
        SetState("form#frmRegister", PopulateDropDownState);
        OnSubmitRegisterStep1Form();
        $("form#frmRegister").submit();
    }
    

    this.SendLogoutMessage = function () {
        CleanupTempStates();
    }

    function SetState(form, state) {        
        $(form).addClass(state);
    }

    function LoadIFrame() {
        if (logregEnabled.toLowerCase() != 'true') {
            return;
        }

        $('<iframe />', {
            id: logregproxyframe,
            src: iframeProxyUrl
        }).appendTo('body').hide();

        $logregproxyframe.ready(function () {
            iframeInstance = document.getElementById(logregproxyframe).contentWindow;
        });

        //Attach event handlers for notification
        if (window.addEventListener) {
            addEventListener("message", ReceiveMessage, true);
        } else {
            attachEvent("onmessage", ReceiveMessage);
        }

    }

    function ReceiveMessage(event) {
        if (event.data.match(LoginCallbackMethod) ||
            event.data.match(CreateTellUsAboutYouCookieCallbackMethod) ||
            event.data.match(PopulateAccountDataCallbackMethod) ||
            event.data.match(PopulateDropDownsCallbackMethod) ||
            event.data.match(PopulatePositionsMTVFCallbackMethod) ||
            event.data.match(EditCallbackMethod) ||            
            event.data.match(PasswordReminderCallbackMethod) ||
            event.data.match(RegCallbackMethod) ||
            event.data.match(Reg1CallbackMethod) ||
            event.data.match(UserRegistrationCallbackMethod) ||
            event.data.match(PopulateUserTypeCallbackMethod) ||
            event.data.match(ActivationCallBack)
         )
        {
            CleanupTempStates();
            eval(event.data);
        }
    }

    function CleanupTempStates() {
        $('form#frmLogin').removeClass('login-to-site');
        $('form#frmLogin').removeClass(LoginCallbackMethod);
        $('form#frmLogin').removeClass(PopulateAccountDataCallbackMethod);
        $('form#frmLogin').removeClass(PopulateDropDownsCallbackMethod);
        $('form#frmLogin').removeClass(PopulatePositionsMTVFCallbackMethod);
        $('form#frmLogin').removeClass(PopulateDropDownState);
        
    }

    function GetData(callbackMethodName) {
        var data = {};
        data.MrShortName = mrShortName;
        data.SessionGuid = $("body").data('sessionGuid');
        data.CallbackMethod = callbackMethodName;

        return data;
    }

    function getUrl(url, callbackMethodName) {
        var sessionGuid = $("body").data('sessionGuid');
        return url.replaceAll('{mrShortName}', mrShortName)
                    .replaceAll('{sessionGuid}', sessionGuid)
                    .replaceAll('{callbackMethod}', callbackMethodName);
    }

    function OnSubmitForm() {
        $("form#frmLogin").unbind('submit').bind('submit', function (event) {
            event.preventDefault();

            if ($("form#frmLogin").hasClass('login-to-site')) {
                loginToSite();
            }
            else if ($("form#frmLogin").hasClass(PopulateAccountDataCallbackMethod)) {
                myAccount();
                
                //TNMMCLITE-1080
                setTimeout(function () {
                    populateAccountData();
                    populateMTVF();
                }, 1000);
            }
            else if ($("form#frmLogin").hasClass(LoginCallbackMethod)) {
                login();
            }
        });
    }
    function OnSubmitPasswordReminderForm()
    {
        //Forget password form
        $("form#frmForgotPassword").unbind('submit').bind('submit',function (event) {
            event.preventDefault();
            sendPasswordReminder();
        });
    }
    function OnSubmitEditForm() {
        //Account Edit form
        $("form#frmAccountEdit").unbind('submit').bind('submit',function (event) {
            event.preventDefault();
            editMyAccount();
        });
    }

    function OnSubmitPasswordReminderForm() {
        //Forget password form
        $("form#frmForgotPassword").unbind('submit').bind('submit', function (event) {
            event.preventDefault();
            sendPasswordReminder();
        });
    }

    function OnSubmitRegisterStep1Form(email) {
        //Forget password form
        $("form#frmRegister").unbind('submit').bind('submit', function (event) {
            event.preventDefault();

            if ($("form#frmRegister").hasClass(PopulateDropDownState)) {
                populateAccountData();
                populateMTVF();
            }
            else {
                sendCheckEmailAvailability(RegCallbackMethod, email);
            }
        });
    }

    function OnSubmitRegisterStep2Form(email) {
        //Forget password form
        $("form#frmRegistrationStep2").unbind('submit').bind('submit', function (event) {
            event.preventDefault();
            sendCheckEmailAvailability(Reg1CallbackMethod,email);
        });
    }
    function OnSubmitRegisterStep3Form(email) {
        //Forget password form
        $("form#frmRegistrationStep3").unbind('submit').bind('submit', function (event) {
            event.preventDefault();
            sendUserRegister();
        });
    }
    function OnClickOfSignupFromLogin() {
        //Forget password form
        $("form#frmLogin").unbind('submit').bind('submit', function (event) {
            event.preventDefault();
            sendRegisterPrefillUserType();
        });
    }

    function OnUserActivationLink(activationGuid) {
        $("form#frmLogin").unbind('submit').bind('submit', function (event) {
            event.preventDefault();
            sendUserActivation(activationGuid);
        });
    } 

    function login() {
        var data = {};
        data.requestType = 'post';
        data.MrShortName = mrShortName;
        data.CallbackMethod = LoginCallbackMethod;
        data.Comments = null;
        data.Culture = null;
        data.Email = $('.divLogin #EmailID').val();
        data.Password = $('.divLogin #Password').val();
        data.CaptchaText = $("#recaptcha_response_field").val();
        data.captchaChallenge = $("#recaptcha_challenge_field").val();

        data.ajaxUrl = logregWebApiUrl + "/api/user/login?callbackMethod=" + data.CallbackMethod;

    
    }

    function loginToSite() {
        data = {};
        var url = getUrl(urls.MyAccountUrl, CreateTellUsAboutYouCookieCallbackMethod);
        data.ajaxUrl = url;
    
    }

    function myAccount() {
        data = {};
        var url = getUrl(urls.MyAccountUrl, PopulateAccountDataCallbackMethod);
        data.ajaxUrl = url;
    
    }

    function populateAccountData() {
        data = {};
        var url = getUrl(urls.RegisterPrefillUrl, PopulateDropDownsCallbackMethod);
        data.ajaxUrl = url;
    
    }

    function populateMTVF() {
        data = {};
        var url = getUrl(urls.RegisterPrefillUrl, PopulatePositionsMTVFCallbackMethod);
        data.ajaxUrl = url;
    
    }

    function editMyAccount() {
        var inputs = {};
        inputs.requestType = 'post';
        inputs.ajaxUrl = getUrl(urls.MyAccountEditUrl, EditCallbackMethod)

        inputs.mrShortName = mrShortName;
        inputs.CallbackMethod = EditCallbackMethod;
        inputs.Comments = "";
        inputs.Culture = 'en-US';
        inputs.UserTypeId = $("form#frmAccountEdit").data('UserTypeId');
        inputs.Email = $(".divAccountEdit #EmailAddress").val();
        inputs.Password = $(".divAccountEdit #Password").val();
        var newEmail = $(".divAccountEdit #NewPassword").val();
        if (newEmail != null && newEmail != undefined && newEmail != "") {
            inputs.NewPassword = $(".divAccountEdit #NewPassword").val();
            inputs.VerifyPassword = $(".divAccountEdit #VerifyNewPassword").val();
            inputs.EditMode = 1;
        }
        else {
            inputs.EditMode = 0;
        }
        inputs.TempToken = LogRegHelper.GetTempToken();
        if (inputs.TempToken.length == 0) {
            var $popup = $('#AccountEdit-popup');
            $popup.closePopup();
            new LogRegHelper.LogRegPopupViewModel();
            return;
        }
        //'4774FAAE-0617-45D6-89DD-6BB72A9F246A'; // change this hard-coded value        
        inputs.FirstName = $(".divAccountEdit #FirstName").val();
        inputs.LastName = $(".divAccountEdit #LastName").val();
        inputs.Address1 = $(".divAccountEdit #Address1").val();
        inputs.Address2 = $(".divAccountEdit #Address2").val();
        inputs.Telephone = $(".divAccountEdit #Telephone").val();
        inputs.Fax = $(".divAccountEdit #Fax").val();
        inputs.City = $(".divAccountEdit #City").val();
        if ($(".divAccountEdit .ddlCountry option:selected").val() == "200") {
            inputs.StateProvince = $(".divAccountEdit .ddlState option:selected").text();
        }
        else {
            inputs.StateProvince = $(".divAccountEdit #StateProvince").val();
        }
        inputs.CountryId = $(".divAccountEdit .ddlCountry option:selected").val();
        inputs.PostalZipCode = $(".divAccountEdit #PostalZipCode").val();
        inputs.OrganizationName = $(".divAccountEdit #OrganizationName").val();
        inputs.WebAddress = $(".divAccountEdit #WebAddress").val();
        inputs.PositionId = $(".divAccountEdit .ddlPosition option:selected").val();

        if ($(".divAccountEdit .ddlPosition option:selected").val() != 0) {
            inputs.Title = $(".divAccountEdit .ddlPosition option:selected").text();
        }
        else {
            inputs.Title = $(".divAccountEdit #Specification").val();
        }        
        inputs.AboutYourOrganization = $(".divAccountEdit #AboutYourOrganization").val();
        //set default values if null or empty
        inputs.Address2 = inputs.Address2 == null ? '' : inputs.Address2;
        inputs.StateProvince = inputs.StateProvince == null ? '' : inputs.StateProvince;
        inputs.PostalCode = inputs.PostalZipCode == null ? '' : inputs.PostalZipCode;
        inputs.Fax = inputs.Fax == null ? '' : inputs.Fax;
        inputs.URLWebAddress = inputs.WebAddress == null ? '' : inputs.WebAddress;
        inputs.VideoFormatId = (inputs.VideoFormatId == null || inputs.VideoFormatId == '') ? 0 : inputs.VideoFormatId;

    
    }

    function sendPasswordReminder()
    {
        var inputs = PasswordReminderInput;
        inputs.requestType = 'post';
        inputs.ajaxUrl = getUrl(urls.PasswordReminderUrl, PasswordReminderCallbackMethod);
        
        inputs.MrShortName = mrShortName;
        inputs.Email = $("form#frmForgotPassword #ForgotEmailAddress").val();
        inputs.CallbackMethod = PasswordReminderCallbackMethod;
        inputs.Comments = "";
        inputs.Culture = 'en-US';

    
    }

    function sendCheckEmailAvailability(regCallbackMethodName, email)
    {
        var inputs = CheckEmailAvailabilityInput;
        inputs.requestType = 'post';
        inputs.ajaxUrl = getUrl(urls.CheckEmailAvailabilityUrl, RegCallbackMethod);

        inputs.MrShortName = mrShortName;
        inputs.Email = email;
        inputs.CallbackMethod = regCallbackMethodName;
        inputs.Comments = "";
        inputs.Culture = 'en-US';

    
    }

    function sendUserRegister()
    {
        var inputs = RegisterInput;
        inputs.requestType = 'post';
        inputs.ajaxUrl = getUrl(urls.UserRegistrationUrl, UserRegistrationCallbackMethod);

        inputs.mrShortName = LogRegHelper.McShortName;
        inputs.CallbackMethod = UserRegistrationCallbackMethod;
        inputs.Comments = "";
        inputs.Culture = 'en-US';
        inputs.UserTypeId = window.userTypeId;
        inputs.Email = $("#EmailAddress").val();
        inputs.VerifyEmail = $("#VerifyEmail").val();
        inputs.Password = $(".divRegisterstep2 #Password").val();
        inputs.VerifyPassword = $("#VerifyPassword").val();
        inputs.FirstName = $("#FirstName").val();
        inputs.LastName = $("#LastName").val();
        inputs.Address1 = $("#Address1").val();
        inputs.Address2 = $("#Address2").val();
        inputs.Telephone = $("#Telephone").val();
        inputs.Fax = $("#Fax").val();
        inputs.City = $("#City").val();
        if ($(".ddlCountry option:selected").val() == "200") {
            inputs.StateProvince = $(".ddlState option:selected").text();
        }
        else {
            inputs.StateProvince = $("#StateProvince").val();
        }
        inputs.CountryId = $(".ddlCountry option:selected").val();
        inputs.PostalZipCode = $("#PostalZipCode").val();
        inputs.OrganizationName = $("#OrganizationName").val();
        inputs.WebAddress = $("#WebAddress").val();
        inputs.PositionId = $(".ddlPosition option:selected").val();

        if ($(".ddlPosition option:selected").val() != 0) {
            inputs.Title = $(".ddlPosition option:selected").text();
        }
        else {
            inputs.Title = $("#Specification").val();
        }       
        inputs.AboutYourOrganization = $("#AboutYourOrganization").val();

        //set default values if null or empty
        inputs.Address2 = inputs.Address2 == null ? '' : inputs.Address2;
        inputs.StateProvince = inputs.StateProvince == null ? '' : inputs.StateProvince;
        inputs.PostalCode = inputs.PostalZipCode == null ? '' : inputs.PostalZipCode;
        inputs.Fax = inputs.Fax == null ? '' : inputs.Fax;
        inputs.URLWebAddress = inputs.WebAddress == null ? '' : inputs.WebAddress;
        inputs.VideoFormatId = (inputs.VideoFormatId == null || inputs.VideoFormatId == '') ? 0 : inputs.VideoFormatId;
        inputs.EditMode = 0;

    
    }

    function sendRegisterPrefillUserType()
    {
        var inputs = {};
        inputs.ajaxUrl = getUrl(urls.RegisterPrefillUserTypeUrl, PopulateUserTypeCallbackMethod);
        inputs.MrShortName = mrShortName;
        inputs.CallbackMethod = PopulateUserTypeCallbackMethod;

    
    }

    function sendUserActivation(activationGuid)
    {
        var inputs = PasswordReminderInput;
        inputs.ajaxUrl = getUrl(urls.UserActivationurl, ActivationCallBack);
        inputs.requestType = 'post';
        inputs.MrShortName = mrShortName;
        inputs.ActivationGuid = activationGuid;
        inputs.CallbackMethod = ActivationCallBack;
        inputs.Comments = null;
        inputs.Culture = null;

    
    }

    

};
jQuery.validator.unobtrusive
    .adapters.addSingleVal("requiredifnotblank", "other");

jQuery.validator.addMethod("requiredifnotblank",
    function (val, element, other) {
        var modelPrefix = element.name.substr(0, element.name.lastIndexOf(".") + 1)
        var otherVal = $("[name=" + modelPrefix + other + "]").val();
        if (otherVal != "") {
            if (val == "") {
                return false;
            }
        }
        return true;
    }
);

var McShortName = GetShortMrName();
var usersLoginStatus = false;
var authorized = true;

var LogRegHelper = new function () {

    var LoginMode = null;
    var preLoginServerAssetsDataForDownload = null;
    this.McShortName = GetMrShortName();
    var userTypeId;
    this.BaseURL = GetBaseUri();

    var LoginAttemptsCookieName = 'loginAttemptsCookie';
    //var ContactusCookieName = 'ContactUsCookieStore';
    var ShowHideTitleCompanyCookieName = 'ShowHideTitleCompCookieStore';

    function GetMrShortName() {
        return $("input:hidden[name='McConfig.MediaRoomShortName']").val();
    }

    function GetBaseUri() {
        return $("input:hidden[name='McConfig.BaseUri']").val();
    }

    this.LogRegPopupViewModel = function () {

        //$('#divSignInHeader').html("SIGN IN");
        $('#divSignInInfo').html($('<div/>').html(_logregSignInSubTitle).text());
        // //("there You can use your the<span>news</span>market.com account email and password to sign in.");
        $('#divSignInNotRegister').show();
        $('#divSignInContact').show();
        var $popup = $('#Logreg-popup');
        LogRegHelper.ResetLoginControls();
        $popup.openPopup({ absolute: true });

        $('#link_ForgotPassword').live('click', function (e) {

            if (e.handled !== true) {
                new LogRegHelper.ForgotPasswordPopupViewModel();
                e.handled = true;
            }
        });

        $('#link_signup').live('click', function (e) {
            if (e.handled !== true) {
                new LogRegHelper.RegisterPopupViewModel();
                e.handled = true;
            }
        });

        $('#link_contactus').live('click', function (e) {
            if (e.handled !== true) {
                var contactData = { email: ContactUsEmailSendTo };
                new ContactInquiryPopupViewModel(contactData).Start();
                $("#contact-inquiry-popup").find("#AgreeForPrivacyNotice").prop('checked', false);
                e.handled = true;

            }
            $('#Logreg-popup').closePopup();
        });
    }

    this.ForgotPasswordPopupViewModel = function () {

        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/ForgetPassword",
            success: function (data) {
                $('#Logreg-popup').closePopup();
                $("#partialViewDiv").empty();
                $("#partialViewDiv").html(data);
                RebindValidators('frmForgotPassword');
                var $popup = $('#forgotPassword-popup');
                $popup.openPopup({
                    absolute: true
                });

                $("#ForgotEmailAddress").keyup(function () {
                    $('#lblForgotPasswordStatus').html("");
                });

                $('#forgotPassword-popup').removeData("validator");
                $.validator.unobtrusive.parse(document);

            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");

            }
        });
    }

    this.ActivationFaildPopupViewModel = function () {

        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/ActivationFailed",
            success: function (data) {
                $("#partialViewDiv").empty();
                $("#partialViewDiv").html(data);

                var $popup = $('#activationFailed-popup');
                $popup.openPopup();
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
            }
        });
    }

    this.ProcessRegRequest = function () {

        $("#register-popup .field-validation-error").show();  // hide all error messages place-holders
        window.fname = $("#FirstName").val();
        window.lname = $("#LastName").val();
        window.email = $("#EmailAddress").val();
        window.userTypeId = $(".ddlUserTypes option:selected").val();

        $(".txtEmail input#EmailAddress").val = window.email;
        var fname = $("#FirstName").val();
        var lname = $("#LastName").val();
        var email = $("#EmailAddress").val();
        var userType = $(".ddlUserTypes option:selected").val();

        var form = document.forms["frmRegister"];
        $(form).validate();
        if (!$(form).valid()) {
            return;
        }
        if (fname != "" && fname != null && fname != undefined && lname != "" && lname != null && lname != undefined && email != "" && email != null && email != undefined) {
            if (!LogregLegacy.IsLegacyBrowser()) {
                CheckEmailAvailability(LogRegHelper.McShortName, email, 'LogRegHelper.RegCallBackMethod', null, 'en-US');
            }
            else {
                LogregLegacy.SendCheckEmailMessage(email);
            }
        }
        else {
            $('#lblReg1Status').html("Please select atleast on value");
        }
    }

    this.RegCallBackMethod = function (data) {
        if ((typeof data !== typeof undefined) && data != null) {
            if (!IsSuccess_Logreg(data)) {
                LogRegHelper.ShowTryNewEmailScreen();
                $('#register-popup').closePopup();
                $('#Logreg-popup').closePopup();
            }
            else {
                LogRegHelper.Register2PopupViewModel();
                $('#register-popup').closePopup();
                $('#Logreg-popup').closePopup();
            }
        }
    }

    this.RegisterPopupViewModel = function () {
        LogRegHelper.ShowLogregLoadingSpinner();
        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/RegistrationStep1",
            success: function (data) {
                $('#Logreg-popup').closePopup();
                $("#partialViewDiv").empty();
                $("#partialViewDiv").html(data);
                if (HeardFrom == 'true') {
                    $('#lblHeardFrom').show();
                    $('#txtHeardFrom').show();
                }
                else {
                    $('#lblHeardFrom').hide();
                    $('#txtHeardFrom').hide();
                }
                RebindValidators('frmRegister');

                var $popup = $('#register-popup');
                LogRegHelper.ClearRegistrationStep1Controls();
                LogRegHelper.ClearRegistrationStep2Controls();
                LogRegHelper.ClearRegistrationStep3Controls();

                $popup.openPopup({
                    absolute: true
                });

                $('#Lnk-Signin').live('click', function (e) {
                    if (e.handled !== true) {
                        new LogRegHelper.LogRegPopupViewModel();
                        $('#register-popup').closePopup();
                        e.handled = true;
                    }
                });

                if (!LogregLegacy.IsLegacyBrowser()) {
                    GetRegisterPrefillUserType(LogRegHelper.McShortName, "LogRegHelper.PopulateUserType", getCultureLocale());
                }
                else {
                    LogregLegacy.SendGetRegisterPrefillUserType();
                }

                $('#frmRegister').removeData("validator");
                $.validator.unobtrusive.parse(document);
                LogRegHelper.HideLogregSpinner();
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
                LogRegHelper.HideLogregSpinner();
            }
        });

    }

    this.Register2PopupViewModel = function () {
        if ($(".divAccountDetails").length == 0) {
            LogRegHelper.ShowLogregLoadingSpinner();
            $.ajax({
                type: 'POST',
                url: LogRegHelper.BaseURL + "/Login/RegistrationStep2",
                success: function (data) {
                    $("#partialViewDiv").append(data);
                    LogRegHelper.ShowRegisterationSecondThirdSteps();

                    LogRegHelper.HideLogregSpinner();
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    console && console.log("request failed");
                    LogRegHelper.HideLogregSpinner();
                }
            });
        }
        else {
            LogRegHelper.ShowRegisterationSecondThirdSteps();
        }


    }

    this.ShowRegisterationSecondThirdSteps = function () {
        $(".divOrgDetails").css("display", "none");
        $(".txtSpecifyOther input[type=text]").attr('disabled', 'disabled');

        $(".ddlState").css("display", "none");

        var $popup = $('#register2-popup');
        RebindValidators('frmRegistrationStep2');
        RebindValidators('frmRegistrationStep3');

        $popup.openPopup({
            absolute: true
        });
        $(".divAccountDetails").css("display", "block");
        $(".divOrgDetails").css("display", "none");
        if ($('.ddlCountry select:first > option').length <= 1) {
            if (!LogregLegacy.IsLegacyBrowser()) {
                GetRegisterPrefillData(LogRegHelper.McShortName, "LogRegHelper.PopulateDropDowns", getCultureLocale());
                GetRegisterPrefillData(LogRegHelper.McShortName, "LogRegHelper.PopulatePositionsMTVF", getCultureLocale());
            }
            else {
                LogregLegacy.SendPopulateDropdownMessage();
            }
        }

        LogRegHelper.PreFillEntry();
    }

    this.PreFillEntry = function () {
        $('.txtEmail input[type=text]').val(window.email);
        $('.txtFname input[type=text]').val(window.fname);
        $('.txtLname input[type=text]').val(window.lname);
    }

    this.showAccountDetail = function () {
        $(".divAccountDetails").css("display", "block");
        $(".divOrgDetails").css("display", "none");
    }

    this.ShowOrgDetails = function () {
        $("#register2-popup .field-validation-error").show();    // show all error messages place-holders
        var form = document.forms["frmRegistrationStep2"];
        $(form).validate();
        if (!$(form).valid()) {
            return;
        }
        var email = $(".txtEmail input[type=text]").val();
        if (!LogregLegacy.IsLegacyBrowser()) {
            CheckEmailAvailability(LogRegHelper.McShortName, email, 'LogRegHelper.Reg1CallBackMethod', null, 'en-US');
        }
        else {
            LogregLegacy.SendCheckEmailMessageStep2(email);
        }
    }

    this.Reg1CallBackMethod = function (data) {
        if ((typeof data !== typeof undefined) && data != null) {
            if (!IsSuccess_Logreg(data)) {
                LogRegHelper.ShowTryNewEmailScreen();
                $('#register2-popup').closePopup();
            }
            else {
                $(".divAccountDetails").css("display", "none");
                $(".divOrgDetails").css("display", "block");

            }
        }
    }

    function TranslateMessage(messageInfo) {
        var msg = '';
        if (messageInfo != null) {
            if (messageInfo.key != null && _logreg_messages != null) {
                msg = _logreg_messages[messageInfo.key];// 'user_type_not_found');
                if (messageInfo.MessageValues != null) {
                    for (var i = 0; i < messageInfo.MessageValues.length; i++) {
                        msg = msg.replace('{' + i.toString() + '}', messageInfo.MessageValues[i]);
                    }
                }
            }
            if (!msg)
                msg = messageInfo.Text;
        }

        return msg;
    }

    this.PopulateUserType = function (usertypedata) {

        if ((typeof usertypedata !== typeof undefined) && usertypedata != null) {
            if (!IsSuccess_Logreg(usertypedata)) {
                var msg = TranslateMessage(usertypedata.MessageInfo);
                if (msg)
                    alert("Error Message : " + msg);
            }
            if (IsSuccess_Logreg(usertypedata)) {
                // read collections
                var temp = usertypedata.Data;

                //  write your binding logic here
                var $select = $(".ddlUserTypes select:first");
                var listitems = "";

                //USUKCountries
                $.each(temp.UserTypes, function (key, value) {

                    listitems += '<option value=' + value.UserTypeId + '>' + value.Attribute_Value + '</option>';
                });

                $select.append(listitems);
            }
        }
    }

    this.PopulateDropDowns = function (countrydata) {
        if ((typeof countrydata !== typeof undefined) && countrydata != null && $(".ddlCountry").length <= 1) {
            if (!IsSuccess_Logreg(countrydata)) {
                alert("Error Message : " + TranslateMessage(countrydata.MessageInfo));
            }
            if (IsSuccess_Logreg(countrydata)) {
                // read collections
                var temp = countrydata.Data;

                //  write your binding logic here
                var $select = $(".ddlCountry select:first");
                var listitems = "";

                //USUKCountries
                $.each(temp.USUKCountries, function (key, value) {
                    listitems += '<option value=' + value.Country_Id + '>' + value.Country_Name + '</option>';
                });
                //OtherCountries
                $.each(temp.OtherCountries, function (key, value) {
                    listitems += '<option value=' + value.Country_Id + '>' + value.Country_Name + '</option>';
                });
                //set dropdown

                //job title                               
                $select.append(listitems);

                //USStateProvince
                var $selectState = $('.ddlState select:first');
                var statelistitems = "";

                $.each(temp.USStateProvince, function (key, value) {
                    statelistitems += '<option value=' + value.State_Id + '>' + value.State_name + '</option>';
                });

                $selectState.append(statelistitems);
            }
        }
    }

    this.PopulateStateDropdown = function () {
        if ($(".divRegisterstep2 .ddlCountry").length > 0) {
            var selvalue = $(".divRegisterstep2 .ddlCountry option:selected").val();
            if (selvalue == 200) {
                $(".divRegisterstep2 .ddlState").css("display", "block");
                $(".divRegisterstep2 .txtState1").css("display", "none");
                $(".divRegisterstep2 .txtState1").css("visibility", "hidden");
                $(".divRegisterstep2 .ddlState").css("visibility", "visible");
            }
            else {
                $(".divRegisterstep2 .ddlState").css("display", "none");
                $(".divRegisterstep2 .ddlState").css("visibility", "hidden");
                $(".divRegisterstep2 .txtState1").css("display", "block");
                $(".divRegisterstep2 .txtState1").css("visibility", "visible");
            }
        }

        if ($(".divAccountEdit .ddlCountry").length > 0) {
            var selEditvalue = $(".divAccountEdit .ddlCountry option:selected").val();
            if (selEditvalue == 200) {
                $(".divAccountEdit .ddlState").css("display", "block");
                $(".divAccountEdit .txtState1").css("display", "none");
                $(".divAccountEdit .txtState1").css("visibility", "hidden");
                $(".divAccountEdit .ddlState").css("visibility", "visible");
            }
            else {

                if ($(".divAccountEdit .txtState1").css('display') == 'none') {
                    $(".divAccountEdit .txtState1 #StateProvince").val("");
                }

                $(".divAccountEdit .ddlState").css("display", "none");
                $(".divAccountEdit .ddlState").css("visibility", "hidden");
                $(".divAccountEdit .txtState1").css("display", "block");
                $(".divAccountEdit .txtState1").css("visibility", "visible");
            }
        }
    }

    this.PopulatePositionsMTVF = function (data) {
        if ((typeof data !== typeof undefined) && data != null && $(".ddlPosition").length <= 1) {
            if (data.MessageInfo != null) {
                var msg = TranslateMessage(data.MessageInfo);
                if (msg) {
                    alert("Error Message : " + TranslateMessage(data.MessageInfo));
                }
            }
            if (data.Data != null && (data.Data.length != 0)) {
                // read collections
                var tempTitle = data.Data;
                // binding logic here
                var $JobTitleselect = $(".ddlPosition select:first");
                var Titlelistitems = "";

                //job title
                $.each(tempTitle.JobTitle, function (key, value) {
                    Titlelistitems += '<option value=' + value.Reference_Title_Id + '>' + value.Reference_Title_Name + '</option>';
                });
                //set dropdown

                //job title   
                $JobTitleselect.append(Titlelistitems);

            }
        }
    }

    this.showOther = function () {
        $(".txtSpecifyOther input[type=text]").val(" ");
        var selvalue = $(".ddlPosition option:selected").val();
        if (selvalue != "0") {
            $(".txtSpecifyOther input[type=text]").attr('disabled', 'disabled');
            $(".txtSpecifyOther span.field-validation-error span").css("display", "none");
        }
        else {
            $(".txtSpecifyOther input[type=text]").removeAttr('disabled');
            $(".txtSpecifyOther span.field-validation-error span").css("display", "block");
        }

        var selvalue1 = $(".divAccountEdit .ddlPosition option:selected").val();
        if (selvalue1 != "0") {
            $(".divAccountEdit .txtSpecifyOther input[type=text]").attr('disabled', 'disabled');
            $(".divAccountEdit .txtSpecifyOther span.field-validation-error span").css("display", "none");
        }
        else {
            $(".divAccountEdit .txtSpecifyOther input[type=text]").removeAttr('disabled');
            $(".divAccountEdit .txtSpecifyOther span.field-validation-error span").css("display", "block");
        }
    }



    this.userRegistration = function () {
        var form = document.forms["frmRegistrationStep3"];
        $(form).validate();
        if (!$(form).valid()) {
            return;
        }
        if (!LogregLegacy.IsLegacyBrowser()) {
            var inputs = RegisterInput;
            inputs.mrShortName = LogRegHelper.McShortName;
            inputs.CallbackMethod = 'LogRegHelper.RegistrationCallbackMethod';
            inputs.Comments = "";
            inputs.Culture = 'en-US';
            inputs.UserTypeId = window.userTypeId;
            inputs.Email = $("#EmailAddress").val();
            inputs.HeardFrom = $("#HeardFrom").val();
            inputs.VerifyEmail = $("#VerifyEmail").val();
            inputs.Password = $(".divRegisterstep2 #Password").val();
            inputs.VerifyPassword = $("#VerifyPassword").val();
            inputs.FirstName = $("#FirstName").val();
            inputs.LastName = $("#LastName").val();
            inputs.Address1 = $("#Address1").val();
            inputs.Address2 = $("#Address2").val();
            inputs.Telephone = $("#Telephone").val();
            inputs.Fax = $("#Fax").val();
            inputs.City = $("#City").val();
            if ($(".ddlCountry option:selected").val() == "200") {
                inputs.StateProvince = $(".ddlState option:selected").text();
            }
            else {
                inputs.StateProvince = $("#StateProvince").val();
            }
            inputs.CountryId = $(".ddlCountry option:selected").val();
            inputs.PostalZipCode = $("#PostalZipCode").val();
            inputs.OrganizationName = $("#OrganizationName").val();
            inputs.WebAddress = $("#WebAddress").val();
            inputs.PositionId = $(".ddlPosition option:selected").val();

            if ($(".ddlPosition option:selected").val() != 0) {
                inputs.Title = $(".ddlPosition option:selected").text();
            }
            else {
                inputs.Title = $("#Specification").val();
            }
            inputs.AboutYourOrganization = $("#AboutYourOrganization").val();

            //set default values if null or empty
            inputs.Address2 = inputs.Address2 == null ? '' : inputs.Address2;
            inputs.StateProvince = inputs.StateProvince == null ? '' : inputs.StateProvince;
            inputs.PostalCode = inputs.PostalZipCode == null ? '' : inputs.PostalZipCode;
            inputs.Fax = inputs.Fax == null ? '' : inputs.Fax;
            inputs.URLWebAddress = inputs.WebAddress == null ? '' : inputs.WebAddress;
            inputs.VideoFormatId = (inputs.VideoFormatId == null || inputs.VideoFormatId == '') ? 0 : inputs.VideoFormatId;
            inputs.CultureLocale = getCultureLocale();
            registerUser(inputs);
        }
        else {
            LogregLegacy.SendUserRegistrationMessage()
        }
    }
    this.RegistrationCallbackMethod = function (data) {
        if ((typeof data !== typeof undefined) && data != null) {
            if (IsSuccess_Logreg(data)) {
                LogRegHelper.Register4PopupViewModel();
            }
            else if (!IsSuccess_Logreg(data)) {

                $('#Reg2Status').html(TranslateMessage(data.MessageInfo));
            }

        }
    }

    this.AcccountSummaryView = function () {
        var $popup = $('#AccountSummary-popup');
        $popup.openPopup({
            absolute: true
        });
        $('#Logreg-popup').closePopup();
    }

    this.ShowMyaccount = function (sessionGuid) {
        if (!LogregLegacy.IsLegacyBrowser()) {
            AccountSummary(LogRegHelper.McShortName, 'LogRegHelper.PopulateAccountData', sessionGuid, getCultureLocale());
        } else {
            LogregLegacy.SendAccountSummaryMessage(sessionGuid);
        }
    }

    this.ShowTryNewEmailScreen = function () {
        LogRegHelper.ShowLogregLoadingSpinner();
        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/TryNewEmail",
            success: function (data) {
                $("#partialViewDiv").append(data);

                $('#TryNewEmail_Btn').live('click', function (e) {
                    if (e.handled !== true) {
                        new LogRegHelper.RegisterPopupViewModel();
                        $("#trynewemail-popup").closePopup();
                        e.handled = true;
                    }
                });

                // Contact us page open
                $('#link_contactus').live('click', function (e) {
                    if (e.handled !== true) {
                        var contactData = { email: ContactUsEmailSendTo };
                        new ContactInquiryPopupViewModel(contactData).Start();
                        $("#contact-inquiry-popup").find("#AgreeForPrivacyNotice").prop('checked', false);
                        e.handled = true;
                    }
                    $('#trynewemail-popup').closePopup();
                    $('#Logreg-popup').closePopup();
                });

                LogRegHelper.HideLogregSpinner();
                var $popup = $('#trynewemail-popup');
                $popup.openPopup({
                    absolute: true
                });
                $('#register-popup').closePopup();

            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
                LogRegHelper.HideLogregSpinner();
            }
        });
    }

    // Registartion3
    this.Register4PopupViewModel = function () {

        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/RegistrationStep4",
            success: function (data) {
                $("#partialViewDiv").append(data);

                var $popup = $('#register4-popup');
                $popup.openPopup({
                    absolute: true
                });
                $('#register2-popup').closePopup();

                $('#ReturnToLogin_Btn').live('click', function (e) {
                    if (e.handled !== true) {
                        new LogRegHelper.LogRegPopupViewModel();
                        $("#register4-popup").closePopup();
                        e.handled = true;
                    }
                });

            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
            }
        });


    }

    this.ValidateRegex = function (strToValidate, rgx) {
        var re1 = new RegExp(rgx);
        if (strToValidate.match(re1)) {
            return true;
        }
        else {
            return false;
        }
    }
    var selCountryValue = "0";
    var Ref_Title_Id = null;
    var stateSelected = "";
    var type = "";
    var position = "";
    var video_Format_Id = "";
    var aboutYourOrganization = "";

    this.PopulateAccountData = function (data) {
        if (!LogregLegacy.IsLegacyBrowser()) {
            GetRegisterPrefillData(LogRegHelper.McShortName, "LogRegHelper.PopulateDropDowns", getCultureLocale());
            GetRegisterPrefillData(LogRegHelper.McShortName, "LogRegHelper.PopulatePositionsMTVF", getCultureLocale());
        }

        var regxContainsAlphaNumeric = /[a-zA-Z0-9]/i;
        var myAddressSummary = '';
        if (data.Data.Table[0].Address1 != null && this.ValidateRegex(data.Data.Table[0].Address1, regxContainsAlphaNumeric)) {
            myAddressSummary += data.Data.Table[0].Address1;
        }
        if (data.Data.Table[0].Address2 != null && this.ValidateRegex(data.Data.Table[0].Address2, regxContainsAlphaNumeric)) {
            if (myAddressSummary.length > 0) {
                myAddressSummary += " ";
            }
            myAddressSummary += data.Data.Table[0].Address2;
        }
        var myCitySummary = '';
        if (data.Data.Table[0].City != null && this.ValidateRegex(data.Data.Table[0].City, regxContainsAlphaNumeric)) {
            myCitySummary += data.Data.Table[0].City;
        }
        if (data.Data.Table[0].State_Province != null && this.ValidateRegex(data.Data.Table[0].State_Province, regxContainsAlphaNumeric)) {
            if (myCitySummary.length > 0) {
                myCitySummary += ", ";
            }
            myCitySummary += data.Data.Table[0].State_Province;
        }

        var myPostalSummary = '';
        if (data.Data.Table[0].Postal_code != null && this.ValidateRegex(data.Data.Table[0].Postal_code, regxContainsAlphaNumeric)) {
            myPostalSummary += data.Data.Table[0].Postal_code;
        }
        var myPhoneSummary = '';
        if (data.Data.Table[0].Phone != null && this.ValidateRegex(data.Data.Table[0].Phone, regxContainsAlphaNumeric)) {
            myPhoneSummary += data.Data.Table[0].Phone;
        }
        var myFaxSummary = '';
        if (data.Data.Table[0].Fax != null && this.ValidateRegex(data.Data.Table[0].Fax, regxContainsAlphaNumeric)) {
            myFaxSummary += data.Data.Table[0].Fax;
        }
        var emailId = '';
        if (data.Data.Table[0].User_email_id != undefined) {
            emailId = data.Data.Table[0].User_email_id;
        }
        else {
            emailId = data.Data.Table[0].User_Email_Id;
        }
        var ractive = new Ractive({
            el: '#AccountSummary-popup',
            template: '#template',
            //partials: { thumbnail: myThumbnailPartial },
            //data: { address1: 'G-203,Sector 7', address2: 'Suncity', city: 'Ahmedabad', Phone: data1.Phone }
            data: {
                name: data.Data.Table[0].First_Name + " " + data.Data.Table[0].Last_Name,
                address: myAddressSummary,
                countryName: data.Data.Table[0].Country_Name,
                city: myCitySummary,
                Fax: myFaxSummary,
                Postal: myPostalSummary,
                city: myCitySummary,
                Phone: myPhoneSummary,
                Email: emailId,
                Title: data.Data.Table[0].Title,
                Organization_Name: data.Data.Table[0].Organization_Name,
                Position: data.Data.Table[0].Position
            }
        });

        var phone = data.Data.Table[0].Phone;
        if ((data.Data.Table[0].Phone == null || data.Data.Table[0].Phone.length == 0) && (data.Data.Table[0].Phone1 != null && data.Data.Table[0].Phone1.length > 0)) {
            phone = data.Data.Table[0].Phone1;
        }

        var fax = data.Data.Table[0].Fax;
        if ((data.Data.Table[0].Fax == null || data.Data.Table[0].Fax.length == 0) && (data.Data.Table[0].Fax1 != null && data.Data.Table[0].Fax1.length > 0)) {
            fax = data.Data.Table[0].Fax1;
        }

        selCountryValue = data.Data.Table[0].Country_Id;
        stateSelected = data.Data.Table[0].State_Province;
        Ref_Title_Id = data.Data.Table[0].Reference_Title_Id;

        var ractiveEdit = new Ractive({
            el: '#AccountEdit-popup',
            template: '#template1',
            data: {
                firstName: data.Data.Table[0].First_Name,
                lastName: data.Data.Table[0].Last_Name,
                address1: data.Data.Table[0].Address1,
                address2: data.Data.Table[0].Address2,
                countryName: data.Data.Table[0].Country_Name,
                city: data.Data.Table[0].City,
                state: data.Data.Table[0].State_Province,
                fax: fax,
                city: data.Data.Table[0].City,
                telePhone: phone,
                email: emailId,
                Title: data.Data.Table[0].Title,
                organizationName: data.Data.Table[0].Organization_Name,
                Position: data.Data.Table[0].Position,
                postalCode: data.Data.Table[0].Postal_code,
                webAddress: data.Data.Table[0].URL_Web_Address,
                countryId: selCountryValue
            }
        });


        userTypeId = data.Data.Table[0].User_Type_Id;
        type = data.Data.Table[0].Type;
        position = data.Data.Table[0].Position;
        video_Format_Id = data.Data.Table[0].Video_Format_Id;
        aboutYourOrganization = data.Data.Table[0].Contribution_Info;
        new LogRegHelper.AcccountSummaryView();
        $('#frmAccountEdit').removeData("validator");
        $.validator.unobtrusive.parse(document);

        $('#frmOrgEdit').removeData("validator");
        $.validator.unobtrusive.parse(document);
        LogRegHelper.HideLogregSpinner();
    }

    this.showEditAccount = function (sessionGuid) {
        LogRegHelper.ShowLogregLoadingSpinner();

        $("#EditStatus").hide();
        $("#frmAccountEdit .field-validation-error").hide();    // show all error messages place-holders - frmAccountEdit
        $("#frmOrgEdit .field-validation-error").hide();    // show all error messages place-holders - frmOrgEdit    

        $("#frmAccountEdit #EmailAddress").attr('disabled', 'disabled');


        $("#AccountEdit-popup .divAccountDetails").css("display", "block");
        $("#AccountEdit-popup .divOrgDetails").css("display", "none");
        if ($('.divAccountDetails .ddlCountry option').length > 0) {
            $('.divAccountDetails .ddlCountry option[value=' + selCountryValue + ']').attr('selected', true);
        }

        if (selCountryValue == 200) {
            $(".divAccountEdit .ddlState").css("display", "block");
            $(".divAccountEdit .ddlState").css("visibility", "visible");

            $('.divAccountDetails .ddlState option').filter(function (index) { return $(this).text() === stateSelected; }).attr('selected', true);

            $(".divAccountEdit .txtState1").css("display", "none");
            $(".divAccountEdit .txtState1").css("visibility", "hidden");
        }
        else {
            $(".divAccountEdit .ddlState").css("display", "none");
            $(".divAccountEdit .ddlState").css("visibility", "hidden");

            $(".divAccountEdit .txtState1").css("display", "block");
            $(".divAccountEdit .txtState1").css("visibility", "visible");
        }

        $(".txtSpecifyOther input").attr('disabled', 'disabled');

        if (Ref_Title_Id != null) {
            $('.divOrgDetails .ddlPosition option[value=' + Ref_Title_Id + ']').attr('selected', true);
        }

        if (Ref_Title_Id == null) {
            $('.divOrgDetails .ddlPosition option[value=' + 0 + ']').attr('selected', true);
            $(".divAccountEdit .txtSpecifyOther input[type=text]").removeAttr('disabled');
            $(".divAccountEdit .txtSpecifyOther span.field-validation-error span").css("display", "block");
            $(".divAccountEdit .txtSpecifyOther input[type=text]").val(position)
        }

        if (userTypeId == "4" || userTypeId == "6" || userTypeId == "7") {
            $(".divAccountEdit #divSpecifyOther").removeClass("first-column").addClass("second-column");

        }
        else {
            $(".divAccountEdit #divSpecifyOther").removeClass("second-column").addClass("first-column");
        }
        $('.divOrgDetails #AboutYourOrganization').val(aboutYourOrganization);

        var $popup = $('#AccountEdit-popup');
        RebindValidators('frmAccountEdit');

        $popup.openPopup({
            absolute: true
        });
        $('#AccountSummary-popup').closePopup();
        LogRegHelper.HideLogregSpinner();
    }

    this.CancelEdit = function () {
        $('#AccountEdit-popup').closePopup();
        LogRegHelper.ShowAccountlayer();
    }


    this.showEditOrg = function () {
        $("#EditStatus").hide();
        LogRegHelper.ShowLogregLoadingSpinner();
        $("#frmOrgEdit .field-validation-error").hide();    // show all error messages place-holders - frmOrgEdit

        $("#frmOrgEdit #OrganizationName").attr('disabled', 'disabled');
        $("#AccountEdit-popup .divAccountDetails").css("display", "none");
        $("#AccountEdit-popup .divOrgDetails").css("display", "block");
        if ($('.divAccountDetails .ddlCountry option').length > 0) {
            $('.divAccountDetails .ddlCountry option[value=' + selCountryValue + ']').attr('selected', true);
        }

        if (selCountryValue == 200) {
            $(".divAccountEdit .ddlState").css("display", "block");
            $(".divAccountEdit .ddlState").css("visibility", "visible");

            $('.divAccountDetails .ddlState option').filter(function (index) { return $(this).text() === stateSelected; }).attr('selected', true);

            $(".divAccountEdit .txtState1").css("display", "none");
            $(".divAccountEdit .txtState1").css("visibility", "hidden");
        }
        else {
            $(".divAccountEdit .ddlState").css("display", "none");
            $(".divAccountEdit .ddlState").css("visibility", "hidden");

            $(".divAccountEdit .txtState1").css("display", "block");
            $(".divAccountEdit .txtState1").css("visibility", "visible");
        }

        $(".txtSpecifyOther input").attr('disabled', 'disabled');
        if (Ref_Title_Id != null) {
            $('.divOrgDetails .ddlPosition option[value=' + Ref_Title_Id + ']').attr('selected', true);
        }

        if (Ref_Title_Id == null) {
            $('.divOrgDetails .ddlPosition option[value=' + 0 + ']').attr('selected', true);
            $(".divAccountEdit .txtSpecifyOther input[type=text]").removeAttr('disabled');
            $(".divAccountEdit .txtSpecifyOther span.field-validation-error span").css("display", "block");
            $(".divAccountEdit .txtSpecifyOther input[type=text]").val(position)
        }

        if (userTypeId == "4" || userTypeId == "6" || userTypeId == "7") {
            $(".divAccountEdit #divSpecifyOther").removeClass("first-column").addClass("second-column");

        }
        else {
            $(".divAccountEdit #divSpecifyOther").removeClass("second-column").addClass("first-column");
        }
        $('.divOrgDetails #AboutYourOrganization').val(aboutYourOrganization);
        var $popup = $('#AccountEdit-popup');
        RebindValidators('frmOrgEdit');

        $popup.openPopup({
            absolute: true
        });
        $('#AccountSummary-popup').closePopup();
        LogRegHelper.HideLogregSpinner();

    }

    this.EditAccountandOrgDetail = function (formName) {
        $("#AccountEdit-popup .field-validation-error").show();    // show all error messages place-holders - frmAccountEdit
        $("#frmOrgEdit .field-validation-error").show();    // show all error messages place-holders - frmOrgEdit
        var form = document.forms[formName];

        $(form).validate();
        if (!$(form).valid()) {
            return;
        }

        if (!LogregLegacy.IsLegacyBrowser()) {
            var inputs = RegisterInput;

            inputs.mrShortName = LogRegHelper.McShortName;
            inputs.CallbackMethod = 'LogRegHelper.EditCallbackMethod';
            inputs.Comments = "";
            inputs.Culture = 'en-US';
            inputs.UserTypeId = userTypeId;
            inputs.Email = $(".divAccountEdit #EmailAddress").val();
            inputs.Password = $(".divAccountEdit #Password").val();
            var newEmail = $(".divAccountEdit #NewPassword").val();
            if (newEmail != null && newEmail != undefined && newEmail != "") {
                inputs.NewPassword = $(".divAccountEdit #NewPassword").val();
                inputs.VerifyPassword = $(".divAccountEdit #VerifyNewPassword").val();
                inputs.EditMode = 1;
            }
            else {
                inputs.EditMode = 0;
            }
            inputs.TempToken = LogRegHelper.GetTempToken();
            if (inputs.TempToken.length == 0) {
                var $popup = $('#AccountEdit-popup');
                $popup.closePopup();
                new LogRegHelper.LogRegPopupViewModel();
                return;
            }
            //'4774FAAE-0617-45D6-89DD-6BB72A9F246A'; // change this hard-coded value        
            inputs.FirstName = $(".divAccountEdit #FirstName").val();
            inputs.LastName = $(".divAccountEdit #LastName").val();
            inputs.Address1 = $(".divAccountEdit #Address1").val();
            inputs.Address2 = $(".divAccountEdit #Address2").val();
            inputs.Telephone = $(".divAccountEdit #Telephone").val();
            inputs.Fax = $(".divAccountEdit #Fax").val();
            inputs.City = $(".divAccountEdit #City").val();
            if ($(".divAccountEdit .ddlCountry option:selected").val() == "200") {
                inputs.StateProvince = $(".divAccountEdit .ddlState option:selected").text();
            }
            else {
                inputs.StateProvince = $(".divAccountEdit #StateProvince").val();
            }
            inputs.CountryId = $(".divAccountEdit .ddlCountry option:selected").val();
            inputs.PostalZipCode = $(".divAccountEdit #PostalZipCode").val();
            inputs.OrganizationName = $(".divAccountEdit #OrganizationName").val();
            inputs.WebAddress = $(".divAccountEdit #WebAddress").val();
            inputs.PositionId = $(".divAccountEdit .ddlPosition option:selected").val();

            if ($(".divAccountEdit .ddlPosition option:selected").val() != 0) {
                inputs.Title = $(".divAccountEdit .ddlPosition option:selected").text();
            }
            else {
                inputs.Title = $(".divAccountEdit #Specification").val();
            }
            inputs.AboutYourOrganization = $(".divAccountEdit #AboutYourOrganization").val();
            //set default values if null or empty
            inputs.Address2 = inputs.Address2 == null ? '' : inputs.Address2;
            inputs.StateProvince = inputs.StateProvince == null ? '' : inputs.StateProvince;
            inputs.PostalCode = inputs.PostalZipCode == null ? '' : inputs.PostalZipCode;
            inputs.Fax = inputs.Fax == null ? '' : inputs.Fax;
            inputs.URLWebAddress = inputs.WebAddress == null ? '' : inputs.WebAddress;
            inputs.VideoFormatId = (inputs.VideoFormatId == null || inputs.VideoFormatId == '') ? 0 : inputs.VideoFormatId;

            MyAccountEdit(inputs);
        } else {
            LogregLegacy.SendMyAccountEditMessage(userTypeId, formName);
        }

    }

    this.EditCallbackMethod = function (data) {
        var myAcctUpdateSucessMessage = $("#hdn_Logreg_Statusmessage_MyAccount").val();
        var myAcctUpdateErrorMessage = $("#hdn_Logreg_Statusmessage_MyAccount").val();

        if ((typeof data !== typeof undefined) && data != null) {
            if (IsSuccess_Logreg(data)) {
                ;
                $("#EditStatus").text(myAcctUpdateSucessMessage);
                $("#EditStatus").show();

                var cookieName = 'optReq';
                var date = getDateInYears(2);
                var isCookieEnabled = JSON.parse($.cookie(cookieName));
                if (!isCookieEnabled) {
                    $.cookie(cookieName, 'true', { expires: date, path: '/' });
                    $.cookie("first-name", $(".divAccountEdit #FirstName").val(), {
                        path: '/'
                    });
                }
                else {
                    $.cookie("first-name", $(".divAccountEdit #FirstName").val(), {
                        path: '/'
                    });
                }
            }
            else if (!IsSuccess_Logreg(data)) {
                var msg = '';
                if (data != null) {
                    msg = TranslateMessage(data.MessageInfo);
                }

                if (msg) {
                    $("#EditStatus").text(msg);
                }
                else { $("#EditStatus").text(myAcctUpdateErrorMessage); }

                $("#EditStatus").show();
            }
            //LogRegHelper.CancelEdit();
        }
    }

    this.showAccessDenied = function () {
        var $popup = $('#accessDenied-popup');
        $popup.openPopup({
            absolute: true
        });
        $('#Logreg-popup').closePopup();
    }

    this.closeLayer = function (popupname) {
        $(popupname).closePopup();
    }

    this.updateQueryStringParameter = function (uri, key, value) {
        var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
        var separator = uri.indexOf('?') !== -1 ? "&" : "?";
        if (uri.match(re)) {
            return uri.replace(re, '$1' + key + "=" + value + '$2');
        }
        else {
            return uri + separator + key + "=" + value;
        }
    }

    this.Logout = function () {
        LogRegHelper.ShowLogregLoadingSpinner();
        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/Logout",
            // data: loginjson,
            success: function (returnPayload) {
                if (LogregLegacy.IsLegacyBrowser()) {
                    LogregLegacy.SendLogoutMessage();
                }
                LogRegHelper.ShowNonLoginInLinks();
                LogRegHelper.ExpireLogregv3Cookie();

                var cookieName = 'optReq';
                var date = getDateInYears(2);
                var isCookieEnabled = JSON.parse($.cookie(cookieName));
                if (!isCookieEnabled) {
                    $.cookie(cookieName, 'true', { expires: date, path: '/' });
                    $.removeCookie("first-name", {
                        path: '/'
                    });
                    $.removeCookie('tell-us-about-you-data', { path: '/' });
                }
                else {
                    $.removeCookie("first-name", {
                        path: '/'
                    });
                    $.removeCookie('tell-us-about-you-data', { path: '/' });
                }

                var AuthenticationMode = GetAuthenticationMode();

                window.location.href = GetBaseUri();


                LogRegHelper.HideLogregSpinner();
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
                window.location.reload();
                LogRegHelper.HideLogregSpinner();
            }
        });
    }

    this.ShowNonLoginInLinks = function () {
        $('ul li.li-header-logreg ul.dynamic-menu').children().remove();
        $("ul.static-menu li.preLogin-header-link").clone(true).appendTo("ul li.li-header-logreg ul.dynamic-menu");
    }

    this.ExpireLogregv3Cookie = function () {
        $('#logregv3-frame').attr("src", Logregv3DomainUrl + "/ContentPage/TNM/Login.aspx?l=0");
    }

    this.ShowAccountlayer = function () {
        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/MyAccountSummary",
            // data: loginjson,
            success: function (returnPayload) {
                if (returnPayload.Message.length != 0) {
                    //show Success or error message after save
                    var htmlView = returnPayload.PartialViewHtml;
                    $("#partialViewDiv").html(htmlView);

                    $('#frmLogin').removeData("validator");
                    $.validator.unobtrusive.parse(document);


                    $.ajax({
                        type: 'POST',
                        url: LogRegHelper.BaseURL + "/Login/MyAccountEdit",
                        // data: loginjson,
                        success: function (data) {
                            $("#partialViewDiv").append(data);

                            $(".ddlState").css("display", "none");
                            $(".txtSpecifyOther input").attr('disabled', 'disabled');
                            LogRegHelper.ShowMyaccount(returnPayload.Message.Data);
                        },
                        error: function (xhr, ajaxOptions, thrownError) {
                            console && console.log("request failed");
                        }
                    });
                }
                else {
                    new LogRegHelper.LogRegPopupViewModel();
                }

            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
            }
        });
    }

    this.ShowLogregLoadingSpinner = function () {
        $(".signing-in").css("display", "none");
        $(".loading").css("display", "block");
        var $popup = $('#logreg-spinner');
        $popup.openPopup({
            absolute: true
        });
    }

    this.ShowLogregLoadingIcon = function () {
        var $popup = $('#logreg-loading-icon');
        $popup.openPopup({
            absolute: true
        });
    }
    this.HideLogregLoadingIcon = function () {
        var $popup = $('#logreg-loading-icon');
        $popup.closePopup();
    }


    this.IsDownloadFeatureGated = function () {
        //if (McConfig.IsLogregEnabled.toLowerCase() == 'true' && McConfig.IsDownloadGated.toLowerCase() == 'true') {
        if (McConfig.IsLogregEnabled.toLowerCase() == 'true') {
            if (McConfig.AuthenticationMode.toLowerCase() == 'downloadgeated' || McConfig.IsDownloadGated.toLowerCase() == 'true') {
                return true;
            }
        }
        return false;
    }

    this.IsLogregEnabled = function () {
        if (McConfig.IsLogregEnabled.toLowerCase() == 'true') {
            //LoginMode=mode;
            //preLoginServerAssetsDataForDownload=ModeData;
            return true;
        }
        else return false;
    }

    this.IsUserCurrentlyLoggedin = function () {
        var loginjson = {
            "callbackMethod": "ShowLogregMenu"
        };
        $.ajax({
            async: false,
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/IsLoggedIn",
            data: loginjson,
            async: false,
            success: function (returnPayload) {
                IsLoggedInStatus(Boolean(returnPayload));
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
            }
        });
    }

    this.CheckUserLogin = function (mode, ModeData, storyGuid) {

        var loginjson = {
            "callbackMethod": "ShowLogregMenu",
            "strAuthenticationMode": GetAuthenticationMode(),
            "strAuthorizationMode": GetAuthorizationMode(),
            "strPremiumUserAttribute": GetPremiumUserAttribute()
        };

        $.ajax({
            type: 'POST',

            url: LogRegHelper.BaseURL + "/Login/CheckAuthentication",
            data: loginjson,
            async: false,
            success: function (returnPayload) {
                var isloggedInUser = Boolean(returnPayload.loginSuccess);

                if (isloggedInUser) {
                    if (Boolean(returnPayload.authorized)) {
                        LogRegHelper.ResumeDownloadPostLogin(mode, ModeData, storyGuid);
                    }
                    else {
                        showAuthorizationErrorMessage();
                    }
                }
                else {
                    LoginMode = mode;
                    preLoginServerAssetsDataForDownload = ModeData;
                    LogRegHelper.LogRegForDownload();
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
            }
        });
    }


    this.ClearRegistrationStep1Controls = function () {
        $("#register-popup .field-validation-error").hide();    // hide all error messages place-holders
        $('#frmRegister input[type="text"], textarea').each(function () {
            $(this).val('');            // clear all the text boxes and text area ('Message')
            $(this).val();            // clear all the text boxes and text area ('Message')
        });
        $('#frmRegister select').each(function () {
            $('select option:first-child').attr("selected", "selected");  // default select the first option of all dropdown list
            $("#frmRegister #UserTypes").val("Select");
        });

    }

    this.ClearRegistrationStep2Controls = function () {
        $("#register2-popup .field-validation-error").hide();    // hide all error messages place-holders
        $('#frmRegistrationStep2 input[type="text"], textarea').each(function () {
            $(this).val('');            // clear all the text boxes and text area ('Message')
            $(this).val();            // clear all the text boxes and text area ('Message')
        });
        $('#frmRegistrationStep2 input[type="password"]').each(function () {
            $(this).val('');            // clear all the text boxes and text area ('Message')
            $(this).val();            // clear all the text boxes and text area ('Message')
        });
        $('#frmRegistrationStep2 select').each(function () {
            $('select option:first-child').attr("selected", "selected");  // default select the first option of all dropdown list
            $("#frmRegistrationStep2 #Country").val("Select");
        });
    }

    this.ClearRegistrationStep3Controls = function () {
        //$("#divRegisterstep3 .field-validation-error").hide();    // hide all error messages place-holders
        $('#frmRegistrationStep3 input[type="text"], textarea').each(function () {
            $(this).val('');            // clear all the text boxes and text area ('Message')
            $(this).val();            // clear all the text boxes and text area ('Message')
        });
        $('#frmRegistrationStep3 input[type="password"]').each(function () {
            $(this).val('');            // clear all the text boxes and text area ('Message')
            $(this).val();            // clear all the text boxes and text area ('Message')
        });
        $('#frmRegistrationStep3 select').each(function () {
            $('select option:first-child').attr("selected", "selected");  // default select the first option of all dropdown list
            $("#frmRegistrationStep3 #Position").val("Select");
        });
    }



    this.ShowRegisterPopupOnCancel = function () {
        var $popup = $('#register-popup');
        $popup.openPopup({
            absolute: true
        });
        $('#register2-popup').closePopup();
    }

    this.LogRegForDownload = function () {
        new LogRegHelper.LogRegPopupViewModel();
    }

    this.GetTempToken = function () {
        var tempToken;
        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/GetUserToken",
            async: false,
            // data: loginjson,
            success: function (returnPayload) {
                tempToken = returnPayload
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed -GetTempToken()");
            }
        });
        return tempToken;
    }
    var ContextResultModel = {
        TempToken: '',
        IsDownloadEnabled: true,
        ResultMessage: ''
    }

    this.CloseAndReopenLoginScreen = function () {
        var $popup = $('#Logreg-popup');
        $popup.closePopup();
        $popup.openPopup({
            absolute: true
        });
    }


    this.ProcessForgotPassowrdRequest = function () {
        var form = document.forms["frmForgotPassword"];
        $(form).validate();
        if (!$(form).valid()) {
            return;
        }
        var email = document.getElementById("ForgotEmailAddress").value;
        if (email != "" && email != null && email != undefined) {
            if (!LogregLegacy.IsLegacyBrowser()) {
                if ($('#hdnLogregV2Url').val()) {
                    ProcessPasswordReminderV2(LogRegHelper.McShortName, email, 'en-US');
                } else {
                    ProcessPasswordReminder(LogRegHelper.McShortName, email, 'LogRegHelper.ForgotPasswordCallbackMethod', null, 'en-US')
                }
            }
            else {
                LogregLegacy.SendPasswordReminderMessage();
            }
        }
    }

    this.ForgotPasswordCallbackMethod = function (data) {
        $('#lblForgotPasswordStatus').html("");
        if ((typeof data !== typeof undefined) && data != null) {
            if (data != null) {
                $('#lblForgotPasswordStatus').html(TranslateMessage(data.MessageInfo));
            }
            //if (IsSuccess_Logreg(data)) {
            //    if (data.MessageInfo != null && data.MessageInfo.Text != null) {
            //        $('#lblForgotPasswordStatus').html(data.MessageInfo.Text);
            //    }
            //}
            //else if (!IsSuccess_Logreg(data)) {
            //    $('#lblForgotPasswordStatus').html(data.MessageInfo.Text);
            //}
        }
        LogRegHelper.HideLogregSpinner();
    }

    this.ValidateResetPasswordGuidV2 = function () {
        debugger;
        LogRegHelper.ShowLogregLoadingSpinner();
        var guid = $('#hdnguid').val();
        //var url = $('#hdnLogregV2Url').val() + "/password/verifyresettoken/" + LogRegHelper.McShortName;
        var url = LogRegHelper.BaseURL + "/Login/VerifyResetToken";
        $.ajax({
            type: 'POST',
            url: url,
            data: { "accountResetGuid": guid },
            success: function (data) {
                debugger;
                if (data.IsValid) {
                    $('#hdnUserId').val(data.UserID);
                    var $popup = $('#reset-pw-popup');
                    $popup.openPopup({ absolute: true });
                } else {
                    var $popupMessage = $('#messageContainer-popup');
                    $popupMessage.openPopup({
                        absolute: true,
                        closed: function () {
                            window.location.href = '/';
                        }
                    });
                    $popupMessage.find("#divMessageAlert").html($("#hdnPwTokenExpired").val());
                }
                LogRegHelper.HideLogregSpinner();
            },
            error: function (xhr, ajaxOptions, thrownError) {
                LogRegHelper.HideLogregSpinner();
            }
        });
    }

    this.ResetPasswordSubmitV2 = function () {
        event.preventDefault();
        LogRegHelper.ShowLogregLoadingSpinner();
        var newPassword = $('#NewPassword').val();
        var confirmPassword = $('#ConfirmPassword').val();

        var form = $("#frmresetpw");
        $(form).validate();
        if (!$(form).valid()) {
            return;
        }

        //var actionUrl = $('#hdnLogregV2Url').val() + '/password/reset/' + LogRegHelper.McShortName + '/0';
        var actionUrl = LogRegHelper.BaseURL + "/Login/ResetPassword";
        debugger;
        var model = {
            AccountResetGUID: $('#hdnguid').val(),
            UserID: parseInt($('#hdnUserId').val()),
            NewPassword: newPassword
        };
        $.ajax({
            type: "POST",
            dataType: "json",
            url: actionUrl,
            data: model
        }).done(function (data) {
            LogRegHelper.HideLogregSpinner();
            debugger;
            if (!data) {
                $('#lblStatus').text($('#hdn_Password_required').val());
            }
            else if (data.IsSuccess) {
                var $popupMessage = $('#messageContainer-popup');
                $popupMessage.find("#divMessageAlert").html($("#hdnPasswordUpdated").val());
                $popupMessage.openPopup({
                    absolute: true,
                    closed: function () {
                        window.location.href = '/';
                    }
                });
            } else {
                var $popupMessage = $('#messageContainer-popup');
                $popupMessage.find("#divMessageAlert").html($("#hdnError").val());
                $popupMessage.openPopup({
                    absolute: true
                });
            }
        }).fail(function (jqXHR, textStatus) {
            LogRegHelper.HideLogregSpinner();
            debugger;
            var $popupMessage = $('#messageContainer-popup');
            $popupMessage.openPopup({
                absolute: true
            });
            $popupMessage.find("#divMessageAlert").html($("#hdnError").val());
        });
    };

    function ProcessPasswordReminderV2(McShortName, email, culture) {
        LogRegHelper.ShowLogregLoadingSpinner();
        debugger;
        //var url = $('#hdnLogregV2Url').val() + "/password/forgot/" + McShortName + "/" + culture;
        var url = LogRegHelper.BaseURL + "/Login/SendResetPasswordEmail";
        var loginjson = {
            "EmailId": email,
            "RedirectUrl": window.location.href
        };
        $.ajax({
            type: 'POST',
            url: url,
            data: loginjson,
            success: function (data) {
                LogRegHelper.HideLogregSpinner();
                debugger;
                if (!data) {
                    $('#lblForgotPasswordStatus').html($('#hdnError').val());
                    LogRegHelper.HideLogregSpinner();
                }
                else if (data.IsSuccess) {
                    $('#lblForgotPasswordStatus').html($('#hdnLinkSent').val());
                    LogRegHelper.HideLogregSpinner();
                } else {
                    $('#lblForgotPasswordStatus').html($('#hdnError').val());
                    LogRegHelper.HideLogregSpinner();
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                LogRegHelper.HideLogregSpinner();
                $('#lblForgotPasswordStatus').html($('#hdnError').val());
                LogRegHelper.HideLogregSpinner();
            }
        });
    }

    function reCaptchaSetup() {
        var widgetId;
        var $popup = $('#Logreg-popup');

        widgetId = $popup.data('recaptcha-id');
        var reCaptchaConfig = JSON.parse(McConfig.ReCaptcha);
        reCaptchaConfig.callback = function (response) {
            $popup.find('.recaptcha-holder').removeClass('error');
            $popup.find('input#LoginRecaptchaResponse').val(response);
        };
        reCaptchaConfig["expired-callback"] = function () {
            grecaptcha.reset(widgetId);
        };
        if (widgetId == undefined) {
            widgetId = grecaptcha.render("login-not-robot", reCaptchaConfig);
            $popup.data('recaptcha-id', widgetId);
        }
        else {
            grecaptcha.reset(widgetId);
            $popup.find('input#LoginRecaptchaResponse').val('');
        }
    }

    this.ProcessRequest = function () {
        $('#lblStatus').html("");
        if ($("#login-not-robot").length > 0) {
            var loginRecaptchaResponse = $("#LoginRecaptchaResponse").val();

            $("#Logreg-popup .field-validation-error").show();    // show all error messages place-holders
            var form = $("#frmLogin"); //document.forms["frmLogin"];
            $(form).validate();
            if (!$(form).valid()) {
                return;
            }

            if ($('#recaptcha_widget').css('display') == 'block' && loginRecaptchaResponse == '') {
                $('#msgCaptcha').show();
                return;
            }
            else {
                $('#msgCaptcha').hide();
            }

            LogRegHelper.ShowLogregSignInSpinner();
            //var recaptChachallengeField = $("#recaptcha_challenge_field").val();
            var email = $('.divLogin #EmailID').val();
            var pwd = $('.divLogin #Password').val();

            if (!LogregLegacy.IsLegacyBrowser()) {
                if (email != null && email != undefined && pwd != null && pwd != undefined) {
                    if (loginRecaptchaResponse != "") {
                        ProcessLogin(LogRegHelper.McShortName, email, pwd, null, 'LogRegHelper.LoginCallBackMethod', 'null', 'null', null, loginRecaptchaResponse);
                    }
                    else {
                        ProcessLogin(LogRegHelper.McShortName, email, pwd, null, 'LogRegHelper.LoginCallBackMethod', null, null, null, null);
                    }
                }
            }
            else {
                //TNMMCLITE-999 - Fix applied for IE8/IE9
                if (email != null && email != undefined && pwd != null && pwd != undefined) {
                    LogregLegacy.SendLoginMessage();
                }
            }
        }
        else {
            var captchText = $("#recaptcha_response_field").val();
            $("#Logreg-popup .field-validation-error").show();    // show all error messages place-holders
            var form = $("#frmLogin"); //document.forms["frmLogin"];
            $(form).validate();
            if (!$(form).valid()) {
                return;
            }

            if ($('#recaptcha_widget').css('display') == 'block' && captchText == '') {
                $('#msgCaptcha').show();
                return;
            }
            else {
                $('#msgCaptcha').hide();
            }

            LogRegHelper.ShowLogregSignInSpinner();
            var recaptChachallengeField = $("#recaptcha_challenge_field").val();
            var email = $('.divLogin #EmailID').val();
            var pwd = $('.divLogin #Password').val();

            if (!LogregLegacy.IsLegacyBrowser()) {
                if (email != null && email != undefined && pwd != null && pwd != undefined) {
                    if (captchText != null && captchText != undefined && captchText.length > 0 && recaptChachallengeField != null && recaptChachallengeField != undefined && recaptChachallengeField.length > 0) {
                        ProcessLogin(LogRegHelper.McShortName, email, pwd, captchText, 'LogRegHelper.LoginCallBackMethod', 'null', 'null', recaptChachallengeField);
                    }
                    else {
                        ProcessLogin(LogRegHelper.McShortName, email, pwd, null, 'LogRegHelper.LoginCallBackMethod', null, null, null);
                    }
                }
            }
            else {
                //TNMMCLITE-999 - Fix applied for IE8/IE9
                if (email != null && email != undefined && pwd != null && pwd != undefined) {
                    LogregLegacy.SendLoginMessage();
                }
            }
        }
    }

    this.ShowLogregSignInSpinner = function () {
        $(".signing-in").css("display", "block");
        $(".loading").css("display", "none");
        var $popup = $('#logreg-spinner');
        $popup.openPopup({
            absolute: true
        });
    }

    this.HideLogregSpinner = function () {
        var $popup = $('#logreg-spinner');
        $popup.closePopup();
    }

    this.LoginToSite = function (token) {
        var loginjson = {
            "token": token,
            "callbackMethod": "ShowLogregMenu",
            "strAuthenticationMode": GetAuthenticationMode(),
            "strAuthorizationMode": GetAuthorizationMode(),
            "strPremiumUserAttribute": GetPremiumUserAttribute()
        };

        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/Logintosite",
            data: loginjson,
            async: false,
            success: function (returnPayload) {

                var isloggedInUser = Boolean(returnPayload.loginSuccess);
                if (isloggedInUser) {
                    if (Boolean(returnPayload.authorized) == false) {
                        authorized = false;
                        showAuthorizationErrorMessage();

                    }
                    else {
                        authorized = true;
                    }
                    LogRegHelper.GetUserDataforCookie();
                }
                else if (Boolean(returnPayload.authorized) == false) {
                    authorized = false;
                }
                else {
                    LogRegHelper.GetUserDataforCookie();
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
            }

        });
    }

    this.OnLoginReload = function () {
        var protectedURL = getParameterByName("pu");
        var IsPreview = getParameterByName("CP");
        if (protectedURL) {
            var uri_dec = decodeURIComponent(protectedURL);

            if (IsPreview) {
                uri_dec = uri_dec + "?CP=" + IsPreview;
            }
            window.location.href = uri_dec;

        }
        if (window.location.href.toLowerCase().indexOf("sitesearch") > 0 || window.location.href.toLowerCase().indexOf("rss") > 0) {
            window.location.reload();
        }
    }

    this.GetUserDataforCookie = function () {
        $.ajax({
            async: false,
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/GetUserToken",

            success: function (returnPayload) {
                if (!LogregLegacy.IsLegacyBrowser()) {
                    AccountSummary(LogRegHelper.McShortName, 'LogRegHelper.CreateTellUsAboutYouCookie', returnPayload, getCultureLocale());
                } else {
                    LogregLegacy.SendAccountSummaryMessage(returnPayload);
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
            }

        });

    }

    this.ShowLoggedInLinks = function () {
        $('ul li.li-header-logreg ul.dynamic-menu').children().remove();
        $("ul.static-menu li.postLogin-header-link").clone(true).appendTo("ul li.li-header-logreg ul.dynamic-menu");

        var firstname = $.cookie('first-name');
        var isIEorEdge = !!navigator.userAgent.match(/Trident/g) || !!navigator.userAgent.match(/MSIE/g) || navigator.userAgent.indexOf("Edge") > -1;
        var isSafari = navigator.userAgent.toLowerCase().indexOf("safari") > -1;
        var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") > -1;
        if (firstname == null && (isIEorEdge || isSafari || isFirefox)) {
            LogRegHelper.GetUserDataforCookie();
        }

        var cookieName = 'optReq';
        var date = getDateInYears(2);
        var isCookieEnabled = JSON.parse($.cookie(cookieName));
        if (!isCookieEnabled) {
            $.cookie(cookieName, 'true', { expires: date, path: '/' });
            if (firstname != null) {
                $('.header-top-menu .dynamic-menu li.postLogin-header-link a  span.userName').html(StrHi + ", " + firstname);
                if ($('.TopHeaderRowDiv ul li .dynamic-menu li.postLogin-header-link a  span.userName').length > 0) {
                    $('.TopHeaderRowDiv ul li .dynamic-menu li.postLogin-header-link a  span.userName').html(StrHi + ", " + firstname);
                    checkTopHeaderOverFlow(true);
                }
            }
        }
        else {
            if (firstname != null) {
                $('.header-top-menu .dynamic-menu li.postLogin-header-link a  span.userName').html(StrHi + ", " + firstname);
                if ($('.TopHeaderRowDiv ul li .dynamic-menu li.postLogin-header-link a  span.userName').length > 0) {
                    $('.TopHeaderRowDiv ul li .dynamic-menu li.postLogin-header-link a  span.userName').html(StrHi + ", " + firstname);
                    checkTopHeaderOverFlow(true);
                }
            }
        }
    }

    this.CreateLogregv3Cookie = function () {
        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/GetUserToken",
            // data: loginjson,
            async: false,
            success: function (returnPayload) {
                $('#logregv3-frame').attr("src", Logregv3DomainUrl + "/ContentPage/AuthTakeData.aspx?p=TNM&u=" + returnPayload);

            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
            }
        });

    }

    this.ResumeDownloadPostLogin = function (mode, ModeData, storyGuid) {

        var cookieUserData = JSON.parse($.cookie("tell-us-about-you-data"));

        var AssetCompanyGuids = [];
        if (mode == 'Download_SingleAsset') {
            AssetCompanyGuids.push(ModeData.companyGuid);
        }
        else {
            $.each(ModeData, function (index, AssetDataItem) {
                AssetCompanyGuids.push(AssetDataItem.companyGuid);
            });
        }

        var tempToken;
        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/GetContext",
            datatype: "json",
            data: { "AssetCompanyGuids": AssetCompanyGuids },
            traditional: true,
            async: false,
            success: function (returnPayload) {

                if (returnPayload.IsDownloadEnabled) {
                    cookieUserData.userId = returnPayload.TempToken;

                    //
                    switch (mode) {
                        case "Download_MultipleAssets":
                            var options = {
                                userData: cookieUserData,
                            };
                            var storyGuid = AmpHelper.GetStoryGuid();
                            new MultipleAssetsDownloadFormatOptionsPopupViewModel(ModeData, storyGuid, options).Start();
                            break;
                        case "Download_SingleAsset":
                            var options = {
                                userData: cookieUserData,
                            };
                            new SingleAssetDownloadPopupViewModel(ModeData, null, options).Start();
                            break;
                    }
                }
                else {

                    var $popupMessage = $('#messageContainer-popup');
                    $popupMessage.openPopup({
                        absolute: true
                    });
                    $popupMessage.find("#divMessageAlert").html($("input:hidden[name='Asset.DownloadRestrictedForClientUser']").val());
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed -GetTempToken()");
            }
        });
        return ContextResultModel;



    }

    this.LoginCallBackMethod = function (data) {

        if ((typeof data !== typeof undefined) && data != null) {
            if (IsSuccess_Logreg(data)) {
                //if (data.MessageInfo != null && data.MessageInfo.Text != null) {
                //}
                $('form#frmLogin').addClass('login-to-site');
                LogRegHelper.LoginToSite(data.Data.Table[0].Temporary_Token);
                if (authorized) {
                    LogRegHelper.CreateLogregv3Cookie();

                    LogRegHelper.SetCookie();
                    //Reload for contact
                    var reloadPage = $("#hdnRefreshContact").val();
                    var protectedURL = getParameterByName("pu");
                    var IsPreview = getParameterByName("CP");
                    if (protectedURL) {
                        var uri_dec = decodeURIComponent(protectedURL);
                        if (IsPreview) {
                            uri_dec = uri_dec + "?CP=" + IsPreview;
                        }
                        window.location.href = uri_dec;
                    } else if (reloadPage == "true" || reloadPage == "True") {
                        window.location.reload();
                    }
                }
                else {
                    $('#Logreg-popup').closePopup();
                    LogRegHelper.HideLogregSpinner();
                    showAuthorizationErrorMessage();
                }

            }
            else if (!IsSuccess_Logreg(data)) {

                //$("#Password").val(''); //document.getElementById("Password").value = '';
                $("#LoginRecaptchaResponse").val('');  //document.getElementById("recaptcha_response_field").value = '';

                try {
                    if ($("#login-not-robot").length == 0) {
                        Recaptcha.reload(); // reload the captch
                    }
                } catch (e) {
                }
                LogRegHelper.SetLoginAttemptsCookie();
                LogRegHelper.HideLogregSpinner();
                var msg = TranslateMessage(data.MessageInfo);
                $('#lblStatus').html(msg);
            }
        }
    }

    // Set and Get the Cookie values.
    this.SetCookie = function () {
        var isCookieEnabled = JSON.parse($.cookie('optFunc'));
        if (isCookieEnabled) {
            var isRememberMe = ($('#RememberMe').is(':checked'));
            if (isRememberMe == true) {
                var storeData = new Array();
                storeData[0] = $('#EmailID').val();
                storeData[1] = $('#Password').val();
                storeData[2] = isRememberMe;

                $.cookie("cookieStore", JSON.stringify(storeData), { path: '/' });
                var data = JSON.parse($.cookie("cookieStore"));
            }
            else {
                $.removeCookie('cookieStore');
            }
        }
    }


    //Set value in Login Attempts Cookie
    this.SetLoginAttemptsCookie = function () {
        var attempts = 0;

        if ($.cookie(LoginAttemptsCookieName) != null) {
            attempts = JSON.parse($.cookie(LoginAttemptsCookieName));
            attempts = attempts + 1;
            $.cookie(LoginAttemptsCookieName, JSON.stringify(attempts), { path: '/' });  // Set the incremented value in cookie
            if (attempts > 2) {
                $("#recaptcha_widget").css("display", "block");
                if ($("#login-not-robot").length > 0) {
                    reCaptchaSetup();
                }

                LogRegHelper.LogregResizeFromLogin();
                LogRegHelper.CloseAndReopenLoginScreen();
            }
        }
        else {
            attempts = attempts + 1;
            $.cookie(LoginAttemptsCookieName, JSON.stringify(attempts), { path: '/' }); // first time, create cookie and add values into it.

            var cookieName = 'optReq';
            var date = getDateInYears(2);
            var isCookieEnabled = JSON.parse($.cookie(cookieName));
            if (!isCookieEnabled) {
                $.cookie(cookieName, 'true', { expires: date, path: '/' });
            }
        }
    }

    this.LogregResizeFromLogin = function () {
        var height = $('#Logreg-popup').outerHeight()
        var top = $(document).scrollTop();
        var css = {}

        top += ($(window).height() - height) / 2;
        if (top < 0) {
            css = {
                'top': '0px',
                'margin-top': '0px'
            };
        }
        else {
            top = top + 'px';
            css = {
                'top': top,
                'margin-top': '0px'
            };
        }
        $('#Logreg-popup').css(css);
    }


    this.ResetLoginControls = function () {
        $.removeCookie(LoginAttemptsCookieName, { path: '/' }); // remove pre-stored cookie values

        // reset the all controls
        $("#Logreg-popup .field-validation-error").hide();    // hide all error messages place-holders
        $('#lblStatus').html(""); // remove the error messages
        $("#recaptcha_widget").css("display", "none"); // hide the captcha part
        try {
            if ($("#login-not-robot").length > 0) {
                var widgetId = $('#Logreg-popup').data('recaptcha-id');
                grecaptcha.reset(widgetId);
            }
            else {
                Recaptcha.reload(); // reload the captcha
            }
        } catch (e) {
        }

        $('#EmailID').val('');
        $('#Password').val('');

        if ($.cookie('cookieStore') != null && $.cookie('cookieStore') != undefined) {
            var data = JSON.parse($.cookie("cookieStore"));
            if (data.length >= 0 && data[2] != null && data[2] != undefined && data[2] == true) {
                $('#EmailID').val(data[0]);
                $('#Password').val(data[1]);
                $('#Logreg-popup #RememberMe').prop('checked', true); // set the Remember me to true
            }
        }
    }

    this.CreateTellUsAboutYouCookie = function (data) {
        if (IsSuccess_Logreg(data)) {
            var emailId = '';
            if (data.Data.Table[0].User_email_id != undefined) {
                emailId = data.Data.Table[0].User_email_id;
            }
            else {
                emailId = data.Data.Table[0].User_Email_Id;
            }
            var userdata = {
                name: data.Data.Table[0].First_Name + " " + data.Data.Table[0].Last_Name,
                email: emailId,
                country: data.Data.Table[0].Country_Name,
                userType: 'User_Type_Id ' + data.Data.Table[0].User_Type_Id,
                company: data.Data.Table[0].Organization_Name,
                title: data.Data.Table[0].Position
            };

            var cookieName = 'optReq';
            var date = getDateInYears(2);
            var isCookieEnabled = JSON.parse($.cookie(cookieName));
            if (!isCookieEnabled) {
                $.cookie(cookieName, 'true', { expires: date, path: '/' });
                $.cookie('tell-us-about-you-data', JSON.stringify(userdata), { path: '/' });
                $.cookie("first-name", data.Data.Table[0].First_Name, {
                    path: '/'
                });
            }
            else {
                $.cookie('tell-us-about-you-data', JSON.stringify(userdata), { path: '/' });
                $.cookie("first-name", data.Data.Table[0].First_Name, {
                    path: '/'
                });
            }

            LogRegHelper.ShowLoggedInLinks();

            $('#Logreg-popup').closePopup();
            LogRegHelper.CreateLogregv3Cookie();
            if (LoginMode != null && preLoginServerAssetsDataForDownload != null) {
                if (authorized) {
                    LogRegHelper.ResumeDownloadPostLogin(LoginMode, preLoginServerAssetsDataForDownload);
                }
                LoginMode = null;
                preLoginServerAssetsDataForDownload = null;
            }
        }
        LogRegHelper.HideLogregSpinner();
        LogRegHelper.OnLoginReload();
    }

    this.IsLoggedIn = function () {
        var protectedURL = getParameterByName("pu");
        if (protectedURL) {
            CheckAuthentication();
        }
        var PremiumUserOnly = getParameterByName("po");
        if (PremiumUserOnly) {
            showAuthorizationErrorMessage();
        }

        var loginjson = {
            "callbackMethod": "ShowLogregMenu"
        };

        $.ajax({
            type: 'POST',
            url: LogRegHelper.BaseURL + "/Login/IsLoggedIn",
            data: loginjson,
            async: false,
            success: function (returnPayload) {
                var isloggedInUser = Boolean(returnPayload);
                if (isloggedInUser) {
                    LogRegHelper.ShowLoggedInLinks();
                }
                else {
                    LogRegHelper.ShowNonLoginInLinks();
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console && console.log("request failed");
                isUserLoggedIn = false;
            }

        });
    }

    this.ActivationCallBack = function (data) {
        var accontActivated = $("#hdn_Logreg_AccountActivate").val();
        var accountActivatedMessage = $("#hdn_Logreg_AccountActivateMessage").val();

        if (!IsSuccess_Logreg(data)) {
            $.ajax({
                type: 'POST',
                url: LogRegHelper.BaseURL + "/Login/ActivationFailed",
                success: function (data) {
                    $("#partialViewDiv").empty();
                    $("#partialViewDiv").html(data);

                    var $popup1 = $('#activationFailed-popup');
                    $popup1.openPopup({
                        absolute: true
                    });
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    console && console.log("request failed");
                }
            });
        }
        else {
            $.ajax({
                type: 'POST',
                url: LogRegHelper.BaseURL + "/Login/LoginPopup",
                success: function (data) {
                    $("#partialViewDiv").empty();
                    $("#partialViewDiv").html(data);

                    var $popup = $('#Logreg-popup');
                    LogRegHelper.ResetLoginControls();
                    $popup.openPopup({
                        absolute: true
                    });

                    $('#link_ForgotPassword').live('click', function (e) {

                        if (e.handled !== true) {
                            new LogRegHelper.ForgotPasswordPopupViewModel();
                            e.handled = true;
                        }
                    });

                    $('#divSignInNotRegister').hide();
                    $('#divSignInContact').hide();

                    $('#divSignInHeader').html(accontActivated);
                    $('#divSignInInfo').html(accountActivatedMessage);

                    $('#frmLogin').removeData("validator");
                    $.validator.unobtrusive.parse(document);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    console && console.log("request failed");
                }
            });
        }
    }

    this.ActivationEmailCallback = function (data) {
        if ((typeof data !== typeof undefined) && data != null) {
            if (!IsSuccess_Logreg(data)) {
                $('.divLogin #lblStatus').html(TranslateMessage(data.MessageInfo));
            }
            else {
                $('.divLogin #lblStatus').html(TranslateMessage(data.MessageInfo));
            }
        }
    }

};


$('#Lnk-Login').live('click', function (e) {
    if (e.handled !== true) { //this makes event to fire only once
        LoginMode = null;
        preLoginServerAssetsDataForDownload = null;
        new LogRegHelper.LogRegPopupViewModel();
        e.handled = true;
    }
});

$('#logregContactPopUp').live('click', function (e) {
    if (e.handled !== true) { //this makes event to fire only once
        LoginMode = null;
        preLoginServerAssetsDataForDownload = null;
        new LogRegHelper.LogRegPopupViewModel();
        e.handled = true;
    }
});
$('#logregContactPopUpBlock').live('click', function (e) {
    if (e.handled !== true) { //this makes event to fire only once
        LoginMode = null;
        preLoginServerAssetsDataForDownload = null;
        new LogRegHelper.LogRegPopupViewModel();
        e.handled = true;
    }
});

$('#Lnk-AccountActivation').live('click', function (e) {
    if (e.handled !== true) {
        new LogRegHelper.ActivationPopupViewModel();
        e.handled = true;
    }
});

$('#ActivationFaild_Btn').live('click', function (e) {
    if (e.handled !== true) {
        $("#activationFailed-popup").closePopup();
        e.handled = true;
    }
});

// activation-faild - temporary - remove it
$('#Lnk-AccountActivationFaild').live('click', function (e) {
    if (e.handled !== true) {
        new LogRegHelper.ActivationFaildPopupViewModel();
        e.handled = true;
    }
});

$('.myaccount').live('click', function (e) {
    if (e.handled !== true) {
        if ($("#logreg-spinner:visible").length <= 0) {
            new LogRegHelper.AcccountSummaryView();
        }
        e.handled = true;
    }
});

$('#Lnk-AccessDenied').live('click', function (e) {
    if (e.handled !== true) {
        new LogRegHelper.showAccessDenied();
        e.handled = true;
    }
});

$('.Lnk-Logout').live('click', function (e) {
    if (e.handled !== true) {
        if ($("#logreg-spinner:visible").length <= 0) {
            LogRegHelper.Logout();
        }
        e.handled = true;
    }
});

$('.logged-in-dropdown-menu #Lnk-myaccount').live('click', function (e) {
    if (e.handled !== true) {

        /*
        TNMMCLITE-991 | IE8 Specific fix to avoid multiple click 
        */
        if ($("#logreg-spinner:visible").length <= 0) {
            LogRegHelper.ShowLogregLoadingSpinner();
            LogRegHelper.ShowAccountlayer();
        }
        e.handled = true;
    }
});

$(function () {
    if ($.cookie('cookieStore')) {
        var data = JSON.parse($.cookie("cookieStore"));
    }
});


//$('#EmailID').on('input', function (e) {
//    $('#lblStatus').html("");
//});

//$('#Password').on('input', function (e) {
//    $('#lblStatus').html("");
//});

//$("#EmailID").keyup(function () {
//    $('#lblStatus').html("");
//});

//$("#Password").keyup(function () {
//    $('#lblStatus').html("");
//});


function ResendActivationEmailCallback(data) {
    return new LogRegHelper.ActivationEmailCallback(data);
}

function GetShortMrName() {
    return $("input:hidden[name='McConfig.MediaRoomShortName']").val();
}

function getCultureLocale() {
    return _currentCulture;
}

var IsLoggedInStatus = function (data) {
    usersLoginStatus = data;
};

function CheckAuthentication() {

    var loginjson = {
        "callbackMethod": "CheckAuthentication",
        "strAuthenticationMode": GetAuthenticationMode(),
        "strAuthorizationMode": GetAuthorizationMode(),
        "strPremiumUserAttribute": GetPremiumUserAttribute()
    };
    LoginMode = null;
    preLoginServerAssetsDataForDownload = null;
    new LogRegHelper.LogRegPopupViewModel();

}
function GetAuthenticationMode() {
    return $("input:hidden[name='McConfig.AuthenticationMode']").val();
}
function GetAuthorizationMode() {
    return $("input:hidden[name='McConfig.AuthorizationMode']").val();
}
function GetPremiumUserAttribute() { return $("input:hidden[name='McConfig.PremiumUserAttribute']").val(); }

function getParameterByName(param) {
    var url = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for (var i = 0; i < url.length; i++) {
        var urlparam = url[i].split('=');
        if (urlparam[0] == param) {
            return urlparam[1];
        }
    }
}
function showAuthorizationErrorMessage() {
    var $popupMessage = $('#messageContainer-popup');
    $popupMessage.openPopup({
        absolute: true
    });
    if (GetAuthenticationMode().toLowerCase() == "downloadgeated") {
        $popupMessage.find("#divMessageAlert").html($("input:hidden[name='McConfig.PremiumDownloadRigtsRequiredMessage']").val());
    }
    else {
        $popupMessage.find("#divMessageAlert").html($("input:hidden[name='McConfig.PremiumRigtsRequiredMessage']").val());
    }
}
function AssetNotFound() {
    showMessage($("input:hidden[name='Asset.ContentNoLongerAvailable']").val());
}
function SomeAssetsCouldNotBeDownloaded() {
    showMessage($("input:hidden[name='Asset.SomeResourcesNotAvailableDownload']").val(), 0, 0);
}
function AssetNotFoundForDownload(x, y, checkHeroAsset, checkControl) {
    if (checkHeroAsset)
        showHeroAssetMessage($("input:hidden[name='Asset.ContentNoLongerAvailableForDownload']").val(), checkControl);
    else
        showMessage($("input:hidden[name='Asset.ContentNoLongerAvailableForDownload']").val(), x, y);
}
function AssetNotFoundForEmbed(x, y) {
    showMessage($("input:hidden[name='Asset.ContentNoLongerAvailableForEmbed']").val(), x, y);
}
function AssetNotFoundForShare(x, y) {
    showMessage($("input:hidden[name='Asset.ContentNoLongerAvailableForShare']").val(), x, y);
}
function showMessage(messageText, x, y) {
    var mediaCartTip = $.fn.mediaCartButton({
        style: 'dark'
    });
    //mediaCartTip.showTip(messageText, $('.amp-inner-content-wrap .download-buttons .tablet .download'), 'completed', 3500);
    mediaCartTip.showTipWithPosition(messageText, $('body'), 'exclamation', 6000, x, y);
}
function showHeroAssetMessage(messageText, checkControl) {
    var mediaCartTip = $.fn.mediaCartButton({
        style: 'dark'
    });
    mediaCartTip.showTip(messageText, checkControl.parents('.image-icon-wrapper').find('.image-wrapper:first'), 'exclamation', 6000, 'HeroAssetDownload');
}
function htmlEncode(value) {
    return $('<div/>').text(value).html();
}

$(document).ready(function () {
    RebindValidators('frmLogin');
});

function RebindValidators(formid) {
    var frmToValidate = $('form#' + formid);
    var validators = ['data-val-required', 'data-val-requiredifnotblank', 'data-val-length', 'data-val-regex', 'data-val-equalto'];

    var forminputs = frmToValidate.find('[data-val=true]').filter('input[type=text],input[type=password],select,textarea');
    forminputs.each(function (i, formInput) {

        validators.forEach(function (validator) {
            if ($(formInput).attr(validator) != null) {

                var validationMsg = frmToValidate.find('#hdn_' + $(formInput).attr('id') + '_' + validator.substr(validator.lastIndexOf('-') + 1));
                if (validationMsg != null && validationMsg.val() != '') {
                    $(formInput).attr(validator, validationMsg.val());
                }
            }
        });
    });

    frmToValidate.removeData("validator").removeData("unobtrusiveValidation");
    $.validator.unobtrusive.parse(frmToValidate);
};
var MediaCart = {
    AddUrl: $('input[name="MediaCart.AddUrl"]').val(),
    RemoveUrl: $('input[name="MediaCart.RemoveUrl"]').val(),
    ClearUrl: $('input[name="MediaCart.ClearUrl"]').val(),
    ViewUrl: $('input[name="MediaCart.ViewUrl"]').val()
};

$(window).load(function () {
    var $slider = $('#mediaCartSlider');

    if ($slider.length > 0) {
        $slider.royalSlider({
            startSlideId: 0,
            loop: true,
            loopRewind: false,
            numImagesToPreload: 2,
            fadeinLoadedSlide: false,
            slidesOrientation: 'horizontal',
            transitionType: 'move',
            transitionSpeed: 600,
            controlNavigation: 'bullets',
            controlsInside: false,
            arrowsNav: true,
            arrowsNavAutoHide: false,
            navigateByClick: false,
            randomizeSlides: false,
            sliderDrag: false,
            sliderTouch: true,
            keyboardNavEnabled: false,
            fadeInAfterLoaded: false,
            allowCSS3: true,
            allowCSS3OnWebkit: true,
            addActiveClass: false,
            autoHeight: false,
            easeOut: 'easeOutSine',
            easeInOut: 'easeInOutSine',
            minSlideOffset: 10,
            imageScaleMode: "none",
            imageAlignCenter: false,
            imageScalePadding: 4,
            usePreloader: false,
            autoScaleSlider: false,
            autoScaleHeight: false,
            arrowsNavHideOnTouch: false,
            globalCaption: false
        });

        var sliderInstance = $slider.data('royalSlider'),
            loadCount = 0,
            $nav = $('.caption-wrapper .nav');

        sliderInstance.ev.on('rsMaybeSizeReady', function (e, slideObject) {
            if (loadCount === 0) {
                $nav.append($('.rsArrowLeft'));
                $nav.append($('.rsNav.rsBullets'));
                $nav.append($('.rsArrowRight'));
            }
            loadCount++;
        });
    }

    $('.mediacart .images-videos-items li').each(function (ind) {
        $(this).attr('index', ind);
    });

    if ($('.mediacart').hasClass('expired-page')) {
        $("#expired-popup").openPopup();
    }

    $("#expired-popup .custom-button").on('click', function () {
        $("#expired-popup").closePopup();
    });

});

$.validator.addMethod(
    "multiemails",
    function (value, element) {
        if (this.optional(element)) // return true on optional element
            return true;
        var emails = value.split(/[;,]+/); // split element by , and ;
        valid = true;
        for (var i in emails) {
            value = emails[i];
            valid = valid &&
                $.validator.methods.emailvalidate.call(this, $.trim(value), element);
        }
        return valid;
    },

    $.validator.messages.multiemails
);
$.validator.addMethod("namevalidate",
    function (value, element) {
        var res = new RegExp($(element).attr("customregex"))
        return (this.optional(element) || res.test(value));
    },
    $.validator.messages.namevalidate
);

$.validator.addMethod("emailvalidate",
    function (value, element) {
        var res = new RegExp($(element).attr("customregex"))
        return (this.optional(element) || res.test(value));
    },
    $.validator.messages.emailvalidate
);

$(document).ready(function () {

    if (McConfig.MediacartCountEnabled) {
        $.ajax({
            url: McConfig.IsMultiCulture == "false" ? "/mc/GetMediacartCount" : "/global/mc/GetMediacartCount",
            type: 'POST',
            contentType: "application/json;charset=utf-8",
            success: function (response) {
                $('.MediaCartCount').html("(" + response.TotalCartItems + ")");
            }
        });
    }

    var calculateFloatPanelPosition = function () {

        var $sendWrapper = $('.mediacart .send-wrapper');
        var loadPosition = 0;
        if ($('footer').length > 0) {
            loadPosition = $('footer').offset().top - $sendWrapper.outerHeight();
        }
        var windowPosition = $(window).height() + $(window).scrollTop();

        $sendWrapper.toggleClass('fixed-panel', loadPosition + $sendWrapper.outerHeight() > windowPosition);
    };

    var changeMediaCartFilter = function () {
        var $filter = $('.mediacart .filters');
        var $filterItems = $('.mediacart .filters ul li');
        var $itemsWrapper = $('.mediacart .images-videos-items');
        var items = '.mediacart .images-videos-items li > div';
        var $hidden = $('.hidden-media-items');

        if ($filter.length > 0) {
            $filterItems.first().addClass('active');
            $filterItems.on('click', function () {
                if (!$(this).hasClass('active')) {
                    $filterItems.removeClass('active');
                    $(this).addClass('active');
                    var type = $(this).children().attr('data-item-class');
                    if (typeof type === "undefined") {
                        type = 'all';
                    }
                    $(items).parent().appendTo($hidden);
                    $itemsWrapper.html('');
                    var $hiddenItems = $('.hidden-media-items li > div');
                    if (type === 'all') {
                        $hiddenItems.parent().sort(function (a, b) {
                            return parseInt($(a).attr('index')) > parseInt($(b).attr('index')) ? 1 : -1;
                        }).appendTo($itemsWrapper);
                    } else {
                        $hiddenItems.filter('.' + type).parent().appendTo($itemsWrapper);
                    }
                    calculateFloatPanelPosition();
                }
            });
        }
    };

    $(".send-mediacart").on('click touchend', function (e) {
        $("#user-send-cart-popup").find("#AgreeForPrivacyNotice").prop('checked', false);

        setTimeout(function () {
            reCaptchaSetup();
            clearControls();
            $("#user-send-cart-popup").openPopup();
        }, 400);

        function clearControls() {
            $("#user-send-cart-popup").find('input').removeClass('error');
            $("#user-send-cart-popup").find(".recaptcha-holder").removeClass('error');
        }
        function reCaptchaSetup() {
            var widgetId;
            var $sendMediacartPopup = $("#user-send-cart-popup");
            widgetId = $sendMediacartPopup.data('recaptcha-id');
            //$sendMediacartPopup.find('.recaptcha-holder').removeClass('error');

            var reCaptchaConfig = JSON.parse(McConfig.ReCaptcha);
            reCaptchaConfig.callback = function (response) {
                $sendMediacartPopup.find('.recaptcha-holder').removeClass('error');
                $sendMediacartPopup.find('input#MediaCartRecaptchaResponse').val(response);
            };
            reCaptchaConfig["expired-callback"] = function () {
                grecaptcha.reset(widgetId);
            };


            $sendMediacartPopup.find('.send-media-kit').removeClass('has-recaptcha');
            $sendMediacartPopup.find('.send-media-kit-ignore-recaptcha').hide();
            $sendMediacartPopup.find('.send-media-kit-with-recaptcha').hide();
            $sendMediacartPopup.find('.send-copy-message-for-recaptcha').hide();
            $sendMediacartPopup.find('.send-copy-message-ignore-recaptcha').hide();

            if (reCaptchaConfig.enabled) {
                $sendMediacartPopup.find('.send-copy-message-for-recaptcha').show();
                $sendMediacartPopup.find('.send-media-kit').addClass('has-recaptcha');
                $sendMediacartPopup.find('.send-media-kit-with-recaptcha').css('min-height', '80px')
                $sendMediacartPopup.find('.send-media-kit-with-recaptcha').show('slow');
                if (widgetId == undefined) {
                    widgetId = grecaptcha.render("not-robot", reCaptchaConfig);
                    $sendMediacartPopup.data('recaptcha-id', widgetId);
                }
                else {
                    grecaptcha.reset(widgetId);
                    $sendMediacartPopup.find('input#MediaCartRecaptchaResponse').val('');
                }
                $('.recaptcha-holder').css('width', $('.recaptcha-holder div:first-child').width());
            } else {
                $sendMediacartPopup.find('.send-media-kit-ignore-recaptcha').show();
                $sendMediacartPopup.find('.send-copy-message-ignore-recaptcha').show();
            }
        }
    });

    var $form = $('#user-send-cart-popup form');

    var attachValidator = function (form) {
        form.removeData('validator');
        form.validate({
            ignore: ".ignore",
            onfocusout: false,
            onkeyup: false,
            onclick: false,
            rules: {
                'Email': {
                    required: true,
                    email: false,
                    emailvalidate: true
                },
                'Subject': {
                    required: true,
                    minlength: false
                },
                'Name': {
                    required: true,
                    minlength: false,
                    namevalidate: true
                },
                'multiemails': {
                    required: true,
                    email: true
                },
                'AgreeForPrivacyNotice': {
                    required: true,
                },
                'MediaCartRecaptchaResponse': {
                    required: function () {
                        var reCaptchaConfig = JSON.parse(McConfig.ReCaptcha);
                        if (reCaptchaConfig.enabled) {
                            if (grecaptcha.getResponse() == '') {
                                return true;
                            } else {
                                return false;
                            }
                        }
                        else {
                            return false;
                        }
                    }
                }
            },
            messages: {
                'Email': {
                    required: '',
                    emailvalidate: $('.email-error-message').text(),
                    email: $('.email-error-message').text()
                },
                'Subject': {
                    required: ''
                },
                'Name': {
                    required: '',
                    namevalidate: $('.name-error-message').text()
                },
                'AgreeForPrivacyNotice': {
                    required: ''
                },
                'SendToEmails': {
                    required: '',
                    multiemails: $('.multiple-email-error-message').text()
                },
                'MediaCartRecaptchaResponse': {
                    required: $('.recaptcha-error-invalid').text(),
                }
            },
            highlight: function (element, errorClass, validClass) {
                //Add class for recaptcha
                if (element.id == "MediaCartRecaptchaResponse") {
                    //Add error class to holder instead of label
                    $(element.form).find(".recaptcha-holder")
                        .removeClass(errorClass)
                        .addClass(errorClass);

                    //Remove error class from label
                    $(element.form).find("label[for=" + element.id + "]").hide();
                } else {
                    $(element).addClass(errorClass).removeClass(validClass);
                }
            },
            unhighlight: function (element, errorClass, validClass) {
                $(element).removeClass(errorClass).addClass(validClass);

                //Add class for recaptcha
                if (element.id == "MediaCartRecaptchaResponse") {
                    $(element.form).find(".recaptcha-holder")
                        .removeClass(errorClass);
                }
            },
            errorPlacement: function (error, element) {
                if (error.get(0).htmlFor == "MediaCartRecaptchaResponse") {
                    error.hide();
                } else {
                    error.insertAfter(element);
                }
            }
        });
    };

    attachValidator($form);

    $("#user-send-cart-popup").find('#AgreeForPrivacyNotice').on('click', function () {
        var isChecked = $("#user-send-cart-popup").find("#AgreeForPrivacyNotice").prop('checked');
        if (!isChecked) {
            $(".agree-checkbox").find(".agree-note").addClass('error');
        }
        else {
            $(".agree-checkbox").find(".agree-note").removeClass('error');
        }
    });

    $form.on('submit', function () {

        if ($("#user-send-cart-popup").find("#invalidname").val().length === 0) {
            $("#user-send-cart-popup").find("#invalidname").val($("#user-send-cart-popup").find('#invalidtext').val());
        }

        var isChecked = $("#user-send-cart-popup").find("#AgreeForPrivacyNotice").prop('checked');
        if (!isChecked) {
            $(".agree-checkbox").find(".agree-note").addClass('error');
        }
        else {
            $(".agree-checkbox").find(".agree-note").removeClass('error');
        }

        if ($form.valid()) {
            var mediaCartTip = $.fn.mediaCartButton({
                style: 'dark'
            }),
                start = (new Date()).getTime(),
                minimumDuration = 1000,
                duration;
            mediaCartTip.showTip($form.find('.send-media-kit').data('sending-message'), $('body'), 'busy');

            $("#user-send-cart-popup").find("#Message").val(htmlEncode($("#user-send-cart-popup").find("#Message").val()));
            $("#user-send-cart-popup").find("#Subject").val(htmlEncode($("#user-send-cart-popup").find("#Subject").val()));
            $("#user-send-cart-popup").find("#Name").val(htmlEncode($("#user-send-cart-popup").find("#Name").val()));
            $("#user-send-cart-popup").find("#invalidname").val(htmlEncode($("#user-send-cart-popup").find("#invalidname").val()));
            $.ajax({
                url: $form.attr('action'),
                type: 'POST',
                data: $form.serialize(),
                traditional: true,
                success: function (response) {
                    duration = (new Date()).getTime() - start;
                    setTimeout(function () {
                        //Clean up recaptcha.
                        var $sendMediacartPopup = $("#user-send-cart-popup");
                        $sendMediacartPopup.find('input#MediaCartRecaptchaResponse').val('');
                        widgetId = $sendMediacartPopup.data('recaptcha-id');
                        if (widgetId !== undefined) {
                            grecaptcha.reset(widgetId);
                        }

                        if (!response.IsSuccess && response.ErrorKeys) {
                            mediaCartTip.hideTip();
                        }
                        else if (response.IsSuccess && response.Emails) {
                            $("#user-send-cart-popup").closePopup();

                            var isDefaultEmailChecked = McConfig.IsUseDefaultEmailSystem; //$sendMediacartPopup.find("#IsUseDefaultEmailSystem").prop('checked');
                            if (isDefaultEmailChecked) {
                                var stremail = '';
                                $.each(response.Emails, function (key, value) {
                                    stremail += key === 0 ? value : ";" + value;
                                });
                                window.location.href = "mailto:" + stremail + '?subject=' + response.Subject + '&body=' + response.MediaCartGuid;
                            }
                            else {
                                var recipientsList = $("#send-card-popup .recipients-list");
                                recipientsList.html('');
                                for (var i = 0; i < response.Emails.length; i++) {
                                    var j = response.Emails[i];
                                    if (j) {
                                        recipientsList.append('<li>' + j + '</li>');
                                    }
                                }
                            }
                            mediaCartTip.hideTip();
                            if (!isDefaultEmailChecked) {
                                $("#send-card-popup").openPopup();
                            }
                        }
                    }, (duration < minimumDuration) ? minimumDuration - duration : 0);
                }
            });
        }
        return false;
    });

    $form.find('input').on('keypress', function (e) {
        if (e.which == 13) {
            $form.submit();
        }
    });

    $('.send-media-kit').on('click', function (e) {
        e.preventDefault();
        $form.submit();
    });

    $(window).on('scroll load resize', function () {
        calculateFloatPanelPosition();
    });

    $(window).on('load', function () {
        changeMediaCartFilter();
    });

    $('.media-more').on('click', function () {
        $('.actions').toggle();
        if ($(this).hasClass('more')) {
            $(this).removeClass('more').addClass('less');
        } else if ($(this).hasClass('less')) {
            $(this).removeClass('less').addClass('more');
        }
    });

    function vAlign() {
        var currDeviceType = $('html').css('font-family').replace(new RegExp('"', 'g'), '');
        if (currDeviceType == 'mobile') {
            $('.valign').each(function () {
                $(this).attr('style', '');
            });
        } else {
            $('.valign').each(function () {
                $(this).css('position', 'relative');
                var containerHeight = $('#subscribe').offset().top - $(this).offset().top;
                $(this).css('margin-top', Math.round((containerHeight - $(this).height()) / 2) + 'px');
            });
        }
    }

    $(window).on("resize", function () {
        vAlign();
    });
    vAlign();

    //Removing media cart button inside amp popup on media cart page
    if ($('.main-content > .mediacart-page').length) {
        $('#asset-amp-popup .download-buttons .media-cart-btn-wrapper').parents('li:first').remove();
        $('#asset-amp-popup .download-buttons-mobile .media-cart-btn-wrapper').parents('li').remove();
    }

    $('.clear-field-wrapper').on('click', function () {
        $('#user-send-cart-popup form')[0].reset();
        if (bowser.name == "Internet Explorer" && bowser.version < 10) {
            $('#SendToEmails').val($(this).attr('placeholder'));
        }
    });



    //Disable click event for images and icons for assets in the "Pending Client Approval" status
    $('.disabled .image-wrapper, .disabled .download a').on('click', function (e) {
        e.preventDefault();
        e.stopPropagation();
    });

});



;
; (function (e, t, n, r) { e.fn.doubleTapToGo = function (r) { if (!("ontouchstart" in t) && !navigator.msMaxTouchPoints && !navigator.userAgent.toLowerCase().match(/windows phone os 7/i)) return false; this.each(function () { var t = false; e(this).on("click", function (n) { var r = e(this); if (r[0] != t[0]) { n.preventDefault(); t = r } }); e(n).on("click touchstart MSPointerDown", function (n) { var r = true, i = e(n.target).parents(); for (var s = 0; s < i.length; s++) if (i[s] == t[0]) r = false; if (r) t = false }) }); return this } })(jQuery, window, document);
// Device.js
// (c) 2014 Matthew Hudson
// Device.js is freely distributable under the MIT license.
// For all details and documentation:
// http://matthewhudson.me/projects/device.js/
(function () { var n, e, o, t, i, r, d, a, c, l; e = window.device, n = {}, window.device = n, t = window.document.documentElement, l = window.navigator.userAgent.toLowerCase(), n.ios = function () { return n.iphone() || n.ipod() || n.ipad() }, n.iphone = function () { return !n.windows() && i("iphone") }, n.ipod = function () { return i("ipod") }, n.ipad = function () { return i("ipad") }, n.android = function () { return !n.windows() && i("android") }, n.androidPhone = function () { return n.android() && i("mobile") }, n.androidTablet = function () { return n.android() && !i("mobile") }, n.blackberry = function () { return i("blackberry") || i("bb10") || i("rim") }, n.blackberryPhone = function () { return n.blackberry() && !i("tablet") }, n.blackberryTablet = function () { return n.blackberry() && i("tablet") }, n.windows = function () { return i("windows") }, n.windowsPhone = function () { return n.windows() && i("phone") }, n.windowsTablet = function () { return n.windows() && i("touch") && !n.windowsPhone() }, n.fxos = function () { return (i("(mobile;") || i("(tablet;")) && i("; rv:") }, n.fxosPhone = function () { return n.fxos() && i("mobile") }, n.fxosTablet = function () { return n.fxos() && i("tablet") }, n.meego = function () { return i("meego") }, n.cordova = function () { return window.cordova && "file:" === location.protocol }, n.nodeWebkit = function () { return "object" == typeof window.process }, n.mobile = function () { return n.androidPhone() || n.iphone() || n.ipod() || n.windowsPhone() || n.blackberryPhone() || n.fxosPhone() || n.meego() }, n.tablet = function () { return n.ipad() || n.androidTablet() || n.blackberryTablet() || n.windowsTablet() || n.fxosTablet() }, n.desktop = function () { return !n.tablet() && !n.mobile() }, n.television = function () { var n; for (television = ["googletv", "viera", "smarttv", "internet.tv", "netcast", "nettv", "appletv", "boxee", "kylo", "roku", "dlnadoc", "roku", "pov_tv", "hbbtv", "ce-html"], n = 0; n < television.length;) { if (i(television[n])) return !0; n++ } return !1 }, n.portrait = function () { return window.innerHeight / window.innerWidth > 1 }, n.landscape = function () { return window.innerHeight / window.innerWidth < 1 }, n.noConflict = function () { return window.device = e, this }, i = function (n) { return -1 !== l.indexOf(n) }, d = function (n) { var e; return e = new RegExp(n, "i"), t.className.match(e) }, o = function (n) { var e = null; d(n) || (e = t.className.replace(/^\s+|\s+$/g, ""), t.className = e + " " + n) }, c = function (n) { d(n) && (t.className = t.className.replace(" " + n, "")) }, n.ios() ? n.ipad() ? o("ios ipad tablet-1") : n.iphone() ? o("ios iphone mobile-1") : n.ipod() && o("ios ipod mobile-1") : n.android() ? o(n.androidTablet() ? "android tablet-1" : "android mobile-1") : n.blackberry() ? o(n.blackberryTablet() ? "blackberry tablet-1" : "blackberry mobile-1") : n.windows() ? o(n.windowsTablet() ? "windows tablet-1" : n.windowsPhone() ? "windows mobile-1" : "desktop-1") : n.fxos() ? o(n.fxosTablet() ? "fxos tablet-1" : "fxos mobile-1") : n.meego() ? o("meego mobile-1") : n.nodeWebkit() ? o("node-webkit") : n.television() ? o("television") : n.desktop() && o("desktop-1"), n.cordova() && o("cordova"), r = function () { n.landscape() ? (c("portrait"), o("landscape")) : (c("landscape"), o("portrait")) }, a = Object.prototype.hasOwnProperty.call(window, "onorientationchange") ? "orientationchange" : "resize", window.addEventListener ? window.addEventListener(a, r, !1) : window.attachEvent ? window.attachEvent(a, r) : window[a] = r, r(), "function" == typeof define && "object" == typeof define.amd && define.amd ? define(function () { return n }) : "undefined" != typeof module && module.exports ? module.exports = n : window.device = n }).call(this);
$(document).ready(function () {
    $('.touch.tablet-1 .site-menu li:has(ul li a)').doubleTapToGo();

    $('.drop-accordian-menu .section-menu .accordion .toggle-1').click(function (e) {
        var $currentLevel = $(this);
        var $nextLevel = $currentLevel.siblings('ul.inner');

        //TODO:validate with single level menu.
        //collapse already expanded item if any
        var $other = $currentLevel.closest('li').siblings();
        $other.children('ul.inner').removeClass('show').slideUp('fast');
        $.each($other.children('a'), function (index, value) { applyStates($(value), false) });

        /*When there is second level menu*/
        if ($nextLevel.length > 0) {
            if ($nextLevel.hasClass('show')) {
                $nextLevel.removeClass('show');
                $nextLevel.slideUp('fast');
                applyStates($currentLevel, false);
            } else {
                $nextLevel.addClass('show');
                applyStates($currentLevel, true);
                $nextLevel.slideDown('fast');

                e.preventDefault();
            }
        }

        function applyStates($currentLevel, isExpand) {
            var $parent = $currentLevel.parent('li');
            var $chidren = $currentLevel.children('i');

            if (isExpand) {
                if ($parent.hasClass('active')) {
                    $chidren.addClass('icons-topdown-active-menu-arrow-down');
                    $chidren.removeClass("icons-topdown-active-menu-arrow-right");
                }
                else {
                    $chidren.addClass('icons-topdown-menu-arrow-down');
                    $chidren.removeClass("icons-topdown-menu-arrow-right");
                }
            } else {
                if ($parent.hasClass('active')) {
                    $chidren.removeClass('icons-topdown-active-menu-arrow-down');
                    $chidren.addClass("icons-topdown-active-menu-arrow-right");
                }
                else {
                    $chidren.removeClass('icons-topdown-menu-arrow-down');
                    $chidren.addClass("icons-topdown-menu-arrow-right");
                }
            }
        }
    });

    var activeItems = $('.drop-accordian-menu .section-menu .accordion li.active');
    $.each(activeItems, function (index, activeItem) {
        $(activeItem).children('.toggle-1').click();
    });

    $(".category-menu.vehiclesfiltermenu .vehicleFilterRow.tablet-up li:first-child label").addClass("active-lable");
    
    $("input:radio[name=categoryFilter]").click(function () {

        var value = $(this).val();
        var aa = $(".vehicleFilter").find(" input[type='hidden']");
        $(".category-menu.vehiclesfiltermenu label").removeClass("active-lable");
        $(this).parent("label").addClass("active-lable");
        $.each(aa, function (index, activeItem) {

            var filters = $.map($(activeItem).val().split(","), $.trim);
          
            if (jQuery.inArray(value.trim(), filters) == -1)
            { $(this).parent().hide(); }
            else
            {
                $(this).parent().show();
            }

        });
    });
    $("#popup-topdown-menu .mobileFilter li:first-child").addClass('active-li-filter');
    $("#popup-topdown-menu .mobileFilter li a").click(function (e) {
    $("#popup-topdown-menu .mobileFilter li").removeClass('active-li-filter');
    $(this).parent().addClass('active-li-filter');
    
                var value3 = $(this).attr("data-filter");
                var aa = $(".vehicleFilter").find(" input[type='hidden']");
                $.each(aa, function (index, activeItem) {

                    var filters = $.map($(activeItem).val().split(","), $.trim);
                  
                    if (jQuery.inArray(value3.trim(), filters) == -1)
                    { 
                        $(this).parent().hide(); 

                    }
                    else
                    {
                        $(this).parent().show();
                    }
                });
                    jQuery(".vehicleFilter").removeClass("even");
                    jQuery(".vehicleFilter:visible:even").addClass("even");
             });
    
    var width1 = $(".site-menu > .menu > li:first").width() + 10;
    var windWidth = $(window).width()+10;
    
    $(".tablet-1 .category-menu.vehiclesfiltermenu").css('margin-left' , - width1*2 ).css("width" , windWidth);
    jQuery(".vehicleFilter").removeClass("even");
    jQuery(".vehicleFilter:even").addClass("even");
    var currentDevice = $("html").css("font-family").replace(new RegExp("'", 'g'), '').replace(new RegExp('"', 'g'), '')
    if (currentDevice == 'desktop' && $("html").hasClass("tablet-1") == true) {     
        $(".tablet-1 .category-menu.vehiclesfiltermenu").css('margin-left', 0).css("width", "960px");
    }
});
;
$(function () {
    var rssPage = $('.rss-listing'),
        items = rssPage.find('.rss-content').find('ul'),
        $filters = rssPage.find('.filters ul'),
        $filtersMobile = rssPage.find('.rss-listing-select');
    var getDeviceType = function () {
        return $('html').css('font-family').replace(/"/g, '');
    };

    
    rssPage.find('.filters ul li:first').addClass('active');
    items.removeClass('active');
    rssPage.find('.rss-content ul:first-child').addClass('active');
   
    var filtration = function(selectedTab) {
        items.removeClass('active');
        items.filter('[data-item-class="' + selectedTab + '"]').addClass('active');
    };

    $filters.on('click', 'li', function () {
        $filters.find('li').removeClass('active');
        $(this).addClass('active');
        filtration($(this).attr('data-item-filter'));
    });
    
    $filtersMobile.change(function () {
        filtration($(this).val());
    });
});;
$(window).load(function () {
    $('.search-results .search-content .title').dotdotdot({ watch: 'true' });
    $('.search-results .search-content .search-title').dotdotdot({ watch: 'true' });
    $('.search-results .search-content .description').dotdotdot({ watch: 'true' });
    $('.search-results .search-content .category').dotdotdot({ watch: 'true' });
});
var GA4Key = $('#hdnGA4Id').length > 0 ? $('#hdnGA4Id').val() : '';
var downloadFileSearch = function (elem) {
    var docUrl = $(elem).attr("data-href");
    var refUrl = window.location.href;
    var originUrl = window.location.origin;
    var Userip = $(elem).attr("data-ip");
    var UserCountry = $(elem).attr("data-country");
    var mrShortName = McConfig.MediaRoomShortName;
    var assetid = $(elem).attr("data-assetid");
    var param = {
        docURL: docUrl, refURL: refUrl, IP: Userip, country: UserCountry, mrShortName: mrShortName, assetid: assetid
    };

    $.ajax({
        url: McConfig.DownloadServiceBaseUrl + "DirectDownloadService/LogDocumentAssetDownloadInfo",
        data: param,
        type: 'POST',
        async: false,
        success: function (response) {

            var link = document.createElement('a');
            link.href = docUrl;
            link.download = docUrl.split('/').pop();
            link.target = "_blank";
            document.body.appendChild(link);
            link.click();
        },
        error: function (xhr, err) {
            alert("error: " + xhr.responseText);
        }
    });
};

$(document).ready(function () {
    var isGTMKeyEnabled = $("#hdnIsGTMKeyEnabled").val();
    var setShowAdvancedSearchPanel = function () {
        $('.search-input').val($('<div/>').html($('[name=Query]').val()).text());
        var showAdvancedSearchPanel = $('[name=DoShowAdvancedSearchPanel]').val() == "True";
        var showAdvanceSearchPopUp = $('[name=ShowAdvanceSearchPopUp]').val();
        if (typeof (showAdvanceSearchPopUp) != "undefined") {
            showAdvanceSearchPopUp = $('[name=ShowAdvanceSearchPopUp]').val() == "True";
            if (showAdvanceSearchPopUp == true) {
                $('.search-input-wrapper .search-input').addClass('advance-search-show');
                $('.search-button').addClass('advance-search-show');
                if ($('.advance-search-popup.advance-search-show').length == 0) {
                    var $advancesearchtext = $('<div class="advance-search-popup advance-search-show">' + $('#hdnAdvanceSearchTitle').val() + ' ></div>');
                    $('.search-wrapper').append($advancesearchtext);
                }

                $(".advance-search-popup").on("click", function () {
                    $('.search-popup-input').val($.trim($('.search-input').val()));
                    $('#SelectDatePopup').val(sessionStorage.getItem("storageDate"));
                    $('#Filter_SectionsNames').val(sessionStorage.getItem("storageSectionsNames"));
                    $('#Filter_Categories').val(sessionStorage.getItem("storageCategories"));
                    $('#Filter_ContentTypes').val(sessionStorage.getItem("storageContentTypes"));
                    $("#advance-search-popup").openPopup();
                    setTimeout(function () {
                        $('.search-popup-input').focus();
                    }, 1000);
                });
            }
            else {
                $('.search-input-wrapper .search-input').removeClass('advance-search-show');
                $('.search-button').removeClass('advance-search-show');
                $('.advance-search-popup').removeClass('advance-search-show').remove();
            }
        }

        $('[name=SearchWithFilters]').val(showAdvancedSearchPanel);
    };
    setShowAdvancedSearchPanel();
    var setDefaultFilters = function () {

        removesessionStorage();

        var allFilter = $('.search-filters ul');
        var filterElements = $('.search-filters ul li');
        for (var i = 0; i < filterElements.length; i++) {
            filterElements.eq(i).find('input:radio').prop('checked', false);
            filterElements.eq(i).removeClass('active');
            $('.checked-filter-item').remove();
        }
        for (var i = 0; i < allFilter.length; i++) {
            var firstElement = allFilter.eq(i).find('li').first();
            firstElement.addClass('first-item').addClass('active');
            firstElement.find('input:radio').prop('checked', true);
        }
    };

    $('.search-input-wrapper input').on('keypress', function (e) {
        if (e.which == 13) {
            newQuerySearch();
        }
    });

    var newQuerySearch = function () {
        var query = $.trim($('.search-input').val());
        if (query == "") {
            return;
        }
        $('[name=SearchWithFilters]').val(false);
        $('[name=Query]').val($('<div />').text($.trim(query)).html());
        $('[name=PageNumber]').val(1);
        setDefaultFilters();
        updateSearchResults(false);
    };

    var showAdvancedSearchFilters = function () {
        var currentDevice = $("html").css("font-family").replace(new RegExp("'", 'g'), '').replace(new RegExp('"', 'g'), '');
        if (currentDevice != "mobile") {
            var showAdvancedSearchPanel = $('[name=DoShowAdvancedSearchPanel]').val();
            var doShowFilter = showAdvancedSearchPanel == "True";
            $('.search-filters-wrapper').toggle(doShowFilter);
        } else {
            $('.search-filters-wrapper').toggle(false);
        }
    };

    var updateSearchFilters = function () {
        $('.relevance-panel .filter-item span').on('click', function () {
            var form = $('.SearchForm');
            form.find('[name=SortType]').removeAttr('name');
            var $thisRadio = $(this).siblings('input:radio');
            $thisRadio.prop('checked', true).attr('name', 'SortType');
            $('[name=PageNumber]').val(1);
            updateSearchResults(false);
            $thisRadio.removeAttr('name');
        });

        $(".refine-mobile-button").on("click", function () {
            var allFilter = $('#search-refine-result .search-filters ul');
            setSelectedValues(allFilter);

            var $allRadioButtons = $('.search-filters-wrapper .search-filters ul li').find('input:radio');
            for (var i = 0; i < $allRadioButtons.length; i++) {
                $allRadioButtons.eq(i).prop('checked', false);
                $allRadioButtons.eq(i).parent().removeClass('active');
            }

            removesessionStorage();

            $("#search-refine-result").openPopup();
        });
        $(".advance-search-popup").on("click", function () {
            $("#advance-search-popup").openPopup();
            setTimeout(function () {
                $('.search-popup-input').focus();
            }, 1000);
        });

        $('.search-results .search-content .search-title').dotdotdot({ watch: 'true' });
        $('.search-results .search-content .description').dotdotdot({ watch: 'true' });
        showAdvancedSearchFilters();
    };

    $(window).on('resize', function () {
        showAdvancedSearchFilters();
    });

    var updateSearchResults = function (checkval) {

        $("#spinner").show();
        $(".devsearchresult").hide();

        var mediaCartTip = $.fn.mediaCartButton({
            style: 'dark'
        });
        var $form = $('.SearchForm');
        var fields = $form.serializeArray();
        var querySearchKeyword = ''
        jQuery.each(fields, function (i, field) {
            if (field.name == "Query")
                querySearchKeyword = field.value;
        })
        $.ajax({
            url: $form.attr('action'),
            type: 'POST',
            data: $form.serialize(),
            traditional: true,
            error: function (jqXHR, textStatus, error) {
                mediaCartTip.showTip($form.find('.search-result-container').data('error-message'), $('.SearchForm'), 'completed', 1500);
            },
            success: function (data) {
                var isCookieEnabled = JSON.parse($.cookie('optFunc'));
                if (isCookieEnabled) {
                    if (checkval == false) {//send page view only when its called on search event on page and not on page load 
                        if (window.ga && ga.create) {
                            ga('send', 'pageview', '/global/sitesearch/query=' + querySearchKeyword);
                        }

                        if (GA4Key != '') {
                            gtag('config', GA4Key, {
                                'page_path': '/global/sitesearch/query=' + querySearchKeyword
                            });
                        }
                    }
                    if (isGTMKeyEnabled) {
                        if (isGTMKeyEnabled === "True" && querySearchKeyword != undefined && querySearchKeyword != "") {
                            $html = $(data);
                            $items = $html.find('.search-item');
                            SendGoogleAnalyticEvent($items.length, querySearchKeyword);
                        } else {
                            if (querySearchKeyword != undefined && querySearchKeyword != "") {
                                SendGoogleAnalyticEventGA(data, querySearchKeyword);
                            }
                        }
                    }
                }

                //SendGoogleAnalyticEvent(data, querySearchKeyword);

                $(".search-result-container").html(data);
                completeSearchByQuery();
                updateSearchFilters();
                setShowAdvancedSearchPanel();
                $('.search-results .search-content .title').dotdotdot({ watch: 'true' });
                $('.search-results .search-content .search-title').dotdotdot({ watch: 'true' });
                $('.search-results .search-content .description').dotdotdot({ watch: 'true' });
                $('.search-results .search-content .category').dotdotdot({ watch: 'true' });
                if ($(".search-page").length || $(".tag-search").length) {
                    $("html, body").animate({ scrollTop: 0 }, "slow");
                }
                $(".devsearchresult").show();
                $("#spinner").hide();
            }

        });
    };
    var SendGoogleAnalyticEventGA = function (data, querySearchKeyword) {

        var _eventAction = '';
        $html = $(data)
        $items = $html.find('.search-item')
        if ($items.length == 0) {
            _eventAction = 'Miss';
        }
        else { _eventAction = 'Hit'; }
        if (window.ga && ga.create) {
            //ga('set', 'anonymizeIp', true);
            ga('send', {
                'hitType': 'event',
                'eventCategory': 'KeywordSearch',
                'eventAction': _eventAction,
                'eventLabel': querySearchKeyword,
                'eventValue': $items.length,
                'nonInteraction': true
            });
        }

        if (GA4Key != '') {
            gtag('event', 'KeywordSearch', {
                eventCategory: 'keywordSearch',
                eventAction: _eventAction,
                eventLabel: querySearchKeyword,
                eventValue: $items.length
            });
        }
    }
    var SendGoogleAnalyticEvent = function (itemCount, querySearchKeyword) {
        var _eventAction = '';
        if (itemCount == 0) {
            _eventAction = 'Miss';
        }
        else { _eventAction = 'Hit'; }
        dataLayer.push(['_gat._anonymizeIp']);
        dataLayer.push({
            'event': 'GAEvent',
            'eventCategory': 'KeywordSearch',
            'eventAction': _eventAction,
            'eventLabel': querySearchKeyword,
            'eventValue': itemCount,
            'nonInteraction': true
        });
    }

    var completeSearchByQuery = function () {
        $('.search-results .pagination-centered a').on('click', function (e) {
            e.preventDefault();

            var page = $(this).attr('page');
            $("#PageNumber").attr("value", page);
            $('.relevance-panel .filter-item.active').find('input:radio').prop('checked', true).attr('name', 'SortType');

            updateSearchResults(false);
        });
        if ($('.search-results').hasClass('remove-paging-line')) {
            $('.search-results').find('.search-item').last().css('borderBottom', 'none');
        }
    };

    $('.search-filters ul li label').on('click', function () {
        var $radios = $(this).closest('ul').find('input:radio');
        for (var i = 0; i < $radios.length; i++) {
            $radios.eq(i).prop('checked', false);
            $radios.eq(i).parent().removeClass('active');
            $('.checked-filter-item').remove();
        }

        var $thisRadio = $(this).siblings('input:radio');
        $thisRadio.prop('checked', true);
        $thisRadio.parent().addClass('active');

        $('.filter-item.active').find('input:radio').prop('checked', true).attr('name', 'SortType');

        renderSelectedFilters();
        $('[name=PageNumber]').val(1);

        updateSearchResults(false);
    });

    var removesessionStorage = function () {
        sessionStorage.removeItem("storageDate");
        sessionStorage.removeItem("storageSectionsNames");
        sessionStorage.removeItem("storageCategories");
        sessionStorage.removeItem("storageContentTypes");
    };

    var setSelectedValues = function (allFilter) {
        for (var i = 0; i < allFilter.length; i++) {
            for (var j = 0; j < allFilter.eq(i).children().length; j++) {
                if (allFilter.eq(i).find('li').eq(j).find('input:radio').val() == sessionStorage.getItem("storageDate") || allFilter.eq(i).find('li').eq(j).find('input:radio').val() == sessionStorage.getItem("storageSectionsNames") || allFilter.eq(i).find('li').eq(j).find('input:radio').val() == sessionStorage.getItem("storageCategories") || allFilter.eq(i).find('li').eq(j).find('input:radio').val() == sessionStorage.getItem("storageContentTypes")) {
                    allFilter.eq(i).find('li').eq(j).find('input:radio').prop('checked', true);
                    allFilter.eq(i).find('li').eq(j).addClass('active');
                }
            }
            if (allFilter.eq(i).find('li').hasClass('active') == false) {
                var firstElement = allFilter.eq(i).find('li').first();
                firstElement.addClass('first-item').addClass('active');
                firstElement.find('input:radio').prop('checked', true);
            }
            else {
                var firstElement = allFilter.eq(i).find('li').first();
                firstElement.addClass('first-item');
            }
        }
    };

    var renderSelectedFilters = function () {
        var filterBlocks = $('.search-filters ul'),
            $checkedFilters = $('.checked-filters .twelve');
        $.each(filterBlocks, function (index, item) {
            var allFilterItem = $(item).find("li");

            for (var j = 0; j < allFilterItem.length; j++) {
                if (allFilterItem.eq(j).hasClass('active') && !allFilterItem.eq(j).hasClass('first-item')) {
                    var $checkedFilterItem = $('<div class="checked-filter-item"><span class="filter-text">' + allFilterItem.eq(j).find('a').text() + '</span><span class="cross-icon-wrapper"><i class="icon-search-cross"></i></span></div>');
                    $checkedFilters.append($checkedFilterItem);
                    var $defaultInBlock = $(item).find('li').first().find('label');
                    $checkedFilterItem.on("click touchstart", ".cross-icon-wrapper", function (e) {
                        e.preventDefault();
                        $defaultInBlock.click();
                    });
                }
            }
        });
    };

    $('[name=SelectedSection], [name=SelectedCategory], [name=FilterByDate], [name=SortType]').change(function () {
        updateSearchResults(false);
    });

    $('.search-button').on('click', function () {
        newQuerySearch();
    });

    $(".SearchForm").submit(function (event) {
        event.preventDefault();
        updateSearchResults(false);
    });

    $('.clear-all-filters').on('click', function () {
        var $allRadioButtons = $('.search-filters ul li').find('input:radio');
        for (var i = 0; i < $allRadioButtons.length; i++) {
            $allRadioButtons.eq(i).prop('checked', false);
            $allRadioButtons.eq(i).parent().removeClass('active');
            $('.checked-filter-item').remove();
        }
        setDefaultFilters();
    });

    $('.advance-search-search-button').on('click', function () {
        goToSearch($('.search-popup-input'));
    });
    $('.advance-search-reset-button').on('click', function () {
        //$('body').removeClass('popup-opened');
        //$('#advance-search-popup').animateType('close', function () {
        //    $('.popup-bg[popup="' + 'advance-search-popup' + '"]').remove();           
        //});
        $('.search-popup-input').removeClass('invalid');
        $('.search-popup-input').val('');
        $("#SelectDatePopup option:first").attr('selected', 'selected');
        $("#Filter_SectionsNames option:first").attr('selected', 'selected');
        $("#Filter_Categories option:first").attr('selected', 'selected');
        $("#Filter_ContentTypes option:first").attr('selected', 'selected');

        removesessionStorage();
    });

    var goToSearch = function ($searchInput) {
        var query = $('<div />').text($.trim($searchInput.val())).html();
        var Date = $("#SelectDatePopup option:selected").val();
        var SectionsNames = $("#Filter_SectionsNames option:selected").val();
        var Categories = $("#Filter_Categories option:selected").val();
        var ContentTypes = $("#Filter_ContentTypes option:selected").val()

        sessionStorage.setItem("storageDate", Date);
        sessionStorage.setItem("storageSectionsNames", SectionsNames);
        sessionStorage.setItem("storageCategories", Categories);
        sessionStorage.setItem("storageContentTypes", ContentTypes);
        query = encodeURIComponent(query);
        if (query == "" && !$searchInput.parent().hasClass("small")) {
            $('.search-popup-input').addClass('invalid');
            return;
        }
        var url = $searchInput.attr("data-search-url") + (/<|>|%|&|\:|\?|\*/g.exec(query) ? "?query=" : "/") + query;
        window.location.href = url;
    };

    if (document.location.toString().toLowerCase().indexOf('sitesearch') != -1 || document.location.toString().toLowerCase().indexOf('suche') != -1) {
        if ((sessionStorage.getItem("storageDate") == '' || sessionStorage.getItem("storageDate") == null) && (sessionStorage.getItem("storageSectionsNames") == '' || sessionStorage.getItem("storageSectionsNames") == null) && (sessionStorage.getItem("storageCategories") == '' || sessionStorage.getItem("storageCategories") == null) && (sessionStorage.getItem("storageContentTypes") == '' || sessionStorage.getItem("storageContentTypes") == null)) {
            setDefaultFilters();
            updateSearchResults(true);

        } else {
            var allFilter = $('.search-filters-wrapper .search-filters ul');
            setSelectedValues(allFilter);
            renderSelectedFilters();
            updateSearchResults(true);
        }
    }

    updateSearchFilters();
    completeSearchByQuery();
});

;
var AddThisHelper = new function() {

    this.UpdateWindowShareData = function() {
        AddThisHelper.UpdateShareData({
            url: window.location.href,
            title: window.document.title
        });
    };

    this.UpdateShareData = function(shareData) {
        if (window['addthis'] == undefined) return;

        addthis.update('share', 'url', shareData.url);
        addthis.update('share', 'title', shareData.title);
        addthis.init();
    };
};;

(function (customValidation, $, undefined) {
    var defaultValidateOn = ['change', 'keyup', 'focusout'];
    var defaultRule = {
        validateOn: defaultValidateOn,
        isValid: function (field) {
            return true;
        },
        validate: function (field) {
            var $element = field.getElement();
            $element.closest('div').toggleClass('invalid', this.isValid(field) == false);            
        },
        resetValidation: function (field) {
            var $element = field.getElement();
            $element.closest('div').removeClass('invalid');
        },
        onFormEvent: function(field, senderField, e) {
            if (field === senderField && _.contains(field.validateOn, e.type) && _.contains(this.validateOn, e.type)) {
                this.validate(field);
            }
        }
    };

    customValidation.rules = {
        required: _.extend(_.clone(defaultRule), {
            isValid: function (field) {
                return $.trim(field.getValue()) != '';
            }
        }),
        ignore: _.extend(_.clone(defaultRule), {
            isValid: function (field) {
                return true;
            }
        }),
        email: _.extend(_.clone(defaultRule), {
            isValid: function (field) {
                return $.validator.methods.email.call({ optional: function () { return false; } }, field.getValue(), field.getElement());
            }
        }),
        namevalidate: _.extend(_.clone(defaultRule), {
            isValid: function (field) {
                return $.validator.methods.namevalidate.call({ optional: function () { return false; } }, field.getValue(), field.getElement());
            }
        }),
        emailvalidate: _.extend(_.clone(defaultRule), {
            isValid: function (field) {
                return $.validator.methods.emailvalidate.call({ optional: function () { return false; } }, field.getValue(), field.getElement());
            }
        }),
        titlevalidate: _.extend(_.clone(defaultRule), {
            isValid: function (field) {
                return $.validator.methods.titlevalidate.call({ optional: function () { return false; } }, field.getValue(), field.getElement());
            }
        }),
        websitevalidate: _.extend(_.clone(defaultRule), {
            isValid: function (field) {
                return $.validator.methods.websitevalidate.call({ optional: function () { return false; } }, field.getValue(), field.getElement());
            }
        }),
        recaptchavalidate:_.extend(_.clone(defaultRule), {
            isValid: function (field) {
                return $.validator.methods.recaptchavalidate.call({ optional: function () { return false; } }, field.getValue(), field.getElement());
            }
        }),
        agreevalidate: _.extend(_.clone(defaultRule), {
            isValid: function (field) {
                return field.getElement()[0].checked;
            }
        }),
        ifNot: function (fieldNamesToValues, rules) {
            
            var checkIfMatch = function(field) {
                return _.reduce(fieldNamesToValues, function (memo, values, otherFieldName) {
                    return memo || _.contains(values, field.validator.getFieldByName(otherFieldName).getValue());
                }, false);
            };

            return _.extend(_.clone(defaultRule), {
                ifNotAction: function(field, isMatch) {
                    var $div = field.getElement().closest('div');
                    $div.toggle(isMatch == false);
                },
                isValid: function(field) {
                    return checkIfMatch(field) || _.reduce(rules, function(memo, x) {
                        return memo && x.isValid(field);
                    }, true);
                },
                validate: function (field) {
                    var isMatch = checkIfMatch(field);
                    this.ifNotAction(field, isMatch);

                    if (isMatch == false) {
                        _.each(rules, function(x) {
                            x.validate(field);
                        });
                    }
                },
                resetValidation: function(field) {
                    this.ifNotAction(field, checkIfMatch(field));

                    _.each(rules, function(x) {
                        x.resetValidation(field);
                    });
                },
                onFormEvent: function (field, senderField, e) {
                    if (_.has(fieldNamesToValues, senderField.name)) {
                        this.ifNotAction(field, checkIfMatch(field));
                    }

                    _.each(rules, function (x) {
                        x.onFormEvent(field, senderField, e);
                    });
                }
            });
        },
    };

    customValidation.createCustomValidator = function ($rootElement, options) {
        options = options || {};
        options.fields = options.fields || {};

        var validator = {
            $rootElement: $rootElement,
            getFieldByName: function(name) {
                return _.find(this.fields, function(x) {
                    return x.name == name;
                }, this);
            },
            getValues: function() {
                return _.object(_.map(this.fields, function(x) {
                    return [x.name, x.getValue()];
                }));
            },
            setValues: function(values) {
                _.each(values, function(value, key) {
                    var field = this.getFieldByName(key);
                    if (field) {
                        field.setValue(value);
                    }
                }, this);
            },
            isValid: function() {
                return _.every(this.fields, function(field) {
                    return field.isValid();
                });
            },
            shallowValidate: function() {
                this.$rootElement.toggleClass('invalid', validator.isValid() == false);
            },
            validate: function() {
                this.shallowValidate();

                _.each(this.fields, function(x) {
                    x.validate(x);
                });
            },
            resetValidation: function() {
                this.$rootElement.removeClass('invalid');

                _.each(this.fields, function(x) {
                    x.resetValidation(x);
                });
            },
            onFormEvent: function(senderElementName, e) {
                var senderField = this.getFieldByName(senderElementName);
                if (!senderField) return;

                this.shallowValidate();

                _.each(this.fields, function (x) {
                    x.onFormEvent(senderField, e);
                });
            }
        };

        validator.fields = _.map(options.fields, function(fieldOptions, name) {
            return createCustomFieldValidator($rootElement, validator, name, fieldOptions);
        });

        $rootElement.off('change keyup focusout', 'input, select, textarea');
        $rootElement.on('change keyup focusout', 'input, select, textarea', function (e) {
            validator.onFormEvent($(this).attr('name'), e);
        });

        return validator;
    };

    function createCustomFieldValidator($rootElement, validator, name, options) {
        options = options || [];

        return {
            $rootElement: $rootElement,
            validator: validator,
            name: name,
            rules: _.isArray(options) ? options : options.rules || [],
            validateOn: _.isArray(options) ? defaultValidateOn : options.validateOn || defaultValidateOn,
            getValue: function () {
                return this.getElement().val();
            },
            setValue: function (value) {
                return this.getElement().val(value);
            },
            getElement: function () {
                return this.$rootElement.find('[name="' + this.name + '"]');
            },
            isValid: function () {
                return _.reduce(this.rules, function (memo, x) {
                    return memo && x.isValid(this);
                }, true, this);
            },
            validate: function () {
                _.each(this.rules, function (x) {
                    x.validate(this);
                }, this);
            },
            resetValidation: function () {
                _.each(this.rules, function (x) {
                    x.resetValidation(this);
                }, this);
            },
            onFormEvent: function (senderField, e) {
                _.each(this.rules, function (x) {
                    x.onFormEvent(this, senderField, e);
                }, this);
            }
        };
    };

    $.fn.extend({
        createCustomValidator: function (options) {
            return customValidation.createCustomValidator($(this), options);
        },
    });

}(window.customValidation = window.customValidation || {}, jQuery));;
/*
    json2.js
    2011-10-19

    Public Domain.

    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.

    See http://www.JSON.org/js.html


    This code should be minified before deployment.
    See http://javascript.crockford.com/jsmin.html

    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
    NOT CONTROL.


    This file creates a global JSON object containing two methods: stringify
    and parse.

        JSON.stringify(value, replacer, space)
            value       any JavaScript value, usually an object or array.

            replacer    an optional parameter that determines how object
                        values are stringified for objects. It can be a
                        function or an array of strings.

            space       an optional parameter that specifies the indentation
                        of nested structures. If it is omitted, the text will
                        be packed without extra whitespace. If it is a number,
                        it will specify the number of spaces to indent at each
                        level. If it is a string (such as '\t' or '&nbsp;'),
                        it contains the characters used to indent at each level.

            This method produces a JSON text from a JavaScript value.

            When an object value is found, if the object contains a toJSON
            method, its toJSON method will be called and the result will be
            stringified. A toJSON method does not serialize: it returns the
            value represented by the name/value pair that should be serialized,
            or undefined if nothing should be serialized. The toJSON method
            will be passed the key associated with the value, and this will be
            bound to the value

            For example, this would serialize Dates as ISO strings.

                Date.prototype.toJSON = function (key) {
                    function f(n) {
                        // Format integers to have at least two digits.
                        return n < 10 ? '0' + n : n;
                    }

                    return this.getUTCFullYear()   + '-' +
                         f(this.getUTCMonth() + 1) + '-' +
                         f(this.getUTCDate())      + 'T' +
                         f(this.getUTCHours())     + ':' +
                         f(this.getUTCMinutes())   + ':' +
                         f(this.getUTCSeconds())   + 'Z';
                };

            You can provide an optional replacer method. It will be passed the
            key and value of each member, with this bound to the containing
            object. The value that is returned from your method will be
            serialized. If your method returns undefined, then the member will
            be excluded from the serialization.

            If the replacer parameter is an array of strings, then it will be
            used to select the members to be serialized. It filters the results
            such that only members with keys listed in the replacer array are
            stringified.

            Values that do not have JSON representations, such as undefined or
            functions, will not be serialized. Such values in objects will be
            dropped; in arrays they will be replaced with null. You can use
            a replacer function to replace those with JSON values.
            JSON.stringify(undefined) returns undefined.

            The optional space parameter produces a stringification of the
            value that is filled with line breaks and indentation to make it
            easier to read.

            If the space parameter is a non-empty string, then that string will
            be used for indentation. If the space parameter is a number, then
            the indentation will be that many spaces.

            Example:

            text = JSON.stringify(['e', {pluribus: 'unum'}]);
            // text is '["e",{"pluribus":"unum"}]'


            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'

            text = JSON.stringify([new Date()], function (key, value) {
                return this[key] instanceof Date ?
                    'Date(' + this[key] + ')' : value;
            });
            // text is '["Date(---current time---)"]'


        JSON.parse(text, reviver)
            This method parses a JSON text to produce an object or array.
            It can throw a SyntaxError exception.

            The optional reviver parameter is a function that can filter and
            transform the results. It receives each of the keys and values,
            and its return value is used instead of the original value.
            If it returns what it received, then the structure is not modified.
            If it returns undefined then the member is deleted.

            Example:

            // Parse the text. Values that look like ISO date strings will
            // be converted to Date objects.

            myData = JSON.parse(text, function (key, value) {
                var a;
                if (typeof value === 'string') {
                    a =
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                    if (a) {
                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                            +a[5], +a[6]));
                    }
                }
                return value;
            });

            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                var d;
                if (typeof value === 'string' &&
                        value.slice(0, 5) === 'Date(' &&
                        value.slice(-1) === ')') {
                    d = new Date(value.slice(5, -1));
                    if (d) {
                        return d;
                    }
                }
                return value;
            });


    This is a reference implementation. You are free to copy, modify, or
    redistribute.
*/

/*jslint evil: true, regexp: true */

/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
    lastIndex, length, parse, prototype, push, replace, slice, stringify,
    test, toJSON, toString, valueOf
*/


// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

var JSON;
if (!JSON) {
    JSON = {};
}

(function () {
    'use strict';

    function f(n) {
        // Format integers to have at least two digits.
        return n < 10 ? '0' + n : n;
    }

    if (typeof Date.prototype.toJSON !== 'function') {

        Date.prototype.toJSON = function (key) {

            return isFinite(this.valueOf())
                ? this.getUTCFullYear()     + '-' +
                    f(this.getUTCMonth() + 1) + '-' +
                    f(this.getUTCDate())      + 'T' +
                    f(this.getUTCHours())     + ':' +
                    f(this.getUTCMinutes())   + ':' +
                    f(this.getUTCSeconds())   + 'Z'
                : null;
        };

        String.prototype.toJSON      =
            Number.prototype.toJSON  =
            Boolean.prototype.toJSON = function (key) {
                return this.valueOf();
            };
    }

    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        gap,
        indent,
        meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        },
        rep;


    function quote(string) {

// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.

        escapable.lastIndex = 0;
        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
            var c = meta[a];
            return typeof c === 'string'
                ? c
                : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    }


    function str(key, holder) {

// Produce a string from holder[key].

        var i,          // The loop counter.
            k,          // The member key.
            v,          // The member value.
            length,
            mind = gap,
            partial,
            value = holder[key];

// If the value has a toJSON method, call it to obtain a replacement value.

        if (value && typeof value === 'object' &&
                typeof value.toJSON === 'function') {
            value = value.toJSON(key);
        }

// If we were called with a replacer function, then call the replacer to
// obtain a replacement value.

        if (typeof rep === 'function') {
            value = rep.call(holder, key, value);
        }

// What happens next depends on the value's type.

        switch (typeof value) {
        case 'string':
            return quote(value);

        case 'number':

// JSON numbers must be finite. Encode non-finite numbers as null.

            return isFinite(value) ? String(value) : 'null';

        case 'boolean':
        case 'null':

// If the value is a boolean or null, convert it to a string. Note:
// typeof null does not produce 'null'. The case is included here in
// the remote chance that this gets fixed someday.

            return String(value);

// If the type is 'object', we might be dealing with an object or an array or
// null.

        case 'object':

// Due to a specification blunder in ECMAScript, typeof null is 'object',
// so watch out for that case.

            if (!value) {
                return 'null';
            }

// Make an array to hold the partial results of stringifying this object value.

            gap += indent;
            partial = [];

// Is the value an array?

            if (Object.prototype.toString.apply(value) === '[object Array]') {

// The value is an array. Stringify every element. Use null as a placeholder
// for non-JSON values.

                length = value.length;
                for (i = 0; i < length; i += 1) {
                    partial[i] = str(i, value) || 'null';
                }

// Join all of the elements together, separated with commas, and wrap them in
// brackets.

                v = partial.length === 0
                    ? '[]'
                    : gap
                    ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
                    : '[' + partial.join(',') + ']';
                gap = mind;
                return v;
            }

// If the replacer is an array, use it to select the members to be stringified.

            if (rep && typeof rep === 'object') {
                length = rep.length;
                for (i = 0; i < length; i += 1) {
                    if (typeof rep[i] === 'string') {
                        k = rep[i];
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            } else {

// Otherwise, iterate through all of the keys in the object.

                for (k in value) {
                    if (Object.prototype.hasOwnProperty.call(value, k)) {
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            }

// Join all of the member texts together, separated with commas,
// and wrap them in braces.

            v = partial.length === 0
                ? '{}'
                : gap
                ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
                : '{' + partial.join(',') + '}';
            gap = mind;
            return v;
        }
    }

// If the JSON object does not yet have a stringify method, give it one.

    if (typeof JSON.stringify !== 'function') {
        JSON.stringify = function (value, replacer, space) {

// The stringify method takes a value and an optional replacer, and an optional
// space parameter, and returns a JSON text. The replacer can be a function
// that can replace values, or an array of strings that will select the keys.
// A default replacer method can be provided. Use of the space parameter can
// produce text that is more easily readable.

            var i;
            gap = '';
            indent = '';

// If the space parameter is a number, make an indent string containing that
// many spaces.

            if (typeof space === 'number') {
                for (i = 0; i < space; i += 1) {
                    indent += ' ';
                }

// If the space parameter is a string, it will be used as the indent string.

            } else if (typeof space === 'string') {
                indent = space;
            }

// If there is a replacer, it must be a function or an array.
// Otherwise, throw an error.

            rep = replacer;
            if (replacer && typeof replacer !== 'function' &&
                    (typeof replacer !== 'object' ||
                    typeof replacer.length !== 'number')) {
                throw new Error('JSON.stringify');
            }

// Make a fake root object containing our value under the key of ''.
// Return the result of stringifying the value.

            return str('', {'': value});
        };
    }


// If the JSON object does not yet have a parse method, give it one.

    if (typeof JSON.parse !== 'function') {
        JSON.parse = function (text, reviver) {

// The parse method takes a text and an optional reviver function, and returns
// a JavaScript value if the text is a valid JSON text.

            var j;

            function walk(holder, key) {

// The walk method is used to recursively walk the resulting structure so
// that modifications can be made.

                var k, v, value = holder[key];
                if (value && typeof value === 'object') {
                    for (k in value) {
                        if (Object.prototype.hasOwnProperty.call(value, k)) {
                            v = walk(value, k);
                            if (v !== undefined) {
                                value[k] = v;
                            } else {
                                delete value[k];
                            }
                        }
                    }
                }
                return reviver.call(holder, key, value);
            }


// Parsing happens in four stages. In the first stage, we replace certain
// Unicode characters with escape sequences. JavaScript handles many characters
// incorrectly, either silently deleting them, or treating them as line endings.

            text = String(text);
            cx.lastIndex = 0;
            if (cx.test(text)) {
                text = text.replace(cx, function (a) {
                    return '\\u' +
                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
            }

// In the second stage, we run the text against regular expressions that look
// for non-JSON patterns. We are especially concerned with '()' and 'new'
// because they can cause invocation, and '=' because it can cause mutation.
// But just to be safe, we want to reject all unexpected forms.

// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.

            if (/^[\],:{}\s]*$/
                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');

// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.

                return typeof reviver === 'function'
                    ? walk({'': j}, '')
                    : j;
            }

// If the text is not JSON parseable, then a SyntaxError is thrown.

            throw new SyntaxError('JSON.parse');
        };
    }
}());
;
var McConfig = new function () {
    this.MediaRoomShortName = $("input:hidden[name='McConfig.MediaRoomShortName']").val();
    this.MediaPanelApiBaseUrl = $("input:hidden[name='McConfig.MediaPanelApiBaseUrl']").val();
    this.MediaPanelGuid = $("input:hidden[name='McConfig.MediaPanelGuid']").val();
    this.TellUsAboutYouMode = $("input:hidden[name='McConfig.TellUsAboutYouMode']").val();
    this.TellUsAboutyouFields = $("input:hidden[name='McConfig.TellUsAboutyouFields']").val();
    this.HideFieldsPanel = $("input:hidden[name='McConfig.HideFieldsPanel']").val();
    this.StoreIAggreeCookieDisabled = $("input:hidden[name='McConfig.StoreIAggreeCookieDisabled']").val();
    this.IsLogregEnabled = $("input:hidden[name='McConfig.IsLogregEnabled']").val();
    this.IsDownloadGated = $("input:hidden[name='McConfig.IsDownloadGated']").val();
    this.LogregWebApiDomainUrl = $("input:hidden[name='McConfig.LogregWebApiDomainUrl']").val();
    this.Logregv3DomainUrl = $("input:hidden[name='McConfig.Logregv3DomainUrl']").val();
    this.DownloadServiceBaseUrl = $("input:hidden[name='McConfig.DownloadServiceBaseUrl']").val();
    this.MediacartEnabled = ($("input:hidden[name='McConfig.IsMediaCartEnabled']").val().toLowerCase() === 'true');
    this.MediacartCountEnabled = ($("input:hidden[name='McConfig.IsMediacartCountEnabled']").val().toLowerCase() === 'true');
    this.IsUseDefaultEmailSystem = ($("input:hidden[name='McConfig.IsUseDefaultEmailSystem']").val().toLowerCase() === 'true');
    this.ContactUsEmailSendTo = ($("input:hidden[name='McConfig.ContactUsEmailSendTo']").val().toLowerCase() === 'true');
    this.HeardFrom = ($("input:hidden[name='McConfig.HeardFrom']").val().toLowerCase() === 'true');
    this.AuthenticationMode = $("input:hidden[name='McConfig.AuthenticationMode']").val();
    this.AuthorizationMode = $("input:hidden[name='McConfig.AuthorizationMode']").val();
    this.ReCaptcha = $("input:hidden[name='McConfig.ReCaptcha']").val();
    this.ShowAdvanceSearchPopUp = $("input:hidden[name='McConfig.ShowAdvanceSearchPopUp']").val();
    this.IsDirectDownloadEnabled = $("input:hidden[name='McConfig.IsDirectDownloadEnabled']").val().toUpperCase();
    this.IsDirectDownloadEnabled = $("input:hidden[name='McConfig.IsDirectDownloadEnabled']").val().toUpperCase();
    this.EmbedShareUrl = $("input:hidden[name='McConfig.EmbedShareUrl']").val();
    this.DefaultVideoFormat = '12';
    this.FileTypeMappings = GetFiletypeMappings();
    this.DownloadAllAssetTypeMappings = GetDownloadAllAssetTypeMappings();
    this.FileSizeExceedMessage = $("input:hidden[name='Asset.FileszieExceeedsMessage']").val();
    this.FormatChangedMessage = $("input:hidden[name='Asset.FormatChangedMessage']").val();
    this.TotalAssestsMaxSizeinKB = $("input:hidden[name='McConfig.TotalAssestsMaxSizeinKB']").val();
    this.DownloadDisabledMessage = $("input:hidden[name='Asset.DownloadDisabledMessage']").val();
    this.DirectDownlodDownloadingMessage = $("input:hidden[name='DirectDownlod.DirectDownlodDownloadingMessage']").val();
    this.ImageWebQualityEnabled = $("input:hidden[name='McConfig.ImageWebQualityEnabled']").val().toLowerCase() === 'true';
    this.IsMultiCulture = $("input:hidden[name='McConfig.IsMultiCulture']").val().toLowerCase();  
    this.GetFileTypeID = function (fileType) {
        var fileTypeID = this.FileTypeMappings[fileType.toString().toUpperCase()];
        if (fileTypeID)
            return fileTypeID;
        else return this.DefaultVideoFormat;
    };
    this.GetDownloadAllAssetTypeID = function (DownloadAllAssetType) {
        var DownloadAllAssetTypeID = this.DownloadAllAssetTypeMappings[DownloadAllAssetType.toString()];
        return DownloadAllAssetTypeID;
    };
    this.DotDotDotApplyByLetter = $("input:hidden[name='McConfig.DotDotDotApplyByLetter']").val();
    this.IsDefaultAmp = $("input:hidden[name='McConfig.IsDefaultAmp']").val().toLowerCase();
    this.IsCookieConsentAcceptedCookieName = $("input:hidden[name='McConfig.IsCookieConsentAcceptedCookieName']").val();    
};

function GetFiletypeMappings() {
    var filetypes = {};
    filetypes['NTSC MPEG-2'] = '1';
    filetypes['NTSC'] = '1';
    filetypes['PAL MPEG-2'] = '2';
    filetypes['PAL'] = '2';
    filetypes['WMV'] = '3';
    filetypes['QUICKTIME'] = '12';
    filetypes['FLASH'] = '13';
    filetypes['HD VIDEO'] = '14';
    filetypes['HD'] = '14';
    filetypes['NATIVE'] = '14';
    filetypes['720P @ 4500 KBPS'] = '16';
    filetypes['1080P @ 8000 KBPS'] = '17';
    filetypes['PRINT'] = '7';
    filetypes['WEB'] = '8';
    filetypes['SOURCE'] = '0';
    filetypes['WEB 320P'] = '487041';
    filetypes['HD 720P'] = '487081';
    filetypes['HD 1080P'] = '487091';
    return filetypes;
}

function GetDownloadAllAssetTypeMappings() {
    var DownloadAllAssetTypes = {};
    DownloadAllAssetTypes['all'] = 0;
    DownloadAllAssetTypes['video-type'] = 1;
    DownloadAllAssetTypes['audio-type'] = 2;
    DownloadAllAssetTypes['img-type'] = 3;
    return DownloadAllAssetTypes;
};
(function ($) {
    $.fn.mediaCartButton = function (options) {
        var zIndex = parseInt($('input[name="McConfig.ZIndexPopUp"]').val());
        var defaults = {
            container: 'body',
            containerObject: {},
            tipClassName: 'mediacart-tip',
            style: 'dark',
            multiple: false,
            minimumDuration: 1000,
            animationDuration: 250,
            autoCloseDuration: 1500,
            callback: function () { }
        };
        var cookieName = 'media-cart-data';
        var settings = $.extend({}, defaults, options);
        var locked = false;
        var singleAssetData;
        var tip = $('<div />');
        var typeIcons = {
            'completed': 'icons-tip-media-cart',
            'busy': 'spinner',
            'exclamation': 'icons-exclamation'
        };
        var phrases;

        $.amp.onAssetDataChanged(function (e, element, data) {
            singleAssetData = data;
        });

        function are_cookies_enabled() {
            var cookieEnabled = (navigator.cookieEnabled) ? true : false;

            if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) {
                document.cookie = "testcookie";
                cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false;
            }
            return (cookieEnabled);
        }

        function showTip(text, container, type, autoClose, checkHeroAssetDownload) {
            tip.css('width', 'auto');
            if (container.hasClass('rsOverflow')) {
                tip.css('z-index', '60');
            } else {
                tip.attr('style', '');
            }
            if (checkHeroAssetDownload != 'HeroAssetDownload') {
                if (settings.container === 'body') {
                    tip.css('position', 'fixed');
                }
            }
            if (tip.is(':visible') && !locked) {
                tip.fadeOut(settings.animationDuration, function () {
                    showTip(text, container, type, autoClose);
                });
            } else {
                tip.removeClass().addClass(settings.tipClassName).addClass(settings.style).addClass(type);
                tip.appendTo(container);
                tip.html('<h4><span>' + text + '</span></h4>').css({
                    'top': 0,
                    'left': 0
                });
                if (checkHeroAssetDownload == 'HeroAssetDownload') {
                    tip.find("span").css("font-size", "12px");
                }
                if (typeIcons[type]) {
                    tip.find('h4').prepend('<i class="icon ' + typeIcons[type] + (tip.hasClass('light') ? '-dark' : '') + '"></i>');
                }
                tip.css({
                    'white-space': 'nowrap',
                    'max-width': 'none'
                });
                if (container.outerWidth() * 0.95 < tip.outerWidth()) {
                    if (bowser.name == "Internet Explorer" && bowser.version < 10) {
                        tip.css({
                            'white-space': 'normal',
                            'max-width': '80%'
                        });
                    } else {
                        tip.css({
                            'white-space': 'normal',
                            'max-width': '95%'
                        });
                    }
                }
                tip.css({
                    'top': '50%',
                    'margin-top': -Math.round(tip.outerHeight() / 2),
                    'left': '50%',
                    'margin-left': -Math.round(tip.outerWidth() / 2),
                    'z-index': 9999
                });
                tip.fadeIn(settings.animationDuration);
                if (autoClose) {
                    if (tip.data('closeTimeout')) {
                        clearTimeout(tip.data('closeTimeout'));
                    }
                    tip.data('closeTimeout', setTimeout(function () {
                        tip.fadeOut(settings.animationDuration);
                        if (checkHeroAssetDownload == 'HeroAssetDownload') {
                            container.find('.mediacart-tip.exclamation').remove();
                        }
                    }, settings.autoCloseDuration));
                }
            }
        }

        this.showTip = showTip;

        function updateTip(text, container, type, autoClose, error) {
            error = error || false;
            if (tip.is(':visible') && !locked) {
                tip.removeClass().addClass(settings.tipClassName).addClass(settings.style).addClass(type);
                tip.appendTo(container);
                tip.html('<h4><span>' + text + '</span></h4>');
                if (typeIcons[type]) {
                    tip.find('h4').prepend('<i class="icon ' + typeIcons[type] + (tip.hasClass('light') ? '-dark' : '') + '"></i>');
                }
                tip.css({
                    'white-space': 'nowrap',
                    'max-width': 'none'
                });
                if (container.outerWidth() * 0.95 < tip.outerWidth()) {
                    if (bowser.name == "Internet Explorer" && bowser.version < 10) {
                        tip.css({
                            'white-space': 'normal',
                            'max-width': '80%',
                            'width': 'auto'
                        });
                    } else {
                        tip.css({
                            'white-space': 'normal',
                            'max-width': '95%',
                            'width': 'auto'
                        });
                    }
                    if (error) {
                        tip.css({
                            'max-width': container.outerWidth() * 0.9,
                            'width': '100%'
                        });
                    }
                }
                tip.css({
                    'top': '50%',
                    'margin-top': -Math.round(tip.outerHeight() / 2),
                    'left': '50%',
                    'margin-left': -Math.round(tip.outerWidth() / 2)
                });
                tip.fadeIn(settings.animationDuration);
                if (autoClose) {
                    if (tip.data('closeTimeout')) {
                        clearTimeout(tip.data('closeTimeout'));
                    }
                    tip.data('closeTimeout', setTimeout(function () {
                        tip.fadeOut(settings.animationDuration);
                    }, settings.autoCloseDuration));
                }
            }
        }

        this.updateTip = updateTip;

        function hideTip() {
            if (tip.is(':visible') && !locked) {
                tip.fadeOut(settings.animationDuration);
            }
        }

        this.hideTip = hideTip;

        function addToCart(assetsData, callback) {
            if (are_cookies_enabled()) {
                if (!locked) {
                    var start = (new Date()).getTime(),
                        duration;

                    locked = true;
                    showTip(phrases.process, settings.containerObject, 'busy');

                    $.ajax({
                        url: MediaCart.AddUrl,
                        type: 'POST',
                        data: {
                            assetGuids: assetsData
                        },
                        traditional: true,
                        error: function (jqXHR, textStatus, error) {
                            locked = false;
                            updateTip(phrases.error, settings.containerObject, 'completed', settings.autoCloseDuration, true);
                        },
                        success: function (response) {
                            duration = (new Date()).getTime() - start;
                            setTimeout(function () {
                                locked = false;
                                callback(response);
                            }, (duration < settings.minimumDuration) ? settings.minimumDuration - duration : 0);
                        }
                    });
                }
            } else {
                $("#disable-cookies-popup").openPopup();
            }
        }

        function removeFromCart(assetData, callback) {
            if (are_cookies_enabled()) {
                if (!locked) {
                    var start = (new Date()).getTime(),
                        duration;

                    $.ajax({
                        url: MediaCart.RemoveUrl,
                        type: 'POST',
                        data: {
                            assetGuids: assetData
                        },
                        error: function (jqXHR, textStatus, error) {
                            locked = false;
                            showTip(phrases.error, settings.containerObject, 'completed', settings.autoCloseDuration, true);
                        },
                        success: function (response) {
                            locked = true;
                            showTip(phrases.process, settings.containerObject, 'busy');
                            duration = (new Date()).getTime() - start;
                            setTimeout(function () {
                                locked = false;
                                callback(response);
                            }, (duration < settings.minimumDuration) ? settings.minimumDuration - duration : 0);
                        }
                    });
                }
            } else {
                $("#disable-cookies-popup").openPopup();
            }
        }

        function clearCart(callback) {
            if (are_cookies_enabled()) {
                if (!locked) {
                    var start = (new Date()).getTime(),
                        duration;

                    locked = true;
                    showTip(phrases.process, settings.containerObject, 'busy');

                    $.ajax({
                        url: MediaCart.ClearUrl,
                        type: 'POST',
                        error: function (jqXHR, textStatus, error) {
                            locked = false;
                            updateTip(phrases.error, settings.containerObject, 'completed', settings.autoCloseDuration, true);
                        },
                        success: function (response) {
                            duration = (new Date()).getTime() - start;
                            setTimeout(function () {
                                locked = false;
                                callback(response);
                            }, (duration < settings.minimumDuration) ? settings.minimumDuration - duration : 0);
                        }
                    });
                }
            } else {
                $("#disable-cookies-popup").openPopup();
            }
        }

        function showTipWithPosition(text, container, type, autoClose, x, y) {
            tip.css('width', 'auto');
            if (container.hasClass('rsOverflow')) {
                tip.css('z-index', '60');
            } else {
                tip.attr('style', '');
            }
            if (settings.container === 'body') {
                tip.css('position', 'fixed');
            }
            if (tip.is(':visible') && !locked) {
                tip.fadeOut(settings.animationDuration, function () {
                    showTipWithPosition(text, container, type, autoClose, x, y);
                });
            } else {
                tip.removeClass().addClass(settings.tipClassName).addClass(settings.style).addClass(type);
                tip.appendTo(container);
                tip.html('<h4><span>' + text + '</span></h4>').css({
                    'top': 0,
                    'left': 0
                });
                tip.find("span").css("font-size", "12px");

                if (typeIcons[type]) {
                    tip.find('h4').prepend('<i class="icon ' + typeIcons[type] + (tip.hasClass('light') ? '-dark' : '') + '"></i>');
                }
                tip.css({
                    'white-space': 'nowrap',
                    'max-width': 'none'
                });
                if (container.outerWidth() * 0.95 < tip.outerWidth()) {
                    if (bowser.name == "Internet Explorer" && bowser.version < 10) {
                        tip.css({
                            'white-space': 'normal',
                            'max-width': '80%'
                        });
                    } else {
                        tip.css({
                            'white-space': 'normal',
                            'max-width': '95%'
                        });
                    }
                }
                tip.css({
                    'top': '50%',
                    'margin-top': -Math.round(tip.outerHeight()),
                    'left': '50%',
                    'margin-left': -Math.round(tip.outerWidth() / 2.4),
                    'z-index': (isNaN(zIndex)) ? 9999 : (zIndex + 100)
                });
                if (x && isMobileOrTabletDevice() == false) {
                    tip.css({
                        'top': y,
                        'left': x,
                    });
                }

                tip.fadeIn(settings.animationDuration);
                if (autoClose) {
                    if (tip.data('closeTimeout')) {
                        clearTimeout(tip.data('closeTimeout'));
                    }
                    tip.data('closeTimeout', setTimeout(function () {
                        tip.fadeOut(settings.animationDuration);
                        $('.mediacart-tip').remove();
                    }, settings.autoCloseDuration));
                }
            }
        }

        this.showTipWithPosition = showTipWithPosition;

        return this.each(function () {
            $(this).off('click').on('click', function (e) {
                if ($(this).hasClass("disabled") == false) {
                    var assetStatus;
                    if (Modernizr.touch && $(this).parents('.image-wrapper').length && !$(this).parents('.tablet-hover-icons').length && !$('html').hasClass('desktop-1')) {
                        return;
                    }
                    phrases = {
                        process: $(this).data('process-message'),
                        complete: $(this).data('complete-message'),
                        error: $(this).data('error-message')
                    };
                    e.stopPropagation();
                    if ($.type(settings.container) === 'string') {
                        settings.containerObject = $(settings.container);
                    } else {
                        settings.containerObject = settings.container;
                    }
                    settings.containerObject.css('position', 'relative');
                    if ($(this).hasClass('send')) {

                    } else if ($(this).hasClass('remove')) {
                        var assetData = $(this).imgItemClosest().serverAssetData().assetGuid;
                        removeFromCart(assetData, function (data) {
                            if (McConfig.MediacartCountEnabled) {
                                $('.MediaCartCount').html("(" + data.totalItems + ")");
                            }
                            hideTip();
                            settings.callback();
                        });
                    } else if ($(this).hasClass('clear')) {
                        clearCart(function (data) {
                            hideTip();
                            settings.callback();
                        });
                    } else if ($(this).hasClass('add')) {
                        var assetsData;

                        if (settings.multiple) {
                            assetsData = $(document).amp().find('input.asset-data').filter(":hidden");
                            if (!assetsData.length) {
                                if ($(this).parents('.top-tools').length) {
                                    var data_storyguid = $('.rsContent').data('storyguid');

                                    var storyGuid = $("#showcaseAmpStoryGuid[value='" + data_storyguid + "']");

                                    if (storyGuid == null || storyGuid.length == 0) {
                                        assetsData = $.merge($('.images-videos-items').imgItem().find('input.asset-data').filter(":hidden"), $('.hidden-media-items').imgItem().find('input.asset-data').filter(":hidden"));
                                    }
                                    else {
                                        assetsData = storyGuid.parent().find('input.asset-data').filter(":hidden");
                                    }
                                    //assetsData = $.merge($('.images-videos-items').imgItem().find('input.asset-data').filter(":hidden"), $('.hidden-media-items').imgItem().find('input.asset-data').filter(":hidden"));
                                } else {
                                    var currentType = $('.filters ul li.active a').attr('data-item-class');
                                    if (currentType == undefined && $('.filters').length > 0) {
                                        currentType = 'all';
                                    }
                                    if (currentType == 'all') {
                                        assetsData = $.merge($('.images-videos-items').imgItem().find('input.asset-data').filter(":hidden"), $('.hidden-media-items').imgItem().find('input.asset-data').filter(":hidden"));
                                    } else {
                                        assetsData = $.merge($('.images-videos-items').imgItem().find('input.asset-data').filter(":hidden"), $('.hidden-media-items').imgItem().filter('.' + currentType).find('input.asset-data').filter(":hidden"));
                                    }
                                }
                            }
                            assetStatus = $.map(assetsData, function (x) {
                                return $(x).data('asset-status');
                            });
                            assetsData = $.map(assetsData, function (x) {
                                return $(x).data('assetGuid');
                            });
                        } else {
                            if (singleAssetData) {
                                assetsData = [singleAssetData.assetGuid];
                                assetStatus = [singleAssetData.assetStatus];
                            } else {
                                assetsData = [$(this).imgItemClosest().serverAssetData().assetGuid];
                                assetStatus = [$(this).imgItemClosest().serverAssetData().assetStatus];
                            }
                        }
                        if (!_.contains(assetStatus, "PendingClientApproval")) {
                            addToCart(assetsData, function (response) {
                                if (response.IsSuccess) {
                                    updateTip(phrases.complete, settings.containerObject, 'completed', settings.autoCloseDuration);
                                    if (McConfig.MediacartCountEnabled) {
                                        $('.MediaCartCount').html("(" + response.totalItems + ")");
                                    }
                                } else {
                                    updateTip(phrases.error, settings.containerObject, 'completed', settings.autoCloseDuration, true);
                                }
                                settings.callback();
                            });
                        }
                    }
                }
            });
        });
    };

    var updateFiltersCount = function () {
        var $allCountWrapper = $('.mediacart .filters ul li a').filter('.all').find('p'),
            countsOfAllItems = $('.mediacart ul.images-videos-items li').length + $('.hidden-media-items li').length;

        var countItems = function (type) {
            var visibleCount = $('.mediacart ul.images-videos-items li > div').filter('.' + type).parent().length,
                invisibleCount = $('.mediacart .hidden-media-items li > div').filter('.' + type).parent().length;
            return visibleCount + invisibleCount;
        };

        var filterItem = function (type) {
            return $('.mediacart .filters ul li a.' + type).find('p');
        };

        var updateFilter = function (type) {
            var count = countItems(type);
            if ((count == 0 && $('.mediacart .filters ul li.active a').hasClass(type)) || (count == 0 && $('.mediacart .filters ul li.active a').hasClass('all'))) {
                $('.mediacart .filters ul li a').filter('.' + type).parents('li').remove();
                $('.mediacart .filters ul li:first').trigger('click');
            } else {
                filterItem(type).text('(' + count + ')');
            }
        };


        updateFilter('img-type');
        updateFilter('video-type');
        updateFilter('audio-type');

        if ($('.mediacart .filters ul li a:not(.all)').length === 1) {
            $('.mediacart .filters ul li a.all').parents('li').remove();
            $('.mediacart .filters ul li:first').addClass('active');
        }

        if (countsOfAllItems == 0) {
            document.location.reload(true);
            return false;
        }

        $allCountWrapper.text('(' + countsOfAllItems + ')');
    };

    $('.media-cart-btn-wrapper').mediaCartButton({
        container: '.amp .rsOverflow'
    });

    $('.top-tools .media-cart-btn-wrapper').mediaCartButton({
        container: '.amp .rsOverflow',
        multiple: true
    });
    $('.filters .media-cart-btn-wrapper').mediaCartButton({
        multiple: true,
        style: 'dark'
    });
    $(document).imgItem().find('.media-cart-btn-wrapper').each(function () {
        $(this).mediaCartButton({
            container: $(this).parents('.image-icon-wrapper').find('.image-wrapper:first')
        });
    });

    var match = /([a-z]+\-type)/;
    $(document).imgItem().find('.delete-icon').each(function () {
        var selfItem = $(this).parents('li');
        $(this).mediaCartButton({
            container: $(this).parents('.image-icon-wrapper').find('.image-wrapper:first'),
            callback: function () {
                selfItem.remove();
                var type = match.exec(selfItem.find('> div').attr('class'));
                updateFiltersCount(type);
            }
        });
    });

    $('.mediacart .send-wrapper .delete-all').mediaCartButton({
        callback: function () {
            document.location.reload(true);
        }
    });
    
    //add all assets to cart from amp gallery
    if ($('.media-cart-btn-wrapper-gallery')) {
        $('.media-cart-btn-wrapper-gallery').mediaCartButton({
            multiple: true,
            style: 'dark'
        });
    }

    var getDeviceType = function () {
        return $('html').css('font-family').replace(/"/g, '');
    };

    function isMobileOrTabletDevice() {
        var deviceType = getDeviceType();
        if (deviceType == 'tablet' || deviceType == 'mobile') {
            return true;
        }
        return false;
    }
        
    //$('.dev-view-cart-gallery').on('click', function () {
    //    //AMPUP check if hiding popup needed? if so hav eto hide both gallery and asset view popups and do on timeout either hide or doc.location statement
    //    document.location = MediaCart.ViewUrl;
    //    return false;
    //});

})(jQuery);;
var MediaPanelApi = new function () {    
    var _templateData;

    this.TemplateUrl = McConfig.MediaPanelApiBaseUrl + "/Template.svc/gtv17/json/#MEDIA_PANEL_GUID#/#PAGE_GUID#";

    this.GetTemplateData = function (callback) {
        if (_templateData == null) {
            var url = getUrl(this.TemplateUrl + (AmpHelper.GetIsPreview() ? "?mode=preview" : ""));

            $.getJSON(url, function (data) {
                _templateData = data;
                callback(data);
            });
        } else {
            callback(_templateData);
        }
    };

    this.GetAssetDetail = function (assetGuid, callback) {
        getFeedUrl('AssetDetail', { 'assetGuid': assetGuid }, callback);
    };

    this.GetAssetMoreInfo = function (assetGuid, callback) {
        getFeedUrl('AssetMoreInfo', { 'assetGuid': assetGuid }, callback);
    };

    this.GetEmbedCode = function (assetGuid, callback) {
        getFeedUrl('Embed', { 'assetGuid': assetGuid }, callback);
    };

    this.GetStoryListing = function (storyGuid, callback) {
        getFeedUrl('StoryListing', { 'storyGuid': storyGuid }, callback);
    };

    var getFeedUrl = function (feedName, args, callback, templateData) {
        if (templateData == null) {
            if (_templateData != null) {
                getFeedUrl(feedName, args, callback, _templateData);
            } else {
                MediaPanelApi.GetTemplateData(function (data) {
                    getFeedUrl(feedName, args, callback, data);
                });
            }
        } else {
            var feeds = templateData.rows[0].Feeds;
            $.each(feeds, function (i, v) {
                if (v.name == feedName) {
                    var url = getUrl(v.url, args);
                    $.getJSON(url, function (data) {
                        callback(data);
                    });
                    return;
                }
            });
        }
    };

    var getUrl = function (feedUrl, args) {
        if (args == null) {
            args = {};
        }

        return feedUrl
            .replace('/json/', '/jsonp/')
            .replace('#MEDIA_PANEL_GUID#', McConfig.MediaPanelGuid)
            .replace('#PAGE_GUID#', UserSession.CategoryId)
            .replace('#ASSET_GUID#', args.assetGuid)
            .replace('#ASSET_TYPE_ID#', 0)
            .replace('#STORY_GUID#', args.storyGuid)
            .replace('#USER_SESSION_ID#', args.userSessionId)
            + (feedUrl.lastIndexOf("?") == -1 ? "?" : "&")
            + "method=?";
    };
};;
(function ($) {
    $.fn.preview = function () {
        var css = {},
        width = this.outerWidth(),
        height = this.outerHeight(),
        wHeight = $(window).height(),
        zIndex = 100;
        if (height > wHeight) {
            css = {
                'left': '50%',
                'margin-left': -width / 2 + 'px',
                'top': $(document).scrollTop(),
                'position': 'absolute',
                'z-index': zIndex
            };
        } else {
            css = {
                'left': '50%',
                'margin-left': -width / 2 + 'px',
                'top': '50%',
                'margin-top': -height / 2 + 'px',
                'position': 'fixed',
                'z-index': zIndex
            };
        }
        this.css(css);
        this.fadeIn(1500);
    };
})(jQuery);
    
$(window).on('load', function () {
    $("#preview-popup").preview();
    $('.preview-button').on('click', function () {
        $('#preview-popup').fadeOut(1500);
    });
});;
var TemplateHelper = new function () {
    
    this.Find = function (selector) {
        return $.trim($(selector).html());
    };

    this.Render = function (template, values) {
        return template.replace(/{{(\w+)}}/ig, function (match, p1) { return values[p1]; });
    };

    this.RenderMany = function (template, valuesCollection) {
        return _.map(valuesCollection, function(x) {
            return TemplateHelper.Render(template, x);
        }).join('');
    };
};;
var UserSession = new function () {
    this.Locale = $("input:hidden[name='UserSession.Locale']").val();
    this.CategoryId = $("input:hidden[name='UserSession.CategoryId']").val();
    this.SectionId = $("input:hidden[name='UserSession.SectionId']").val();
};
/*
 * Copyright 2013 Small Batch, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
; (function (window, document, undefined) {
    var j = void 0, k = !0, l = null, p = !1; function q(a) { return function () { return this[a] } } var aa = this; function ba(a, b) { var c = a.split("."), d = aa; !(c[0] in d) && d.execScript && d.execScript("var " + c[0]); for (var e; c.length && (e = c.shift());)!c.length && b !== j ? d[e] = b : d = d[e] ? d[e] : d[e] = {} } aa.Ba = k; function ca(a, b, c) { return a.call.apply(a.bind, arguments) }
    function da(a, b, c) { if (!a) throw Error(); if (2 < arguments.length) { var d = Array.prototype.slice.call(arguments, 2); return function () { var c = Array.prototype.slice.call(arguments); Array.prototype.unshift.apply(c, d); return a.apply(b, c) } } return function () { return a.apply(b, arguments) } } function s(a, b, c) { s = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? ca : da; return s.apply(l, arguments) } var ea = Date.now || function () { return +new Date }; function fa(a, b) { this.G = a; this.u = b || a; this.z = this.u.document; this.R = j } fa.prototype.createElement = function (a, b, c) { a = this.z.createElement(a); if (b) for (var d in b) if (b.hasOwnProperty(d)) if ("style" == d) { var e = a, f = b[d]; ga(this) ? e.setAttribute("style", f) : e.style.cssText = f } else a.setAttribute(d, b[d]); c && a.appendChild(this.z.createTextNode(c)); return a }; function t(a, b, c) { a = a.z.getElementsByTagName(b)[0]; a || (a = document.documentElement); a && a.lastChild && a.insertBefore(c, a.lastChild) }
    function u(a, b) { return a.createElement("link", { rel: "stylesheet", href: b }) } function ha(a, b) { return a.createElement("script", { src: b }) } function v(a, b) { for (var c = a.className.split(/\s+/), d = 0, e = c.length; d < e; d++)if (c[d] == b) return; c.push(b); a.className = c.join(" ").replace(/\s+/g, " ").replace(/^\s+|\s+$/, "") } function w(a, b) { for (var c = a.className.split(/\s+/), d = [], e = 0, f = c.length; e < f; e++)c[e] != b && d.push(c[e]); a.className = d.join(" ").replace(/\s+/g, " ").replace(/^\s+|\s+$/, "") }
    function ia(a, b) { for (var c = a.className.split(/\s+/), d = 0, e = c.length; d < e; d++)if (c[d] == b) return k; return p } function ga(a) { if (a.R === j) { var b = a.z.createElement("p"); b.innerHTML = '<a style="top:1px;">w</a>'; a.R = /top/.test(b.getElementsByTagName("a")[0].getAttribute("style")) } return a.R } function x(a) { var b = a.u.location.protocol; "about:" == b && (b = a.G.location.protocol); return "https:" == b ? "https:" : "http:" }; function y(a, b, c) { this.w = a; this.T = b; this.Aa = c } ba("webfont.BrowserInfo", y); y.prototype.qa = q("w"); y.prototype.hasWebFontSupport = y.prototype.qa; y.prototype.ra = q("T"); y.prototype.hasWebKitFallbackBug = y.prototype.ra; y.prototype.sa = q("Aa"); y.prototype.hasWebKitMetricsBug = y.prototype.sa; function z(a, b, c, d) { this.e = a != l ? a : l; this.o = b != l ? b : l; this.ba = c != l ? c : l; this.f = d != l ? d : l } var ja = /^([0-9]+)(?:[\._-]([0-9]+))?(?:[\._-]([0-9]+))?(?:[\._+-]?(.*))?$/; z.prototype.toString = function () { return [this.e, this.o || "", this.ba || "", this.f || ""].join("") };
    function A(a) { a = ja.exec(a); var b = l, c = l, d = l, e = l; a && (a[1] !== l && a[1] && (b = parseInt(a[1], 10)), a[2] !== l && a[2] && (c = parseInt(a[2], 10)), a[3] !== l && a[3] && (d = parseInt(a[3], 10)), a[4] !== l && a[4] && (e = /^[0-9]+$/.test(a[4]) ? parseInt(a[4], 10) : a[4])); return new z(b, c, d, e) }; function B(a, b, c, d, e, f, g, h, n, m, r) { this.J = a; this.Ha = b; this.za = c; this.ga = d; this.Fa = e; this.fa = f; this.xa = g; this.Ga = h; this.wa = n; this.ea = m; this.k = r } ba("webfont.UserAgent", B); B.prototype.getName = q("J"); B.prototype.getName = B.prototype.getName; B.prototype.pa = q("za"); B.prototype.getVersion = B.prototype.pa; B.prototype.la = q("ga"); B.prototype.getEngine = B.prototype.la; B.prototype.ma = q("fa"); B.prototype.getEngineVersion = B.prototype.ma; B.prototype.na = q("xa"); B.prototype.getPlatform = B.prototype.na; B.prototype.oa = q("wa");
    B.prototype.getPlatformVersion = B.prototype.oa; B.prototype.ka = q("ea"); B.prototype.getDocumentMode = B.prototype.ka; B.prototype.ja = q("k"); B.prototype.getBrowserInfo = B.prototype.ja; function C(a, b) { this.a = a; this.H = b } var ka = new B("Unknown", new z, "Unknown", "Unknown", new z, "Unknown", "Unknown", new z, "Unknown", j, new y(p, p, p));
    C.prototype.parse = function () {
        var a; if (-1 != this.a.indexOf("MSIE")) { a = D(this); var b = E(this), c = A(b), d = F(this.a, /MSIE ([\d\w\.]+)/, 1), e = A(d); a = new B("MSIE", e, d, "MSIE", e, d, a, c, b, G(this.H), new y("Windows" == a && 6 <= e.e || "Windows Phone" == a && 8 <= c.e, p, p)) } else if (-1 != this.a.indexOf("Opera")) a: {
            a = "Unknown"; var b = F(this.a, /Presto\/([\d\w\.]+)/, 1), c = A(b), d = E(this), e = A(d), f = G(this.H); c.e !== l ? a = "Presto" : (-1 != this.a.indexOf("Gecko") && (a = "Gecko"), b = F(this.a, /rv:([^\)]+)/, 1), c = A(b)); if (-1 != this.a.indexOf("Opera Mini/")) {
                var g =
                    F(this.a, /Opera Mini\/([\d\.]+)/, 1), h = A(g); a = new B("OperaMini", h, g, a, c, b, D(this), e, d, f, new y(p, p, p))
            } else { if (-1 != this.a.indexOf("Version/") && (g = F(this.a, /Version\/([\d\.]+)/, 1), h = A(g), h.e !== l)) { a = new B("Opera", h, g, a, c, b, D(this), e, d, f, new y(10 <= h.e, p, p)); break a } g = F(this.a, /Opera[\/ ]([\d\.]+)/, 1); h = A(g); a = h.e !== l ? new B("Opera", h, g, a, c, b, D(this), e, d, f, new y(10 <= h.e, p, p)) : new B("Opera", new z, "Unknown", a, c, b, D(this), e, d, f, new y(p, p, p)) }
        } else if (/AppleWeb(K|k)it/.test(this.a)) {
            a = D(this); var b = E(this),
                c = A(b), d = F(this.a, /AppleWeb(?:K|k)it\/([\d\.\+]+)/, 1), e = A(d), f = "Unknown", g = new z, h = "Unknown", n = p; -1 != this.a.indexOf("Chrome") || -1 != this.a.indexOf("CrMo") || -1 != this.a.indexOf("CriOS") ? f = "Chrome" : /Silk\/\d/.test(this.a) ? f = "Silk" : "BlackBerry" == a || "Android" == a ? f = "BuiltinBrowser" : -1 != this.a.indexOf("Safari") ? f = "Safari" : -1 != this.a.indexOf("AdobeAIR") && (f = "AdobeAIR"); "BuiltinBrowser" == f ? h = "Unknown" : "Silk" == f ? h = F(this.a, /Silk\/([\d\._]+)/, 1) : "Chrome" == f ? h = F(this.a, /(Chrome|CrMo|CriOS)\/([\d\.]+)/, 2) : -1 !=
                    this.a.indexOf("Version/") ? h = F(this.a, /Version\/([\d\.\w]+)/, 1) : "AdobeAIR" == f && (h = F(this.a, /AdobeAIR\/([\d\.]+)/, 1)); g = A(h); n = "AdobeAIR" == f ? 2 < g.e || 2 == g.e && 5 <= g.o : "BlackBerry" == a ? 10 <= c.e : "Android" == a ? 2 < c.e || 2 == c.e && 1 < c.o : 526 <= e.e || 525 <= e.e && 13 <= e.o; a = new B(f, g, h, "AppleWebKit", e, d, a, c, b, G(this.H), new y(n, 536 > e.e || 536 == e.e && 11 > e.o, "iPhone" == a || "iPad" == a || "iPod" == a || "Macintosh" == a))
        } else -1 != this.a.indexOf("Gecko") ? (a = "Unknown", b = new z, c = "Unknown", d = E(this), e = A(d), f = p, -1 != this.a.indexOf("Firefox") ? (a =
            "Firefox", c = F(this.a, /Firefox\/([\d\w\.]+)/, 1), b = A(c), f = 3 <= b.e && 5 <= b.o) : -1 != this.a.indexOf("Mozilla") && (a = "Mozilla"), g = F(this.a, /rv:([^\)]+)/, 1), h = A(g), f || (f = 1 < h.e || 1 == h.e && 9 < h.o || 1 == h.e && 9 == h.o && 2 <= h.ba || g.match(/1\.9\.1b[123]/) != l || g.match(/1\.9\.1\.[\d\.]+/) != l), a = new B(a, b, c, "Gecko", h, g, D(this), e, d, G(this.H), new y(f, p, p))) : a = ka; return a
    };
    function D(a) { var b = F(a.a, /(iPod|iPad|iPhone|Android|Windows Phone|BB\d{2}|BlackBerry)/, 1); if ("" != b) return /BB\d{2}/.test(b) && (b = "BlackBerry"), b; a = F(a.a, /(Linux|Mac_PowerPC|Macintosh|Windows|CrOS)/, 1); return "" != a ? ("Mac_PowerPC" == a && (a = "Macintosh"), a) : "Unknown" }
    function E(a) { var b = F(a.a, /(OS X|Windows NT|Android) ([^;)]+)/, 2); if (b || (b = F(a.a, /Windows Phone( OS)? ([^;)]+)/, 2)) || (b = F(a.a, /(iPhone )?OS ([\d_]+)/, 2))) return b; if (b = F(a.a, /(?:Linux|CrOS) ([^;)]+)/, 1)) for (var b = b.split(/\s/), c = 0; c < b.length; c += 1)if (/^[\d\._]+$/.test(b[c])) return b[c]; return (a = F(a.a, /(BB\d{2}|BlackBerry).*?Version\/([^\s]*)/, 2)) ? a : "Unknown" } function F(a, b, c) { return (a = a.match(b)) && a[c] ? a[c] : "" } function G(a) { if (a.documentMode) return a.documentMode }; function la(a) { this.va = a || "-" } la.prototype.f = function (a) { for (var b = [], c = 0; c < arguments.length; c++)b.push(arguments[c].replace(/[\W_]+/g, "").toLowerCase()); return b.join(this.va) }; function H(a, b) { this.J = a; this.U = 4; this.K = "n"; var c = (b || "n4").match(/^([nio])([1-9])$/i); c && (this.K = c[1], this.U = parseInt(c[2], 10)) } H.prototype.getName = q("J"); function I(a) { return a.K + a.U } function ma(a) { var b = 4, c = "n", d = l; a && ((d = a.match(/(normal|oblique|italic)/i)) && d[1] && (c = d[1].substr(0, 1).toLowerCase()), (d = a.match(/([1-9]00|normal|bold)/i)) && d[1] && (/bold/i.test(d[1]) ? b = 7 : /[1-9]00/.test(d[1]) && (b = parseInt(d[1].substr(0, 1), 10)))); return c + b }; function na(a, b, c) { this.c = a; this.h = b; this.M = c; this.j = "wf"; this.g = new la("-") } function pa(a) { v(a.h, a.g.f(a.j, "loading")); J(a, "loading") } function K(a) { w(a.h, a.g.f(a.j, "loading")); ia(a.h, a.g.f(a.j, "active")) || v(a.h, a.g.f(a.j, "inactive")); J(a, "inactive") } function J(a, b, c) { if (a.M[b]) if (c) a.M[b](c.getName(), I(c)); else a.M[b]() }; function L(a, b) { this.c = a; this.C = b; this.s = this.c.createElement("span", { "aria-hidden": "true" }, this.C) }
    function M(a, b) {
        var c = a.s, d; d = []; for (var e = b.J.split(/,\s*/), f = 0; f < e.length; f++) { var g = e[f].replace(/['"]/g, ""); -1 == g.indexOf(" ") ? d.push(g) : d.push("'" + g + "'") } d = d.join(","); e = "normal"; f = b.U + "00"; "o" === b.K ? e = "oblique" : "i" === b.K && (e = "italic"); d = "position:absolute;top:-999px;left:-999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:" + d + ";" + ("font-style:" + e + ";font-weight:" + f + ";"); ga(a.c) ? c.setAttribute("style", d) : c.style.cssText =
            d
    } function N(a) { t(a.c, "body", a.s) } L.prototype.remove = function () { var a = this.s; a.parentNode && a.parentNode.removeChild(a) }; function qa(a, b, c, d, e, f, g, h) { this.V = a; this.ta = b; this.c = c; this.q = d; this.C = h || "BESbswy"; this.k = e; this.F = {}; this.S = f || 5E3; this.Z = g || l; this.B = this.A = l; a = new L(this.c, this.C); N(a); for (var n in O) O.hasOwnProperty(n) && (M(a, new H(O[n], I(this.q))), this.F[O[n]] = a.s.offsetWidth); a.remove() } var O = { Ea: "serif", Da: "sans-serif", Ca: "monospace" };
    qa.prototype.start = function () { this.A = new L(this.c, this.C); N(this.A); this.B = new L(this.c, this.C); N(this.B); this.ya = ea(); M(this.A, new H(this.q.getName() + ",serif", I(this.q))); M(this.B, new H(this.q.getName() + ",sans-serif", I(this.q))); ra(this) }; function sa(a, b, c) { for (var d in O) if (O.hasOwnProperty(d) && b === a.F[O[d]] && c === a.F[O[d]]) return k; return p }
    function ra(a) { var b = a.A.s.offsetWidth, c = a.B.s.offsetWidth; b === a.F.serif && c === a.F["sans-serif"] || a.k.T && sa(a, b, c) ? ea() - a.ya >= a.S ? a.k.T && sa(a, b, c) && (a.Z === l || a.Z.hasOwnProperty(a.q.getName())) ? P(a, a.V) : P(a, a.ta) : setTimeout(s(function () { ra(this) }, a), 25) : P(a, a.V) } function P(a, b) { a.A.remove(); a.B.remove(); b(a.q) }; function R(a, b, c, d) { this.c = b; this.t = c; this.N = 0; this.ca = this.Y = p; this.S = d; this.k = a.k } function ta(a, b, c, d, e) { if (0 === b.length && e) K(a.t); else { a.N += b.length; e && (a.Y = e); for (e = 0; e < b.length; e++) { var f = b[e], g = c[f.getName()], h = a.t, n = f; v(h.h, h.g.f(h.j, n.getName(), I(n).toString(), "loading")); J(h, "fontloading", n); (new qa(s(a.ha, a), s(a.ia, a), a.c, f, a.k, a.S, d, g)).start() } } }
    R.prototype.ha = function (a) { var b = this.t; w(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "loading")); w(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "inactive")); v(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "active")); J(b, "fontactive", a); this.ca = k; ua(this) }; R.prototype.ia = function (a) { var b = this.t; w(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "loading")); ia(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "active")) || v(b.h, b.g.f(b.j, a.getName(), I(a).toString(), "inactive")); J(b, "fontinactive", a); ua(this) };
    function ua(a) { 0 == --a.N && a.Y && (a.ca ? (a = a.t, w(a.h, a.g.f(a.j, "loading")), w(a.h, a.g.f(a.j, "inactive")), v(a.h, a.g.f(a.j, "active")), J(a, "active")) : K(a.t)) }; function S(a, b, c) { this.G = a; this.W = b; this.a = c; this.O = this.P = 0 } function T(a, b) { U.W.$[a] = b } S.prototype.load = function (a) { var b = a.context || this.G; this.c = new fa(this.G, b); b = new na(this.c, b.document.documentElement, a); if (this.a.k.w) { var c = this.W, d = this.c, e = [], f; for (f in a) if (a.hasOwnProperty(f)) { var g = c.$[f]; g && e.push(g(a[f], d)) } a = a.timeout; this.O = this.P = e.length; a = new R(this.a, this.c, b, a); f = 0; for (c = e.length; f < c; f++)d = e[f], d.v(this.a, s(this.ua, this, d, b, a)) } else K(b) };
    S.prototype.ua = function (a, b, c, d) { var e = this; d ? a.load(function (a, d, h) { var n = 0 == --e.P; n && pa(b); setTimeout(function () { ta(c, a, d || {}, h || l, n) }, 0) }) : (a = 0 == --this.P, this.O-- , a && (0 == this.O ? K(b) : pa(b)), ta(c, [], {}, l, a)) }; var va = window, wa = (new C(navigator.userAgent, document)).parse(), U = va.WebFont = new S(window, new function () { this.$ = {} }, wa); U.load = U.load; function V(a, b) { this.c = a; this.d = b } V.prototype.load = function (a) { var b, c, d = this.d.urls || [], e = this.d.families || []; b = 0; for (c = d.length; b < c; b++)t(this.c, "head", u(this.c, d[b])); d = []; b = 0; for (c = e.length; b < c; b++) { var f = e[b].split(":"); if (f[1]) for (var g = f[1].split(","), h = 0; h < g.length; h += 1)d.push(new H(f[0], g[h])); else d.push(new H(f[0])) } a(d) }; V.prototype.v = function (a, b) { return b(a.k.w) }; T("custom", function (a, b) { return new V(b, a) }); function W(a, b) { this.c = a; this.d = b } var xa = { regular: "n4", bold: "n7", italic: "i4", bolditalic: "i7", r: "n4", b: "n7", i: "i4", bi: "i7" }; W.prototype.v = function (a, b) { return b(a.k.w) }; W.prototype.load = function (a) { t(this.c, "head", u(this.c, x(this.c) + "//webfonts.fontslive.com/css/" + this.d.key + ".css")); for (var b = this.d.families, c = [], d = 0, e = b.length; d < e; d++)c.push.apply(c, ya(b[d])); a(c) };
    function ya(a) { var b = a.split(":"); a = b[0]; if (b[1]) { for (var c = b[1].split(","), b = [], d = 0, e = c.length; d < e; d++) { var f = c[d]; if (f) { var g = xa[f]; b.push(g ? g : f) } } c = []; for (d = 0; d < b.length; d += 1)c.push(new H(a, b[d])); return c } return [new H(a)] } T("ascender", function (a, b) { return new W(b, a) }); function X(a, b, c) { this.a = a; this.c = b; this.d = c; this.m = [] }
    X.prototype.v = function (a, b) { var c = this, d = c.d.projectId, e = c.d.version; if (d) { var f = c.c.u, g = c.c.createElement("script"); g.id = "__MonotypeAPIScript__" + d; var h = p; g.onload = g.onreadystatechange = function () { if (!h && (!this.readyState || "loaded" === this.readyState || "complete" === this.readyState)) { h = k; if (f["__mti_fntLst" + d]) { var e = f["__mti_fntLst" + d](); if (e) for (var m = 0; m < e.length; m++)c.m.push(new H(e[m].fontfamily)) } b(a.k.w); g.onload = g.onreadystatechange = l } }; g.src = c.D(d, e); t(this.c, "head", g) } else b(k) };
    X.prototype.D = function (a, b) { var c = x(this.c), d = (this.d.api || "fast.fonts.com/jsapi").replace(/^.*http(s?):(\/\/)?/, ""); return c + "//" + d + "/" + a + ".js" + (b ? "?v=" + b : "") }; X.prototype.load = function (a) { a(this.m) }; T("monotype", function (a, b) { var c = (new C(navigator.userAgent, document)).parse(); return new X(c, b, a) }); function Y(a, b) { this.c = a; this.d = b; this.m = [] } Y.prototype.D = function (a) { var b = x(this.c); return (this.d.api || b + "//use.typekit.net") + "/" + a + ".js" };
    Y.prototype.v = function (a, b) { var c = this.d.id, d = this.d, e = this.c.u, f = this; c ? (e.__webfonttypekitmodule__ || (e.__webfonttypekitmodule__ = {}), e.__webfonttypekitmodule__[c] = function (c) { c(a, d, function (a, c, d) { for (var e = 0; e < c.length; e += 1) { var g = d[c[e]]; if (g) for (var Q = 0; Q < g.length; Q += 1)f.m.push(new H(c[e], g[Q])); else f.m.push(new H(c[e])) } b(a) }) }, c = ha(this.c, this.D(c)), t(this.c, "head", c)) : b(k) }; Y.prototype.load = function (a) { a(this.m) }; T("typekit", function (a, b) { return new Y(b, a) }); function za(a, b, c) { this.L = a ? a : b + Aa; this.p = []; this.Q = []; this.da = c || "" } var Aa = "//fonts.googleapis.com/css"; za.prototype.f = function () { if (0 == this.p.length) throw Error("No fonts to load !"); if (-1 != this.L.indexOf("kit=")) return this.L; for (var a = this.p.length, b = [], c = 0; c < a; c++)b.push(this.p[c].replace(/ /g, "+")); a = this.L + "?family=" + b.join("%7C"); 0 < this.Q.length && (a += "&subset=" + this.Q.join(",")); 0 < this.da.length && (a += "&text=" + encodeURIComponent(this.da)); return a }; function Ba(a) { this.p = a; this.aa = []; this.I = {} }
    var Ca = { latin: "BESbswy", cyrillic: "&#1081;&#1103;&#1046;", greek: "&#945;&#946;&#931;", khmer: "&#x1780;&#x1781;&#x1782;", Hanuman: "&#x1780;&#x1781;&#x1782;" }, Da = { thin: "1", extralight: "2", "extra-light": "2", ultralight: "2", "ultra-light": "2", light: "3", regular: "4", book: "4", medium: "5", "semi-bold": "6", semibold: "6", "demi-bold": "6", demibold: "6", bold: "7", "extra-bold": "8", extrabold: "8", "ultra-bold": "8", ultrabold: "8", black: "9", heavy: "9", l: "3", r: "4", b: "7" }, Ea = { i: "i", italic: "i", n: "n", normal: "n" }, Fa = RegExp("^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$");
    Ba.prototype.parse = function () {
        for (var a = this.p.length, b = 0; b < a; b++) {
            var c = this.p[b].split(":"), d = c[0].replace(/\+/g, " "), e = ["n4"]; if (2 <= c.length) {
                var f; var g = c[1]; f = []; if (g) for (var g = g.split(","), h = g.length, n = 0; n < h; n++) { var m; m = g[n]; if (m.match(/^[\w]+$/)) { m = Fa.exec(m.toLowerCase()); var r = j; if (m == l) r = ""; else { r = j; r = m[1]; if (r == l || "" == r) r = "4"; else var oa = Da[r], r = oa ? oa : isNaN(r) ? "4" : r.substr(0, 1); r = [m[2] == l || "" == m[2] ? "n" : Ea[m[2]], r].join("") } m = r } else m = ""; m && f.push(m) } 0 < f.length && (e = f); 3 == c.length && (c = c[2],
                    f = [], c = !c ? f : c.split(","), 0 < c.length && (c = Ca[c[0]]) && (this.I[d] = c))
            } this.I[d] || (c = Ca[d]) && (this.I[d] = c); for (c = 0; c < e.length; c += 1)this.aa.push(new H(d, e[c]))
        }
    }; function Z(a, b, c) { this.a = a; this.c = b; this.d = c } var Ga = { Arimo: k, Cousine: k, Tinos: k }; Z.prototype.v = function (a, b) { b(a.k.w) }; Z.prototype.load = function (a) { var b = this.c; if ("MSIE" == this.a.getName() && this.d.blocking != k) { var c = s(this.X, this, a), d = function () { b.z.body ? c() : setTimeout(d, 0) }; d() } else this.X(a) };
    Z.prototype.X = function (a) { for (var b = this.c, c = new za(this.d.api, x(b), this.d.text), d = this.d.families, e = d.length, f = 0; f < e; f++) { var g = d[f].split(":"); 3 == g.length && c.Q.push(g.pop()); var h = ""; 2 == g.length && "" != g[1] && (h = ":"); c.p.push(g.join(h)) } d = new Ba(d); d.parse(); t(b, "head", u(b, c.f())); a(d.aa, d.I, Ga) }; T("google", function (a, b) { var c = (new C(navigator.userAgent, document)).parse(); return new Z(c, b, a) }); function $(a, b) { this.c = a; this.d = b; this.m = [] } $.prototype.D = function (a) { return x(this.c) + (this.d.api || "//f.fontdeck.com/s/css/js/") + (this.c.u.location.hostname || this.c.G.location.hostname) + "/" + a + ".js" };
    $.prototype.v = function (a, b) { var c = this.d.id, d = this.c.u, e = this; c ? (d.__webfontfontdeckmodule__ || (d.__webfontfontdeckmodule__ = {}), d.__webfontfontdeckmodule__[c] = function (a, c) { for (var d = 0, n = c.fonts.length; d < n; ++d) { var m = c.fonts[d]; e.m.push(new H(m.name, ma("font-weight:" + m.weight + ";font-style:" + m.style))) } b(a) }, c = ha(this.c, this.D(c)), t(this.c, "head", c)) : b(k) }; $.prototype.load = function (a) { a(this.m) }; T("fontdeck", function (a, b) { return new $(b, a) }); window.WebFontConfig && U.load(window.WebFontConfig);
})(this, document);;
/*
assetDetailProvider.js
2012-09-25

DLQ Domain in integration with Media Panel Feeds.
See http://dlqv2.synapticdigital.info/js/2.2.0.0/assetDetailProvider.js

This client side API provides the assets downloading data on the basis of.
-> Media Kit GUID
-> Story GUID
-> Comma Separated List of Asset GUID

The objective of this asset collection is to be consumed by DLQ and hence to be 
appropriately lauched, it requires a culture specific download launcher i.e.
http://dlqv2.synapticdigital.info/-/en-US/ADID/dlm.aspx 

This download launcher can be collected by passing appropriate value of Media Panel GUID or
Media Room Short Name along with aforementioned input.

This API mainly consists of following two components.
-> Asset Prototype (For containing the metadata for asset downloading process)
-> Static function that accepts the formal input and process it as a server feed, collects 
the result and transform it into an asset collection.
*/

//The feed, used to collect all the asset download link specific data based upon provided media kit GUID.
var mediaKitDownloadFeed = "#DOMAIN#/MediaKit.svc/mkad/jsonp/#MEDIA_PANEL_GUID#/#MEDIA_PANEL_SHORT_NAME#/#MEDIA_KIT_GUID#?method=?";

//The feed, used to collect all the asset download link specific data based upon provided story GUID.
var storyDownloadFeed = "#DOMAIN#/Story.svc/sad/jsonp/#MEDIA_PANEL_GUID#/#MEDIA_PANEL_SHORT_NAME#/#STORY_GUID#?method=?";

//The feed, used to collect all the asset download link specific data based upon the given comma separated list
//of asset GUID.
var assetDownloadFeed = "#DOMAIN#/Asset.svc/mad/jsonp/#MEDIA_PANEL_GUID#/#MEDIA_PANEL_SHORT_NAME#/#ASSET_GUID_LIST#?method=?";

//The feed, used to collect all the asset information as per the provided list of GUID. EX:Output ("IsDownloadable": true,"IsEmbeddable": true,"IsPreviewable": true,"IsShareable": true)
var assetDownloadAllFeed = "#DOMAIN#/Asset.svc/maf?#DATETIME_STAMP#";

//Configurable value of the number of asset GUID to be sent to in the assetGuidList
var numMaximumElementsToBeSent = 5;

//Constant that specifies the error to be thrown when no asset is found from the feed.
var EXCEPTION_TEXT_NO_ASSET_FOUND = "No asset found.";

//Constant that specifies the error to be thrown when the download launch URL is not set.
var EXCEPTION_TEXT_DOMAIN_NOT_SET = "The domain should be set properly.";


//The Asset Prototype
function Asset() {
    this.assetGuid = null; //The global unique identifier for the asset
    this.assetTitle = null; //The title for the asset
    this.assetFileType = null; //The type of file asset represents
    this.downloadUrl = null; //The dlmUrl for the asset to download
    this.downloadLaunch = null; //The download launcher to be used for the download process
    this.assetFileSizeInBytes = null; //The asset file size in bytes
    this.assetFileGroup = null; //The asset file group
    this.assetTypeId = null; //The asset type ID
    this.AssetDisplayName = null;
    this.height = 0;
}

//Collect the raw download launch sent by server and transform it into a proper URL that can be invoked
Asset.prototype.getDownloadLaunchUrl = function () {
    if (this.downloadLaunch != null) {
        var dlmPageUrl = this.downloadLaunch.replace(/--/g, '.');
        dlmPageUrl = decodeURIComponent(dlmPageUrl);

        return dlmPageUrl;
    }
    return null;
}

//Returns the asset description to be displayed (FOR TESTING PAGE ONLY)
Asset.prototype.getAssetDescription = function () {
    if (this.assetTitle != null && this.assetFileType != null) {
        return this.assetTitle + '(' + this.assetFileType + ')';
    }
    return null;
}

//The AssetDetailProvider Prototype
function AssetDetailProvider(mediaPanelFeedDomain) {
    if (mediaPanelFeedDomain == null || mediaPanelFeedDomain == '')
        throw EXCEPTION_TEXT_DOMAIN_NOT_SET;
    //The underlining feed domain used by this client side to get the feed data.
    this.mediaPanelFeedDomain = mediaPanelFeedDomain;
}

//Forms the required feed for the given Media Kit GUID, execute it and invoke the callback 
//function with supplied user defined content.
AssetDetailProvider.prototype.processMediaKitAssets = function (mediaKitGuid, mediaPanelGuid, mediaRoomShortName, allAssetsCallback, userContext) {
    
    var feed = mediaKitDownloadFeed.replace('#MEDIA_PANEL_GUID#', mediaPanelGuid)
        .replace('#MEDIA_PANEL_SHORT_NAME#', mediaRoomShortName)
        .replace('#MEDIA_KIT_GUID#', mediaKitGuid)
        .replace('#DOMAIN#', this.mediaPanelFeedDomain);
    this.executeFeed(feed, allAssetsCallback, userContext);
};

//Forms the required feed for the given Story GUID, execute it and invoke the callback 
//function with supplied user defined content.
AssetDetailProvider.prototype.processStoryAssets = function(storyGuid, mediaPanelGuid, mediaRoomShortName, allAssetsCallback, userContext) {
    var feed = storyDownloadFeed.replace('#MEDIA_PANEL_GUID#', mediaPanelGuid)
        .replace('#MEDIA_PANEL_SHORT_NAME#', mediaRoomShortName)
        .replace('#STORY_GUID#', storyGuid)
        .replace('#DOMAIN#', this.mediaPanelFeedDomain);
    this.executeFeed(feed, allAssetsCallback, userContext);
};

//Forms the required feed for the given comma separated list of asset GUID, execute it and invoke the callback 
//function with supplied user defined content.
AssetDetailProvider.prototype.processMultipleAssets = function(assetGuidList, mediaPanelGuid, mediaRoomShortName, allAssetsCallback, userContext) {
    var feed = assetDownloadFeed.replace('#MEDIA_PANEL_GUID#', mediaPanelGuid)
        .replace('#MEDIA_PANEL_SHORT_NAME#', mediaRoomShortName)
        .replace('#DOMAIN#', this.mediaPanelFeedDomain);
    if (numMaximumElementsToBeSent == 0) {
        this.executeFeed(feed.replace('#ASSET_GUID_LIST#', assetGuidList), allAssetsCallback, userContext);
    } else {
        var assetGuidArray = assetGuidList.split(',');
        var limit = numMaximumElementsToBeSent >= assetGuidArray.length ? numMaximumElementsToBeSent : assetGuidArray.length;
        var currentArrayIndex = 0;
        while (currentArrayIndex < limit) {
            var newAssetGuidList = '';
            for (var i = currentArrayIndex; i < limit; i++) {
                newAssetGuidList = newAssetGuidList + assetGuidArray[i];
                if (i < limit - 1) {
                    newAssetGuidList = newAssetGuidList + ',';
                }
            }
            var newFeed = feed.replace('#ASSET_GUID_LIST#', newAssetGuidList);
            this.executeFeed(newFeed, allAssetsCallback, userContext);
            currentArrayIndex = limit;
            limit = currentArrayIndex + numMaximumElementsToBeSent < assetGuidArray.length ? currentArrayIndex + numMaximumElementsToBeSent : assetGuidArray.length;
        }
    }
};

AssetDetailProvider.prototype.processDownloadAssets = function (mediaPanelGuid, page_Guid, asset_Guid_List, user_Session_Id, callback) {  
    var data = {
        "Media_Panel_Guid": mediaPanelGuid,
        "Page_Guid": "",
        "User_Session_Id": "",
        "Asset_Guid_List": asset_Guid_List
    };
    var form_url = assetDownloadAllFeed.replace('#DOMAIN#', this.mediaPanelFeedDomain).replace('#DATETIME_STAMP#', Math.floor(Date.now() / 1000));
    this.executeFeedForDownloadAsset(form_url, data, callback);
};

//Common code for executing the server feed and invoke the callback function with supplied user defined content.
AssetDetailProvider.prototype.executeFeed = function (feed, allAssetsCallback, userContext) {
    $.getJSON(feed, function (assetData) {
        
        if (assetData.rows != null) {
            var allAssets = [];
            for (var i = 0; i < assetData.rows.length; i++) {
                var asset = new Asset();
                asset.assetGuid = assetData.rows[i].Asset_Guid;
                asset.assetTitle = assetData.rows[i].Title;
                asset.assetFileType = assetData.rows[i].link_label;
                asset.downloadUrl = assetData.rows[i].link_url;
                asset.downloadLaunch = assetData.rows[i].Download_Launch;
                asset.assetFileSizeInBytes = assetData.rows[i].FileSizeBytes;
                asset.linkGroup = assetData.rows[i].link_group;
                asset.assetTypeId = assetData.rows[i].Asset_Type_Id;
                asset.quality = getAssetQualityFromUrl(asset.downloadUrl);
                asset.format = getAssetFormatFromFileType(asset.assetFileType);
                asset.AssetDisplayName = assetData.rows[i].display_link_label;
                asset.height = assetData.rows[i].height;
                allAssets.push(asset);
            }
            allAssetsCallback(allAssets, userContext);
        } else {
            var $popupMessage = $('#messageContainer-popup');
            $popupMessage.openPopup({
                absolute: true
            });
            $popupMessage.find("#divMessageAlert").html(EXCEPTION_TEXT_NO_ASSET_FOUND);
        }
    });

    var getAssetQualityFromUrl = function (downloadUrl) {
        var qualityNumber = downloadUrl.split('|')[0];
        switch (qualityNumber) {
            case '1': return 'broadcast';
            case '2': return 'streaming';
            case '3': return 'hd';
            case '4': return 'kaltura';
        }
        return null;
    };

    var getAssetFormatFromFileType = function (assetFileType) {
        switch (assetFileType) {
            case 'NTSC MPEG-2': return 'ntsc';
            case 'PAL MPEG-2': return 'pal';
            case 'WMV': return 'wmv';
            case 'Quicktime': return 'quicktime';
            case 'Flash': return 'flash';
            case 'HD Video': return 'hd';
        }
        return null;
    };
};

AssetDetailProvider.prototype.executeFeedForDownloadAsset = function (form_url, data, callback) {
    var submitdata = JSON.stringify(data);
    $.ajax({
        url: form_url,
        data: submitdata,
        type: 'POST',
        contentType: 'application/json;',
        success: function (result) {
            callback(result);
        },
        error: function (jqXHR, textStatus, errorThrown) {
        }
    });};;
var directDownloadHelper = new function () {

    var mediaCartTip = $.fn.mediaCartButton({
        style: 'dark'
    });

    this.GetAssetDataObject = function (parameters) {
        var filepath = '';
        var toExecute = false;
  
        mediaCartTip.showTip(McConfig.DirectDownlodDownloadingMessage, $('body'), 'busy');
        if ((parameters.isDownloadAll === false) && McConfig.IsDefaultAmp != "true" && (parameters.kalturamediaid !== '') && (typeof parameters.kalturamediaid !== "undefined")) { //when single asset call and kaltura video 
            downloadKalturaVideos(parameters);
            setTimeout(function () { mediaCartTip.hideTip(); }, 2000);
        }
        else {

            $.when(
                $.ajax({
                    url: parameters.DirectDownloadUrl,
                    data: { isDownloadAll: parameters.isDownloadAll, downloadAllAssetType: parameters.downloadAllAssetType, contentType: parameters.contentType, contentGUIDs: parameters.contentGUIDs, formatID: parameters.formatID },
                    type: 'POST',
                    async: true,
                    success: function (response) {
                        if (response.assetData != null) {
                            toExecute = true;
                            parameters.assetDownloadData = response.assetData;
                            LogAssetDownload(parameters);


                            if (parameters.assetDownloadData.usePhysicalPath == false) {
                                filepath = response.assetData.AssetPathDetails[0].httpFilePath;

                                if (filepath == null || filepath == '') {
                                    showDownloadHasBeenDisabledPopup();
                                    return false;
                                }
                                //window.open(filepath);
                            }
                            else {
                                toExecute = false;
                                directDownloadHelper.SubmitFormToStartDownload(parameters);
                            }
                        }
                        else {
                            //show asset not foudn dialog- very rare possibility for this usecase
                            alert('Asset data not found'); // TODO: Handle error case - return proper response fro mcontroller and show msg here as needed 
                        }
                    },
                    error: function (xhr, err) {
                        alert("error: " + xhr.responseText);
                    }
                })
            ).done(function () {
                if (toExecute) {
                    //setTimeout(function () { var link = document.createElement('a'); link.target = "_blank"; link.download = filepath; link.href = filepath; document.body.appendChild(link); link.click(); }, 1500);
                    setTimeout(function () { window.location.assign(filepath); mediaCartTip.hideTip(); }, 1500);
                }
            });
        }
        return false;
    };

    this.SubmitFormToStartDownload = function (parameters) {
        //download all with zip
        //// when there are more than one records than zip it and open tab and start download


        if (parameters.isDownloadAll == true && parameters.assetDownloadData.AssetPathDetails != null && parameters.assetDownloadData.AssetPathDetails.length > 0) {
            {
                var model = {
                    MediaRoomName: McConfig.MediaRoomShortName,
                    assetDatajson: JSON.stringify(parameters.assetDownloadData),
                    //assetGuids: parameters.AssetGuids,
                    fileFormat: parameters.formatID,
                    ContentType: parameters.contentType,
                    CultureLocale: UserSession.Locale,
                    categoryID: UserSession.CategoryId,
                    contentGUIDs: parameters.contentGUIDs,
                    groupName: '',
                    IsLogRequired: false
                };

                $.ajax({
                    url: McConfig.DownloadServiceBaseUrl + "DirectDownloadService/GetDownloadZipPath",
                    async: true,
                    type: 'POST',
                    crossDomain: true,
                    data: model,
                    success: function (response) {
                        mediaCartTip.hideTip();
                        var filepath = JSON.parse(response).filepath;
                        if (filepath != null) {
                            var link = document.createElement('a');
                            link.href = filepath;
                            document.body.appendChild(link);
                            link.click();

                            document.body.removeChild(link);
                        }
                    },
                    error: function (responseData, textStatus, errorThrown) {
                        mediaCartTip.hideTip();
                    }
                });
            }
        }
    };


    function LogAssetDownload(parameters) {
        $.ajax({
            url: parameters.AssetLogDownloadUrl,
            async: false,
            type: 'POST',
            data: {
                categoryID: UserSession.CategoryId,
                isDownloadAll: parameters.isDownloadAll,
                downloadAllAssetType: parameters.downloadAllAssetType,
                contentType: parameters.contentType,
                contentGUIDs: parameters.contentGUIDs,
                formatID: parameters.formatID,
                company: parameters.company,
                country: parameters.country,
                email_Id: parameters.email_Id,
                first_Name: parameters.first_Name,
                title: parameters.title,
                user_Type: parameters.user_Type,
                session_ID: parameters.session_ID,
                payload: parameters.payload
            },
            success: function (response) {
                //location.reload(true);
            }
        });
    };

    function showDownloadHasBeenDisabledPopup() {
        var $popupMessage = $('#download-all-message-popup');
        $popupMessage.openPopup({
            absolute: true
        });
        $popupMessage.find("#divMessage").html(McConfig.DownloadDisabledMessage);

        $popupMessage.find(".mc-download-all").hide();
        $popupMessage.find(".btn-cancel").show();
    }

    function downloadKalturaVideos(parameters) {
        var entryId = parameters.kalturamediaid;
        var selectedFlavour = parameters.selectedflavor;
        if (entryId != '' && entryId != null && selectedFlavour != '' && typeof selectedFlavour != 'undefined') {
            var playerId = '2541982';
            var splayerId = '254198200';
            var url = 'https://cdnapisec.kaltura.com/p/{playerId}/sp/{splayerId}/playManifest/entryId/{entryId}/format/download/protocol/https/flavorParamIds/{selectedFlavour}';
            url = url.replace('{playerId}', playerId);
            url = url.replace('{splayerId}', splayerId);
            url = url.replace('{entryId}', entryId);
            url = url.replace('{selectedFlavour}', selectedFlavour);

            var win = window.open(url, '_blank');
            if (win) {
                win.focus();
            } else {
                alert('Please allow popups for this website');
            }
            //Log Downloaded Asset for single Asset Video
            LogAssetDownload(parameters);
        }
    }

    $('#download-all-message-popup .btn-cancel').click(function () {
        $('#download-all-message-popup').closePopup();
    });
};;
/*
dlqSession.js
2012-09-20

DLQ Domain.
See http://dlqv2.synapticdigital.info/js/2.2.0.0/dlqSession.js

This client side API provides the capability to invoke DLQ application with the number of
assets to be downloaded.

The objective of this API is to centralize the external invocation for DLQ application. In early days
each and every application were externally posting the data to the DLQ URL and hence the code was 
constantly being duplicated. Now all such application will suppose to use this client side API and hence
the application will be quite managable.

NOTE: The older application will continue to send data to DataSubmit.aspx in usual way however the control
will be transfered from DataSubmit.aspx to new DLM implementation (the same that is being used by this client 
side API).

The workflow for invoking the DLM is fairly simple as given below.
    -> Provide application and security specific data to this API.
    -> Provide user specific data to this API.
    -> Create and add number of assets to this API.
    -> Queue all the assets to be downloaded by invoking the DLQ application.

This API mainly consists of following four components.
    -> DLQApplicationData
    -> DLQUserData
    -> DLQAssetData
    -> DLQSession
*/

//Constant that specifies the error to be thrown when the download launch URL is not set.
var EXCEPTION_TEXT_DOWNLOAD_LAUNCH_NOT_SET = "The dlmPage should be set properly.";

//The Prototype to hold the application specific data, used by DLQ application.
function DLQApplicationData(mediaRoomShortName, mediaPanelGuid, siteId, hostName) {
    this.mediaRoomShortName = mediaRoomShortName; //The media room short name.
    this.mediaPanelGuid = mediaPanelGuid; //The media panel GUID.
    this.siteId = siteId; //The unique site ID representing MC.
    this.hostName = hostName; //The host name associated with MC.
}

//Validates the application specific data input before invoking the DLQ application.
DLQApplicationData.prototype.validate = function () {
    //Implementation, to be provided later on.
}

//The Prototype to hold the user specific data, logged by DLQ application.
function DLQUserData(title, firstName, lastName, email, whoAreYou, company, country, userId, website) {
    this.title = title; //Title for the user
    this.firstName = firstName; //User's first name
    this.lastName = lastName; //User's last name
    this.email = email; //User's e-mail ID
    this.whoAreYou = whoAreYou; //Type of user	
    this.company = company; //User's company
    this.country = country; //User's country
    this.userId = userId; //User's ID
    this.website = website;
}

//Validates the user specific data input before invoking the DLQ application.
DLQUserData.prototype.validate = function () {
    //Implementation, to be provided later on.
}

//The Prototype to hold the asset specific data, queued by DLQ application.
function DLQAssetData(assetGuid, assetVersionGuid, dlmUrlLink, key, payload) {
    this.assetGuid = assetGuid; //The global unique identifier for the asset to be downloaded.
    this.assetVersionGuid = assetVersionGuid; //The culture of the asset to be downloaded.

    var dlmUrlArr = dlmUrlLink.split("|");
    this.fileTypeId = dlmUrlArr.length > 2 ? dlmUrlArr[0] : ''; //The file type Id (in case of video)
    this.fileId = dlmUrlArr.length > 2 ? dlmUrlArr[1] : ''; //The DLM URL for the asset to be downloaded.    
    this.dlmUrl = dlmUrlArr.length > 2 ? dlmUrlArr[2] : ''; //The file Id of the asset (in case of video)
    
    this.key = key; //The comuputed hash key to validate
    this.payload = payload; //The JSON object to provide additional data for the asset.
}

//Validates the asset specific data input before invoking the DLQ application.
DLQAssetData.prototype.validate = function() {
    //Implementation, to be provided later on.
};

//The Prototype holding all the application, user and asset specific data.
function DLQSession(applicationData, userData) {
    this.applicationData = applicationData;  //The application related data to be used with DLQ
    this.userData = userData; //The user related data to be used with DLQ
    this.assetData = []; //Blank array to contain asset related data.
};

//Validates all the application, user and asset specific data before invoking the DLQ application.
DLQSession.prototype.validate = function() {
    //Implementation, to be provided later on.
};

//Adds the asset to the collection to be posted to DLQ if it is not already added.
DLQSession.prototype.addAsset = function(asset) {
    if (!this.isAssetExist(asset)) {
        this.assetData.push(asset);
    }
};

//Specifies whether or not the asset is already added to the collection to be posted to DLQ.
DLQSession.prototype.isAssetExist = function(asset) {
    var m_count = this.assetData.length;
    var m_returnValue = false;
    var m_index = 0;
    while (m_index < m_count) {
        if (this.assetData[m_index].assetGuid == asset.assetGuid
            &&
            this.assetData[m_index].fileId == asset.fileId
            &&
            this.assetData[m_index].fileTypeId == asset.fileTypeId) {
            m_returnValue = true;
            break;
        }
        m_index++;
    }
    return m_returnValue;
};

DLQSession.prototype.queue = function (dlmPage) {
    if (dlmPage == null || dlmPage == '')
        throw EXCEPTION_TEXT_DOWNLOAD_LAUNCH_NOT_SET;

    var $form = this.createForm(dlmPage);
    $form.appendTo('body');
    $form.submit();
    $form.remove();
    this.assetData = [];
};

DLQSession.prototype.createForm = function(dlmPage) {
    var inputs = [
        this.createInputHidden('first_name', this.userData.firstName),
        this.createInputHidden('last_name', this.userData.lastName),
        this.createInputHidden('email', this.userData.email),
        this.createInputHidden('who_are_you', this.userData.whoAreYou),
        this.createInputHidden('company', this.userData.company),
        this.createInputHidden('country', this.userData.country),
        this.createInputHidden('title', this.userData.title),
        this.createInputHidden('USER_ID', this.userData.userId),
        this.createInputHidden('media_room_id', this.applicationData.mediaRoomShortName),
        this.createInputHidden('media_panel_guid', this.applicationData.mediaPanelGuid),
        this.createInputHidden('SITE_ID', this.applicationData.siteId),
        this.createInputHidden('ASSETS', JSON.stringify(this.assetData, null, null))
    ];

    return $('<form>').attr({
        action: dlmPage,
        method: 'POST',
        target: 'dmWindow',
    }).append(inputs);
};

DLQSession.prototype.createInputHidden = function (name, value) {
    return $('<input>').attr({
        type: 'hidden',
        name: name,
        value: value,
    });
};
var DownloadHelper = new function() {
    var mediaRoomShortName = McConfig.MediaRoomShortName;
    var assetDetailProvider = new AssetDetailProvider(McConfig.MediaPanelApiBaseUrl);
    var locale = UserSession.Locale;
    var sectionId = UserSession.SectionId;
    var categoryId = UserSession.CategoryId;

    this.downloadWindow = null;
    this.OpenDownloadWindow = function () {
        if (this.downloadWindow == null || this.downloadWindow.closed) {
            this.downloadWindow = window.open('', 'dmWindow');
        }

        if (this.downloadWindow != null) {
            window.blur();
            this.downloadWindow.focus();
        }
    };

    this.CreateAssetData = function (serverAssetData) {
        return {
            guid: serverAssetData.assetGuid,
            type: serverAssetData.assetType,
            assetId: serverAssetData.assetId,
            title: serverAssetData.assetTitle,
            isApplyUsageRights: serverAssetData.assetIsApplyUsageRights === "True",
            usageRightsDetails: serverAssetData.assetUsageRightsDetails,
            smallThumbnailUrl: serverAssetData.assetSmallThumbnailUrl,
            description: serverAssetData.assetDescription,
            status: serverAssetData.assetStatus,
            isVideo: serverAssetData.isVideo(),
            isImage: serverAssetData.isImage(),
            isAudio: serverAssetData.isAudio(),
            companyGuid: serverAssetData.assetCompanyGuid,
            maxFileSize: serverAssetData.assetAssetmaxfilesize,
            kalturamediaid: serverAssetData.assetKalturamediaid,
            kalturamediaflavors: serverAssetData.assetKalturamediaflavors
        };
    };

    this.RequestChildAssetsForAsset = function(assetData, childAssetsCallback) {
        var assetGuid = assetData.guid;
        assetDetailProvider.processMultipleAssets(assetGuid, McConfig.MediaPanelGuid, mediaRoomShortName, childAssetsCallback, null);
    };

    this.RequestChildAssetsForAllAssets = function(assetsData, childAssetsForAllAssetsCallback) {
        var childAssetsForAllAssets = [];
        _.each(assetsData, function(assetData) {
            DownloadHelper.RequestChildAssetsForAsset(assetData, function(childAssets) {
                childAssetsForAllAssets.push({
                    assetData: assetData,
                    childAssets: childAssets
                });
                if (childAssetsForAllAssets.length == assetsData.length) {
                    childAssetsForAllAssetsCallback(childAssetsForAllAssets);
                }
            });
        });
    };

    this.EnqueueChildAsset = function (childAsset, userData) {
        this.EnqueueChildAssets([childAsset], userData);
    };

    this.EnqueueChildAssets = function(childAssets, userData) {
        var dlqSession = createDlqSession(userData);
        _.each(childAssets, function(childAsset) {
            addAssetToDlqSession(childAsset, dlqSession);
        });

        var downloadLaunch = getDownloadLaunchUrl(_.first(childAssets));
        dlqSession.queue(downloadLaunch);
    };

    this.OpenDlqWindow = function(downloadQueueUrl) {
        var asset = new Asset();
        asset.downloadLaunch = downloadQueueUrl;

        var dlqSession = createDlqSession();
        var downloadLaunch = getDownloadLaunchUrl(asset);
        dlqSession.queue(downloadLaunch);
    };
    
    var getDownloadLaunchUrl = function(childAsset) {
        return childAsset.getDownloadLaunchUrl().replace('#UI_Culture#', locale);
    };

    var createDlqSession = function (userData) {
        var siteId = mediaRoomShortName;
        var hostName = window.location.host;
        var dlqApplicationData = new DLQApplicationData(mediaRoomShortName, McConfig.MediaPanelGuid, siteId, hostName);
        var dlqUserData = createDlqUserData(userData);

        return new DLQSession(dlqApplicationData, dlqUserData);
    };

    var createDlqUserData = function (userData) {
        userData = userData || {};

        var firstName = userData.name || '';
        var lastName = '';
        var email = userData.email || '';
        var country = userData.country || '';
        var whoAreYou = userData.userType || '';
        var company = userData.company || '';
        var title = userData.title || '';
        var website = userData.website || '';
        var userId = '';

        return new DLQUserData(title, firstName, lastName, email, whoAreYou, company, country, userId, website);
    };

    var addAssetToDlqSession = function (childAsset, dlqSession) {
            var storyGuid = $('#AmpStoryGuid').val();
            
            var sessionid = LogRegHelper.GetTempToken();
            var website = ''; 
            if (dlqSession) {
                website = dlqSession.userData.website;
            }
            
            var payload = {
                'AssetGuid': childAsset.assetGuid,
                'culture': locale,
                'sectionCatid': sectionId,
                'catid': categoryId,
                'storyGuid': storyGuid,
                'website': website 
        };

            if (sessionid != '') {
                payload.sessionid = sessionid;
            }
            var payloadJson = JSON.stringify(payload);

            var assetData = new DLQAssetData(childAsset.assetGuid, 0, childAsset.downloadUrl, 'TemporaryKey', payloadJson);
            dlqSession.addAsset(assetData);        
    };

    var byteSizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
    this.BytesToSize = function(bytes) {
        var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
        if (i == 0) return bytes + ' ' + byteSizes[0];
        return (bytes / Math.pow(1024, i)).toFixed(2) + ' ' + byteSizes[i];
    };


    this.GetDisplayName = function (asset) {
        var displayName = asset.AssetDisplayName;
        if (McConfig.IsDefaultAmp != "true") {
            if (asset.assetTypeId == 1 && asset.assetFileType.toLowerCase() == "source") {
                if (asset.height > 719) {
                    displayName = "HD " + asset.assetFileType;
                } else {
                    displayName = "SD " + asset.assetFileType;
                }
            }
        }
        return displayName;
    };
};;
$(function() {
    $('.download-queue').on('click', function() {
        DownloadHelper.OpenDownloadWindow();
        MediaPanelApi.GetTemplateData(function (data) {
            var downloadLaunch = data.rows[0].Download_Launch;
            var index = downloadLaunch.lastIndexOf('http');
            if (index != -1) {
                downloadLaunch = downloadLaunch.substring(index, downloadLaunch.length);
            }

            DownloadHelper.OpenDlqWindow(downloadLaunch);
        });
    });
    $('.download-queue-login').on('click', function () {
        DownloadHelper.OpenDownloadWindow();
        MediaPanelApi.GetTemplateData(function (data) {
            var downloadLaunch = data.rows[0].Download_Launch;
            var index = downloadLaunch.lastIndexOf('http');
            if (index != -1) {
                downloadLaunch = downloadLaunch.substring(index, downloadLaunch.length);
            }

            DownloadHelper.OpenDlqWindow(downloadLaunch);
        });
    });
});;
function TellUsAboutYouViewModel($popup) {    
    var cookieName = 'tell-us-about-you-data',
        samesite = $popup.data("samesite"),
        secure = $popup.data("secure");
    var validator;
    var viewModel;

    var createValidator = function () {
        
        var requiredIfnameAvailable = (($popup.find("input[name='name']")).length > 0 ? [customValidation.rules.required] : [customValidation.rules.ignore]);
        var requiredIfEmailAvailable = (($popup.find("input[name='email']")).length > 0 ? [customValidation.rules.required, customValidation.rules.email] : [customValidation.rules.ignore]);
        var requiredIfCountryAvailable = (($popup.find("select[name='country']")).length > 0 ? [customValidation.rules.required] : [customValidation.rules.ignore]);
        var requiredIfuserTypeAvailable = (($popup.find("select[name='userType']")).length > 0 ? [customValidation.rules.required] : [customValidation.rules.ignore]);
        var requiredIfcompanyAvailable = (($popup.find("input[name='company']")).length > 0 ? [customValidation.rules.required] : [customValidation.rules.ignore]);
        var requiredIftitleAvailable = (($popup.find("input[name='title']")).length > 0 ? [customValidation.rules.required] : [customValidation.rules.ignore]);
        var requiredIfwebsiteAvailable = (($popup.find("input[name='website']")).length > 0 ? [customValidation.rules.required] : [customValidation.rules.ignore]);
        var agreevalidate = (($popup.find("input[name='AgreeForPrivacyNotice']")).length > 0 ? [customValidation.rules.agreevalidate] : [customValidation.rules.ignore]);

        var requiredIfNotUserTypeForCompany = customValidation.rules.ifNot({ userType: ['Fan', 'Others'] }, requiredIfcompanyAvailable);
        var requiredIfNotUserTypeForTitle = customValidation.rules.ifNot({ userType: ['Fan', 'Others'] }, requiredIftitleAvailable);


        return $popup.createCustomValidator({
            fields: {
                name: requiredIfnameAvailable,
                email: {
                    rules: requiredIfEmailAvailable,
                    validateOn: ['change', 'focusout']
                },
                country: requiredIfCountryAvailable,
                userType: requiredIfuserTypeAvailable,
                company: [requiredIfNotUserTypeForCompany],
                title: [requiredIfNotUserTypeForTitle],
                website: requiredIfwebsiteAvailable,
                AgreeForPrivacyNotice: agreevalidate
            }
        });
    };

    var createViewModel = function () {
        return {
            doRememberMe: true,
            isSavedDataAvailable: false,
            rememberUserData: function () {
                if (this.doRememberMe) {                    
                    //$.cookie(cookieName, JSON.stringify(validator.getValues()), { path: '/', expires: 365 });                    
                    var d = new Date();
                    d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000));
                    var expires = "expires=" + d.toUTCString();
                    document.cookie = cookieName + "=" + JSON.stringify(validator.getValues()) +";" + expires + ";path=/;SameSite=" + samesite + ";" + secure + ";";                    
                } else {
                    $.removeCookie(cookieName, { path: '/' });
                }
            },
            forgetUserData: function () {
                if (this.doRememberMe == false) {
                    $.removeCookie(cookieName, { path: '/' });
                }
            }
        };
    };

    var createDefaultUserData = function () {
        return {
            name: '',
            email: '',
            country: '',
            userType: '',
            company: '',
            title: '',
            website: ''
        };
    };

    (function () {
        validator = createValidator();
        viewModel = createViewModel();
        
        var savedUserData = JSON.parse($.cookie(cookieName));
        viewModel.isSavedDataAvailable = savedUserData != null;
        validator.setValues(savedUserData != null ? savedUserData : createDefaultUserData());
    })();

    this.Render = function () {
        renderForm();
        setupEvents();
    };

    var renderForm = function () {
        $popup.find('[name="rememberMe"]').prop('checked', viewModel.doRememberMe);
        
        validator.resetValidation();
        validator.shallowValidate();
        
        if (viewModel.isSavedDataAvailable) {
            //default check I agree checkbox if StoreIAggreeCookieDisabled
            //is not marked disabled and remember me cookie is available
            if (McConfig.StoreIAggreeCookieDisabled === 'False') {
                $popup.find('[name="AgreeForPrivacyNotice"]').prop('checked', true);
            }
            validator.validate();
        }
    };

    var setupEvents = function () {
        $popup.off('change', '[name="rememberMe"]');
        $popup.on('change', '[name="rememberMe"]', function () {
            viewModel.doRememberMe = this.checked;
        });

        //TNMMCLITE-1126 | Save data to cookie after validation and data needs to be saved to cookie (RememberMe is checked)
        $popup.find('.tell-us-form .line input').off('change');
        $popup.find('.tell-us-form .line input').on('change', function () {
            tryRememberMe();
        });

        $popup.find('.tell-us-form .line select').on('change', function () {
            tryRememberMe();
        });

        function tryRememberMe() {
            if (validator.isValid() && viewModel.doRememberMe) {
                viewModel.rememberUserData();
            }
        }
    };

    this.IsValid = function () {
        return validator.isValid();
    };

    this.Validate = function () {
        validator.validate();
    };

    this.GetUserData = function () {
        return validator.getValues();
    };

    this.RememberUserData = function () {
        return viewModel.rememberUserData();
    };

    this.ForgetUserData = function () {
        return viewModel.forgetUserData();
    };
};;
$(function () {
    if ($('html').hasClass('lt-ie9') || $('html').hasClass('lt-ie10')) {
        $('a.download-all').hide();
    }
    $(document).amp().find('.top-tools .download-all').on('mouseover', function () { $('.top-tools .download-all span.tooltiptext').show(); });
    $(document).amp().find('.top-tools .download-all').on('mouseout', function () { $('.top-tools .download-all span.tooltiptext').hide(); });

    $(document).amp().find('.top-tools .download-all').on('click', function () {   
        $('.top-tools .download-all span.tooltiptext').hide();
        var assetElements = $(document).amp().find('input.asset-data').filter(":hidden");

        if (!assetElements.length) {
            assetElements = $(document).mediaForStory().imgItem().find('input.asset-data').filter(":hidden");
        }

        var data_storyguid = $('.rsContent').data('storyguid');
        var storyGuid = $('.rsContent').data('storyguid');
        var showCaseAmpForStoryGuid = $("#showcaseAmpStoryGuid[value='" + storyGuid + "']");//TODO : storyguid to be set
        
        if (showCaseAmpForStoryGuid != null && showCaseAmpForStoryGuid.length > 0) {
            assetElements = showCaseAmpForStoryGuid.parent().find('input.asset-data').filter(":hidden");
        }

        var serverAssetsData = _.map(assetElements, function (x) { return $(x).baseAssetData(); });
        downloadAllIfAllowed(serverAssetsData, storyGuid);
    });

    $(document).mediaForStory().find('.download-all').on('mouseover', function () { $('.media-for-story span.tooltiptext').show();});
    $(document).mediaForStory().find('.download-all').on('mouseout', function () { $('.media-for-story span.tooltiptext').hide(); });
    $(document).mediaForStory().find('.download-all').on('click', function () {
        $('.media-for-story span.tooltiptext').hide();
        $(document).mediaForStory().find('span .tooltiphover').hide();
        var currentType = $('.filters ul li.active a').attr('data-item-class'),
        assetElements = {};
        var storyGuid = AmpHelper.GetStoryGuid();
        if (currentType == 'all') {            
            assetElements = $.merge($('.images-videos-items').imgItem().find('input.asset-data').filter(":hidden"), $('.hidden-media-items').imgItem().find('input.asset-data').filter(":hidden"));
        } else {
            assetElements = $.merge($('.images-videos-items').imgItem().find('input.asset-data').filter(":hidden"), $('.hidden-media-items').imgItem().filter('.' + currentType).find('input.asset-data').filter(":hidden"));
        }

        var serverAssetsData = _.map(assetElements, function (x) { return $(x).baseAssetData(); });

        downloadAllIfAllowed(serverAssetsData, storyGuid); //TODO: check if currnet type is all then call story zip download else go by on the fly zip approach

    });

    $('.mediacart .download-all').on('mouseover', function () { $('.mediacart .download-all span.tooltiptext').show(); });
    $('.mediacart .download-all').on('mouseout', function () { $('.mediacart .download-all span.tooltiptext').hide(); });

    $('.mediacart .download-all').on('click', function () {
        $('.mediacart .download-all span.tooltiptext').hide();
        var assetElements = $('.images-videos-items').imgItem().filter(':visible').find('input.asset-data').filter(":hidden");
        var serverAssetsData = _.map(assetElements, function (x) { return $(x).baseAssetData(); });
        downloadAllIfAllowed(serverAssetsData, null);
    });

    function downloadAllIfAllowed(serverAssetsData, storyGuid) {      
        var assetElements = $('input.asset-data');
        var showCaseAmpForStoryGuid = $("#showcaseAmpStoryGuid[value='" + storyGuid + "']");//TODO : storyguid to be set
        if (showCaseAmpForStoryGuid != null && showCaseAmpForStoryGuid.length > 0) {
            assetElements = showCaseAmpForStoryGuid.parent().find('input.asset-data');
        }

        var nonDownloadableAssets = assetElements.filter(function () {
            return $(this).attr('data-asset-isdownloadable').toLowerCase() == 'false'
        });
                
        if (nonDownloadableAssets.length == 0) {
            new MultipleAssetsDownloadViewModel(serverAssetsData, storyGuid).Start();
        }
        else {
            SomeAssetsCouldNotBeDownloaded(0, 0);
        }
    }

    function getGuidList(serverAssetsData) {
        var asset_Guid_List = "";
        for (var i = 0; i < serverAssetsData.length; i++) {
            asset_Guid_List = asset_Guid_List + serverAssetsData[i].assetGuid + "$";
        }
        return asset_Guid_List;
    }   
});;
function MultipleAssetsDownloadAdditionalStepsPopupViewModel(assetsData, storyGuid, options) {
    var $popup = $('#download-additional-steps-required-popup');
    var $steps = $popup.find('.steps');
    var viewModel = null;
    var downloadAllAssetType = 'all';
    var downloadAllAssetTypeId = 0;
    var locale = UserSession.Locale;
    var sectionId = UserSession.SectionId;
    var categoryId = UserSession.CategoryId;
    

    if ($('.filters ul li.active a').length > 0) {
        downloadAllAssetType = $('.filters ul li.active a').attr('data-item-class');
        downloadAllAssetTypeId = McConfig.GetDownloadAllAssetTypeID(downloadAllAssetType);
    }
    var assetGuids = "";
    var payloads = "";
    if (McConfig.IsDirectDownloadEnabled == "TRUE") {
        $.each(assetsData, function (index, value) {
            assetGuids = assetGuids + assetsData[index].guid + ",";
        });
            var sessionid = LogRegHelper.GetTempToken();
            var website = '';
            if (options != null && options.userData != null) {
                website = options.userData.website;
            }

            var payload = {
                'culture': locale,
                'sectionCatid': sectionId,
                'catid': categoryId,
                'storyGuid': storyGuid,
                'website': website
            };

            if (sessionid != '') {
                payload.sessionid = sessionid;
            }
            var payloadJson = JSON.stringify(payload);

            payloads = payloadJson;
        
    }

    this.GetVideoFormat = function () {
        var videoFormatId = McConfig.DefaultVideoFormat;
        if (assetsData.length > 0) {
            $.each(assetsData, function (index, value) {
                if (assetsData[index].isVideo) {
                    videoFormatId = McConfig.GetFileTypeID(options.defaultVideoFormat);
                }
            });
        }

        return videoFormatId;
    };


    this.Start = function () {
        initializeOptions();
        viewModel = createViewModel();

        if (McConfig.IsDirectDownloadEnabled == "TRUE" || viewModel.checkIfCanContinueDownload()) {
            startDownload();
        } else {
            renderPopup();
        }
    };

    var initializeOptions = function () {
        options = options || {};
        options.userData = options.userData || null;
        options.defaultVideoFormat = options.defaultVideoFormat || '';
        options.childAssetsForAllAssets = options.childAssetsForAllAssets || _.map(assetsData, function (x) {
            return {
                assetData: x,
                childAssets: [],
            };
        });
    };

    var createViewModel = function () {
        return {
            steps: _.map(options.childAssetsForAllAssets, function (x) { return createStepViewModel(x.assetData, x.childAssets); }),
            getGroupedSteps: function () {
                return _.groupBy(this.steps, function (x) { return x.getGroup(); });
            },
            checkIfVideoMode: function () {
                return _.some(assetsData, function (x) { return x.isVideo; });
            },
            checkIfCanContinueDownload: function () {
                return _.every(this.steps, function (x) { return x.checkIfCanContinueDownload(); });
            },
            getChildAssetsForDownload: function () {
                var notRemovedSteps = _.filter(this.steps, function (x) { return x.isRemoved == false; });
                return _.map(notRemovedSteps, function (x) { return x.getChildAssetForDownload(); });
            },
        };
    };

    var createStepViewModel = function (assetData, childAssets) {
        return {
            assetData: assetData,
            childAssets: childAssets,
            isRemoved: false,
            areUsageRightsAccepted: false,
            selectedVideoFormat: null,
            checkIfCanContinueDownload: function () {
                return this.isRemoved || (this.checkIfUsageRightsAreAccepted() && this.checkIfFormatExists());
            },
            checkIfUsageRightsAreAccepted: function () {
                return this.assetData.isApplyUsageRights == false || this.areUsageRightsAccepted;
            },
            checkIfFormatExists: function () {
                return this.assetData.isVideo == false || this.getChildAssetForDownload() != null;
            },
            getChildAssetForDownload: function () {
                if (this.assetData.isVideo == false) {
                    return _.first(this.childAssets);
                }

                var videoFormat = this.selectedVideoFormat != null ? this.selectedVideoFormat : options.defaultVideoFormat;
                return _.find(this.childAssets, function (x) { return x.format == videoFormat; });
            },
            getGroup: function () {
                var formatParts = [];
                if (this.checkIfFormatExists() == false) {
                    formatParts.push('format');
                }
                if (this.checkIfUsageRightsAreAccepted() == false) {
                    formatParts.push('rights');
                }
                return formatParts.join('_');
            },
        };
    };

    var renderPopup = function () {
        renderElements();
        setupEvents();

        $popup.removeClass('invalid');
        $popup.openPopup();
    };

    var renderElements = function () {
        $steps.html(buildStepsHtml());
        _.each($steps.find('.step'), function (x) {
            var $x = $(x);
            var guid = $(x).data('assetGuid');
            $x.data('viewModel', _.find(viewModel.steps, function (y) { return y.assetData.guid == guid; }));
        });
    };

    var buildStepsHtml = function () {
        var groupTemplates = {
            format: TemplateHelper.Find('#download-additional-steps-required-popup-format-change-template'),
            rights: TemplateHelper.Find('#download-additional-steps-required-popup-rights-acceptance-template'),
            format_rights: TemplateHelper.Find('#download-additional-steps-required-popup-format-rights-template')
        };
        var stepTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-template');
        var stepUsageRightsTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-usage-rights-template');
        var stepFormatChangeTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-format-change-template');
        var optionTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-option-template');

        var groupedSteps = viewModel.getGroupedSteps();

        return _.map(groupTemplates, function (groupTemplate, groupName) {
            var steps = groupedSteps[groupName];
            if (steps == null) return '';

            return TemplateHelper.Render(groupTemplate, {
                count: _.size(steps),
                steps: TemplateHelper.RenderMany(stepTemplate, _.map(steps, function (x) {
                    return {
                        assetGuid: x.assetData.guid,
                        smallThumbnailUrl: x.assetData.smallThumbnailUrl,
                        title: x.assetData.title,
                        usageRights: x.checkIfUsageRightsAreAccepted() == false ? TemplateHelper.Render(stepUsageRightsTemplate, {
                            guid: x.assetData.guid,
                            usageRightsDetails: x.assetData.usageRightsDetails
                        }) : '',
                        formatChange: x.checkIfFormatExists() == false ? TemplateHelper.Render(stepFormatChangeTemplate, {
                            options: TemplateHelper.RenderMany(optionTemplate, _.map(x.childAssets, function (y) {
                                return {
                                    guid: x.assetData.guid,
                                    format: y.format,
                                    name: y.AssetDisplayName,
                                    size: DownloadHelper.BytesToSize(y.assetFileSizeInBytes)
                                };
                            })),
                            unavaliableVideoFormat: $('#download-format-options-popup').find('input[name=format]:radio:checked').parent().find("label").text()
                        }) : ''
                    };
                }))
            });
        }).join('');
    };

    var setupEvents = function () {
        $popup.off('click', '.cancel');
        $popup.on('click', '.cancel', function () {
            $popup.closePopup();
        });

        $popup.off('click', '.continue');
        $popup.on('click', '.continue', function () {
            if (viewModel.checkIfCanContinueDownload()) {
                $popup.closePopup();
                startDownload();
            } else {
                $popup.addClass('invalid');
                var $wrapper = $popup.find('.steps-wrapper');
                $wrapper.scrollTop($wrapper[0].scrollHeight);
            }
        });

        $steps.on('change', '.step', function () {
            var $step = $(this);
            var stepViewModel = $step.data('viewModel');
            var stepCanContinueDownload = stepViewModel.checkIfCanContinueDownload();
            $step.toggleClass('checked', stepCanContinueDownload).toggleClass('exclamation', !stepCanContinueDownload);

            $popup.toggleClass('invalid', !viewModel.checkIfCanContinueDownload());
        });

        $steps.on('change', '.step .usage-rights input:checkbox', function () {
            var areUsageRightsAccepted = this.checked;
            var stepViewModel = $(this).closest('.step').data('viewModel');
            stepViewModel.areUsageRightsAccepted = areUsageRightsAccepted;
        });

        $steps.on('change', '.step .format-change form input:radio', function () {
            var selectedVideoFormat = $(this).data('childAssetFormat');
            var stepViewModel = $(this).closest('.step').data('viewModel');
            stepViewModel.selectedVideoFormat = selectedVideoFormat;
        });

        $steps.on('click', '.step .remove-asset, .step .add-asset-back', function () {
            var isRemoved = $(this).data('isRemoved');

            var $step = $(this).closest('.step');
            $step.find('input').prop('disabled', isRemoved);
            $step.toggleClass('removed', isRemoved);

            var stepViewModel = $step.data('viewModel');
            stepViewModel.isRemoved = isRemoved;

            $popup.toggleClass('invalid', !viewModel.checkIfCanContinueDownload());
        });
    };


    var Parameters = {
        DirectDownloadEnabled: McConfig.IsDirectDownloadEnabled,
        DirectDownloadUrl: $('input[name="MediaCart.DirectDownloadAssetUrl"]').val(),
        isDownloadAll: true,
        downloadAllAssetType: downloadAllAssetTypeId,
        contentType: storyGuid != null && (downloadAllAssetTypeId == 0 || downloadAllAssetTypeId == 1) ? 2 : 3,
        contentGUIDs: (downloadAllAssetTypeId == 0 || downloadAllAssetTypeId == 1) && storyGuid != null ? storyGuid : assetGuids.toString(),
        formatID: 0,
        AssetLogDownloadUrl: $('input[name="MediaCart.LogDownloadAssetUrl"]').val(),
        assetDownloadData: null,
        company: options.userData != null ? options.userData.company : "",
        country: options.userData != null ? options.userData.country : "",
        email_Id: options.userData != null ? options.userData.email : "",
        first_Name: options.userData != null ? options.userData.name : "",
        title: options.userData != null ? options.userData.title : "",
        user_Type: options.userData != null ? options.userData.userType : "",
        session_ID: LogRegHelper.GetTempToken(),
        payload:payloads
    };

    var startDownload = function () {
        if (McConfig.IsDirectDownloadEnabled == 'TRUE') {
            directDownloadHelper.GetAssetDataObject(Parameters);
        }
        else {
            DownloadHelper.OpenDownloadWindow();
            if (viewModel.checkIfVideoMode()) {
                DownloadHelper.EnqueueChildAssets(viewModel.getChildAssetsForDownload(), options.userData);
            } else {
                DownloadHelper.RequestChildAssetsForAllAssets(assetsData, function (retrievedChildAssetsForAllAssets) {
                    options.childAssetsForAllAssets = retrievedChildAssetsForAllAssets;
                    updateViewModelStepsWithChildAssets();
                    DownloadHelper.EnqueueChildAssets(viewModel.getChildAssetsForDownload(), options.userData);
                });
            }
        }
    };

    
    var updateViewModelStepsWithChildAssets = function () {
        _.each(options.childAssetsForAllAssets, function (x) {
            var step = _.find(viewModel.steps, function (y) { return x.assetData == y.assetData; });
            step.childAssets = x.childAssets;
        });
    };

    //function showAssetQualityPopup() {
    //    var $popupMessage = $('#download-all-message-popup');
    //    $popupMessage.openPopup({
    //        absolute: true
    //    });
    //    McConfig.FormatChangedMessage = McConfig.FormatChangedMessage.replace('{0}', options.defaultVideoFormat.toUpperCase())
    //    $popupMessage.find("#divMessage").html(McConfig.FormatChangedMessage);

    //    $popupMessage.find(".mc-download-all").show();
    //    $popupMessage.find(".btn-cancel").hide();
    //}

    

    $('#download-all-message-popup .btn-cancel').click(function () {
        $('#download-all-message-popup').closePopup();
    })

    $(document).on('click', '#download-all-message-popup .btn-download', function () {
        directDownloadHelper.SubmitFormToStartDownload();
    })
};;
function MultipleAssetsDownloadAdditionalStepsPopupViewModel(assetsData, storyGuid, options) {
    var $popup = $('#download-additional-steps-required-popup');
    var $steps = $popup.find('.steps');
    var viewModel = null;
    var downloadAllAssetType = 'all';
    var downloadAllAssetTypeId = 0;
    var locale = UserSession.Locale;
    var sectionId = UserSession.SectionId;
    var categoryId = UserSession.CategoryId;
    

    if ($('.filters ul li.active a').length > 0) {
        downloadAllAssetType = $('.filters ul li.active a').attr('data-item-class');
        downloadAllAssetTypeId = McConfig.GetDownloadAllAssetTypeID(downloadAllAssetType);
    }
    var assetGuids = "";
    var payloads = "";
    if (McConfig.IsDirectDownloadEnabled == "TRUE") {
        $.each(assetsData, function (index, value) {
            assetGuids = assetGuids + assetsData[index].guid + ",";
        });
            var sessionid = LogRegHelper.GetTempToken();
            var website = '';
            if (options != null && options.userData != null) {
                website = options.userData.website;
            }

            var payload = {
                'culture': locale,
                'sectionCatid': sectionId,
                'catid': categoryId,
                'storyGuid': storyGuid,
                'website': website
            };

            if (sessionid != '') {
                payload.sessionid = sessionid;
            }
            var payloadJson = JSON.stringify(payload);

            payloads = payloadJson;
        
    }

    this.GetVideoFormat = function () {
        var videoFormatId = McConfig.DefaultVideoFormat;
        if (assetsData.length > 0) {
            $.each(assetsData, function (index, value) {
                if (assetsData[index].isVideo) {
                    videoFormatId = McConfig.GetFileTypeID(options.defaultVideoFormat);
                }
            });
        }

        return videoFormatId;
    };


    this.Start = function () {
        initializeOptions();
        viewModel = createViewModel();

        if (McConfig.IsDirectDownloadEnabled == "TRUE" || viewModel.checkIfCanContinueDownload()) {
            startDownload();
        } else {
            renderPopup();
        }
    };

    var initializeOptions = function () {
        options = options || {};
        options.userData = options.userData || null;
        options.defaultVideoFormat = options.defaultVideoFormat || '';
        options.childAssetsForAllAssets = options.childAssetsForAllAssets || _.map(assetsData, function (x) {
            return {
                assetData: x,
                childAssets: [],
            };
        });
    };

    var createViewModel = function () {
        return {
            steps: _.map(options.childAssetsForAllAssets, function (x) { return createStepViewModel(x.assetData, x.childAssets); }),
            getGroupedSteps: function () {
                return _.groupBy(this.steps, function (x) { return x.getGroup(); });
            },
            checkIfVideoMode: function () {
                return _.some(assetsData, function (x) { return x.isVideo; });
            },
            checkIfCanContinueDownload: function () {
                return _.every(this.steps, function (x) { return x.checkIfCanContinueDownload(); });
            },
            getChildAssetsForDownload: function () {
                var notRemovedSteps = _.filter(this.steps, function (x) { return x.isRemoved == false; });
                return _.map(notRemovedSteps, function (x) { return x.getChildAssetForDownload(); });
            },
        };
    };

    var createStepViewModel = function (assetData, childAssets) {
        return {
            assetData: assetData,
            childAssets: childAssets,
            isRemoved: false,
            areUsageRightsAccepted: false,
            selectedVideoFormat: null,
            checkIfCanContinueDownload: function () {
                return this.isRemoved || (this.checkIfUsageRightsAreAccepted() && this.checkIfFormatExists());
            },
            checkIfUsageRightsAreAccepted: function () {
                return this.assetData.isApplyUsageRights == false || this.areUsageRightsAccepted;
            },
            checkIfFormatExists: function () {
                return this.assetData.isVideo == false || this.getChildAssetForDownload() != null;
            },
            getChildAssetForDownload: function () {
                if (this.assetData.isVideo == false) {
                    return _.first(this.childAssets);
                }

                var videoFormat = this.selectedVideoFormat != null ? this.selectedVideoFormat : options.defaultVideoFormat;
                return _.find(this.childAssets, function (x) { return x.format == videoFormat; });
            },
            getGroup: function () {
                var formatParts = [];
                if (this.checkIfFormatExists() == false) {
                    formatParts.push('format');
                }
                if (this.checkIfUsageRightsAreAccepted() == false) {
                    formatParts.push('rights');
                }
                return formatParts.join('_');
            },
        };
    };

    var renderPopup = function () {
        renderElements();
        setupEvents();

        $popup.removeClass('invalid');
        $popup.openPopup();
    };

    var renderElements = function () {
        $steps.html(buildStepsHtml());
        _.each($steps.find('.step'), function (x) {
            var $x = $(x);
            var guid = $(x).data('assetGuid');
            $x.data('viewModel', _.find(viewModel.steps, function (y) { return y.assetData.guid == guid; }));
        });
    };

    var buildStepsHtml = function () {
        var groupTemplates = {
            format: TemplateHelper.Find('#download-additional-steps-required-popup-format-change-template'),
            rights: TemplateHelper.Find('#download-additional-steps-required-popup-rights-acceptance-template'),
            format_rights: TemplateHelper.Find('#download-additional-steps-required-popup-format-rights-template')
        };
        var stepTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-template');
        var stepUsageRightsTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-usage-rights-template');
        var stepFormatChangeTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-format-change-template');
        var optionTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-option-template');

        var groupedSteps = viewModel.getGroupedSteps();

        return _.map(groupTemplates, function (groupTemplate, groupName) {
            var steps = groupedSteps[groupName];
            if (steps == null) return '';

            return TemplateHelper.Render(groupTemplate, {
                count: _.size(steps),
                steps: TemplateHelper.RenderMany(stepTemplate, _.map(steps, function (x) {
                    return {
                        assetGuid: x.assetData.guid,
                        smallThumbnailUrl: x.assetData.smallThumbnailUrl,
                        title: x.assetData.title,
                        usageRights: x.checkIfUsageRightsAreAccepted() == false ? TemplateHelper.Render(stepUsageRightsTemplate, {
                            guid: x.assetData.guid,
                            usageRightsDetails: x.assetData.usageRightsDetails
                        }) : '',
                        formatChange: x.checkIfFormatExists() == false ? TemplateHelper.Render(stepFormatChangeTemplate, {
                            options: TemplateHelper.RenderMany(optionTemplate, _.map(x.childAssets, function (y) {
                                return {
                                    guid: x.assetData.guid,
                                    format: y.format,
                                    name: y.AssetDisplayName,
                                    size: DownloadHelper.BytesToSize(y.assetFileSizeInBytes)
                                };
                            })),
                            unavaliableVideoFormat: $('#download-format-options-popup').find('input[name=format]:radio:checked').parent().find("label").text()
                        }) : ''
                    };
                }))
            });
        }).join('');
    };

    var setupEvents = function () {
        $popup.off('click', '.cancel');
        $popup.on('click', '.cancel', function () {
            $popup.closePopup();
        });

        $popup.off('click', '.continue');
        $popup.on('click', '.continue', function () {
            if (viewModel.checkIfCanContinueDownload()) {
                $popup.closePopup();
                startDownload();
            } else {
                $popup.addClass('invalid');
                var $wrapper = $popup.find('.steps-wrapper');
                $wrapper.scrollTop($wrapper[0].scrollHeight);
            }
        });

        $steps.on('change', '.step', function () {
            var $step = $(this);
            var stepViewModel = $step.data('viewModel');
            var stepCanContinueDownload = stepViewModel.checkIfCanContinueDownload();
            $step.toggleClass('checked', stepCanContinueDownload).toggleClass('exclamation', !stepCanContinueDownload);

            $popup.toggleClass('invalid', !viewModel.checkIfCanContinueDownload());
        });

        $steps.on('change', '.step .usage-rights input:checkbox', function () {
            var areUsageRightsAccepted = this.checked;
            var stepViewModel = $(this).closest('.step').data('viewModel');
            stepViewModel.areUsageRightsAccepted = areUsageRightsAccepted;
        });

        $steps.on('change', '.step .format-change form input:radio', function () {
            var selectedVideoFormat = $(this).data('childAssetFormat');
            var stepViewModel = $(this).closest('.step').data('viewModel');
            stepViewModel.selectedVideoFormat = selectedVideoFormat;
        });

        $steps.on('click', '.step .remove-asset, .step .add-asset-back', function () {
            var isRemoved = $(this).data('isRemoved');

            var $step = $(this).closest('.step');
            $step.find('input').prop('disabled', isRemoved);
            $step.toggleClass('removed', isRemoved);

            var stepViewModel = $step.data('viewModel');
            stepViewModel.isRemoved = isRemoved;

            $popup.toggleClass('invalid', !viewModel.checkIfCanContinueDownload());
        });
    };


    var Parameters = {
        DirectDownloadEnabled: McConfig.IsDirectDownloadEnabled,
        DirectDownloadUrl: $('input[name="MediaCart.DirectDownloadAssetUrl"]').val(),
        isDownloadAll: true,
        downloadAllAssetType: downloadAllAssetTypeId,
        contentType: storyGuid != null && (downloadAllAssetTypeId == 0 || downloadAllAssetTypeId == 1) ? 2 : 3,
        contentGUIDs: (downloadAllAssetTypeId == 0 || downloadAllAssetTypeId == 1) && storyGuid != null ? storyGuid : assetGuids.toString(),
        formatID: 0,
        AssetLogDownloadUrl: $('input[name="MediaCart.LogDownloadAssetUrl"]').val(),
        assetDownloadData: null,
        company: options.userData != null ? options.userData.company : "",
        country: options.userData != null ? options.userData.country : "",
        email_Id: options.userData != null ? options.userData.email : "",
        first_Name: options.userData != null ? options.userData.name : "",
        title: options.userData != null ? options.userData.title : "",
        user_Type: options.userData != null ? options.userData.userType : "",
        session_ID: LogRegHelper.GetTempToken(),
        payload:payloads
    };

    var startDownload = function () {
        if (McConfig.IsDirectDownloadEnabled == 'TRUE') {
            directDownloadHelper.GetAssetDataObject(Parameters);
        }
        else {
            DownloadHelper.OpenDownloadWindow();
            if (viewModel.checkIfVideoMode()) {
                DownloadHelper.EnqueueChildAssets(viewModel.getChildAssetsForDownload(), options.userData);
            } else {
                DownloadHelper.RequestChildAssetsForAllAssets(assetsData, function (retrievedChildAssetsForAllAssets) {
                    options.childAssetsForAllAssets = retrievedChildAssetsForAllAssets;
                    updateViewModelStepsWithChildAssets();
                    DownloadHelper.EnqueueChildAssets(viewModel.getChildAssetsForDownload(), options.userData);
                });
            }
        }
    };

    
    var updateViewModelStepsWithChildAssets = function () {
        _.each(options.childAssetsForAllAssets, function (x) {
            var step = _.find(viewModel.steps, function (y) { return x.assetData == y.assetData; });
            step.childAssets = x.childAssets;
        });
    };

    //function showAssetQualityPopup() {
    //    var $popupMessage = $('#download-all-message-popup');
    //    $popupMessage.openPopup({
    //        absolute: true
    //    });
    //    McConfig.FormatChangedMessage = McConfig.FormatChangedMessage.replace('{0}', options.defaultVideoFormat.toUpperCase())
    //    $popupMessage.find("#divMessage").html(McConfig.FormatChangedMessage);

    //    $popupMessage.find(".mc-download-all").show();
    //    $popupMessage.find(".btn-cancel").hide();
    //}

    

    $('#download-all-message-popup .btn-cancel').click(function () {
        $('#download-all-message-popup').closePopup();
    })

    $(document).on('click', '#download-all-message-popup .btn-download', function () {
        directDownloadHelper.SubmitFormToStartDownload();
    })
};;
function MultipleAssetsDownloadAdditionalStepsPopupViewModel(assetsData, storyGuid, options) {
    var $popup = $('#download-additional-steps-required-popup');
    var $steps = $popup.find('.steps');
    var viewModel = null;
    var downloadAllAssetType = 'all';
    var downloadAllAssetTypeId = 0;
    var locale = UserSession.Locale;
    var sectionId = UserSession.SectionId;
    var categoryId = UserSession.CategoryId;
    

    if ($('.filters ul li.active a').length > 0) {
        downloadAllAssetType = $('.filters ul li.active a').attr('data-item-class');
        downloadAllAssetTypeId = McConfig.GetDownloadAllAssetTypeID(downloadAllAssetType);
    }
    var assetGuids = "";
    var payloads = "";
    if (McConfig.IsDirectDownloadEnabled == "TRUE") {
        $.each(assetsData, function (index, value) {
            assetGuids = assetGuids + assetsData[index].guid + ",";
        });
            var sessionid = LogRegHelper.GetTempToken();
            var website = '';
            if (options != null && options.userData != null) {
                website = options.userData.website;
            }

            var payload = {
                'culture': locale,
                'sectionCatid': sectionId,
                'catid': categoryId,
                'storyGuid': storyGuid,
                'website': website
            };

            if (sessionid != '') {
                payload.sessionid = sessionid;
            }
            var payloadJson = JSON.stringify(payload);

            payloads = payloadJson;
        
    }

    this.GetVideoFormat = function () {
        var videoFormatId = McConfig.DefaultVideoFormat;
        if (assetsData.length > 0) {
            $.each(assetsData, function (index, value) {
                if (assetsData[index].isVideo) {
                    videoFormatId = McConfig.GetFileTypeID(options.defaultVideoFormat);
                }
            });
        }

        return videoFormatId;
    };


    this.Start = function () {
        initializeOptions();
        viewModel = createViewModel();

        if (McConfig.IsDirectDownloadEnabled == "TRUE" || viewModel.checkIfCanContinueDownload()) {
            startDownload();
        } else {
            renderPopup();
        }
    };

    var initializeOptions = function () {
        options = options || {};
        options.userData = options.userData || null;
        options.defaultVideoFormat = options.defaultVideoFormat || '';
        options.childAssetsForAllAssets = options.childAssetsForAllAssets || _.map(assetsData, function (x) {
            return {
                assetData: x,
                childAssets: [],
            };
        });
    };

    var createViewModel = function () {
        return {
            steps: _.map(options.childAssetsForAllAssets, function (x) { return createStepViewModel(x.assetData, x.childAssets); }),
            getGroupedSteps: function () {
                return _.groupBy(this.steps, function (x) { return x.getGroup(); });
            },
            checkIfVideoMode: function () {
                return _.some(assetsData, function (x) { return x.isVideo; });
            },
            checkIfCanContinueDownload: function () {
                return _.every(this.steps, function (x) { return x.checkIfCanContinueDownload(); });
            },
            getChildAssetsForDownload: function () {
                var notRemovedSteps = _.filter(this.steps, function (x) { return x.isRemoved == false; });
                return _.map(notRemovedSteps, function (x) { return x.getChildAssetForDownload(); });
            },
        };
    };

    var createStepViewModel = function (assetData, childAssets) {
        return {
            assetData: assetData,
            childAssets: childAssets,
            isRemoved: false,
            areUsageRightsAccepted: false,
            selectedVideoFormat: null,
            checkIfCanContinueDownload: function () {
                return this.isRemoved || (this.checkIfUsageRightsAreAccepted() && this.checkIfFormatExists());
            },
            checkIfUsageRightsAreAccepted: function () {
                return this.assetData.isApplyUsageRights == false || this.areUsageRightsAccepted;
            },
            checkIfFormatExists: function () {
                return this.assetData.isVideo == false || this.getChildAssetForDownload() != null;
            },
            getChildAssetForDownload: function () {
                if (this.assetData.isVideo == false) {
                    return _.first(this.childAssets);
                }

                var videoFormat = this.selectedVideoFormat != null ? this.selectedVideoFormat : options.defaultVideoFormat;
                return _.find(this.childAssets, function (x) { return x.format == videoFormat; });
            },
            getGroup: function () {
                var formatParts = [];
                if (this.checkIfFormatExists() == false) {
                    formatParts.push('format');
                }
                if (this.checkIfUsageRightsAreAccepted() == false) {
                    formatParts.push('rights');
                }
                return formatParts.join('_');
            },
        };
    };

    var renderPopup = function () {
        renderElements();
        setupEvents();

        $popup.removeClass('invalid');
        $popup.openPopup();
    };

    var renderElements = function () {
        $steps.html(buildStepsHtml());
        _.each($steps.find('.step'), function (x) {
            var $x = $(x);
            var guid = $(x).data('assetGuid');
            $x.data('viewModel', _.find(viewModel.steps, function (y) { return y.assetData.guid == guid; }));
        });
    };

    var buildStepsHtml = function () {
        var groupTemplates = {
            format: TemplateHelper.Find('#download-additional-steps-required-popup-format-change-template'),
            rights: TemplateHelper.Find('#download-additional-steps-required-popup-rights-acceptance-template'),
            format_rights: TemplateHelper.Find('#download-additional-steps-required-popup-format-rights-template')
        };
        var stepTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-template');
        var stepUsageRightsTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-usage-rights-template');
        var stepFormatChangeTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-format-change-template');
        var optionTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-option-template');

        var groupedSteps = viewModel.getGroupedSteps();

        return _.map(groupTemplates, function (groupTemplate, groupName) {
            var steps = groupedSteps[groupName];
            if (steps == null) return '';

            return TemplateHelper.Render(groupTemplate, {
                count: _.size(steps),
                steps: TemplateHelper.RenderMany(stepTemplate, _.map(steps, function (x) {
                    return {
                        assetGuid: x.assetData.guid,
                        smallThumbnailUrl: x.assetData.smallThumbnailUrl,
                        title: x.assetData.title,
                        usageRights: x.checkIfUsageRightsAreAccepted() == false ? TemplateHelper.Render(stepUsageRightsTemplate, {
                            guid: x.assetData.guid,
                            usageRightsDetails: x.assetData.usageRightsDetails
                        }) : '',
                        formatChange: x.checkIfFormatExists() == false ? TemplateHelper.Render(stepFormatChangeTemplate, {
                            options: TemplateHelper.RenderMany(optionTemplate, _.map(x.childAssets, function (y) {
                                return {
                                    guid: x.assetData.guid,
                                    format: y.format,
                                    name: y.AssetDisplayName,
                                    size: DownloadHelper.BytesToSize(y.assetFileSizeInBytes)
                                };
                            })),
                            unavaliableVideoFormat: $('#download-format-options-popup').find('input[name=format]:radio:checked').parent().find("label").text()
                        }) : ''
                    };
                }))
            });
        }).join('');
    };

    var setupEvents = function () {
        $popup.off('click', '.cancel');
        $popup.on('click', '.cancel', function () {
            $popup.closePopup();
        });

        $popup.off('click', '.continue');
        $popup.on('click', '.continue', function () {
            if (viewModel.checkIfCanContinueDownload()) {
                $popup.closePopup();
                startDownload();
            } else {
                $popup.addClass('invalid');
                var $wrapper = $popup.find('.steps-wrapper');
                $wrapper.scrollTop($wrapper[0].scrollHeight);
            }
        });

        $steps.on('change', '.step', function () {
            var $step = $(this);
            var stepViewModel = $step.data('viewModel');
            var stepCanContinueDownload = stepViewModel.checkIfCanContinueDownload();
            $step.toggleClass('checked', stepCanContinueDownload).toggleClass('exclamation', !stepCanContinueDownload);

            $popup.toggleClass('invalid', !viewModel.checkIfCanContinueDownload());
        });

        $steps.on('change', '.step .usage-rights input:checkbox', function () {
            var areUsageRightsAccepted = this.checked;
            var stepViewModel = $(this).closest('.step').data('viewModel');
            stepViewModel.areUsageRightsAccepted = areUsageRightsAccepted;
        });

        $steps.on('change', '.step .format-change form input:radio', function () {
            var selectedVideoFormat = $(this).data('childAssetFormat');
            var stepViewModel = $(this).closest('.step').data('viewModel');
            stepViewModel.selectedVideoFormat = selectedVideoFormat;
        });

        $steps.on('click', '.step .remove-asset, .step .add-asset-back', function () {
            var isRemoved = $(this).data('isRemoved');

            var $step = $(this).closest('.step');
            $step.find('input').prop('disabled', isRemoved);
            $step.toggleClass('removed', isRemoved);

            var stepViewModel = $step.data('viewModel');
            stepViewModel.isRemoved = isRemoved;

            $popup.toggleClass('invalid', !viewModel.checkIfCanContinueDownload());
        });
    };


    var Parameters = {
        DirectDownloadEnabled: McConfig.IsDirectDownloadEnabled,
        DirectDownloadUrl: $('input[name="MediaCart.DirectDownloadAssetUrl"]').val(),
        isDownloadAll: true,
        downloadAllAssetType: downloadAllAssetTypeId,
        contentType: storyGuid != null && (downloadAllAssetTypeId == 0 || downloadAllAssetTypeId == 1) ? 2 : 3,
        contentGUIDs: (downloadAllAssetTypeId == 0 || downloadAllAssetTypeId == 1) && storyGuid != null ? storyGuid : assetGuids.toString(),
        formatID: 0,
        AssetLogDownloadUrl: $('input[name="MediaCart.LogDownloadAssetUrl"]').val(),
        assetDownloadData: null,
        company: options.userData != null ? options.userData.company : "",
        country: options.userData != null ? options.userData.country : "",
        email_Id: options.userData != null ? options.userData.email : "",
        first_Name: options.userData != null ? options.userData.name : "",
        title: options.userData != null ? options.userData.title : "",
        user_Type: options.userData != null ? options.userData.userType : "",
        session_ID: LogRegHelper.GetTempToken(),
        payload:payloads
    };

    var startDownload = function () {
        if (McConfig.IsDirectDownloadEnabled == 'TRUE') {
            directDownloadHelper.GetAssetDataObject(Parameters);
        }
        else {
            DownloadHelper.OpenDownloadWindow();
            if (viewModel.checkIfVideoMode()) {
                DownloadHelper.EnqueueChildAssets(viewModel.getChildAssetsForDownload(), options.userData);
            } else {
                DownloadHelper.RequestChildAssetsForAllAssets(assetsData, function (retrievedChildAssetsForAllAssets) {
                    options.childAssetsForAllAssets = retrievedChildAssetsForAllAssets;
                    updateViewModelStepsWithChildAssets();
                    DownloadHelper.EnqueueChildAssets(viewModel.getChildAssetsForDownload(), options.userData);
                });
            }
        }
    };

    
    var updateViewModelStepsWithChildAssets = function () {
        _.each(options.childAssetsForAllAssets, function (x) {
            var step = _.find(viewModel.steps, function (y) { return x.assetData == y.assetData; });
            step.childAssets = x.childAssets;
        });
    };

    //function showAssetQualityPopup() {
    //    var $popupMessage = $('#download-all-message-popup');
    //    $popupMessage.openPopup({
    //        absolute: true
    //    });
    //    McConfig.FormatChangedMessage = McConfig.FormatChangedMessage.replace('{0}', options.defaultVideoFormat.toUpperCase())
    //    $popupMessage.find("#divMessage").html(McConfig.FormatChangedMessage);

    //    $popupMessage.find(".mc-download-all").show();
    //    $popupMessage.find(".btn-cancel").hide();
    //}

    

    $('#download-all-message-popup .btn-cancel').click(function () {
        $('#download-all-message-popup').closePopup();
    })

    $(document).on('click', '#download-all-message-popup .btn-download', function () {
        directDownloadHelper.SubmitFormToStartDownload();
    })
};;
function MultipleAssetsDownloadAdditionalStepsPopupViewModel(assetsData, storyGuid, options) {
    var $popup = $('#download-additional-steps-required-popup');
    var $steps = $popup.find('.steps');
    var viewModel = null;
    var downloadAllAssetType = 'all';
    var downloadAllAssetTypeId = 0;
    var locale = UserSession.Locale;
    var sectionId = UserSession.SectionId;
    var categoryId = UserSession.CategoryId;
    var ismediacartPage = $('#mediacartPage').length;

    if ($('.filters ul li.active a').length > 0 && (typeof ($('.filters ul li.active a').attr('data-item-class'))) !== 'undefined') {
        downloadAllAssetType = $('.filters ul li.active a').attr('data-item-class');
        downloadAllAssetTypeId = McConfig.GetDownloadAllAssetTypeID(downloadAllAssetType);
    }
    var assetGuids = "";
    var payloads = "";
    if (McConfig.IsDirectDownloadEnabled == "TRUE") {
        $.each(assetsData, function (index, value) {
            assetGuids = assetGuids + assetsData[index].guid + ",";
        });
            var sessionid = LogRegHelper.GetTempToken();
            var website = '';
            if (options != null && options.userData != null) {
                website = options.userData.website;
            }

            var payload = {
                'culture': locale,
                'sectionCatid': sectionId,
                'catid': categoryId,
                'storyGuid': storyGuid,
                'website': website
            };

            if (sessionid != '') {
                payload.sessionid = sessionid;
            }
            var payloadJson = JSON.stringify(payload);

            payloads = payloadJson;
        
    }

    this.GetVideoFormat = function () {
        var videoFormatId = McConfig.DefaultVideoFormat;
        if (assetsData.length > 0) {
            $.each(assetsData, function (index, value) {
                if (assetsData[index].isVideo) {
                    videoFormatId = McConfig.GetFileTypeID(options.defaultVideoFormat);
                }
            });
        }

        return videoFormatId;
    };


    this.Start = function () {
        initializeOptions();
        viewModel = createViewModel();

        if (McConfig.IsDirectDownloadEnabled == "TRUE" || viewModel.checkIfCanContinueDownload()) {
            startDownload();
        } else {
            renderPopup();
        }
    };

    var initializeOptions = function () {
        options = options || {};
        options.userData = options.userData || null;
        options.defaultVideoFormat = options.defaultVideoFormat || '';
        options.childAssetsForAllAssets = options.childAssetsForAllAssets || _.map(assetsData, function (x) {
            return {
                assetData: x,
                childAssets: [],
            };
        });
    };

    var createViewModel = function () {
        return {
            steps: _.map(options.childAssetsForAllAssets, function (x) { return createStepViewModel(x.assetData, x.childAssets); }),
            getGroupedSteps: function () {
                return _.groupBy(this.steps, function (x) { return x.getGroup(); });
            },
            checkIfVideoMode: function () {
                return _.some(assetsData, function (x) { return x.isVideo; });
            },
            checkIfCanContinueDownload: function () {
                return _.every(this.steps, function (x) { return x.checkIfCanContinueDownload(); });
            },
            getChildAssetsForDownload: function () {
                var notRemovedSteps = _.filter(this.steps, function (x) { return x.isRemoved == false; });
                return _.map(notRemovedSteps, function (x) { return x.getChildAssetForDownload(); });
            },
        };
    };

    var createStepViewModel = function (assetData, childAssets) {
        return {
            assetData: assetData,
            childAssets: childAssets,
            isRemoved: false,
            areUsageRightsAccepted: false,
            selectedVideoFormat: null,
            checkIfCanContinueDownload: function () {
                return this.isRemoved || (this.checkIfUsageRightsAreAccepted() && this.checkIfFormatExists());
            },
            checkIfUsageRightsAreAccepted: function () {
                return this.assetData.isApplyUsageRights == false || this.areUsageRightsAccepted;
            },
            checkIfFormatExists: function () {
                return this.assetData.isVideo == false || this.getChildAssetForDownload() != null;
            },
            getChildAssetForDownload: function () {
                if (this.assetData.isVideo == false) {
                    return _.first(this.childAssets);
                }

                var videoFormat = this.selectedVideoFormat != null ? this.selectedVideoFormat : options.defaultVideoFormat;
                return _.find(this.childAssets, function (x) { return x.format == videoFormat; });
            },
            getGroup: function () {
                var formatParts = [];
                if (this.checkIfFormatExists() == false) {
                    formatParts.push('format');
                }
                if (this.checkIfUsageRightsAreAccepted() == false) {
                    formatParts.push('rights');
                }
                return formatParts.join('_');
            },
        };
    };

    var renderPopup = function () {
        renderElements();
        setupEvents();

        $popup.removeClass('invalid');
        $popup.openPopup();
    };

    var renderElements = function () {
        $steps.html(buildStepsHtml());
        _.each($steps.find('.step'), function (x) {
            var $x = $(x);
            var guid = $(x).data('assetGuid');
            $x.data('viewModel', _.find(viewModel.steps, function (y) { return y.assetData.guid == guid; }));
        });
    };

    var buildStepsHtml = function () {
        var groupTemplates = {
            format: TemplateHelper.Find('#download-additional-steps-required-popup-format-change-template'),
            rights: TemplateHelper.Find('#download-additional-steps-required-popup-rights-acceptance-template'),
            format_rights: TemplateHelper.Find('#download-additional-steps-required-popup-format-rights-template')
        };
        var stepTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-template');
        var stepUsageRightsTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-usage-rights-template');
        var stepFormatChangeTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-step-format-change-template');
        var optionTemplate = TemplateHelper.Find('#download-additional-steps-required-popup-option-template');

        var groupedSteps = viewModel.getGroupedSteps();

        return _.map(groupTemplates, function (groupTemplate, groupName) {
            var steps = groupedSteps[groupName];
            if (steps == null) return '';

            return TemplateHelper.Render(groupTemplate, {
                count: _.size(steps),
                steps: TemplateHelper.RenderMany(stepTemplate, _.map(steps, function (x) {
                    return {
                        assetGuid: x.assetData.guid,
                        smallThumbnailUrl: x.assetData.smallThumbnailUrl,
                        title: x.assetData.title,
                        usageRights: x.checkIfUsageRightsAreAccepted() == false ? TemplateHelper.Render(stepUsageRightsTemplate, {
                            guid: x.assetData.guid,
                            usageRightsDetails: x.assetData.usageRightsDetails
                        }) : '',
                        formatChange: x.checkIfFormatExists() == false ? TemplateHelper.Render(stepFormatChangeTemplate, {
                            options: TemplateHelper.RenderMany(optionTemplate, _.map(x.childAssets, function (y) {
                                return {
                                    guid: x.assetData.guid,
                                    format: y.format,
                                    name: y.AssetDisplayName,
                                    size: DownloadHelper.BytesToSize(y.assetFileSizeInBytes)
                                };
                            })),
                            unavaliableVideoFormat: $('#download-format-options-popup').find('input[name=format]:radio:checked').parent().find("label").text()
                        }) : ''
                    };
                }))
            });
        }).join('');
    };

    var setupEvents = function () {
        $popup.off('click', '.cancel');
        $popup.on('click', '.cancel', function () {
            $popup.closePopup();
        });

        $popup.off('click', '.continue');
        $popup.on('click', '.continue', function () {
            if (viewModel.checkIfCanContinueDownload()) {
                $popup.closePopup();
                startDownload();
            } else {
                $popup.addClass('invalid');
                var $wrapper = $popup.find('.steps-wrapper');
                $wrapper.scrollTop($wrapper[0].scrollHeight);
            }
        });

        $steps.on('change', '.step', function () {
            var $step = $(this);
            var stepViewModel = $step.data('viewModel');
            var stepCanContinueDownload = stepViewModel.checkIfCanContinueDownload();
            $step.toggleClass('checked', stepCanContinueDownload).toggleClass('exclamation', !stepCanContinueDownload);

            $popup.toggleClass('invalid', !viewModel.checkIfCanContinueDownload());
        });

        $steps.on('change', '.step .usage-rights input:checkbox', function () {
            var areUsageRightsAccepted = this.checked;
            var stepViewModel = $(this).closest('.step').data('viewModel');
            stepViewModel.areUsageRightsAccepted = areUsageRightsAccepted;
        });

        $steps.on('change', '.step .format-change form input:radio', function () {
            var selectedVideoFormat = $(this).data('childAssetFormat');
            var stepViewModel = $(this).closest('.step').data('viewModel');
            stepViewModel.selectedVideoFormat = selectedVideoFormat;
        });

        $steps.on('click', '.step .remove-asset, .step .add-asset-back', function () {
            var isRemoved = $(this).data('isRemoved');

            var $step = $(this).closest('.step');
            $step.find('input').prop('disabled', isRemoved);
            $step.toggleClass('removed', isRemoved);

            var stepViewModel = $step.data('viewModel');
            stepViewModel.isRemoved = isRemoved;

            $popup.toggleClass('invalid', !viewModel.checkIfCanContinueDownload());
        });
    };


    var Parameters = {
        DirectDownloadEnabled: McConfig.IsDirectDownloadEnabled,
        DirectDownloadUrl: $('input[name="MediaCart.DirectDownloadAssetUrl"]').val(),
        isDownloadAll: true,
        downloadAllAssetType: downloadAllAssetTypeId,
        contentType: ismediacartPage > 0 ? 3 : 2,
        contentGUIDs: storyGuid != null ? storyGuid : assetGuids.toString(),
        formatID: 0,
        AssetLogDownloadUrl: $('input[name="MediaCart.LogDownloadAssetUrl"]').val(),
        assetDownloadData: null,
        company: options.userData != null ? options.userData.company : "",
        country: options.userData != null ? options.userData.country : "",
        email_Id: options.userData != null ? options.userData.email : "",
        first_Name: options.userData != null ? options.userData.name : "",
        title: options.userData != null ? options.userData.title : "",
        user_Type: options.userData != null ? options.userData.userType : "",
        session_ID: LogRegHelper.GetTempToken(),
        payload:payloads
    };

    var startDownload = function () {
        if (McConfig.IsDirectDownloadEnabled == 'TRUE') {
            directDownloadHelper.GetAssetDataObject(Parameters);
        }
        else {
            DownloadHelper.OpenDownloadWindow();
            if (viewModel.checkIfVideoMode()) {
                DownloadHelper.EnqueueChildAssets(viewModel.getChildAssetsForDownload(), options.userData);
            } else {
                DownloadHelper.RequestChildAssetsForAllAssets(assetsData, function (retrievedChildAssetsForAllAssets) {
                    options.childAssetsForAllAssets = retrievedChildAssetsForAllAssets;
                    updateViewModelStepsWithChildAssets();
                    DownloadHelper.EnqueueChildAssets(viewModel.getChildAssetsForDownload(), options.userData);
                });
            }
        }
    };

    
    var updateViewModelStepsWithChildAssets = function () {
        _.each(options.childAssetsForAllAssets, function (x) {
            var step = _.find(viewModel.steps, function (y) { return x.assetData == y.assetData; });
            step.childAssets = x.childAssets;
        });
    };

    //function showAssetQualityPopup() {
    //    var $popupMessage = $('#download-all-message-popup');
    //    $popupMessage.openPopup({
    //        absolute: true
    //    });
    //    McConfig.FormatChangedMessage = McConfig.FormatChangedMessage.replace('{0}', options.defaultVideoFormat.toUpperCase())
    //    $popupMessage.find("#divMessage").html(McConfig.FormatChangedMessage);

    //    $popupMessage.find(".mc-download-all").show();
    //    $popupMessage.find(".btn-cancel").hide();
    //}

    

    $('#download-all-message-popup .btn-cancel').click(function () {
        $('#download-all-message-popup').closePopup();
    })

    $(document).on('click', '#download-all-message-popup .btn-download', function () {
        directDownloadHelper.SubmitFormToStartDownload();
    })
};;
function MultipleAssetsDownloadFormatOptionsPopupViewModel(assetsData, storyGuid, options) {
    var cookieName = 'download-format-options';
    var $popup = $('#download-format-options-popup');
    var $downloadrestrictpopup = $('#download-restrictions-popup');

    var viewModel;    

    this.Start = function () {
        initializeOptions();
        viewModel = createViewModel();

        if (viewModel.checkIfVideoMode() && McConfig.IsDirectDownloadEnabled != 'TRUE') {
            DownloadHelper.RequestChildAssetsForAllAssets(assetsData, function (childAssetsForAllAssets) {
                viewModel.childAssetsForAllAssets = childAssetsForAllAssets;
                renderPopup();
            });
        } else {
            proceedWithDownload();
        }
    };

    var initializeOptions = function () {
        options = options || {};
        options.userData = options.userData || null;
    };

    var createViewModel = function () {
        var savedFormatData = JSON.parse($.cookie(cookieName));

        return {
            childAssetsForAllAssets: null,
            format: savedFormatData != null ? savedFormatData.format : 'ntsc',
            doRememberSettings: true,
            checkIfVideoMode: function () {
                return _.some(assetsData, function (x) { return x.isVideo; });
            },
        };
    };

    var renderPopup = function () {
        renderElements();
        setupEvents();

        $popup.openPopup();
    };

    var renderElements = function () {
        $popup.find('input[name=format]:radio[value=' + viewModel.format + ']').prop('checked', true);
        $popup.find('#download-format-options-remember').prop('checked', viewModel.doRememberSettings);
    };

    var setupEvents = function () {
        $popup.on('change', 'input[name=format]:radio', function () {
            viewModel.format = $(this).val();
        });

        $popup.on('change', '#download-format-options-remember', function () {
            viewModel.doRememberSettings = this.checked;
        });

        $popup.off('click', '.download');
        $popup.on('click', '.download', function () {
            saveViewModel();
            $popup.closePopup();
            proceedWithDownload();
        });
    };

    var saveViewModel = function () {        
        var isFunctionalCookie = JSON.parse($.cookie('optFunc'));
        isFunctionalCookie = isFunctionalCookie != null ? isFunctionalCookie : false;
        var samesitedownload = $("input:hidden[name='McConfig.FrontendSameSite']").val();
        var securedownload= $("input:hidden[name='McConfig.FrontendSecure']").val();
        if (viewModel.doRememberSettings && isFunctionalCookie) {
            //$.cookie(cookieName, JSON.stringify({ format: viewModel.format }), { path: '/' });
            document.cookie = cookieName + "=" + JSON.stringify({ format: viewModel.format }) + ";path=/;SameSite=" + samesitedownload + ";" + securedownload + ";";            
        } else {
            $.removeCookie(cookieName, { path: '/' });
        }
    };

    var proceedWithDownload = function () {
        /*TNMMCLITE - 3540*/
        if (LogRegHelper.IsDownloadFeatureGated()) {
            LogRegHelper.IsUserCurrentlyLoggedin();
            if (!usersLoginStatus) {
                LogRegHelper.Logout();
                return;
            }
        }
        var isDownloadRestrictPopupEnabled = $("#isDownloadRestrictPopupEnabled").val();
        if (isDownloadRestrictPopupEnabled != null && isDownloadRestrictPopupEnabled != 'undefined' && isDownloadRestrictPopupEnabled.toLocaleLowerCase() === "true") {
            renderDownloadRestrictPopup();
        }
        else {
            new MultipleAssetsDownloadAdditionalStepsPopupViewModel(assetsData, storyGuid, {
                defaultVideoFormat: viewModel.format,
                childAssetsForAllAssets: viewModel.childAssetsForAllAssets,
                userData: options.userData
            }).Start();

        }
    };


    var renderDownloadRestrictPopup = function () {
        $.amp.popupOpening();

        renderDownloadRestrictionPopupDetails();
        renderDownloadRestrictAgreeLink();

        $downloadrestrictpopup.openPopup({
            closed: function (popupZIndex) {
                //$downloadrestrictpopup.popupClosing(popupZIndex);
                $.amp.popupClosing(popupZIndex);
            }
        });
    };

    var renderDownloadRestrictAgreeLink = function () {
        var $link = $downloadrestrictpopup.children('.agree-link');
        $link.off('click');
        $link.on('click', function () {
            $downloadrestrictpopup.closePopup();
            new MultipleAssetsDownloadAdditionalStepsPopupViewModel(assetsData, storyGuid, {
                defaultVideoFormat: viewModel.format,
                childAssetsForAllAssets: viewModel.childAssetsForAllAssets,
                userData: options.userData,
            }).Start();
        });
    };

    var renderDownloadRestrictionPopupDetails = function () {
        $downloadrestrictpopup.children('.usage-rights-details').text($("#DownloadRestrictionPopupMessage").val());
    };
};;
function MultipleAssetsDownloadViewModel(serverAssetsData, storyGuid) {
    var viewModel;

    this.Start = function() {
        viewModel = createViewModel();
        var totalMaxFileSize = 0;
        $.each(viewModel.assetsData, function (index, value) {
            totalMaxFileSize = totalMaxFileSize + viewModel.assetsData[index].maxFileSize;
        });

        if (viewModel.checkIfShouldPreventDownload()) return;
        if (McConfig.IsDirectDownloadEnabled == "TRUE" && totalMaxFileSize > McConfig.TotalAssestsMaxSizeinKB) {
            filesizeExceeedsPopup();
            return false;
        }
        new MultipleAssetsTellUsAboutYouPopupViewModel(viewModel.assetsData,storyGuid).Start();
    };

    function formatBytes(bytes) {
         return (bytes / 1073741824).toFixed(0);
    };

    var createViewModel = function () {
        return {
            assetsData: _.map(serverAssetsData, function (x) { return DownloadHelper.CreateAssetData(x); }),
            checkIfShouldPreventDownload: function() {
                return _.some(this.assetsData, function(x) { return x.status == "PendingClientApproval"; });
            },
        };
    };

    var filesizeExceeedsPopup = function () {
        var $popupMessage = $('#download-all-message-popup');
        $popupMessage.openPopup({
            absolute: true
        });
        $popupMessage.find("#divMessage").html(McConfig.FileSizeExceedMessage.replace("{0}", formatBytes(McConfig.TotalAssestsMaxSizeinKB)));

        $popupMessage.find(".mc-download-all").hide();
        $popupMessage.find(".btn-cancel").show();
    };
};;
function MultipleAssetsTellUsAboutYouPopupViewModel(assetsData, storyGuid) {
    var $popup = $('#multiple-assets-download-tell-us-about-you-popup');
    var viewModel;

    this.Start = function () {
        viewModel = createViewModel();
        $popup.find('#AgreeForPrivacyNotice').prop('checked', false);
        $popup.find(".agree-note").removeClass('error');

        if (LogRegHelper.IsDownloadFeatureGated()) {
            LogRegHelper.CheckUserLogin('Download_MultipleAssets', assetsData, storyGuid);
        }
        else if (viewModel.checkIfShouldShowPopup()) {
            if (LogRegHelper.IsLogregEnabled()) {
                LogRegHelper.IsUserCurrentlyLoggedin();
                if (!usersLoginStatus) {
                    renderPopup();
                }
                else {
                    new MultipleAssetsDownloadFormatOptionsPopupViewModel(assetsData, storyGuid).Start();
                }
            }
            else {
                renderPopup();
            }
        }
        else {
            new MultipleAssetsDownloadFormatOptionsPopupViewModel(assetsData,storyGuid).Start();
        }
    };

    var createViewModel = function() {
        return {
            checkIfVideoMode: function() {
                return _.some(assetsData, function(x) { return x.isVideo; });
            },
            checkIfShouldShowPopup: function() {
                return McConfig.TellUsAboutYouMode == 'Enabled' || (this.checkIfVideoMode() && McConfig.TellUsAboutYouMode == 'VideosOnly');
            },
            tellUsAboutYouViewModel: new TellUsAboutYouViewModel($popup)
        };
    };

    var renderPopup = function () {
        if (McConfig.HideFieldsPanel == 'False') {
            viewModel.tellUsAboutYouViewModel.Render();
            setupEvents();

            $popup.openPopup({
                closed: function () {
                    viewModel.tellUsAboutYouViewModel.ForgetUserData();
                }
            });
        }
        else {
            proceedWithDownload();
        }
    };

    var setupEvents = function () {
        $popup.find('a.button.download').off('click');
        $popup.find('a.button.download').on('click', function () {
            var isAgreeChecked = $popup.find("#AgreeForPrivacyNotice").prop('checked');
            if (!isAgreeChecked) {
                $(".agree-checkbox").find(".agree-note").addClass('error');
            }
            else {
                $(".agree-checkbox").find(".agree-note").removeClass('error');
            }

            if (viewModel.tellUsAboutYouViewModel.IsValid() && isAgreeChecked) {
                viewModel.tellUsAboutYouViewModel.RememberUserData();
                $popup.closePopup();
                proceedWithDownload();
            } else {
                viewModel.tellUsAboutYouViewModel.Validate();
            }
        });
    };

    var proceedWithDownload = function () {
        /*TNMMCLITE - 3540*/
        if (LogRegHelper.IsDownloadFeatureGated()) {
            LogRegHelper.IsUserCurrentlyLoggedin();
            if (!usersLoginStatus) {
                LogRegHelper.Logout();
                return;
            }
        }

        new MultipleAssetsDownloadFormatOptionsPopupViewModel(assetsData, storyGuid, {
            userData: viewModel.tellUsAboutYouViewModel.GetUserData(),
        }).Start();
    };

    $popup.find('#AgreeForPrivacyNotice').on('click', function () {
        var isChecked = $popup.find("#AgreeForPrivacyNotice").prop('checked');
        if (!isChecked) {
            $(".agree-checkbox").find(".agree-note").addClass('error');
        }
        else {
            $(".agree-checkbox").find(".agree-note").removeClass('error');
        }
    });
};;
$(function () {
    var ampElementId = 'assetAmpHolder';
    var ampServerAssetData;
    $.amp.onAssetDataChanged(function (e, element, data) {
        ampServerAssetData = data;
    });

    $(document).amp().downloadButtons().downloadButton().on('click', function (e) {
        
        var Authentication = new Object();
        Authentication.authenticationmode = $('#' + ampElementId).data('authenticationmode');
        Authentication.authorizationmode = $('#' + ampElementId).data('authorizationmode');

        var offset = $(this).offset();

        
        if (ampServerAssetData.assetIsDownloadable == false && ampServerAssetData.assetIsDownloadable != null) {            
            var $el = $(this).find("i");
            var offset = $el.offset();
            var bottom = $el.offset().top + $el.outerHeight(true);
            var w = $(window);
            AssetNotFoundForDownload((offset.left - w.scrollLeft()), (bottom - w.scrollTop()));
        }
        else if ($(this).hasClass("disabled") == false && ampServerAssetData.assetIsDownloadable == true) {
            var serverAssetData = ampServerAssetData;
            new SingleAssetDownloadViewModel(serverAssetData, Authentication).Start();
        }
    });

    $(document).on("click", ".dev-single-asset-download", function () {
        //AS: check if download single asset function is useful here
        var Authentication = new Object();
        Authentication.authenticationmode = $('#' + ampElementId).data('authenticationmode');
        Authentication.authorizationmode = $('#' + ampElementId).data('authorizationmode');

        var offset = $(this).offset();
        if (ampServerAssetData.assetIsdownloadable.toLowerCase() == "false" && ampServerAssetData.assetIsdownloadable != null) {
            var $el = $(this);
            var offset = $el.offset();
            var bottom = $el.offset().top + $el.outerHeight(true);
            var w = $(window);
            AssetNotFoundForDownload((offset.left - w.scrollLeft()), (bottom - w.scrollTop()));
        }
        else if ($(this).hasClass("disabled") == false && ampServerAssetData.assetIsdownloadable.toLowerCase() == "true") {
            var serverAssetData = ampServerAssetData;
            new SingleAssetDownloadViewModel(serverAssetData, Authentication).Start();
        }
    });

    $('.images-videos-items .img-item, .hidden-media-items .img-item').find('.download-icon a span, .tablet-hover-icons a.download').on('click', function (e) {
        downloadSingleAsset(this,e); //AMPUP ;check taht there is no regression of thsi change on single download in other places
    });   
});
function downloadSingleAsset(element,event) {
    var ulel = $(element).closest('ul');
    var Authentication = new Object();
    Authentication.authenticationmode = $(ulel).data('authenticationmode');
    Authentication.authorizationmode = $(ulel).data('authorizationmode');

    var offset = $(element).offset();
    var bottom = $(element).offset().top + $(element).outerHeight(true);

    //Disabling clicks on thumb image icon for touch devices
    if (McConfig.IsDefaultAmp == "true") {
        if (Modernizr.touch && !$(event.target).parents('.tablet-hover-icons').length && !$('html').hasClass('desktop-1')) {
            return;
        }
    }
    event.stopPropagation();

    var serverAssetData = $(element).imgItemClosest().serverAssetData();

    var assetData = null;
    if (serverAssetData.assetIsdownloadable.toLowerCase() === "true") {
        new SingleAssetDownloadViewModel(serverAssetData, Authentication).Start();
    }
    else {
        var w = $(window);
        var checkHeroAsset = $(element).parents('.story-asset-downloaddiv').hasClass('typecenter');
        AssetNotFoundForDownload((offset.left - w.scrollLeft()), (bottom - w.scrollTop()), checkHeroAsset, $(element));
    }
};
function SingleAssetDownloadPopupViewModel(assetData) {
    var $popup = $('#single-asset-download-popup');
    var viewModel;

    this.Start = function () {
        viewModel = getInitialViewModel();

        if (viewModel.shouldShowPopup) {
            
            DownloadHelper.RequestChildAssetsForAsset(assetData, function (retrievedChildAssets) {
                viewModel.childAssets = retrievedChildAssets;
                renderPopup();
            });
        } else {
            proceedWithDownload();
        }
    };

    var getInitialViewModel = function () {
        return {
            shouldShowPopup: assetData.isVideo || (assetData.isImage && McConfig.ImageWebQualityEnabled),
            childAssets: null,
            childAssetIndex: 0,
            selectedAssetFormat: '12'
        };
    };

    var renderPopup = function () {
        $.amp.popupOpening();

        renderIdTitle();
        renderImage();
        renderOptions();

        $popup.openPopup({
            closed: function (popupZIndex) {
                $.amp.popupClosing(popupZIndex);
            }
        });
    };

    var renderIdTitle = function () {
        var template = TemplateHelper.Find('#single-asset-download-popup-id-title-template');
        var html = TemplateHelper.Render(template, {
            id: assetData.assetId,
            title: assetData.title,
            format: assetData.assetFileType
        });
        $popup.find('.id-title').html(html);
    };

    var renderImage = function () {
        $popup.find('img').attr({
            src: assetData.smallThumbnailUrl,
            alt: assetData.title
        });
    };

    var renderOptions = function () {
        var $options = $popup.find('.options');
        $options.html(buildOptionsHtml());
        $options.find('a').on('click', function () {
            viewModel.childAssetIndex = $(this).data('index');
            viewModel.selectedAssetFormat = McConfig.GetFileTypeID($(this).data('format').toString());
            $popup.closePopup();
            proceedWithDownload();
        });
    };

    var buildOptionsHtml = function () {
        var childAssetsByQuality = _.groupBy(viewModel.childAssets, function (x) {
            if (assetData.isImage) {
                if (McConfig.ImageWebQualityEnabled && x.linkGroup == "web") {
                    return 'web';
                }
                else
                    return 'print';
            }
            else if (x.quality == 'hd') {
                return 'broadcast';
            }
            else if (x.quality == 'kaltura') {
                return 'kaltura';
            }
            else {
                return x.quality;
            }
        });

        var liTemplate = TemplateHelper.Find('#single-asset-download-popup-li-template');
        var groupTemplates = {
            broadcast: TemplateHelper.Find('#single-asset-download-popup-broadcast-template'),
            streaming: TemplateHelper.Find('#single-asset-download-popup-streaming-template'),
            print: TemplateHelper.Find('#single-asset-download-popup-print-template'),
            web: TemplateHelper.Find('#single-asset-download-popup-web-quality-template'),
            kaltura: TemplateHelper.Find('#single-asset-tell-us-about-you-popup-kaltura-quality-template')
        };

        return _.map(groupTemplates, function (groupTemplate, groupName) {
            var groupChildAssets = childAssetsByQuality[groupName];
            if (groupChildAssets == null) return '';

            return TemplateHelper.Render(groupTemplate, {
                items: TemplateHelper.RenderMany(liTemplate, _.map(groupChildAssets, function (x) {
                    return {
                        index: _.indexOf(viewModel.childAssets, x),
                        type: DownloadHelper.GetDisplayName(x),
                        size: DownloadHelper.BytesToSize(x.assetFileSizeInBytes),
                        format: GetFormatValue(x)
                    };
                }))
            });
        }).join('');
    };


    var GetFormatValue = function (asset) {
        if (McConfig.ImageWebQualityEnabled && asset.assetTypeId == 3) {
            return asset.linkGroup;
        }
        else return asset.assetFileType;
    };
    var proceedWithDownload = function () {
        /*TNMMCLITE - 3540*/
        if (LogRegHelper.IsDownloadFeatureGated()) {
            LogRegHelper.IsUserCurrentlyLoggedin();
            if (!usersLoginStatus) {
                LogRegHelper.Logout();
                return;
            }
        }

        var cookieUserData = JSON.parse($.cookie("tell-us-about-you-data"));
        var options = {
            childAssetIndex: viewModel.childAssetIndex,
            userData: cookieUserData,
            format:viewModel.selectedAssetFormat
        };

        new SingleAssetDownloadUsageRightsPopupViewModel(assetData, options).Start();
    };
};;
function SingleAssetDownloadUsageRightsPopupViewModel(assetData, options) {
    var $popup = $('#asset-download-usage-restrictions-popup');
    var $downloadrestrictpopup = $('#download-restrictions-popup');
    var locale = UserSession.Locale;
    var sectionId = UserSession.SectionId;
    var categoryId = UserSession.CategoryId;
    var storyGuid = $('#AmpStoryGuid').val();
    var ismediacartPage = $('#mediacartPage').length;

    this.GetVideoFormat = function () {
        if (McConfig.IsDirectDownloadEnabled == 'TRUE') {
            if (options.format != null) {
                return options.format;
            }
            else {
                if (assetData.isVideo) {
                    DownloadHelper.RequestChildAssetsForAsset(assetData, function (retrievedChildAssets) {
                        if (retrievedChildAssets.length > 0) {
                            return McConfig.GetFileTypeID(retrievedChildAssets[0].assetFileType);
                        }
                    });
                }
            }
        }
        else {
            return McConfig.DefaultVideoFormat;
        }
    };

    var assetGuids = "";
    var payloads = "";
    if (McConfig.IsDirectDownloadEnabled == 'TRUE') {

        var sessionid = LogRegHelper.GetTempToken();
        var website = '';
        if (options != null && options.userData != null) {
            website = options.userData.website;
        }

        var payload = {
            'AssetGuid': assetData.guid,
            'culture': locale,
            'sectionCatid': sectionId,
            'catid': categoryId,
            'storyGuid': storyGuid,
            'website': website
        };

        if (sessionid != '') {
            payload.sessionid = sessionid;
        }
        var payloadJson = JSON.stringify(payload);

        payloads = payloads + payloadJson + ",";
    }


    this.Start = function () {
        var isDownloadRestrictionPopupEnabled = $("#isDownloadRestrictPopupEnabled").val();

        if (isDownloadRestrictionPopupEnabled && isDownloadRestrictionPopupEnabled.toLowerCase() === "true") {
            renderDownloadRestrictPopup();
        }
        else {
            if (assetData.isApplyUsageRights) {
                renderPopup();
            } else {
                startDownload();
            }
        }

    };

    var renderDownloadRestrictPopup = function () {
        $.amp.popupOpening();

        renderDownloadRestrictionPopupDetails();
        renderDownloadRestrictAgreeLink();

        $downloadrestrictpopup.openPopup({
            closed: function (popupZIndex) {
                $.amp.popupClosing(popupZIndex);
            }
        });
    };

    var renderDownloadRestrictAgreeLink = function () {
        var $link = $downloadrestrictpopup.children('.agree-link');
        $link.off('click');
        $link.on('click', function () {

            $downloadrestrictpopup.closePopup();
            if (assetData.isApplyUsageRights) {
                renderPopup();
            }
            else {
                startDownload();
            }
        });
    };

    var renderDownloadRestrictionPopupDetails = function () {
        $downloadrestrictpopup.children('.usage-rights-details').text($("#DownloadRestrictionPopupMessage").val());
    };

    var renderPopup = function () {
        $.amp.popupOpening();

        renderDetails();
        renderAgreeLink();

        $popup.openPopup({
            closed: function (popupZIndex) {
                $.amp.popupClosing(popupZIndex);
            }
        });
    };

    var renderDetails = function () {
        $popup.children('.usage-rights-details').text(assetData.usageRightsDetails);
    };





    var renderAgreeLink = function () {
        var $link = $popup.children('.agree-link');
        $link.off('click');
        $link.on('click', function () {

            $popup.closePopup();
            startDownload();
        });
    };

    var Parameters = {
        DirectDownloadEnabled: McConfig.IsDirectDownloadEnabled,
        DirectDownloadUrl: $('input[name="MediaCart.DirectDownloadAssetUrl"]').val(),
        AssetLogDownloadUrl: $('input[name="MediaCart.LogDownloadAssetUrl"]').val(),
        assetDownloadData: null,
        isDownloadAll: false,
        downloadAllAssetType: 0,
        contentType: ismediacartPage > 0 ? 3 : 1,
        contentGUIDs: assetData.guid,
        formatID: this.GetVideoFormat(),
        company: options.userData != null ? options.userData.company : "",
        country: options.userData != null ? options.userData.country : "",
        email_Id: options.userData != null ? options.userData.email : "",
        first_Name: options.userData != null ? options.userData.name : "",
        title: options.userData != null ? options.userData.title : "",
        user_Type: options.userData != null ? options.userData.userType : "",
        session_ID: LogRegHelper.GetTempToken(),
        payload: payloads,
        kalturamediaid: assetData.kalturamediaid,
        kalturamediaflavors: assetData.kalturamediaflavors,
        selectedflavor: options.format
    };

    var startDownload = function () {
        if (McConfig.IsDirectDownloadEnabled == 'TRUE') {
            directDownloadHelper.GetAssetDataObject(Parameters);
        }
        else {
            DownloadHelper.OpenDownloadWindow();
            DownloadHelper.RequestChildAssetsForAsset(assetData, function (childAssets) {
                DownloadHelper.EnqueueChildAsset(childAssets[options.childAssetIndex], options.userData);
            });
        }
    };
};
function SingleAssetDownloadViewModel(serverAssetData, Authentication) {
    this.Start = function () {
        
        var assetData = DownloadHelper.CreateAssetData(serverAssetData);

        var shouldPreventDownload = assetData.status == "PendingClientApproval";
        if (shouldPreventDownload) return;

        new SingleAssetTellUsAboutYouPopupViewModel(assetData, Authentication).Start();
    };
};;
function SingleAssetTellUsAboutYouPopupViewModel(assetData, Authentication) {
    var $popup = $('#asset-download-tell-us-about-you-popup');
    var viewModel;

    this.Start = function () {
        viewModel = createViewModel();
        $popup.find('#AgreeForPrivacyNotice').prop('checked', false);

        //if download gated is applyed for individual category
        if (isDownloadGeated(Authentication)) {
            LogRegHelper.CheckUserLogin('Download_SingleAsset', assetData);
        }
        //if download is gated
        else if (LogRegHelper.IsDownloadFeatureGated()) {
            LogRegHelper.CheckUserLogin('Download_SingleAsset', assetData);
        }
        else if (viewModel.checkIfShouldShowPopup()) {
            if (LogRegHelper.IsLogregEnabled()) {
                LogRegHelper.IsUserCurrentlyLoggedin();
                if (!usersLoginStatus) {
                    DownloadHelper.RequestChildAssetsForAsset(assetData, function (retrievedChildAssets) {
                        viewModel.childAssets = retrievedChildAssets;
                        renderPopup();
                    });
                }
                else {
                    new SingleAssetDownloadPopupViewModel(assetData).Start();
                }
            }
            else {
                DownloadHelper.RequestChildAssetsForAsset(assetData, function (retrievedChildAssets) {
                    viewModel.childAssets = retrievedChildAssets;
                    renderPopup();
                });
            }
        }
        else {
            new SingleAssetDownloadPopupViewModel(assetData).Start();
        }
    };

    var isDownloadGeated = function (Authentication) {
        if (McConfig.IsLogregEnabled.toLowerCase() == 'true' && Authentication.authenticationmode != undefined && Authentication.authenticationmode.toLowerCase() == 'downloadgeated') {
            return true;
        }
        return false;
    }

    var createViewModel = function () {
        return {
            childAssets: null,
            childAssetIndex: 0,
            selectedAssetFormat: '12',
            checkIfShouldShowPopup: function () {
                return McConfig.TellUsAboutYouMode == 'Enabled' || (assetData.isVideo && McConfig.TellUsAboutYouMode == 'VideosOnly');
            },
            tellUsAboutYouViewModel: new TellUsAboutYouViewModel($popup)
        };
    };

    var renderPopup = function () {
        var $popup = $('#asset-download-tell-us-about-you-popup');
        viewModel.tellUsAboutYouViewModel.Render();
        renderOptions();
        setupEvents();

        if (!McConfig.HideFieldsPanel) {
            /*TNMMCLite-49 start*/
            $('.popup.two-wide.invalid .row .popup-content-wrapper .download-links-wrapper .validation-popover').fadeIn();
            setTimeout(function () {
                $('.popup.two-wide.invalid .row .popup-content-wrapper .download-links-wrapper .validation-popover').fadeOut();
            }, 2000);
            /*TNMMCLite-49 end*/
        }

        $popup.openPopup({
            absolute: window.device == 'tablet',
            closed: function () {
                viewModel.tellUsAboutYouViewModel.ForgetUserData();
            }
        });
    };

    var renderOptions = function () {
        var $options = $popup.find('.options');
        $options.html(buildOptionsHtml());
    };

    var buildOptionsHtml = function () {

        var childAssetsByQuality = _.groupBy(viewModel.childAssets, function (x) {
            if (assetData.isImage) {
                if (McConfig.ImageWebQualityEnabled && x.linkGroup == "web") {
                    return 'web';
                }
                else
                    return 'print';
            }
            else if (x.quality === 'hd') {
                return 'broadcast';
            }
            else if (x.quality === 'kaltura') {
                return 'kaltura';
            }
            else {
                return x.quality;
            }
        });

        var liTemplate = TemplateHelper.Find('#single-asset-tell-us-about-you-popup-option-item-template');
        var groupTemplates = {
            broadcast: TemplateHelper.Find('#single-asset-tell-us-about-you-popup-broadcast-template'),
            streaming: TemplateHelper.Find('#single-asset-tell-us-about-you-popup-streaming-template'),            
            print: TemplateHelper.Find('#single-asset-tell-us-about-you-popup-print-template'),
            web: TemplateHelper.Find('#single-asset-tell-us-about-you-popup-web-quality-template'),
            kaltura: TemplateHelper.Find('#single-asset-tell-us-about-you-popup-kaltura-quality-template')
        };

        return _.map(groupTemplates, function (groupTemplate, groupName) {
            var groupChildAssets = childAssetsByQuality[groupName];
            if (groupChildAssets == null) return '';

            return TemplateHelper.Render(groupTemplate, {
                items: TemplateHelper.RenderMany(liTemplate, _.map(groupChildAssets, function (x) {
                    return {
                        index: _.indexOf(viewModel.childAssets, x),
                        //type: x.AssetDisplayName,
                        type: DownloadHelper.GetDisplayName(x),
                        size: DownloadHelper.BytesToSize(x.assetFileSizeInBytes),
                        format: GetFormatValue(x)
                    };
                }))
            });
        }).join('');
    };

    var GetFormatValue = function (asset) {
        if (McConfig.ImageWebQualityEnabled && asset.assetTypeId == 3) {
            return asset.linkGroup;
        }
        else return asset.assetFileType;
    };
    var setupEvents = function () {
        $popup.find('.options a').on('click', function () {         
            var $popup = $('#asset-download-tell-us-about-you-popup');
            viewModel.selectedAssetFormat = McConfig.GetFileTypeID($(this).data('format').toString());
            viewModel.childAssetIndex = $(this).data('index');
            viewModel.tellUsAboutYouViewModel.RememberUserData();
            /*TNMMClite-23*/
            $("#single-assets-tell-us-about-you-name").focusout();
            $("#single-assets-tell-us-about-you-email").focusout();
            $("#single-assets-tell-us-about-you-country").focusout();
            $("#single-assets-tell-us-about-you-company").focusout();
            $("#single-assets-tell-us-about-you-title").focusout();
            $("#single-assets-tell-us-about-you-website").focusout();

            // Focus to invalid input
            if ($($("#single-assets-tell-us-about-you-name").parent()).hasClass('invalid')) {
                $("#single-assets-tell-us-about-you-name").focus();
            }
            else if ($($("#single-assets-tell-us-about-you-email").parent()).hasClass('invalid')) {
                $("#single-assets-tell-us-about-you-email").focus();
            }
            else if ($($("#single-assets-tell-us-about-you-country").parent()).hasClass('invalid')) {
                $("#single-assets-tell-us-about-you-country").focus();
            }
            if ($($("#single-assets-tell-us-about-you-company").parent()).hasClass('invalid')) {
                if (($($("#single-assets-tell-us-about-you-company").parent()).css('display') == 'block')) {
                    $("#single-assets-tell-us-about-you-company").focus();
                }
                else {
                    $($("#single-assets-tell-us-about-you-company").parent()).removeClass('invalid');
                }
            }
            if ($($("#single-assets-tell-us-about-you-title").parent()).hasClass('invalid')) {
                if (($($("#single-assets-tell-us-about-you-title").parent()).css('display') == 'block')) {
                    $("#single-assets-tell-us-about-you-title").focus();
                }
                else {
                    $($("#single-assets-tell-us-about-you-title").parent()).removeClass('invalid');
                }
            }
            if ($($("#single-assets-tell-us-about-you-website").parent()).hasClass('invalid')) {
                if (($($("#single-assets-tell-us-about-you-website").parent()).css('display') == 'block')) {
                    $("#single-assets-tell-us-about-you-website").focus();
                }
                else {
                    $($("#single-assets-tell-us-about-you-website").parent()).removeClass('invalid');
                }
            }

            var isAgreeChecked = $popup.find('#AgreeForPrivacyNotice').prop('checked');
            if (!isAgreeChecked) {
                $('.agree-note').addClass('error');
                $popup.find("#AgreeForPrivacyNotice").parent().addClass('invalid');
            }
            else {
                $('.agree-note').removeClass('error');
                $popup.find("#AgreeForPrivacyNotice").parent().removeClass('invalid');
            }

            var $isInvalid = $($('.tell-us-form').find('div.invalid')).html();
            if ($isInvalid != undefined) {
                $('.validation-popover').fadeIn();
                setTimeout(function () {
                    $('.validation-popover').fadeOut();
                }, 2000);
                return;
            }

            $popup.closePopup();            
            proceedWithDownload();
        });
    };

    var proceedWithDownload = function () {
        /*TNMMCLITE - 3540*/
        if (LogRegHelper.IsDownloadFeatureGated()) {
            LogRegHelper.IsUserCurrentlyLoggedin();
            if (!usersLoginStatus) {
                LogRegHelper.Logout();
                return;
            }
        }

        var options = {
            format: viewModel.selectedAssetFormat,
            childAssetIndex: viewModel.childAssetIndex,
            userData: viewModel.tellUsAboutYouViewModel.GetUserData(),
        };

        if ((McConfig.TellUsAboutYouMode == 'Enabled' || (assetData.isVideo && McConfig.TellUsAboutYouMode == 'VideosOnly')) && (McConfig.HideFieldsPanel == 'False')) {
            var json = JSON.parse(McConfig.TellUsAboutyouFields);

            for (var i = 0; i < json.length; i++) {

                switch (json[i].Type.toString().toLowerCase()) {
                    case "name":
                        if (json[i].Visible.toString().toLowerCase() == "true" && $("#single-assets-tell-us-about-you-name").length == 0) {
                            return false;
                        }
                        break;
                    case "email":
                        if (json[i].Visible.toString().toLowerCase() == "true" && $("#single-assets-tell-us-about-you-email").length == 0) {
                            return false;
                        }
                        break;
                    case "country":
                        if (json[i].Visible.toString().toLowerCase() == "true" && $("#single-assets-tell-us-about-you-country").length == 0) {
                            return false;
                        }
                        break;
                    case "company":
                        if (json[i].Visible.toString().toLowerCase() == "true" && $("#single-assets-tell-us-about-you-company").length == 0) {
                            return false;
                        }
                        break;
                    case "title":
                        if (json[i].Visible.toString().toLowerCase() == "true" && $("#single-assets-tell-us-about-you-title").length == 0) {
                            return false;
                        }
                        break;
                    case "website":
                        if (json[i].Visible.toString().toLowerCase() == "true" && $("#single-assets-tell-us-about-you-website").length == 0) {
                            return false;
                        }
                        break;
                    case "whoareyou":
                        if (json[i].Visible.toString().toLowerCase() == "true" && $("#single-assets-tell-us-about-you-who-are-you").length == 0) {
                            return false;
                        }
                        break;
                }
            }
        }
        
        new SingleAssetDownloadUsageRightsPopupViewModel(assetData, options).Start();
    };

    $popup.find('#AgreeForPrivacyNotice').on('click', function () {

        var $popup = $('#asset-download-tell-us-about-you-popup');
        var isChecked = $popup.find("#AgreeForPrivacyNotice").prop('checked');
        if (!isChecked) {
            $(".agree-checkbox").find(".agree-note").addClass('error');
        }
        else {
            $(".agree-checkbox").find(".agree-note").removeClass('error');
        }
    });

};;
$(function () {
    var baseAssetData;
    var detailHeaderHeight = 0;
    if ($('.detail-header').length > 0) {
        detailHeaderHeight = parseInt($('.detail-header').offset().top);
    }
    var deviceTypeScroll = $('html').css('font-family').replace(new RegExp('"', 'g'), '');
    if (deviceTypeScroll != 'mobile' && $('.cookie-disclaimer-shown').length == 0) {
        (function () {

            var offsetFromTop = (window.innerHeight / 2) - $('.social-bar').height() + 30; // number of pixels of the widget should be from top of the window
            var updateFrequency = 50; //milisecond. The smaller the value, smooth the animation.
            var chaseFactor = 0.5; // the closing-in factor. Smaller makes it smoother.
            var yMoveTo = 0;
            var yDiff = 0;

            var movingWidget = $('.social-bar');

            function ff() {
                // compute the distance user has scrolled the window
                yDiff = (navigator.appName === "Microsoft Internet Explorer") ? (yMoveTo - document.documentElement.scrollTop) : (yMoveTo - window.pageYOffset);
                if (Math.abs(yDiff) > 9) {

                    // turn off now, prevent the event repeatedly fired when user scroll repeatedly
                    if (window.removeEventListener) {
                        window.removeEventListener("scroll", ff);
                    }
                    else {
                        window.detachEvent("onscroll", ff);
                    }

                    yMoveTo -= yDiff * chaseFactor;
                    if ((yMoveTo + offsetFromTop) > detailHeaderHeight) {
                        //  movingWidget.style.top = (yMoveTo + offsetFromTop).toString() + "px";
                        movingWidget.offset({ top: yMoveTo + offsetFromTop });
                    }
                    else { movingWidget.offset({ top: detailHeaderHeight }); }

                    setTimeout(ff, updateFrequency); // calls itself again
                } else {
                    if (window.addEventListener) {
                        window.addEventListener("scroll", ff, false);
                    }
                    else {
                        attachEvent("onscroll", ff);
                    }// turn back on
                }
            }

            window.addEventListener("scroll", ff, false);

        })();
    }   
   
    if ($('body').hasClass('devAcceptToShare')) {
        $('.social-bar a').on('click', ShowAcceptPopup);
        $('.addthis-button').on('click', ShowAcceptPopup);
    }
    else {
        $('.social-bar a').on('click', AddThisHelper.UpdateWindowShareData);
    }
    function ShowAcceptPopup() {
        $("#accept-cookies-to-share-popup").openPopup();
    }
    var $addThisElements = $('.addthis_toolbox');
    var $addThisElementsWithoutEvents;

    $.amp.onAssetDataChanged(function (e, element, data) {
        baseAssetData = data;
        if (baseAssetData.assetStatus == "PendingClientApproval") {
            e.preventDefault();
            e.stopPropagation();

            if ($addThisElementsWithoutEvents == undefined) {
                $addThisElementsWithoutEvents = $addThisElements.clone(false);
                $.each($addThisElementsWithoutEvents, function (i, addThisElement) {
                    $addThisElements.eq(i).closest('.share-buttons').append(addThisElement);
                });
            }

            $addThisElements.hide();
            $addThisElementsWithoutEvents.show();

            $('.addthis_button_pinterest_share, .addthis_button_email').on('click', function (event) {
                event.preventDefault();
                event.stopPropagation();
            });
        } else {
            $addThisElements.show();
            if ($addThisElementsWithoutEvents != undefined) {
                $addThisElementsWithoutEvents.hide();
            }
        }




    /*TNMMCLITE-646 and TNMMCLITE-3051 Start*/

        var deviceType = $('html').css('font-family').replace(new RegExp('"', 'g'), '');
        if (deviceType == 'mobile') {
            var $mc = element.ampBtnMediaCart().parent().not("#addAllToMediaCartEnable").not(" li.tablet")
            if (baseAssetData.assetIsAddtoMedia != null && !baseAssetData.assetIsAddtoMedia) {

                $mc.hide();
                $mc.addClass('disabled');
            } else {
                $mc.css('display', 'inline-block');
                $mc.removeClass('disabled');
            }
        }

        //if Download behavior is hidden from config
        var $dm = element.ampBtnDownloadMobile().parent();
        if (!baseAssetData.showAssetDownloadLink) {
            $dm.hide();
        } else {
            $dm.show();
        }
        //disable download button, if it is disable from DB setting
        if (baseAssetData.assetIsDownloadable != null && !baseAssetData.assetIsDownloadable) {
            $dm.addClass('disabled');
        } else {
            $dm.removeClass('disabled');
        }

        var $sm = element.ampBtnShareMobile().parent().parent();
        if (deviceType == 'mobile') {
            if (baseAssetData.assetLinksIsSharable != null && !baseAssetData.assetLinksIsSharable) {
                $sm.hide();
                $sm.addClass('disabled');
            } else {
                $sm.css('display', 'inline-block');
                $sm.removeClass('disabled');
            }
        }
        else {
            $sm.hide();
            $sm.addClass('disabled');
        }
        //if assetdata not sharable, if sharing is disable from DB setting
        if (baseAssetData.assetIsSharable != null && !baseAssetData.assetIsSharable) {
            $('#SharelinksDisable').show();
            $('#Sharelinks').hide();
            $('#htnShowShareLinks').val('false');
        }
        else {
            $('#SharelinksDisable').hide();
            $('#Sharelinks').show();
            $('#Sharelinks').css('visibility', 'visible');
            $('#htnShowShareLinks').val('true');
            if (baseAssetData.assetLinksIsSharable == false) {
                $('#Sharelinks').css('visibility', 'hidden');
            }
        }

        //show\hide share links as per Config
        //$addThisElements.find("li").each(function (i) {            
        //    $(this).show();
        //});      

        $addThisElements.find("li").each(function (i) {
            var $addThisLi = $(this);
            if ($addThisLi.hasClass("share-embed") == false) {
                if (!baseAssetData.showAssetShareLink && baseAssetData.showAssetEmbedLink == true) {
                    $addThisLi.css('display', 'none');
                    $addThisLi.find('a').addClass('disableclick');
                }
                else if (!baseAssetData.showAssetShareLink && !baseAssetData.showAssetEmbedLink) {
                    $addThisLi.css('visibility', 'hidden');
                    $addThisLi.find('a').addClass('disableclick');
                }
                else {
                    $addThisLi.removeAttr('style');
                    $addThisLi.css('visibility', 'visible');
                    $addThisLi.find('a').removeClass('disableclick');
                }
            }
            else {
                if (!baseAssetData.showAssetEmbedLink) {
                    $addThisLi.removeAttr('style');
                    $addThisLi.css('display', 'none');
                    $addThisLi.find('a').addClass('disableclick');
                }
                else {
                    $addThisLi.removeAttr('style');
                    $addThisLi.css('display', 'inline-block');
                    $addThisLi.find('a').removeClass('disableclick');
                }
            }
        });

        //disable embed links as per DB setting
        var $el = element.addThisToolbox().find('.share-embed');
        if (!baseAssetData.assetIsEmbeddable && !baseAssetData.showAssetEmbedLink) {
            $el.addClass('disabled');
            $('#hdnShowEmbed').val('false');
            $el.find('a').addClass('disableclick');
        } else if (!baseAssetData.assetIsEmbeddable) {
            $el.removeClass('disabled');
            $('#hdnShowEmbed').val('true');
            $el.find('a').removeClass('disableclick');
            $el.find('a').addClass('disabledbclick');
        }
        else {
            $el.removeClass('disabled');
            $('#hdnShowEmbed').val('true');
            $el.find('a').removeClass('disableclick');
            $el.find('a').removeClass('disabledbclick');
        }

        //Hide embed link, if asset is audio type or config behaviour is hidden        
        if (baseAssetData.assetType.toLowerCase() == 'audio' || baseAssetData.showAssetEmbedLink == false) {
            $el.removeAttr('style');
            $el.css('display', 'none');
        }


        /*TNMMCLITE-646 and TNMMCLITE-3051 End*/

        var $mi = (deviceType != 'mobile') ? element.ampBtnMoreInfo().parent() : $('.more-info-container');
        var $mc = element.ampBtnMediaCart().parent().not("#addAllToMediaCartEnable").not(" li.mobile");
        var $d = element.ampBtnDownload().parent();

        $mi.removeAttr('visibility');
        $mc.removeAttr('visibility');
        $d.removeAttr('visibility');

        $mi.css('display', '');
        $mc.css('display', '');
        $d.css('display', '');

        if ((!baseAssetData.assetIsMoreInfo) && (!baseAssetData.showAssetDownloadLink) && (!baseAssetData.assetIsAddtoMedia)) // if all are false
        {
            $mi.hide();
            $mi.addClass('disabled');

            if (deviceType != 'mobile') {
                $mc.css('visibility', 'hidden');
                $mc.addClass('disabled');
            }

            $d.hide();
            $d.addClass('disabled');
        }
        else { // atleast one is visible
            if (!baseAssetData.assetIsMoreInfo) {
                $mi.hide();
                $mi.addClass('disabled');
            }
            else {
                $mi.css('visibility', 'visible');
                $mi.removeClass('disabled');
            }

            if (!baseAssetData.showAssetDownloadLink) {
                $d.hide();
            }
            else {
                $d.css('visibility', 'visible');
            }

            if (!baseAssetData.assetIsDownloadable) {
                $d.addClass('disabled');
            }
            else {
                $d.removeClass('disabled');
            }

            if (!baseAssetData.assetIsAddtoMedia) {
                if (deviceType != 'mobile') {
                    $mc.hide();
                    $mc.addClass('disabled');
                }
            }
            else {
                if (deviceType != 'mobile') {
                    $mc.css('visibility', 'visible');
                    $mc.removeClass('disabled');
                }
            }
        }
    });

    $(document).addThisToolbox().find('.addthis-button').on('click', function (event) {
        var $addThisButton = $(this);
        if ($addThisButton.hasClass("disabled") == false) {
            AddThisHelper.UpdateShareData({
                url: baseAssetData.assetUrl,
                title: baseAssetData.assetTitle
            });
        }

        if ($addThisButton.hasClass("disableclick")) {
            $addThisButton.unbind('click') // takes care of jQuery-bound click events
            .attr('onclick', '') // clears `onclick` attributes in the HTML
             .each(function () { // reset `onclick` event handlers
                 this.onclick = null;
             });
        }
    });

    $(document).addThisToolbox().find('.copy-link').on('click', function () {
        var $copyLink = $(this);
        if (($copyLink.hasClass("disabled") == false) && ($copyLink.hasClass("disableclick") == false)) {
            var text = baseAssetData.assetUrl;
            revealCopyCodePopup($copyLink, text);
        }
        else if ($copyLink.hasClass("disableclick")) {
            $copyLink.unbind('click') // takes care of jQuery-bound click events
            .attr('onclick', '') // clears `onclick` attributes in the HTML
             .each(function () { // reset `onclick` event handlers
                 this.onclick = null;
             });
        }
    });

    $(document).addThisToolbox().find('.embed').on('click', function (e) {     
        var $embed = $(this);
        if ($embed.hasClass("disabledbclick") || $embed.parent().hasClass("disabled")) {
            var offset = $(this).offset();
            var bottom = $(this).offset().top + $(this).outerHeight(true);
            var w = $(window);
            AssetNotFoundForEmbed((offset.left - w.scrollLeft()), (bottom - w.scrollTop()));
        }
        else if ($embed.hasClass("disableclick") || baseAssetData.showAssetEmbedLink == false) {
            $embed.unbind('click') // takes care of jQuery-bound click events
            .attr('onclick', '') // clears `onclick` attributes in the HTML
             .each(function () { // reset `onclick` event handlers
                 this.onclick = null;
             });
        }
        else if (($embed.parent().hasClass("disabled") == false) && ($embed.hasClass("disableclick") == false)) {
            var element = $(this);
            if (McConfig.IsDefaultAmp == "true" || baseAssetData.assetType.toLowerCase() == "image") {
                MediaPanelApi.GetEmbedCode(baseAssetData.assetGuid, function (data) {
                    var assetInfo = data.rows[0];
                    revealCopyCodePopup(element, assetInfo.Embed_Code);
                });
            } else {
                //ampV2 - video only
                var entry_id = baseAssetData.assetKalturamediaid;// '0_yl3jadlg';
                
                var ifrmecode = '<iframe type="text/javascript" src="{embedShareUrl}" style="width: 575px;height: 326.25px" allowfullscreen webkitallowfullscreen mozAllowFullScreen frameborder="0"></iframe>';
                
                var embedShareUrl = McConfig.EmbedShareUrl;
                
                ifrmecode = ifrmecode.replace("{embedShareUrl}", embedShareUrl);
                ifrmecode = ifrmecode.replace("{entry_id}", entry_id);

                revealCopyCodePopup(element, ifrmecode);
            }
        }
    });

    var wasCopyCodePopupInitialized = false;
    var revealCopyCodePopup = function ($element, text) {
        $.amp.popupOpening();
        var $popup = $('#copy-code-popup');
        

        var browser = get_browser();
        if (Modernizr.touch) {
            if ($(document).iOSversion() && $(document).iOSversion() < 10) {
                $popup.find('.desktop').hide();
                $popup.find('.tablet-down').css('display', 'block');
            }
            else {
                $popup.find('.desktop').show();
                $popup.find('.tablet-down').css('display', 'none');
            }
        }
        else if (browser['name'] == 'Safari' && parseInt(browser['version']) < 10) {
            $popup.find('.desktop').hide();
            $popup.find('.tablet-down').css('display', 'block');
        }

        $popup.find('.title').text($element.attr('data-popup-title'));
        $popup.find('.copy').text($element.attr('data-popup-copy'));
        $popup.find('.copy-message').text($element.attr('data-popup-copy-message'));
        $popup.find('.code').text(text);
        $popup.find('.copied').hide();
        $popup.openPopup({
            closed: function (popupZIndex) {
                $.amp.popupClosing(popupZIndex);
            }
        });

        if (wasCopyCodePopupInitialized == false) {
            var clipboard = new Clipboard('.copy');

            clipboard.on('success', function (e) {
                $('#copy-code-popup .copied').show();
            });

            wasCopyCodePopupInitialized = true;
            
        }
    };

    AddThisHelper.UpdateWindowShareData();

    $('.addthis_toolbox .disabled').on('click', function (e) {
        var $addthis_toolbox = $(this);
        if ($addthis_toolbox.hasClass("disableclick") == false) {
            var offset = $addthis_toolbox.offset();
            var bottom = $addthis_toolbox.offset().top + $addthis_toolbox.outerHeight(true);
            var w = $(window);
            AssetNotFoundForShare((offset.left - w.scrollLeft()), (bottom - w.scrollTop()));
        }
    });

    $('#amp-share-button-disable a').on('click', function (e) {
        var $addthis_toolbox = $(this);
        if ($addthis_toolbox.hasClass("embed") == false) {
            var offset = $addthis_toolbox.offset();
            var bottom = $addthis_toolbox.offset().top + $addthis_toolbox.outerHeight(true);
            var w = $(window);
            AssetNotFoundForShare((offset.left - w.scrollLeft()), (bottom - w.scrollTop()));
        }
    });

    function get_browser() {
        var ua = navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
        if (/trident/i.test(M[1])) {
            tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
            return { name: 'IE', version: (tem[1] || '') };
        }
        if (M[1] === 'Chrome') {
            tem = ua.match(/\bOPR|Edge\/(\d+)/)
            if (tem != null) { return { name: 'Opera', version: tem[1] }; }
        }
        M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
        if ((tem = ua.match(/version\/(\d+)/i)) != null) { M.splice(1, 1, tem[1]); }
        return {
            name: M[0],
            version: M[1]
        };
    }
});;
$(function () {
    var popupRss = {
        showPopup: function () {
            var $popUp;
            $(document).on('click touchend', function (e) {
                $popUp = $popUp ? $popUp : $(e.target).closest($('a.open-rss')).siblings('.rss-popup-container');
                if ($(e.target).closest($('a.open-rss')).length != 0 && !$(e.target).parent().hasClass('popup-close')) {
                    $popUp.show();
                } else if ($(e.target).closest($popUp).size() == 0 && e.target != $popUp || $(e.target).parent().hasClass('popup-close')) {
                    $popUp.hide();
                    $popUp = undefined;
                }
            });
            
        }
    };

    popupRss.showPopup();
});;
(function ($) {
    $.fn.cultureSelector = function () {
        return $(this).each(function () {
            var $container = $(this);
            var cookieName = $container.data("culture-preference-cookie-name"),
                samesite = $container.data("samesite"),
                secure = $container.data("secure");
           
            $container.on('click', '[data-culture-seo-name]', function () {
                var isCookieEnabled = JSON.parse($.cookie('optFunc'));
                if (isCookieEnabled) {                    
                    var culture = $(this).data("culture-seo-name");                    
                    //$.cookie(cookieName, culture, { expires: 183, path: '/' });
                    document.cookie = cookieName + "=" + culture +";" + 183 + ";path=/;SameSite=" + samesite + ";" + secure + ";";
                    //document.cookie = cookieName + "=true;" + 183 + ";path=/;SameSite=" + samesite + ";";
                }
            });
        });
    };
})(jQuery);;
$(document).ready(function () {
   
    $(".footer-subscribe").on("click", function () {
        var href = $(".footer-subscribe").attr("href");
        window.location.href = href + '/?email=' + $('#footer-subscribe-input').val();
        return false;
    });   

    $('.subscribe-input-wrapper input').keypress(function (e) {       
        if (e.which == 13) {
            var href = $(".footer-subscribe").attr("href");
            window.location.href = href + '/?email=' + $('#footer-subscribe-input').val();
            return false;
        }
    });

    var calculateFooterHeight = function () {
        var footerHeight = $('footer').height();
        var consumdivH = 0;
        if ($(".dev-consum-emissions").length && $(".dev-consum-emissions").is(':visible')) {
            consumdivH = $(".dev-consum-emissions").outerHeight();
        }
        $('footer').css('margin-top', -(footerHeight + consumdivH));
        $('.page-wrapper').css("padding-bottom", (footerHeight + consumdivH));
    };

    var $buttons = $('footer .desktop .social-buttons li'),
        calculateButtonWidth = function() {
            var width = 20;
            $buttons.each(function(ind, button) {
                width += $(button).outerWidth();
            });
            return width;
        };

    var calculateIconsWidth = function() {
        var currentDevice = $("html").css("font-family").replace(new RegExp("'", 'g'), '').replace(new RegExp('"', 'g'), ''),
            wrapperWidth = ($('footer .desktop .twelve').width()* 45)/ 100,
            buttonWidth = calculateButtonWidth();
        $(".desktop #linksRow").hide();
        $(".tablet #linksRow").hide();
        var showonDevice = $("input:hidden[name='showonDevice']").val(); //$('#showonDevice').value();
        if (currentDevice === "desktop") {
            if (buttonWidth > wrapperWidth) {
                $('footer .desktop').hide();
                $('footer .tablet').show();
                if (showonDevice.toLowerCase().indexOf("desktop") >= 0) {
                    $(".tablet #linksRow").show();
                }
            }
            else {
                if (showonDevice.toLowerCase().indexOf("desktop") >= 0) {
                    $(".desktop #linksRow").show();
                }
            }
        }
        if (currentDevice !== "desktop") {
            $('footer .desktop').attr('style', '');
            $('footer .tablet').attr('style', '');
            if (showonDevice.toLowerCase().indexOf("tablet") >= 0) {
                $(".tablet #linksRow").show();
            }
        }
    };
    
    if ($('html').hasClass('lt-ie9')) {
        if ($('html').hasClass('respondReady')) {
            calculateIconsWidth();
            calculateFooterHeight();
        } else {
            $(document).on('respondReady', function () {
                calculateIconsWidth();
                calculateFooterHeight();
            });
        }
    } else {
        $(window).load(function () {
            calculateIconsWidth();
            calculateFooterHeight();
        });
    }
    $(window).resize(function () {
        calculateIconsWidth();
        calculateFooterHeight();
    });
});



;
$(function () {
});;
var TotaLContentWidth = 0;
var MobileMenuMode = false;
var TopRowMobile = false;

$(document).ready(function () {    
    TotaLContentWidth = 0;

    var myArray = ['showcasecategorylistings-items', 'images-videos-items', 'athletes-items', 'latest-news-items', 'lookbooks-items', 'products-items'];

    for (i = 0, l = myArray.length; i < l; i++) {
        currentElem = $('.' + myArray[i]);
        if (currentElem.length > 0) {
            if (currentElem.find('li:hidden').length > 0) {
                if (currentElem.parent().find('.see-all a').css('display') == 'none')
                { currentElem.parent().find('.see-all a').css('display', 'block'); }
            }
        }
    }

    var mobileRight = $('.mobile-menu').hasClass("mobile-right");
    if (mobileRight == true)
    { $('.full-wrapper').addClass("mobile-right"); }
    else
    { $('.full-wrapper').addClass("mobile-left"); }
    var ua = navigator.userAgent,
        event = (ua.match(/iPad/i)) ? "touchstart" : "click";
    $(document).on(event, function (e) {

        if ($(e.target).is('i.icon.icons-search-icon-compact')) {
            if (McConfig.ShowAdvanceSearchPopUp == 'True') {
                $('.icons-search-icon-compact').removeClass('search-iconchange');
            }
            if ($('.header-mid').hasClass('expand-search') == true) {                
                if ($('.search.desktop input').val().trim() == '') {
                    $('.header-mid').removeClass('expand-search');
                }
                else {
                    goToSearch($('.search.desktop input'));
                }
                if (McConfig.ShowAdvanceSearchPopUp == 'True') {
                    $('.advance-search-popup').removeClass('showonsearchbar');
                    $('.expand-search .search').removeClass('advance-search-bar');
                    $('.btn-search-compact').removeClass('advance-search-show');
                }
            }
            else {
                $('.header-mid').addClass('expand-search');
                if (McConfig.ShowAdvanceSearchPopUp == 'True') {
                    $('.icons-search-icon-compact').addClass('search-iconchange');                
                    if ($('.advance-search-popup').length > 0) {
                        $('#div_adv_search').css("display", "block");
                        $('.advance-search-popup').addClass('showonsearchbar');
                        $('.expand-search .search').addClass('advance-search-bar');
                        $('.btn-search-compact').addClass('advance-search-show');
                    }
                }
            }
            return;
        }

        if ($(e.target).is('a.btn-search.tablet') || $(e.target).is('i.icon.icons-search-icon') || $(e.target).is('i.icon.icons-search-icon-desktop')) {
            if ($('.header-mid').hasClass('hide-menu') == true && $('.search.desktop input').val().trim() == '')
                $('.header-mid').removeClass('hide-menu');
            else {
                if (!$(e.target).is('i.icon.icons-search-icon-desktop')) {
                    $('.header-mid').addClass('hide-menu');
                }
                if ($('.search.desktop input').val().trim() != '') {
                    goToSearch($('.search.desktop input'));
                }
            }
        } else if (!$(e.target).is('.site-menu-wrapper') && !$(e.target).is('.search input') && !$(e.target).is('.search .btn-search') && !$(e.target).is('a.btn-search.tablet')) {
            $('.header-mid').removeClass('hide-menu');
        }
    });


    var $siteMenu = $('.site-menu > ul'),
        $tabletHeader = $('.header-full .tablet-up'),
        $mobileHeader = $('.header-full .mobile'),
        $desktopSearch = $('.search.desktop'),
        $desktopSearchInput = $('.search.desktop input'),
        $mobileThreelevelMenuFilter = $('.threelevel-mobile-menu-filter .mobile .tablet'),
        $popupTopdownMenu = $('#popup-topdown-menu'),
        $topdownMenuMode = $popupTopdownMenu.hasClass('topdown');

    var isTagSearchPage = $('.tag-search').length > 0;

    var controlMenu = function (menuWidth) {
        var checkMenuOverflow = true;
        if (isTagSearchPage) {
            $('.tag-search-separator').removeClass('hide-border');
        }

        if ($('.advanced-search-page').length > 0 || $('.tag-search').length > 0) {

            checkMenuOverflow = false;

            var deviceType = $('html').css('font-family').replace(new RegExp('"', 'g'), '');
            if (deviceType != 'mobile') {
                if ($('.TopHeaderRowDiv ul li div.search').length > 0) {
                    $('.TopHeaderRowDiv ul li div.search').parent().hide();
                }
                var ShowMenu = $('[name=ShowMenu]').val();
                if (ShowMenu != null && ShowMenu.toString().toUpperCase() == "TRUE") {
                    checkMenuOverflow = true;
                    $('.header-mid-container').find('.header-top-menu').addClass('searchpage');
                    $('.search').hide();
                    $('.btn-search-compact').hide();

                }
                else {
                    $('.header-mid').hide();
                }
            } else {
                if ($('.advanced-search-page').length > 0) {
                    var ShowSearchPanel = $('.advanced-search-page').data("search-visible");

                    if (ShowSearchPanel.toUpperCase() != "TRUE") {
                        $('.advanced-search-page .top-search-panel').hide();
                    }
                }
            }

        }

        //if ($('.site-menu-wrapper').hasClass('right')) {
        //    checkMenuOverflow = false;
        //}

        var deviceType = $('html').css('font-family').replace(new RegExp('"', 'g'), '');

        if (checkMenuOverflow == true) {
            var btnSearch = $('.btn-search-compact').length > 0 && $('.btn-search-compact').is(':visible') ? $('.btn-search-compact') : $('.btn-search.tablet');

            if (deviceType !== 'desktop') {
                if (!$topdownMenuMode) {
                    var logo = $('.logo-wrapper').outerWidth() > $('.header-container').outerWidth() - $('.top-menu-container').outerWidth();

                    if ((btnSearch.length > 0 && menuWidth >= btnSearch.offset().left) || logo) {
                        $tabletHeader.hide();
                        $mobileHeader.show();
                        $('.slider-wrapper-v1').removeClass('topspace');
                        $mobileThreelevelMenuFilter.show();
                    }
                }
            }
            else
            {
                $('.slider-wrapper-v1').addClass('topspace');
            }
        }

        if (deviceType != 'mobile') {
            if (TopRowMobile) {
                ShowMobileMenu(true);
                return;
            }

            $tabletHeader.attr('style', '');
            $mobileHeader.attr('style', '');
            $mobileThreelevelMenuFilter.attr('style', '');

            var desktopoffSetLeft = 0;
            var btnSearchTabletOffsetLeft = 0;
            if ($desktopSearchInput.length > 0) {
                desktopoffSetLeft = $desktopSearchInput.offset().left;
            }
            if (btnSearch != undefined &&  btnSearch.length > 0) {
                btnSearchTabletOffsetLeft = btnSearch.offset().left;
            }

            var headerlinkDiv = $(".header-mid .header-top-menu");

            if (headerlinkDiv.length > 0) {
                var ShowMobile = false;
                if (headerlinkDiv.hasClass("left")) {
                    var menuOffset = $siteMenu.offset().left;
                    var otherContentsWidth = headerlinkDiv.outerWidth();

                    if (otherContentsWidth + 10 >= menuOffset) {
                        ShowMobile = true;
                    }
                }
                else {
                    var headerlinksdivOffset = headerlinkDiv.offset().left;
                    if (menuWidth + 10 >= headerlinksdivOffset) {
                        ShowMobile = true;
                    }
                }

                ShowMobileMenu(ShowMobile);
            }
            else {
                if ($desktopSearch.hasClass('short') && menuWidth + 10 >= desktopoffSetLeft) {
                    $desktopSearch.removeClass('short');
                    $('.header-full').addClass('tablet-view');
                    } else if ($desktopSearch.hasClass('short') && menuWidth + 10 >= desktopoffSetLeft + 220 && $desktopSearchInput.is(':visible')) {
                    $desktopSearch.removeClass('short');
                    $('.header-full').addClass('tablet-view');
                } else if (menuWidth + 10 >= desktopoffSetLeft && $desktopSearchInput.is(':visible')) {
                    $('.header-full').removeClass('tablet-view');
                    $desktopSearch.addClass('short');
                } else if (menuWidth + 10 >= btnSearchTabletOffsetLeft && btnSearch != undefined && btnSearch.is(':visible')) {
                    $tabletHeader.hide();
                    $mobileHeader.show();
                    $mobileThreelevelMenuFilter.show();
                } else if ($desktopSearch.hasClass('short') && menuWidth + 10 < desktopoffSetLeft - 220) {
                    $desktopSearch.removeClass('short');
                }
            }

            $('.site-menu ul.menu > li').each(function () {
                if ($(this).offset().left > $(window).width() - 400) {
                    $(this).addClass("leftfortablet");
                }
            });
        }

        if (isTagSearchPage && $siteMenu.is(":visible")) {
            $('.tag-search-separator').addClass('hide-border');
        }
    };

    $(document).ready(function () {

        setTimeout(function () {
            SetMobileLogoForFF();
            var menuWidth = menuActualWidth();
            controlMenu(menuWidth);
            if (!checkedonLoginOnLoad)//if its already checked in login process nto to recheck again on document.load
            {
                if (MobileMenuMode) {
                    SetTopHeaderMobileMode();
                }
                else {
                    checkTopHeaderOverFlow(false);
                }
            }
        }, 2000);
        $(document).MobileMenu();
    });

    $.fn.MobileMenu = function () {
        var el = this.find('.section-menu-header .category-menu');
        var category = $('.topdown-menu-wrapper .menu.drop-accordian-menu');

        $(el).on('click', function (event) {
            $('.mobile-menu').openTopDownMenu({
                absolute: true,
                top: $('.main-content').offset().top,
                opened: function ($self) {
                    category.addClass('show');
                    $(el).find('.ten h3 i').removeClass('icons-topdown-top-arrow-down');
                    $(el).find('.ten h3 i').addClass('icons-topdown-top-arrow-up');
                },
                closed: function (popupZIndex) {
                    closeTopdownMenuPopup();
                }
            });
        });
    };

    $(window).on('orientationchange', function (e) {
        /*TNMMCLITE-3523 fixed*/
        if (e.type == 'orientationchange') {
            if ($topdownMenuMode) {
                $popupTopdownMenu.closePopup({
                    closed: function (popupZIndex) {
                        closeTopdownMenuPopup();
                    }
                });
            }
        }
    });

    $(window).on('resize', function (e) {// only one even needed to handle the content overflow check        

        setTimeout(function () {
            var menuWidth = menuActualWidth();
            // if ($tabletHeader.is(":visible") && !$siteMenu.is(":visible")) {
            //     $siteMenu.show();
            // }
            TopRowMobile = false;
            MobileMenuMode = false;

            controlMenu(menuWidth);
            if (MobileMenuMode) {
                SetTopHeaderMobileMode();
            }
            else {
                checkTopHeaderOverFlow(false);
            }

        }, 2000);
    });

    function closeTopdownMenuPopup() {
        var el = $('.section-menu-header .category-menu');
        var category = $('.mobile-menu .topdown-menu-wrapper .menu.drop-accordian-menu');
        category.removeClass('show');
        $(el).find('.ten h3 i').addClass('icons-topdown-top-arrow-down');
        $(el).find('.ten h3 i').removeClass('icons-topdown-top-arrow-up');
    }

    function SetMobileLogoForFF(imgLogomobile) {
        if ($.browser.mozilla) {
            var imgLogomobile = $('.header-top-mobile .logo img')[0];
            var i = new Image();
            if (imgLogomobile != undefined) {
                i.src = imgLogomobile.src;

                imgLogomobile.width = Math.round(i.width / 2);
                imgLogomobile.height = Math.round(i.height / 2);
            }
        }
    }

    $('.open-search').on('click', function () {
        if (!$('.top-menu-mobile-header').is(':visible')) {
            goToSearch($(".search-mobile .wrap input"));
        } else {
            $('.top-menu-mobile-header').hide();
            $('.search-mobile').css('display', 'table');
        }
        return false;
    });

    $('.close-search').on('click', function () {
        $('.search-mobile').css('display', 'none');
        $('.top-menu-mobile-header').show();
    });

    $('.search-mobile .wrap input').on('keypress', function (e) {
        if (e.keyCode == "13") {
            goToSearch($(".search-mobile .wrap input"));
        }
    });

    $(".search .btn-search").on("click", function () {
        goToSearch($(this).siblings('input[type="text"]'));
    });

    $(".mobile-menu .search .search-btn").on("click", function () {
        goToSearch($(this).siblings('input[type="text"]'));
    });

    $('.search input').on('keypress', function (e) {
        if (e.keyCode == "13") {
            goToSearch($(this));
            return false;
        }
    });

    $('#advance-search-popup input.search-popup-input').on('keypress', function (e) {
        if (e.keyCode == "13") {
            goToSearch($(this));
            return false;
        }
    });

    $('.advance-search-search-button').on('keypress', function (e) {
        if (e.keyCode == "13") {
            goToSearch($('.search-popup-input'));
        }
    });

    $('.advance-search-reset-button').on('keypress', function (e) {
        if (e.keyCode == "13") {
            $('.search-popup-input').removeClass('invalid');
            $('.search-popup-input').val('');
            $("#SelectDatePopup option:first").attr('selected', 'selected');
            $("#Filter_SectionsNames option:first").attr('selected', 'selected');
            $("#Filter_Categories option:first").attr('selected', 'selected');
            $("#Filter_ContentTypes option:first").attr('selected', 'selected');

            removesessionStorage();
        }
    });

    var removesessionStorage = function () {
        sessionStorage.removeItem("storageDate");
        sessionStorage.removeItem("storageSectionsNames");
        sessionStorage.removeItem("storageCategories");
        sessionStorage.removeItem("storageContentTypes");
    };
    var goToSearch = function ($searchInput) {
        
        var query = $('<div />').text($.trim($searchInput.val())).html();
        if (McConfig.ShowAdvanceSearchPopUp == 'True') {
            var Date = $("#SelectDatePopup option:selected").val();
            var SectionsNames = $("#Filter_SectionsNames option:selected").val();
            var Categories = $("#Filter_Categories option:selected").val();
            var ContentTypes = $("#Filter_ContentTypes option:selected").val()

            sessionStorage.setItem("storageDate", Date);
            sessionStorage.setItem("storageSectionsNames", SectionsNames);
            sessionStorage.setItem("storageCategories", Categories);
            sessionStorage.setItem("storageContentTypes", ContentTypes);
        }
        query = encodeURIComponent(query);
        if (query == "" && !$searchInput.parent().hasClass("small")) {
            return;
        }
        var url = $searchInput.attr("data-search-url") + (/<|>|%|&|\:|\?|\*/g.exec(query) ? "?query=" : "/") + query;
        window.location.href = url;
    };

    var landScapeWidth = 0;
    var portraitWidth = 0;

    var menuActualWidth = function getActualMenuWidth() {
        if ($('html').hasClass('portrait') && portraitWidth != 0) {
            return portraitWidth;
        }
        else if ($('html').hasClass('landscape') && landScapeWidth != 0) {
            return landScapeWidth;
        }
        else {
            var menuWidth = 0;
            if ($siteMenu.length > 0) {

                menuWidth = $siteMenu.offset().left;

                $('.site-menu > ul > li').each(function () {

                    if ($(this).is(":visible")) {
                        menuWidth += $(this).outerWidth(true);
                    }
                });
            }

            if ($('html').hasClass('portrait')) {
                portraitWidth = menuWidth;
            }
            else if ($('html').hasClass('landscape')) {
                landScapeWidth = menuWidth;
            }

            return menuWidth;
        }
    }
});

var checkedonLoginOnLoad = false;

var checkTopHeaderOverFlow = function (fromLoginProc) {
    checkedonLoginOnLoad = fromLoginProc;

    if (MobileMenuMode) {
        $(tabletRow).hide();
        $(mobileRow).show();
        TopRowMobile = true;
    }
    else {
        TopRowMobile = false;

        var tabletRow = $('.TopHeaderRowDiv:not(.mobile)');

        if ($(tabletRow).length > 0) {
            var searchPanel = $('div.TopHeaderRowDiv:not(.mobile) li.search-panel');
            var mobileRow = $('.TopHeaderRowDiv.mobile');

            var ContentWidth = TopRowWidth(fromLoginProc);

            if (ContentWidth == 0) {
                //mobile view
                $(mobileRow).show();
                return;
            }

            var searchBoxWidth = 0;
            if ($('.advanced-search-page').length == 0 && $('.tag-search').length == 0 && $(searchPanel).length > 0) {  //if it is search page then ignore search box hiding scenario as it is already hidden and width not considered in total content width          
                searchBoxWidth = $(searchPanel).find('div.search input').outerWidth() - $('li.search-panel .btn-search').outerWidth();//$(searchPanel).find('div.search').hasClass('small') ? 0 : $(searchPanel).find('div.search input').outerWidth();
            }

            var tabletRowWidthAvail = $(tabletRow[0]).width();
            if (tabletRowWidthAvail >= ContentWidth) {
                $(tabletRow).show();
                $(mobileRow).hide();
                if ($(searchPanel).length > 0) {
                    $(searchPanel).removeClass('small');
                    $(searchPanel).find('div.search').removeClass('small');
                }
            }
            else if ($(searchPanel).length > 0 && tabletRowWidthAvail >= ContentWidth - searchBoxWidth) {
                $(tabletRow).show();
                $(mobileRow).hide();
                $(searchPanel).addClass('small');
                $(searchPanel).find('div.search').addClass('small');
            }
            else {
                $(tabletRow).hide();
                $(mobileRow).show();
                TopRowMobile = true;
                ShowMobileMenu(true);
            }
        }
    }
};

var TopRowWidth = function getTopRowWidth(contentsChanged) {

    if (TotaLContentWidth == 0 || contentsChanged) {
        TotaLContentWidth = 0;

        var $TopRow = $('.TopHeaderRowDiv:not(.mobile) > ul');

        if ($TopRow.length > 0) {
            var previousCss = "";
            $topHeaderRowDiv = $TopRow.parent();

            if (!$topHeaderRowDiv.is(":visible")) {
                $topHeaderRowDiv = $TopRow.parent();
                previousCss = $topHeaderRowDiv.attr("style");
                $topHeaderRowDiv.css({ left: "-9999px", top: "-9999px" }).show();
            }

            $TopRow.children().each(function () {
                TotaLContentWidth += $(this).outerWidth(true);
            });

            if ($('.advanced-search-page').length > 0 || $('.tag-search').length > 0) {
                var liSearch = $TopRow.children('.search-panel');
                TotaLContentWidth = TotaLContentWidth - $(liSearch).outerWidth();
                $(liSearch).hide();
            }

            var searchPanel = $('div.TopHeaderRowDiv:not(.mobile) li.search-panel');
            if ($(searchPanel).hasClass('small')) {
                TotaLContentWidth += $(searchPanel).find('div.search input').outerWidth() - $('li.search-panel .btn-search').outerWidth();
            }

            if (previousCss != "") {
                $topHeaderRowDiv.attr("style", previousCss);
            }
        }
    }
    return TotaLContentWidth;
};

var ShowMobileMenu = function (ShowMobile) {
    MobileMenuMode = ShowMobile;

    if (ShowMobile) {
        $topdownMenuMode = $('#popup-topdown-menu').hasClass('topdown');
        if ($topdownMenuMode) {
            $('.site-menu > ul').hide();
            $('.topdown-menu-holder').removeClass('tablet-down');
            $('.topdown-menu-wrapper').removeClass('tablet-down');
        }

        var tabletMenuType = $('#hdnTabletMenuType');
        if (tabletMenuType.length > 0 && $('#hdnTabletMenuType').val().toUpperCase() == "DESKTOPMENU") {
            $('.header-full .tablet-up').hide();
            $('.header-full .mobile').show();
        }
    }
};

var SetTopHeaderMobileMode = function () {
    var tabletRow = $('.TopHeaderRowDiv:not(.mobile)');
    var mobileRow = $('.TopHeaderRowDiv.mobile');

    $(tabletRow).hide();
    $(mobileRow).show();
    TopRowMobile = true;
};;
$(document).ready(function () {
    $('#press-release-group #document-list li a').click(function (a, b) {
        $('#press-release-group #document-list li').removeClass("active");
        $('#press-release-document-section').addClass('hide-language');

        $(this).parent('li').addClass("active");
        $('#press-release-document-section li').removeClass('show');
        $('#press-release-document-section li').addClass('hide');

        var document = $(this).attr('class');
        if (document == 'all') {

            $('#press-release-document-section li').removeClass('hide');
            $('#press-release-document-section li').addClass('show');
            $('#press-release-document-section').removeClass('hide-language');
            $('#press-release-document-section').addClass('show-language');

            $('.desktop #press-release-document-section li').removeClass('hide');
            $('.desktop #press-release-document-section li').addClass('show');
            $('.desktop #press-release-document-section').removeClass('hide-language');
            $('.desktop #press-release-document-section').addClass('show-language');

            $('.tablet #press-release-document-section li').removeClass('hide');
            $('.tablet #press-release-document-section li').addClass('show');
            $('.tablet #press-release-document-section').removeClass('hide-language');
            $('.tablet #press-release-document-section').addClass('show-language');

            $('.mobile #press-release-document-section li').removeClass('hide');
            $('.mobile #press-release-document-section li').addClass('show');
            $('.mobile #press-release-document-section').removeClass('hide-language');
            $('.mobile #press-release-document-section').addClass('show-language');
        }
        else {
            $('#press-release-document-section').removeClass('show-language');
            $('#press-release-document-section').addClass('hide-language');
            $('#press-release-document-section li[name="document-' + document + '"]').removeClass('hide')
            $('#press-release-document-section li[name="document-' + document + '"]').addClass('show')

            $('.desktop #press-release-document-section').removeClass('show-language');
            $('.desktop #press-release-document-section').addClass('hide-language');
            $('.desktop #press-release-document-section li[name="document-' + document + '"]').removeClass('hide')
            $('.desktop #press-release-document-section li[name="document-' + document + '"]').addClass('show')

            $('.tablet #press-release-document-section').removeClass('show-language');
            $('.tablet #press-release-document-section').addClass('hide-language');
            $('.tablet #press-release-document-section li[name="document-' + document + '"]').removeClass('hide')
            $('.tablet #press-release-document-section li[name="document-' + document + '"]').addClass('show')

            $('.mobile #press-release-document-section').removeClass('show-language');
            $('.mobile #press-release-document-section').addClass('hide-language');
            $('.mobile #press-release-document-section li[name="document-' + document + '"]').removeClass('hide')
            $('.mobile #press-release-document-section li[name="document-' + document + '"]').addClass('show')
        }
    });
});
$(function () {

    var moreFrom = $('.more-from .block-grid p');

    var arrayCulture = McConfig.DotDotDotApplyByLetter.split(',');
    var changestoletter = false;

    arrayCulture.forEach(function (item) {
        if (item == UserSession.Locale)
            changestoletter = true;
    });
    //var toptools = $(".top-tools");
    //var links = $(".amp-popup-wrapper .download-buttons ul li");
    //ShowHideShareLinks($("#htnShowShareLinks").val()=='true');
    //ShowHideAllMediaCartLinks(toptools, $("#hdnIsAddAllToMediaCartEnable").val() == 'true');
    //ShowHideDownloadAllLinks(toptools, $("#hdnIsDownloadAllEnable").val() == 'true');

    //ShowHideMoreInfo(links, $("#hdnMoreInfoEnabled").val() == 'true');
    //ShowHideDownload(links, $("#hdnDownloadEnabled").val() == 'true');
    //ShowHideMediaCart(links, $("#hdnMediaCartEnabled").val() == 'true');
    //ShowHideShareLink(links, $("#hdnSharingEnabled").val() == 'true');
    if ($('html').hasClass('lt-ie9')) {
        if ($('html').hasClass('respondReady')) {
            moreFrom.dotdotdot({
                watch: 'window',
                wrap: changestoletter === true ? 'letter' : 'word'
            });
        } else {
            $(document).on('respondReady', function () {
                moreFrom.dotdotdot({
                    watch: 'window',
                    wrap: changestoletter === true ? 'letter' : 'word'
                });
            });
        }
    } else {
        moreFrom.dotdotdot({
            watch: 'window',
            wrap: changestoletter === true ? 'letter' : 'word'
        });
    }

});

$.fn.shortText = function (tabl) {
    var $el = $(this), $visbleText;
    if ($el.find('.visible-text').closest('.visible-text').eq(0).length) {
        $visbleText = $el.find('.visible-text').closest('.visible-text').eq(0);
    } else {
        $visbleText = $el.find('.visible-text');
    }
    var $invisibleText = $el.find('.invisible-text'),
        $containerMoreLess = $el.find('.see-more'),
        $more = $el.find('.more'),
        $less = $el.find('.less');

    $more.on('click', function () {
        $visbleText.hide();
        $invisibleText.show();
        $(this).hide();
        $less.show();
    });

    $less.on('click', function () {
        $invisibleText.hide();
        $visbleText.show();
        $(this).hide();
        $more.show();
        $('html, body').animate({
            scrollTop: $visbleText.offset().top - 20
        }, 0);
    });
    var arrayCulture = McConfig.DotDotDotApplyByLetter.split(',');
    var changestoletter = false;

    arrayCulture.forEach(function (item) {
        if (item == UserSession.Locale)
            changestoletter = true;
    });
    $(document).on('device.load device.change', function (ev, type) {
        var tablet = type == tabl;
        if (type != 'desktop' && !tablet) {
            $visbleText.dotdotdot({
                wrap: changestoletter === true ? 'letter' : 'word',
                ellipsis: '',
                callback: function (isTruncated, orgContent) {
                    if (isTruncated) {
                        $el.attr('style', '');
                        $invisibleText.append(orgContent);
                        $containerMoreLess.show();
                        $more.show();
                    } else {
                        $el.css('border-bottom', 'none');
                    }
                }
            });
        } else {
            $visbleText.trigger('destroy');
            $containerMoreLess.hide();
        };
    });
};

$('.story-text').shortText();
$('div.asset-description').shortText('tablet');
$('div.asset-shotlist').shortText('tablet');
$('div.asset-usagerights').shortText('tablet');

function ShowHideShareLinks(islinksVisible) {
    //var toolboxAnchors = $(".addthis_toolbox ul li a");

    //if (islinksVisible) {
    //    toolboxAnchors.show();
    //}
    //else {
    //    toolboxAnchors.hide();
    //}
}

function ShowHideAllMediaCartLinks(toptools, allMediaCartLinkEnable) {        
    var mediaCartBtnWrapper = toptools.find(".media-cart-btn-wrapper");
    if (allMediaCartLinkEnable) {
        mediaCartBtnWrapper.show();
        //$(".top-tools ul li a media-cart-btn-wrapper").show();
    }
    else {
        mediaCartBtnWrapper.hide();
        //$(".top-tools ul li a media-cart-btn-wrappe").hide();
    }

}
function ShowHideDownloadAllLinks(toptools, downloadAllLinkEnable) {    
    var downloadAll = toptools.find(".download-all");
    var isIE8 = $('html').hasClass('lt-ie9') || $('html').hasClass('lt-ie10');
    if (downloadAllLinkEnable && !isIE8) {
        downloadAll.show();
        //$(".top-tools ul li a media-cart-btn-wrapper").show();
    }
    else {
        downloadAll.hide();
    }
}
function ShowHideMoreInfo(links, isMoreInfoEnabled) {
    if (isMoreInfoEnabled) {
        //links.find("a .more-info").show();
        links.find(".more-info").parent(".more-info-container").show();

    }
    else {
        links.find(".more-info").parent(".more-info-container").hide();
    }
}
function ShowHideDownload(links, isDownloadEnabled) {
    if (isDownloadEnabled) {
        links.find(".download").show();
    }
    else {
        links.find(".download").hide();
    }
}
function ShowHideMediaCart(links, isMediaCartEnabled) {
    if (isMediaCartEnabled) {
        links.find(".media-cart-btn-wrapper").show();
    }
    else {
        links.find(".media-cart-btn-wrapper").hide();
    }
}
function ShowHideShareLink(links, isSharingEnabled) {
    if (isSharingEnabled) {
        links.find(".share").show();
    }
    else {
        links.find(".share").hide();
    }
} ;
$(document).ready(function () {

    var $form = $('form.subscribe-form'),
        $subscribeButton = $form.find('.subscribe-button');

    $(".subscribe-form .select-all input:checkbox").change(function () {
        if ($(this).is(":checked")) {
            $(".subscribe-form .pwc input:checkbox").prop("checked", true);
        }
    });

    $(".subscribe-form .pwc input:checkbox").change(function() {
        var $allCheckbox = $(".subscribe-form .select-all input:checkbox");
        if($allCheckbox.is(":checked")) {
            $allCheckbox.prop("checked", false);
        }
    });

    $("#subForm").submit(function (event) {
        $form.valid();
        var $chkAgree = $("#fieldAgree");
        if (!$chkAgree.is(":checked")) {
            $('#fieldAgreeError').attr('class', 'error');
            event.preventDefault();
            return false;
        }
    });

    $("#fieldAgree").change(function () {
        var $chkAgree = $("#fieldAgree");
        if ($chkAgree.is(":checked")) {
            $('#fieldAgreeError').attr('class', 'normal');
        }
        else
        {
            $('#fieldAgreeError').attr('class', 'error');
        }
    });

    $('.pwc .six.columns div p').on('click', function () {
        var ele = $(this).parent().find('input:checkbox');
        if (ele.prop('checked')) {
            ele.prop('checked', false);
        } else {
            ele.prop('checked', true);
        }
    });
    $form.removeData('validator');
    $form.validate({
        onkeyup: function (element) { $(element).valid(); },
        onclick: function (element) { $(element).valid(); },
        showErrors: function (errorMap, errorList) {        
            this.defaultShowErrors();
     
            if (errorMap['email'] !== undefined && errorMap['chkSubscribe'] !== undefined) {
                $('label[for="chkSubscribe"]').hide();
            } else if (errorMap['email'] === undefined && errorMap['chkSubscribe'] !== undefined) {
                $('html, body').animate({
                    scrollTop: 0
                }, 10);
            }
            $("#fieldAgreeError").show();
        },
        errorPlacement: function (error, element) {
            error.insertAfter(".subscribe-to-all-chk");
        }

    });
    
    if ($('.subscribe-content input[type=checkbox]').length > 0) {
        $('.subscribe-content input[type=checkbox]').rules("add", { required: "#fieldiudlil-0:checked", minlength: 1, messages: { required: $('.checkbox-beats-error-message').text() } });
    }
    
    if ($('#fieldEmail').length > 0) {       
        $('#fieldEmail').rules("add", { required: true, messages: { required: $('.email-error-message:first').text(), email: $('.email-invalid-message:first').text() } });
    }
    if ($('.subscribe-to-all-chk input[type=checkbox]').length > 0) {
        $('.subscribe-to-all input[type=checkbox]').rules("add", { required: true, messages: { required: $('.checkbox-subscriptiontype-error-message').text() } });
    }

    $(document).ready(function() {
        if (window.location.href.indexOf('email=') != -1) {
            $form.valid();
        }
        
        updateNoneBeatStatus();
    });

    $subscribeButton.on('click', function () {
       // appendCountriesToUrl();
        $form.submit();
    });

    $('#btnSubscribe').on('click', function () {
        $form.valid();
        if (!$('#fieldAgree').prop('checked'))
        {
            $('#fieldAgreeError').attr('class','error');
            return false;
        }
        else
        {
            $('#fieldAgreeError').attr('class', 'normal');
            $form.submit();
        }
    });

    function appendCountriesToUrl() {
        var subscriptions = "",
            subscribeNm = "";
        $(".pwc input:checkbox:checked").each(function () {
            subscribeNm = $(this).siblings(".mobile").text();
            subscriptions = subscriptions + '&' + subscribeNm;
        });
        $("[name='SubscribedTo']").val(subscriptions.toLowerCase());
    }
    var beatsCheckBox = $(".subscribe-to-all .subscribe-content input:checkbox");
    var newsAlertCheckBox = $(".subscribe-to-all-chk input:checkbox");
    var totalBeats = beatsCheckBox.length;
    var beatsNoneCheckBox = $("#fieldikzhu-None");

    $("#subscribe-to-all").change(function () {
        var checked = $(this).prop("checked");
        beatsCheckBox.prop('checked', checked);
        newsAlertCheckBox.prop('checked', checked);
        $form.valid();
        updateNoneBeatStatus();
        
    });


    newsAlertCheckBox.change(function () {
        var checked = $(this).prop("checked");
        if (!checked) {
            beatsCheckBox.prop('checked', checked);
            $("#subscribe-to-all").prop('checked', checked);
        }
        updateNoneBeatStatus();
    });
    beatsCheckBox.change(function () {
        var checkedBeats = $(".subscribe-to-all .subscribe-content input:checked").length;
        if (totalBeats == checkedBeats) {
            $("#subscribe-to-all").prop('checked', true);
        } else {
            $("#subscribe-to-all").prop('checked', false);
        }
        var checked = $(this).prop("checked");
        if (checked) {
            if (!newsAlertCheckBox.prop('checked')) {
                newsAlertCheckBox.prop('checked', true);
                updateNoneBeatStatus();
            }
        } else {
            if (checkedBeats == 0 && newsAlertCheckBox.prop('checked')) {
                newsAlertCheckBox.prop('checked', false);
                updateNoneBeatStatus();
            }
        }
    });

    function updateNoneBeatStatus() {
        beatsNoneCheckBox.prop('checked', !newsAlertCheckBox.prop('checked'));
    }
});
;
$(function () {

    var cookiePageVisited = $("#ShowSubscribePopUp").val();
    if (cookiePageVisited === "True" && window.location.href.indexOf("Subscribe") == -1) // if Permenant cookie dosent exists
    {
        $("#subscribe-newsletter-popup").openPopup();
    }
    $('#subscribe-newsletter-popup a.custom-button').on('click', function () {
        $('#subscribe-newsletter-popup').closePopup();
    });
   
});

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1);
        if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
    }
    return "";
};
