Banner - JavaScript-Quelltext

Quelltext von banner.js

Dies ist die Auflistung der Datei banner.js, die die Funktionalität für Bannerwerbung bereitstellt.

Im folgenden Quelltext sind Prozedurdeklarationen rot und Kommentare grün markiert.
/* Bannerwerber
 * (c) 2002 Ulrich Kritzner
 * Die Verwendung dieses Scripts in kommerziellen Seiten ist kostenpflichtig
 */

/* Warnung:
 *   Nicht alle Browser unterstuetzen die gleichzeitige Ausfuehrung mehrerer Timeouts.
 *   Daher muss beim gleichzeitigen Einsatz mehrerer Banner
 *   oder der Kombination mit anderen Droeppez-Animationen
 *   die Datei "timer.js" im HTML-Dokument geladen werden.
 *
 * Erklaerung der "unverstaendlichen" Quelltextabschnitte:
 *   wird "timer.js" _nicht_ eingebunden (if (!(this.usetimer))),
 *     kuemmert sich Banner selbst um seine timeouts,
 *   wird "timer.js" eingebunden (if (this.usetimer)),
 *     laesst Banner seine timeouts vom timer managen
 *     Die Funktionen des timers sind in der extra Datei "timer.js" definiert!
 */

function B_AddEntry(imgsrc,elapse,linkURL,useOpen)
{
  var entry=new Object();
  entry.image=new Image();
  entry.image.src=imgsrc;
  entry.elapse=elapse;
  if (entry.elapse<20)
    entry.elapse=20;
  if (entry.elapse<this.minelapse)
    this.minelapse=entry.elapse;
  entry.linkURL=linkURL;
  entry.useOpen=useOpen;
  this.entries[this.entries.length]=entry;
}

function B_TimerFunc()
{
  this.cur=this.cur%this.entries.length;
  this.curentry=this.entries[this.cur];
  this.cur++;
  document.images[this.imgnum].src=this.curentry.image.src;
  if (this.usetimer)
/* wenn timer.js geladen ist: */
  {
    this.timestep=Math.round(this.curentry.elapse/u_timer_elapse);
    if (this.timestep<1)
      this.timestep=1;
  }
  else
/* wenn timer.js _nicht_ geladen ist: */
    this.timeout=window.setTimeout(this.name+".TimerFunc()",this.curentry.elapse);
}

function B_Run()
{
  if (this.usetimer)
/* wenn timer.js geladen ist: */
  {
    this.timestep=1;
    if (u_timer_elapse>0)
      u_timer_continue();
  }
  else
/* wenn timer.js _nicht_ geladen ist: */
  {
    if (this.timeout!=0)
      window.clearTimeout(this.timeout);
    this.timeout=0;
    this.TimerFunc();
  }
}

function B_FollowLink()
{
  var linkURL=this.curentry.linkURL;
  if ((typeof(linkURL)=="string")&&(linkURL!="")&&(linkURL!="none"))
  {
    if (this.curentry.useOpen)
      window.open(linkURL,"_blank");
    else
      top.location.href=linkURL;
  }
}

function Banner(name,imgnum)
{
  this.name=name;
  this.imgnum=imgnum;
  this.cur=0;
  this.minelapse=1000;
  this.entries=new Array();
  this.curentry=0;
  this.AddEntry=B_AddEntry;
  this.TimerFunc=B_TimerFunc;
  this.Run=B_Run;
  this.FollowLink=B_FollowLink;
  if (typeof(u_timer_add_object)=="function")
/* wenn timer.js geladen ist: */
  {
    this.usetimer=1;
    this.timestep=0;
    this.timeval=0;
    u_timer_add_object(this);
  }
  else
/* wenn timer.js _nicht_ geladen ist: */
  {
    this.usetimer=0;
    this.timeout=0;
  }
}
Autor: Ulrich Kritzner