function striper(parentElementTag, parentElementClass, childElementTag, styleClasses)
{
 var i=0,currentParent,currentChild;
 // capability and sanity check
 if ((document.getElementsByTagName)&&(parentElementTag)&&(childElementTag)&&(styleClasses)) {
  // turn the comma separate list of classes into an array
  var styles = styleClasses.split(',');
  // get an array of all parent tags
  var parentItems = document.getElementsByTagName(parentElementTag);
  // loop through all parent elements
  while (currentParent = parentItems[i++]) {
   // if parentElementClass was null, or if the current parent's class matches the specified class
   if ((parentElementClass == null)||(currentParent.className == parentElementClass)) {
    var j=0,k=0;
    // get all child elements in the current parent element
    var childItems = currentParent.getElementsByTagName(childElementTag);
    // loop through all child elements
    while (currentChild = childItems[j++]) {
     // based on the current element and the number of styles in the array, work out which class to apply
     k = (j+(styles.length-1)) % styles.length;
     // add the class to the child element - if any other classes were already present, they're kept intact
     currentChild.className = currentChild.className+" "+styles[k];
    }
   }
  }
 }
}