function hideOldRows()
{
	/* Check whether this page links to an anchor. */
	if ( location.href.indexOf('#') > 0 )
	{
		document.getElementById("show_link").style.display = 'none';
		document.getElementById("hide_link").style.display = 'none';
		return;
	}

	var now = new Date();
	var yyyy = now.getYear()-1;
	if ( yyyy < 1000 )
	{
		yyyy += 1900;
	}
	var mm = now.getMonth()+1;
	if ( mm < 10 )
	{
		mm = "0" + mm;
	}
	var dd = now.getDay();
	if ( dd < 10 )
	{
		dd = '0' + dd;
	}
	var cutoff_row_id = 'ROW_' + yyyy + '-' + mm + '-' + dd;

	var a_rows = document.getElementsByTagName("TR");
	for (var r=0 ; r < a_rows.length ; ++r)
	{
		if ( (a_rows[r].id != undefined) && (a_rows[r].id.substring(0, 4) == 'ROW_') )
		{
			if (a_rows[r].id < cutoff_row_id)
			{
				document.getElementById(a_rows[r].id).style.display = 'none';
			}
		}
	}

	document.getElementById("show_link").style.display = '';
	document.getElementById("hide_link").style.display = 'none';
}

function showAllRows()
{
	var a_rows = document.getElementsByTagName("TR");
        for (var r=0 ; r < a_rows.length ; ++r)
	{
		if ( (a_rows[r].id != undefined) && (a_rows[r].id.substring(0, 4) == 'ROW_') )
		{
			document.getElementById(a_rows[r].id).style.display = '';
		}
	}

	document.getElementById("show_link").style.display = 'none';
	document.getElementById("hide_link").style.display = '';
}

function setFontSize()
{
	var min_em = 1.0;
	var max_em = 1.6;
	var a = min_em;
	var c = max_em;
	var i = 0;
	var s = getStyleClass("global");

	while ( (++i < 10) && (a < c) )
	{
		var b = (a+c)/2;

		s.style.fontSize = min_em + "em";
		s.style.fontSize = b + "em";
		if ( scrollbarsAreVisible() )
		{
			c = b;
		}
		else
		{
			if ( c - a < 0.001 )
			{
				break;
			}
			a = b;
		}
	}
	s.style.color = "black";

	if ( scrollbarsAreVisible() )
	{
		if ( a > min_em )
		{
			while ( scrollbarsAreVisible() )
			{
				a -= 0.1;
				s.style.fontSize = a + "em";
			}
		}
	}
}

function scrollbarsAreVisible()
{
	var b = document.body;
	var sh = b.scrollHeight;
	var sw = b.scrollWidth;
	var ch = b.clientHeight;
	var cw = b.clientWidth;
	return( (cw<sw) || (ch<sh) );
}

function getStyleClass (className) {
	for (var s = 0; s < document.styleSheets.length; s++)
	{
		if(document.styleSheets[s].rules)
		{
			for (var r = 0; r < document.styleSheets[s].rules.length; r++)
			{
				if (document.styleSheets[s].rules[r].selectorText == '.' + className)
				{
					return document.styleSheets[s].rules[r];
				}
			}
		}
		else if(document.styleSheets[s].cssRules)
		{
			for (var r = 0; r < document.styleSheets[s].cssRules.length; r++)
			{
				if (document.styleSheets[s].cssRules[r].selectorText == '.' + className)
					return document.styleSheets[s].cssRules[r];
			}
		}
	}
	
	return null;
}


function trackerCookieExists()
{
	if (document.cookie.length>0)
	{
		c_start=document.cookie.indexOf("tracker");
		if (c_start != -1)
		{
			return true;
		}
	}
	return false;
}

function setTrackerCookie()
{
	if ( !trackerCookieExists() )
	{
		var today = new Date();
		today.setTime( today.getTime() );
		var expires_date = new Date( today.getTime() + 1000*60*60*24*365*5 );
		var s_random = randomString(12);
		document.cookie = "tracker=" + s_random + ";expires=" + expires_date.toGMTString() + ";path=/";
	}
}

function randomString(length) {
    var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
    
    if (! length) {
        length = Math.floor(Math.random() * chars.length);
    }
    
    var str = '';
    for (var i = 0; i < length; i++) {
        str += chars[Math.floor(Math.random() * chars.length)];
    }
    return str;
}

