function UpdateChangeField(element,change)
{
	if (change > 0)
	{
		clr = "blue";
		change = "+" + change;
	}
	else if ( change < 0 )
	{
		clr = "red";
	}
	else if ( change == 0 )
	{
		clr = "black" ;
	}
	document.all(element).innerText = change;
	document.all(element).style.color = clr;
}

function flashEffect(count, element, oldValue, newValue)
{
	// if the old value is equal to the new value then simply return
	if (Math.abs(oldValue - newValue) < 0.0001)
		return;
		
	if (newValue == "999999999")
		newValue = "-";

	// if the old value was empty or 0 then simply replace 
	if (oldValue == 0 || oldValue == "-" || newValue == "-")
	{
		document.all(element).innerText = IFSFormatNumber(newValue,4)
		return;
	}
	

	// Only flash 3 times....
	if (count < 6)
	{
		if (count == 0)
		{
			// Work out the correct flash color
			if (newValue > oldValue)
				flashCol = "lightblue";
			else
				flashCol = "lightsalmon";
		
			document.all(element).style.backgroundColor = flashCol;				
		}
		
		if (count == 5) 
		{
			document.all(element).innerText = IFSFormatNumber(newValue,4)				
		}
		else if (count == 4) 
		{
			document.all(element).innerHTML = IFSFormatNumber(newValue,4) 				
		}
		else if (count == 0 || count == 2)
		{
			document.all(element).innerText = IFSFormatNumber(oldValue,4)						
		}
		else
		{
			document.all(element).innerHTML = IFSFormatNumber(newValue,4)
		}
		count++;		
		setTimeout("flashEffect(" + count + ",\"" + element + "\",\"" + oldValue + "\",\"" + newValue + "\")", 250);
	}
	else
	{
		document.all(element).style.backgroundColor="";				
	}
	
}

function IFSFormatNumber2(num,decimalPlaces)
{
	tempStr = "" + num; 
	dotStr = ".";
	pos = 0
	for ( var i=0;i<tempStr.length;i++)
	{
		temp = tempStr.substring(i,i+1);
		if (dotStr.indexOf(temp) != -1)
		{
			pos  = i;
		}
	}
	if (pos != 0 && (pos + decimalPlaces + 1) < tempStr.length )
	{
		result = tempStr.substring(0,pos+decimalPlaces + 1);
	}
	else
	{
		result = tempStr;
	}

	//return result;
	result = Math.round(num*100)/100;
	return result;

	
}

function IFSFormatNumberString(num,decimalPlaces)
{
	dpPower = Math.pow(10,decimalPlaces);
	result = Math.round(num* dpPower)/dpPower;
	result = result + "" ;

	if ( result.indexOf( "." ) == -1 )
		result += "." ;
	while( result.length - result.indexOf( "." ) - 1 < decimalPlaces)
		result += "0" ;
	return result ;
}

function IFSFormatNumber(num,decimalPlaces)
{
	if (num == "-")
		return num;
	dpPower = Math.pow(10,decimalPlaces);
	result = Math.round(num* dpPower)/dpPower;
	return result;	
}


function feedUpdate()
{		
	for(i=0;i<eventList.GetNumberOfDHTMLFieldEvents();i++)
	{
		evt = eventList.GetDHTMLFieldUpdateEvent(i);
		val = document.feed.GetLastValue(evt.GetSymbol(),evt.GetField());
		if (val.length > 0 && val != 0)
		{
			DHTMLField = evt.GetDHTMLField();
			/* ADDED by Krzysztof 24/05/2007 
               BEGIN */
            if (typeof updateFilters != "undefined")
            {
                for (var j = 0; j < updateFilters.length; j++)
                {
                    var filter = updateFilters[j];
                    if (filter.canProcess(evt.GetSymbol(), evt.GetField(), DHTMLField))
                    {
                        val = filter.processValue(val);
                        break;
                    }
                }
            }
            /* END */
			if (evt.GetType() == 2)
			{ 				
				flashEffect(0,DHTMLField,document.all(DHTMLField).innerText,val);
			}
			else if (evt.GetType() == 1)
			{
				document.all(DHTMLField).innerText = val;
			}		
			else if (evt.GetType() == 6)
			{
				document.all(DHTMLField).innerHTML = val;
			}		
		}
	}	

	for(i=0;i<eventList.GetNumberOfGraphEvents();i++)
	{
	
		evt = eventList.GetGraphUpdateEvent(i);
		val = document.feed.GetLastValue(evt.GetSymbol(),evt.GetField());
		
		if (val.length > 0 && val != 0 && document.feed.GetLastUpdateTime().substring(0,10) != "1-Jan-1970")
		{
			if (evt.GetUpdateType() == 1)
			{
				if (evt.GetSymbol().search(/.LI/) != -1 || evt.GetSymbol().search(/.LSE/))
				{
					//now = new Date();
					//timestring = new String();
					//day = now.getDate();
					
					//timestring = document.feed.GetLastUpdateTime();
					//index = timestring.indexOf("-");
					//alert(timestring);
					//alert(timestring);
					document.graph.AddRecord(evt.GetSeriesName(),document.feed.GetLastUpdateTime(900),parseFloat(val));
					//document.graph.AddRecord(evt.GetSeriesName(),day.toString() + timestring.slice(2,timestring.length),parseFloat(val));
				}
				else
				{
					document.graph.AddRecord(evt.GetSeriesName(),document.feed.GetLastUpdateTime(),val);
				}
			}
			else if (evt.GetUpdateType() == 2)
				document.graph.AddBid(evt.GetSeriesName(),document.feed.GetLastUpdateTime(),val)
			else if (evt.GetUpdateType() == 3)
				document.graph.AddAsk(evt.GetSeriesName(),document.feed.GetLastUpdateTime(),val)
		}
	}	
	
	//document.feed.UpdateLivePrices();
	setTimeout("feedUpdate()", 2000);
}

/* ADDED by Krzysztof 24/05/2007 
   BEGIN */
var updateFilters = [];
updateFilters.allRE = new RegExp('.*');
updateFilters.addFilter = function(symbolRE, fieldRE, elementRE, transform)
{
    var filter = { symbolRE: symbolRE ? symbolRE : this.allRE, fieldRE: fieldRE ? fieldRE : this.allRE, elementRE: elementRE ? elementRE : this.allRE, transform: transform };
    this[this.length] = filter;
    filter.canProcess = function(symbol, field, element)
    {
        if (typeof symbolRE == 'function')
        {
            var result = this.symbolRE(symbol);
            if (!result)
                return false;
        } 
        else
            if (!this.symbolRE.test(symbol))
                return false;
        if (!this.fieldRE.test(field))
            return false;
        if (!this.elementRE.test(element))
            return false;
        return true;
    }
    filter.processValue = function(val)
    {
        return this.transform(val);
    }
}
/* END */
