var timeObj = new Object();
var rateObj = new Object();

//Load XML
//loadXML("/xml_rates/dir_tc.xml");

/*function genObj(x)
{
	setObj(x);
	
	genRateTime();
	genRateTable("rateTable", nameObj);
}*/

//Set XML Object
function setObj(x)
{
	//Set Date
	var date = x.responseXML.getElementsByTagName('date')[0].childNodes;
	timeObj = new Object();
	
	for (var i=0; i<date.length; i++)
	{
		if (!isIE && date[i] == '[object Text]')	continue;
		timeObj[date[i].nodeName] = date[i].firstChild.data;
	}
	
	//Set Currency Row
	var currency = x.responseXML.getElementsByTagName('currency');
	rateObj = new Object();
	
	for (var i=0; i<currency.length; i++)
	{
		var id = currency[i].attributes.getNamedItem('name').value;
		var unit = currency[i].getElementsByTagName('unit');
		
		if (!rateObj[id])	rateObj[id] = new Object();
		rateObj[id]['length'] = unit.length;
		
		for (var j=0; j<unit.length; j++)
		{
			var unitID = unit[j].attributes.getNamedItem('value').value;
			
			rateObj[id][j] = new Object();
			rateObj[id][j]['currency'] = id;
			rateObj[id][j]['unit'] = unitID;
			
			var tenors = unit[j].getElementsByTagName('tenor')[0].childNodes;
			
			for (var k=0; k<tenors.length; k++)
			{
				if (!isIE && tenors[k] == '[object Text]')	continue;
				rateObj[id][j][tenors[k].nodeName] = tenors[k].firstChild.data;
			}
		}
	}
}

//Set Time
function genRateTime()
{
	var rateDate = d.getElementById('rateDate');
	var rateTime = d.getElementById('rateTime');
	
	rateDate.innerHTML = addZero(timeObj["day"]) + '-' + addZero(timeObj["month"]) + '-' + timeObj["year"];
	rateTime.innerHTML = timeObj["time"].substring(0, 5) + ' HKT';
}

function addZero(num)
{
	if (num < 10)	num = "0" + num;
	return	num;
}

//Set Table
function genRateTable(id, nameObj, titleName, unitArray)
{
	var table = d.getElementById(id);
	var th = table.rows[1].cells;
	var count = 0;
	
	//Remove Rows
	while (table.rows.length > 2)	table.deleteRow((table.rows.length-1));
	
	//if (id == 'rateTable2')
	//{
		//genSingleTable('SFA');
	//}
	//else
	//{
		for (var i in rateObj)
		{
			//if (i == 'SWP' || i == 'SFA' || i == 'LCH') continue;
			if (i == 'SWP' || i == 'LCH') continue;
			genSingleTable(i);
		}
	//}
	
	function genSingleTable(i)
	{
		for (var j in rateObj[i])
		{
			if (j == 'length')
			{
				var spanNum = rateObj[i][j];
				continue;
			}
			
			var row = table.insertRow(-1);
			if (count%2 == 0)	row.className = 'bgColor';
			count ++;
			if (count >= 2)	count = 0;
			if (j == (spanNum - 1))	row.className += ' bgLine';
			
			var highlightTR;
			var current;
			for (var k=0; k<th.length; k++)
			{
				//var str = "-";
				var str = "-------";
				var str_org = str;
				var str2 = "-";
				
				if (j == 0)
				{	
					var cell = row.insertCell(-1);					
					if (k == 0)	{cell.setAttribute('rowSpan', spanNum); cell.style.backgroundColor = '#F5F5F5';}
					highlightTR = row;
				}
				else
				{
					if (k == 0)	continue;
					row.highlightTR = highlightTR;
					var cell = row.insertCell(-1);
				}
				
				for (var m in rateObj[i][j])
				{
					if (m != th[k].id)	continue;
					
					var title;
					
					if (m == 'currency')
					{
						str = nameObj[rateObj[i][j][m]];
						str2 = rateObj[i][j][m];
						title = str2;
					}
					else if (m == 'unit')
					{
						str = (unitArray)	?	setUnit(rateObj[i][j][m], unitArray, j, rateObj[i], rateObj[i]['length'])	:	addComma(rateObj[i][j][m]);
					}
					else if (m == 'buy' || m == 'sell')
					{
						str = addComma(rateObj[i][j][m]);
					}
					else
					{
						if (m=='current')	current=rateObj[i][j][m];
						
						str = rateObj[i][j][m];
					}
					
					
					if (m == titleName)		cell.className = 'title';
					if (m == 'unit')		cell.className = 'rateDepositTD2';
					if (m == 'currency')	cell.className = 'rateDepositTD';
					
					if (!row.title)	{
						if (id == 'rateTable2') {
								row.title = 'USD';
						} else {
							row.title = title;
							
						}
					}
					
					break;
				}
			//	if(k==2 && str==str_org)	str=current;
				cell.innerHTML = str;
			}
		}
	}
	
	//Colspan Currency and unit TH
	table.rows[1].removeChild(table.rows[1].cells[1]);
	table.rows[0].cells[0].setAttribute('rowSpan', 2);
	table.rows[0].cells[1].setAttribute('rowSpan', 2);
	table.rows[1].removeChild(table.rows[1].cells[0]);
}



function setUnit(unit, unitArray, i, obj, total)
{
	var str = '';
	var j = Number(i);
	
	//alert (str + '  :  ' + unitArray + '  :  ' + j + '  :  ' + obj[1]["unit"]);
	
	if (unit.indexOf('>= 0') >= 0 && j == 0)
	{
		str = unitArray[0] + ' ' + addComma(getUnit(obj[j+1]["unit"]));
	}
	else if (j == total-1)
	{
		str = addComma(getUnit(unit)) + ' ' + unitArray[2];
	}
	else
	{
		var array = getUnit(obj[j+1]["unit"]).split(',');
		var num = Number(array.join('')) - 1;
		
		str = getUnit(unit) + ' ' + unitArray[1] + ' ' + addComma(num);
	}
	
	function getUnit(str)
	{
		return str.replace('>= ', '');
	}
	
	return str;
}

function addComma(str)
{
	if (str.toString().indexOf(' ') >= 0)	return str;
	
	var ext = '';
	var array = new Array();
	str = str.toString();
	str = str.replace(/,/, '');
	
	//if (str.length > 5)	alert(str);
	
	if (str.indexOf('.') >= 0)
	{
		array = str.split('.');
		str = array[0];
		ext = '.' + array[1];
	}
	
	array = new Array();
	temp = str.length;
	
	while (temp > 0)
	{	
		array.push(str.substring((temp-3), temp));
		temp -= 3;
		
	}
	array.reverse();
	
	return array.join(',') + ext;
	
}


//change table TR TD Background
function changeTableTrBg(id)
{
	var table = d.getElementById(id);
	var tr = table.getElementsByTagName('tr');
	var btn = d.getElementById('currency');
	
	for (var j=0; j<tr.length; j++)
	{
		tr[j].onmouseover = function ()
		{
			var td = this.getElementsByTagName('td');
			
			for (var i=0; i<td.length; i++)
			{
				td[i].bgC = td[i].style.backgroundColor;
				td[i].style.backgroundColor = "#FFD553";				
			}
			
			if (this.highlightTR)	this.highlightTR.getElementsByTagName('td')[0].style.backgroundColor = "#FFD553";
		}
		tr[j].onmouseout = function ()
		{
			var td = this.getElementsByTagName('td');
			for (var i=0; i<td.length; i++)
			{
				td[i].style.backgroundColor = td[i].bgC;
			}
			
			//if (this.highlightTR)	this.highlightTR.getElementsByTagName('td')[0].style.backgroundColor = this.highlightTR.getElementsByTagName('td')[0].bgC;"#F5F5F5"
			if (this.highlightTR)	this.highlightTR.getElementsByTagName('td')[0].style.backgroundColor = "#F5F5F5"
		}
	}
}

/*function genSavingTable(x, id, nameObj)*/
function genSavingTable(x, id, nameObj1)
{
	var obj = x.responseXML.getElementsByTagName('savingsrate');
	var table = d.getElementById(id);
	var th = table.rows[0].cells;
	var str = '-------';
	var title;
	var count = 0;
	
	//Remove Rows
	while (table.rows.length > 1)	table.deleteRow((table.rows.length-1));
	
	for (var i=0; i<obj.length; i++)
	{	
		var obj1 = obj[i].childNodes;
		var row = table.insertRow(-1);
		
		if (count%2 == 0)	row.className = 'bgColor';
		count ++;
		if (count >= 2)	count = 0;
		
		for (var j=0; j<obj1.length; j++)
		{
			if (!isIE && obj1[j] == '[object Text]')	continue;
			
			for (var k=0; k<th.length; k++)
			{
				if (obj1[j].nodeName != th[k].id)	continue;
				
				var cell = row.insertCell(-1);
				var data = obj1[j].firstChild.data;
				
				/*str = (th[k].id == 'currency')?	nameObj[data]:data;*/
				str = (th[k].id == 'currency')?	nameObj1[data]:data;
				if (th[k].id == 'currency')	title = data;
				
				cell.innerHTML = str;
				if (k == 0)	cell.className = 'firstRow';
				break;
			}
		}
		
		if (!row.title)	row.title = title;
	}
}


