RegisterEventHandler (window, 'load', initBeautyTables);
RegisterEventHandler (window, 'scroll', renderTables);

var aBeautyTables = null;

function  initBeautyTables()
{
	aBeautyTables = parseTables();
	renderTables();
 	//setInterval(renderTables, 1000);
}

function parseTables()
{
	var aTables = document.getElementsByTagName('table');
	var aBeautyTables = new Array();
	for (var i in aTables)
	{
		if (/beauty_table/.test(aTables[i].className))
		{
			aBeautyTables.push([aTables[i]]);
		}
	}
	for (var i in aBeautyTables)
	{
		var aThs = aBeautyTables[i][0].getElementsByTagName('th');
		for (var j in aThs)
		{
			if (aThs[j].nodeType != 1 || ! /header/i.test(aThs[j].className)) continue;
			var div = document.createElement('div');
			div.className = 'beauty_th ' + aThs[j].className;
			div.style.display = 'none';
			div.innerHTML = aThs[j].innerHTML;
			if (document.documentElement) document.getElementsByTagName('body')[0].appendChild(div);
			else document.body.appendChild(div);
			aBeautyTables[i].push([aThs[j], div]);
		}
		var aTrs = aBeautyTables[i][0].getElementsByTagName('tr');
		for (j in aTrs)
		{
			if (/header/i.test(aTrs[j].className) || /nohl/i.test(aTrs[j].className)) continue;
			aTrs[j].onmouseover = highliteRow;
			aTrs[j].onmouseout = fadeRow;
        }
	}
	return aBeautyTables;
}

function highliteRow(event)
{
	if (!event) event = window.event;
	var target = event.target||event.srcElement;
	while (! /tr/i.test(target.nodeName)) target = target.parentNode;
	target.style.background = "#fff4e6";
}

function fadeRow(event)
{
	if (!event) event = window.event;
	var target = event.target||event.srcElement;
	while (! /tr/i.test(target.nodeName)) target = target.parentNode;
	target.style.background = "#FFFFFF";
}

function renderTables()
{
	if (!aBeautyTables) return;
	var iTablesCnt = aBeautyTables.length;
	var iScroll = document.documentElement.scrollTop||document.body.scrollTop;
	for (var i = 0; i < iTablesCnt; i++)
	{
		aTableDimensions = getDimensions(aBeautyTables[i][0]);
		if (aTableDimensions['top'] < iScroll)
		{
			aBeautyTables[i].push('showed');
			showBeautyHeader(aBeautyTables[i]);
		}
		else
		{
			if (aBeautyTables[i][aBeautyTables[i].length-1] == 'showed')
			{
				hideBeautyHeader(aBeautyTables[i]);
				aBeautyTables[i][aBeautyTables[i].length-1] = 'hidden';
			}
			return(false);
		}
		var iThsCnt = aBeautyTables[i].length;
		for (var j = 1; j < iThsCnt; j++)
		{
		}
	}
}

function showBeautyHeader(aTable)
{
	var iTdCnt = aTable.length - 1;
	//console.log(aTable);
	var aTableDimensions = getDimensions(aTable[0]);
	for (var i = 1; i < iTdCnt; i++)
	{
		var aDimensions = getDimensions(aTable[i][0]);
		//console.log(aTable[i][0]+ '/' + aTable[i][0].offsetWidth);
		try {
		aTable[i][1].style.display = 'block';
		aTable[i][1].style.top = aDimensions['top'] - aTableDimensions['top'] + "px";
		aTable[i][1].style.left = aDimensions['left'] + 'px';
		aTable[i][1].style.width = aDimensions['width'] + 'px';
		aTable[i][1].style.height = aDimensions['height'] + 'px';
        } catch (err){}
	}
}

function hideBeautyHeader(aTable)
{
	var iTdCnt = aTable.length - 1;
	for (var i = 1; i < iTdCnt; i++)
	{
		try {
		aTable[i][1].style.display = 'none';
		} catch (err){}
	}
}
