code: function renderPongListDivHTMLsub( contentItems, divId, divs, r, cx ) {
    log( "PoNG-List", 'div row='+r+'/'+cx );
    for ( var c = 0; c < divs.length; c ++ ) {
      log( "PoNG-List", 'div '+cx+'/'+c );
      if ( divs[c].cellType == 'div' ) {
        log( "PoNG-List", 'div-x '+divs[c].id );
        contentItems.push( '<div class="pongListCell pongListCell'+divs[c].id.replace(/\./g,'')+'" id="'+divId+'R'+r+'X'+cx+'C'+c+'">' );
        if ( divs[c].divs ) {
          renderPongListDivHTMLsub( contentItems, divId, divs[c].divs, r, cx+c ); 
        }      
        contentItems.push( '</div>'  );
      } else if ( ( divs[c].cellType != 'tooltip' ) && 
                  ( divs[c].cellType != 'largeimg' ) && 
                  ( divs[c].cellType != 'cssClass' ) && 
                  ( divs[c].cellType != 'textLink' ) && 
                  ( divs[c].cellType != 'linkFor' ) ) {
        log( "PoNG-List", 'div-n '+divs[c].id );
        contentItems.push( '<div class="pongListCell pongListValCell pongListCell'+divs[c].id.replace(/\./g,'')
            +'" id="'+divId+'R'+r+'X'+cx+'C'+c+'"></div>'  );
        log( "PoNG-List", 'div end' );
      } else if (divs[c].cellType == 'cssClass' ) {
        contentItems.push( '<div id="'+divId+'R'+r+'X'+cx+'C'+c+'" style="display:none;"/>' );
      }
    }
  }
docs: --------------------------------------------------------------------------------------- "pong-list" functions Render recursivley one row of empty DIVs, generate nested data cell structure