
/******************************************/
// Constants & config
/******************************************/
var Window = ""; //resp. window
var StatusTextOld = ""; //remember old statustext for restore
var MapPath = "images/maps";
var IconPath = "images/icons";
var Hilite = 1;
var Lolite = 0;
var DEBUG_LEVEL = 1;
var navigation = new Menu (); //contains all the menu-items for navigation
var ClickIndex = 0;
var MainMenu = new Menu ();
var Initialised = 0;
var PopupWindow = "";
	
var Default_icon = new Array (
	new Image (), //unhiliteed
	new Image () //hilited
	);	
var Icon_hi = new Image ();
var Icon_lo = new Image ();
Icon_hi.src = IconPath + "/default_icon_h.jpg";
Icon_lo.src = IconPath + "/default_icon.jpg";
var WorldMap = new Image ();
WorldMap.src = MapPath + "/world.jpg";
var DefaultStatus = ""; //default status text for each page
/******************************************/
// END Constants
/******************************************/


/******************************************/
// Object-Definition-Section
/******************************************/

/******************************************/
// Object-definition: MenuItem
function MenuItem (name, statusText)
{
	//properties
	this.classId	= "MenuItem";
	this.name 	= name;
	this.statusText = statusText;
	this.icon	= "default";
	
	//methods
	this.hilite	= menuItemHilite;
	this.write	= menuItemWrite;
	
	// logic
	if (!this.statusText) {this.statusText = "oops"};
}

function menuItemHilite (hiLo)
{
	hiliteEntry (this.name, hiLo);
	if (hiLo == Hilite) {setStatus (this.statusText)}
	else {resetStatus()}
	return (true);
}

function menuItemWrite()
{
	var output = "<tr height=50><td class=\"link\"><A HREF=\"" + this.name + ".htm\" " + 
		"onMouseOver=\"mouseOver ('" + this.name + "')\" " +
		"onMouseOut=\"mouseOut ('" + this.name + "')\">" +
		"<IMG SRC=\"images/icons/"  + "default_icon.jpg\" WIDTH=50 HEIGHT=21 " +
		"ALT=\"" + this.name + "\" NAME=\"" + this.name + "\" BORDER=1>"+
		this.statusText + "</A></td></tr>";
//		alert (output);
	document.write (output);
}

function Menu ()
{
	//properties
	this.classId	= "Menu";
	this.items 	= new Array ();
	
	//methods
	this.addItem	= menuAddItem;
	this.getItem	= menuGetItemByName;
	this.size 	= menuLength;
	this.write	= menuWrite;
	// logic
}

function menuAddItem (item)
{
	this.items [this.size()] = item;
	return (this.size ());
}

function menuGetItemByName (name)
{
	for (i = 0; i < this.size (); i++)
	{
		if (this.items[i].name == name) {return this.items[i]}
	}
	if (DEBUG_LEVEL) {alert ("item '" + name + "' not found; check spelling in html")}
	return (false);
}

function menuLength ()
{
	return (this.items.length);
}

function menuWrite()
{
//alert ("menuWrite, size()=" + this.size());
	document.write ("<TABLE class=\"menuTable\"><tr>")
	for (i = 0; i < this.size (); i++)
	{
//	alert("yep");
		this.items[i].write();
	}
	document.write ("</tr></TABLE>")
}



// End object-Definition: Menu
/******************************************/

/******************************************/
// END Object-Definition-Section
/******************************************/

/******************************************/
// HTML-Interface
// the following functions get called from the corresponding HTML
/******************************************/

//use this in the html to write the menu
function writeMenu(pageName)
{
	if (Initialised == 0)
	{
		init(pageName);
	}
	navigation.write();
}


function writeHeader(pageName)
{
	if (pageName == "index") {pageName = "welcome stranger";}
	document.write("<TABLE class=\"headerTable\"><tr height=25><td/>"+
		"</tr>"+
		"<tr>"+
		"<td class=\"header\">"+
		"faith in the distance"+
		"</td></tr>"+
		"<tr><td class=\"subHeader\">" +
		pageName + "</td>" + 
		"</tr></TABLE>");
}

function writeMailToLink()
{
	document.write("<a class=\"linkBlack\" href=\"mailto:talkTo@faith-in-the-distance.net\">" +
		"contact faith in the distance");

}

function writeRightColumn()
{
	document.write("this adSpace is for rent<br><br> no pets, sorry");
}

function mouseOver (name)
{
	if (browserOK ())
	{
		menuItem = navigation.getItem (name);
		if (menuItem) {menuItem.hilite (Hilite)}
		return (true);
	}
	return (false);
}
function mouseOut (name)
{
	if (browserOK ())
	{
		menuItem = navigation.getItem (name);
		if (menuItem) {menuItem.hilite (Lolite)}
		return (true);
	}
	return (false);
}	


// Some low level functions	
function debug (object)
{
	alert (object)
}
function setStatus (statusText)
{
 //	Window.status = statusText;
 	if (isNetscape())
 	{
 // 		evaluate ("document.Main.StatusN.type='TEXT'");
 // 		StatusTextOld = document.Main.StatusN.abbr;
 // 		if (!statusText) {statusText = DefaultStatus}
//		document.Main.StatusN.value = statusText;
 //		alert (window.document.forms["Netscape"].elements[0].value = statusText);
 //		alert ("document.Status.innerText=" + statusText);
 //		window.document.forms["Main"].elements[0].value = statusText;
 //		alert (document.forms["Netscape"].elements);
 //		evaluate ("document.Status.innerText='" + statusText + "'")
  		StatusTextOld = window.status;
  		if (!statusText) {statusText = DefaultStatus}
 		window.status = statusText
 	}
 	else
 	{
  		StatusTextOld = document.all.Status.innerText;
  		if (!statusText) {statusText = DefaultStatus}
		document.all.Status.innerText = statusText;
 	}
 }
 
 function resetStatus ()
 {
 	setStatus (StatusTextOld)
 }
 
// ****************************************************************************
// browserOK(): OK: Netscape >= 3, andere >= 4
// ****************************************************************************
function browserOK() 
{
	if ((navigator.appName == 'Netscape' && parseFloat(navigator.appVersion) >= 3) ||
			(parseFloat(navigator.appVersion) >= 4))
	{
		return (true);
	}
	else
	{
		if (DEBUG_LEVEL) alert ("JavaScript aborted");
		return (false);
	}
}

function isNetscape ()
{
	return (navigator.appName == "Netscape") 
}

function hiliteEntry (objectName, hiLo) 
{
	var iconImage = Icon_lo.src;
	if ( browserOK () )
	{
		if (hiLo == Hilite) {iconImage = Icon_hi.src}
		return (evaluate (
			'document.' + objectName  + '.src ="' + iconImage + '"'));
	}
	else
	{
		return (false);
	}
}

function abortJavaScript ()
{
	if (DEBUG_LEVEL)
	{
		alert ("JavaScript aborted");	
	}
	return (false);
}

function init (windowName)
{
	DefaultStatus = "for navigation use the menu";
	//add all links except the one that took you here
//	if (windowName != "index") {navigation.addItem (new MenuItem('index', 'homepage'));}
//	if (windowName != "bio") {navigation.addItem (new MenuItem('bio', 'bio'));}
//	if (windowName != "band") {navigation.addItem (new MenuItem('band', 'band'));}
//	if (windowName != "music") {navigation.addItem (new MenuItem('music', 'music'));}
//	if (windowName != "gigs") {navigation.addItem (new MenuItem('gigs', 'gigs'));}
//	if (windowName != "buy cd") {navigation.addItem (new MenuItem('buy_cd', 'buy_cd'));}
//	if (windowName != "press") {navigation.addItem (new MenuItem('press', 'press'));}
//	if (windowName != "links") {navigation.addItem (new MenuItem('links', 'links'));}
//	if (windowName != "save the planet") {navigation.addItem (new MenuItem('save_the_planet', 'save_the_planet'));}
	navigation.addItem (new MenuItem('index', 'homepage'));
//	navigation.addItem (new MenuItem('bio', 'bio'));
	navigation.addItem (new MenuItem('band', 'band'));
	navigation.addItem (new MenuItem('music', 'music'));
	navigation.addItem (new MenuItem('gigs', 'gigs'));
	navigation.addItem (new MenuItem('buy_cd', 'buy_cd'));
	navigation.addItem (new MenuItem('press', 'press'));
	navigation.addItem (new MenuItem('links', 'links'));
	navigation.addItem (new MenuItem('save_the_planet', 'save_the_planet'));
	Initialised = 1;
	return (true);
}

function evaluate (command)
{
	if (DEBUG_LEVEL > 1){alert (command)}
	eval (command);
}





