document.write( '<BODY onLoad="writeMenus(); moveSparkle();" onResize="centerMenu(); if (isNS4) nsResizeHandler();">\n' );
document.write( '<LINK rel="stylesheet" href="/style.css" type="text/css">\n' );
document.write( '<DIV id="sparkle1" style="position: absolute; left: 0px;"><IMG name="spark1image" src="'+base+'images/sparkle1.gif"></DIV>' );
document.write( '<DIV id="sparkle2" style="position: absolute; left: 0px;"><IMG name="spark2image" src="'+base+'images/sparkle2.gif"></DIV>' );

var dw = document.body.clientWidth;
document.write( '<DIV id="bar" style="position: absolute; left: 0; top: 0;">' );
document.write( '<TABLE width='+(dw)+' height=28 cellspacing=0 cellpadding=0 background="'+base+'images/barBotLow.gif">' );
document.write( '<TR><TD width='+(dw-630-2*28)/2+'></TD>' );
document.write( '<TD width=28 background="'+base+'images/barBotOpen.gif"></TD>' );
document.write( '<TD width=630 background="'+base+'images/barBotHigh.gif"></TD>' );
document.write( '<TD width=28 background="'+base+'images/barBotClose.gif"></TD>' );
document.write( '<TD width='+(dw-630-2*28)/2+'>&nbsp;</TD></TR></TABLE></DIV>' );

document.write( '<DIV style="position: absolute; left:'+(dw/2-330)+'; top: 11;"><TABLE border=0 cellspacing=0 cellpadding=0 width=660 height=34>\n' );
document.write( '    <TR><TD background="'+base+'images/AsoBrainBar.jpg"></TD></TR>\n' );
document.write( '</TABLE></DIV>' );

var light = '#F0F0FF';
var dark = '#202070';
var black = '#000000';
var white = '#FFFFFF';

var isDOM = (document.getElementById ? true : false); 
var isIE4 = ((document.all && !isDOM) ? true : false);
var isNS4 = (document.layers ? true : false);

function getRef(id) 
{
	if (isDOM) return document.getElementById(id);
	if (isIE4) return document.all[id];
	if (isNS4) return document.layers[id];
}

function getSty(id) 
{
	return (isNS4 ? getRef(id) : getRef(id).style);
} 

with(document.body.style)
{
	scrollbarDarkShadowColor=black;
	scrollbarArrowColor=dark;
	scrollbarFaceColor=light;
	scrollbarShadowColor=black;
	scrollbarTrackColor=dark;
}

function moveSparkle()
{
	if ( !isDOM && !isNS4 && !isIE4 )
		return;

	sw = document.body.clientWidth;
	sh = document.body.clientHeight;

	x = Math.round( Math.random() * (sw-document.images["spark1image"].width) );
	y = Math.round( Math.random() * (sh-document.images["spark1image"].height) );
	getSty( "sparkle1" ).left = x;
	getSty( "sparkle1" ).top = y;
	
	x = Math.round( Math.random() * (sw-document.images["spark2image"].width) );
	y = Math.round( Math.random() * (sh-document.images["spark2image"].height) );
	getSty( "sparkle2" ).left = x;
	getSty( "sparkle2" ).top = y;

	window.setTimeout( "moveSparkle()" , 1350 );
}

<!-- Original:  Angus Turnbull -->
<!-- Web Site:  http://gusnz.cjb.net -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
// Hide timeout.
var popTimer = 0;
// Array showing highlighted menu items.
var litNow = new Array();

function popOver(menuNum, itemNum) 
{
	clearTimeout(popTimer);
	hideAllBut(menuNum);
	litNow = getTree(menuNum, itemNum);
	changeCol(litNow, true);
	targetNum = menu[menuNum][itemNum].target;
	if (targetNum > 0) 
	{
		thisX = parseInt(menu[menuNum][0].ref.left) + parseInt(menu[menuNum][itemNum].ref.left);
		thisY = parseInt(menu[menuNum][0].ref.top) + parseInt(menu[menuNum][itemNum].ref.top);
		with (menu[targetNum][0].ref) 
		{
			left = parseInt(thisX + menu[targetNum][0].x);
			top = parseInt(thisY + menu[targetNum][0].y);
			visibility = 'visible';
	      }
	}
}

function popOut(menuNum, itemNum) 
{
	if ((menuNum == 0) && !menu[menuNum][itemNum].target)
		hideAllBut(0)
	else
		popTimer = setTimeout('hideAllBut(0)', 500);
}

function getTree(menuNum, itemNum) 
{
	// Array index is the menu number. The contents are null (if that menu is not a parent)
	// or the item number in that menu that is an ancestor (to light it up).
	itemArray = new Array(menu.length);

	while(1) 
	{
		itemArray[menuNum] = itemNum;
		// If we've reached the top of the hierarchy, return.
		if (menuNum == 0) 
			return itemArray;
		itemNum = menu[menuNum][0].parentItem;
		menuNum = menu[menuNum][0].parentMenu;
	}
}

// Pass an array and a boolean to specify colour change, true = over colour.
function changeCol(changeArray, isOver) 
{
	for (menuCount = 0; menuCount < changeArray.length; menuCount++) 
	{
		if (changeArray[menuCount]) 
		{
			backCol = isOver ? menu[menuCount][0].overBack : menu[menuCount][0].idleBack;
			frontCol = isOver ? menu[menuCount][0].overFront : menu[menuCount][0].idleFront;
			// Change the colours of the div/layer background.
			with (menu[menuCount][changeArray[menuCount]].ref) 
			{
				if (isNS4) 
					bgColor = backCol;
				else 
					backgroundColor = backCol;
		      }
			with (menu[menuCount][changeArray[menuCount]].subDiv)
			{
				color = frontCol;
			}
      	}
	}
}

function hideAllBut(menuNum) 
{
	var keepMenus = getTree(menuNum, 1);
	for (count = 0; count < menu.length; count++)
	{
		if (!keepMenus[count] && menu[count][0].ref )
			menu[count][0].ref.visibility = 'hidden';	
	}
	changeCol(litNow, false);
}

// *** MENU CONSTRUCTION FUNCTIONS ***

function Menu(isVert, popInd, x, y, width, idleBack , idleFront , overBack , overFront , firstBorderClass , borderClass , lastBorderClass , textClass ) 
{
	// True or false - a vertical menu?
	this.isVert = isVert;
	// The popout indicator used (if any) for this menu.
	this.popInd = popInd
	// Position and size settings.
	this.x = x;
	this.y = y;
	this.width = width;
	// Colours of menu and items.
	this.idleBack = idleBack;
	this.idleFront = idleFront;
	this.overBack = overBack;
	this.overFront = overFront;
	// The stylesheet class used for item borders and the text within items.
	this.firstBorderClass = firstBorderClass;
	this.borderClass = borderClass;
	this.lastBorderClass = lastBorderClass;
	this.textClass = textClass;
	// Parent menu and item numbers, indexed later.
	this.parentMenu = null;
	this.parentItem = null;
	// Reference to the object's style properties (set later).
	this.ref = null;
	this.subDiv = null;

	this.textStyle = null;
}

function Item(text, href, frame, length, spacing, target ) 
{
	this.text = text;
	this.href = href;
	this.frame = frame;
	this.length = length;
	this.spacing = spacing;
	this.target = target;
	// Reference to the object's style properties (set later).
	this.ref = null;
	this.subDiv = null;
}

function getDivStyleDOM( x , y , w , h , back )
{
	var style = 'style="';
	style += ' position: absolute;';
	style += ' left: ' + x + ';';
	style += ' top: ' + y + ';';
	style += ' width: ' + w + ';';
	style += ' height: ' + h + ';';
	style += ' visibility: inherit;';
	if ( back )
		style += ' background: ' + back + ';';
	style += '" ';
	return style;
}

function writeMenus() 
{
	if (!isDOM && !isIE4 && !isNS4) 
		return;

	for (currMenu = 0; currMenu < menu.length; currMenu++) 
	with (menu[currMenu][0]) 
	{
		// Variable for holding HTML for items and positions of next item.
		var str = '';
		var subStr = '';
		var itemX = 0;
		var itemY = 0;
	
		// Remember, items start from 1 in the array (0 is menu object itself, above).
		// Also use properties of each item nested in the other with() for construction.
		for (currItem = 1; currItem < menu[currMenu].length; currItem++) with (menu[currMenu][currItem]) 
		{
			var itemID = 'menu' + currMenu + 'item' + currItem;
	
			// The width and height of the menu item - dependent on orientation!
			var w = (isVert ? width : length);
			var h = (isVert ? length : width);
	
			// Create a div or layer text string with appropriate styles/properties.
			// Thanks to Paul Maden (www.paulmaden.com) for helping debug this in IE4, apparently
			// the width must be a miniumum of 3 for it to work in that browser.
			if (isDOM || isIE4) 
			{
				str += '<DIV id="' + itemID + '" ' + getDivStyleDOM( itemX , itemY , w , h , idleBack );
			}
			if (isNS4) 
			{
				str += '<LAYER id="' + itemID + '" left="' + itemX + '" top="' + itemY + '" width="' +  w + '" height="' + h + '" visibility="inherit" text-align: center;';
				if (idleBack) 
					str += 'bgcolor="' + idleBack + '" ';
			}
			if ( borderClass && currItem == 1 )
				str += 'class="' + firstBorderClass + '" ';
			else if (borderClass && currItem < menu[currMenu].length - 1 ) 
				str += 'class="' + borderClass + '" ';
			else if ( borderClass )
				str += 'class="' + lastBorderClass + '" ';
	
			// Add mouseover handlers and finish div/layer.
			str += 'onMouseOver="popOver(' + currMenu + ',' + currItem + ')" onMouseOut="popOut(' + currMenu + ',' + currItem + ')">';
	
			// Add contents of item (default: table with link inside).
			// In IE/NS6+, add padding if there's a border to emulate NS4's layer padding.
			// If a target frame is specified, also add that to the <A> tag.
	
			str += '<TABLE';
			str += ' width="' + w + '"';
			str += ' border="0" cellspacing="0"';
			str += ' cellpadding="' + (!isNS4 && borderClass ? 3 : 0) + '"';
			str += '>';

			str += '<TR>';

			str += '<TD';
			str += ' valign=center';
			str += ' align="'+(currMenu==0?'center':'left')+'"';
			str += ' align=center';
			str += ' height="' + h + '"';
			str += '>';

			str += '<A';
			str += ' class="' + textClass + '"';
			str += ' href="' + href + '"';
			str += frame ? ' target="' + frame + '"' : '';
			str += '>';

			tmpStr = '';
			tmpStr += '<DIV id='+itemID+'subDiv style="color: ' + idleFront + ';">';
			tmpStr += '&nbsp;' + text;
			tmpStr += '</DIV>';
			str += tmpStr;
			subStr += tmpStr;

			str += '</A></TD>';

			if (target > 0) 
			{
				// Set target's parents to this menu item.
				menu[target][0].parentMenu = currMenu;
				menu[target][0].parentItem = currItem;
	
				// Add a popout indicator.
				if (popInd) 
					str += '<TD class="' + textClass + '" align="right">' + popInd + '</TD>';
			}

			str += '</TR></TABLE>' + (isNS4 ? '</LAYER>' : '</DIV>');
			if (isVert) 
				itemY += length + spacing;
			else 
				itemX += length + spacing;
		}

		if (isDOM) 
		{
			var newDiv = document.createElement('div');
			document.getElementsByTagName('body').item(0).appendChild(newDiv);
			newDiv.innerHTML = str;
			ref = newDiv.style;
			ref.position = 'absolute';
			ref.visibility = 'hidden';
		}

		// Insert a div tag to the end of the BODY with menu HTML in place for IE4.
		if (isIE4) 
		{
			document.body.insertAdjacentHTML('beforeEnd', '<div id="menu' + currMenu + 'div" ' + 'style="position: absolute; visibility: hidden">' + str + '</div>');
			ref = getSty('menu' + currMenu + 'div');
		}
	
		// In NS4, create a reference to a new layer and write the items to it.
		if (isNS4) 
		{
			ref = new Layer(0);
			ref.document.write(str);
			ref.document.close();
		}

		for (currItem = 1; currItem < menu[currMenu].length; currItem++) 
		{
			itemName = 'menu' + currMenu + 'item' + currItem;
			if (isDOM || isIE4) 
			{
				menu[currMenu][currItem].ref = getSty(itemName);
				menu[currMenu][currItem].subDiv = getSty(itemName+'subDiv');
			}
			if (isNS4) 
				menu[currMenu][currItem].ref = ref.document[itemName];
		}
	}
	with(menu[0][0]) 
	{
		ref.left = x;
		ref.top = y;
		ref.visibility = 'visible';
	}
}

// Syntaxes: *** START EDITING HERE, READ THIS SECTION CAREFULLY! ***
//
// menu[menuNumber][0] = new Menu(Vertical menu? (true/false), 'popout indicator', left, top,
// width, 'mouseover colour', 'background colour', 'border stylesheet', 'text stylesheet');
//
// Left and Top are measured on-the-fly relative to the top-left corner of its trigger, or
// for the root menu, the top-left corner of the page.
//
// menu[menuNumber][itemNumber] = new Item('Text', 'URL', 'target frame', length of menu item,
//  additional spacing to next menu item, number of target menu to popout);
//
// If no target menu (popout) is desired, set it to 0. Likewise, if your site does not use
// frames, pass an empty string as a frame target.
//
// Something that needs explaining - the Vertical Menu setup. You can see most menus below
// are 'true', that is they are vertical, except for the first root menu. The 'length' and
// 'width' of an item depends on its orientation -- length is how long the item runs for in
// the direction of the menu, and width is the lateral dimension of the menu. Just look at
// the examples and tweak the numbers, they'll make sense eventually :).

var menu = new Array();

var subY = 22;
var menuWidth = 150;
var text = "itemText";
var firstBorder = "firstItemBorder";
var border = "itemBorder";
var lastBorder = "lastItemBorder";

var mid = document.body.clientWidth/2 - 300;

var popOldWidth = window.innerWidth;
nsResizeHandler = new Function('if (popOldWidth != window.innerWidth) location.reload()');
if (isNS4) 
	document.captureEvents(Event.CLICK);
document.onclick = clickHandle;

function clickHandle(evt)
{
	if (isNS4) 
		document.routeEvent(evt);
	hideAllBut(0);
}

function moveRoot()
{
	with(menu[0][0].ref) 
	{
		left = ((parseInt(left) < 100) ? 100 : 5);
	}
}
function centerMenu()
{
	//menu[0][0].ref.left = document.body.clientWidth/2 - 300;
	window.location.reload();
}
//  End -->

menu[0] = new Array();
menu[0][0] = new Menu(false, '', mid , 17, 22, "" , white , light , black , "mainBorder" , "mainBorder" , "mainBorder" , "mainMenu" );
menu[0][1] = new Item('General', base + 'main2.html', '', menuWidth, 0, 1);
menu[0][2] = new Item('Projects', '#', '', menuWidth, 0, 2);
menu[0][3] = new Item('Galleries' , '#' , '' , menuWidth , 0 , 4);
menu[0][4] = new Item("Nostalgia", '#','',menuWidth,0,3);

// General Menu
menu[1] = new Array();
menu[1][0] = new Menu(true, '', 0, 24, menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );
menu[1][1] = new Item("Home", base + 'main2.html', '', subY, 0, 0);
menu[1][2] = new Item("Foundation", '/foundation/main.html', '', subY, 0, 0);
menu[1][3] = new Item("AsoBrain Games", 'http://games.asobrain.com', '_parent', subY, 0, 0);
menu[1][4] = new Item("Aso's pages", base + 'aso/main.html', '', subY, 0, 0);
menu[1][5] = new Item("Brain's pages", base + 'brain/main.html', '', subY, 0, 0);
//menu[1][6] = new Item("Guestbook", base + 'guestbook/view.php','',subY,0,0);

// Projects Menu
menu[2] = new Array();
menu[2][0] = new Menu(true, '', 0, 24, menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );
menu[2][1] = new Item('Sir', base + 'projects/sir.html', '', subY, 0, 0);
menu[2][2] = new Item('Kiosk Toolkit', base + 'projects/tag.html', '', subY, 0, 0);
menu[2][3] = new Item('AsoBrain 3D API', base + 'projects/ab3d.html', '', subY , 0, 0);
menu[2][4] = new Item('AB Components', base + 'projects/abc.html', '', subY , 0, 0);
menu[2][5] = new Item('Soda', base + 'projects/soda.html', '', subY , 0, 0);
menu[2][6] = new Item('Xplorers', 'http://games.asobrain.com', '_parent', subY , 0, 0);
menu[2][7] = new Item('Toulouse', 'http://games.asobrain.com', '_parent', subY , 0, 0);
menu[2][8] = new Item('Match!', 'http://games.asobrain.com', '_parent', subY , 0, 0);
menu[2][9] = new Item('RoadBlock', 'http://games.asobrain.com', '_parent', subY , 0, 0);
menu[2][10] = new Item("Aso Java projects" , base + 'aso/javaintro.html' , '' , subY, 0 , 5 );
menu[2][11] = new Item("Brain projects" , '#' , '' , subY , 0 , 6 );

// Nostalgia
menu[3] = new Array();
menu[3][0] = new Menu(true, '', 0 , 24 , menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );
menu[3][1] = new Item('Internship USA', base + 'internship/index.html', '_parent', subY , 0, 0);
menu[3][2] = new Item('ABCDEFG', base + 'abcdefg/abcdefg.html', '_parent', subY , 0, 0);
menu[3][3] = new Item('ABCDEFG II', base + 'abcdefg/abcdefg2.html', '_parent', subY , 0, 0);
menu[3][4] = new Item('Aso','#','',subY,0,7 );
menu[3][5] = new Item('Brain','#','',subY,0,8 );

// Galleries Menu
menu[4] = new Array();
menu[4][0] = new Menu(true, '', 0, 24, menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );
menu[4][1] = new Item('Video', base + 'gallery/video.html', '', subY, 0, 0);
menu[4][2] = new Item('Internship USA', base + 'gallery/internship.html?id=0;sub=Internship', '', subY , 0 , 0 );
menu[4][3] = new Item('Graduation', base + 'gallery/graduation.html', '', subY, 0, 0);
menu[4][4] = new Item('Computer Chair', base + 'gallery/chair.html', '', subY , 0, 0);
menu[4][5] = new Item('Miscellaneous', base + 'gallery/misc.html', '', subY , 0, 0);
menu[4][6] = new Item('Aso', '#', '', subY , 0, 9);
menu[4][7] = new Item('Brain', '#', '', subY , 0, 10);

// Aso Projects
menu[5] = new Array();
menu[5][0] = new Menu(true, '', menuWidth+5, 0, menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );
menu[5][1] = new Item('Introduction', base + 'aso/javaintro.html', '', subY, 0, 0);
menu[5][2] = new Item('AsoFader Applet', base + 'aso/asofader/index.html', '', subY, 0, 0);
menu[5][3] = new Item('Cricket/Tactics', base + 'aso/cricket/index.html', '', subY, 0, 0);
menu[5][4] = new Item('Cover Creator', base + 'aso/cover.html', '', subY , 0, 0);
menu[5][5] = new Item('AsoSort', base + 'aso/asosort/index.html', '', subY , 0, 0);
menu[5][6] = new Item('AsoMerge', base + 'aso/asomerge.html', '', subY , 0, 0);
menu[5][7] = new Item('AsoSearch', base + 'aso/search.html', '', subY , 0, 0);
menu[5][8] = new Item('Aso Pascal', base + 'aso/pascal/index.html', '', subY , 0, 0);
menu[5][9] = new Item('Aso Stamboom', 'http://stamboom.asobrain.com', '_parent', subY , 0, 0);

menu[6] = new Array();
menu[6][0] = new Menu(true, '', menuWidth+5, 0, menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );

menu[7] = new Array();
menu[7][0] = new Menu(true, '', menuWidth+5, 0, menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );
menu[7][1] = new Item('Computer history', base + 'aso/comphist.html', '', subY, 0, 0);
//menu[7][2] = new Item('Friends Search', base + 'aso/friends/search.php', '', subY, 0, 0);

menu[8] = new Array();
menu[8][0] = new Menu(true, '', menuWidth+5, 0, menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );

menu[9] = new Array();
menu[9][0] = new Menu(true, '', menuWidth+5, 0, menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );
menu[9][1] = new Item("3DStudio", base + 'aso/gallery/render.html', '', subY, 0, 0);
menu[9][2] = new Item("Trance Covers", base + 'aso/gallery/covers.html', '', subY, 0, 0);
menu[9][3] = new Item('Timeline', base + 'aso/gallery/timeline.html', '', subY , 0, 0);
menu[9][4] = new Item('Video', base + 'aso/gallery/video.html', '', subY , 0, 0);
menu[9][5] = new Item('Miscellaneous', base + 'aso/gallery/misc.html', '', subY , 0, 0);

menu[10] = new Array();
menu[10][0] = new Menu(true, '', menuWidth+5, 0, menuWidth , light , black , dark , white , firstBorder , border , lastBorder , text );
menu[10][1] = new Item('Timeline', base + 'brain/gallery/timeline.html', '', subY , 0, 0);
