function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

addLoadEvent ( function () {
	// the flag we'll use to keep track of 
	// whether the current row is odd or even
	var even = false;

	// if arguments are provided to specify the colours
	// of the even & odd rows, then use the them;
	// otherwise use the following defaults:
	var evenColor = "";
	var oddColor = "#E5EAF0";

	// obtain a reference to the desired table
	// if no such table exists, abort
	var table = document.getElementsByTagName("table")[0];
	if (! table) { return; }

	// by definition, tables can have more than one tbody
	// element, so we'll have to get the list of child
	// &lt;tbody&gt;s 
	var tbodies = table.getElementsByTagName("tbody");

	// and iterate through them...
	for (var h = 0; h < tbodies.length; h++) {

		// find all the &lt;tr&gt; elements... 
		var trs = tbodies[h].getElementsByTagName("tr");

		// ... and iterate through them
		for (var i = 0; i < trs.length; i++) {

			// get all the cells in this row...
			var tds = trs[i].getElementsByTagName("td");
			var ths = trs[i].getElementsByTagName("th");

			// and iterate through them...
			for (var j = 0; j < tds.length; j++) {

				var mytd = tds[j];

				mytd.style.backgroundColor = even ? evenColor : oddColor;
			}
			
			for (var j = 0; j < ths.length; j++) {

				var myth = ths[j];

				myth.style.backgroundColor = even ? evenColor : oddColor;
			}
			// flip from odd to even, or vice-versa
			even =  ! even;
		}
	}
} );