// Javascript to style odd/even table rows
// Derived from 'Zebra Tables by David F. Miller  (http://www.alistapart.com/articles/zebratables/), 'Better Zebra Tables' by Jop de Klein (http://validweb.nl/artikelen/javascript/better-zebra-tables/) and 'Killer Zebra Stripes' (http://www.killersites.com/articles/articles_zebraTables.htm) 

// Modified by Eric Dukes for RKD Web Studios (http://www.rkd.ca), August 24, 2006

//
// this function is needed to work around 
  // a bug in IE related to element attributes
  function hasClass(obj) {
     var result = false;
     if (obj.getAttributeNode("class") != null) {
         result = obj.getAttributeNode("class").value;
     }
     return result;
  }   

 function stripe(StyleName) {
		var tables = document.getElementsByTagName("table");  

		for(var x=0;x!=tables.length;x++){
			var table = tables[x];
			if (! table) { continue; }
			if ( !hasClass(table)){ continue; }
			if ( !(hasClass(table) == StyleName) ){	continue ; }

			// the flag we'll use to keep track of 
			// whether the current row is odd or even
			var even = false;

			// if arguments are provided to specify the colours
			// of the even & odd rows, then use the them;
			// otherwise use the following defaults:
			var evenColor = arguments[1] ? arguments[1] : "#FFF";
			var oddColor = arguments[2] ? arguments[2] : "#F6F6F6";
			
			// obtain a reference to the desired table
			// if no such table exists, abort
			//var table = document.getElementById(id);
			//if (! table) { return; }

			// by definition, tables can have more than one tbody
			// element, so we'll have to get the list of child
			// &lt;tbody&gt;s 
			var tbodies = table.getElementsByTagName("tbody");
			
			// and iterate through them...
			for (var h = 0; h < tbodies.length; h++) {

				// find all the &lt;tr&gt; elements... 
				var trs = tbodies[h].getElementsByTagName("tr");

				// ... and iterate through them
				for (var i = 0; i < trs.length; i++) {

					// avoid rows that have a class attribute
					// or backgroundColor style
					if (! hasClass(trs[i]) &&
					! trs[i].style.backgroundColor) {

						// get all the cells in this row...
						var tds = trs[i].getElementsByTagName("td");

						// and iterate through them...
						for (var j = 0; j < tds.length; j++) {

							var mytd = tds[j];

							// avoid cells that have a class attribute
							// or backgroundColor style
							if (! hasClass(mytd) &&
							! mytd.style.backgroundColor) {

								mytd.style.backgroundColor =
								even ? evenColor : oddColor;

							}
						}
					}
					// flip from odd to even, or vice-versa
					even =  ! even;
				}
			}
		}
  }