working = false;

feed = '/assets/quotes/ajax-sqt.php';
imagesPath = '/assets/quotes/img/';


stocks = new Array();
stock = new Object();

fromcookie = readCookie('stockinfo');
if (fromcookie) {
	params = fromcookie.split(':');
	o = new Stock ("TSX: VGM", "VGM.V", params[0], params[1], params[2]);
} else {
	o = new Stock ("TSX: VGM", "VGM.V", null, null, null);
}
stocks[0] = o;

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

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 = "";
  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 {      
      sicon = "<img src='" + imagesPath + "st.gif'>";
    }    
  } 

  schange = stock.change;  
  schangep = stock.changep;

  s += "<div class='stockLast'>Last: $" + slast + "</div>";
  s += "<div class='stockIcon'>Change: " + sicon + "</div>";
  s += "<div class='stockChange'><span class=" + sChangeClass + ">" + schange + "</span></div>";
  s += "<div class='stockChangep'><span class=" + sChangeClass + ">" + schangep + "</span></div>";
  s += "<div class='stockDelay'>20 minute delay</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()", 30000);
    working = false;
  } 
  
}

function updateStock(id, last, change, changep) {  
  stock = getStock(id);
  if(stock != null) {
    stock.last = last;
    stock.change = change;
    stock.changep = changep;
    s = getStockHTML(stock);
    document.getElementById(id).innerHTML = getStockHTML(stock);
    createCookie('stockinfo', last+':'+change+':'+changep, 0);
  }  
}




