/**
 * Depends on rankings.js
 */

var uiQuotesCallback;

function StockQuote() {
  this.loadFromYahoo = StockQuote_loadFromYahoo;
}

function StockQuote_loadFromYahoo(strCSV) {
  var csv = strCSV.split(",");

  if (csv.length < 22) {
    return false;
  }

  this.symbol = stripQuotes(csv[0]);
  this.company = stripQuotes(csv[17]);
  this.price = parseFloat(csv[1]);
  this.change = parseFloat(csv[4]);
  this.open = parseFloat(csv[5]);
  this.high = parseFloat(csv[6]);
  this.low = parseFloat(csv[7]);
  this.prevClose = parseFloat(csv[12]);
  this.fiftyDayAverage = parseFloat(csv[10]);
  this.volume = parseFloat(csv[8]);
  this.avgDailyVolume = parseFloat(csv[9]);
  this.eps = parseFloat(csv[15]);
  this.pe = parseFloat(csv[16]);
  this.peg = parseFloat(csv[18]);
  this.oneyPriceTarget = parseFloat(csv[21]);
  
  return true;
}

/**
 * Can be called with multiple symbols, space-separated.
 */
function getQuotes(strSymbols, uiCallback) {
  uiQuotesCallback = uiCallback;
  request = getHttpRequest();
  request.onreadystatechange = quotesCallback;
  try {
    request.open("GET", "ws/stockquote.php?s=" + strSymbols, true);
  } catch(e) {
    return false;
  }
  request.send(null);
}

function quotesCallback() {
  // only if request shows "loaded"
  if (request.readyState == 4) {
      // only if "OK"
      if (request.status == 200) {
        var csvLines = request.responseText.split("\n");
        var arrQuotes = new Array();
        for (var i = 0; i < csvLines.length; i++) {
          var quote = new StockQuote();
          if (quote.loadFromYahoo(csvLines[i])) {
            arrQuotes[arrQuotes.length] = quote;
          }
        }
        uiQuotesCallback(arrQuotes);
      } else {
        uiQuotesCallback(new Array());
      }
  }    
}
