function previousElement ( object ) {
  element = object;
  while ( element = element.previousSibling ) if ( element.nodeType == 1 ) return element;
  return false;
}
function previousCircleElement ( object ) {
  element = object;
  while ( element = element.previousSibling ) if ( element.nodeType == 1 ) return element;
  element = object.parentNode.lastChild;
  if ( element == object ) return null;
  else if ( element.nodeType == 1 ) return element;
  while ( element = element.previousSibling ) {
    if ( element == object ) return null;
    else if ( element.nodeType == 1 ) return element;
  }
  return false;
}
function nextElement ( object ) {
  element = object;
  while ( element = element.nextSibling ) if ( element.nodeType == 1 ) return element;
  return false;
}
function nextCircleElement ( object ) {
  element = object;
  while ( element = element.nextSibling ) if ( element.nodeType == 1 ) return element;
  element = object.parentNode.firstChild;
  if ( element == object ) return null;
  else if ( element.nodeType == 1 ) return element;
  while ( element = element.nextSibling ) {
    if ( element == object ) return null;
    else if ( element.nodeType == 1 ) return element;
  }
  return false;
}
function searchChild ( object, index ) {
  if ( !object.firstChild ) return false;
  if ( index > 0 ) {
    for ( var cont = 0; cont < object.childNodes.length; cont++ ) {
      if ( object.childNodes[ cont ].nodeType == 1 ) index--;
      if ( index == 0 ) return object.childNodes[ cont ];
    }
  } else if ( index < 0 ) {
    for ( var cont = object.childNodes.length - 1; cont > -1; cont-- ) {
      if ( object.childNodes[ cont ].nodeType == 1 ) index++;
      if ( index == 0 ) return object.childNodes[ cont ];
    }
  } else {
    for ( var cont = object.childNodes.length - 1; cont > -1; cont-- ) {
      if ( object.childNodes[ cont ].nodeType == 1 ) index++;
    }
    return ( index );
  }
}
