function ntab2_register(id, def)
{
    var obj = document.getElementById(id);
 if (!obj || !obj.hasChildNodes())
 {
  alert('ERROR: the object was not defined for #' + id + '#');
  return;
 }

 // get head & body object
 var head = null;
 var body = null;
 for (var i = 0; i < obj.childNodes.length; i++)
 {
  var node = obj.childNodes[i];
  if (node.tagName == 'DIV')
  {
   if (node.className == 'ntab2-head')
    head = node;
   else if (node.className == 'ntab2-body')
    body = node;
  }
 }
 if (!head) { alert('ERROR: head elements was not found for #' + id + '#'); return; }
 if (!body) { alert('ERROR: body elements was not found for #' + id + '#'); return; }

 // set action & default
 var items = head.getElementsByTagName('LI');
 var datas = body.getElementsByTagName('DL');
 if (items.length == 0) { alert('ERROR: empty set for head elements on #' + id + '#'); return; }
 if (items.length != datas.length)
 {
  alert('ERROR: not equal between body.length and head.length for #' + id + '#');
  return;
 }
 
 var total = items.length;
 if (typeof def == 'undefined') def = 0;
 else def = parseInt(def)%total;
 if (def < 0) def += total; 
 for (var i = 0; i < total; i++)
 {
  datas[i].style.display = (i == def ? '' : 'none');
  items[i].className = (i == def ? 'current' : '');
  items[i].onclick = function() { 
   for (var k = 0; k < total; k++)
   {
    datas[k].style.display = (this == items[k] ? '' : 'none');
    items[k].className = (this == items[k] ? 'current' : '');
   }
  }
 }
}