var isInitial = true,
    end_of_result = false,
    curStory = 1,
    nxtStory = 2,
    nextStoryId = 1,
    prevCount = 1,
    socialRibbonContent = ['st_facebook_custom', 'st_twitter_custom', 'st_googleplus_custom', 'st_linkedin_custom', 'st_email_custom'],
    socialRibbonCount = ['st_facebook_vcount', 'st_twitter_vcount', 'st_googleplus_vcount', 'st_email_vcount', 'st_linkedin_vcount'],
    filters = ['just_in', 'most_read', 'most_shared', 'top_picks', 'breaking_news'],
    story_id = 0,
    story_origin = '',
    origin_name = '',
    bOutbrain = 0,
    font_size = 18,
    line_height = 25,
    initialPop = true,
    idRetry = 0,
    retryButtonActive = 0,
    nextId = 0,
    stories = {};

var getCrossSell = function() {
    var story_container_attr = $('#story_container').attr('style');

    // var at_a_glance_params = {section: "home"};
    // atAGlanceCall(at_a_glance_params);
}

var setLoadingButton = function(type){
  $("#load_more").show();
  if(type == 'retry'){
    $("#load_more").css({"cursor": "pointer"});
    $('#loading_article').hide();
    $('#retry_load').show();
    retryButtonActive = 1;
  } else {
    $("#load_more").css({"cursor": "initial"});
    $('#loading_article').show();
    $('#retry_load').hide();
    retryButtonActive = 0;
  }
}

function getNextArticle(){
  var order = '';
  setLoadingButton("loading");
  if (story_origin == 'top_picks') {
      order = '&order=' + tpOrder;
  }
  $.ajax({
      url: base_url + "story/" + story_id + "/" + story_origin + "?nextStory=" + nextStoryId + order,
      dataType: "json",
      timeout: 180000,
      success: function(data) {
          if (data.id > 0) {
              nextId = data.id;
              getStaticArticle(data.id);

          } else {
              end_of_result = true;
              $('#load_more').hide();
          }
          isLoading = false;
      },
      error: function(xhr, status, errorThrown) {
        if(idRetry == 0 && errorThrown == "timeout"){
          nextStoryEvent();
          idRetry = 1;
        } else {
          //console.log(status);
          isLoading = false;
          //end_of_result = true;
          setLoadingButton("retry");
        }

      }
  });
}

var nextStoryEvent = function() {
    if (end_of_result === false && $(window).scrollTop() + window.innerHeight > $('#story' + nextStoryId).offset().top) {
        //console.log("test");
        isLoading = true;
        $(window).unbind('scroll', nextStoryEvent); // Unbind until the next article is generated
        getNextArticle();
    }
};

var loadLeaderboardDFP = function($story_leaderboard_frame_node){
    var $leaderboardParent = $story_leaderboard_frame_node.parent();
    $story_leaderboard_frame_node.remove();
    var sec_caps = dfp_details[stories['story' + nextStoryId].ad].cap;
    loadAd($leaderboardParent, 'GNO_'+sec_caps+'_Article_Leaderboard_'+((loadedDFP-1)%4+1), [728, 90]);
};

var loadMrectDFP = function($mrec_frame_node){
    var $mrecParent = $mrec_frame_node.parent();
    $mrec_frame_node.remove();
    var sec_caps = dfp_details[stories['story' + nextStoryId].ad].cap;
    loadAd($mrecParent, 'GNO_'+sec_caps+'_Article_Mrec_'+((loadedDFP-1)%4+1), [300, 250]);
    loadedDFP++;
};

var loadArticleData = function(data, id) {
    if (Object.keys(data).length > 0) {
        var regspaces = new RegExp(' ', 'g');
        var currArticleTags = data.story.tags.replace(regspaces, "|");
        zone_id = data.zone_story * 1;
        if (zone_id == 8701)
            zone_id = 8700; //for ulat filipino on story
        else if (zone_id == 8025)
            zone_id = 8475; //boxing on story
        else if (zone_id == 8075)
            zone_id = 8125; //basketball
        else if (zone_id == 8175)
            zone_id = 8225; //football
        else if (zone_id == 8275)
            zone_id = 8325; //other sports

        var html = '';

        nextStoryId++;
        if (story_origin == 'top_picks') {
            tpOrder++;
        }
        html = generateArticleContent(data);
        createStoryObject(data, nextStoryId);
        $(window).bind('scroll', nextStoryEvent); // Re-bind event due to unbinding when loading next article
        $('#story_container').children().eq(-2).after(html).promise().done(function() {
            if (window_width >= 768) {
                var $story_leaderboard_frame_node = $("#story_leaderboard_frame_" + nextStoryId);
                if(dfp_zones.indexOf(zone_id)>-1){
                    loadLeaderboardDFP($story_leaderboard_frame_node);
                }
                else{
                  var story_leaderboard_frame_node = document.getElementById("story_leaderboard_frame_" + nextStoryId);
                  story_leaderboard_frame_node.contentWindow.contents = $ads_json.leaderboard.replace($initial_zone_id + "", zone_id * 1 + 24).replace($initial_synad, currArticleTags);
                  story_leaderboard_frame_node.src = 'javascript:window["contents"]';
                }
            }
        }); //Append to container

        $('#story_container').children().eq(-2).after("<iframe id='alexa_story_"+nextStoryId+"' style='display:none;'></iframe>");
        loadAlexa(nextStoryId);
        contentResize(nxtStory);
        story_id = id; // Global var
        csell_zoneid = zone_id;
        csell_article_tags = currArticleTags;
        if(typeof FB !== "undefined"){
          FB.XFBML.parse(document.getElementById('story'+nextStoryId));
        }

        if(data.story.saf != "1"){
          loadBannerAd(nextStoryId, currArticleTags)
          loadMrect((parseInt(zone_id) + 1), nextStoryId, currArticleTags);
          loadOutbrain(nextStoryId, (base_url + data.story.link));
          related_content_params = {id: id, start: 0, item: 5, container: "#story" + nextStoryId + "_related_content"};
          relatedContentCall_(related_content_params);
        }

    } else {
        end_of_result = true;
    }
    $('#loadMore').hide();
}

var getStaticArticle = function(id) {
    var folder = 100;
    if (String(id).length > 4) {
        folder = String(id).substr(0, 3);
    }
    var partition = reverse(id.toString().rpad("0", 3).substr(-3, 3));
    var url;
    if(is_live){
        url = data_url.replace('gno/', '') + partition + '/gno/story/' + id + ".gz";
    }else{
        url = base_url + 'widgets/story_generate/story/' + id;
    }
    $.ajax({
        url: url,
        type: 'GET',
        timeout: 180000,
        dataType: 'json',
        success: function(data) {
            loadArticleData(data, id);
        },
        error: function(xhr, status, errorThrown) {
            console.log(status);
            url = data_url.replace('gno/', '') + partition + '/gno/story/' + id;
            $.ajax({
                url: url,
                type: 'GET',
                timeout: 180000,
                dataType: 'json',
                success: function(data) {
                    loadArticleData(data, id);
                },
                error: function() {
                    setLoadingButton("retry");
                }
            });
        }
    });
}

var getVariableArticle = function(data) {
    //console.log(data);
    var html = generateArticleContent(data);
    var tempObj;
    var regspaces = new RegExp(' ', 'g');
    var currArticleTags = data.story.tags.replace(regspaces, "|");

    zone_id = data.zone_story * 1;
    if (zone_id == 8701)
        zone_id = 8700; //for ulat filipino on story
    else if (zone_id == 8025)
        zone_id = 8475; //boxing on story
    else if (zone_id == 8075)
        zone_id = 8125; //basketball
    else if (zone_id == 8175)
        zone_id = 8225; //football
    else if (zone_id == 8275)
        zone_id = 8325; //other sports

    $('#story_container').children().eq(-1).before(html);
    createStoryObject(data, "1");
    contentResize(curStory);

    changePageState(false);
    changeSTUrls(base_url + data.story.link, data.story.id);
    if(data.story.saf != "1"){
      if($(window).width() >= 768){
        loadBannerAd(nextStoryId,currArticleTags);
      }
      loadOutbrain(nextStoryId, (base_url + data.story.link));
      loadMrect((parseInt(zone_id) + 1), '1', currArticleTags);
      related_content_params = {id: data.story.id, start: 0, item: 5, container: "#story1_related_content"};
      relatedContentCall_(related_content_params);
    }
    if ($(window).width() < 768) {
        changeSTUrls_mobile(base_url + data.story.link, data.story.id);
    }
    data = null;
    initialData = null;
    setTimeout(function() {
        FB.XFBML.parse();
    }, 3000);
}

var createStoryObject = function(data, storyCount) {
    var tempObj = {};
    var tagTitles = "";
    var ctitle = $("<div>" + data.title + "</div>").text();
    if (typeof data.all_tags !== "undefined" && data.all_tags.length > 0) {
        tagTitles = data.all_tags.join(', ');
    }

    tempObj = {
        title: data.story.title,
        url: base_url + data.story.link,
        image: data.story.image_url,
        description: data.story.teaser,
        isMultimedia: data.story.multimedia,
        tags: data.story.tags,
        all_tags: tagTitles,
        story_id: data.story.id,
        sto: data.story.override_share_title,
        smt: data.story.social_media_title,
        ad: data.zone_story,
        comments: data.story.comments,
        alt_title: ctitle
    }
    stories['story' + storyCount] = tempObj; // push to global variable 'stories'
}

var buildArticleTitle = function(data){
  var html = '';

  if( typeof data.story.saf != "undefined" && data.story.saf == "1"){
    // /style='background-image:url("+data.story.image_url+")'
    html += "<div class='saf_cover' >";
      html += "<img style='width:100%;' src='"+data.story.image_url.replace(data.story.thumbnail, "640_"+data.story.thumbnail)+"'>"
      html += "<div class='saf_text'>";
        html += "<div class='saf_gradient'></div>";
        html += "<div class='saf_title_hldr'>";
          html += "<div style='background-color: #"+data.story.section.color_code+"'>SPECIAL ADVERTISING FEATURE</div>";
          html += '<h1 style="margin-top: 5px;">';
                      if (typeof data.story.kicker !== "undefined" && data.story.kicker != '' && data.story.kicker != null) {
                          html += '<p style="display:block" class="sKicker">' + data.story.kicker + '</p>';
                      }
                      html += '<span id="story' + nextStoryId + '_link" class="story_links" data-ismultimedia="' + data.story.multimedia + '">' + data.story.title + '</span>' +
                  '</h1>';
        html += "</div>";
      html += "</div>"
    html += '</div>';

  } else {
    html += ' <h1 style="margin-top: 10px;">';
                if (typeof data.story.kicker !== "undefined" && data.story.kicker != '' && data.story.kicker != null) {
                    html += '<p style="display:block" class="sKicker">' + data.story.kicker + '</p>';
                }
                html += '<span id="story' + nextStoryId + '_link" class="story_links" data-ismultimedia="' + data.story.multimedia + '">' + data.story.title + '</span>' +
            '</h1>';
  }

  return html;

}

var buildArticleFooter = function(data){
  var html = '';

  if(typeof data.story.saf != "undefined" && data.story.saf == "1"){
    html += '<div class="clear"></div><div class="saf_footer"><div style="background-color: #'+data.story.section.color_code+';padding:0px 15px;text-align: center;color: white;float: right;font-size: 12px;">END OF SPECIAL ADVERTISING FEATURE</div>';
    html += '<div style="width: 100%;height: 4px;background-color: #'+data.story.section.color_code+';float: right;"></div></div>';
  }

  return html;
}

var prepareAuthor = function(story){
  var author = { parsed_byline: "", author_description: "", author_email: "", author_facebook: "", author_gplus: "", author_id: "", author_name: "", author_name_alt: "", author_stub: "", author_twitter: "", insert_timestamp: "", parsed_byline: "", photo_filename: "", platform: "", status: "" };
  if(typeof story.special_author !== "undefined" && story.special_author.length > 3){
    var story_authors = [];
    var separator = '';
    var regcommas = new RegExp(', ', 'g');
    var regcomma = new RegExp(',', 'g');
    story.special_author = (!story.special_author.match(/by/i) && story.special_author.length > 3) ? "By " + story.special_author : story.special_author;
    story.special_author = story.special_author.replace('By,', 'By ').replace(regcommas, ',').replace(regcomma, ', ')

    if(story.author_id.length && Object.keys(authors_json).length > 0){
      story_authors = story.author_id.split(',');
      story_authors.pop();

      if(story_authors.length >= 1){
        author.parsed_byline = story.special_author;
        var tmp = "";
        for(var i = 0; i < story_authors.length; i++){
          var key = authors_json[parseInt(story_authors[i].trim())];
          if(story_authors[i].trim() != "" && typeof key !== "undefined"){
            var authorReg = new RegExp(key.author_name.toLowerCase(), 'i');
            if(story_authors.length == 1){
              key.parsed_byline = author.parsed_byline.replace(authorReg, "<a href='"+base_url+"archives/authors/"+key.author_stub+"'>" + key.author_name.toUpperCase() + "</a>");
              author = key;
            } else {
              author.parsed_byline = author.parsed_byline.replace(authorReg, "<a href='"+base_url+"archives/authors/"+key.author_stub+"'>" + key.author_name.toUpperCase() + "</a>");
            }
          }
        }
      }

    } else {
      author.parsed_byline = story.special_author;
    }

  }
  return author;
}

var generateArticleContent = function(data) {
    var html = '';
    var tagTitles = '';
    var tagDisplay = '';
    var authors_data = prepareAuthor(data.story);
    var bylineSize = (typeof authors_data.photo_filename !== "undefined" && authors_data.photo_filename != "") ? 6 : 7;

    if (data.tag_array.length >= 1 && data.tag_array[0] != "") {
        tagDisplay = '<p style="word-wrap: break-word; margin-bottom: 0px;">Tags: ' + data.tag_array.join(', ') + '</p>';
    }
    html = '<div id="story' + nextStoryId + '">' +
            (nextStoryId > 1 ? '<div class="ad_label row padded leaderboard text-center" style="padding-top: 0; height:100%; margin: 20px 20px 20px 0;">' +
                    '<iframe scrolling="no" id="story_leaderboard_frame_' + nextStoryId + '" "></iframe>' +
                    '</div>' : '') +
            (nextStoryId > 1 ? "<div id='mobile-mrec-top_" + nextStoryId + "' class='ad mobile-leaderboard_story' style='text-align: center;display: none; padding: 10px;'> <div class='label'>advertisement</div> </div>" : '') +
            '<div class="row padded storyHoldr">' +
            '<div style="text-align: right; font-size:14px">Filtered By: ' + origin_name + '</div>' +
            '<div class="section_identifier ' + data.story.section.sec_stub + '_background"></div>' +
            '<div class="subsection ' + data.story.section.sec_stub + '_background">' + data.story.section.sec_name + '</div>' +
            ' <div class="clear"></div>' +
            '<div style="padding: 2.5% 2.5% 0 2.5%;">' +
            '<div class="story_title">' +
            buildArticleTitle(data) +
            '<div class="clear"></div>' +
            '<div class="row tb_container">' +
            '<div class="col-xs-5 col-sm-5 rtcontainer">' +
            parseDate(data.story)+
            //'<p style="display:none;" style="word-wrap: break-word; margin-bottom: 0px;">Tags: '+data.story.tagsDisplay.replace(regexp,"http://www.gmanetwork.com")+'</p>'+
            //'<div class="fb-like" style="display: inline-flex; margin-right: 5px;" data-href="'+data.story.link.replace(base_url, "http://www.gmanetwork.com/news/")+'" data-action="recommend" data-send="false" data-width="80" data-layout="button_count" data-show-faces="false"></div>'+
            '</div>';
            if(data.story.special_author != ''){
html +=                         '<div class="col-xs-'+bylineSize+' col-sm-'+bylineSize+' bylineContainer">'+
                    '<div class="row noMargin">'+
                        //'<span class="byline">'+ ((data.story.by_line.length > 3) ? byline : '') +'</span>'+
                        '<span class="byline">'+ authors_data.parsed_byline +'</span>'+
                    '</div>'+
                    '<div class="row noMargin">';
                        if(authors_data.author_facebook != "" && authors_data.author_facebook != null){
                            html += '<div style="float: right; max-width:48px !important;" class="fb-like" data-href="https://www.facebook.com/'+authors_data.author_facebook+'" data-layout="button" data-action="like" data-show-faces="false" data-share="false"></div>';
                        }
                        if(authors_data.author_twitter != "" && authors_data.author_twitter != null){
                            //console.log(data.story.author_twitter);
                            html += '<iframe src="//platform.twitter.com/widgets/follow_button.html?screen_name='+authors_data.author_twitter+'&show_screen_name=false" style="width: 60px; height: 20px; margin-right: 10px; float: right;" allowtransparency="true" frameborder="0" scrolling="no" style="max-height: 20px !important;"></iframe>';
                        }
html +=                             '</div>';
html +=                         '</div>';

                if(authors_data.photo_filename != ""){
                  html += '<div class="col-xs-1 col-sm-1" style="padding-left: 5px;">'+
                              '<img class="authorimg" alt="Author" title="Author" src="'+authors_data.photo_filename+'" width="50" height="50" style="border-radius: 5px;">'+
                          '</div>';
                }
            }
html +=                 '</div>';
    if (typeof data.story.translationLink !== "undefined") {
        html += '<div style="padding: 10px 0">' +
                '<a href="' + base_url + data.story.translationLink + '" class="translation">';
        html += (data.story.language_id == 2) ? 'Read in English' : 'Basahin sa Filipino';
        html += '</a>' +
                '</div>';
    }
    html += '</div>' +
            '<div class="story_main" style="line-height: ' + line_height + 'px; font-size: ' + font_size + 'px; ">';
    if(data.story.saf != "1"){
      html +=  '<div id="story' + nextStoryId + '_related_content" class="related_content_holder">' +
                '<div class="related_content_title">RELATED CONTENT</div>' +
                '</div>';
    }

    html += data.story.content_1;

    var tagsBanner = (typeof data.tag_array !== "undefined" && data.tag_array.length > 0) ? getTagBanner(data.tag_array) : '';
    if (tagsBanner.length > 0) {
        html += "<div class='links' style='overflow:hidden;position:relative;margin-top: 15px;'>" +
                "<a href='" + tagsBanner[2] + "' target='_blank'>" +
                "<img width='100%' src='" + tagsBanner[0] + "' alt='" + tagsBanner[1] + "' style='max-height:150px'>" +
                "</a>" +
                "</div>";
    }
    html += buildArticleFooter(data);

    html += '<div class="clear"></div>' +
            '<div class="commentLink">';
    if (data.story.comments) {
        html += '<span style="top: 3px;" class="glyphicon glyphicon-comment"></span> <a style="cursor: pointer;" id="comment" data-target="' + nextStoryId + '">Show comments</a>';
    }
    if (nextStoryId > 1) {
        html += '<p class="b2p"><img alt="Previous" title="Previous" class="backbtn" style="margin-top: -4px; width: 18px !important; height: 18px !important;" src="' + assets_url + 'img/article/prev.png">Previous </p>' +
                '<p class="b2t" style="margin-right: 5px;"><img alt="Back to top" title="Back to top" class="backbtn" style="margin-top: -4px; width: 18px !important; height: 18px !important;" src="' + assets_url + 'img/article/top.png">Top </p>';
    }
    html += ' </div>';
    html += '</div>' +
            '<div class="clear"></div>';
    if(data.story.saf != "1"){
      html += '<div class="obiframe_holder" style="padding-left: 0px;">' +
                '<div id="mobile-mrec-ob_'+nextStoryId+'" style="width:300px;height:200px;float:left;display:none;margin-top:-5px;" class="ob_mrect ad"> <div class="label">advertisement</div> </div>'+
                '<iframe style="min-height: 250px;width:400px;" class="obiframe" id="story'+nextStoryId+'_ob_iframe" frameborder="0" scrolling="no" onload="resizeIframe(this)"></iframe>'+
              '</div>';
      html += '<div class="clear"></div>';
    }
    html += ' </div>';
    html += '<div class="comments" id="comnt">' +
            '</div>' +
            '<div class="clear"></div>' +
            '</div>' +
            '</div>' +
            '</div>';

    return html;
}

var getTagBanner = function(tagArray) {
    var bannerData = [];
    var static_server = "http://images.gmanews.tv/v3";
    if (tagArray.indexOf('myhusbandslover') > -1) {
        bannerData = [static_server + "/img/coverage/leaderboard_mhl.jpg", "My Husband's Lover", "http://www.gmanetwork.com/gma/myhusbandslover"];
    } else if (tagArray.indexOf('weather') > -1) {
        bannerData = [static_server + "/img/coverage/leaderboard_imready.png", "IM Ready", "http://www.gmanetwork.com/news/imready/"];
    } else if (tagArray.indexOf('bangsamorocomprehensivepeaceagreement') > -1) {
        bannerData = [static_server + "/img/coverage/leaderboard_bangsamororoad.jpg", "Bangsamoro", "http://www.gmanetwork.com/news/tracking/bangsamorocomprehensivepeaceagreement"];
    } else if (tagArray.indexOf('bangsamoropeacedeal') > -1) {
        bannerData = [static_server + "/img/coverage/leaderboard_bangsamororoad.jpg", "Bangsamoro", "http://www.gmanetwork.com/news/tracking/bangsamorocomprehensivepeaceagreement"];
    } else if (tagArray.indexOf('bangsamoropeacetalks') > -1) {
        bannerData = [static_server + "/img/coverage/leaderboard_bangsamororoad.jpg", "Bangsamoro", "http://www.gmanetwork.com/news/tracking/bangsamorocomprehensivepeaceagreement"];
    } else if (tagArray.indexOf('gphmilfpeacedeal') > -1) {
        bannerData = [static_server + "/img/coverage/leaderboard_bangsamororoad.jpg", "Bangsamoro", "http://www.gmanetwork.com/news/tracking/bangsamorocomprehensivepeaceagreement"];
    } else if (tagArray.indexOf('gphmilfpeacetalks') > -1) {
        bannerData = [static_server + "/img/coverage/leaderboard_bangsamororoad.jpg", "Bangsamoro", "http://www.gmanetwork.com/news/tracking/bangsamorocomprehensivepeaceagreement"];
    } else if (tagArray.indexOf('milfgrppeacetalks') > -1) {
        bannerData = [static_server + "/img/coverage/leaderboard_bangsamororoad.jpg", "Bangsamoro", "http://www.gmanetwork.com/news/tracking/bangsamorocomprehensivepeaceagreement"];
    } else if (tagArray.indexOf('bangsamorobasiclaw') > -1) {
        bannerData = [static_server + "/img/coverage/leaderboard_bangsamororoad.jpg", "Bangsamoro", "http://www.gmanetwork.com/news/tracking/bangsamorocomprehensivepeaceagreement"];
    } else if (tagArray.indexOf('bantaykaban') > -1) {
        bannerData = [static_server + "/img/coverage/bantaykaban-leaderboard.jpg", "Bantay Kaban", "http://www.gmanetwork.com/news/tracking/bantaykaban"];
    } else if (tagArray.indexOf('yolanda') > -1) {
        bannerData = [static_server + "/img/coverage/131114-yolandaruins-badge.jpg", "Super Typhoon Yolanda", "http://www.gmanetwork.com/news/tracking/yolanda"];
    }

    return bannerData;
}

var changePageState = function(fullChange) {
    var currentArticle = stories['story' + curStory];
    var regspaces = new RegExp(' ', 'g');
    var currArticleTags = currentArticle.tags.replace(regspaces, "|");
    var url = currentArticle.url;
    var storyTitle = parseInt(currentArticle.sto) == 1 ? currentArticle.smt : currentArticle.title;
    if (history.state != url) {
        if (typeof fullChange === "undefined") {
            $(document).prop('title', currentArticle.alt_title + " GMA News Online");
            history.pushState({'url': document.referrer, 'nextArticle': true}, '', url);
            /*stWidget Global vars*/
            stWidget.ogdesc = stWidget.twitterdesc = (currentArticle.description != "") ? currentArticle.description : storyTitle;
            stWidget.ogurl = stWidget.twitterurl = url;
            stWidget.ogtitle = stWidget.twittertitle = storyTitle;
            stWidget.ogtype = "article";
            stWidget.ogimg = stWidget.twitterimg = currentArticle.image;
            /*social ribbon*/
            changeSTUrls(url, currentArticle.story_id);
            if ($(window).width() < 768) {
                changeSTUrls_mobile(url, currentArticle.story_id);
            }

            $('#story_social_ribbon .gno_comment #comment').attr('data-target', curStory);
            $('.commentLink #comment').attr('data-target', curStory);

            /*SEO Tags*/
            $("meta[property='og\\:title'], meta[property='twitter\\:title']").attr("content", storyTitle);
            $("meta[property='og\\:url'], meta[property='twitter\\:url']").attr("content", url);
            $("link[rel='canonical']").attr('href', url);
            $("meta[property='og\\:image'], meta[property='twitter\\:image'], meta[property='thumbnail']").attr("content", currentArticle.image);
            $("meta[property='twitter\\:description']").attr("content", currentArticle.description);
            $("meta[property='og\\:description'], meta[name='description']").attr("content", currentArticle.description);
            $("meta[name='keywords']").attr("content", currentArticle.all_tags != '' ? currentArticle.all_tags : currentArticle.tags);

            /*Reserve Ads*/
            if ($(window).width() > 1360) {
                var html = '<iframe class="aWallpaper" frameborder="0" allowtransparency="true" id="wallpaper_frame"></iframe>';
                $("div#footer_ads .side_ads").html(html).promise().done(function() {
                    var wallpaper_frame_node = document.getElementById('wallpaper_frame');
                    wallpaper_frame_node.contentWindow.contents = $ads_json.wallpaper.replace($initial_zone_id + 21 + "", zone_id + 21).replace($initial_synad, currArticleTags);
                    wallpaper_frame_node.src = 'javascript:window["contents"]';
                });
            }

            analyticsCall(url);

        } else {
            history.pushState({'url': document.referrer, 'nextArticle': true}, '', url);
        }

        /*Disqus*/
        if (currentArticle.comments == true) {
            disqusCall(currentArticle.url);
            $('.gno_comment').show();
        } else {
            $('.gno_comment').hide();
        }


    }
};

var changeSTUrls = function(url, story_id) {
    for (var i = 0; i <= socialRibbonContent.length; i++) {
        $('#story_social_ribbon .' + socialRibbonContent[i]).attr('st_url', url.replace(base_url, "http://www.gmanetwork.com/news/"));
        $('#story_social_ribbon .' + socialRibbonContent[i]).removeAttr('st_processed');
        $('#story_social_ribbon #mystream').attr('cid', story_id);
        $('#story_social_ribbon #mystream').attr('type', 'article');

        /*social ribbon counter*/

        $('#story_social_ribbon .' + socialRibbonCount[i]).html("");
        $('#story_social_ribbon .' + socialRibbonCount[i]).attr('st_url', url.replace(base_url, "http://www.gmanetwork.com/news/"));
        $('#story_social_ribbon .' + socialRibbonCount[i]).removeAttr('st_processed');
        /*end*/
    }
    stButtons.locateElements();
}

var changeSTUrls_mobile = function(url, story_id) {
    for (var i = 0; i <= socialRibbonContent.length; i++) {
        $('.header_social .' + socialRibbonContent[i]).attr('st_url', url.replace(base_url, "http://www.gmanetwork.com/news/"));
        $('.header_social .' + socialRibbonContent[i]).removeAttr('st_processed');
        // $('#story_social_ribbon #mystream').attr('cid', story_id);
        // $('#story_social_ribbon #mystream').attr('type', 'article');
        $('.header_social #comment').attr('data-target', curStory);
        /*social ribbon counter*/

        $('.header_social .' + socialRibbonCount[i]).html("");
        $('.header_social .' + socialRibbonCount[i]).attr('st_url', url.replace(base_url, "http://www.gmanetwork.com/news/"));
        $('.header_social .' + socialRibbonCount[i]).removeAttr('st_processed');
        /*end*/
    }
    stButtons.locateElements();
}

var commentsEvent = function() {
    var itemLink = $('.article_mode_sr div:first').attr('st_url'); // Get link from any of the st_url
    var src = $('#story' + $(this).attr('data-target')).find("#comnt");
    //console.log(itemLink);
    loadDisqus(src, itemLink, itemLink);
}

var loadMrect = function(zone_id, storyDiv, tags) {
    if ($(window).width() <= 480) {
        var midSelect = $("#story" + storyDiv + " .story_main").children().not('.related_content_holder, .saf_footer, .clear, .commentLink');
        var middleElem = midSelect.length / 2;
        middleElem = (Math.floor(middleElem) - 1);
        middleElem = (middleElem < 0) ? 0 : middleElem;
        $mrec_container = midSelect.eq(middleElem);
        $mrec_container.after('<div class="ad" style="width:100%; text-align:center;margin: 10px 0px;"><div class="label">advertisement</div><iframe id="mrec_story_frame_' + storyDiv + '" scrolling="no" class="mrect_mobile" style="width:300px; height: 250px; border: 0px;"></iframe></div>');
        var mrec_frame_node = document.getElementById('mrec_story_frame_' + storyDiv);
        var $mrec_frame_node = $('#mrec_story_frame_' + storyDiv);
        //console.log(mrec_frame_node);
        if(dfp_zones.indexOf(zone_id)>-1){
            loadMrectDFP($mrec_frame_node);
        }
        else{
            mrec_frame_node.contentWindow.contents = $story_ads_json.mobile_mrec.replace($initial_zone_id + 1 + "", zone_id).replace($initial_synad, tags);
            mrec_frame_node.src = 'javascript:window["contents"]';
        }
    }
}

var loadOutbrain = function(story_container, link){
  var outbrain_node = document.getElementById('story'+story_container+'_ob_iframe');
  outbrain_node.contentWindow.contents = $outbrain_view.ob.replace('changelink_stub', link.replace(base_url, "http://www.gmanetwork.com/news/"));
  outbrain_node.src = 'javascript:window["contents"]';
}

var loadBannerAd = function(nextStory, currArticleTags) {
    var html = "";
    var hldr = '';
    var iframe = '';
    if ($(window).width() >= 768) {
      hldr = 'mobile-mrec-ob_' + nextStory;
      iframe = 'mobile_mrec_ob_' + nextStory;
      $('#mobile-mrec-ob_' + nextStory).append('<iframe id="mobile_mrec_ob_' + nextStory + '" scrolling="no" style="width: 300px !important; text-align:center; border: 0px; height: 250px !important;"></iframe>');
    } else {
      hldr = 'mobile-mrec-top_' + nextStory;
      iframe = 'mobile_mrec_top_frame_' + nextStory;
      $('#mobile-mrec-top_' + nextStory).append('<iframe id="mobile_mrec_top_frame_' + nextStory + '" scrolling="no" style="width: 300px !important; text-align:center; border: 0px; height: 250px !important;"></iframe>');
    }
    var mobile_mrec_top_frame_node = document.getElementById(iframe);
    var $mobile_mrec_top_frame_node = $('#'+iframe);
    if(dfp_zones.indexOf(zone_id)>-1){
        loadMrectDFP($mobile_mrec_top_frame_node);
    }
    else if (mobile_mrec_top_frame_node !== null && typeof mobile_mrec_top_frame_node.contentWindow !== "undefined" && mobile_mrec_top_frame_node.contentWindow != null) {
        mobile_mrec_top_frame_node.contentWindow.contents = $ads_json.mrec.replace($initial_synad, currArticleTags);
        mobile_mrec_top_frame_node.src = 'javascript:window["contents"]';
    }

    $('#story' + nextStory + ' #'+ hldr).css("display", "block");

    return html;
}

var disqusCall = function(story_url) {
    /*disqus comment count*/
    $.getScript('http://gmanews.disqus.com/count-data.js?1=' + encodeURIComponent(story_url.replace(base_url, "http://www.gmanetwork.com/news/")));
    var actualDisplayCount = DISQUSWIDGETS.displayCount;
    DISQUSWIDGETS.displayCount = function(options) {
        var count = (typeof options.counts[0] !== "undefined") ? ((parseInt(options.counts[0].comments) > 1000) ? options.counts[0].comments + 'K' : options.counts[0].comments) : 0;
        $('#story_social_ribbon div.gno_comment_count').text(count);
        $('.shr_header_comment').text(count);
        return actualDisplayCount(options);
    };
}

var contentResize = function(stId) {
    if ($(window).width() < 768) {
        var iframes = $('#story' + stId + ' .storyHoldr').find('iframe');
        $.each(iframes, function() {
            if ($(this).attr('src') == 'http://www.gmanetwork.com/news/imready/overview/mmshakedrill') {
                $(this).attr('height', '960');
                $(this).attr('width', '320');
                $(this).attr('scrolling', 'no');
                $(this).attr('frameborder', '0');
            }
        });
        var imgs = $('#story' + stId + ' .story_main').find('img');
        $.each(imgs, function() {
            if (!$(this).parent().hasClass("related_content_story_image") && !$(this).hasClass('backbtn') && !$(this).hasClass('authorimg')) {
                $(this).parent().css('float', 'none');
                $(this).parent().css('width', '100%');
                $(this).css('width', "100%");
                $(this).css('height', "auto");
            }
        });

        // $('#story'+stId+' img').each(function() {
        //       if (!$(this).parent().hasClass("related_content_story_image") && !$(this).hasClass('backbtn') && !$(this).hasClass('authorimg') ) {
        //           console.log($(this));
        //           $(this).parent().css('float', 'none');
        //           $(this).parent().css('width', '100%');
        //           $(this).css('width', "100%");
        //           $(this).css('height', "auto");
        //       }
        //   });
    }
};

String.prototype.rpad = function(padString, length) {
    var str = this;
    while (str.length < length)
        str = str + padString;
    return str;
}

var resizeIframe = function(obj) {
    obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
    if (bOutbrain == 0) {
        $(window).resize(function() {
            if (!($(window).width() >= 768 && $(window).height() >= 510)) {
                $("#story_social_ribbon").css("top", "");
            }
            $.each($(".obiframe_holder iframe"), function() {
                if (this.contentWindow.document.getElementsByClassName("ob-widget")[0]) {
                    var height = this.contentWindow.document.getElementsByClassName("ob-widget")[0].clientHeight + this.contentWindow.document.getElementsByClassName("ob_what")[0].clientHeight;
                    this.style.height = height + 'px';
                }
            });
        });
        bOutbrain = 1;
    }
}


var convertDate = function(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;
}

var parseDate = function(data){
  var html = "";
  var d = convertDate(data.timestamp);
  html += "<time itemprop='datePublished' datetime='"+(data.timestamp.replace(" ", "T") + "+08:00")+"'><strong>Published </strong>" + d + "</time>";
  if(typeof data.updated_as_of !== "undefined" && data.updated_as_of != "0000-00-00 00:00:00"){
    html += "<br/><time itemprop='dateModified' datetime='"+(data.updated_as_of.replace(" ", "T") + "+08:00")+"'><strong> Updated </strong>    " + convertDate(data.updated_as_of) + "</time>";
  }
  return html;
}

var formatTime = function(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;
}

var analyticsCall = function(location) {
    /*google analytics send*/
    //var location = window.location.hostname + window.location.pathname + window.location.search;
    //console.log("Analytics Loc: "+location);
    var params_ = {page_overriden: location.replace(base_url, 'news/'), page_title: document.title};
    CUSTOM_ANALYTICS.ga_send_event(params_);
    if(nextStoryId > prevCount){
      prevCount = nextStoryId;
      ga('send', {
        hitType: 'event',
        eventCategory: 'Article',
        eventAction: 'scroll',
        eventLabel: 'story/'+story_origin+'/'+(nextStoryId),
        eventValue: (nextStoryId)
      });
    }
    /*end*/
}

var loadAlexa = function(containerId){
    var alexaHtml = '<script type="text/javascript">'+
                    '_atrk_opts = { atrk_acct:"LssQl1aE+GW1O7", domain:"gmanetwork.com",dynamic: true};'+
                    '(function() { var as = document.createElement("script"); as.type = "text/javascript"; as.async = true; as.src = "https://d31qbv1cthcecs.cloudfront.net/atrk.js"; var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(as, s); })();'+
                    '</script>'+
                    '<noscript><img src="https://d5nxst8fruw4z.cloudfront.net/atrk.gif?account=LssQl1aE+GW1O7" style="display:none" height="1" width="1" alt="" /></noscript>';
    var alexaIframe = document.getElementById("alexa_story_"+containerId);
    alexaIframe.contentWindow.contents = alexaHtml;
    alexaIframe.src = 'javascript:window["contents"]';
}

var bindMiscEvents = function() {
    $(document).on('click', '#comment', commentsEvent);

    $(document).on('click', '#font_resize', function() {
        font_size = (font_size != 22) ? font_size + 2 : 18;
        line_height = (font_size <= 22) ? font_size + 7 : 25;
        $('.story_main').attr('style', 'font-size: ' + font_size + 'px; line-height: ' + line_height + 'px;');
        $(document).scrollTop($("#story" + curStory + " .story_title").offset().top - 150);
    });

    $(document).on("click", ".b2t", function() {
        curStory = 1;
        nxtStory = 2;
        $('html, body').animate({
            scrollTop: 0
        }, "20000");
        changePageState();
    });

    $(document).on("click", ".b2p", function() {
        var prev = curStory - 1;
        var scroll = 0;
        if (prev > 0) {
            //$(window).scrollTop($("#story"+prev).offset().top);
            $('html, body').animate({
                scrollTop: $("#story" + prev).offset().top
            }, "20000");
        } else {
            $(document).scrollTop(0);
        }
        // var intrval = setInterval(function() {
        //     if (scroll <= 20) {
        //         $(window).scroll(); // trigger scroll to remove excess widget in cross-sell
        //         scroll++;
        //     } else {
        //         clearInterval(intrval);
        //     }
        // }, 1);
    });

    $(window).scroll(function() {
        if ($(window).width() >= 768 && $(window).height() >= 510) {
            if ($(document).scrollTop() > 0) {
                $("#story_social_ribbon").css("top", "90px");
            } else {
                $("#story_social_ribbon").css("top", "");
            }
        }
    });

    $(document).on("mouseover", ".b2t", function() {
        $(this).find("img").attr("src", assets_url + "img/article/top_hover.png");
    }).on("mouseout", ".b2t", function() {
        $(this).find("img").attr("src", assets_url + "img/article/top.png");
    });

    $(document).on("mouseover", ".b2p", function() {
        $(this).find("img").attr("src", assets_url + "img/article/prev_hover.png");
    }).on("mouseout", ".b2p", function() {
        $(this).find("img").attr("src", assets_url + "img/article/prev.png");
    });

    $(document).on("click", "#load_more", function(){
      if(retryButtonActive == 1){
        getNextArticle();
      }
    });
}

$(document).ready(function() {
    getCrossSell();
    $(window).scroll(nextStoryEvent);
    bindMiscEvents();
    $(window).scroll(function() {
        if ($('div#story_container').children().length > 2) {
            if ($('#story' + (nxtStory)).length > 0 && $(window).scrollTop() + 100 > $('#story' + (nxtStory)).offset().top) {
                nxtStory += 1;
                curStory += 1;
                changePageState();
            }
            if ($('#story' + (curStory)).offset().top > $(window).scrollTop() + 500) {

                if (curStory > 1) {
                    curStory -= 1;
                }
                if (nxtStory > 2) {
                    nxtStory -= 1;
                }
                changePageState();
            }
        }
        if ($(window).width() >= 1200) {
            if ($('#story' + (curStory - 1) + '_link').data('ismultimedia') == 1 && $('#story' + (curStory)).offset().top > $(window).scrollTop() + 100) {
                $('#cross_sell_drawer').fadeOut("fast");
            } else if ($('#story' + (curStory) + '_link').data('ismultimedia') != 1) {
                $('#cross_sell_drawer').fadeIn("fast");
            } else if ($('#story' + (curStory - 1) + '_link').data('ismultimedia') != 1 && $('#story' + (curStory)).offset().top > $(window).scrollTop() + 500) {
                $('#cross_sell_drawer').fadeIn("fast");
            } else if ($('#story' + (curStory) + '_link').data('ismultimedia') == 1) {
                $('#cross_sell_drawer').fadeOut("fast");
            }

        }

    });

    //console.log("origin: " + filters[filters.indexOf(story_origin)] );
    var path = window.location.pathname.replace('/' + filters[filters.indexOf(story_origin)], '');
    var loc = window.location.hostname + path + window.location.search;
    //console.log("History "+loc);
    // end of onboarding

});

$(window).load(function() {
    $(this).on('popstate', function(e) {
        e.stopPropagation();
        if (initialPop === false) {
            window.location.href = e.originalEvent.state.url;
        }
    });
    initialPop = false; // Allow binded popstate function to take effect after page load
});


function reverse(s) {
    var o = '';
    for (var i = s.length - 1; i >= 0; i--)
        o += s[i];
    return o;
}
