	function addClass( obj , className )
	{
		var classes = obj.className.split(' ');
		for( var i = 0 ; i < classes.length; i++ )
		{
			if( classes[i] == className )return;
		}	
		obj.className += ' ' + className;
	}
	
	function removeClass( obj , className )
	{
		var newClasses = [];
		var classes = obj.className.split(' ');
		for( var i = 0 ; i < classes.length; i++ )
			if( classes[i] != className ) newClasses.push( classes[i] );
		newClasses = newClasses.join(' ');
		if( newClasses != obj.className ) obj.className = newClasses;
	}
	
	function joinC( a , b )
	{
		var res = [];
		for( var i = 0 ; i < a.length ; i++)res.push( a[i] );
		for( var i = 0 ; i < b.length ; i++)res.push( b[i] );
		return res;
	}
	
	function removeHighlights( table )
	{
		var id = table.getAttribute('id');
		var th = table.getElementsByTagName('th');
		var td = table.getElementsByTagName('td');

		for( var i = 0 ; i < th.length ; i++ )
		{
			document.getElementById( id + '-scroll-item-' + i ).style.display = 'none';
			removeClass( th[i] , 'contentframework-mouseover' );
		}
		for( var i = 0 ; i < td.length ; i++ )
			removeClass( td[i] , 'contentframework-mouseover' );
	}
	
	function highlight( table, index )
	{
		return function() 
		{
			var id = table.getAttribute('id');
			removeHighlights( table );
			document.getElementById( id + '-scroll-item-' + index ).style.display = '';
			var rows = table.getElementsByTagName('tr');

			for( var i = 0 ; i < rows.length ; i++ )
			{
				var columns  = joinC(	rows[i].getElementsByTagName('th') ,
										rows[i].getElementsByTagName('td') );
				
				if( columns && columns.length > index )
					addClass( columns[index] , 'contentframework-mouseover' );
			}
			
		};
	}
	
	function apply( table )
	{
		var rows = table.getElementsByTagName('tr');
		
		for( var i = 0 ; i < rows.length ; i++ )
		{	// tr level
			var columns = joinC(	rows[i].getElementsByTagName('th'), 
									rows[i].getElementsByTagName('td') );
			
			for( var j = 0 ; j < columns.length ; j++ )
			{
				var links = columns[j].getElementsByTagName('a');
				for( var k = 0 ; k < links.length ; k++ )links[k].onfocus = highlight( j );
				columns[j].onmouseover = highlight( table, j );
				
				if( (j + 1) % 2 )addClass( columns[j], 'contentframework-columnbanding' );
			}
		}
	}
		
	function onReady()
	{
		apply( document.getElementById( 'cc-table' ) );
		apply( document.getElementById( 'cc-table-2' ) );
	}
