/**
  * @param $header_object         HTMLTableHeader object
  * @param $allow_super_header    (false by default
  **/
 function appendHeader(HTMLTableHeader $header_object, $allow_super_header = false)
 {
     if (!$header_object instanceof HTMLTableHeader) {
         throw new Exception('Implementation error: appendHeader requires HTMLTableHeader as parameter');
     }
     $header_name = '';
     $subHeader_name = '';
     $header_object->getHeaderAndSubHeaderName($header_name, $subHeader_name);
     if ($header_object->isSuperHeader() && !$this->super && !$allow_super_header) {
         throw new Exception(sprintf('Implementation error: invalid super header name "%s"', $header_name));
     }
     if (!$header_object->isSuperHeader() && $this->super) {
         throw new Exception(sprintf('Implementation error: invalid super header name "%s"', $header_name));
     }
     if (!isset($this->headers[$header_name])) {
         $this->headers[$header_name] = array();
         $this->headers_order[] = $header_name;
         $this->headers_sub_order[$header_name] = array();
     }
     if (!isset($this->headers[$header_name][$subHeader_name])) {
         $this->headers_sub_order[$header_name][] = $subHeader_name;
     }
     $this->headers[$header_name][$subHeader_name] = $header_object;
     return $header_object;
 }
 /**
  * @param $header    HTMLTableHeader object
  **/
 function haveHeader(HTMLTableHeader $header)
 {
     //TODO $header_name AND $subHeader_name  not initialized
     $header->getHeaderAndSubHeaderName($header_name, $subheader_name);
     try {
         $subheaders = $this->getHeaders($header_name);
     } catch (HTMLTableUnknownHeaders $e) {
         try {
             $subheaders = $this->table->getHeaders($header_name);
         } catch (HTMLTableUnknownHeaders $e) {
             return false;
         }
     }
     return isset($subheaders[$subheader_name]);
 }
 /**
  * @param $header    HTMLTableHeader object
  **/
 function haveHeader(HTMLTableHeader $header)
 {
     $header_name = '';
     $subHeader_name = '';
     $header->getHeaderAndSubHeaderName($header_name, $subheader_name);
     try {
         $subheaders = $this->getHeaders($header_name);
     } catch (HTMLTableUnknownHeaders $e) {
         try {
             $subheaders = $this->table->getHeaders($header_name);
         } catch (HTMLTableUnknownHeaders $e) {
             return false;
         }
     }
     return isset($subheaders[$subheader_name]);
 }