/*
browser.js -> 020101->031006 -> vb
welcher browser bist du (für den webdev)?

$Log: browser.js,v $
Revision 1.4  2004/04/04 12:31:16  vb
zammarammadamma

Revision 1.3  2004/01/05 19:41:34  vb
crlf raus, cvsdepp

Revision 1.2  2003/10/06 14:59:01  vb
header
*/


/* INTERNE HILFSFUNKTION(EN) ***********************************************/

function browserScreenWidth() {
  return (screen.width);
}
function browserScreenHeight() {
  return (screen.height);
}
function browserScreenAvailWidth() {
  return (screen.availWidth);
}
function browserScreenAvailHeight() {
  return (screen.availHeight);
}
function browserWindowWidth() {
  if (window.outerWidth) return window.outerWidth;
  if (browser.ie) {
    /* vb: fixme: beim ie bekomme ich die browser-größe nur über einen workaround: */
    /* miss deine inneren maße, resize, miss nochmal deine inneren maße & resize zurück */
    origX = document.body.offsetWidth;
    origY = document.body.offsetHeight;
    window.resizeTo( 500, 500 );
    tmpX = document.body.offsetWidth;
    tmpY = document.body.offsetHeight;
    deltaX = origX - tmpX;
    deltaY = origY - tmpY;
    window.resizeTo( 500 + deltaX, 500 + deltaY );
    return (500 + deltaX);
  }
  return 0;
}
function browserWindowHeight() {
  if (window.outerHeight) return window.outerHeight;
  if (browser.ie) {
    /* vb: fixme: beim ie bekomme ich die browser-größe nur über einen workaround: */
    /* miss deine inneren maße, resize, miss nochmal deine inneren maße & resize zurück */
    origX = document.body.offsetWidth;
    origY = document.body.offsetHeight;
    window.resizeTo( 500, 500 );
    tmpX = document.body.offsetWidth;
    tmpY = document.body.offsetHeight;
    deltaX = origX - tmpX;
    deltaY = origY - tmpY;
    window.resizeTo( 500 + deltaX, 500 + deltaY );
    return (500 + deltaY);
  }
  return 0;
}
function browserDocumentWidth() {
  /* vb: ein sinnvoller wert ist hier nur bei einer fertig geladenen seite zu erwarten. */
  /* wenn der </body>-tag noch aussteht, dann bekommen wir schmarri */
  if (this.ns) return document.width;
  if (document.body.scrollWidth) return document.body.scrollWidth;
  return 0;
}
function browserDocumentHeight() {
  /* vb: ein sinnvoller wert ist hier nur bei einer fertig geladenen seite zu erwarten. */
  /* wenn der </body>-tag noch aussteht, dann bekommen wir (margin-top + margin-bottom) */
  if (this.ns) return document.height;
  if (document.body.scrollHeight) return document.body.scrollHeight;
  return 0;
}
function browserVisibleWidth() {
  if (window.innerWidth) return window.innerWidth;
  if (document.body.clientWidth) return document.body.clientWidth;
  return 0;
}
function browserVisibleHeight() {
  if (window.innerHeight) return window.innerHeight;
  if (document.body.clientHeight) return document.body.clientHeight;
  return 0;
}
function browserScrollTest() {
  /* hier sollte der default-wert true sein, oder? */
  /* da diese funktion documentHeight aufruft, liefert sie ohne </body> ebenfalls nonsense */
  return (this.documentHeight() > this.visibleHeight());
}

function browserTest() {
  /* vb: für erweiterungen & anregungen: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html */
  this.klient  = navigator.userAgent.toLowerCase();
  this.version = parseInt( navigator.appVersion );
  this.ver     = parseFloat( navigator.appVersion );

  /* vb: da fehlen natürlich noch amiga, c64, unix &&& */
  this.win   = ((this.klient.indexOf( "win" ) != -1) || (this.klient.indexOf( "16bit" ) != -1));
  this.mac   = (this.klient.indexOf( "mac" ) != -1);
  this.linux = (this.klient.indexOf( "inux" ) != -1);
  this.sun   = (this.klient.indexOf( "sunos" ) != -1);
  this.bsd   = (this.klient.indexOf( "bsd" ) != -1);

  /* die einzelnen browsers beinhalten keine exakten versionsnummern */
  /* sie sind eher für den webdev gedacht & werden je nach funktionalitätserweiterungen selbiger belegt */
  /* es empfiehlt sich also immer ein >= statt einem ==, da browsers manchmal abwärtskompatibel sind */
  /* vb: beinhaltet die versionsnummer, funktioniert aber auch als wie ein boolean (wenn > 1) */
  this.ie = 0;
  if ((this.klient.indexOf( "msie" ) != -1) && (this.klient.indexOf( "opera" ) == -1)) {
    this.ie = 1;
    if (document.all) this.ie = 4;
    if (document.getElementById) this.ie = 5;
  }
  this.ns = 0;
  if ((this.klient.indexOf( "mozilla" ) != -1) && (this.klient.indexOf( "spoofer" ) == -1) && (this.klient.indexOf( "compatible" ) == -1) && (this.klient.indexOf( "opera" ) == -1) && (this.klient.indexOf( "webtv" ) == -1) && (this.klient.indexOf( "hotjava" ) == -1)) {
    this.ns = 1;
    if (document.layers) this.ns = 4;
    if (document.getElementById) this.ns = 6;
  }
  this.op = 0;
  if (this.klient.indexOf( "opera" ) != -1) {
    this.op = 1;
    if (document.getElementById) this.op = 5;
  }
  this.co = 0;
  /* vb: meiner schreibt sich mit k: */
  if (this.klient.indexOf( "onqueror" ) != -1) {
    this.co = 1;
  }
  this.aol = 0;
  if (this.klient.indexOf( "aol" ) != -1) {
    this.aol = 1;
  }

  /* funktionen für deine größen: */
  this.screenWidth = browserScreenWidth;
  this.screenHeight = browserScreenHeight;
  this.screenAvailWidth = browserScreenAvailWidth;
  this.screenAvailHeight = browserScreenAvailHeight;
  this.windowWidth = browserWindowWidth;
  this.windowHeight = browserWindowHeight;
  this.documentWidth = browserDocumentWidth;
  this.documentHeight = browserDocumentHeight;
  this.visibleWidth = browserVisibleWidth;
  this.visibleHeight = browserVisibleHeight;
  this.scrollt = browserScrollTest;
}


/* AUTOSTART (INITIALISIERUNG) ******+**************************************/

/* das browser-objekt höchstpersönlich: */
var browser = new browserTest();

