var crsRender = 0 // Rendering flag
var scr = 0, csrsellContainer = 0, csccount = 0, cofst = 0, crsHandler = 0;
var crsElemCount = 0;
var csellAjxBind = 0;
var csellStopRender = 0;
var csellDrawer = 0, ads = 0, removedWidgetHeight = 0;
var calledMrec = 0;
var calledButtonAds = 0;
var calledGAds = 0;
var isMobileDevice = function() {
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
var CROSS_SELL = {
    docPosition: 0,
    csell_elements: {
        'mrect1': {height: 0, func: "callMrect", param: "1"},
        'glance': {height: 0, func: "callGlance", param: ""},
        'mrect2': {height: 0, func: "callMrect", param: "2"},
        'crowdy': {height: 0, func: "callCrowdy", param: ""},
        'just_in_csell': {height: 0, func: "callJustIn", param: ""},
        'mostRead': {height: 0, func: "callTrending", param: "trending_most_read"},
        'mostShred': {height: 0, func: "callTrending", param: "trending_most_shared"},
        'mrect3': {height: 0, func: "callMrect", param: "3"},
        'topVids': {height: 0, func: "callCarousel", param: "top"},
        'latestVids': {height: 0, func: "callCarousel", param: "latest"},
        'mrect4': {height: 0, func: "callMrect", param: "4"},
        'tracking': {height: 0, func: "", param: ""},
        'twitterhldr': {height: 0, func: "callTwitter", param: ""},
        'radio': {height: 0, func: "", param: ""},
        'buttonAds': {height: 0, func: "callButtonAds", param: ""}
    },
    init: function() {
        CROSS_SELL.initData();
        $(window).resize(function() {
            if( $(window).width() >= 1200){
                if(ads == 0){
                    CROSS_SELL.loadAds();
                    ads = 1;
                }
                CROSS_SELL.inline();

            }

            if ($(window).width() > 1200 && csellAjxBind == 0) {
                $(window).bind('scroll', CROSS_SELL.crsEvent);
                $(document).ajaxStop(function() {
                    CROSS_SELL.getCsellElem();
                    $(this).unbind('ajaxStop');
                });
                csellAjxBind = 1;
            } else if ($(window).width() < 1200 && csellAjxBind == 1) {
                $(window).unbind('scroll', CROSS_SELL.crsEvent);
                csellAjxBind = 0;
            }

            if( $(window).width() < 1200 && csellDrawer == 0){
                CROSS_SELL.drawer();
                csellDrawer = 1;
            }

            if(csellDrawer == 1 ){
                $(".cross_sell_drawer_content").height($(window).height() + "px");
            }
        }).resize();
        if(window_width >= 1200 && $("#story1_link").data('ismultimedia') == "1"){
            $('#cross_sell_drawer').fadeOut("fast");
        }


        CROSS_SELL.clicked();
    },
    initData: function(){
        $.ajax({
            url: data_url + 'pages/cross_sell_json' + data_ext,
            dataType: 'json',
            type: 'get',
            success: function(data){
                generateJustIn(data.story_lists_just_in);

                var trending_params = {type: "article", limit: "5", title: "", container: "trending_most_read"};
                TRENDING.generate_content(data.trending_lists_trending, trending_params);

                /*var trending_params = {type: "article", limit: "5", title: "", container: "trending_most_shared"};
                TRENDING.generate_content(data.trending_lists_most_shared, trending_params);*/

                var carousel_params_top = {carouselType: "top_videos",type: "video_top_compact", section: "0", subsection: "0", show: "0", isCarousel: "0", title: "TOP VIDEOS", container: "carousel_compact_top_container"};
                carouselGenerate(data.carousel_lists_top_videos,carousel_params_top);

                var carousel_params_latest = {carouselType: "latest_videos", type: "video_latest_compact", section: "0", subsection: "0", show: "0", isCarousel: "0", title: "LATEST VIDEOS", t: "d1f23", container: "carousel_compact_latest_container"};
                carouselGenerate(data.carousel_lists_latest_videos,carousel_params_latest);


                var tracking_param = {trackingType: "tracking", type: "list"};
                trackingWidgetGenerate(data.tracker_lists_list, tracking_param);

            }
        });
    },
    getCsellElem: function() {
        for (var key in CROSS_SELL.csell_elements) {
            CROSS_SELL.csell_elements[key].height = $('.cross_sell_container #' + key).outerHeight();
        }
    },
    crsEvent: function() {
        var scrReal = $(document).scrollTop();
        if($("#cross_sell_drawer").css('display') !== 'none'){
            scr = $(document).scrollTop() + $(window).height();
            csrsellContainer = $('.cross_sell_container').height();
            csccount = $('.cross_sell_container').children().length;
            cofst = $('.cross_sell_container #glance:last').offset().top;
            //console.log(cofst);
            if (scr > csrsellContainer && crsRender == 0 && scr < ($('#holdr').height() || $('div#story_container').height())) {
                crsRender = 1;
                CROSS_SELL.loadWidget();
            }
            else if (CROSS_SELL.docPosition > scrReal && ($('.cross_sell_container #mrect1:last').offset().top - 175) > ($(window).scrollTop()) && $('.cross_sell_container').children().length > 1){
                if($('.cross_sell_container div:first').attr('id') == "mrect1" && $(".cross_sell_container #mrect1").length == 1){
                    return false;
                }
                var widget1 = $('.cross_sell_container div:first').height();
                $('.cross_sell_container div:first').remove();
                //$('.cross_sell_container #glance:last').prevAll().css('visibility', 'hidden');
                //$('.cross_sell_container #glance:last').prev().css('visibility', 'hidden');
                if($(document).scrollTop() !== 0){
                    //$('.cross_sell_container #glance:last').css("margin-top", ($(window).scrollTop() * .266)+"px");
                    //$(document).scrollTop($('.cross_sell_container #glance:last').offset().top - 75);
                    /*var tHeight = 0;
                        $.each($(".cross_sell_container #glance:last").prevAll(), function(){
                        tHeight += $(this).outerHeight();
                    });
                    tHeight = tHeight - $(window).height();*/
                    if (crsElemCount != 0) {
                        CROSS_SELL.loadWidget();
                    }
                }
            }
        }

        CROSS_SELL.docPosition = scrReal;
    },
    loadWidget: function() {
        var currentObject = Object.keys(CROSS_SELL.csell_elements)[crsElemCount];
        var mainContainer = ($('#story_container').length > 0) ? $('#story_container').outerHeight() : $('#holdr').outerHeight();
        var totalHeight = mainContainer - ($('.cross_sell_container').outerHeight() + CROSS_SELL.csell_elements[currentObject].height);
        if (-250 < totalHeight) {
            $('.cross_sell_container #' + currentObject + ":last").clone(true, true).appendTo('.cross_sell_container').css('visibility', 'visible');
            if (CROSS_SELL.csell_elements[currentObject].func !== "") {
                CROSS_SELL.callFunction(CROSS_SELL.csell_elements[currentObject].func, CROSS_SELL.csell_elements[currentObject].param);
            }
            crsElemCount = (crsElemCount == 14) ? 0 : crsElemCount + 1; // Where the magic happens
            crsRender = 0;
            // console.log(CROSS_SELL.csell_elements[currentObject]);
            // console.log(crsElemCount);
        }

        if (csellStopRender == 0) {
            $(document).ajaxStop(function() {
                CROSS_SELL.setCrs();
            });
            csellStopRender = 1;
        }
    },
    callFunction: function(fn, param) {
        switch (fn) {
            case "callGlance":
                CROSS_SELL.callGlance();
                break;
            case "callJustIn":
                CROSS_SELL.callJustIn();
                break;
            case "callTrending":
                param = (param != "") ? param : "";
                CROSS_SELL.callTrending(param);
                break;
            case "callCarousel":
                param = (param != "") ? param : "";
                CROSS_SELL.callCarousel(param);
                break;
            case "callTwitter":
                CROSS_SELL.callTwitter();
                break;
            case "callMrect":
                CROSS_SELL.callMrect(param);
                break;
            case "callButtonAds":
                CROSS_SELL.callButtonAds();
                break;
            case "callGAds":
                CROSS_SELL.callGAds();
                break;
            case "callCrowdy":
                CROSS_SELL.callCrowdy();
                break;
        }
    },
    setCrs: function() {
        if (crsRender == 1) {
            crsRender = 0;
        }
    },
    callMrect: function(ctr){
        calledMrec++;
        var $mrecHoldr = $('#cross_sell_drawer #mrect'+ctr+' .mrectHoldr');
        var length = $mrecHoldr.length;
        $mrecHoldr.eq(length-1).html('<iframe id="mrec_frame_'+calledMrec+'" scrolling="no" style="width:300px; height: 250px; border: 0px;"></iframe>');
        var mrec_frame_node = document.getElementById("mrec_frame_"+calledMrec);
        mrec_frame_node.contentWindow.contents = $ads_json.mrec.replace($initial_zone_id+1+"", zone_id+1);
        mrec_frame_node.src = 'javascript:window["contents"]';
    },
    callButtonAds: function(){
        calledButtonAds++;
        var $bAdsHolder = $('#cross_sell_drawer .bAdsHolder');
        var length = $bAdsHolder.length;

       var $current_bAds = $bAdsHolder.eq(length-1);
       $current_bAds.html('<iframe id="button_ads_frame_'+calledButtonAds+'" scrolling="no" style="width:300px; height: 620px; border: 0px;"></iframe>');
       var button_ads_frame_node = document.getElementById("button_ads_frame_"+calledButtonAds);
       if(button_ads_frame_node !== null){
         //console.log("button ads working.");
         button_ads_frame_node.contentWindow.contents = $ads_json.b_ads
          .replace($initial_zone_id+5+"", zone_id+5)
          .replace($initial_zone_id+9+"", zone_id+9)
          .replace($initial_zone_id+10+"", zone_id+10)
          .replace($initial_zone_id+11+"", zone_id+11)
          .replace($initial_zone_id+12+"", zone_id+12)
          .replace($initial_zone_id+13+"", zone_id+13);
         button_ads_frame_node.src = 'javascript:window["contents"]';
       }
    },
    callGAds: function(){
        calledGAds++;
        var $gAdsHolder = $('#cross_sell_drawer #mrect2 .mrect');
        var length = $gAdsHolder.length;

       var $current_gAds = $gAdsHolder.eq(length-1);
       $current_gAds.html('<iframe id="gAds_frame_'+calledGAds+'" scrolling="no" style="width:300px; height: 250px; border: 0px;"></iframe>');
       var gAds_frame_node = document.getElementById("gAds_frame_"+calledGAds);
        if(gAds_frame_node !== null){
         gAds_frame_node.contentWindow.contents = $ads_json.gAds;
         gAds_frame_node.src = 'javascript:window["contents"]';
       }
    },
    callGlance: function() {
        $('.cross_sell_container .at_a_glance_container').eq(-2).attr('class', '');
        $(".cross_sell_container .at_a_glance_container:last .content").empty();
        at_a_glance_params = {section: "home"};
        atAGlanceCall(at_a_glance_params);
    },
    callCarousel: function(type) {
        var cType = (type == 'top') ? "top_videos" : "latest_videos";
        $(".cross_sell_container #carousel_compact_" + type + "_container").eq(-2).attr('id', '');
        $(".cross_sell_container #carousel_compact_" + type + "_container").eq(-2).attr('class', '');
        var carousel_params = {carouselType: cType, type: "video_" + type + "_compact", section: "0", subsection: "0", show: "0", isCarousel: "0", title: "TOP VIDEOS", container: "carousel_compact_" + type + "_container"};
        $(".cross_sell_container #carousel_compact_" + type + "_container.carousel_container:last .main_carousel .stories").empty();
        $(".cross_sell_container #carousel_compact_" + type + "_container.carousel_container:last .sub_carousel .stories").empty();
        carouselCall(carousel_params);
    },
    callTwitter: function() {
        $('.cross_sell_container #twitterhldr:last a').remove();
        $('.cross_sell_container #twitterhldr:last iframe').remove();
        // Append new instance
        $('<a class="twitter-timeline" href="https://twitter.com/search?q=from%3A%40iamjuan7" data-chrome="noscrollbar nofooter noheader" data-dnt="true" data-widget-id="512555033141846017">Tweets from:@iamjuan7"</a>').insertAfter($('.cross_sell_container #twitterhldr:last .tweet_title'));
        var options = {
            "url": base_url + "res/css/widgets/tweets.css?a=sd1sdf1asd123123123dsf2"
        };
        CustomizeTwitterWidget(options);
        $(".cross_sell_container #twitterhldr:last #twitter_container").height($(window).height());
        twttr.widgets.load();
    },
    callTracking: function() {
        $(".cross_sell_container:nth-last-child(2) #tracking_widget_list .tracking_item_content").attr('class', '');
        $(".cross_sell_container:last #tracking_widget_list .tracking_item_content").empty();
        var tracking_param = {trackingType: "tracking", type: "list"};
        trackingWidgetCall(tracking_param);
    },
    callTrending: function(container) {
        if(container == "trending"){
          var trendType = (container === "trending_most_read") ? "trending" : "most_shared";
          $(".cross_sell_container #" + container + "_container .trending_content").eq(-2).attr('class', '');
          $(".cross_sell_container #" + container + "_container:last .trending_content").empty();
          var trending_params = {trendingType: trendType,type: "article", limit: "5", title: "", container: container};
          TRENDING.init(trending_params);
        }
    },
    callJustIn: function() {
        $('.cross_sell_container .just_in_container').eq(-2).attr('class', '');
        $(".cross_sell_container .just_in_container:last .content").empty();
        getJustIn();
    },
    callCrowdy: function(){
      // crowdyPage variable is in cross_sell.php
      $(".crowdyHldr").eq(-2).css({'width': '300px', 'height': '400px'}).empty();
      var crowdyHldr = '<div style="width: 300px; height: 400px;" data-crowdynews-widget="GMAnetwork/'+ crowdyPage +'-vertical'+((crowdyPage == 'lifestyle') ? '-1' : '')+'"><script src="//widget.crowdynews.com/js/widget.js" async="true"></script></div>';
      $(".crowdyHldr:last").empty().html(crowdyHldr);
    },
    loadAds: function(){
        CROSS_SELL.callMrect(1);
        CROSS_SELL.callMrect(2);
        CROSS_SELL.callMrect(3);
        CROSS_SELL.callMrect(4);
        CROSS_SELL.callButtonAds();
    },
    drawer: function() {
        csellDrawer = 1;
        $(".cross_sell_drawer_button").css("top", (($(window).height() / 2) - 100) + "px");

        $(".cross_sell_drawer_content").css({
            "height": $(window).height() - 44 + "px",
            "overflow": "auto",
            "position": "absolute",
            "background": "#fff",
            "left": "30px"
        });
        $(".cross_sell_container").css({
            "width": "344px",
            "height": $(window).width() >= 1200 ? "100%" : "80%",
            "-ms-overflow-style": "none",
            "overflow": "auto"
        });
        $("#cross_sell_drawer").css({
            "top": $(".navbar-fixed-top").height()  + "px"
        });

        $(window).bind("scroll", function() {

            if( $(window).scrollTop() > 44){
                $("#cross_sell_drawer").css({
                    "top": "70px",
                    "height" : 40 + "px"
                });

            }else{
                $("#cross_sell_drawer").css({
                    "top": "109px"
                });

            }
        });

    },
    inline: function(){
        csellDrawer = 0;
        $(".cross_sell_container").css({
            "width": "325px",
            "overflow": "hidden",
            "height": "auto"
        });


        $(".cross_sell_drawer_content").css({
            "height": "auto",
            "overflow": "hidden",
            "position": "relative",
            "background": "#fff",
            "left": "0px",
            "width": "auto"
        });

    },

    clicked: function(){

        $(".cross_sell_drawer_button").click(function() {
            var drawer = $("#cross_sell_drawer");
            if (drawer.hasClass("toggled")) {
                drawer.removeClass("toggled");
                $(".cross_sell_drawer_button_text").html("&#9664;");
                if($(window).width() <= 320){
                    $(".cross_sell_drawer_button").css("right", "-5px");
                }
                $("html, body").attr("style", "");
                $(document).unbind('touchmove');
                $(document).unbind('touchstart');
                $(document).unbind('touchend');
            } else {
                if(isMobileDevice()){
                    $("html, body").attr("style", "overflow:hidden; position:relative;");
                }
                drawer.addClass("toggled");
                CROSS_SELL.loadAds();
                $(".cross_sell_drawer_button_text").html("&#9654;");
                if($(window).width() <= 320){
                    $(".cross_sell_drawer_button").css("right", "-34px");
                    //$(".cross_sell_drawer_button").attr("style", $(".cross_sell_drawer_button").attr("style")+"right: -34px !important");
                }
				/*Google Analytics*/
				var params = {event_category:"cross sell", event_label:"Cross Sell Drawer", event_value:1};
				CUSTOM_ANALYTICS.ga_click_event(params);
				/*end*/
            }

        });
    },
    hideCrossSell: function(){
        alert("multimedia!");
    }
}
