/* 
 * Copyright 2006, David H. Marlin
 */

/* 
 *  Classes
 */

/*********************************
 * the Menu class
 *********************************/

function Menus(numMain)
{
   this.maxItems = 7;
   this.theData = new Array(numMain);
   this.numMain = numMain;
   this.numLevels = 3;
   this.theMenus = new Array();
   this.itemCounters=new Array(this.numLevels);
   for (var ii=1;ii<=this.numLevels;ii++)
      this.itemCounters[ii]=0;
}

Menus.prototype.AddMain=function(name, text, url, numSubs) 
{
   this.itemCounters[1]++;
   this.theData[this.itemCounters[1]] = new MenuItem(name, text, url, numSubs);
   //var prn = this.theData[this.itemCounters[1]];
   //document.write("<br>Item "+this.itemCounters[1]+": name "+prn.name+", text "+prn.text+", url "+prn.url);
   if (this.numLevels > 1)
      this.itemCounters[2]=0;
}

Menus.prototype.AddSub=function(name, text, url, numSubs) 
{
   this.itemCounters[2]++;
   this.theData[this.itemCounters[1]].theData[this.itemCounters[2]] = new MenuItem(name, text, url, numSubs);
   if (this.numLevels > 2)
      this.itemCounters[3]=0;
}

Menus.prototype.AddSubSub=function(name, text, url) 
{
   this.itemCounters[3]++;
   this.theData[this.itemCounters[1]].theData[this.itemCounters[2]].theData[this.itemCounters[3]] = new MenuItem(name, text, url, 0);
}

Menus.prototype.Done=function() 
{
  this.theMenus["free"]=this.BuildMenu(0,0);
  for(var ii=1;ii<=this.numMain;ii++)
   {
     var topMenuData = this.theData[ii];
     this.theMenus[topMenuData.name]=this.BuildMenu(ii,0, 0);
      
      for(var jj=1;jj<=topMenuData.numSubs;jj++)
      {
         var numSubSubs = this.theData[ii].theData[jj].numSubs;
         if (numSubSubs > 0)
         {
            menuBar = new MenuBar(1);
            for(var kk=1;kk<=numSubSubs;kk++)
               menuBar.AddItem(this.theData[ii].theData[jj].theData[kk].text, this.theData[ii].theData[jj].theData[kk].url);
            menuBar.Done();
            this.theMenus[topMenuData.theData[jj].name]=this.BuildMenu(ii,jj, 0)+menuBar.GetMenuBar(0);
         }
         else
            this.theMenus[topMenuData.theData[jj].name]=this.BuildMenu(ii,jj, 0);
         var subMenuData = topMenuData.theData[jj];
         for(var kk=1;kk<=numSubSubs;kk++)
            this.theMenus[subMenuData.theData[kk].name]=this.BuildMenu(ii,jj, kk)+menuBar.GetMenuBar(kk);
         
      }
   }
}

Menus.prototype.BuildMenu=function(mainNdx, subNdx, subsubNdx)
{
   var width = MASTER_WIDTH-HEADER_OFFSET;
   var mD = "<table width="+width+"px class=menu>"; 
   for(var ii=1;ii<=this.numMain;ii++)
   {
      if(ii==mainNdx) //selected item
        if(subNdx==0) //no sub item selected
           mD += "<td class=menu2 width="+CELL_WIDTH+">"+this.theData[ii].text+"</td>";
        else          //sub item selected
           mD += "<td class=menu2 width="+CELL_WIDTH+"><a href="+this.theData[ii].url+" class=menu2>"+this.theData[ii].text+"</a></td>";
      else            //not selected
        mD += "<td class=menu1 width="+CELL_WIDTH+"><a href="+this.theData[ii].url+" class=menu1>"+this.theData[ii].text+"</a></td>";
   } 
   for(var ii=this.numMain+1;ii<=this.maxItems;ii++)
      mD += "<td class=menu1 width="+CELL_WIDTH+">&nbsp;</td>";
   mD += "</tr><tr>";

   var numSubs;
   if(mainNdx==0)
     numSubs=0;
   else
   {
      numSubs = this.theData[mainNdx].numSubs;
      for(var ii=1;ii<=numSubs;ii++)
      {
         if(ii==subNdx)
            if(subsubNdx==0)
               mD += "<td class=menu2s width="+CELL_WIDTH+">"+this.theData[mainNdx].theData[ii].text+"</td>";
            else
               mD += "<td class=menu2s width="+CELL_WIDTH+"><a href="+this.theData[mainNdx].theData[ii].url+" class=menu2s>"+this.theData[mainNdx].theData[ii].text+"</a></td>";
         else
            mD += "<td class=menu2 width="+CELL_WIDTH+"><a href="+this.theData[mainNdx].theData[ii].url+" class=menu2>"+this.theData[mainNdx].theData[ii].text+"</a></td>";
      }
   }
   for(var ii=numSubs+1;ii<=this.maxItems;ii++)
      mD += "<td class=menu2 width="+CELL_WIDTH+">&nbsp;</td>";

   mD += "</tr><tr><td class=menu3 colspan=7><a href=/calendar/calendar.asp class=menu3>Calendar</a> | <a href=/announcements/announcements.asp class=menu3>Announcements</a> | <a href=/sitemap.htm class=menu3>Site Map</a> | <a href=/contacts.htm class=menu3>Contact Us&nbsp;</a></td></tr></table>";

   return mD;
}

Menus.prototype.GetMenuTable=function(name){return this.theMenus[name];}

Menus.prototype.GetSiteMap=function()
{
   var numPages=0;
   for(var ii=1;ii<=this.numMain;ii++)
   {
      var mainData=this.theData[ii];
      numPages+=mainData.numSubs+2;
      for (var jj=1;jj<=mainData.numSubs;jj++)
         numPages+=mainData.theData[jj].numSubs;
   }
   numPages+=3; //including grey menu bar
   numPages/=3;
   col=1;
   var mDl="", mDc="", mDr="", count=0;
   for(var ii=1;ii<=this.numMain;ii++)
   {
      var mainData=this.theData[ii];
      var mD="<a class=index1 href="+mainData.url+">"+mainData.text+"</a><br>"; count++;
      for (var jj=1;jj<=mainData.numSubs;jj++)
      {
         var subData=mainData.theData[jj];
         mD += "&nbsp;&nbsp;&nbsp;&nbsp;<a class=index2 href="+subData.url+">"+subData.text+"</a><br>"; count++;
         for (var kk=1;kk<=subData.numSubs;kk++)
         {
            var subsubData=subData.theData[kk];
            mD += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class=index3 href="+subsubData.url+">"+subsubData.text+"</a><br>"; count++;
         }
      }
      mD+="<br>"; count++;

      if (col==1)
         mDl+=mD;
      else if (col==2)
         mDc+=mD;
      else
         mDr+=mD;

      if (col==1 && count>numPages+2) //numPages
         col=2;
      if (col==2 && count>2*numPages) //2*numPages
         col=3;

   }
   mDr += "<a class=index1 href=/calendar/calendar.asp>calendar</a><br><a class=index1 href=/announcements/announcements.asp>announcements</a><br><a class=index1 href=/contacts.htm>contact us</a>";
   
   //(row, col, colspan, classs, width, otheratts, fontclass, content)
   siteTable=new Table(3,"","95%","valign=top");
   siteTable.AddCell(1,1,0,"","","valign=top","",mDl);
   siteTable.AddCell(1,2,0,"","","valign=top","",mDc);
   siteTable.AddCell(1,3,0,"","","valign=top","",mDr);
   siteTable.WriteTable();
}

function MenuItem(name, text, url, numSubs)
{
   this.name = name;
   this.text = text;
   this.url = url;
   this.numSubs = numSubs;
   if (numSubs > 0)
      this.theData = new Array(numSubs);
}

/*********************************
 * the MenuBar class
 *********************************/

function MenuBar(multi)
{
   this.theItems = new Array();
   this.theUrls = new Array();
   this.theMenus = new Array();
   this.multi = multi;
   this.numItems = 0;
}

MenuBar.prototype.AddItem=function(theItem, theUrl)
{
   this.numItems++;
   this.theItems[this.numItems] = theItem;
   this.theUrls[this.numItems] = theUrl;
}

MenuBar.prototype.Done=function()
{
   var len2=this.theItems.length;
   var len1;
   if (this.multi>0)
      len1=len2;
   else
      len1=1;
   for(var ii=0;ii<len1;ii++)
   {
      var mD="<p class=menu4>";
      //var mD="";
      for(var jj=1;jj<len2;jj++)
      {
         if(jj==ii)
            mD += "<span class=menu4s>"+this.theItems[jj]+"</span>";
         else
            mD += "<a href="+this.theUrls[jj]+" class=menu4>"+this.theItems[jj]+"</a>";
         if(jj<len2-1)
            mD += " | ";
      }
      mD+="</p>";
      this.theMenus[ii]=mD;
   }         
}
MenuBar.prototype.GetMenuBar=function(selected){return this.theMenus[selected];}

MenuBar.prototype.WriteMenuBar=function(selected){document.write(this.theMenus[selected]+"<br>");}

/*********************************
 * the SectionBar Class
 *********************************/

function SectionBar(width)
{
   this.theTitles = new Array();
   this.theLabels = new Array();
   this.theAnchors = new Array();
   this.theMenus = new Array();
   this.numItems = 0;
   this.width=width;
}

SectionBar.prototype.AddItem=function(title, label, anchor)
{
   this.theTitles[this.numItems] = title;
   this.theLabels[this.numItems] = label;
   this.theAnchors[this.numItems] = anchor;
   this.numItems++;
}

SectionBar.prototype.Done=function()
{
   var len=this.theTitles.length;
   for(var ii=0;ii<len;ii++)
   {
      var mD="<a name="+this.theAnchors[ii]+"></a>";
      mD+="<table class=section width="+this.width+"px><tr><td class=sectionl>&nbsp;"+this.theTitles[ii]+"</td><td class=sectionr>";
      for(var jj=0;jj<len;jj++)
      {
         if(jj==ii)
            mD+=this.theLabels[jj];
         else
            mD+="<a href=#"+this.theAnchors[jj]+" class=section>"+this.theLabels[jj]+"</a>";
         if(jj<len-1)
            mD+="<span class=section> | </span>";
      }
      this.theMenus[ii]=mD+"&nbsp;</td></tr></table>";
   }         
}

// depricate first two
SectionBar.prototype.GetMenuBar=function(section){return this.theMenus[section];}

SectionBar.prototype.WriteMenuBar=function(section){document.write(this.theMenus[section]);}

SectionBar.prototype.GetSectionBar=function(section){return this.theMenus[section];}

SectionBar.prototype.WriteSectionBar=function(section){document.write(this.theMenus[section]);}

/*********************************
 * Headers, Trailers & Misc.
 *********************************/

function Header(name, subtitle, img)
{
   var title = "Mayfield High School<br>Trojan Marching Band";
   offset=MASTER_WIDTH+4; // adust for padding
   document.write("<a name=top></a><table width="+offset+"px class=header><tr><td class=header>"+title+"</td><td class=header width="+HEADER_IMG_WIDTH+"><img src="+img+" width="+HEADER_IMG_WIDTH+" align=right></td></tr></table>");
   document.write("<table width="+MASTER_WIDTH+"px class=header><tr><td class=header>"+window.theMenus.GetMenuTable(name)+"</td></tr></table>");
   document.write("<table class=master width="+MASTER_WIDTH+"px><tr><td class=master>");
}

function Trailer()
{
   document.write("</td></tr></table><table width="+offset+"px><tr><td colspan=5>&nbsp;</td></tr>");
   document.write("<tr><td class=trailert colspan=5><div width=100% class=trailert><a class=trailert href=#top>top</a>&nbsp;</div></td></tr>");
   document.write("<td align=center width=32% valign=top><p class=trailer>Webmasters <a class=trailer href=mailto:webmaster@mayfieldhsband.org>Kevin Mauldin and David Marlin</a>");
   document.write("<br>Webmasters e-mail: <a class=trailer href=mailto:webmaster@mayfieldhsband.org>webmaster@mayfieldhsband.org</a>");
   document.write("<br>Band Program e-mail: <a class=trailer href=mailto:director@mayfieldhsband.org>director@mayfieldhsband.org</a>");
   document.write("<br>Mayfield Band Parents Association<br />&copy;&nbsp;Copyright 2010-2011");
   document.write("</td><td align=right width=12% valign=bottom text-align=center><p class=trailer><img src=/images/valid-html401.png>");
   document.write("</td><td align=center width=13% valign=top text-align=center><p class=trailer><img src=/images/computersm.gif>");
   document.write("</td><td align=left width=12% valign=bottom text-align=center><p class=trailer><img src=/images/vcss.gif>");
   document.write("</td><td align=center width=31% valign=top text-align=center><p class=trailer>This website is maintained by the<br />Mayfield High School Band Parents Association<br />Its content does not necessarily represent the policies<br />or opinions of Mayfield High School or the Las Cruces<br />Public School District.");
}

function Title(title){document.write("<table class=title width="+MASTER_WIDTH+"px><tr><td>"+title+"</td><td align=right width=85 valign=middle><img src=/images/london.jpg alt=london width=85></td><td align=right width=52 valign=middle><img src=/images/china.jpg alt=china width=32></td><td align=right width=85 valign=middle><img src=/images/torlogo_small.jpg alt=torlogo width=85></td><td align=right width=80 valign=middle><img src=/images/macyslogo_small.jpg alt=macyslogo width=80></td><td align=right width=150 valign=middle><img src=/images/mhsbutton.gif alt=mhsbutton width=150></td></tr></table>");}

function br(num)
{
   for(var ii=0;ii<num;ii++)
      document.write("<br>");
}
