addEvent(window, "load", stripe_init);
/*
	Add 'stripes' to the specified table
*/
function stripe(oElem) {
		
	var aArr = getChildStripeElements(oElem);
	
	var i = 0;
	
	var iOriginalGroupLen = getRowGroupLen('stripe', oElem);
	var iGroupLen = iOriginalGroupLen;
	var bOn = false;
	
	for (var j = 0; j < aArr.length; j++) {
		oRows = aArr[j];
		for (var k = 0; k < oRows.length; k++) {
			if (oRows[k].className.indexOf('resetstripe') == -1) {
				if (oRows[k].className.indexOf('nostripe') == -1) {
					removeCSSClass(oRows[k], 'odd');				
					if (bOn) {
						addCSSClass(oRows[k], 'odd');
					}
				}
			} else {
				bOn = true;
			}
			iGroupLen--;
			if (iGroupLen == 0) {
				iGroupLen = iOriginalGroupLen;
				bOn = !bOn;
			}
		}	
	}
}

function doStripes(sTagName) {
	oElems = document.getElementsByTagName(sTagName);

	for (var i = 0; i < oElems.length; i++) {
		oElem = oElems[i];
        if (((' ' + oElem.className + ' ').indexOf('stripe') != -1) && (oElem.id)) {
			stripe(oElem);
        }
    }
}

function getChildStripeElements(oElem) {
	var aRet = new Array();
	switch (getTag(oElem)) {
		case 'table':
			var oTBodies = oElem.getElementsByTagName('tbody');
			if (oTBodies.length > 0) {				
				for (var i = 0; i < oTBodies.length; i++) {
					aRet = aRet.concat((oTBodies[i]).getElementsByTagName('tr'));
				}
			} else {
				aRet = aRet.concat(oElem.getElementsByTagName('tr'));
			}
			break;
		case 'ol':
		case 'ul':
			aRet = aRet.concat(oElem.getElementsByTagName('li'));
			break;
		default:
			return null;
	}
	return aRet;
}

function stripe_init() {
	if (!document.getElementsByTagName) return;	
	 // Find all elements with class 'stripe' and stripe them
	doStripes('table');
	doStripes('ol');
	doStripes('ul');
}
