working = false;

feed = 'http://www.cente.nl/ajax-sqt.php';
imagesPath = 'http://www.cente.nl/ticker/img/';

stocks = new Array();
stock = new Object();
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer") {
o = new Stock("AEX", "^AEX", null, null, null, "0px", "0px");
stocks[0] = o;

o = new Stock("CAC40", "^FCHI", null, null, null, "0px", "0px");
stocks[1] = o;

o = new Stock("DAX", "^GDAXI", null, null, null, "0px", "0px");
stocks[2] = o;

o = new Stock("FTI", "FTI0U.AS", null, null, null, "0px", "0px");
stocks[3] = o;

o = new Stock("Nasdaq100", "NQU10.CME", null, null, null, "0px", "0px");
stocks[4] = o;

o = new Stock("S&P", "SPU10.CME", null, null, null, "0px", "0px");
stocks[5] = o;

o = new Stock("DJIA", "^DJI", null, null, null, "0px", "0px");
stocks[6] = o;

o = new Stock("NASDAQ", "^IXIC", null, null, null, "0px", "0px");
stocks[7] = o;

o = new Stock("SP500", "^GSPC", null, null, null, "0px", "0px");
stocks[8] = o;

o = new Stock("SENSEX", "^BSESN", null, null, null, "0px", "0px");
stocks[9] = o;

o = new Stock("Hang-Seng", "^HSI", null, null, null, "0px", "0px");
stocks[10] = o;

o = new Stock("Nikkei225", "^N225", null, null, null, "0px", "0px");
stocks[11] = o;

o = new Stock("Crude Oil", "CLQ10.NYM", null, null, null, "0px", "0px");
stocks[12] = o;

o = new Stock("Gold", "GCQ10.CMX", null, null, null, "0px", "0px");
stocks[13] = o;

o = new Stock("Silver", "SIQ10.CMX", null, null, null, "0px", "0px");
stocks[14] = o;

o = new Stock("dollar/yen", "USDJPY=X", null, null, null, "0px", "0px");
stocks[15] = o;

o = new Stock("euro/dollar", "EURUSD=X", null, null, null, "0px", "0px");
stocks[16] = o;

o = new Stock("euro/yen", "EURJPY=X", null, null, null, "0px", "0px");
stocks[17] = o;

}else{

o = new Stock("AEX", "^AEX", null, null, null, "0px", "0px");
stocks[0] = o;

o = new Stock("CAC40", "^FCHI", null, null, null, "0px", "0px");
stocks[1] = o;

o = new Stock("DAX", "^GDAXI", null, null, null, "0px", "0px");
stocks[2] = o;

o = new Stock("FTI", "FTI0U.AS", null, null, null, "0px", "0px");
stocks[3] = o;

o = new Stock("Nasdaq100", "NQU10.CME", null, null, null, "0px", "0px");
stocks[4] = o;

o = new Stock("S&P", "SPU10.CME", null, null, null, "0px", "0px");
stocks[5] = o;

o = new Stock("DJIA", "^DJI", null, null, null, "0px", "0px");
stocks[6] = o;

o = new Stock("NASDAQ", "^IXIC", null, null, null, "0px", "0px");
stocks[7] = o;

o = new Stock("SP500", "^GSPC", null, null, null, "0px", "0px");
stocks[8] = o;

o = new Stock("SENSEX", "^BSESN", null, null, null, "0px", "0px");
stocks[9] = o;

o = new Stock("Hang-Seng", "^HSI", null, null, null, "0px", "0px");
stocks[10] = o;

o = new Stock("Nikkei225", "^N225", null, null, null, "0px", "0px");
stocks[11] = o;

o = new Stock("Crude Oil", "CLQ10.NYM", null, null, null, "0px", "0px");
stocks[12] = o;

o = new Stock("Gold", "GCQ10.CMX", null, null, null, "0px", "0px");
stocks[13] = o;

o = new Stock("Silver", "SIQ10.CMX", null, null, null, "0px", "0px");
stocks[14] = o;

o = new Stock("dollar/yen", "USDJPY=X", null, null, null, "0px", "0px");
stocks[15] = o;

o = new Stock("euro/dollar", "EURUSD=X", null, null, null, "0px", "0px");
stocks[16] = o;

o = new Stock("euro/yen", "EURJPY=X", null, null, null, "0px", "0px");
stocks[17] = 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() {
if(browser == "Microsoft Internet Explorer") {
document.write("<table style='position:relative;top:2px;width:50px;border:1px solid  black;'><tr><td >");
document.write("<table width=50%  ><tr><td>");
  for(i = 0; i < 6; i ++) {
    stock = stocks[i];
    sclass = i % 2 == 0 ? "light" : "light";
    document.write("<div class=" + sclass + ">");
    showStock(stock);
    document.write("</div>");
  }
        document.write("</td><td width=50%>");
  
  for(i = 6; i < 12; i ++) {
    stock = stocks[i];
    sclass = i % 2 == 0 ? "light" : "light";
    document.write("<div class=" + sclass + ">");
    showStock(stock);
    document.write("</div>");
  }
  document.write("</td><td width=50%>");
  for(i = 12; i < 18; i ++) {
    stock = stocks[i];
    sclass = i % 2 == 0 ? "light" : "light";
    document.write("<div class=" + sclass + ">");
    showStock(stock);
    document.write("</div>");
  }
  
  document.write("</td></tr></table>");

  document.write("</td></tr></table>");
  }else{
  
  document.write("<table style='position:relative;top:2px;width:50px;border:1px solid  black;'><tr><td >");
document.write("<table width=50% '><tr><td>");
  for(i = 0; i < 6; i ++) {
    stock = stocks[i];
    sclass = i % 2 == 0 ? "light" : "light";
    document.write("<div class=" + sclass + ">");
    showStock(stock);
    document.write("</div>");
  }
        document.write("</td><td style='width:200px;'>");
  
  for(i = 6; i < 12; i ++) {
    stock = stocks[i];
    sclass = i % 2 == 0 ? "light" : "light";
    document.write("<div class=" + sclass + ">");
    showStock(stock);
    document.write("</div>");
  }
  document.write("</td><td style='width:200px;'>");
  for(i = 12; i < 18; i ++) {
    stock = stocks[i];
    sclass = i % 2 == 0 ? "light" : "light";
    document.write("<div class=" + sclass + ">");
    showStock(stock);
    document.write("</div>");
  }
  document.write("</td></tr></table>");
  document.write("</td></tr></table>");
  }
}

function showStock(stock) {
  document.write("<div id=" + stock.id + ">");
  
  stockHTML = getStockHTML(stock);
  document.write(stockHTML);

  document.write("</div>");
}

function getStockHTML(stock) {

s = "<div>";

if(stock.name == 'DJIA'){s += "<table style='border:1px solid silver;width:125;text-align:center;position:relative;left:" + stock.left + ";top:" + stock.top + ";'><tr><td><font face=verdana size=1 color=blue weight=normal />AMERIKA:</td><tr></table></div><div>";}
if(stock.name == 'AEX'){s += "<table style='border:1px solid silver;width:125;text-align:center;position:relative;left:" + stock.left + ";top:" + stock.top + ";'><tr><td ><font face=verdana size=1 color=blue weight=normal />EUROPA:</td><tr></table></div><div>";}
if(stock.name == 'SENSEX'){s += "<table style='border:1px solid silver;width:125;text-align:center;position:relative;left:" + stock.left + ";top:" + stock.top + ";'><tr><td ><font face=verdana size=1 color=blue weight=normal />AZIE:</td><tr></table></div><div>";}
if(stock.name == 'Crude Oil'){s += "<table style='border:1px solid silver;width:125;text-align:center;position:relative;left:" + stock.left + ";top:" + stock.top + ";'><tr><td ><font face=verdana size=1 color=blue weight=normal />COMMODITIES:</td><tr></table></div><div>";}
if(stock.name == 'FTI'){s += "<table style='border:1px solid silver;width:125;text-align:center;position:relative;left:" + stock.left + ";top:" + stock.top + ";'><tr><td><font face=verdana size=1 color=blue weight=normal />FUTURES:</td><tr></table></div><div>";}
if(stock.name == 'dollar/yen'){s += "<table style='border:1px solid silver;width:125;text-align:center;position:relative;left:" + stock.left + ";top:" + stock.top + ";'><tr><td><font face=verdana size=1 color=blue weight=normal />VALUTA:</td><tr></table></div><div>";}

s += "<table style='border:1px solid silver;width:188;position:relative;left:" + stock.left + ";top:" + stock.top + ";background-color:#112876;' ><tr><td style='align:left;width:75px;' nowrap><font style='font-face:verdana;font-weight:normal;font-size:11px;color:white;' >" + stock.name + "</font></td>";

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 += "<td style='text-align:right;width:50px;'><font style='font-face:verdana;font-weight:normal;font-size:11px;color:white;text-align:right;' >" + slast + "</font></td><td style='width:50px;text-align:right;'><span class=" + sChangeClass + "><font style='font-face:verdana;font-weight:normal;font-size:11px;text-align:right;' >" + schangep + "</font></span></td></tr></table>";

s += "</div>";
return s;

}

function Stock(name, id, last, change, changep,left,top ) {
this.id = id;
this.name = name;
this.last = last;
this.change = change;
this.changep = changep;
this.left = left;
this.top = top;
}

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;
s = getStockHTML(stock);
document.getElementById(id).innerHTML = getStockHTML(stock);
}
}

