/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/
var cureltname = "";

function output (elt, propName, real) {
  if (elt.getAttribute("name") != cureltname) {
    cureltname = elt.getAttribute("name");
    startNewList(cureltname);
  }
  var style = document.defaultView.getComputedStyle(elt, null);
  var failed = false;
  var calc;
  try {
    calc = style.getPropertyValue(propName);
  } catch (e) {
    calc = e + "";
    failed = true;
  }
  var newdiv = document.createElement("div");
  if (failed) {
    newdiv.className = "not-implemented";
    calc = calc.match(/(NS_ERROR_[A-Z_]*)/)[1];
  } else if (real == calc) {
    newdiv.className = "noerror";
  } else if (real.match(/px$/) && calc.match(/px$/)) {
    var realnum = real.match(/^(.*)px$/)[1];
    var calcnum = calc.match(/^(.*)px$/)[1];
    if (Math.abs(realnum - calcnum) <= 1) {
      newdiv.className = "canttell";
    } else {
      newdiv.className = "error";
    }
  } else if (real == "???") {
    newdiv.className = "tester-check";
  } else {
    newdiv.className = "error";
  }
  newdiv.className = newdiv.className + " output-div";
  newdiv.appendChild(document.createTextNode("The computed " + propName + " is " + calc + " (should be " + real + ")"));
  document.getElementById("info").appendChild(newdiv);
}

function startNewList(name) {
  var newdiv = document.createElement("div");
  newdiv.appendChild(document.createTextNode("Information for \""+name+"\""));
  document.getElementById("info").appendChild(newdiv);
}

function makeLegend () {
  var legend = document.createElement("div");
  legend.id = "legend";

  legend.appendChild(document.createTextNode("\n"));
  var errorspan = document.createElement("span");
  errorspan.className = "error";
  errorspan.appendChild(document.createTextNode("Error"));
  legend.appendChild(errorspan);

  legend.appendChild(document.createTextNode("\n"));
  var noerrorspan = document.createElement("span");
  noerrorspan.className = "noerror";
  noerrorspan.appendChild(document.createTextNode("No Error"));
  legend.appendChild(noerrorspan);
  
  legend.appendChild(document.createTextNode("\n"));
  var rounderrorspan = document.createElement("span");
  rounderrorspan.className = "canttell";
  rounderrorspan.appendChild(document.createTextNode("Likely Rounding Issue"));
  legend.appendChild(rounderrorspan);
  
  legend.appendChild(document.createTextNode("\n"));
  var lookspan = document.createElement("span");
  lookspan.className = "tester-check";
  lookspan.appendChild(document.createTextNode("Tester should check"));
  legend.appendChild(lookspan);

  legend.appendChild(document.createTextNode("\n"));
  var lookspan = document.createElement("span");
  lookspan.className = "not-implemented";
  lookspan.appendChild(document.createTextNode("Not implemented"));
  legend.appendChild(lookspan);
  
  document.getElementsByTagName("body").item(0).appendChild(legend);
}
