var Site = {};
Site.showTags = function (url) {
  $(".newsEntry .tags").each(function (i, e) {
    var el = $(e);
    var content = el.html();
    if (content) {
      var tags = content.split(",");
      var newTags = [];
      for (var j = 0; j < tags.length; j++) {
        var tag = $.trim(tags[j]);
        newTags.push('<a href="' + url + encodeURIComponent(tag) + '">' + tag + '</a>');
      }
      el.html(newTags.join(", "));
    }
  });
};

Site.init = function () {
  $("#siteSearchButton").click(Site.search);

  var topNews = $("#top-news");
  if (topNews.length) {
    topNews.attr("keepRotating", true);
    var selectedClass = "selected";
    $(".top-article:gt(0)", topNews).hide();
    $(".headers td:first", topNews).addClass(selectedClass);
    topNews.show("blind");
    var changeTab = function (el) {
      var newItem = $(el.attr("href"));
      if (newItem.is(":not(:visible)")) {
        $(".top-article:visible", topNews).fadeOut(200, function () { newItem.fadeIn(200); });
        el.siblings("." + selectedClass).removeClass(selectedClass);
        el.addClass(selectedClass);
      }
    };
    $(".headers td").click(function () {
      topNews.attr("keepRotating", false);
      changeTab($(this));
      return false;
    });
    setTimeout(function () { Site.addRotationTimer(topNews, changeTab); }, 15000);
  }
};

Site.addRotationTimer = function (el, changeTab) {
  if (el.attr("keepRotating") === "true") {
    var current = $(".headers td.selected", el);
    var next;
    if (current.is(":last-child")) {
      next = $(".headers td:first", el);
    }
    else {
      next = current.next("td");
    }
    changeTab(next);
    setTimeout(function () { Site.addRotationTimer(el, changeTab); }, 15000)
  }
};

Site.initTagCloud = function (tagData, url, label) {
  var mult = 0.2;
  var tagList = [];
  for (var i = 0; i < tagData.length; i++) {
    var tag = tagData[i];
    var fontSize = 0.9 + Math.log(tag.count) * mult;
    tagList.push('<a href="' + url + tag.tag + '" style="white-space: nowrap; font-size: ' + fontSize + 'em;">' + tag.tag + '</a>');
  }
  if (tagList) {
    $('.sidenav').after('<div class="sidenav"><div class="title">' + label + '</div><div style="line-height: 1.7em;">' + tagList.join(" ") + '</div></div>');
  }
};

Site.search = function () {
  var query = $("#siteSearchQuery").val();
  Site.queryGoogle(query, 1, function (data) {
    var res = $('<div class="searchBox"></div>');
    Site.handleGoogleResponse(query, data, res);
    res.dialog({width: 500, height: 480});
  });
};

Site.queryGoogle = function (query, start, callback) {
  var url = 'https://www.googleapis.com/customsearch/v1';
  var args = {
    cx: '000912064284802934121:gdi17xj1vc4',
    key: 'AIzaSyA9YBRvcrNSvXHOYlHfKlPv_my13JEUYt8',
    q: query,
    start: start
  };
  $.ajax({
    url: url,
    data: args,
    type: 'GET',
    dataType: 'jsonp',
    success: callback
   });
}

Site.handleGoogleResponse = function (query, data, res) {
  res.html('');
  $.each(data.items, function (key, value) {
    res.append('<div class="searchResult"><h3><a href="' + value.link + '">' + value.htmlTitle + '</a></h3><p>' + value.htmlSnippet + '</p></div>')
  });
  var request = data.queries.request[0];
  var nextPage = data.queries.nextPage;
  var previousPage = data.queries.previousPage;
  if (previousPage || nextPage) {
    var p = $('<div class="pages"></div>').appendTo(res);
    if (previousPage) {
      $('<a href="#previous">&lt;&lt;&lt;</a>&nbsp;').click(function () {
        Site.queryGoogle(query, previousPage[0].startIndex, function (data2) {
          Site.handleGoogleResponse(query, data2, res);
        });
      }).appendTo(p);
    }
    var st = request.startIndex;
    var end = request.count + st - 1;
    p.append(st + ' - ' + end + ' / ' + request.totalResults);
    if (nextPage) {
      $('<a href="#next">&gt;&gt;&gt;</a>').click(function () {
        Site.queryGoogle(query, nextPage[0].startIndex, function (data2) {
          Site.handleGoogleResponse(query, data2, res);
        });
      }).appendTo(p);
    }
  }
  /*var pages = Math.ceil(request.totalResults / 10);
  if (pages > 1) {
    var p = res.append('<div class="pages"></div>');

    var currentPageNo = Math.ceil(request.startIndex / 10);
    for (var i = 1; i <= pages; i++) {
      if (i == currentPageNo) {
        p.append('<strong>' + i + '</strong>&nbsp;')
      } else {
        $('<a href="#search-page-' + i + '">' + i + '</a>&nbsp;').click(function () {
          var pageNo = $(this).attr("href").substr(13);
          Site.queryGoogle(query, (pageNo - 1) * 10 + 1, function (data2) {
            Site.handleGoogleResponse(query, data2, res);
          });
        }).appendTo(p);
      }
    }
  }*/
}
