/**
 * Funktionen für das öffnen von Fenstern
 * @package JavaScript
 * @subpackage Window
 * @author Alexander Zimmermann <zimmermann@twt.de>
 * @version $Id: twt_window.js,v 1.1 2006/04/25 09:49:11 kevin Exp $
 * @filesource
 * @desc Diese Datei enthält Funktionen mit denen Fenster geöffnet werden.
 * Diese können mit Hilfe von etlichen Parametern positioniert und formatiert
 * werden. Alle Besonderheiten der Browser werden innerhalb der Funktion be-
 * rücksichtig.
 */

/**
 * Mini - Version Öffnet lediglich ein Fenster
 * @param     string    page URL die im geöffneten Fenster angezeigt werden soll.
 * @return    object    Fensterobjekt das zurückgegeben wird.
 * @access    public
 */
function win_popup_min(page)
{
  var w = window.open(page, "", "");
  return w;
} // Ende Funktion win_popup_min

/**
 * Normal - Version.
 * Das Fenster wird mit einer Breite von 400 und einer höhe von 500 Pixeln
 * geöffnet. Es gibt keine Menüleiste, Statusleiste und Toolbar.
 * Die Scrollleisten sind jedoch eingeschaltet.
 * @param     string    page URL die im geöffneten Fenster angezeigt werden soll.
 * @param     string    window_title Fenstertitel. Dieser darf keine Sonderzeichen
 *                      und auch keine Leerzeichen enthalten.
 * @return    object    Fensterobjekt das zurückgegeben wird.
 * @access    public
 * @todo Checken ob nicht schon ein Fenster mit diesem Window_title geöffnet ist
 * und ob die Adresse nicht bereits aufgerufen worden ist.
 */
function win_popup_nrm(page, window_title)
{
  var w = window.open(page, window_title,
                      "width=400, height=500, menubar=0, status=0, toolbar=0, scollbars=1"
                     );
  return w;
} // Ende Funktion win_popup_nrm

/**
 * Luxus - Version, hier kann alles bestimmt werden.
 * @param     string    page URL die im geöffneten Fenster angezeigt werden soll.
 * @param     string    window_title Fenstertitel. Dieser darf keine Sonderzeichen
 *                      und auch keine Leerzeichen enthalten.

 * @param     integer   breite Breite in Pixeln für das Fenster
 * @param     integer   hoehe Höhe in Pixeln für das Fenster
 * @param     integer   links Linke Spalte in Pixeln für das Fenster
 * @param     integer   oben Oben in Pixeln für das Fenster
 * @param     bool      menuebar Soll eine Menübar angezeigt werden
 * @param     bool      statuszeile Soll die Statusleiste angezeigt werden
 * @param     bool      toolbars Soll die Toolbar angezeigt werden.
 * @param     bool      scrollleisten Sollen die Scrollleitesn angezeitgt werden.
 * @param     bool      groessenaenderung Soll die Groesse des Fenster veraenderbar sein.
 * @return    object    Fensterobjekt das zurückgegeben wird.
 * @access    public
 * @todo Checken ob nicht schon ein Fenster mit diesem Window_title geöffnet ist
 * und ob die Adresse nicht bereits aufgerufen worden ist.
 * Weiterhin wäre das checken der Parameter sinnvoll für alle gängigen Browser.
 */
function win_popup_lx(page, window_title, breite, hoehe, links, oben, menuebar, statuszeile, toolbars, scrollleisten, groessenaenderung)
{
  var w = window.open(page, window_title,
                      'width='+breite+', height='+hoehe+', left='+links+', top='+oben+
                      ', menubar='+menuebar+', status='+statuszeile+
                      ', toolbars='+toolbars+', scrollbars='+scrollleisten+', resizable='+groessenaenderung
                     );
  return w;
} // Ende Funktion win_popup_lx

/**
 * Nicht verwendet...
 * @todo      Diese Funktion soll halt feststellen ob das Fenster nicht schon
 *            geöffnet ist, ansonsten soll das Fenster dann in den Vordergrund
 *            gebracht werden, ohne erneut geöffnet zu werden. Spart traffic
 *            und vor allen Dingen Ladezeit.
 * @param     string    adresse URL die im geöffneten Fenster angezeigt werden soll.
 * @return    object    Fensterobjekt das zurückgegeben wird.
 * @access    public
 * @todo Funktion mal fertig machen...
 */
function win_show(adresse)
{
  if (extern == null || extern.closed == true)
  {
    window_parameter = "width=630,height=430,innerWidth=600,innerHeight=400,menubar=yes,location=yes,scrollbars=yes,toolbar=yes,resizable=yes,status=yes,titlebar=yes,screenx=30,screeny=30";
    extern=window.open(adresse,"EXTERN",window_parameter);
  }
  else
  { extern.location=adresse; }
  extern.focus();
} // Ende Funktion


//******************************************************************************
//*** Funktionen für Höhe, Breite, Seitenhöhe, Seitenbreite                  ***
//******************************************************************************

/**
 * Weite des Fensterinhalts ermitteln
 * @return    integer   Breite des Fensterinhalts in Pixeln.
 * @access    public
 */
function getWindowWidth()
{
  switch(bversion)
  {
     case 1:
       result = document.body.clientWidth;
       break;
     case 2:
       result = window.innerWidth;
       break;
     case 3:
      result = window.innerWidth;
       break;
     case 4:
       result = -1;
       break;
     case 5:
       result = -1;
       break;
     default:
       result = -1;
       break;
  } // switch(bversion)

  return result;
} // Ende Funktion getWindowWidth


/**
 * Höhe des Fensterinhalts ermitteln
 * @return    integer   Höhe des Fensterinhalts in Pixeln.
 * @access    public
 */
function getWindowHeight()
{
  switch(bversion)
  {
     case 1:
       result = document.body.clientHeight;
       break;
     case 2:
       result = window.innerHeight;
       break;
     case 3:
      result = window.innerHeight;
       break;
     case 4:
       result = -1;
       break;
     case 5:
       result = -1;
       break;
     default:
       result = -1;
       break;
  } // switch(bversion)
  return result;
} // Ende Funktion getWindowHeight

/**
 * Breite des gesamten Browserfensters ermitteln
 * @return    integer   Breite des Browserfensters in Pixeln.
 * @access    public
 */
function getPageWidth()
{
  switch(bversion)
  {
     case 1:
       result = document.body.scrollWidth;
       break;
     case 2:
       result = document.width;
       break;
     case 3:
      result = window.outerWidth;
       break;
     case 4:
       result = -1;
       break;
     case 5:
       result = -1;
       break;
     default:
       result = -1;
       break;
  } // switch(bversion)
  return result;
} // Ende Funktion getPageWidth

/**
 * Höhe des gesamten Browserfensters ermitteln
 * @return    integer   Höhe des Browserfensters in Pixeln.
 * @access    public
 */
function getPageHeight()
{
  switch(bversion)
  {
     case 1:
       result = document.body.scrollHeight;
       break;
     case 2:
       result = document.height;
       break;
     case 3:
      result = window.outerHeight;
       break;
     case 4:
       result = -1;
       break;
     case 5:
       result = -1;
       break;
     default:
       result = -1;
       break;
  } // switch(bversion)
  return result;
} // Ende Funktion getPageHeight

/**
 * Ermittelt die aktuelle horizontale Position innerhalb der Seite gemessen am
 * linken Fensterrand.
 * Ermittelt also, wie weit der Anwender bereits nach rechts gescrollt hat.
 * @return    integer   horizontale Position innerhalb der Seite in Pixeln.
 * @access    public
 */
function getPageScrollX()
{
  switch(bversion)
  {
     case 1:
       result = document.body.scrollLeft;
       break;
     case 2:
       result = window.pageXOffset;
       break;
     case 3:
      result = window.pageXOffset;
       break;
     case 4:
       result = -1;
       break;
     case 5:
       result = -1;
       break;
     default:
       result = -1;
       break;
  } // switch(bversion)
  return result;
} // Ende Funktion getPageScrollX

/**
 * Speichert die aktuelle vertikale Position innerhalb der Seite, gemessen
 * am Dokumentanfang.
 * Ermittelt also, wie weit der Anwender bereits nach unten gescrollt hat.
 * @return    integer   vertikale Position innerhalb der Seite in Pixeln.
 * @access    public
 */
function getPageScrollY()
{
  switch(bversion)
  {
     case 1:
       result = document.body.scrollTop;
       break;
     case 2:
       result = window.pageYOffset;
       break;
     case 3:
      result = window.pageYOffset;
       break;
     case 4:
       result = -1;
       break;
     case 5:
       result = -1;
       break;
     default:
       result = -1;
       break;
  } // switch(bversion)
  return result;
} // Ende Funktion getPageScrollY