// JavaScript functions to apply background color to table rows when moused over

function highlightRow(td,cName) {
	tr = td.parentNode;
	n_rows = td.rowSpan;
	if (n_rows > 1) {
		// highlight cells in current row starting with the selected cell
		this_td = td.cellIndex;
		tds = tr.getElementsByTagName('td');
		for (var j=this_td; j<tds.length;j++) {
			tds[j].className=cName;
		}
		// highlight remaining nested rows
		this_tr = tr.sectionRowIndex;
		trs = tr.parentNode.getElementsByTagName('tr');
		for (var i=this_tr+1; i<this_tr+n_rows; i++) {
			trs[i].className=cName;
		}
	}
	else {
		// highlight the row
		tr.className=cName;
		// if this is a nested row, highlight header cells
		n_cells = td.parentNode.getElementsByTagName('td').length;
		if (n_cells < n_cols) {
			tds=td.parentNode.getElementsByTagName('td');
			for (var i=0;i<tds.length;i++) {
				if (tds[i].colSpan > 1) {
					n_cells += (tds[i].colSpan - 1);
				}
			}
			if (n_cells < n_cols) {
				n_headerCells = n_cols-n_cells;
				n_Highlighted = 0;
				this_tr = tr.sectionRowIndex;
				trs = tr.parentNode.getElementsByTagName('tr');
				outerloop:
					for (var i=this_tr-1; i>=0; i--) {
						tds=trs[i].getElementsByTagName('td');
						for (var j=0;j<n_headerCells;j++) {
							if (tds[j].rowSpan > 1) {
								tds[j].className=cName;
								n_Highlighted += 1;
								if (n_Highlighted == n_headerCells) break outerloop;
							}
						}
					}
			}
		}
	}
}
function clearHighlight(td) {
	tr.className='';
}
function tableruler() {
	// This function will only work for one nested table per page!
	if (document.getElementById && document.createTextNode) {
		var tables=document.getElementsByTagName('table');
		for (var i=0;i<tables.length;i++) {
			if (tables[i].className=='options nested' || tables[i].className=='data nested') {
     			var trs=tables[i].getElementsByTagName('tr');
     			for (var j=0;j<trs.length;j++) {
					if (trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='THEAD') {
						var tds=trs[j].getElementsByTagName('td');
						if (tds.length > n_cols) n_cols = tds.length;
						for (var k=0;k<tds.length;k++) {
							tds[k].onmouseover=function(){highlightRow(this,'ruled');return false;}
							tds[k].onmouseout=function(){highlightRow(this,'');return false;}
						}
					}
				}
			}
			else if( elementHasClassName(tables[i],'options') ||  elementHasClassName(tables[i],'data') ) {
				var trs=tables[i].getElementsByTagName('tr');
				for(var j=0;j<trs.length;j++) {
					if (trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='THEAD') {
						trs[j].onmouseover=function(){this.className='ruled';return false}
						trs[j].onmouseout=function(){this.className='';return false}
					}
				}
			}
		}
	}
}


function tablerulerOld()
{
 if (document.getElementById && document.createTextNode)
  {
   var tables=document.getElementsByTagName('table');
   for (var i=0;i<tables.length;i++)
   {
    if(tables[i].className=='options' || tables[i].className=='data')
    {
     var trs=tables[i].getElementsByTagName('tr');
     for(var j=0;j<trs.length;j++)
     {
      if(trs[j].parentNode.nodeName!='thead')
       {
       trs[j].onmouseover=function(){this.className='ruled';return false}
       trs[j].onmouseout=function(){this.className='';return false}
     }
    }
   }
  }
 }
}

var n_cols=0;

