
/*********/
  function AjaxRequest(u, cb) {
    this.callback = cb;
    this.url = u;
  }

  AjaxRequest.prototype.send = function() {
    this.request=window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
    var that = this;
    this.request.onreadystatechange = function() {
      that.callback(that);
    }
    this.request.open("GET", this.url, true);
    this.request.send(null);
  }
/*********/


  function loadTagCloud(entity, min, max, group, sort, maxSize, extraParams) {
    var url = '/tagcloud?entity=' + entity + '&mnEm=' + min + '&mxEm=' + max + '&group=' + group + '&sort=' + sort + '&mxSize=' + maxSize + extraParams;
    var req = new AjaxRequest(url, tagCloudReceived);
    req.send();
  }

  function searchTag(tag) {
    var url = '/servlet/search?entity=tags&tag=' + escape(tag);
    var req = new AjaxRequest(url, tagSearchResults);
    req.send();
  }

  function tagCloudReceived(response) {
    var req = response.request;
    if (req.readyState == 4) {
      if (req.status == 200) {
        var result = eval('(' + req.responseText + ')');

        var tagCloudContent = '';
        if (result != null) {
          var keywords = result.keywords;
          if (keywords) {
            for (var i=0; i<result.keywords.length; i++) {
              tagCloudContent += ' &nbsp;<a href="/search/tags.jsp?tag=' + escape(keywords[i].name) + '" style="font-size: ' + keywords[i].size + 'px; color: rgb(' + keywords[i].color + ');">';
              tagCloudContent += keywords[i].name;
              tagCloudContent += '</a>&nbsp; ';
            }
          } else {
            tagCloudContent = '<span style="font-size: 1.1em; color: #c00000; font-weight: bold;">No matching keywords.</span>';
          }
        } else {
          tagCloudContent = '<span style="font-size: 1.1em; color: #c00000; font-weight: bold;">Error loading tag cloud.</span>';
        }

        var tagcloud = document.getElementById("tagcloud");
        tagcloud.innerHTML = tagCloudContent;
      }
    }
  }

  function tagSearchResults(response) {
    var req = response.request;
    if (req.readyState == 4) {
      if (req.status == 200) {
        var result = eval('(' + req.responseText + ')');

        var i = 0;
        if (result != null) {
          var articles = result.articles;
          var articlesContent = '';
          for (i=0; i<articles.length; i++) {
            articlesContent += '<a href="/magazine/articles/article.jsp?id=' + articles[i].id + '">' + articles[i].title + '</a><br />';
          }
          if (articles.length == 0) articlesContent = 'Er werden geen articles gevonden met deze tag.';
          var tagsearchArticles = document.getElementById("tagsearch_articles");
          tagsearchArticles.innerHTML = articlesContent;
          var tagsearchArticlesTab = document.getElementById("ppt_bar_tab_magazine_articles");
          tagsearchArticlesTab.innerHTML = "<span><span>Articles&nbsp;&nbsp;" + articles.length + "</span></span>"

          var blogs = result.blogarticles;
          var blogsContent = '';
          for (i=0; i<blogs.length; i++) {
            blogsContent += '<a href="/magazine/blogs/article.jsp?id=' + blogs[i].id + '">' + blogs[i].title + '</a><br />';
          }
          if (blogs.length == 0) blogsContent = 'Er werden geen blog articles gevonden met deze tag.';
          var tagsearchBlogs = document.getElementById("tagsearch_blogs");
          tagsearchBlogs.innerHTML = blogsContent;
          var tagsearchBlogsTab = document.getElementById("ppt_bar_tab_magazine_blogs");
          tagsearchBlogsTab.innerHTML = "<span><span>Blogs&nbsp;&nbsp;" + blogs.length + "</span></span>"

          var advertisements = result.advertisements;
          var advertisementContent = '';
          for (i=0; i<advertisements.length; i++) {
            advertisementContent += '<a href="/zoekertjes/zoekertje.jsp?id=' + advertisements[i].id + '">' + advertisements[i].title + '</a><br />';
          }
          if (advertisements.length == 0) advertisementContent = 'Er werden geen zoekertjes gevonden met deze tag.';
          var tagsearchAdvertisements = document.getElementById("tagsearch_advertisements");
          tagsearchAdvertisements.innerHTML = advertisementContent;
          var tagsearchAdvertisementsTab = document.getElementById("ppt_bar_tab_magazine_advertisements");
          tagsearchAdvertisementsTab.innerHTML = "<span><span>Zoekertjes&nbsp;&nbsp;" + advertisements.length + "</span></span>"
        }
      }
    }
  }
