// Options for Popup-Windows
var _OPTIONS                = 'locationbar=yes,statusbar=yes,toolbar=yes,menubar=yes,scrollbars=yes,resizable=yes';

// Options for Table-Viewer
var _CONTAINERID            = 'contentMiddle';
var _TABLECONTAINERCLASS    = 'bigtable';
var _TABLEONCLICKTEXT       = 'Klicken Sie bitte für die vollständige Ansicht!';

var sTableFadeBoxId         = 'tableFadeBox';
var sTableDarkBoxId         = 'tableDarkBox';
var sTableCloseLinkId       = 'tableCloseLink';
var sTableContentBoxId      = 'tableContentBox';
var iTableDisplayWidth      = 760;
var iTableDuration          = 0.7;
var iTableTargetOpacity     = 0.7;

/*
 * Generates a Popup Window. Inserted by HTML-Cleaner Plugin
 *
 * @param HTML-Object oItem: The <A> Tag
 * @param string sOptions: The Options for the generated Popup
 * @return Window-Object
 */
function popup(oItem, sOptions)
{
  sOptions = ( popup.arguments.length > 1 ) ? sOptions : _OPTIONS;
  var sUrl = oItem.getAttribute('href');
  var oWindow = window.open(sUrl, '', sOptions);
  oWindow.focus();
  return oWindow;
}

/*
 * InitScript for tableView()
 *
 * @return void
 */
function tableViewInit()
{
  var iContainerWidth = $(_CONTAINERID).getWidth();

  $$('div.'+_TABLECONTAINERCLASS).each( function(oItem)
    {
		  var oDarkBox = new Element('div',
		    {
		      'class': sTableDarkBoxId
		    }
		  );

      if ( iContainerWidth < oItem.down('table').getWidth() ) {
        oItem.setStyle(
          {
            height: '200px',
            overflow: 'hidden',
            border: '1px solid #000000',
            cursor: 'pointer'
          }
        )
        oItem.insert(oDarkBox);
			  oDarkBox.update(_TABLEONCLICKTEXT);
			  oDarkBox.setOpacity(iTableTargetOpacity);
			  Event.observe(oDarkBox, 'click', tableView);
      }
    }
  )
}

/*
 * Generates a Popup DIV for displaying Tablecontent that is too big for the Webpage
 *
 * @return void
 */
function tableView(e)
{
  var jiScrollOffset = document.viewport.getScrollOffsets();
  var jiWinSize = document.viewport.getDimensions();
  
/*  var iDocWidth = document.body.offsetWidth;
  var iDocHeight = document.body.offsetHeight;*/
  var iDocWidth = ( document.body.offsetWidth > jiWinSize.width ) ? document.body.offsetWidth : jiWinSize.width;
  var iDocHeight = ( document.body.offsetHeight > jiWinSize.height ) ? document.body.offsetHeight : jiWinSize.height;
  
  var oItem = e.element().previous('table');
  var oCurrentTable = oItem.cloneNode(true);
  oCurrentTable.setStyle(
    {
      width: '100%',
      borderCollapse: 'collapse',
      emptyCells: 'show'
    }
  );
  
  
  var oTableFadeBox = new Element('div',
    {
      'id': sTableFadeBoxId
    }
  );
  
  oTableFadeBox.setStyle(
    {
      position: 'absolute',
      top: '0px',
      left: '0px',
      height: iDocHeight+'px',
      width: iDocWidth+'px',
      backgroundColor: '#000000',
      opacity: 0.0
    }
  );
  
  var oTableCloseLink = new Element('div',
    {
      'id': sTableCloseLinkId
    }
  ).update('Schlie&szlig;en');
  
  Event.observe(oTableCloseLink, 'click', closeTableView);
  
  oTableCloseLink.setStyle(
    {
      position: 'absolute',
      top: jiScrollOffset.top + (jiWinSize.height - oItem.getHeight()) / 2 - 18 + 'px',
      left: (( jiWinSize.width-iDisplayWidth > 0 ) ? (jiWinSize.width-iDisplayWidth) / 2 + (iDisplayWidth - 120) : 0) + 'px',
      height: (jiWinSize.height-100)+'px',
      width: '100px',
      height: '15px',
      padding: '0px',
      backgroundColor: '#CCCCCC', border: '1px solid #999999',
      textAlign: 'center',
      cursor: 'pointer',
      opacity: 1
    }
  );
  
  var oTableContentBox = new Element('div',
    {
      'id': sTableContentBoxId
    }
  ).update(oCurrentTable);

  oTableContentBox.setStyle(
    {
      position: 'absolute',
      top: jiScrollOffset.top + (jiWinSize.height - oItem.getHeight()) / 2 + 'px',
      left: (( jiWinSize.width - iDisplayWidth > 0 ) ? (jiWinSize.width - iDisplayWidth) / 2 : 0)+'px',
      height: oItem.getHeight()+'px',
      width: iDisplayWidth+'px',
      backgroundColor: '#FFFFFF',
      overflow: 'auto',
      textAlign: 'center',
      opacity: 1
    }
  );
  
  $$('select').each( function(oSelect)
    {
      oSelect.setStyle(
        {
          visibility: 'hidden'
        }
      )
    }
  )

  document.body.appendChild(oTableFadeBox);

  Effect.Fade(sTableFadeBoxId,
    {
      duration: iTableDuration, from: 0, to: iTableTargetOpacity, afterFinish: function()
      {
        document.body.appendChild(oTableCloseLink);
        document.body.appendChild(oTableContentBox);
      }
    }
  );
  
}

/*
 * Removes the Tablecontent-Popup DIV
 *
 * @return void
 */
function closeTableView()
{
  $(sTableContentBoxId).remove();
  $(sTableCloseLinkId).remove();

  Effect.Fade(sTableFadeBoxId, { duration: iTableDuration, from: iTableTargetOpacity, to: 0, afterFinish: function()
      {
        $(sTableFadeBoxId).remove();
        $$('select').each(function(oSelect)
          {
            oSelect.setStyle(
              {
                visibility: 'visible'
              }
            )
          }
        )
      }
    }
  );


}

/*
 * Start all Init-Functions after loading the Page
 */
Event.observe(window, 'load', function()
  {
    tableViewInit();
  }
);
