/* Minification failed. Returning unminified contents.
(9041,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) {
                            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 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 response = 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);
                }
            });

        });

        //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 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);
    }
});;
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.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.length == 0 && (data.Data.Table[0].Fax1 != null && data.Data.Table[0].Fax1.length > 0)) {
            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()) {
                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();
    }

    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 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 (window.ga && ga.create) {
                        if (checkval == false) {
                            //ga('set', 'anonymizeIp', true);
                            ga('send', 'pageview', '/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
            });
        }
    }
    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);;
$(document).ready(function() {
    var initCountry = $('.contact-select').attr('selected-value');
    $('.contact-select option').filter('[value="' + initCountry + '"]').attr('selected', 'selected');
    
    $('.contact-listing select').on('change', function () {
        $(this).closest('form').submit();
    });

});


$(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': padding
                    });
                });
            } else {
                $contactItems.each(function () {
                    $(this).css({
                        'padding-bottom': '10px'
                    });
                });
            }
            $contactItems.css('min-height', max);
        }
    }
});
/*
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 () {


    this.GetAssetDataObject = function (parameters) {
        var filepath = '';
        var toExecute = false;
        var mediaCartTip = $.fn.mediaCartButton({
            style: 'dark'
        });

        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);
                }
                else {
                    setTimeout(function () { mediaCartTip.hideTip(); }, 2000);
                }

            });
        }


        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: false,
                    type: 'POST',
                    crossDomain: true,
                    data: model,
                    success: function (response) {
                        //$('body').removeClass('continue-loading');
                        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);
                            //$('body').removeClass('showLoaderInPopup');
                        }
                    },
                    error: function (responseData, textStatus, errorThrown) {
                        //$('body').removeClass('continue-loading');
                        //toolTipHelper.showTip(responseData.statusText, $(toolTipHelper.settings.container), 'error', true);
                        //var guid = (MediaCart.AssetGuids == null) ? (". StoryGuid: " + AmpHelper.GetStoryGuid()) : (". assetGuids: " + MediaCart.AssetGuids);
                        //logError("Error while downloading asset: " + responseData.statusText + ". " + responseData.responseText + guid);
                    }
                });
            }
        }


    };


    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 });
                    document.cookie = cookieName + "=" + JSON.stringify(validator.getValues()) +";" + 365 + ";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;
    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();
        $('footer').css('margin-top', -footerHeight);
        $('.page-wrapper').css("padding-bottom", footerHeight);
    };
    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 "";
};
