working = false;



feed = '/ticker/ajax-sqt.php';

imagesPath = '/ticker/img/';





stocks = new Array();

stock = new Object();



o = new Stock("TSX", "^GSPTSE", null, null, null);

stocks[0] = o;



o = new Stock("TSX Venture", "^SPCDNX", null, null, null);

stocks[1] = o;



o = new Stock("DOW", "^DJI", null, null, null);

stocks[2] = o;



o = new Stock("NASDAQ", "^IXIC", null, null, null);

stocks[3] = o;



o = new Stock("S&P 500", "^GSPC", null, null, null);

stocks[4] = o;



o = new Stock("GOLD(USD)", "GCQ10.CMX", null, null, null);

stocks[5] = o;



o = new Stock("CRUDE OIL(USD)", "CLU10.NYM", null, null, null);

stocks[6] = o;


o = new Stock("CDN Dollar", "CADUSD=X", null, null, null);

stocks[7] = o;



function getStock(id) {

  for(i = 0; i < stocks.length; i ++) {

    if(stocks[i].id == id) {

      return stocks[i];

    }

  }

  return null;

}



function showWatchlist() {

  document.write("<div class=watchlist>");

  showStocks();

  document.write("</div>");

}



function showStocks() {

  for(i = 0; i < stocks.length; i ++) {

    stock = stocks[i];

    sclass = i % 2 == 0 ? "light" : "dark";

    document.write("<div class=" + sclass + ">");

    showStock(stock);

    document.write("</div>");

  }

}



function showStock(stock) {

  document.write("<div id=" + stock.id + ">")

  stockHTML = getStockHTML(stock);

  document.write(stockHTML);

  document.write("</div>");

}



function getStockHTML(stock) {

  s = "<div class=row>";

  s += "<div class=stockName>" + stock.name + "</div>";

  if(stock.last) {

    slast = stock.last;

  } else {

    slast = "n/a";

  }



  sicon = "";
  sChangeClass = "";  
  schange = stock.change;  
  schangep = stock.changep;

  if(stock.change) {

    if(stock.change > 0) {

      sicon = "<img src='" + imagesPath + "up.gif'>";

      sChangeClass = "valueUp";

    } else if(stock.change < 0) {

      sicon = "<img src='" + imagesPath + "dn.gif'>";

      sChangeClass = "valueDn";

    } else {      
schange = "n/a";
schangep = "n/a";
sicon = "n/a";


    }    

  } 





  s += "<div align=center class=stockLast>" + slast + "</div>";

  s += "<div class=stockIcon>" + sicon + "</div>";

  s += "<div align=right class=stockChange><span class=" + sChangeClass + ">" + schange + "</span></div>";

  s += "<div align=right class=stockChangep><span class=" + sChangeClass + ">" + schangep + "</span></div>";

  s += "</div>";

  return s;

}

    





function Stock(name, id, last, change, changep) {

  this.id = id;

  this.name = name;

  this.last = last;

  this.change = change;

  this.changep = changep;

}



function createRequestObject() {

  var ro;

  var browser = navigator.appName;

  if(browser == "Microsoft Internet Explorer") {

    ro = new ActiveXObject("Microsoft.XMLHTTP");

  } else {

    ro = new XMLHttpRequest();

  }

  return ro;

}



var http = createRequestObject();



function sndReq() {

  working = true;

  http.open('get', feed + "?time=" + new Date().getTime());

  http.onreadystatechange = handleResponse;

  http.send(null);

}



function doUpdate() {

  if(!working) {

    sndReq();

  }

}





function handleResponse() {

  if(http.readyState == 4){

    var response = http.responseText;

    var update = new Array();



    lines = response.split("\n");

    for(var i = 0; i < lines.length; i ++) {

      line = lines[i];

      if(line.length > 0 && line.indexOf('|' != -1)) {

        update = line.split('|');

        id = update[0];

        last = update[1];

        change = update[2];

        changep = update[3];

        updateStock(id, last, change, changep);        

      }

    }

    setTimeout("doUpdate()", 5000);

    working = false;

  } 

  

}



function updateStock(id, last, change, changep) {

stock = getStock(id);

if(stock != null) {

stock.last = last;

stock.change = change;

stock.changep = changep;

document.getElementById(id).innerHTML = getStockHTML(stock);

 } else {
    stock = new Stock(id, id, "&nbsp;n/a", "&nbsp;&nbsp;n/a", "&nbsp;&nbsp;n/a");
    document.getElementById(id).innerHTML = getStockHTML(stock);
  }
}








