/* 
   JavaScript Document to build AJAX Stock-Ticker
   Malte Beckers
   March 2008
   modified by sschaefer
*/

language = "";

function ajaxFeed(lang) {
  language = lang;
  window.setTimeout("getContents('"+language+"')", 10);  // Short pause, needed to show loading image (Firefox)
}


function getContents() {

//	var feedUrl = '/redirect_ir3.quartalflife.com/data/haniel/xml_' + language + '.php';
//
//	   $.ajax({
//		   type: "GET",
//		   url: feedUrl,
//		   dataType: "xml",
//		   success: xmlDataOutput() {		   
//		   }
//	   });
    

  // Build HttpRequestObject
  httpRequestObject = gethttpRequestObject();  
  
  httpRequestObject.open ('GET', '/redirect_ir3.quartalflife.com/data/haniel/xml_' + language + '.php'), true;
  
  // Open connection to file with timestamp (to prevent browser caching)
  
  //httpRequestObject.open ('GET', 'feed.php?ts=' + new Date().getTime()), true;

  // Call to event handler function
  httpRequestObject.onreadystatechange = handleReadyStateChange;
 
 // Send request to server
  httpRequestObject.send (null);

}

function gethttpRequestObject() {
  var xmlHttp2 = false;

  // Build XML HttpRequestEntity for IE < version 6
  try {
    xmlHttp2  = new ActiveXObject("Msxml2.XMLHTTP");
  } 
  catch(e) {
    try {
      xmlHttp2  = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    catch(e) {
      xmlHttp2  = false;
    }
  }
  // Build XML HttpRequestEntity for Mozilla, Opera, Safari ...
  if (!xmlHttp2  && typeof XMLHttpRequest != 'undefined') {
    xmlHttp2 = new XMLHttpRequest();
  }
  return xmlHttp2;
}

function handleReadyStateChange () {  // Event handler function to observe state changes
  // If request finished (readyState 4) and "ok" from server (status: 200)
  if (httpRequestObject.readyState == 4 && httpRequestObject.status == 200) {
    // Request is finished and data received now
    // => Send response data to function "xmlDataOutput"
	xmlDataOutput(httpRequestObject.responseXML);
  }
}

// Function for formated output
function xmlDataOutput(response) {

  document.getElementById('outputFeed').innerHTML = "";  // Clear old data output
 
  var stocks = response.getElementsByTagName('stock');
  
  var Feed = document.createElement ('div');  // Build new div (row) with classname 'Feed'
      Feed.className = 'Feed';
  var Row = document.createElement ('div');  // Build new div (row) with classname 'feedRow'
      Row.className = 'feedRow';
  var Name = document.createElement ('div');  // Build new div (row) with classname 'feedName'
      Name.className = 'feedName';
	  Name.appendChild (document.createTextNode(' '));
  var Price = document.createElement ('div');  // Build new div (row) with classname 'feedPrice'
      Price.className = 'feedPrice';	
	  Price.appendChild (document.createTextNode(' '));  
  var Change = document.createElement ('div');  // Build new div (row) with classname 'feedChange'
      Change.className = 'feedChange';
	  Change.appendChild (document.createTextNode(' '));
  var Row2 = document.createElement ('div');  // Build new div (row) with classname 'feedRow2'
      Row2.className = 'feedRow2';
	  Row2.appendChild (document.createTextNode(' '));
  
  for (var i = 0; i < stocks.length; i++) {
    divRow = Row.cloneNode (true);  // Build new row
	
	divName = Name.cloneNode (true);  // Build new name element
	  divName.firstChild.nodeValue = stocks[i].getElementsByTagName('name')[0].firstChild.nodeValue; // Fill name element
	  var ChangeName = document.createAttribute("title");  // Set alt-tag
      ChangeName.nodeValue = stocks[i].getElementsByTagName('isin')[0].firstChild.nodeValue;  // Fill alt-tag
	  divName.setAttributeNode(ChangeName);  // Attach alt-tag
	  divRow.appendChild(divName);
	
	divPrice = Price.cloneNode (true);  // Build new name element
	  divPrice.firstChild.nodeValue = stocks[i].getElementsByTagName('last_price')[0].firstChild.nodeValue; // Fill name element
	  divPrice.firstChild.nodeValue += " ";
	  divPrice.firstChild.nodeValue += stocks[i].getElementsByTagName('currency')[0].firstChild.nodeValue;   // ... and currency
	  var ChangePrice = document.createAttribute("title");  // Set alt-tag
      ChangePrice.nodeValue = stocks[i].getElementsByTagName('exchange')[0].firstChild.nodeValue;  // Fill alt-tag
	  divPrice.setAttributeNode(ChangePrice);  // Attach alt-tag
	  divRow.appendChild(divPrice);
	  
	divChange = Change.cloneNode (true);  // Build new name element
	  if(parseFloat(stocks[i].getElementsByTagName('change_percent')[0].firstChild.nodeValue.replace(/\,/, ".")) < 0) {
        divChange.className = 'feedChange negative';
	  }
	  if(parseFloat(stocks[i].getElementsByTagName('change_percent')[0].firstChild.nodeValue.replace(/\,/, ".")) > 0) {
        divChange.className = 'feedChange positive';
	  }
	  divChange.firstChild.nodeValue = " (";
	  divChange.firstChild.nodeValue += stocks[i].getElementsByTagName('change_percent')[0].firstChild.nodeValue; // Fill percent element
	  divChange.firstChild.nodeValue += "%)";
	  var ChangeTitle = document.createAttribute("title");  // Set alt-tag
      if(language == "d"){ChangeTitle.nodeValue = "Abschluss Vortag";} // Fill alt-tag de version
	  else {ChangeTitle.nodeValue = "Previous close";}  // Fill alt-tag en version
	  divChange.setAttributeNode(ChangeTitle);  // Attach alt-tag
      divRow.appendChild(divChange);

    Feed.appendChild(divRow);
	
	// Second Row
	divRow2 = Row2.cloneNode (true);  // Build new row (second)
	  if(language == "d"){
		  divRow2.firstChild.nodeValue = "\u00c4nderung: " + stocks[i].getElementsByTagName('time_last_price')[0].firstChild.nodeValue + " Uhr";
		  divRow2.firstChild.nodeValue +=  " (" + stocks[i].getElementsByTagName('date_last_price')[0].firstChild.nodeValue + ")"; // Fill name element
		  var DateTime = document.createAttribute("title");  // Set alt-tag
		  DateTime.nodeValue = "Zeit und Datum der letzten \u00c4nderung";  // Fill alt-tag DE
		  divRow2.setAttributeNode(DateTime);  // Attach alt-tag
	  }
	  else {
		  divRow2.firstChild.nodeValue = "Update: " + stocks[i].getElementsByTagName('time_last_price')[0].firstChild.nodeValue;
		  divRow2.firstChild.nodeValue +=  " (" + stocks[i].getElementsByTagName('date_last_price')[0].firstChild.nodeValue + ")"; // Fill name element
		  var DateTime = document.createAttribute("title");  // Set alt-tag
		  DateTime.nodeValue = "Date and time last price update";  // Fill alt-tag EN
		  divRow2.setAttributeNode(DateTime);  // Attach alt-tag
	  } 
	Feed.appendChild(divRow2);
  }
  
  // Fill the output element with output
  document.getElementById('outputFeed').appendChild(Feed); 
  
  //alert(document.getElementById('outputFeed').innerHTML);  // Alert output to HTML
  
  // Restart request again
  window.setTimeout("ajaxFeed('"+language+"')", 10000);  // Reload after time (10000ms = 10sec)
}

