window.onload=function() {
   var h, b, r, t = document.getElementsByTagName("TABLE");
   var sw=0;
   var extraRow, startrow;
   var num_col, cols;
   for(var i=0; i<t.length; i++) {
	var this_t = t[i];
	if(this_t.className && this_t.className == "interlaced") {
	    sw=0;
	    h = this_t.getElementsByTagName("THEAD");
	    for(var j=0; j<h.length; j++) {
		var this_h = h[j];
		r = this_h.getElementsByTagName("TR");
		num_col = 0;
		for(var k=1; k<r.length; k+=1) {
		    r[k].className = "head";
		    cols = r[k].getElementsByTagName("TD");
		    num_col += cols.length;
		    cols = r[k].getElementsByTagName("TH");
		    num_col += cols.length;
		    if (cols.length > num_col) num_col = cols.length;
		}
	    }
	    b = this_t.getElementsByTagName("TBODY");
	    for(var j=0; j<b.length; j++) {
		var this_b = b[j];
		r = this_b.getElementsByTagName("TR");
		if (h.length>0) {
		    startrow = 0;
		} else {
		    startrow = 1;
		    r[0].className = "head";
		    num_col = 0;
		    cols = r[0].getElementsByTagName("TD");
		    num_col += cols.length;
		    cols = r[0].getElementsByTagName("TH");
		    num_col += cols.length;
		}
		for(var k=startrow; k<r.length; k++) {
		    var this_r = r[k];
		    cols = this_r.getElementsByTagName("TD");
		    // no. of columns less than that of head row; implies some previous column has rowspan more than 1; no need to change color for current row
		    if (cols.length < num_col) {
			if (sw==0) {
			    sw = 1;
			} else {
			    sw = 0;
			}
		    }
		    if (sw==0) {
			r[k].className = "odd";
			sw = 1;
		    } else {
			r[k].className = "even";
			sw = 0;
		    }
		    var subT = this_r.getElementsByTagName("TABLE");  //sub-table within a row
		    extraRow = 0;
		    for (var s=0; s<subT.length; s++) {
			var this_st = subT[s];
			extraRow = extraRow + this_st.getElementsByTagName("TR").length;
		    }
		    k = k + extraRow;
		}
	    }
	} else {  //reset for "non-interlaced" table within an "interlaced" table
	    h = this_t.getElementsByTagName("THEAD");
	    for(var j=0; j<h.length; j++) {
		var this_h = h[j];
		r = this_h.getElementsByTagName("TR");
		for(var k=1; k<r.length; k++) {
		    if(r[k].className && r[k].className == "head") r[k].className = "";
		}
	    }
	    b = this_t.getElementsByTagName("TBODY");
	    for(var j=0; j<b.length; j++) {
		var this_b = b[j];
		r = this_b.getElementsByTagName("TR");
		for(var k=0; k<r.length; k++) {
		    if(r[k].className && (r[k].className == "head" || r[k].className == "odd" || r[k].className == "even")) r[k].className = "";
		}
	    }
	}
    }
}
