//---------------------------------------
// Curved corners on tables
//---------------------------------------
function addTableCorners() {
  var arrElements = $$('TABLE.datatable');
  var count = arrElements.length;
  var elem, elemWidth;
  var outerNode;
  var wrapperOuter, wrapperInner, tl, tr, bl, br;

  for (var i = 0; i < count; i++) {
    elem = arrElements[i];
    wrapperOuter = createElementWithClass("div", "table-wrapper-outer");
    wrapperInner = createElementWithClass("div", "table-wrapper-inner");
    tl = createElementWithClass("span", "tl");
    tr = createElementWithClass("span", "tr");
    bl = createElementWithClass("span", "bl");
    br = createElementWithClass("span", "br");

    // get parent node of the table
    outerNode = elem.parentNode;

    // insert wrappers next to table
    outerNode.insertBefore(wrapperOuter, elem);
    outerNode.insertBefore(wrapperInner, elem);

    // move the table inside wrapperInner
    outerNode.removeChild(elem);
    wrapperInner.appendChild(elem);

    // move wrapperInner inside wrapperOuter
    outerNode.removeChild(wrapperInner);
    wrapperOuter.appendChild(wrapperInner);

    // add the spans to wrapperInner
    wrapperInner.appendChild(tl);
    wrapperInner.appendChild(tr);
    wrapperInner.appendChild(bl);
    wrapperInner.appendChild(br);

    // extend wrapperOuter so we can use prototype element methods with it
    Element.extend(wrapperOuter);

    // simulate table alignment classes
    if (elem.readAttribute('align') == 'left') {
      wrapperOuter.addClassName('left');
      wrapperOuter.style.width = elem.offsetWidth + 'px';
      elem.setAttribute('width','100%');
    }
    else if (elem.readAttribute('align') == 'center') {
      // to be reviewed...
      wrapperOuter.addClassName('center');
      wrapperOuter.style.width = elem.offsetWidth + 'px';
      elem.removeClassName('center');
      elem.setAttribute('width','100%');
    }
    else if (elem.readAttribute('align') == 'right') {
      wrapperOuter.addClassName('right');
      wrapperOuter.style.width = elem.offsetWidth + 'px';
      elem.setAttribute('width','100%');
    }
    else {
      elemWidth = elem.readAttribute('width');
      if ((elemWidth != null) && (elemWidth != "")) {
        if (elemWidth.indexOf('%') == -1) {
          elemWidth = elemWidth + 'px';
        }
      }
      wrapperOuter.style.width = elemWidth;
      elem.setAttribute('width','100%');
    }
  }
}
//---------------------------------------
// Generic functions
//---------------------------------------
function createElementWithClass(strElemName, strClassName) {
  var elem = document.createElement(strElemName);
  elem.className = strClassName;
  return (elem);
}
//---------------------------------------
// Initialization
//---------------------------------------
document.observe("dom:loaded", function() {
  addTableCorners();
});
