function getStockQuote(tablename, sCode, sCell, sPrice, sQty) {
  var xmlHttp = getXmlHttpObject();
  var quotes = new Array(3);
  var pPrice;

  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4) {
      if (xmlHttp.status == 200) {

        var xmlDoc = xmlHttp.responseXML;
        var stockQuote = xmlDoc.getElementsByTagName('stockquote').item(0);
        var sqn = stockQuote.childNodes.length;
        var n = 0;

        for (i = 0; i < sqn; i++) {
          var sqElm = stockQuote.childNodes.item(i);
          var sqData;
          if (sqElm.childNodes.length > 0) {
            sqData = sqElm.childNodes.item(0);
            quotes[n++] = sqData.data;
          }
        }

        var lPrice = quotes[1];
      if (lPrice) {
        sCell[1].innerHTML = '$'+lPrice;
        var perChange = (lPrice - sPrice) / sPrice * 100;
        var pChange = sprintf("%+.1f%", perChange);
        if (perChange > 0) {
          udnTag = "up";
        } else if (perChange < 0) {
          udnTag = "dn";
        } else {
          udnTag = "no";
        }
        sCell[2].innerHTML = pChange + ' <img src="/img/' + udnTag + '.gif" alt="" />';
        sCell[2].className = udnTag;
        subTotal += lPrice * sQty;
        cntStocks++;
      }

        if (cntStocks == numStocks) {
          updateQuoteSummary(tablename);
        }
      }
    }
  }

  pPrice = sCell[1].innerHTML;
  sCell[2].innerHTML = '<img src="img/tab_loading.gif" height="12" width="50" />';
  xmlHttp.open("GET", "/wp-content/plugins/wp-stockquote/getstockquote.php?s="+sCode, true);
  xmlHttp.send(null);
}

function updateQuoteSummary(tablename) {
  var ttlObj = document.getElementById(tablename+'-total');
  var cash = parseInt(ttlObj.getAttribute('cash'));
  var total = cash + subTotal;
  ttlObj.innerHTML = '$'+FormatNumberBy3(total);

  var ttlObj = document.getElementById(tablename+'-pnl');
  var pnl = (total - 1000000) / 1000000 * 100;
  var pPnl = sprintf("%+.2f", pnl);
  ttlObj.innerHTML = pPnl+'%';
  if (pnl > 0) {
    ttlObj.className = "up";
  } else if (pnl < 0) {
    ttlObj.className = "dn";
  } else {
    ttlObj.className = "no";
  }
}

function updateAllQuotes(tablename) {
  clearTimeout(tid);

  var tbl = document.getElementById(tablename);
  subTotal = 0;
  numStocks = tbl.rows.length - 1;
  cntStocks = 0;
  for (r = 1; r < tbl.rows.length; r++) {
    cell = tbl.rows[r].cells;
    code = tbl.rows[r].getAttribute('name');
    price = tbl.rows[r].getAttribute('price');
    quantity = tbl.rows[r].getAttribute('quantity');
    getStockQuote(tablename, code, cell, price, quantity);
  }

  setTimer(tablename);
}

function setTimer(tablename) {
  var D = new Date;
  var GMTHours = D.getUTCHours();
  if ((GMTHours >= 1) && (GMTHours <= 9)) {
    tid = setTimeout("autoUpdate('"+tablename+"');", 300000);
  }
}

function autoUpdate(tablename) {
  updateAllQuotes(tablename);
}

var tid;
var subTotal;
var numStocks;
var cntStocks;
