var d = document;
var params = d.location.search;
var sid = "";
var locmenustay = false;
var _url = d.URL;

function imgChange(iPath, iName) {
	d[iName].src=iPath;
}
function getParamValue(v) {
	var p_a = params.substring(params.indexOf("?")+1, params.length).split("&");
	for (var i=0; i<p_a.length; i++){
		var s_a = p_a[i].split("=");
		if(s_a[0] == v){
			return s_a[1];
			break; 
		}
	}
}
function launchPopUp(URL,ID,WIDTH,HEIGHT) {
	winObject = window.open(URL,ID,'width='+WIDTH+',height='+HEIGHT+',resizable=0,scrollbars=0,menubar=0,toolbar=0,location=0,directories=0,status=0');
	var clientWidth = screen.availWidth;
	var clientHeight = screen.availHeight;
	var xPos = (clientWidth - WIDTH)/2;
	var yPos = (clientHeight - HEIGHT)/2;
	winObject.moveTo(xPos,yPos);
}
function preferredDate(f){
	var uDate = new Date();
	uDate.setFullYear(f.event_date_y.value,f.event_date_m.value-1,f.event_date_d.value);
	var vDate = new Date();
	if(uDate<=vDate){
		return false;
	}else{
		return true;
	}
}
var numericExpression = /^[0-9]+$/;
var emailExpression = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
function validateform(f) {
	var validform_arr = new Array([f.event_type.value, "Party/event type", "select"], [f.attendees_planned.value, "Estimated number of guests", "number"], [f.event_date_m.value, "Preferred date (Month)", "select"], [f.event_date_d.value, "Preferred date (Day)", "select"], [f.event_date_y.value, "Preferred date (Year)", "select"], [f.start_time.value, "Preferred time", "select"], [f.first_name.value, "First Name", "text"], [f.last_name.value, "Last Name", "text"], [f.title.value, "Job Title", "text"], [f.phone.value, "Phone", "number"], [f.referred_by_other.value, "How did you hear about us", "select"]);
	if (preferredDate(f)) {
		if (emailExpression.test(f.email.value)) {
			var missing_arr = new Array();
			var numeric_arr = new Array();
			for (var i=0; i<validform_arr.length; i++) {
				if(validform_arr[i][0] == ""){
					missing_arr.push(validform_arr[i][1]);
				}
				if(validform_arr[i][2] == "number" && !validform_arr[i][0].match(numericExpression)){
					numeric_arr.push(validform_arr[i][1]);
				}
			}
			var errString = "";
			if (missing_arr.length > 0) {
				errString += "Please enter the following:\n\n";
				for (var j=0; j<missing_arr.length; j++) {
					errString += "  - "+missing_arr[j]+"\n"
				}
				alert(errString);
				return false;
			} else if (numeric_arr.length > 0) {
				errString += "Following only accepts numbers:\n\n";
				for (var k=0; k<numeric_arr.length; k++) {
					errString += "  - "+numeric_arr[k]+"\n"
				}
				if(f.fax.value.length > 0 && !f.fax.value.match(numericExpression)){
					errString += "  - Fax\n"
				}
				alert(errString);
				return false;
			} else {
				return true;
			}
		} else {
			alert("Please enter a valid email address.");
			return false;
		}
	} else {
		alert("Preferred date must be in the future.");
		return false;
	}
}
function validateemail(f) {
	if (emailExpression.test(f.email.value)) {
		if(f.name == "signup" && f.zip.value.length > 0 && !f.zip.value.match(numericExpression)){
			alert("Following only accepts numbers:\n\n  - Zip")
			return false;
		} else{
			return true;
		}
	} else {
		alert("Please enter a valid email address.");
		return false;
	}
}
function showCaption(_C, _X, _Y){
	var baseObj = (d.layers)?d['content']:d.all?d.all['content']:d.getElementById('content');
	var lyrObj = (d.layers)?d['mapCaption']:d.all?d.all['mapCaption'].style:d.getElementById('mapCaption').style;
	imgChange('images/topnavsubs/'+_C+'-on.gif', 'captionImg');
	lyrObj.left = (baseObj.offsetLeft+_X)+"px";
	lyrObj.top = (baseObj.offsetTop+_Y)+"px";
	lyrObj.visibility = "visible";
}
function hideCaption(){
	imgChange('images/common/spacer.gif', 'captionImg');
	var lyrObj = (d.layers)?d['mapCaption']:d.all?d.all['mapCaption'].style:d.getElementById('mapCaption').style;
	lyrObj.visibility = "hidden";
}


	/*** LOCATIONS LEFT MENU ELEMENTS ***/
	var treemenu_arr = new Array();
	treemenu_arr[1] = new Array(0);
	treemenu_arr[2] = new Array(1, 'location_book.php','party_events.php','party_clients.php','party_kids.php','party_adult.php','party_barmitzvah.php','party_contact.php');
	treemenu_arr[3] = new Array(0);
	treemenu_arr[4] = new Array(1, 'location_menu.php');
	treemenu_arr[5] = new Array(1, 'location_tour.php','tour_photos.php','tour_video.php','tour_floor.php');
	treemenu_arr[6] = new Array(0);
	
	var menuimg_arr = new Array(
	['location_info.php',			'generalinfo',			'loc1_0',	'',		''		]
	,['ignore-location_book.php',		'planaparty',			'loc2_0',	'',		''		]
	,['location_book.php',			'booknow',			'loc2_1',	'planaparty',	'loc2_0'	]
	,['party_events.php',			'corporateevents',		'loc2_2',	'planaparty',	'loc2_0'	]
	,['party_clients.php',			'clients',			'loc2_3',	'planaparty',	'loc2_0'	]
	,['party_kids.php',			'kidsparties',			'loc2_4',	'planaparty',	'loc2_0'	]
	,['party_adult.php',			'adultparties',			'loc2_5',	'planaparty',	'loc2_0'	]
	,['party_barmitzvah.php',		'barmitzvah',			'loc2_6',	'planaparty',	'loc2_0'	]
	,['party_contact.php',			'contactcoordinator',		'loc2_7',	'planaparty',	'loc2_0'	]
	,['location_promo.php',			'promotions',			'loc3_0',	'',		''		]
	,['location_menu.php',			'menu',				'loc4_0',	'',		''		]
	,['location_tour.php',			'photostours',			'loc5_0',	'',		''		]
	,['tour_photos.php',			'photogallery',			'loc5_1',	'photostours',	'loc5_0'	]
	,['tour_video.php',			'videotour',			'loc5_2',	'photostours',	'loc5_0'	]
	,['tour_floor.php',			'floorplan',			'loc5_3',	'photostours',	'loc5_0'	]
	,['location_directions.php',		'directions',			'loc6_0',	'',		'']
	);
	/*
	,['','restaurant']
	,['','catering']
	,['','holiday']
	*/

	var treefunmenu_arr = new Array();
	treefunmenu_arr[1] = new Array(0, 'funstuff.php','funvideo.php','funphotos.php');
	treefunmenu_arr[2] = new Array(1, 'fun_pinny.php','funpinnyvideo.php','funpinnyphotos.php');
	treefunmenu_arr[3] = new Array(0);
	treefunmenu_arr[4] = new Array(0);
	treefunmenu_arr[5] = new Array(0);
	
	var menufunimg_arr = new Array(
	['funstuff.php',			'funstuff',	'fun1_0',	'',		''		],
	['funvideo.php',			'video',	'fun1_1',	'funstuff',		'fun1_0'],
	['funphotos.php',			'photos',	'fun1_2',	'funstuff',		'fun1_0'],
	['fun_pinny.php',			'pinny',	'fun2_0',	'',		''		],
	['funpinnyvideo.php',		'video',	'fun2_1',	'pinny',		'fun2_0'		],
	['funpinnyphotos.php',		'photos',	'fun2_2',	'pinny',		'fun2_0'		],
	['http://bowlmorstrike.wordpress.com/','blog',	'fun3_0','',''		],
	['fun_contests.php',		'contests',	'fun4_0',	'',		''		],
	['fun_free.php',			'stuff',	'fun5_0',	'',		''		]);



function expandCheck(_arr) {
	if(_arr[0] == 1){
		var expand = false;
		for (var i=1; i<_arr.length; i++) {
			if(_url.indexOf(_arr[i]) > -1){
				expand = true;
				break;
			}
		}
		return expand;
	}else{
		return false;
	}
}

var selectimg = "";
var selectimgname = "";
var selectimgindex;
var overrideimg = "";
for (var mi=0; mi<menuimg_arr.length; mi++) {
	if(_url.indexOf(menuimg_arr[mi][0]) > -1){
		selectimg = menuimg_arr[mi][1];
		selectimgname = menuimg_arr[mi][2];
		selectimgindex = mi;
		break;
	}
}

function imgChangeChk(_img,_name, _add) {
	if(_img==selectimg || _add=='override' || _img==overrideimg) {
		imgChange('images/locnav/'+_img+'-on.gif',_name);
	}else{
		imgChange('images/locnav/'+_img+'.gif',_name);
	}
}
function initTreeMenu(){
	//ddtreemenu.createTree(treeid, enablepersist, opt_persist_in_days (default is 1))
	for (var i=1; i<treemenu_arr.length; i++) {
		if(expandCheck(treemenu_arr[i])){
			var treeMenuId = 'treemenusub'+i;
			var treeMenuObj = (d.layers)?d[treeMenuId]:d.all?d.all[treeMenuId]:d.getElementById(treeMenuId);
			treeMenuObj.setAttribute("rel", "open");
			break;
		}
	}
	ddtreemenu.createTree("treemenu1", false);
}
function highlightSelected(){
	if(selectimg != ""){
		imgChangeChk(selectimg,selectimgname);
		if(menuimg_arr[selectimgindex][3] != ""){
			overrideimg = menuimg_arr[selectimgindex][3]
			imgChangeChk(menuimg_arr[selectimgindex][3],menuimg_arr[selectimgindex][4], 'override');
		}
	}
}

/*** END LOCATIONS LEFT MENU ELEMENTS ***/

AC_FL_RunContent = 0;
DetectFlashVer = 0;
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 8;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Revision of Flash required
var requiredRevision = 24;
// -----------------------------------------------------------------------------

function writeFL(_swf, _w, _h, _flvars){
	if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
		alert("This page requires AC_RunActiveContent.js.");
	} else {
		var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
		if(hasRightVersion) {  // if we've detected an acceptable version
			// embed the flash movie
			AC_FL_RunContent(
				'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,24,0',
				'width', _w,
				'height', _h,
				'src', _swf,
				'quality', 'high',
				'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
				'align', 'middle',
				'play', 'true',
				'loop', 'true',
				'scale', 'showall',
				'wmode', 'window',
				'devicefont', 'false',
				'id', _swf,
				'bgcolor', '#1a1a1a',
				'name', 'flashmovie',
				'menu', 'false',
				'allowScriptAccess','sameDomain',
				'allowFullScreen','false',
				'movie', _swf,
				'flashvars', _flvars,
				'salign', ''
				); //end AC code
		} else {  // flash is too old or we can't detect the plugin
			var alternateContent = 'Alternate HTML content should be placed here.'
				+ 'This content requires the Adobe Flash Player.'
				+ '<a href=http://www.macromedia.com/go/getflash/>Get Flash</a>';
			document.write(alternateContent);  // insert non-flash content
		}
	}
}


// -----------------------------------------------------------------------------
//** All Levels Navigational Menu- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com
//** Script Download/ instructions page: http://www.dynamicdrive.com/dynamicindex1/ddlevelsmenu/
//** Usage Terms: http://www.dynamicdrive.com/notice.htm

//** July 7th, 08'- Creation Date

//** July 16th, 08'- Updated to v 1.3:
	//1) Adds "Side Bar" orientation option. 
	//2) Drop Down Menus now auto adjust their positioning if too close to either right or bottom window edges.
	//3) Enhanced IFRAME shim "coverage" on the page.

//** July 19th, 08'- Updated to v 1.31: Drop down menu now positions at top of window edge if there's neither room downwards or upwards to settle.
//** Aug 13th, 08'- v1.32: Moved "rel" attribute from menu's <li> elements to inner <a>, for validation reasons

//** Sept 10th, 08'- Updated to v 1.4:
	//1) Added optional "sliding" animation when sub menus are revealed.
	//2) Arrow images now dynamically positioned, instead of relying on CSS's "right" property

var ddlevelsmenu={

hideinterval: 200, //delay in milliseconds before sub menu(s) disappears onmouseout.
revealanimate: true, //enable sliding animation when revealing sub menus? (true/false)
httpsiframesrc: "blank.htm", //If menu is run on a secure (https) page, the IFRAME shim feature used by the script should point to an *blank* page *within* the secure area to prevent an IE security prompt. Specify full URL to that page on your server (leave as is if not applicable).

///No need to edit beyond here////////////////////

topmenuids: [], //array containing ids of all the primary menus on the page
topitems: {}, //object array containing all top menu item links
subuls: {}, //object array containing all ULs
topitemsindex: -1,
ulindex: -1,
hidetimers: {}, //object array timer
shimadded: false,
isff3orabove: /Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent) && RegExp.$1>=3, //detect FF3 or above

getoffset:function(what, offsettype){
	return (what.offsetParent)? what[offsettype]+this.getoffset(what.offsetParent, offsettype) : what[offsettype]
},

getoffsetof:function(el){
	el._offsets={left:this.getoffset(el, "offsetLeft"), top:this.getoffset(el, "offsetTop")}
},

getwindowsize:function(){
	this.docwidth=window.innerWidth? window.innerWidth-10 : this.standardbody.clientWidth-10
	this.docheight=window.innerHeight? window.innerHeight-15 : this.standardbody.clientHeight-18
},

gettopitemsdimensions:function(){
	for (var m=0; m<this.topmenuids.length; m++){
		var topmenuid=this.topmenuids[m]
		for (var i=0; i<this.topitems[topmenuid].length; i++){
			var header=this.topitems[topmenuid][i]
			var submenu=document.getElementById(header.getAttribute('rel'))
			header._dimensions={w:header.offsetWidth, h:header.offsetHeight, submenuw:submenu.offsetWidth, submenuh:submenu.offsetHeight}
		}
	}
},

isContained:function(m, e){
	var e=window.event || e
	var c=e.relatedTarget || ((e.type=="mouseover")? e.fromElement : e.toElement)
	while (c && c!=m)try {c=c.parentNode} catch(e){c=m}
	if (c==m)
		return true
	else
		return false
},

addpointer:function(target, imgclass, imginfo){
	var pointer=document.createElement("img")
	pointer.src=imginfo[0]
	pointer.style.width=imginfo[1]+"px"
	pointer.style.height=imginfo[2]+"px"
	pointer.style.left=target.offsetWidth-imginfo[2]-2+"px"
	pointer.className=imgclass
	target.appendChild(pointer)
},

css:function(el, targetclass, action){
	var needle=new RegExp("(^|\\s+)"+targetclass+"($|\\s+)", "ig")
	if (action=="check")
		return needle.test(el.className)
	else if (action=="remove")
		el.className=el.className.replace(needle, "")
	else if (action=="add" && !needle.test(el.className))
		el.className+=" "+targetclass
},

addshimmy:function(target){
	var shim=(!window.opera)? document.createElement("iframe") : document.createElement("div") //Opera 9.24 doesnt seem to support transparent IFRAMEs
	shim.className="ddiframeshim"
	shim.setAttribute("src", location.protocol=="https:"? this.httpsiframesrc : "about:blank")
	shim.setAttribute("frameborder", "0")
	target.appendChild(shim)
	try{
		//shim.style.filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'
	}
	catch(e){}
	return shim
},

positionshim:function(header, submenu, dir, scrollX, scrollY){
	if (header._istoplevel){
		var scrollY=window.pageYOffset? window.pageYOffset : this.standardbody.scrollTop
		var topgap=header._offsets.top-scrollY
		var bottomgap=scrollY+this.docheight-header._offsets.top-header._dimensions.h
		if (topgap>0){
			//this.shimmy.topshim.style.left=scrollX+"px"
			//this.shimmy.topshim.style.top=scrollY+"px"
			//this.shimmy.topshim.style.width="99%"
			//this.shimmy.topshim.style.height=topgap+"px" //distance from top window edge to top of menu item
		}
		if (bottomgap>0){
			//this.shimmy.bottomshim.style.left=scrollX+"px"
			//this.shimmy.bottomshim.style.top=header._offsets.top + header._dimensions.h +"px"
			//this.shimmy.bottomshim.style.width="99%"
			//this.shimmy.bottomshim.style.height=bottomgap+"px" //distance from bottom of menu item to bottom window edge
		}
	}
},

hideshim:function(){
	//this.shimmy.topshim.style.width=this.shimmy.bottomshim.style.width=0
	//this.shimmy.topshim.style.height=this.shimmy.bottomshim.style.height=0
},


buildmenu:function(mainmenuid, header, submenu, submenupos, istoplevel, dir){
	header._master=mainmenuid //Indicate which top menu this header is associated with
	header._pos=submenupos //Indicate pos of sub menu this header is associated with
	header._istoplevel=istoplevel
	if (istoplevel){
		this.addEvent(header, function(e){
		ddlevelsmenu.hidemenu(ddlevelsmenu.subuls[this._master][parseInt(this._pos)])
		}, "click")
	}
	this.subuls[mainmenuid][submenupos]=submenu
	header._dimensions={w:header.offsetWidth, h:header.offsetHeight, submenuw:submenu.offsetWidth, submenuh:submenu.offsetHeight}
	this.getoffsetof(header)
	submenu.style.left=0
	submenu.style.top=0
	submenu.style.visibility="hidden"
	this.addEvent(header, function(e){ //mouseover event
		if (!ddlevelsmenu.isContained(this, e)){
			if (typeof ddlevelsmenu.hidetimers[this._master][parseInt(this._pos)]!="undefined")
				clearTimeout(ddlevelsmenu.hidetimers[this._master][parseInt(this._pos)])
			if (this._istoplevel)
				ddlevelsmenu.css(this, "selected", "add")
			var submenu=ddlevelsmenu.subuls[this._master][parseInt(this._pos)]
			ddlevelsmenu.getoffsetof(header)
			var scrollX=window.pageXOffset? window.pageXOffset : ddlevelsmenu.standardbody.scrollLeft
			var scrollY=window.pageYOffset? window.pageYOffset : ddlevelsmenu.standardbody.scrollTop
			var submenurightedge=this._offsets.left + this._dimensions.submenuw + (this._istoplevel && dir=="topbar"? 0 : this._dimensions.w)
			var submenubottomedge=this._offsets.top + this._dimensions.submenuh
			//Sub menu starting left position
			var menuleft=(this._istoplevel? this._offsets.left + (dir=="sidebar"? this._dimensions.w : 0) : this._dimensions.w)
			if (submenurightedge-scrollX>ddlevelsmenu.docwidth){
				menuleft+= -this._dimensions.submenuw + (this._istoplevel && dir=="topbar" ? this._dimensions.w : -this._dimensions.w)
			}
			submenu.style.left=menuleft+"px"
			//Sub menu starting top position
			var menutop=(this._istoplevel? this._offsets.top + (dir=="sidebar"? 0 : this._dimensions.h) : this.offsetTop)
			if (submenubottomedge-scrollY>ddlevelsmenu.docheight){ //no room downwards?
				if (this._dimensions.submenuh<this._offsets.top+(dir=="sidebar"? this._dimensions.h : 0)-scrollY){ //move up?
					menutop+= - this._dimensions.submenuh + (this._istoplevel && dir=="topbar"? -this._dimensions.h : this._dimensions.h)
				}
				else{ //top of window edge
					menutop+= -(this._offsets.top-scrollY) + (this._istoplevel && dir=="topbar"? -this._dimensions.h : 0)
				}
			}
			submenu.style.top=menutop+"px"
			if (ddlevelsmenu.revealanimate==false || ddlevelsmenu.isff3orabove){ //apply shim immediately only if animation is turned off, or if on, in non FF2.x browsers
				ddlevelsmenu.positionshim(header, submenu, dir, scrollX, scrollY)
			}
			else{
				submenu.ff2scrollInfo={x:scrollX, y:scrollY}
			}
			ddlevelsmenu.showmenu(header, submenu, dir)
		}
	}, "mouseover")
	this.addEvent(header, function(e){ //mouseout event
		if (this._istoplevel){
			var submenu=ddlevelsmenu.subuls[this._master][parseInt(this._pos)]
			if (!ddlevelsmenu.isContained(this, e) && !ddlevelsmenu.isContained(submenu, e)) //hide drop down ul if mouse moves out of menu bar item but not into drop down ul itself
				ddlevelsmenu.hidemenu(submenu)
		}
		else if (!this._istoplevel && !ddlevelsmenu.isContained(this, e)){
			var headerlist=this
			ddlevelsmenu.hidetimers[this._master][parseInt(this._pos)]=setTimeout(function(){
				var submenu=ddlevelsmenu.subuls[headerlist._master][parseInt(headerlist._pos)]
				ddlevelsmenu.hidemenu(submenu)
			}, ddlevelsmenu.hideinterval)
		}
	}, "mouseout")
},

showmenu:function(header, submenu, dir){
	if (this.revealanimate){
		submenu._curanimatepoint=0
		var endpoint=(header._istoplevel && dir=="topbar")? submenu.offsetHeight : submenu.offsetWidth
		submenu.style.width=submenu.style.height=0
		submenu.style.overflow="hidden"
		submenu.style.visibility="visible"
		clearTimeout(submenu._animatetimer)
		submenu._animatetimer=setInterval(function(){ddlevelsmenu.revealmenu(header, submenu, endpoint, dir)}, 10)
	}
	else{
		submenu.style.visibility="visible"
	}
},

revealmenu:function(header, submenu, endpoint, dir){
	if (submenu._curanimatepoint<endpoint){
		if (submenu._curanimatepoint==0) //reset either width or height of sub menu to "auto" when animation begins
			submenu.style[header._istoplevel && dir=="topbar"? "width" : "height"]="auto"
		submenu._curanimatepoint= submenu._curanimatepoint + 5 + (submenu._curanimatepoint/10)
		submenu.style[header._istoplevel && dir=="topbar"? "height" : "width"]=submenu._curanimatepoint+"px"
	}
	else{
		if (submenu.ff2scrollInfo) //if this is FF2 or below (meaning shim hasn't been applied yet
			this.positionshim(header, submenu, dir, submenu.ff2scrollInfo.x, submenu.ff2scrollInfo.y)
		submenu.style[header._istoplevel && dir=="topbar"? "height" : "width"]="auto"
		submenu.style.overflow="visible"
		clearInterval(submenu._animatetimer)
	}
},


hidemenu:function(submenu){
	if (typeof submenu._pos!="undefined"){ //if submenu is outermost UL drop down menu
		this.css(this.topitems[submenu._master][parseInt(submenu._pos)], "selected", "remove")
		this.hideshim()
	}
	clearTimeout(submenu._animatetimer)
	submenu.style.left=0
	submenu.style.top="-1000px"
	submenu.style.visibility="hidden"
},


addEvent:function(target, functionref, tasktype) {
	if (target.addEventListener)
		target.addEventListener(tasktype, functionref, false);
	else if (target.attachEvent)
		target.attachEvent('on'+tasktype, function(){return functionref.call(target, window.event)});
},

init:function(mainmenuid, dir){
	this.standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body
	this.topitemsindex=-1
	this.ulindex=-1
	this.topmenuids.push(mainmenuid)
	this.topitems[mainmenuid]=[] //declare array on object
	this.subuls[mainmenuid]=[] //declare array on object
	this.hidetimers[mainmenuid]=[] //declare array on object
	if (!this.shimadded){
		//this.shimmy={}
		//this.shimmy.topshim=this.addshimmy(document.body) //create top iframe shim obj
		//this.shimmy.bottomshim=this.addshimmy(document.body) //create bottom iframe shim obj
		//this.shimadded=true
	}
	var menubar=document.getElementById(mainmenuid)
	var alllinks=menubar.getElementsByTagName("a")
	this.getwindowsize()
	for (var i=0; i<alllinks.length; i++){
		if (alllinks[i].getAttribute('rel')){
			this.topitemsindex++
			this.ulindex++
			var menuitem=alllinks[i]
			this.topitems[mainmenuid][this.topitemsindex]=menuitem //store ref to main menu links
			var dropul=document.getElementById(menuitem.getAttribute('rel'))
			dropul.style.zIndex=2000 //give drop down menus a high z-index
			dropul._master=mainmenuid  //Indicate which main menu this main UL is associated with
			dropul._pos=this.topitemsindex //Indicate which main menu item this main UL is associated with
			this.addEvent(dropul, function(){ddlevelsmenu.hidemenu(this)}, "click")

			this.buildmenu(mainmenuid, menuitem, dropul, this.ulindex, true, dir) //build top level menu
			//dropul.onmouseover=function(){
				//do nothing
			//}
			this.addEvent(dropul, function(e){ //hide menu if mouse moves out of main UL element into open space
				if (!ddlevelsmenu.isContained(this, e) && !ddlevelsmenu.isContained(ddlevelsmenu.topitems[this._master][parseInt(this._pos)], e)){
					var dropul=this
					ddlevelsmenu.hidetimers[this._master][parseInt(this._pos)]=setTimeout(function(){
						ddlevelsmenu.hidemenu(dropul)
					}, ddlevelsmenu.hideinterval)
				}
			}, "mouseout")
			var subuls=dropul.getElementsByTagName("ul")
			for (var c=0; c<subuls.length; c++){
				this.ulindex++
				var parentli=subuls[c].parentNode
				this.buildmenu(mainmenuid, parentli, subuls[c], this.ulindex, false, dir) //build sub level menus
			}
		}
	} //end for loop
	this.addEvent(window, function(){ddlevelsmenu.getwindowsize(); ddlevelsmenu.gettopitemsdimensions()}, "resize")
},

setup:function(mainmenuid, dir){
	this.addEvent(window, function(){ddlevelsmenu.init(mainmenuid, dir)}, "load")
}

}
// -----------------------------------------------------------------------------


/***********************************************
* Simple Tree Menu- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

var persisteduls=new Object()
var ddtreemenu=new Object()

//ddtreemenu.closefolder="closed.gif" //set image path to "closed" folder image
//ddtreemenu.openfolder="open.gif" //set image path to "open" folder image

//////////No need to edit beyond here///////////////////////////

ddtreemenu.createTree=function(treeid, enablepersist, persistdays){
	var ultags=document.getElementById(treeid).getElementsByTagName("ul")
	if (typeof persisteduls[treeid]=="undefined")
	persisteduls[treeid]=(enablepersist==true && ddtreemenu.getCookie(treeid)!="")? ddtreemenu.getCookie(treeid).split(",") : ""
	for (var i=0; i<ultags.length; i++)
	ddtreemenu.buildSubTree(treeid, ultags[i], i)
	if (enablepersist==true){ //if enable persist feature
	var durationdays=(typeof persistdays=="undefined")? 1 : parseInt(persistdays)
	ddtreemenu.dotask(window, function(){ddtreemenu.rememberstate(treeid, durationdays)}, "unload") //save opened UL indexes on body unload
	}
	}

	ddtreemenu.buildSubTree=function(treeid, ulelement, index){
	ulelement.parentNode.className="submenu"
	if (typeof persisteduls[treeid]=="object"){ //if cookie exists (persisteduls[treeid] is an array versus "" string)
	if (ddtreemenu.searcharray(persisteduls[treeid], index)){
	ulelement.setAttribute("rel", "open")
	ulelement.style.display="block"
	//ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
	}
	else
	ulelement.setAttribute("rel", "closed")
	} //end cookie persist code
	else if (ulelement.getAttribute("rel")==null || ulelement.getAttribute("rel")==false) //if no cookie and UL has NO rel attribute explicted added by user
	ulelement.setAttribute("rel", "closed")
	else if (ulelement.getAttribute("rel")=="open") //else if no cookie and this UL has an explicit rel value of "open"
	ddtreemenu.expandSubTree(treeid, ulelement) //expand this UL plus all parent ULs (so the most inner UL is revealed!)
	/*ulelement.parentNode.onclick=function(e){
	var submenu=this.getElementsByTagName("ul")[0]
	if (submenu.getAttribute("rel")=="closed"){
	submenu.style.display="block"
	submenu.setAttribute("rel", "open")
	//ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
	}
	else if (submenu.getAttribute("rel")=="open"){
	submenu.style.display="none"
	submenu.setAttribute("rel", "closed")
	//ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")"
	}
	ddtreemenu.preventpropagate(e)
	}*/
	/*ulelement.onclick=function(e){
	ddtreemenu.preventpropagate(e)
	}*/
	}

	ddtreemenu.expandSubTree=function(treeid, ulelement){ //expand a UL element and any of its parent ULs
	var rootnode=document.getElementById(treeid)
	var currentnode=ulelement
	currentnode.style.display="block"
	//currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
	while (currentnode!=rootnode){
	if (currentnode.tagName=="UL"){ //if parent node is a UL, expand it too
	currentnode.style.display="block"
	currentnode.setAttribute("rel", "open") //indicate it's open
	//currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
	}
	currentnode=currentnode.parentNode
	}
	}

	ddtreemenu.flatten=function(treeid, action){ //expand or contract all UL elements
	var ultags=document.getElementById(treeid).getElementsByTagName("ul")
	for (var i=0; i<ultags.length; i++){
	ultags[i].style.display=(action=="expand")? "block" : "none"
	var relvalue=(action=="expand")? "open" : "closed"
	ultags[i].setAttribute("rel", relvalue)
	//ultags[i].parentNode.style.backgroundImage=(action=="expand")? "url("+ddtreemenu.openfolder+")" : "url("+ddtreemenu.closefolder+")"
	}
	}

	ddtreemenu.rememberstate=function(treeid, durationdays){ //store index of opened ULs relative to other ULs in Tree into cookie
	var ultags=document.getElementById(treeid).getElementsByTagName("ul")
	var openuls=new Array()
	for (var i=0; i<ultags.length; i++){
	if (ultags[i].getAttribute("rel")=="open")
	openuls[openuls.length]=i //save the index of the opened UL (relative to the entire list of ULs) as an array element
	}
	if (openuls.length==0) //if there are no opened ULs to save/persist
	openuls[0]="none open" //set array value to string to simply indicate all ULs should persist with state being closed
	ddtreemenu.setCookie(treeid, openuls.join(","), durationdays) //populate cookie with value treeid=1,2,3 etc (where 1,2... are the indexes of the opened ULs)
	}

	////A few utility functions below//////////////////////

	ddtreemenu.getCookie=function(Name){ //get cookie value
	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
	if (document.cookie.match(re)) //if cookie found
	return document.cookie.match(re)[0].split("=")[1] //return its value
	return ""
	}

	ddtreemenu.setCookie=function(name, value, days){ //set cookei value
	var expireDate = new Date()
	//set "expstring" to either future or past date, to set or delete cookie, respectively
	var expstring=expireDate.setDate(expireDate.getDate()+parseInt(days))
	document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+"; path=/";
	}

	ddtreemenu.searcharray=function(thearray, value){ //searches an array for the entered value. If found, delete value from array
	var isfound=false
	for (var i=0; i<thearray.length; i++){
	if (thearray[i]==value){
	isfound=true
	thearray.shift() //delete this element from array for efficiency sake
	break
	}
	}
	return isfound
	}

	ddtreemenu.preventpropagate=function(e){ //prevent action from bubbling upwards
	if (typeof e!="undefined")
	e.stopPropagation()
	else
	event.cancelBubble=true
	}

	ddtreemenu.dotask=function(target, functionref, tasktype){ //assign a function to execute to an event handler (ie: onunload)
	var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
	if (target.addEventListener)
	target.addEventListener(tasktype, functionref, false)
	else if (target.attachEvent)
	target.attachEvent(tasktype, functionref)
}