function buildAjaxObject() {
  var xmlHttp;
  try {
    // Firefox, Opera 8.0+, Safari
    xmlHttp = new XMLHttpRequest();
  }
  catch (e) {
    // Internet Explorer
    try {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      try {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e) {
        alert("Your browser does not support AJAX!");
        return false;
      }
    }
  }

  return xmlHttp;
}

function report(objID, newsID, type) {
  var xmlHttp = buildAjaxObject();

  xmlHttp.onreadystatechange = function() {
    if(xmlHttp.readyState == 4) {
      if (xmlHttp.responseText == "error") {
        alert("You must log in first.");
        return false;
      }

      document.getElementById('flag' + objID).innerHTML = "Reported";

      if (type == 'n')
        document.getElementById('flag' + objID).className = "flagged";
      else
        document.getElementById('flag' + objID).className = "comflagged";
    }
  }

  var paramStr = "newsID=" + newsID + "&type=" + type;
  xmlHttp.open("GET","report.php?" + paramStr,true);
  xmlHttp.send(null);
}

function vote(objID, newsID, voteUp) {
  var xmlHttp = buildAjaxObject();

  xmlHttp.onreadystatechange = function() {
    if(xmlHttp.readyState == 4) {
      if (xmlHttp.responseText == "error") {
        alert("You must log in before you can vote.");
        return false;
      }

      var newPopStr = "\"&nbsp; Popularity: <b>" + xmlHttp.responseText + "</b> &nbsp;\""
      var str = "document.getElementById('pop" + objID + "').innerHTML = " + newPopStr;
      eval(str);

      if (voteUp) {
        var newVoteStr = "\"<a href=\\\"javascript:vote(" + objID + "," + newsID + ",false)\\\"><img src=\\\"unvote.jpg\\\" /> Unvote</a>\"";
      }
      else {
        var newVoteStr = "\"<a href=\\\"javascript:vote(" + objID + "," + newsID + ",true)\\\"><img src=\\\"vote.jpg\\\" /> Vote!</a>\"";
      }

      str = "document.getElementById('vote" + objID + "').innerHTML = " + newVoteStr;
      eval(str);
    }
  }

  var paramStr = "newsID=" + newsID + "&vote=" + (voteUp ? "true" : "false");
  xmlHttp.open("GET","vote.php?" + paramStr,true);
  xmlHttp.send(null);
}

function news(sort) {
  var xmlHttp = buildAjaxObject();

  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4) {
      document.getElementById('mainContent').innerHTML = xmlHttp.responseText;
    }

    document.getElementById('sortpop').className = "";
    document.getElementById('sortnew').className = "";
    document.getElementById('sort' + sort).className = "activeSort";
    document.getElementById('sort' + sort).blur();
    activeSort = sort;
    window.scrollTo(0, 0);
  }

  document.getElementById('timeDiv').style.visibility = (sort == "new" ? "hidden" : "visible");

  var paramStr = "sort=" + sort + "&tag=" + document.getElementById('category').innerHTML + "&time=" + document.getElementById('time').innerHTML + "&page=" + activePage;

  xmlHttp.open("GET","newsupdate.php?" + paramStr,true);
  xmlHttp.send(null);
}

function setCategory(cat) {
  if (cat == "More") {
    var xmlHttp = buildAjaxObject();

    xmlHttp.onreadystatechange = function() {
      if (xmlHttp.readyState == 4) {
        document.getElementById('mainContent').innerHTML = xmlHttp.responseText;
      }
    }

    xmlHttp.open("GET","categories.php",true);
    xmlHttp.send(null);
  }
  else {
    document.getElementById('category').innerHTML = cat;

    news(activeSort);
  }
}

function setTime(span) {
  document.getElementById('time').innerHTML = span;

  news(activeSort);
}

function page(num) {
  activePage = num;
  news(activeSort);
}

function comment(id,total,num) {
  var xmlHttp = buildAjaxObject();

  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4) {
      document.getElementById('commentList').innerHTML = xmlHttp.responseText;
    }

    window.scrollTo(0, 0);
  }

  var paramStr = "id=" + id + "&page=" + num + "&total=" + total;
  xmlHttp.open("GET","commentupdate.php?" + paramStr,true);
  xmlHttp.send(null);
}

var activeSort = "pop";
var activePage = 1;
