working = false;

feed = 'http://www.finance.it/librerie_php/sqt.php';
imagesPath = 'http://www.finance.it/images/';

stocks = new Array();
stock = new Object();

o = new Stock("Ftse Mib", "FTSEMIB.MI", "-", "-", "-");
stocks[0] = o;

o = new Stock("Ftse It All-Share", "ITLMS.MI", "-", "-", "-");
stocks[1] = o;

o = new Stock("Ftse It Mid Cap", "ITMC.MI", "-", "-", "-");
stocks[2] = o;

o = new Stock("Ftse 100-Londra", "^FTSE", "-", "-", "-");
stocks[3] = o;

o = new Stock("Cac 40-Parigi", "^FCHI", "-", "-", "-");
stocks[4] = o;

o = new Stock("Dax 30-Francoforte", "^GDAXI", "-", "-", "-");
stocks[5] = o;

o = new Stock("Dow Jones", "^DJI", "-", "-", "-");
stocks[6] = o;

o = new Stock("Nasdaq Composite", "^IXIC", "-", "-", "-");
stocks[7] = o;

o = new Stock("Nikkey 225-Tokio", "^N225", "-", "-", "-");
stocks[8] = o;

o = new Stock("Shangai Composite", "000001.SS", "-", "-", "-");
stocks[9] = o;

o = new Stock("Hang Seng-H.Kong", "^HSI", "-", "-", "-");
stocks[10] = o;

o = new Stock("Bombay Sensex", "^BSESN", "-", "-", "-");
stocks[11] = o;

o = new Stock("Bovespa-San Paolo", "^BVSP", "-", "-", "-");
stocks[12] = o;

o = new Stock("Euro/Dollaro", "EURUSD=X", "-", "-", "-");
stocks[13] = o;

o = new Stock("Euro/Yen", "EURJPY=X", "-", "-", "-");
stocks[14] = o;

o = new Stock("Euro/Sterlina", "EURGBP=X", "-", "-", "-");
stocks[15] = o;

o = new Stock("Euro/Franco Sv.", "EURCHF=X", "-", "-", "-");
stocks[16] = o;

o = new Stock("Euro/Yuan Cinese", "EURCNY=X", "-", "-", "-");
stocks[17] = o;

o = new Stock("Euro/Rupia Indiana", "EURINR=X", "-", "-", "-");
stocks[18] = o;

o = new Stock("Petrolio (Nov 2011)", "CLX11.NYM", "-", "-", "-");
stocks[19] = o;

o = new Stock("Gas Naturale (Nov 2011)", "NGX11.NYM", "-", "-", "-");
stocks[20] = o;

o = new Stock("Oro (Nov 2011)", "GCX11.CMX", "-", "-", "-");
stocks[21] = o;

o = new Stock("Rame (Nov 2011)", "HGX11.CMX", "-", "-", "-");
stocks[22] = 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() {
		document.write("<tr><td height='25' align='center' valign='middle' bgcolor='#374F4F' class='style7'>PRINCIPALI INDICI</td></tr><tr><td valign='top' bgcolor='#FFFFEE'><div style='padding-left:5px;padding-top:5px; padding-bottom:5px'>");
  for(i = 0; i < 13; i ++) {
	stock = stocks[i];
    sclass = i % 2 == 0 ? "light" : "dark";
    document.write("<div class=" + sclass + ">");
    showStock(stock);
    document.write("</div>");
  }
   document.write("<div class='tickerrow' align='left' style='padding-left:1px; padding-top:5px; padding-bottom:3px'><strong>Attenzione:</strong> le quotazioni di alcuni indici potrebbero essere ritardate</div></div></td></tr>");
   document.write("<tr><td height='16' align='left' valign='top'><img alt='' src='images/line_2.jpg' width='211' height='7'></td></tr>");
   	document.write("<tr><td height='25' align='center' valign='middle' bgcolor='#374F4F' class='style7'>PRINCIPALI CAMBI</td></tr><tr><td valign='top' bgcolor='#FFFFEE'><div style='padding-left:5px;padding-top:5px; padding-bottom:5px'>");
  for(i = 13; i < 19; i ++) {
    stock = stocks[i];
    sclass = i % 2 == 0 ? "light" : "dark";
    document.write("<div class=" + sclass + ">");
    showStock(stock);
    document.write("</div>");
  }
     document.write("<tr><td height='16' align='left' valign='top'><img alt='' src='images/line_2.jpg' width='211' height='7'></td></tr>");
   	document.write("<tr><td height='25' align='center' valign='middle' bgcolor='#374F4F' class='style7'>PRINCIPALI COMMODITIES</td></tr><tr><td valign='top' bgcolor='#FFFFEE'><div style='padding-left:5px;padding-top:5px; padding-bottom:5px'>");

    for(i = 19; i < stocks.length; i ++) {
    stock = stocks[i];
    sclass = i % 2 == 0 ? "light" : "dark";
    document.write("<div class=" + sclass + ">");
    showStock(stock);
    document.write("</div>");
  }
  document.write("</div></div></td></tr>");
  document.write("<tr><td height='16' align='left' valign='top'><img alt='' src='images/line_2.jpg' width='211' height='7'></td></tr>");
}

function showStock(stock) {
  document.write("<div id=" + stock.id + ">")
  stockHTML = getStockHTML(stock);
  document.write(stockHTML);
  document.write("</div>");
}

function getStockHTML(stock) {
  s = "<div class=tickerrow title='header=[<strong>"+stock.name+"</strong>&nbsp;&nbsp;&nbsp;"+stock.last+"] body=[aggiornato al "+stock.data+"&nbsp;alle ore&nbsp;"+stock.ora+"]'>";
  s += "<div class=stockName>" + stock.name + "</div>";
  if(stock.last) {
    slast = stock.last;
  } else {
    slast = "-";
  }

  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 if(stock.change = 0) {
      sicon = "<img src='" + imagesPath + "st.gif'>";
	} else {      
      sicon = "";
      sChangeClass = "valueDn";
    }    
  } 

  schange = stock.change;  
  schangep = stock.changep;

  s += "<div class=stockLast>" + slast + "</div>";
  s += "<div class=stockIcon>" + sicon + "</div>";
  s += "<div class=stockChangep><span class=" + sChangeClass + ">" + schangep + "</span></div>";
  s += "</div>";
  return s;
}

function Stock(name, id, last, change, changep, data, ora) {
  this.id = id;
  this.name = name;
  this.last = last;
  this.change = change;
  this.changep = changep;
  this.data = data;
  this.ora = ora;
}

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];
		data=update[4];
		ora=update[5];
        updateStock(id, last, change, changep, data, ora);        
      }
    }
    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;
    stock.data = data;
    stock.ora = ora;
	s = getStockHTML(stock);
    document.getElementById(id).innerHTML = getStockHTML(stock);
  }  
}


