function UpdateGeneralIndex(ATimeId, ALastId, AChangeId, APercId, ATurnOver) 
{
	var lastValues = 0;
	var lastTziros = 0;
	var callInProgress = false;
	var firstRun = true;
	
	var xmlhttp=false;
	
	if (callInProgress == true) { return; }
	
	function execute()
	{
		try
		{
			callInProgress = true;
			/*@cc_on @*/
			/*@if (@_jscript_version >= 5)
			// JScript gives us Conditional compilation, we can cope with old IE versions.
			// and security blocked creation of the objects.
			 try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			 } catch (e) {
				try {
				 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (E) {
				 xmlhttp = false;
				}
			 }
			@end @*/
			if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
				try {
					xmlhttp = new XMLHttpRequest();
				} catch (e) {
					xmlhttp=false;
				}
			}
			if (!xmlhttp && window.createRequest) {
				try {
					xmlhttp = window.createRequest();
				} catch (e) {
					xmlhttp=false;
				}
			}	
			
			var url = "/services/GeneralIndexValues.ashx?a=" + Math.round(Math.random() * 999999999999);
			xmlhttp.open("GET", url,true);
			xmlhttp.onreadystatechange = onReadyStateHandler;
			xmlhttp.send(null);
		}
		catch(e) { /*Some error*/ }
	}
	this.Execute = execute;	
	
	function onReadyStateHandler()
	{
		switch (xmlhttp.readyState)
		{
			case 4:
				try
				{
					var result = xmlhttp.responseText;
					if (result && result.length > 10)
					{
						var tData = result.split("|");
						if (tData.length < 4) 
						{ 
							callInProgress = true;
							firstRun = false;
							return;
						}
						var last = parseFloat(tData[0].replace(",", "."));
						var change = parseFloat(tData[1].replace(",", "."));
						var percChange = parseFloat(tData[2].replace(",", "."));
						var turnover = parseFloat(tData[3].replace(",", "."));
						var timeStamp = tData[4];
						
						//Ενημερώνω τον πίνακα με τις προηγούμενες τιμές.
						if (firstRun == true) { lastValues = last; lastTziros = turnover}
						var elmTime = document.getElementById(ATimeId);
						var elmLast = document.getElementById(ALastId);
						var elmChange = document.getElementById(AChangeId);
						var elmPercChange = document.getElementById(APercId);
						var elmTurnover = document.getElementById(ATurnOver);
						if (elmTime && elmLast && elmChange && elmPercChange && elmTurnover)
						{
							var tTime = timeStamp.split(":");
							if (tTime.length >= 1)
							{
								var d = new Date;
								d.setHours(tTime[0], tTime[1]);
								var d1 = new Date;
								d1.setHours("17", "30");
								var d2 = new Date;
								d2.setHours("10", "30");
								if ((d < d1)&&(d > d2))
								{
									elmTime.innerHTML = timeStamp;
									elmTime.style.display = "";
								}
								else
								{
									elmTime.style.display = "none";
								}
							}
							else
							{
								elmTime.style.display = "none";
							}
							
							elmLast.innerHTML = CommaFormatted(last);
							if (change > 0)
							{
								elmChange.innerHTML = "+" + formatFloat(change);
							}
							else if (change < 0)
							{
								elmChange.innerHTML = formatFloat(change);
							}
							else
							{
								elmChange.innerHTML = formatFloat(change);
							}
							if (percChange > 0)
							{
								elmPercChange.innerHTML = "+" + formatFloat(percChange) + "%";
							}
							else if (change < 0)
							{
								elmPercChange.innerHTML = formatFloat(percChange) + "%";
							}
							else
							{
								elmPercChange.innerHTML = formatFloat(percChange) + "%";
							}
							elmTurnover.innerHTML = formatFloat(turnover);
							if (change > 0)
							{
								elmLast.style.color = "#009900";
								elmChange.style.color = "#009900";
								elmPercChange.style.color = "#009900";
							}
							else if(change < 0)
							{
								elmLast.style.color = "#cc0000";
								elmChange.style.color = "#cc0000";
								elmPercChange.style.color = "#cc0000";
							}
							else
							{
								elmLast.style.color = "#000000";
								elmChange.style.color = "#000000";
								elmPercChange.style.color = "#000000";
							}
							if (turnover != lastTziros) 
							{
								FlashOnGD(ATurnOver, "#fcc981");
							}
							if (last > lastValues)
							{
								FlashOnGD(ALastId, "#b9e1a9");
								FlashOnGD(AChangeId, "#b9e1a9");
								FlashOnGD(APercId, "#b9e1a9");
							}
							else if(last < lastValues)
							{
								FlashOnGD(ALastId, "#fcc981");
								FlashOnGD(AChangeId, "#fcc981");
								FlashOnGD(APercId, "#fcc981");
							}											
						}
						lastValues = last;
						lastTziros = turnover;
					}
					callInProgress = false;
					firstRun = false;
				}
				catch(e)
				{
					//Error
				}
				callInProgress = false;
				firstRun = false;
			break;
			case 2:
				try
				{
					if (xmlhttp.status != 200 )
					{
						xmlhttp.abort();
						callInProgress = false;
						firstRun = false;
					}
				}
				catch (e)
				{
					//Error
				}
			break;
		}
	}	
	
	flashOffGD = function(elmId)
	{
		var elm = document.getElementById(elmId);
		elm.style.backgroundColor = "";
	}
	this.flashOffGD = flashOffGD;
	function FlashOnGD(elmId, color)
	{
		var elm = document.getElementById(elmId);
		elm.style.backgroundColor = color;
		var _self = this;
		setTimeout(function(){_self.flashOffGD(elmId);}, 2000)
	}
	
}
