  var currentFeed;
  var original = new Array();

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

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

  function processOverview(req) {
    var request = req.request;
    if (request.readyState == 4) {
      if (request.status == 200) {
        var resultText = request.responseText;
        var result = eval('(' + resultText + ')');
        var feedname = document.getElementById("feedname");
        if (feedname && result.feedname) feedname.innerHTML = result.feedname;

        var x = document.getElementById(req.resultDiv);
        if (!original[req.feedid]) {
          var baseContent = x.innerHTML.replace("<!--", "").replace("-->", "");
          original[req.feedid] = baseContent; 
        } else {
          var baseContent = original[req.feedid];
        }
        x.innerHTML = "";

        var loading = document.getElementById('loading');
        if (loading) loading.style.display = 'none';
        x.style.visibility = 'visible';

        var entries = result.entries;
        for(i=0;i<entries.length;i++) {
          var line = baseContent;
          currentFeed = entries[i].feedid;
          if (entries[i].feedid) line = line.replace(/@FEEDID@/g, entries[i].feedid);
          if (entries[i].title) line = line.replace(/@TITLE@/g, entries[i].title);
          if (entries[i].date) line = line.replace(/@DATE@/g, DateFormatter.format(new Date(entries[i].date), 'd/M/Y'));
          if (entries[i].id) line = line.replace(/@ID@/g, entries[i].id);
          if (entries[i].link) line = line.replace(/@URL@/g, entries[i].link);
          if (entries[i].content) line = line.replace(/@CONTENT@/g, entries[i].content);
          else line = line.replace(/@CONTENT@/g, 'Geen korte inhoud beschikbaar.');
          if (entries[i].summary) line = line.replace(/@SUMMARY@/g, entries[i].summary);
          else if (entries[i].content) line = line.replace(/@SUMMARY@/g, createExcerpt(entries[i].content, 0, 500));
          else line = line.replace(/@SUMMARY@/g, 'Geen korte inhoud beschikbaar.');
          if (entries[i].username) line = line.replace(/@USERNAME@/g, entries[i].username);
          x.innerHTML = x.innerHTML + line;
          if (result.showContent == "true") {
            var bcontent = document.getElementById("blogcontent"+entries[i].id);
            if (bcontent) {
              bcontent.style.display = 'inline';
            }
            var bcontent = document.getElementById("contentlink"+entries[i].id);
            if (bcontent) {
              bcontent.style.display = 'none';
            }
          }
        }
      }
    }
  }


  function retrieveFeedOverview(feedid, max, div) {
    var ajax = new AjaxRequest("/muzikantendag/servlet/jsonfeed?action=overview&feedid="+feedid+"&max="+max, processOverview);
    ajax.resultDiv = div;
    ajax.feedid = feedid;
    ajax.send();
  }

  function retrieveFeedOverview2(params, prefix) {
    var ajax = new AjaxRequest("/muzikantendag/servlet/jsonfeed?action=overview&feedid="+params.id+"&max="+params.count, processOverview);
    ajax.resultDiv = prefix + params.id;
    ajax.feedid = params.id;
    ajax.send();
  }

  function retrieveFeedEntries(feedid, div) {
    currentFeed = feedid;
    var ajax = new AjaxRequest("/muzikantendag/servlet/jsonfeed?action=entries&feedid="+feedid, processOverview);
    ajax.resultDiv = div;

    showLoading(div);

    ajax.send();
  }

  function retrieveEntry(id, div) {
    var ajax = new AjaxRequest("/muzikantendag/servlet/jsonfeed?action=entry&entryid="+id, processOverview);
    ajax.resultDiv = div;

    showLoading(div);

    ajax.send();
  }

  function showCurrentFeed(div) {
    retrieveFeedEntries(currentFeed, div);
  }


  function showLoading(div) {
    var x = document.getElementById(div);
    x.style.visibility = 'hidden';
    var loading = document.getElementById('loading');
    if (loading) {
      loading.style.display = 'block';
      loading.style.top = findPosY(x) + 'px';
      loading.style.left = findPosX(x) + 'px';
    }
  }


  function findPosX(obj) {
        var curleft = 0;
        if (obj.offsetParent) {
                while (obj.offsetParent) {
                        curleft += obj.offsetLeft
                        obj = obj.offsetParent;
                }
        } else if (obj.x) curleft += obj.x;
        return curleft;
  }

  function findPosY(obj) {
        var curtop = 0;
        if (obj.offsetParent) {
                while (obj.offsetParent) {
                        curtop += obj.offsetTop
                        obj = obj.offsetParent;
                }
        } else if (obj.y) curtop += obj.y;
        return curtop;
  }


  function getParam(name) {
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var tmpURL = window.location.href;
    var results = regex.exec( tmpURL );
    if( results == null )
      return "";
    else
      return results[1];
  }

  function initFeed(div) {
    var id = getParam("id");
    var entryid = getParam("entry");
    if (entryid != "") {
      retrieveEntry(entryid, div);
    } else if (id != "") {
      retrieveFeedEntries(id, div);
    }
  }

