// JavaScript Document
addEvent(window, "load", stripedTable);


/*selection and resize functionality added by Rubens Rodrigues*/
var selectedRow;
function unselect() {
	removeClassName(selectedRow, 'selectedRow');
}


/* http://www.alistapart.com/articles/zebratables/ */
function removeClassName (elem, className) {
	elem.className = elem.className.replace(className, "").trim();
}

function addCSSClass (elem, className) {
	removeClassName (elem, className);
	elem.className = (elem.className + " " + className).trim();
}

String.prototype.trim = function() {
	return this.replace( /^\s+|\s+$/, "" );
}

function stripedTable() {
	if (document.getElementById && document.getElementsByTagName) {  
		var allTables = document.getElementsByTagName('table');
		if (!allTables) { return; }

		for (var i = 0; i < allTables.length; i++) {
			if (allTables[i].className.match(/[\w\s ]*listrada[\w\s ]*/)) {
				var trs = allTables[i].getElementsByTagName("tr");
				/*init selection*/
				selectedRow = trs[0];
				var k = 0;
				for (var j = 0; j < trs.length; j++) {
					if(trs[j].style.display != 'none') {
						if(k++%2==0) {
							removeClassName(trs[j], 'alternateRow');
							addCSSClass(trs[j], 'normalRow');
						} else {
							removeClassName(trs[j], 'normalRow');
							addCSSClass(trs[j], 'alternateRow');
						}
					}
				} //for (var j...
			}
		}
	} //if (document.get ...
}

/* http://rubensf.blogspot.com/ */
function selectRow(row) {
	unselect();
	addCSSClass(row, 'selectedRow');
	selectedRow = row;
}

function someSelected() {
	return (selectedRow.className.indexOf('selectedRow') > -1);
}

// Add an eventListener to browsers that can do it somehow.
// Originally by the amazing Scott Andrew.
function addEvent(obj, evType, fn){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, true);
    return true;
  } else if (obj.attachEvent){
	var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
	return false;
  }
}


// content scroll event handler (matches the header row with the horizontal scroll position of content)
function updateScroll(divObj, scrollingGridID)
{
	if (document.getElementById(scrollingGridID) != null)
		document.getElementById(scrollingGridID).scrollLeft = divObj.scrollLeft;
}

function getHeaderTextSize(str) {
	return(str.length * 8 + 3);
}

function adjustShim(scrollingGridID)
{
	var footer_imgs = document.getElementById('shimFooter').getElementsByTagName('img');;
	if(footer_imgs.length > 0) {
		var labels = document.getElementById('headerLabels').getElementsByTagName('th');
		
		for (var i=0; i<footer_imgs.length; i++)
		{
			footer_imgs[i].setAttribute('width', getHeaderTextSize(labels[i].firstChild.data));
			footer_imgs[i].setAttribute('height', 1);
		}
	}

	var tblGrid = document.getElementById(scrollingGridID);
	var trEl = tblGrid.rows[0];
	var widths = new Array();
	var totalWidth = 0;

	for (var i=0; i<trEl.cells.length; i++)	{
		widths[i] = trEl.cells[i].offsetWidth;
		totalWidth += widths[i];
	}
	
	if(totalWidth > tblGrid.offsetParent.offsetWidth) {
	 	widths[widths.length-1] += 90;
	}

	var header_imgs = document.getElementById('shimHeader').getElementsByTagName('img');
	for (var i=0; i<widths.length; i++)
	{
		if (widths[i]+"" == "undefined") 
			continue;
		header_imgs[i].setAttribute('width', widths[i]);
		header_imgs[i].setAttribute('height', 1);
	}
}

function adjustOtherShim(scrollingGridID, otherShimFooter, otherShimHeader, otherLabels)
{
	var footer = document.getElementById('shimFooter');
	var header = document.getElementById('shimHeader');
	var labels = document.getElementById('headerLabels');
	var other_footer = document.getElementById(otherShimFooter);
	var other_header = document.getElementById(otherShimHeader);
	var other_labels = document.getElementById(otherLabels);

	footer.id = otherShimFooter;
	header.id = otherShimHeader;
	labels.id = otherLabels;
  other_footer.id = 'shimFooter';
  other_header.id = 'shimHeader';
  other_labels.id = 'headerLabels';

  adjustShim(scrollingGridID);
}
