function stripeByElement(table)
{
	var evenClass = arguments[1] ? arguments[1] : "listadoclaro";
    var oddClass = arguments[2] ? arguments[2] : "listadonormal";

	var even = false;

	var tbodies = table.getElementsByTagName("tbody");
	for(var h=0; h<tbodies.length; h++)
	{
		var trs = tbodies[h].getElementsByTagName('tr');
		for(var i=0; i<trs.length; i++)
		{
			if(trs[i].style.display != 'none' && trs[i].className != 'nostripe')
			{
				trs[i].className = even ? evenClass : oddClass;
				even = !even;
			}
		}
	}
}

function stripeById(id)
{
    var evenClass = arguments[1] ? arguments[1] : "listadoclaro";
    var oddClass = arguments[2] ? arguments[2] : "listadonormal";

	var table = document.getElementById(id);
   	stripeByElement(table, evenClass, oddClass);
}

function stripeByClass(className)
{
    var evenClass = arguments[1] ? arguments[1] : "listadoclaro";
    var oddClass = arguments[2] ? arguments[2] : "listadonormal";

	var tables = document.getElementsByClassName(className);
	for(var t=0; t<tables.length; t++)
	{
    	stripeByElement(tables[t], evenClass, oddClass);
	}
}

function stripe(id)
{
    var even = false;

    var evenClass = arguments[1] ? arguments[1] : "listadoclaro";
    var oddClass = arguments[2] ? arguments[2] : "listadonormal";

	var tables = document.getElementsByClassName(id);
	for (var t = 0; t < tables.length; t++) {
    	var tbodies = tables[t].getElementsByTagName("tbody");
		for (var h = 0; h < tbodies.length; h++) {
			var trs = tbodies[h].getElementsByTagName("tr");
			for (var i = 0; i < trs.length; i++) {
				if(!hasClass(trs[i]) && trs[i].style.display != 'none') {
					trs[i].className = even ? evenClass : oddClass;
					even = !even;
				}
			}
    	}
	}
}

function stripe_table(id, c1, c2) {
    // 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 evenClass = arguments[1] ? arguments[1] : c1;
    var oddClass = arguments[2] ? arguments[2] : c2;

	var tables = document.getElementsByClassName(id);
	for (var t = 0; t < tables.length; t++) {
    	var tbodies = tables[t].getElementsByTagName("tbody");
		for (var h = 0; h < tbodies.length; h++) {
			var trs = tbodies[h].getElementsByTagName("tr");
			for (var i = 0; i < trs.length; i++) {
				if (! hasClass(trs[i]) &&
				! trs[i].style.backgroundColor) {
					trs[i].className =  even ? evenClass : oddClass;
				}
			// flip from odd to even, or vice-versa
				even =  ! even;
			}
    	}
	} // close class for
}

document.getElementsByClassName = function (needle)
{
  var         my_array = document.getElementsByTagName("*");
  var         retvalue = new Array();
  var        i;
  var        j;

  for (i = 0, j = 0; i < my_array.length; i++)
  {
    var c = " " + my_array[i].className + " ";
    if (c.indexOf(" " + needle + " ") != -1)
      retvalue[j++] = my_array[i];
  }
  return retvalue;
}

function hasClass(obj) {
     var result = false;
     if (obj.className) {
         result = obj.className;
     }
     return result;
  }
