DynaMenu - JavaScript-Quelltext

Quelltext von dynamenu.js

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

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

var ddm_before="       ";
var ddm_open="<img src=\"open.gif\" alt=\"\" border=\"0\">";
var ddm_closed="<img src=\"closed.gif\" alt=\"\" border=\"0\">";
var ddm_point="<img src=\"point.gif\" alt=\"\" border=\"0\">";
var ddm_only_one=0;
var ddm_menus=new Array();
var ddm_mcount=0;

function ddm_GetDivSection()
{
  if (this.divsection)
    return;
  if (window.document.all)
    this.divsection=eval("window.document.all."+this.name);
  else
    if (typeof(window.document.getElementById)=="function")
      this.divsection=window.document.getElementById(this.name);
    else
      this.divsection=eval("window.document."+this.name);
}

function ddm_AddEntry(entryname,href,target,attribute)
{
  this.menupoints[this.entries]=entryname;
  this.mhrefs[this.entries]=0;
  this.hrefs[this.entries]=href;
  this.targets[this.entries]=target;
  this.attributes[this.entries]=attribute;
  this.menuflags[this.entries]=0;
  this.entries++;
}

function ddm_AddSubMenu(menuname,href,target,attribute)
{
  this.menupoints[this.entries]=new DynaMenu(menuname);
  this.mhrefs[this.entries]="javascript:ddm_menus["+this.number+"].ChangeSubMenu("+this.entries+");";
  this.hrefs[this.entries]=href;
  this.targets[this.entries]=target;
  this.attributes[this.entries]=attribute;
  this.menupoints[this.entries].supermenu=this;
  this.menuflags[this.entries]=1;
  this.entries++;
  return this.menupoints[this.entries-1];
}

function ddm_CloseAll()
{
  var i;
  for (i=0;i<this.entries;i++)
  {
    if (this.menuflags[i]==2)
    {
      this.menuflags[i]=1;
      this.menupoints[i].CloseAll();
    }
  }
}

function ddm_ChangeSubMenu(entry)
{
  if (this.menuflags[entry]==1)
  {
    var obj=this,i;
    while (obj&&ddm_only_one)
    {
      if (!obj.supermenu)
        obj.CloseAll();
      obj=obj.supermenu;
    }
    obj=this;
    while (obj)
    {
      obj.menuflags[entry]=2;
      for (i=0;i<this.supermenu.entries;i++)
        if (this==this.supermenu.menupoints[i])
          entry=i;
      obj=obj.supermenu;
    }
  }
  else
    if (this.menuflags[entry]==2)
    {
      this.menuflags[entry]=1;
      this.menupoints[entry].CloseAll();
    }
  this.Paint();
}

function ddm_GetText()
{
  var text="",fillin="",i,myobject=this;
  while (myobject.supermenu)
  {
    myobject=myobject.supermenu;
    fillin+=ddm_before;
  }
  for (i=0;i<this.entries;i++)
  {
    text+=fillin;
    if (this.mhrefs[i])
    {
      text+="<a href=\""+this.mhrefs[i]+"\"";
      if (this.attributes[i])
        text+=" "+this.attributes[i];
      text+=">";
    }
    else
      if (this.hrefs[i])
      {
        text+="<a href=\""+this.hrefs[i]+"\"";
        if (this.targets[i])
          text+=" target=\""+this.targets[i]+"\"";
	if (this.attributes[i])
          text+=" "+this.attributes[i];
        text+=">";
      }
    if (this.menuflags[i]==0)
      text+="<img src=\""+ddm_point+"\" alt=\"\" border=\"0\"> "+this.menupoints[i];
    if (this.menuflags[i]==1)
      text+="<img src=\""+ddm_closed+"\" alt=\"\" border=\"0\"> ";
    if (this.menuflags[i]==2)
      text+="<img src=\""+ddm_open+"\" alt=\"\" border=\"0\"> ";
    if (this.mhrefs[i])
    {
      text+="</a>";
      if (this.hrefs[i])
      {
        if (this.hrefs[i]==":menu")
	{
          text+="<a href=\""+this.mhrefs[i]+"\"";
          if (this.attributes[i])
            text+=" "+this.attributes[i];
          text+=">";
	}
	else
	{
          text+="<a href=\""+this.hrefs[i]+"\"";
          if (this.targets[i])
            text+=" target=\""+this.targets[i]+"\"";
          if (this.attributes[i])
            text+=" "+this.attributes[i];
          text+=">";
	}
      }
      text+=this.menupoints[i].name
    }
    if (this.hrefs[i])
      text+="</a>";
    text+="<br>\n";
    if (this.menuflags[i]==2)
      text+=this.menupoints[i].GetText();
  }
  return text;
}

function ddm_Paint()
{
  if (this.supermenu)
  {
    this.supermenu.Paint();
    return;
  }
  this.GetDivSection();
  if (this.divsection.innerHTML)
    this.divsection.innerHTML=this.GetText();
  else
  {
    this.divsection.document.open();
    this.divsection.document.write(this.GetText());
    this.divsection.document.close();
  }
}

function DynaMenu(menuname)
{
  this.supermenu=0;
  this.divsection=0;
  this.name=menuname;
  this.entries=0;
  this.menupoints=new Array();
  this.hrefs=new Array();
  this.mhrefs=new Array();
  this.targets=new Array();
  this.attributes=new Array();
  this.menuflags=new Array();
  this.AddEntry=ddm_AddEntry;
  this.AddSubMenu=ddm_AddSubMenu;
  this.GetText=ddm_GetText;
  this.CloseAll=ddm_CloseAll;
  this.ChangeSubMenu=ddm_ChangeSubMenu;
  this.GetDivSection=ddm_GetDivSection;
  this.Paint=ddm_Paint;
  this.number=ddm_mcount;
  ddm_menus[this.number]=this;
  ddm_mcount++;
}
Autor: Ulrich Kritzner