
function setAttributeInTree(node, generationsUp, generationsDown, propName, value)
{
  var i, j;
  var ancestor = node;
  var nChilds;
  var currentNode;

  for(i=0; i<generationsUp; i++)
  {
    ancestor = ancestor.parentNode;
  }
  alert('ancestor.nodeName='+ancestor.nodeName);
  alert('ancestor.id='+ancestor.id);
  //alert('ancestor.class='+ancestor.class);
  
  if(generationsDown > 0)
  {
    nChilds = ancestor.childNodes.length;
    alert('nChilds='+nChilds);
    for(i=0; i<nChilds; i++)
    {
      currentNode = ancestor.childNodes[i];
      alert('1 currentNode.nodeName='+currentNode.nodeName);
      for(j=1; j<generationsDown; j++)
      {
        currentNode = currentNode.firstChild
      }
      alert('2 currentNode.nodeName='+currentNode.nodeName
      	   +'\ncurrentNode.getAttribute('+propName+')='+currentNode.getAttribute(propName));
      currentNode.setAttribute(propName, value, 0);
    }
  }
  else
  {
    alert('generationsDown='+generationsDown);
    alert('ancestor.getAttribute('+propName+')='+ancestor.getAttribute(propName));
    ancestor.setAttribute(propName, value, 0);
  }
}

