var isin;
var reqUmsaetze;
var umsatz_lang;
//!Initalisierung der Javascriptfunktionen fuer die Umsaetze einer Gattung
/*!
 * Es werden die Texte der Umsaetze einer Gattung neu geladen und im HTML aktualisiert.
 */ 
function initUmsaetze(ue_isin, aktualisiere_js, ue_lang)
{
  isin = ue_isin;
  umsatz_lang = ue_lang;
  var inu = window.setInterval('aktualisierenUmsaetze()', aktualisiere_js);
}

//!Abholung des JSON Dokuments
/*! mit den evtl. veraenderten Inhalten der Umsaetze einer Gattung.
 */
function aktualisierenUmsaetze() 
{
  var tradeid = -1;
  if(document.getElementById("lasttradeid"))
		tradeid = document.getElementById("lasttradeid").innerHTML;
  if ( window.XMLHttpRequest )
  {
    reqUmsaetze = new XMLHttpRequest();
    if ( reqUmsaetze )
    {
	  reqUmsaetze.onreadystatechange = procesReqUmsaetze;
	  reqUmsaetze.open("GET", "/cgi-bin/umsaetze.cgi?/opt/bfv/etc/webtoolscgi.xml+" + isin + "+" + tradeid, true);
	  reqUmsaetze.setRequestHeader("Pragma", "no-cache");
	  reqUmsaetze.setRequestHeader("Cache-Control", "must-revalidate");
	  reqUmsaetze.setRequestHeader("If-Modified-Since", document.lastModified);
	  reqUmsaetze.send(null);
	}
  }
  else if ( window.ActiveXObject )
  {
	try 
	{
        reqUmsaetze = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e) 
    {
        try {
            reqUmsaetze = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
    }
    if ( reqUmsaetze )
    {
      reqUmsaetze.onreadystatechange = procesReqUmsaetze;
      reqUmsaetze.open("GET", "/cgi-bin/umsaetze.cgi?/opt/bfv/etc/webtoolscgi.xml+" + isin + "+" + tradeid, true);
      reqUmsaetze.setRequestHeader("Pragma", "no-cache");
      reqUmsaetze.setRequestHeader("Cache-Control", "must-revalidate");
      reqUmsaetze.setRequestHeader("If-Modified-Since", document.lastModified);
	  reqUmsaetze.send();
    }
  }
}

//! Status des zurueckgesendeten JSON Dokument ueberpruefen 
/*! Wenn das angeforderte JSON Dokument zurueck geschickt wurde und 
 *  es vollstaendigt ist, wird die Parse Routime aufgerufen
 */
function procesReqUmsaetze()
{
  if (reqUmsaetze)
  {
	if ( reqUmsaetze.readyState == 4 && reqUmsaetze.status == 200 )
	{
	 	parseUmsaetze(reqUmsaetze.responseText);
	}
  }
}

//! Parsen des JSON Dokuments
/*! und das HTML Dokument entsprechend veraendern.
 * <br>param jsonDocument JSON Dokument
 */
function parseUmsaetze(jsonDocument)
{
	var jsonContent = eval("(" + jsonDocument + ")");
	
	if(document.getElementById("umsaetze"))
	{
		 if(jsonContent.length > 0)
			 if(document.getElementById("lastsortierung"))
				 if(document.getElementById("lastsortierung").innerHTML == "0")
					 document.getElementById("umsaetze").deleteRow(1);
		 var TABLE = document.getElementById("umsaetze_body");
		 for(var i=0; i < jsonContent.length; ++i)
		 {
		 	if(document.getElementById("lasttradeid"))
		 	{
		 		var neue_id = parseInt(jsonContent[i].id);
		 		var alte_id = parseInt(document.getElementById("lasttradeid").innerHTML);
		 		if(neue_id > alte_id)
		 			document.getElementById("lasttradeid").innerHTML = jsonContent[i].id;
		 	}
		 	stelle=0;
		 	
		 	if(jsonContent[i].umsatz)
		 	{
		 		sortierung = getFuehrendeNullenZahl(jsonContent[i].sortierung)+"0";
		 		sortierung_desc = getFuehrendeNullenZahl(jsonContent[i].sortierung)+"1";
		 	}
			else
			{
				sortierung = getFuehrendeNullenZahl(jsonContent[i].sortierung)+"1";
				sortierung_desc = getFuehrendeNullenZahl(jsonContent[i].sortierung)+"0";
			}
		 	
		 	if(document.getElementById("uhrzeit").className.search(/\bsorttable_sorted\b/) != -1)
	 		{
		 		sorttable_sortfunction = "sort_alphadesc";
	 				
	 			row_array = [];
		        col = 1;
		        rows = TABLE.rows;
		        for (var j=0; j<rows.length; j++) {
		        	id = rows[j].cells[col].getAttribute("sorttable_customkey");
		        	row_array[row_array.length] = id;
		        }
		        stelle = findPosition(sorttable_sortfunction, row_array, sortierung);
	 		}
	 		else if(document.getElementById("preis").className.search(/sorttable_sorted/) != -1)
 			{
	 			sorttable_sortfunction = "sort_alphadesc";
	 			if (document.getElementById("preis").className.search(/\bsorttable_sorted_reverse\b/) != -1)
		        	   sorttable_sortfunction = "sort_alpha";
		        	
	 			row_array = [];
		        col = 4;
		        rows = TABLE.rows;
		        for (var j=0; j<rows.length; j++) {
		        	id = rows[j].cells[col].getAttribute("sorttable_customkey");
		        	alt_id = id;
		        	row_array[row_array.length] = id;
		        }
		        if (document.getElementById("preis").className.search(/\bsorttable_sorted_reverse\b/) != -1)
		        	stelle = findPosition(sorttable_sortfunction, row_array, jsonContent[i].price+" "+sortierung_desc);
		        else
		        	stelle = findPosition(sorttable_sortfunction, row_array, jsonContent[i].price+" "+sortierung);
 			}
 		 	//alert(sortierung+"->"+stelle);
		 	var TR = TABLE.insertRow(stelle);
			if(parseInt(jsonContent[i].einfaerben) < 1)
				TR.className = "alt";
			
	 	 	if(jsonContent[i].umsatz)
 	 		{
	 	 		var datum = jsonContent[i].date.split("-");
	 	 		var anzeige_datum = datum[2]+"."+datum[1]+"."+datum[0];
	 	 		if(umsatz_lang == "en" || umsatz_lang == "fr")
	 	 			anzeige_datum = datum[2]+"/"+datum[1]+"/"+datum[0];
	 	 		addCell(TR,0,anzeige_datum, true);
				addCellCustomerKey(TR,1,jsonContent[i].time, sortierung, true);
 	 			if(document.getElementById("lastsortierung"))
					document.getElementById("lastsortierung").innerHTML = parseInt(document.getElementById("lastsortierung").innerHTML) +1;

			}
		 	else
			{
		 		addCell(TR,0," ", true);
		 		addCellCustomerKey(TR,1," ", sortierung, true);
			}	

		 	if(jsonContent[i].umsatz)
		 		addCell(TR,2,jsonContent[i].umsatz, false);
		 	else
		 		addCell(TR,2," ", false);
		 	if(jsonContent[i].volume)
		 		addCell(TR,3,jsonContent[i].volume, false);
		 	else
		 		addCell(TR,3," ", false);
			
		 	addCellCustomerKey(TR,4,jsonContent[i].price,jsonContent[i].price+" "+sortierung, false);
		 }
	}
}

function findPosition(sorttable_sortfunction, row_array, neue_id_preis)
{
	stelle = 0;
	if(sorttable_sortfunction == "sort_alphadesc")
	{
		for(var i=0; i < row_array.length; ++i)
		{
			if(row_array[i] < neue_id_preis)
				stelle=i+1;
		}
	}
	else if(sorttable_sortfunction == "sort_alpha")
	{
		for(var i=0; i < row_array.length; ++i)
		{
			if(row_array[i] > neue_id_preis)
				stelle=i+1;
		}
	}
	return stelle;
}

//! fueherende Nullen aufuellen, damit fuenf Stellen herauskommen
/*! fueherende Nullen aufuellen, damit fuenf Stellen herauskommen
 *  \param zahl die Zahl, die formatiert zurueck gegeben werden soll
*  \return formatierte Zahl
*/
function getFuehrendeNullenZahl(zahl)
{
	if(zahl < 10)
		neue_zahl = "00000"+zahl;
	else if(zahl < 100)
		neue_zahl = "0000"+zahl;
	else if(zahl < 1000)
		neue_zahl = "000"+zahl;
	else if(zahl < 10000)
		neue_zahl = "00"+zahl;
	else if(zahl < 100000)
		neue_zahl = "0"+zahl;

	return neue_zahl;
}

//!Neue Zeile hinzufuegen mit Costumer Key
/*!
 * <br>param tr Zeile der Tabelle - HTML Object
 * <br>param cell Nummer der Zelle
 * <br>param val Text der in die Zelle geschrieben werden soll
 * <br>param customerkey Costumer Key
 * <br>param middle Class Middle soll gesetzt werden
 */
function addCellCustomerKey(tr, cell, val, customerkey, middle)
{
  var TD = tr.insertCell(cell);
  var Text = document.createTextNode(val);
  TD.appendChild(Text);
  if(middle)
	  TD.className = 'middle';
  TD.setAttribute('sorttable_customkey',customerkey);
}

//!Neue Zeile hinzufuegen
/*!
 * <br>param tr Zeile der Tabelle - HTML Object
 * <br>param cell Nummer der Zelle
 * <br>param val Text der in die Zelle geschrieben werden soll
 * <br>param middle Class Middle soll gesetzt werden
 */
function addCell(tr, cell, val, middle)
{
  var TD = tr.insertCell(cell);
  var Text = document.createTextNode(val);
  TD.appendChild(Text);
  if(middle)
  {
  	TD.className = 'middle';
  }
}


