/*
  =================================================
  Last edited by: $Author: mistf $
              on: $Date: 2009/07/02 13:26:04 $
        Filename: $RCSfile: table_scripts.js,v $
        Revision: $Revision: 1.2 $
  
  JavaScript for tables on Stellent sites
  =================================================
*/

// JavaScript Document

// *****************************************************************************************
function retrieveComputedStyle(element, styleProperty)
{
	var computedStyle = null;
	if(typeof element.currentStyle != "undefined")
	{
		computedStyle = element.currentStyle;
	}
	else
	{
		computedStyle = document.defaultView.getComputedStyle(element, null);
	}
	return computedStyle[styleProperty];
}
function getElementsByClassName(node, classname)
{
	var a = Array();
	var re = new RegExp("(^| )" + classname + "( |$)");
	var els = node.getElementsByTagName("*");
	for(var i = 0, j = els.length; i < j; i++)
	{
		if(re.test(els[i].className))
		{
			a.push(els[i]);
		}
	}
	re = null;
	return a;
}
function addClass(target, classValue)
{
	var pattern = new RegExp("(^| )" + classValue + "( |$)");
	var classWasAdded = false;
	if(!pattern.test(target.className))
	{
		classWasAdded = true;
		if(target.className === "")
		{
			target.className = classValue;
		}
		else
		{
			target.className += " " + classValue;
		}
	}
	pattern = null;
	return classWasAdded;
}
function removeClass(target, classValue)
{
	var removedClass = target.className;
	var pattern = new RegExp("(^| )" + classValue + "( |$)");
	var classWasRemoved = false;
	if(pattern.test(target.className))
	{
		classWasRemoved = true;
		removedClass = removedClass.replace(pattern, "$1");
		removedClass = removedClass.replace(/ $/, "");
		target.className = removedClass;
	}
	pattern = null;
	return classWasRemoved;
}
function findClass(target, classValue)
{
	var pattern = new RegExp("(^| )" + classValue + "( |$)");
	var classWasFound = false;
	if(pattern.test(target.className))
	{
		classWasFound = true;
	}
	pattern = null;
	return classWasFound;
}
function changeClass(target, fromClassValue, toClassValue)
{
    removeClass(target, fromClassValue);
    addClass(target, toClassValue);
}
// *****************************************************************************************

// *****************************************************************************************
//Function to get table TAGGED for ALTERNATING ROWS effect
function getAltTables() 
{
	var allAltTables = [];
	var tableAltRows = getElementsByClassName(document, 'altRows');
	var tableAltRowsHgrid = getElementsByClassName(document, 'altRowsHgrid');
	var tableAltRowsGrid = getElementsByClassName(document, 'altRowsGrid');
	//alert(tableAltRows.length + "\n" + tableAltRowsHgrid.length + "\n" + tableAltRowsGrid.length);
	if(tableAltRows.length === 0 && tableAltRowsHgrid.length === 0 && tableAltRowsGrid.length === 0) 
	{
		return allAltTables;
	} 
	else 
	{
		var allAltTables = tableAltRows.concat(tableAltRowsHgrid,tableAltRowsGrid);
		return allAltTables;
		
		var i;
		for(i = 0; i < tableAltRows.length; i++)
		{
			allAltTables.push(tableAltRows[i]);
		}
		for(i = 0; i < tableAltRowsHgrid.length; i++)
		{
			alert("tableAltRowsHgrid");
			allAltTables.push(tableAltRowsHgrid[i]);
		}
		for(i = 0; i < tableAltRowsGrid.length; i++)
		{
			alert("tableAltRowsGrid");
			allAltTables.push(tableAltRowsGrid[i]);
		}
		return allAltTables;
	}
}

//Function to get table TAGGED for ROLLOVER effect
function getROTables() 
{
	var tableRO = getElementsByClassName(document, 'rollOver');
	//alert(tableRO.length);
	if(tableRO.length === 0) 
	{
		return false;
	} 
	else 
	{
		var roTables = tableRO;
		return roTables ;
	}
}

function alternate() 
{
	var altTables = getAltTables();
	var roTables = getROTables();
	var numAltTables;
	var numROTables;
	var trs;
	var numTrs;
	// alert('altTables =' + altTables.length);
	// alert('rollOverTables =' + roTables.length);
	// var dataTables = getDataTables();
	if(altTables.length > 0) 
	{
		numAltTables = altTables.length;
		for(var i=0; i < numAltTables; i++) 
		{
			if(altTables) 
			{
				var regOrder = 1;
				trs = altTables[i].getElementsByTagName('tr');
				numTrs = trs.length;
				var fundCounter = 0;
				for(var j=0; j < numTrs; j++) 
				{
					//if(j != 0) 
					//{
					var tds = trs[j].getElementsByTagName('td');
					if(tds.length > 0) {
						if(tds[0].getAttribute("isFund") == "true") {
							fundCounter++;
						}
					}
						if(trs[j].getElementsByTagName('th').length > 0) 
						{
							if((fundCounter%2) == 1) 
							{
								regOrder = 1;
							} 
							else if ((fundCounter%2) === 0) 
							{
								regOrder = 0;
							}
						}
						if(regOrder === 0) 
						{
							//((j%2) === 0) ? trs[j].className += ' odd' : trs[j].className += ' even';
							((fundCounter%2) === 0) ? addClass(trs[j], 'odd') : addClass(trs[j], 'even');
						} 
						else 
						{
							//((j%2) === 0) ? trs[j].className += ' even' : trs[j].className += ' odd';
							((fundCounter%2) === 0) ? addClass(trs[j], 'even') : addClass(trs[j], 'odd');
						}
					//}
				} // end for(var j=0; j < numTrs; j++) 
			} // end if(altTables) 
		} // end for(var i=0; i < numAltTables; i++) 
	} // end if(altTables.length > 0) 
	/*		
	if(roTables.length > 0) 
	{
		numROTables = roTables.length;
		for(var i=0; i < numROTables; i++) 
		{
			if (roTables) 
			{
				trs = roTables[i].getElementsByTagName('tr');
				numTrs = trs.length;
				for(var j=0; j < numTrs; j++) 
				{
					trs[j].onmouseover = function()
					{
						//if(this.className === 'even' || this.className === 'odd' || this.className === '') 
						//{
						//	this.className = "rollover";
						//}
						if(findClass(this, 'even') || findClass(this, 'odd') || findClass(this, '')) 
						{
							addClass(this, "rollover");
						}
					};
					trs[j].onmouseout = function()
					{
						//if(this.className == 'rollover') 
						//{
						//	this.className = "";
						//}
						if(findClass(this, 'rollover'))
						{
							removeClass(this, "rollover");
						}
					};
				} // end for(var j=0; j < numTrs; j++) 
			} // end if (roTables) 
		} // end for(var i=0; i < numROTables; i++)
	} // end if(roTables.length > 0) 
	*/
} // end function alternate() 
// *****************************************************************************************

// *****************************************************************************************
function init() 
{
	try 
	{ 
		alternate();    
	}     
	catch(e) 
	{ 
		var output = "Exception caught.\n";
		for(var i in e)
		{
			output += i + ": " + e[i] + "\n";
		}
		alert(output);
	}
}

window.onload = init;
// *****************************************************************************************

