<!-- Begin
/* ============================================================== */
/* This file contains four routines used throughout this web site */
/*     savheader - generates the page header                      */
/*     savmenu - generates the dynamic menu on the left of page   */
/*     savfooter - generates the page footer                      */
/* */

/* ============================================================== */
/* savheader                                                      */
/*    Construct page header                                       */

function savheader(depth) {
/*                                                                */
/* The "depth" parameter deprecated 2009-12-27/cmr                */
/*                                                                */

var usepersonal = true;
// var usepersonal = false;

var hdrline = new Array(9);
hdrline[1] = '<a class=external href="http://www.durhamsavoyards.org/">';
hdrline[2] = '   <img src="/images/DSLtd2.gif" ALT="[The Durham Savoyards, Ltd.]">';
hdrline[3] = '   </a>';

hdrline[4] = '<h3>Durham Savoyards, Ltd. (Unofficial)</h3>';
hdrline[5] = '<h2>Reference and Archives Site</h2>';
hdrline[6] = '<h5>The OFFICIAL Durham Savoyards, Ltd. web site<br>';
hdrline[7] = '    is at <a href="http://www.durhamsavoyards.org/"';
hdrline[8] = '            class=external>www.DurhamSavoyards.org</a>';
hdrline[9] = '</h5>';

var firstline = 1;
var lastline  = 3;

if (usepersonal) {
	firstline = 4;
	lastline  = 9;
}

for (i=firstline; i<=lastline; i++) {
	document.write(hdrline[i]);
	}

} /* savheader */

/* ============================================================== */
/* savmenu                                                        */
/*    Construct menu dynamically based on current page            */

function savmenu(depth, basename) {
/*                                                                */
/* The "depth" parameter indicates the number of levels down in   */
/* the directory structure, relative to the top, of the calling   */
/* php file.  0=top level, 1=one level down, etc.                 */
/*    Default: depth=0                                            */
/* Parameter deprecated 2009-12-27/cmr                            */
/*                                                                */
/* The "basename" paramenter overrides the calling php file's     */
/* filename; intended for use in combination with "depth".        */
/*    Default: null                                               */
/*                                                                */
/* Each menu item must be defined in the following table, along   */
/* with its corresponding page name ("something.php").            */
/* Pages that are too deep in the hierachy to have their own      */
/* menu entry must have name containing a dollar sign ($), where  */
/* the text to the left of the $ names the lowest parent page     */
/* corresponding to a menu item (the text to the right of the $   */
/* may be anything.                                               */
/*    Example: the 1999 Pirates cast list page could be named     */
/*        archives-pirates$cast1999.php                           */
/*    making its parent page                                      */
/*        archives-pirates.php                                    */
/* ----------------------------------------------------- */
/*                                Menu   Menu  Always    */
/*  Menu Item                    Level  Group Displayed  */
/*  ---------------------------- -----  ----- ---------  */
/*  News                          1     1        yes     */
/*  Upcoming Shows                1     1        yes     */
/*      Patience                   2     2       yes     */
/*      Auditions                   3     3      yes     */
/*      Publicity Info             2     2       yes     */
/*  Resources                     1     1        yes     */
/*      Local Maps                 2      3      yes     */
/*      Mailing Lists              2      3      yes     */
/*      Other Sites                2      3      yes     */
/*  About DSL                     1     1        yes     */
/*      History &amp; Archives     2       4     yes     */
/*          History                 3       5    no      */
/*          Milestones              3       5    no      */
/*          Awards                  3       5    no      */
/*          Presidents              3       5    no      */
/*          Bylaws History          3       5    no      */
/*      Past Performances          2       4     yes     */
/*           Thespis                3        6   no      */
/*           Trial                  3        6   no      */
/*           Sorcerer               3        6   no      */
/*           Pinafore               3        6   no      */
/*           Pirates                3        6   no      */
/*           Patience               3        6   no      */
/*           Iolanthe               3        6   no      */
/*           Princess Ida           3        6   no      */
/*           Mikado                 3        6   no      */
/*           Ruddigore              3        6   no      */
/*           Yeomen                 3        6   no      */
/*           Gondoliers             3        6   no      */
/*           Utopia                 3        6   no      */
/*           Grand Duke             3        6   no      */
/*      Past Performers            2       4     yes     */
/*      Board of Governors         2       4     yes     */
/*      Bylaws                     2       4     yes     */
/*  Site Map                      1     1        yes     */
/* ----------------------------------------------------- */

var refpage   = new Array(40);  /* Reference page file name, without .php extension  */
var menutext  = new Array(40);  /* Menu item text to be displayed                     */
var menulevel = new Array(40);  /* Menu depth level                                   */
var always    = new Array(40);  /* "Always displayed" flag                            */
var grp       = new Array(40);  /* Menu Group number                                  */

var parentno  = new Array(40);  /* Index of menu item's parent (computed)             */
    /* Note that this item could be hard-coded in advance, but computing it makes it  */
    /* easier to add, remove, and rearrange menu elements.                            */

var blanktext = "[blank line]"; /* Place holder text when a blank menu item is wanted */
var blankline = "<br>";         /* HTML code to generate blank line                   */

var norefpage = "[no link]"; /* Place holder text when a menu itself has no link */

var i         = 0;
i++; menutext[i]="Home";					menulevel[i]=1; grp[i]=1; always[i]=true;  refpage[i]="index";

/* i++; menutext[i]="Upcoming Shows";         menulevel[i]=1; grp[i]=1; always[i]=true;  refpage[i]=norefpage; */
/* i++; menutext[i]="Patience";                menulevel[i]=2; grp[i]=2; always[i]=true; refpage[i]="patience"; */
/* i++; menutext[i]="Auditions";                menulevel[i]=3; grp[i]=3; always[i]=true;  refpage[i]="auditions"; */
/* i++; menutext[i]="Tickets";                menulevel[i]=3; grp[i]=3; always[i]=true;  refpage[i]="tickets";      */
/* i++; menutext[i]="Publicity Material";         menulevel[i]=3; grp[i]=3; always[i]=true;  refpage[i]="publicity"; */

i++; menutext[i]="About DSL";				menulevel[i]=1; grp[i]=1; always[i]=true;  refpage[i]="about";
i++; menutext[i]="History &amp; Archives";	menulevel[i]=2; grp[i]=4; always[i]=true;  refpage[i]="archives-index";
i++; menutext[i]="History";					menulevel[i]=3; grp[i]=5; always[i]=true; refpage[i]="archives-history";
i++; menutext[i]="Milestones";				menulevel[i]=3; grp[i]=5; always[i]=true; refpage[i]="archives-milestones";
i++; menutext[i]="Awards";					menulevel[i]=3; grp[i]=5; always[i]=true; refpage[i]="archives-awards";
i++; menutext[i]="Presidents";				menulevel[i]=3; grp[i]=5; always[i]=true; refpage[i]="archives-presidents";

i++; menutext[i]="Past Performances";		menulevel[i]=2; grp[i]=4; always[i]=true;  refpage[i]="archives-performances";
i++; menutext[i]="Thespis";					menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-thespis";
i++; menutext[i]="Trial by Jury";			menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-trial";
i++; menutext[i]="Sorcerer";				menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-sorcerer";
i++; menutext[i]="HMS Pinafore";			menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-pinafore";
i++; menutext[i]="Pirates";					menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-pirates";
i++; menutext[i]="Patience";				menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-patience";
i++; menutext[i]="Iolanthe";				menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-iolanthe";
i++; menutext[i]="Princess Ida";			menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-princess-ida";
i++; menutext[i]="Mikado";					menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-mikado";
i++; menutext[i]="Ruddigore";				menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-ruddigore";
i++; menutext[i]="Yeomen";					menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-yeomen";
i++; menutext[i]="Gondoliers";				menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-gondoliers";
i++; menutext[i]="Utopia";					menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-utopia";
i++; menutext[i]="Grand Duke";				menulevel[i]=3; grp[i]=6; always[i]=false; refpage[i]="archives-grand-duke";

i++; menutext[i]='Past Cast &amp; Staff <img src="/images/new.gif" alt="*">';		menulevel[i]=2; grp[i]=4; always[i]=true;  refpage[i]="archives-cast-staff";

i++; menutext[i]="Board of Governors";		menulevel[i]=2; grp[i]=4; always[i]=true;  refpage[i]="board";
i++; menutext[i]="Bylaws";					menulevel[i]=2; grp[i]=4; always[i]=true;  refpage[i]="bylaws";
i++; menutext[i]="Bylaws History";			menulevel[i]=3; grp[i]=5; always[i]=false; refpage[i]="bylaws-history";

i++; menutext[i]="Other Resources";			menulevel[i]=1; grp[i]=1; always[i]=true;  refpage[i]="resources";
/* i++; menutext[i]="Local Maps";			menulevel[i]=2; grp[i]=7; always[i]=true;  refpage[i]="local-maps"; */
i++; menutext[i]="Mailing Lists";			menulevel[i]=2; grp[i]=7; always[i]=true;  refpage[i]="mailing-lists";
i++; menutext[i]="Announcements";			menulevel[i]=3; grp[i]=8; always[i]=true;  refpage[i]="mail-announcements";
i++; menutext[i]="Contacting DSL";			menulevel[i]=3; grp[i]=8; always[i]=true;  refpage[i]="mail-contacts";
i++; menutext[i]="Discussion";				menulevel[i]=3; grp[i]=8; always[i]=true;  refpage[i]="mail-discussion";
i++; menutext[i]="Parodies";				menulevel[i]=2; grp[i]=7; always[i]=true;  refpage[i]="parody";
i++; menutext[i]="Other Sites";				menulevel[i]=2; grp[i]=7; always[i]=true;  refpage[i]="other-sites";

i++; menutext[i]=blanktext;					menulevel[i]=1; grp[i]=1; always[i]=true;  refpage[i]="";
i++; menutext[i]="Site Map";				menulevel[i]=1; grp[i]=1; always[i]=true;  refpage[i]="site-map";

var maxitems = i; /* Total number of menu items */

var aclass = new Array(3); /* CSS menu item class labels */
aclass[1]='menu';
aclass[2]='sub';
aclass[3]='sub2';

var bullet    = new Array(3); /* Bullet graphics for each menu level */
bullet[1]='<img src="/images/menu.gif" width=14px height=14px alt="*">';
bullet[2]='<img src="/images/menu-sub1.gif" width=12px height=12px alt="-">';
bullet[3]='<img src="/images/menu-sub2.gif" width=10px height=10px alt=".">';

var blankbull = new Array(3); /* Blank Bullet graphics for each menu level */
blankbull[1]='<img src="/images/menu-space.gif" width=14px height=14px alt=" ">';
blankbull[2]='<img src="/images/menu-space.gif" width=12px height=12px alt=" ">';
blankbull[3]='<img src="/images/menu-space.gif" width=10px height=10px alt=" ">';

var ruler  ='<img src="/images/rule05.gif" width=100px height=9px alt="------">';
var dslicon='<img src="/images/LogoIcon2003.gif" alt="[DSL]" class="side">';

/* Miscellaneous HTML code fragments for menu lines */
var adef1='<a href="/';
var adef2='" class=';
var adef3='>';
var adef4='</a>';

var adef5='<h3 class=';
var adef6='</h3>';

var thisitem = 0;   /* Scratchpad variables */
var thispage = "";
var thisname = "";
var star     = "";
var ext      = "";
var extpos   = 0;
var dollar   = 0;

var thisurl = location.href;
var thisdir = thisurl.substring(0,thisurl.lastIndexOf('/')+1); /* This page's directory value           */

if (basename == null || basename == "") {
	if (thisdir == thisurl) {
		thispage = 'index.php';
	}
	else {
		thispage = thisurl.substring(thisdir.length,thisurl.length+1);
		/* This page's file name with extension  */
	}
	extpos   = thispage.lastIndexOf('.php');
	if (extpos > -1) {
		thisname = thispage.substring(0,extpos);  /* This page's file name                   */
		ext = thispage.substring(extpos);         /* This page's file name extension (.php) */
	}
	else {
		thisname = thispage;
	}
}
else {
	thisname = basename;
	ext = '.php';
	thispage = thisname;
}

dollar   = thisname.lastIndexOf('$')    /* If we have a low-level page name,   */
if (dollar > -1) {                      /*   extract its parent menu file name */
	thisname = thispage.substring(0,dollar);
}
else {  /* Check for %24 - equivalent of dollar sign */
	dollar   = thisname.lastIndexOf('%24')
	if (dollar > -1) {
		thisname = thispage.substring(0,dollar);
	}
}

var lastparent = 0;
var lastgrp    = 0;

for (i=1; i<=maxitems; i++) {
	/* Run through the table to find which page is being displayed  */
	if (thisname == refpage[i]) thisitem = i;

	/* and determine each item's parent index value                 */
	if (i == 1) {
		/* Set values for first item in the menu table  */
		parentno[i] = 0;
		lastparent = parentno[i];
		lastgrp = grp[i];
	}
	else {  /* Not first item -- determine parent index  */
		if (grp[i] > lastgrp) {
			/* If group number increases since last item then last item is parent */
			lastgrp = grp[i];
			parentno[i] = i-1;
			lastparent = parentno[i];
		}
		else {
			if (grp[i] == lastgrp) {
				/* If group number is unchanged parent is unchanged */
				parentno[i] = lastparent;
			}
			else { /* grp[i] < lastgrp */
				/* If group number decreases, we skip back a level  */
				if (menulevel[i] == 1) {
					/* If highest menu level (1) then there is no parent item */
					parentno[i] = 0;
				}
				else {
					/* Otherwise parent is grandparent of previous item */
					parentno[i] = parentno[lastparent];
				}
				lastparent = parentno[i];
				lastgrp = grp[i];
			}
		}
	}
}

if (thisitem == 0) {
	/* Safety code, in case we messed up the table */
	document.write('JavaScript menu table error');
	thisitem=1;
}

/* Run through table again to display menu items */
for (i=1; i<=maxitems; i++) {
	/* Check to see whether this item gets a bullet */
	if (i == thisitem
	 || i == parentno[thisitem]
	 || (parentno[thisitem] != 0
	 && i == parentno[parentno[thisitem]])) {
		star = bullet[menulevel[i]];
	}
	else { /* space bullet */
		star = blankbull[menulevel[i]];
	}
	if (menutext[i] == blanktext) {
		/* Check first for a blank line */
		document.write(blankline);
	}
	else {  /* No blank */
		if (always[i]  /* Print if always display */
		 || parentno[i] == thisitem  /* or if displaying items subordinate to this page's menu item */
		 || grp[i] == grp[thisitem]) /* or if displaying items in the same group as this page's menu item */ {
		 	if (refpage[i] == norefpage) {
				document.write(adef5 + aclass[menulevel[i]] + adef3 + star + menutext[i] + adef6);
		 	}
		 	else {
				document.write(adef1 + refpage[i] + ext + adef2 + aclass[menulevel[i]] + adef3 + star + menutext[i] + adef4);
			}
		}
	}
}

document.write('<br>' + ruler);
document.write('<br><br>');
document.write('<center>' + dslicon + '</center>');
document.write('<h4><b>Durham<br>Savoyards<br>Limited</h4>');

} /* savmenu */

function resSet(w,h) {
	frm = document.forms[0];
	urlF = document.URL;
	properties  = "width=" + w;
	properties += ",height=" + h;
	properties += ",scrollbars=1,toolbar=1,location=1";
	properties += ",directories=1,status=1,menubar=1";
	properties += ",resizable=1,left=0,top=0";

	window.open(urlF,"TestRes",properties);
}

/* ============================================================== */
/* savfooter                                                      */
/* Display standard page footer.                                  */

function savfooter(depth) {
/* depth parameter deprecated.  Here for backward compatibility only */

/* Set logical value of testWin depending on whether you want to  */
/* enable the resolution test buttons in the signature table.     */

var produrl = 'savoyards.upperregister.com';
var myuser = "charlie";
var mysite = "duke.edu";
var myname = "Charles Register";
var myurl  = "http://www.upperregister.com/~charlie"
var ShowSetWindowsizeButtons = true;

var thisurl = location.href;
var production = thisurl.lastIndexOf(produrl)
if (production > -1) {
	var ShowSetWindowsizeButtons = false;
	}

var indexpage = '/index.php';
var logoicon  = '/images/LogoIcon2003.gif';
var exticon   = '/images/external.jpg';

var days = new Array(8);
    days[1] = "Sunday";
    days[2] = "Monday";
    days[3] = "Tuesday";
    days[4] = "Wednesday";
    days[5] = "Thursday";
    days[6] = "Friday";
    days[7] = "Saturday";
var months = new Array(13);
    months[1] = "January";
    months[2] = "February";
    months[3] = "March";
    months[4] = "April";
    months[5] = "May";
    months[6] = "June";
    months[7] = "July";
    months[8] = "August";
    months[9] = "September";
    months[10] = "October";
    months[11] = "November";
    months[12] = "December";
var dateObj = new Date(document.lastModified);
var wday = days[dateObj.getDay() + 1];
var lmonth = months[dateObj.getMonth() + 1];
var date = dateObj.getDate();
var fyear = dateObj.getYear();

if (fyear < 2000) {
    fyear = fyear + 1900;
    }

document.write('<table id=footerbar');
document.write('	cellpadding=\"5\" cellspacing=\"1\" border=\"0\"');
document.write('	summary=\"Signature\"');
document.write('	align=center width=\"100%\"');
document.write('	>');

document.write('<tr>');

document.write('<td class=sigbox1>');
document.write('    <a href=\"' + indexpage +'\"><img src=\"' + logoicon + '\" ');
document.write('	style=\"border: 0px solid ;\"');
document.write('	title=\"DSL\" alt=\"DSL\"');
document.write('	width=\"40px\" height=\"45px\">');
document.write('	</a>');

document.write('<td class=sigbox2>');
document.write('    <span class=sigtext1>');
document.write('    Page designed and maintained by');
document.write('    </span><br>');
document.write('    &nbsp;&nbsp;&nbsp;<a href=\"' + myurl + '\"><span class=signame>' + myname + '</span></a>');
document.write('    <br><span class=sigtext1>');
document.write('    <img src=\"' + exticon + '\" ');
document.write('	style=\"border: 0px solid ;\"');
document.write('	title=\"External link\" alt=\" \">');
document.write('    Designates a link to an external site (not part of this archive).');
document.write('    </span><br>');

document.write('<td class=sigbox3>');

if (ShowSetWindowsizeButtons) {
   document.write('    <form>');
   document.write('    <input type=button value="640 x 480" onClick="resSet('  +  "'640','480'" + ')"> ');
   document.write('    <input type=button value="800 x 600" onClick="resSet('  +  "'800','600'" + ')"> ');
   document.write('    <input type=button value="1024 x 768" onClick="resSet(' + "'1024','768'" + ')"> ');
   document.write('    </form>');
}
else {
	document.write('    <span class=sigurl>' + thisurl + '</span><br>');
}

document.write('    <span class=sigdate2>');
document.write('    &nbsp;This page was last modified on&nbsp;<br>');
document.write(     '&nbsp;' + wday + ", " + lmonth + " " + date + ", " + fyear + '&nbsp;');
document.write('    </span>');

document.write('</table>');

} /* savfooter */

/* ============================================================== */
/* fit_image                                                      */
/*    A JavaScript to dymanically adjust the display size of an   */
/*    image based on the space available in the browser window.   */
/*                                                                */
/*    Based on a script by Ed Churnside and documented at         */
/*        http://www.dragonquest.com/dplsspic.htm                 */
/*    Modified, enhanced and commented by CMR -- 11-Sep-2005      */

function fit_image(src, wd, ht, alt, etc, pct_adj_wd, pct_adj_ht, bdr_adj_wd, bdr_adj_ht) {
/* Input variables (all are positional):
     Required variables:
  		src = source image file
		wd	= original image width
		ht	= original image height
     Optional variables
		alt	= alternate text (a good idea)
		etc	= other IMG tags (e.g. align, class)
		pct_adj_w = additional percentage adjustment to width (default=100)
		pct_adj_h = additional percentage adjustment to height (default=100)
		bdr_adj_w = additional adjustment for border width (default=30px)
		bdr_adj_h = additional adjustment for border height (default=30px)
*/

if (src == null) return;

var inner_wd, inner_ht; // Note client inner width and height
if (self.innerWidth)
{
	inner_wd = self.innerWidth;
	inner_ht = self.innerHeight;
}
else if (document.documentElement && document.documentElement.clientWidth)
{
	inner_wd = document.documentElement.clientWidth;
	inner_ht = document.documentElement.clientHeight;
}
else {
	inner_wd = document.body.clientWidth;
	inner_ht = document.body.clientHeight;
}

// Set default values
if (wd == null) wd = inner_wd;
if (ht == null) ht = inner_ht;
if (alt == null) alt = " ";

if (pct_adj_wd == null) pct_adj_wd = 100;
if (pct_adj_ht == null) pct_adj_ht = 100;
if (bdr_adj_wd == null) bdr_adj_wd = 30;
if (bdr_adj_ht == null) bdr_adj_ht = 30;

// Determine maximum available dimensions (in pixels) for picture.
// Include user-supplied percentage adjustments and adjustments for borders.
var show_wd = Math.round((inner_wd - bdr_adj_wd) * pct_adj_wd / 100);
var show_ht = Math.round((inner_ht - bdr_adj_ht) * pct_adj_ht / 100);

// Check ratio of image dimensions compared to available space
if ((wd * show_ht) / (ht * show_wd) < 1) {
// Fit fully within height of window
	show_wd = Math.round(wd * show_ht / ht);
	}
else {
// Fit fully within width of window
	show_ht = Math.round(ht * show_wd / wd);
	}

// Write out the IMG statement
document.write('<img src="'+src);
document.write('    "alt="'+alt);
document.write('    "width="'+show_wd+'" height="'+show_ht+'" '+etc+'>');

} /* fit_image */

// END -->
