
var glanceETag = null ;

var atAGlanceCall = function(params) {
    var oldUrl = base_url + "widgets/at_a_glance/json";
    var url = data_url + "widgets/at_a_glance_lists/" + params.section + data_ext;
    $.ajax({type: "GET",
        url: url,
        dataType: 'json',
        success: function(glance, textStatus, request) {
          var currentETag = request.getResponseHeader("ETag");
          // console.log("[CSELLWIDG Glance] Previous eTag: " + glanceETag);
          // console.log("[CSELLWIDG Glance] Current eTag: " + currentETag);

          if(glanceETag != currentETag || glanceETag == null){
            // console.log("CSELLWIDG Glance: Parsing content...");
            atAGlanceGenerateContent(glance, params);
            glanceETag = (currentETag != "") ? currentETag : glanceETag;
          } else {
            // console.log("CSELLWIDG Glance: No DOM Manipulation");
          }
        },
        // code to run if the request fails; the raw request and
        // status codes are passed to the function
        error: function(xhr, status, errorThrown) {
            console.log("At A Glance error: " + errorThrown);
            console.log("Status: " + status);
            console.dir(xhr);
        }
    });
};

var atAGlanceGenerateContent = function(glance, params) {

    
    var container = (typeof params.containerOverride != "undefined") ? params.containerOverride + " .at_a_glance_container": ".at_a_glance_container";
    //console.log("At a glance container: " + container);
    $(container).html('');
    if (glance.length > 0) {
        for (var ctr = 0; ctr < glance.length; ctr++) {
            var content = $("<div class='content'></div>");
            var sec_name = $("<a href='" + base_url + "" + glance[ctr].sec_stub + "'><div class='at_a_glance_section' style='background: #" + glance[ctr].color_code + "'>" + glance[ctr].sec_name.toUpperCase() + "</div></a>");
            content.append(sec_name);
            content.append("<div class='clear'></div>");


            var stories = $("<div class='at_a_glance_stories'></div>");
            if (glance[ctr].stories != undefined) {
                for (var dtls = 0; dtls < glance[ctr].stories.length; dtls++) {
                    if (params.for_crosssell != undefined && !params.for_crosssell && dtls == 0 && typeof glance[ctr].stories[dtls] !== 'undefined') {
                        var html = '';
                        html += '<a href="' + base_url + 'story/' + glance[ctr].stories[dtls].id + '">';
                        html += '<div class="story_thumb ' + (params.for_crosssell != undefined && !params.for_crosssell ? 'visible-xs-block' : '') + '">';
                        html += '<img class="grid_thumb" data-original="' + glance[ctr].stories[dtls].base_url + '' + glance[ctr].stories[dtls].image_filename + '" src="' + glance[ctr].stories[dtls].base_url + '' + glance[ctr].stories[dtls].image_filename + '" style="display: inline;" alt="' + glance[ctr].stories[dtls].title + '">';
                        html += '<div class="story_title_holder">';
                        html += '<div class="section_identifier ' + glance[ctr].sec_stub + '_background"></div>';
                        html += '<div class="story_title">' + glance[ctr].stories[dtls].title + '</div>';
                        html += '</div>';
                        html += '</div>';
                        html += '</a>';

                        stories.append(html);
                    }
                    if (typeof glance[ctr].stories[dtls] !== 'undefined') {
                        stories.append('<div class="story ' + (params.for_crosssell != undefined && !params.for_crosssell && dtls == 0 ? 'hidden-xs' : '') + '"><a href="' + base_url + 'story/' + glance[ctr].stories[dtls].id + '">' + '<b class="aKicker"> ' + (typeof glance[ctr].stories[dtls].kicker !== "undefined" && glance[ctr].stories[dtls].kicker != null ? glance[ctr].stories[dtls].kicker : "") + ' </b>' + glance[ctr].stories[dtls].title + '</a></div>');
                    }
                }
            }

            content.append(stories);

            var view_more = $('<div class="at_a_glance_more_button more_button"></div>');
            view_more.append("<a href='" + base_url + glance[ctr].sec_stub + "'>VIEW MORE <span class='glyph_button'>&#9654;</span></a>");
            content.append(view_more);
            $(container).append(content);
        }


        $(container).on({
            mouseenter: function() {
                $(this).find(".at_a_glance_more_button").css('visibility', 'visible');
            },
            mouseleave: function() {
                $(this).find(".at_a_glance_more_button").css('visibility', 'hidden');
            }
        }, '.content');
    }
};

var atAGlanceGenerateContainer = function() {

    var html = '';
    html += '<div class="at_a_glance_header">';
    html += '<h2 style="display: none;">At A Glance</h2>';
    html += '&#183;';
    html += '<span class="at_glance">AT <span class="a">A</span> GLANCE</span> ';
    html += '&#183;';
    html += '</div>';
    html += '<div class="at_a_glance_container">';
    html += '</div>';
    return html;

};

var justInData;
var justInProcessedTimes = 0;
var justInDisplayed = 0;
var justInIterator;
var mTrim = 0, dTrim = 0;
var equation = 0;
var justInETag = null;

var containerOverride = "";

function stopProcessJustIn($content, html){
    var stopProcess = false;
    var parent_height = $('.just_in_container').height() -
            $('.just_in_container .just_in_sub_header').outerHeight() -
            $('.just_in_container .just_in_header.row.hidden-xs').outerHeight()
            - 33;
    var window_width = $(window).width();
    if ($('#row1_right').length > 0 && window_width > 768) {
        //alert($('.just_in_container .just_in_header').height());
        var equation = window_width > 768 ? parent_height :
            ($('#row1_right').height() - $('.livestream_container').height()
            - 170) + 100;
        if ( equation > $content.height() ) {
             $content.append(html);
             justInDisplayed++;

             if( $content.height() > parent_height){
                 $("#just_in_container .content a").last().remove();
                 $('div.just_in').css('border-bottom', '1px solid #ccc');
                 $('div.just_in').eq(-1).css('border-bottom', 'none');
             }

         }else {

             if( $content.height() > parent_height){
                 $("#just_in_container .content a").last().remove();
             }
             $('div.just_in').css('border-bottom', '1px solid #ccc');
             $('div.just_in').eq(-1).css('border-bottom', 'none');
             stopProcess = true;
         }


     } else {
         if ($('.just_in_container').parent().parent().height() - 170 >
             $('.just_in_container').height() || window_width < 769) {
             if(window_width >= 769 || justInDisplayed<15){
                $content.append(html);
                justInDisplayed++;
             }
             if(window_width < 769 && justInDisplayed===15){
                 justInProcessedTimes = 2;
                 stopProcess = true;
             }
         }
         else {
             $('div.just_in').css('border-bottom', '1px solid #ccc');
             $('div.just_in').eq(-1).css('border-bottom', 'none');
             stopProcess = true;
         }
     }
     return stopProcess;
}

function processDisplayJustIn() {
    var i = 0;
    var $content = $(containerOverride+'.just_in_container .content');
    var data = justInData;
    var length = data.length;
    var html = '';

    if($('#row1_right').length > 0 && $(window).width() > 768){
        var just_in_cont_height = $('#row1_right').height() -
            ( $('.livestream_container .content').children().length ?
            $('.livestream_container').height() : 0 );
        $(".just_in_container").css('height', just_in_cont_height + 'px');
        $(".just_in_footer").css({'position' : 'absolute', 'bottom' : '0px'});
    }

    for (i = justInDisplayed; i < length; i++) {
        html = constructJustIn(i, data);
        if(stopProcessJustIn($content, html)) break;
    }

    justInProcessedTimes++;
    if (justInProcessedTimes === 3 || justInDisplayed === length) {
        clearInterval(justInIterator);
        if ($('div.just_in_container').parent().attr('id') !== "just_in_csell") {
            $(window).resize(function() { // bind the event
                if ($(window).width() >= 992) {
                    trimJustIn("desktop");
                } else {
                    trimJustIn("mobile");
                }
            }).resize();
        }
    }
}

function constructJustIn(i, data){
    return '<a href="' + (base_url+data[i].link) + '">' +
        '<div class="just_in col-xs-12">\n\
            <b class="aKicker"> ' +
        (typeof data[i].kicker !== "undefined" &&
        data[i].kicker !== null ? data[i].kicker : "") + ' </b>' +
        data[i].title +
        ' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\n\
          <div class="time">' +
        (data[i].time ? data[i].time : '') +
        '</div>' +
        '</div>' +
        '</a>';
}

function preprocessDisplayJustIn(num){
    var html = '';
    var $content = $(containerOverride+'.just_in_container .content');
    var data = justInData;
    var i = 0;
    for(i=0; i<num; i++){
        html += constructJustIn(i, data);
    }
    $content.append(html);
    return num;
}

function getJustIn(params) {
    var url;
    if(is_live){
        url = data_url+"widgets/story_lists/just_in" + data_ext;
    }else{
        url = base_url+"widgets/story_list/json/just_in";
    }
    containerOverride = (typeof params !== "undefined" && typeof params.containerOverride !== "undefined") ? (params.containerOverride + " ") : "";
    // console.log("Container Override for just in: " + containerOverride);

    $.ajax({ type : "GET",
      url: url,
      dataType: 'json',
      success: function( data, status, request ) {
        var currentETag = request.getResponseHeader("ETag");
        // console.log("[CSELLWIDG JUST IN] Previous eTag: " + justInETag);
        // console.log("[CSELLWIDG JUST IN] Current eTag: " + currentETag);

        if(justInETag != currentETag || justInETag == null){
          // console.log("CSELLWIDG JUST IN: Parsing content...");
          generateJustIn(data);
          justInETag = (currentETag != "") ? currentETag : justInETag;
        } else {
          // console.log("CSELLWIDG JUST IN: No DOM Manipulation");
        }

      },
      error: function( xhr, status, errorThrown ) {
          console.log( 'Story list just in Error: ' + errorThrown );
          console.log( "Status: " + status );
          console.dir( xhr );
      }
    });
}

function getTaggedJustIn(tag){
  var url;
  url = base_url+"widgets/story_list/tagged_just_in/"+tag;

  if(is_live){
    switch (tag) {
      case "eleksyon2016":
        url = data_url + "microsites/eleksyon2016/just_in";
      break;
      default:

    }
  }

  containerOverride = (typeof params !== "undefined" && typeof params.containerOverride !== "undefined") ? (params.containerOverride + " ") : "";
  // console.log("Container Override for just in: " + containerOverride);

  $.ajax({ type : "GET",
    url: url,
    dataType: 'json',
    success: function( data, status, request ) {
      generateTaggedJustIn(data.stories);
    },
    error: function( xhr, status, errorThrown ) {
        console.log( 'Story list just in Error: ' + errorThrown );
        console.log( "Status: " + status );
        console.dir( xhr );
    }
  });
}

function formatTime(date) {
    var hours = date.getHours();
    var minutes = date.getMinutes();
    var ampm = hours >= 12 ? 'pm' : 'am';
    hours = hours % 12;
    hours = hours ? hours : 12; // the hour '0' should be '12'
    minutes = minutes < 10 ? '0' + minutes : minutes;
    var strTime = hours + ':' + minutes + '' + ampm;

    return strTime;
}

function convertDate(timestamp) {
    var zdate = timestamp;
    var ddate = zdate.split(" ");
    var tdate = ddate[1];
    var dddate = ddate[0].split("-");
    var titime = tdate.split(':');
    var dd = dddate[1] + " " + dddate[2] + ", " + dddate[0] + " " + tdate;
    var month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

    var d = new Date(dddate[0], parseInt(dddate[1] - 1), dddate[2], parseInt(titime[0]), titime[1]);
    var dateString = month[d.getMonth()] + ' ' + d.getDate() + ', ' + d.getFullYear() + ' ' + formatTime(d);

    return dateString;
}

function generateTaggedJustIn(data){

  var html = "";
  var isMobile = $(window).width() < 768;
  var isoDate = "";
  for(var i = 0; i < data.length; i++){
    isoDate = data[i].date.replace(" ", "T")+"+0800";
    html += "<div class='j_rthumb_hldr' >";
    html += "<a href='"+base_url+data[i].type+"/"+data[i].id+"' title='"+data[i].title+"' target='_blank'>";
    html += "<div class='j_photo'>";
    html += "<img src='"+data[i].photo_url+"'></img>";
    if(data[i].type == "video"){
      html += '<img class="just_in_play" src="' + base_url + 'res/img/playbutton.png " alt="Play"/></img>';
    }
    html += "</div>";
    html += "<div class='j_title'>";
    html += data[i].title;
    html += "</div>";
    html += "<time class='j_date timeago' datetime='"+isoDate+"'>";
    html += convertDate(data[i].date);
    html += "</time>";
    html += "</a>";
    html += "</div>";

//    if(isMobile && i == 2){
//      break;
//    }
  }
  
//  $("#just_in_carousel").removeClass("owl-carousel");
//  $("#just_in_carousel").removeClass("owl-theme");
//  $("#just_in_carousel").removeClass("owl-loaded");
  $("#just_in_carousel").html(html);
  $(".j_title").dotdotdot();
  $("time.timeago").timeago();
  
    var carousel_page = 1;
    var multiplier = 6;
    var windowWidth = $(window).width();
    if(windowWidth < 480){
        multiplier = 2;
    }else if(windowWidth >= 480 && windowWidth < 768){
        multiplier = 3;
    }else if(windowWidth >= 768 && windowWidth < 992){
        multiplier = 5;
    }
        just_in_carousel = $("#just_in_carousel");
        just_in_carousel.owlCarousel({
            items: 6,
            nav:false,
            dots: false,
            loop: true,
            margin: 10,
            autoplay: true,
            autoplayTimeout: 5000,
            autoplayHoverPause:true,
            responsive: {
                0 : { items: 2 },
                481 : { items: 3 },
                768 : { items: 5 },
                992 : { items: 6}
            }
        });
        $("#next_just_in").on("click", function(){
            just_in_carousel.trigger("to.owl.carousel", [((carousel_page * multiplier)), multiplier, 100] );
    //        just_in_carousel.trigger("next.owl.carousel");
            if(carousel_page == 3){
                carousel_page = 1;
            }else{ 
               carousel_page++;
            }
        });
  
}

function generateJustIn(data){
    justInProcessedTimes = 0;
    justInDisplayed = 0;
    mTrim = 0, dTrim = 0;
    equation = 0;
  $(containerOverride+'.just_in_container .content').html(''); // on widget refresh or clone, remove previous contents
  if (data.length > 0) {
      justInData = data;
      if($(window).width() > 768) justInDisplayed = preprocessDisplayJustIn(7);
      justInIterator = setInterval(processDisplayJustIn, 3000);
  }
}

function justInContainer(){

    var html = '';

    html += '<div class="just_in_container row">';
    html += '<div class="just_in_header row visible-xs">&#183; JUST IN &#183;</div>';
    html += '<div class="just_in_header row hidden-xs">&#183;<span style="padding:11px;"></span>JUST IN<span style="padding:11px;"></span>&#183;</div>';
    html += '<div class="just_in_sub_header row hidden-xs"></div>';
    html += '<div class="content"></div>';
    html += '<div class="just_in_footer"><a href="'+base_url+'archives/just_in"><div>VIEW MORE ';
    html += '<span class="glyph_button">&#9654;</span></div></a>';
    html += '</div>';
    html += '</div>';

    return html;

}

function justInEvent() {
    $('div.just_in_footer').on('click', function(e) {
        e.preventDefault();
        $('.just_in_container .content').css('height', '100%');
        $(this).unbind("click");
    });
}

function trimJustIn(device) {
    switch (device) {
        case "mobile":
            if (mTrim === 0) {
                var totalHeight = 0;
                var eaDiv = 0;
                for (var i = 0; i < 7; i++) {
                    eaDiv = parseInt($('div.just_in_container div.content a').children().eq(i).outerHeight());
                    totalHeight += eaDiv;
                }
                $('.just_in_container .content').attr('style', 'height: ' + totalHeight + "px;");
                justInEvent();
                mTrim = 1;
                dTrim = 0;
            }
            break;
        case "desktop":
            if (dTrim === 0) {
                $('div.just_in_footer').unbind("click");
                dTrim = 1;
                mTrim = 0;
            }
            break;
    }
}


var TRENDING;

TRENDING = {
    eTag: null,
    init_read_later: function(params){
        TRENDING.get_data_read_later(params);
    },
    init: function(params) {
        TRENDING.get_data(params);
        TRENDING.mobile_view_more();
    },
    initConsolidate: function(data, params){
        TRENDING.generate_content(data, params);
        TRENDING.mobile_view_more();
    },
    get_data: function(trending_params) {
        //var oldUrl = base_url + "widgets/trending/json";
        var url = data_url+"widgets/trending_lists/" + trending_params.trendingType + data_ext;
        $.ajax({
            url: url,
            type: "GET",
            dataType: 'json',
            success: function(trendingData, status , request) {
              var currentETag = request.getResponseHeader("ETag");
              // console.log("[CSELLWIDG Trending] Previous eTag: " + TRENDING.eTag);
              // console.log("[CSELLWIDG Trending] Current eTag: " + currentETag);

              if(TRENDING.eTag != currentETag || TRENDING.eTag == null){
                // console.log("CSELLWIDG Trending: Parsing content...");
                TRENDING.generate_content(trendingData, trending_params);
                TRENDING.eTag = (currentETag != "") ? currentETag : TRENDING.eTag;
              } else {
                // console.log("CSELLWIDG Trending: No DOM Manipulation");
              }

            },
            // code to run if the request fails; the raw request and
            // status codes are passed to the function
            error: function(xhr, status, errorThrown) {
                console.log("Trending Widget View Error: " + errorThrown);
                console.log("Status: " + status);
                console.dir(xhr);
            }
        });
    },
    get_data_read_later: function(trending_params) {
        $.ajax({
            url: base_url + "widgets/trending/json_read_later",
            type: "GET",
            dataType: "json",
            data: trending_params,
            success: function(trendingData) {
                TRENDING.generate_content(trendingData, trending_params);
            },
            // code to run if the request fails; the raw request and
            // status codes are passed to the function
            error: function(xhr, status, errorThrown) {
                console.log("Trending Widget View Error: " + errorThrown);
                console.log("Status: " + status);
                console.dir(xhr);
            }
        });
    },
    container : function(trending_params){

        var html = '';
        var view_more_link = '';

        switch(trending_params.container){
            case 'trending_home':
                    view_more_link = 'javascript:;';
                break;

            case "trending_read_later":
                    view_more_link = base_url + "archives/saved";
                break;

            case "trending_most_shared":
                view_more_link = base_url + "archives/most_shared";
                break;

            case "trending_most_read":
                view_more_link = base_url  + "archives/most_read";
                break;

            default:
                break;
        }


        html += '<div id="' + trending_params.container + '_container" class="' + trending_params.container + '_container">';
        html += '<h2 class="trending_title"><span class="hidden">Trending</span></h2>';
        html += '<div class="trending_content">';
        html += '</div>';
        html += '<div class="clear"></div>';
        html += '<div class="trending_view_more_button ' + ( trending_params.container != "trending_home" ? '' : 'visible-xs' ) + '">';
        html += '<a href="' + view_more_link + '">VIEW MORE <span class="glyph_button">&#9654;</span></a>';
        html += '</div>';
        html += '</div>';

        return html;

    },
    generate_content: function(trendingData, trending_params) {

        var widget_container;
        var parent_widget;
        var mystream = false;
        var containerOverride = "";

        widget_container = "#" + trending_params['container'] + "_container";
        widget_container = (typeof trending_params.containerOverride !== "undefined") ? (trending_params.containerOverride + " " + widget_container) : widget_container;
        $(widget_container + " .trending_content").html(''); // on widget refresh or clone, remove previous contents
        //console.log("Container for trending: " + widget_container);
        mystream = is_mystream(widget_container);
        parent_widget = $(widget_container).parent().parent();

        $(widget_container + " .trending_title").html(trending_params['title']);

        if( trendingData.trending != undefined && trendingData.trending.length > 0){
            var $content = $(widget_container + " .trending_content");
            if(mystream===false) $content.html('');
            for(var ctr = 0; ctr < trendingData.trending.length; ctr++){
                var res = $('<div class="trending_stories col-md-12  '+ ( trending_params['container'] == "trending_home"  && ctr > 4  ? 'hidden-xs' : '' ) + '"></div>');
                var html = '<div class="title">';

                if( trending_params['container'] == "trending_home" || trending_params['container'] == "trending_read_later"){
                    html += '<span class="glyphicon glyphicon-' + ( trendingData.trending[ctr].type == 1 ? 'picture' : (trendingData.trending[ctr].type == 2 ? 'facetime-video' : 'list-alt' )) + '"></span>';
                }
                
                if(trending_params['container'] == "trending_most_read"){
                    var url = trendingData.trending[ctr].url.replace("/news/", "")+"/most_read";
                } else if(trending_params['container'] == "trending_home"){
                    if(trendingData.trending[ctr].type == 0){
                        var url = trendingData.trending[ctr].url.replace("/news/", "")+"/most_read";
                    } else {
                        var url = trendingData.trending[ctr].url.replace("/news/", "");
                    }
                } else {
                    var url = trendingData.trending[ctr].url.replace("/news/", "")+"/most_shared";
                }

                var title = trendingData.trending[ctr].title == "" ? "no-title" : trendingData.trending[ctr].title;
                if(trending_params['container'] !== "trending_home"){
                    html += '<a href="' + base_url + url + '">' + "<b class='aKicker'>"+(typeof trendingData.trending[ctr].kicker !=="undefined" && trendingData.trending[ctr].kicker != null ? trendingData.trending[ctr].kicker: '')+"</b>" + title + '</a>';
                } else {
                    html += '<a href="' + base_url + url + '">' + title + '</a>';
                }
                html += '</div>';
                res.append(html);

                if(mystream === true){
                    if( $(widget_container).height() < parent_widget.height() ){
                        $content.append(res);

                        if($(widget_container).height() > parent_widget.height()){
                            $(widget_container + " .trending_stories:last-child").remove();
                        }
                    }else{
                        if($(widget_container).height() > parent_widget.height()){
                            $(widget_container + " .trending_stories:last-child").remove();
                        }
                        break;
                    }
                }else{
                    $content.append(res);
                }


            }

            if(mystream === true){
                $(widget_container).find(".trending_view_more_button").css({"position": "absolute", "bottom": "0px", "width": "100%"});
            }


        }

    },
    mobile_view_more: function(){
        $(".trending_view_more_button.visible-xs").click(function(){
            $(".trending_stories.hidden-xs").removeClass('hidden-xs');
            $(this).addClass('hidden');
        });
    },

    read_later_view_more: function(){

    }

};

var carouselETag = {top_videos: null, latest_videos: null};

var carouselCall = function(params) {
    // data: params
    // console.log(params);
    var oldUrl = base_url + "widgets/carousel/json";
    var url = data_url + "widgets/carousel_lists/" + params.carouselType + data_ext;
    $.ajax({
        url: url,
        type: "GET",
        data: params,
        dataType: 'json',
        success: function(newsHardcore, status, request) {
          var currentETag = request.getResponseHeader("ETag");
          // console.log("[CSELLWIDG Carousel "+params.container+"] Previous eTag: " + carouselETag[params.carouselType]);
          // console.log("[CSELLWIDG Carousel "+params.container+"] Current eTag: " + currentETag);

          if(carouselETag[params.carouselType] != currentETag || carouselETag[params.carouselType] == null){
            // console.log("CSELLWIDG Carousel "+params.container+": Parsing content...");
            carouselGenerate(newsHardcore, params);
            carouselETag[params.carouselType] = (currentETag != "") ? currentETag : carouselETag[params.carouselType];
          } else {
            // console.log("CSELLWIDG Carousel "+params.container+": No DOM Manipulation");
          }

        },
        // code to run if the request fails; the raw request and
        // status codes are passed to the function
        error: function(xhr, status, errorThrown) {
            console.log("Carousel View Error: " + errorThrown);
            console.log("Status: " + status);
            console.dir(xhr);
        }
    });

};


var carouselGenerate = function(newsHardcore, params) {
    var container = '';
    var main_col = 0;
    var sub_col = 0;

    var widget_container;
    var parent_widget;
    var mystream = false;

    var w = 0;

    var containerOverride = (typeof params.containerOverride !== "undefined") ? (params.containerOverride + " ") : "";

    widget_container = (containerOverride + "#" + params.container);
    // console.log("Carousel override: "+widget_container);
    mystream = is_mystream(widget_container);
    parent_widget = $(widget_container).parent().parent();
    $(containerOverride+"#" + params.container + " .main_carousel .stories").html('');
    $(containerOverride+"#" + params.container + " .sub_carousel .stories").html('');

    if (params.type == "media" || params.type == "show") {
        $(containerOverride+"#" + params.container + " .main_carousel").prepend('<h2 id="carousel_title"></h2>');
        sub_col = 'col-md-7 col-sm-6';
        main_col = 'col-md-5 col-sm-6';
        $(containerOverride+"#" + params.container + " .sub_carousel").addClass(sub_col);
        $(containerOverride+"#" + params.container + " .main_carousel").addClass(main_col);

        $("#" + params.container + " .main_carousel").css("padding", "5px 5px 5px 0px");
    } else if (params.type == "video" || params.type == "video_latest_publicaffairs") {
        //$("#carousel_container").prepend('<h2 id="carousel_title"></h2>');
        sub_col = 'col-md-5 col-sm-5';
        main_col = 'col-md-7 col-sm-7';
        $(containerOverride+"#" + params.container + " .sub_carousel").addClass(sub_col);
        $(containerOverride+"#" + params.container + " .sub_carousel").css({"padding": "5px"});
        $(containerOverride+"#" + params.container + " .main_carousel").addClass(main_col);
        $(containerOverride+"#" + params.container + " .main_carousel").css({"padding": "5px"});
        if ( params.type == "video" && $(window).width() > 768 ){
            $("#" + params.container + " .main_carousel").css({"min-height": "430px"});
        }else if( params.type == "video" && $(window).width() < 769 ){
            $("#" + params.container + " .main_carousel").css({"min-height": "auto"});
        }
    } else {
        sub_col = 12;
        main_col = 12;
    }

    $(containerOverride+"#" + params.container + " #carousel_title").html(params.title);
    if (newsHardcore.sec_stub != undefined) {
        $(containerOverride+"#" + params.container + " #carousel_title").addClass(newsHardcore.sec_stub + "_text");
    }

    if (newsHardcore.details != undefined && newsHardcore.details.length > 0) {
        for (var ctr = 0; ctr < newsHardcore.details.length; ctr++) {
            var html = '';
            var image_url = '';

            if (ctr == 0 && params.isCarousel == 0) {
                container = $(containerOverride+"#" + params.container + " .main_carousel .stories");
                image_url = newsHardcore.details[ctr].base_url + (newsHardcore.details[ctr].type == "story" ? '320_' : '') + newsHardcore.details[ctr].image_file;
                html = '<div class="story">';
                var link = $("<a href='" + base_url + "" + newsHardcore.details[ctr].type + "/" + newsHardcore.details[ctr].id + "' title='" + htmlEntities(newsHardcore.details[ctr].title) + "'></a>");


            } else {
                image_url = newsHardcore.details[ctr].base_url + (newsHardcore.details[ctr].type == "story" ? '240_' : '') + newsHardcore.details[ctr].image_file;
                container = $(containerOverride+"#" + params.container + " .sub_carousel .stories");
                if (params.isCarousel == 0) {
                    var link = $('<a ' + (params.for_crosssell != undefined && !params.for_crosssell && ctr > 1 ? 'class="hidden-xs"' : '') + ' href="' + base_url + '' + newsHardcore.details[ctr].type + '/' + newsHardcore.details[ctr].id + '" title="' + htmlEntities(newsHardcore.details[ctr].title) + '"></a>');
                } else {
                    var link = $('<a href="' + base_url + "" + newsHardcore.details[ctr].type + "/" + newsHardcore.details[ctr].id + '" class="carousel-nav ' + (params.for_crosssell != undefined && !params.for_crosssell && (ctr == 0 || ctr > 2) ? 'hidden-xs' : '') + '" title="' + htmlEntities(newsHardcore.details[ctr].title) + '"></a>');
                }
                html = '<div class="story ' + (ctr == 0 ? 'active' : '') + ((params.type == 'video_latest_compact' || params.type == 'video_top_compact') ? ' col-md-6 col-sm-6 col-xs-6 ' : (params.type == 'media') ? ' col-xs-6 ' + (ctr > 2 ? 'hidden-xs' : '') : (ctr > 0 ? ' col-xs-6 col-sm-12' : '')) + '" data-attr-type="' + newsHardcore.details[ctr].type + '"  data-attr-id="' + newsHardcore.details[ctr].id + '">';
            }

//                    html += '<div class="carousel_image ' + (newsHardcore.details[ctr].type == "video" ? 'video' : '') + '" style="">';
            html += '<div class="carousel_image ' + (newsHardcore.details[ctr].type == "video" ? 'video' : '') + '" style="">';
            html += '<img class="video_thumbnail" src="' + image_url + '" data-original="' + image_url + '" style="width: 100%; height: 100%;" alt="' + newsHardcore.details[ctr].title + '">';
            if (newsHardcore.details[ctr].type == "video") {
                html += '<img class="play" src="' + assets_url + 'img/play.png" data-original="' + base_url + 'res/img/playbutton.png" alt="play">';
            }
            html += '</div>';
            html += '<div class="carousel_title_teaser"><div class="carousel_title">' + newsHardcore.details[ctr].title + '</div>';
            html += '<div class="carousel_teaser ' + (newsHardcore.details[ctr].type == "story" ? 'hidden-xs' : '') + '">' + (newsHardcore.details[ctr].type == "story" ? newsHardcore.details[ctr].teaser : '') + '</div>';
            html += '</div>';
            if (ctr == 0) {
                html += "<div class='clear'></div>";
            }
            html += "</div>";
            link.append(html);
            if ((params.type == 'video_latest_compact' || params.type == 'video_top_compact') && ctr != 0) {
                var j = ctr - 1;
                if (j % 2 == 0) {
                    var row = $("<div class=''></div>");
                    link.find(".story").addClass("odd");
                    row.append(link);
                } else {
                    row.append(link);
                    link.find(".story").addClass("even");
                    row.append("<div class='clear'></div>");
                    container.append(row);
                }
            } else {

                container.append(link);

            }
        }
//                container.append("<div class='clear'></div>");

        if (params.isCarousel == 1) {
            is_carousel = true;
            if ($(window).width() > 767) {
                var toClone = $(containerOverride+"#" + params.container + " .sub_carousel .stories .active").clone();


                var link = $('<a href="' + base_url + toClone.attr('data-attr-type') + '/' + toClone.attr('data-attr-id') + '" title="' + htmlEntities(toClone.find('.carousel_title').text()) + '"></a>').append(toClone);

                $(containerOverride+"#" + params.container + " .main_carousel .stories").html(link);

                var run_rotate = setInterval("featured_rotate('" + params.container + " .sub_carousel .stories', '" + params.container + " .main_carousel .stories')", 5000);
                $(containerOverride+"#" + params.container + " .sub_carousel").hover(
                        function() {
                            clearInterval(run_rotate);
                        },
                        function() {
                            run_rotate = setInterval("featured_rotate('" + params.container + " .sub_carousel .stories', '" + params.container + " .main_carousel .stories')", 5000);
                        }
                );
            } else {
                is_carousel = false;
                var toClone = $(containerOverride+"#" + params.container + " .sub_carousel .stories .active").clone();
                var link = $("<a href='" + base_url + toClone.attr('data-attr-type') + '/' + toClone.attr('data-attr-id') + "'></a>").append(toClone);
                $(containerOverride+"#" + params.container + " .main_carousel .stories").html(link);
                $(containerOverride+"#" + params.container + " .sub_carousel .stories .story").removeClass("active");
            }
            $(window).resize(function() {
                if ($(this).width() <= 767) {
                    if (is_carousel == true) {
                        clearInterval(run_rotate);
                        $(containerOverride+"#" + params.container + " .sub_carousel").unbind('mouseenter').unbind('mouseleave');
                        var toClone = $(containerOverride+"#" + params.container + " .sub_carousel .stories .story").first().clone();
                        var link = $("<a href='" + base_url + toClone.attr('data-attr-type') + '/' + toClone.attr('data-attr-id') + "'></a>").append(toClone);
                        $(containerOverride+"#" + params.container + " .main_carousel .stories").html(link);
                        $(containerOverride+"#" + params.container + " .sub_carousel .stories .story").removeClass("active");
                        is_carousel = false;
                    }
                } else {
                    if (is_carousel == false) {
                        var toClone = $("#" + params.container + " .sub_carousel .stories .story").first().addClass('active');
                        run_rotate = setInterval("featured_rotate('" + params.container + " .sub_carousel .stories', '" + params.container + " .main_carousel .stories')", 5000);
                        is_carousel = true;
                    }
                }
            });
        }
        $(window).resize(function(){
            if ( $(this).width() <= 767 && params.type == "video" ){
                $(containerOverride+"#" + params.container + " .main_carousel").css({"min-height": "auto"});
            }else{
                if(params.type == "video" ){
                    $(containerOverride+"#" + params.container + " .main_carousel").css({"min-height": "430px"});
                }
            }
        });
        if (mystream === true && (params.container == "carousel_compact_latest_container" || params.container == "carousel_compact_top_container")) {

            if (params.container == "carousel_compact_latest_container") {
                $("#carousel_compact_latest_container .sub_carousel .stories .story .carousel_title, #carousel_compact_latest_container .main_carousel .stories .story .carousel_title").addClass("ellipsis");
                $("#carousel_compact_latest_container .sub_carousel .stories .story .carousel_title").css({"height": "35px", "max-height": "35px", "overflow": "hidden"});
            }

            if (params.container == "carousel_compact_top_container") {

                $("#carousel_compact_top_container .sub_carousel .stories .story .carousel_title, #carousel_compact_top_container .main_carousel .stories .story .carousel_title").addClass("ellipsis");
                $("#carousel_compact_top_container .sub_carousel .stories .story .carousel_title").css({"height": "35px", "max-height": "35px", "overflow": "hidden"});

            }
            $(".ellipsis").dotdotdot();
        }
    }

};


var carouselContainer = function(params){
    var html = '';

    switch(params.container){

        case 'carousel_compact_top_container':

            html += '<div id="carousel_compact_top_container" class="carousel_container">';
            html += '<div class="main_carousel">';
            html += '<div class="stories">';
            html += '</div>';
            html += '</div>';
            html += '<div class="sub_carousel">';
            html += '<div class="stories">';
            html += '</div>';
            html += '<div class="clear"></div>';
            html += '</div>';
            html += '</div>';

            break;

        case 'carousel_compact_latest_container':

            html += '<div id="carousel_compact_latest_container" class="carousel_container">';
            html += '<div class="main_carousel">';
            html += '<div class="stories">';
            html += '</div>';
            html += '</div>';
            html += '<div class="sub_carousel">';
            html += '<div class="stories">';
            html += '</div>';
            html += '<div class="clear"></div>';
            html += '<div class="carousel_view_more_button"><a href="' + base_url + 'video"><div>VIEW MORE <span class="glyph_button">&#9654;</span></div></a></div>';
            html += '</div>';
            html += '<div class="clear"></div>';
            html += '</div>';

            break;

        case 'carousel_story_container':

            html += '<div id="carousel_story_container" class="carousel_container">';
            html += '<div class="col-md-12 no_pad_left">';
            html += '<div class="main_carousel">';
            html += '<div class="stories">';
            html += '</div>';
            html += '</div>';
            html += '<div class="sub_carousel">';
            html += '<div class="stories">';
            html += '</div>';
            html += '<div class="clear"></div>';
            html += '<div class="carousel_view_more_button"><a href="#"><div>VIEW MORE <span class="glyph_button">&#9654;</span></div></a></div>';
            html += '</div>';
            html += '</div>';
            html += '</div>';
            html += '<div class="clear"></div>';

            break;

        default:
            break;
    }

    return html;
};

var featured_rotate = function(parent_div, display_div) {

    var slide_current = $("#" + parent_div + " .active");

    var count = $("#" + parent_div).children().length;
    var slide_first = $("#" + parent_div).children().first().find('.story');
    if ($(window).width() > 480) {
        var slide_last = $("#" + parent_div).children().last().find('.story');
    } else {
        var slide_last = $("#" + parent_div).children().eq(1).find('.story');
    }
    if (slide_last.get(0) === slide_current.get(0)) {
        slide_current.removeClass("active");
        $("#" + parent_div + " .active").removeClass("active");
        slide_first.addClass("active");
        if (display_div != '') {
            var toClone = slide_first.clone();
            var link = $("<a href='" + base_url + "" + toClone.attr('data-attr-type') + "/" + toClone.attr('data-attr-id') + "' title='" + htmlEntities(toClone.find('.carousel_title').text()) + "'></a>").append(toClone);
            $("#" + display_div).html(link);
        }
    } else {
        slide_current.removeClass("active");
        var toClone = slide_current.parent().next().find('.story').addClass("active");

        if (display_div != '') {

            var clone = toClone.clone();
            var link = $("<a href='" + base_url + "" + toClone.attr('data-attr-type') + "/" + toClone.attr('data-attr-id') + "' title='" + htmlEntities(toClone.find('.carousel_title').text()) + "'></a>").append(clone);
            $("#" + display_div).html(link);

        }
    }

};

var trackingEtag = "";
var trackingWidgetSlideshow = function(params) {


    $.ajax({
        url: base_url + "widgets/slideshow/json",
        type: "GET",
        dataType: "json",
        data: params,
        success: function(trackingWidgetSlideshowData) {

            var container = $("#tracking_slideshow");
            for (var ctr = 0; ctr < trackingWidgetSlideshowData.length; ctr++) {

                var img = "<img src='" + trackingWidgetSlideshowData[ctr].thumb_path + trackingWidgetSlideshowData[ctr].featured_banner + "' alt='" + trackingWidgetSlideshowData[ctr].title + "' />";
                var item = $("<div class='item'></div>").append(img);
                var details = $("<div class='item_details'></div>");
                details.append($("<div class='item_details_title'>" + trackingWidgetSlideshowData[ctr].title + "</div>"));
                details.append($("<div class='item_details_desc'>" + trackingWidgetSlideshowData[ctr].description + "</div>"));
                details.append($("<div class='item_view_more'><a href='" + trackingWidgetSlideshowData[ctr].link + "'>VIEW MORE <span class='glyph_button'>&#9654;</span></a></div>"));


                item.append(details);
                container.append(item);
            }

            $("#tracking_slideshow").owlCarousel({
                //            navigation: true, // Show next and prev buttons
                slideSpeed: 300,
                paginationSpeed: 400,
                singleItem: true,
                lazyLoad: true,
                navigation: false,
                autoPlay: true

            });
        },
        // code to run if the request fails; the raw request and
        // status codes are passed to the function
        error: function(xhr, status, errorThrown) {
            console.log("Slideshow Tracking Error: " + errorThrown);
            console.log("Status: " + status);
            console.dir(xhr);
        }
    });
};


var trackingWidgetCall = function(params) {
    var oldUrl = base_url + "widgets/tracking/json";
    var url = data_url + "widgets/tracker_lists/" + params.trackingType + data_ext;
    $.ajax({
        url: url,
        type: "GET",
        dataType: 'json',
        success: function(trackingWidgetData, status, request) {

          var currentETag = request.getResponseHeader("ETag");
          console.log("[CSELLWIDG Carousel Tracking] Previous eTag: " + trackingEtag);
          console.log("[CSELLWIDG Carousel Tracking] Current eTag: " + currentETag);

          if(trackingEtag != currentETag || trackingEtag == null){
            console.log("CSELLWIDG Carousel Tracking: Parsing content...");
            trackingWidgetGenerate(trackingWidgetData, params);
            trackingEtag = (currentETag != "") ? currentETag : trackingEtag;
          } else {
            console.log("CSELLWIDG Carousel Tracking: No DOM Manipulation");
          }

        },
        // code to run if the request fails; the raw request and
        // status codes are passed to the function
        error: function(xhr, status, errorThrown) {
            console.log("Tracking Widget Error: " + errorThrown);
            console.log("Status: " + status);
            console.dir(xhr);
        }
    });

};

var trackingWidgetGenerate = function(trackingWidgetData, params) {
    var widget_container;
    var parent_widget;
    var mystream = false;
    if (params.type == "list") {
        if (trackingWidgetData.length > 0) {

            widget_container = (typeof params.containerOverride !== "undefined") ? (params.containerOverride + " #tracking_widget_list") : "#tracking_widget_list";
            console.log(widget_container);
            //$(widget_container + ".tracking_widget_container").empty();
            var html = "<ul class='tracking_item_container'></ul>";

            mystream = is_mystream(widget_container);
            parent_widget = $(widget_container).parent().parent();

            $(widget_container + " .tracking_item_content").append(html);
            for (var ctr = 0; ctr < trackingWidgetData.length; ctr++) {

                var html = "";
                html += "<li>";
                html += "<a href='" + trackingWidgetData[ctr].link + "' title='" + trackingWidgetData[ctr].title + "'>";
                html += "<div style='background: url(" + trackingWidgetData[ctr].thumb_path + trackingWidgetData[ctr].list_thumb.replace(" ", "%20") + ")'></div>";
                html += "</a>";
                html += "</li>";
                if (mystream === true) {
                    if ($(widget_container).height() < parent_widget.height()) {
                        $(widget_container + " .tracking_item_content .tracking_item_container").append(html);
                    } else {
                        break;
                    }
                } else {
                    $(widget_container + " .tracking_item_content .tracking_item_container").append(html);
                }

            }
            $(widget_container).show();
        } else {
            $(widget_container).hide();
        }
    } else if (params.type == "banner") {
        if (trackingWidgetData.length > 0) {
            var html = "<ul class='tracking_item_container'>";
            for (var ctr = 0; ctr < trackingWidgetData.length; ctr++) {
                html += "<li " + (ctr == 2 ? "class='hidden-md'" : "") + ">";
                html += "<div class='tracking_item'>";
                html += '<a class="hidden-sm hidden-xs" href="' + trackingWidgetData[ctr].link + '" title="' + trackingWidgetData[ctr].title + '">';
                html += "<img src='" + trackingWidgetData[ctr].thumb_path + trackingWidgetData[ctr].homepage_thumb + "' width='275' height='125' title='" + trackingWidgetData[ctr].title + "' alt='" + trackingWidgetData[ctr].title + "'/>";
                html += '</a>';
                html += '<a class="visible-sm "href="' + trackingWidgetData[ctr].link + '">';
                html += "<img src='" + trackingWidgetData[ctr].thumb_path + trackingWidgetData[ctr].list_thumb.replace(" ", "%20") + "' width='275' height='55' alt='" + trackingWidgetData[ctr].title + "'/>";
                html += '</a>';
                if (trackingWidgetData[ctr].stories.details != undefined && trackingWidgetData[ctr].stories.details.length > 0) {
                    html += "<ul class='tracking_item_stories hidden-sm'>";
                    var dets = "";

                    for (var q = 0; q < trackingWidgetData[ctr].stories.details.length; q++) {
                        dets += "<li><a href='" + base_url + "" + trackingWidgetData[ctr].stories.details[q].type + "/" + trackingWidgetData[ctr].stories.details[q].id + "'><div>" + trackingWidgetData[ctr].stories.details[q].title + "</div></a></li>";
                    }
                    html += dets;
                    html += "</ul>";
                }
                html += "</div>";
                html += "</li>";
            }
            html += "</ul>";
            html += "<div class='clear'></div>";
            $("#tracking_widget_banner .tracking_item_content").html(html);
            $("#tracking_widget_banner").show();
        } else {
            $("#tracking_widget_banner").hide();
        }
    } else if (params.type == "carousel") {
        if (trackingWidgetData.length > 0) {
            var html = "<ul class='tracking_item_container'>";


            var first;
            for (var ctr = 0; ctr < trackingWidgetData.length; ctr++) {
                if (ctr == 0) {
                    first = trackingWidgetData[ctr].tag_stub;
                }
                html += "<li class='tracking_item' data-attr-stub='" + trackingWidgetData[ctr].tag_stub + "' data-attr-title='" + trackingWidgetData[ctr].title + "' data-attr-img='" + trackingWidgetData[ctr].thumb_path + trackingWidgetData[ctr].preview_thumb + "' data-attr-link='" + trackingWidgetData[ctr].link + "'>";
                html += "<a href='javascript:;' class='tracking_carousel_item'>";
                html += "<div class='tracking_carousel_image_list' style='background: url(" + trackingWidgetData[ctr].thumb_path + trackingWidgetData[ctr].list_thumb.replace(" ", "%20") + ")'></div>";
                html += "</a>";
                html += "</li>";
            }
            html += "</ul>";

            $("#tracking_widget_carousel .tracking_carousel_list").html(html);
            $("#tracking_widget_carousel").show();
        } else {
            $("#tracking_widget_carousel").hide();
        }

    }
}

var trackingWidgetContainer = function(params) {
    var html = '';

    if (params.type == "list") {

        html += '<div id="tracking_widget_list" class="tracking_widget_container">';
        html += '<div class="tracking_content_title"></div>';
        html += '<div class="tracking_item_content">';
        html += '</div>';
        html += '<div class="clear"></div>';
        html += '<div class="tracking_view_more_button row"><a href="<?php echo BASE_URL; ?>tracking"><div>VIEW MORE <span class="glyph_button">&#9654;</span></div></a></div>';
        html += '</div>';

    } else if (params.type == "banner") {

        html += '<div id="tracking_widget_banner" class="tracking_widget_container hidden-xs">';
        html += '<h2 class="tracking_content_title">STORIES WE\'RE TRACKING</h2>';
        html += '<div class="tracking_item_content">';
        html += '</div>';
        html += '<div class="clear"></div>';
        html += '<div class="tracking_view_more_button row"><a href="<?php echo BASE_URL ?>tracking"><div>VIEW MORE <span class="glyph_button">&#9654;</span></div></a></div>';
        html += '</div>';

    } else if (params.type == "carousel") {

        html += '<div id="tracking_widget_list" class="tracking_widget_container">';
        html += '<div class="tracking_content_title"></div>';
        html += '<div class="tracking_item_content">';
        html += '</div>';
        html += '<div class="clear"></div>';
        html += '<div class="tracking_view_more_button row"><a href="<?php echo BASE_URL; ?>tracking"><div>VIEW MORE <span class="glyph_button">&#9654;</span></div></a></div>';
        html += '</div>';
    }

    return html;
}

var tracking_carousel = function() {

    var parent_div = $("#tracking_widget_carousel .tracking_carousel_item");
    var slide_current = parent_div.find(".active");
    var slide_first = parent_div.children().first();
    var slide_last = parent_div.children().last();
    var count = parent_div.children().length;

    if (slide_last.get(0) === slide_current.get(0)) {
        slide_current.removeClass("active");
        slide_first.addClass("active");
        $("#tracking_widget_carousel .tracking_widget_carousel_container .tracking_carousel_details_container").html(tracking_carousel_items[slide_first.attr('data-attr-stub')]);
    } else {
        slide_current.removeClass("active");
        var slide_next = slide_current.parent().next().find('.tracking_item').addClass("active");
        $("#tracking_widget_carousel .tracking_widget_carousel_container .tracking_carousel_details_container").html(tracking_carousel_items[slide_next.attr('data-attr-stub')]);
    }
};

