//###########################################################
//	
// 	<title>NickLinks v2.1.19.2</title>
// 		Tuesday, 17th November 2006
//	
//###########################################################
/*
	//Methods
		addlink   		- Add link. e.g.: myLinks.addlink(" [Link 1 | page1.asp | target:_blank | onmouseover:window.status='mouseOver' | onmouseout:window.status='mouseOut' | onmousedown:window.status='mouseDown' | onmouseup:window.status='mouseUp' | onclick:window.status='onClick' ]")
		build     		- Build links
		showlinks 		- Show links
		hidelinks 		- Hide links
		links     		- Add multiple links as string. e.g.: myLinks.links( '[Link 1 | page1.asp][Link 2 | page2.asp][Link 3 | page3.asp]' )
		parameters 		- Pass multiple parameters as string.  e.g.: myLinks.parameters ('style:myStyle ; styleHover:myStyleHover ; styleHeader:myStyleHeader ; styleBackground:myStyleBackground ;')

	//Styles
		style           	- Style of menu
		styleHover      	- Style of menu (on mouse rollover)
		styleBackground 	- Border style of menus
		styleHeader     	- Submenu header style
	
	//Parameters
		startX			- Default starting horizontal position of links if no HTML element passed (default=0)
		startY			- Default starting vertical position of links if no HTML element passed (default=0)
		width			- Width of sublinks/submenus
		height			- Height of sublinks/submenus
		textPadding		- Horizontal text spacing from edge of menu
		offsetX			- Horizontal offset starting position of top level links from passed HTML element(default=0)
		offsetY			- Vertical offset starting position of top level links from passed HTML element (default=20)
		spacingX		- Horizontal spacing of lower level submenus from RHS of menu column (+/-)
		spacingY		- Vertical spacing of lower level submenus (+/-)
		maxRows			- Maximum number of vertical links in any submenu column (set to -1 for one column ONLY!)
		showHeader		- Display the title of any submenu(true/false)
		pageScroll		- Display links relative to page scroll (always on screen), NOT top of page
		imageArrow		- Image (inc. path) of submenu arrow gif
		hideDelay		- Delay (ms) to hide menus once moused out
		reverse			- Display links backwards (right to left, NOT left to right)
		linkWrap 		- Display links cascade backwards if links off edge of screen
		zIndexReverse	- Display links divs from top to bottom (NOT bottom to top as normal)
		onMouseOver		- Code to execute on link show
		onMouseOut		- Code to execute on link hide
		
*/	

var NickLinks_DivCounter = 0;
var NickLinks_DivStatus = null;
var NickLinks_DivInfo = new Array();
var NickLinks_RolloverInfo = new Array();
var NickLinks_ScrTop = 0;
var NickLinks_onMouseOver = null;
var NickLinks_onMouseOut = null;

function NickLinks(){
	this.linkArray = new Array();
	this.linkArray[0] = new Array(0);
	NickLinks_DivCounter++
	this.divID = NickLinks_DivCounter
	this.startX = 0;
	this.startY = 0;
	this.width  = 150;
	this.height = 20;
	this.textPadding = 8;
	this.offsetX = 0;
	this.offsetY = 20;
	this.spacingX = 0;
	this.spacingY = 0;
	this.maxRows = -1;
	this.hideDelay = 1000;
	this.showHeader = true;
	this.pageScroll = false;
	this.reverse = false;
	this.linkWrap = false;
	this.zIndexReverse = false;
	this.imageArrow = (location.href+'').substring(0,(location.href+'').lastIndexOf('/')+1) + 'arrow.gif';
	this.onMouseOver = null;
	this.onMouseOut = null;
	this.style           = 'style'
	this.styleHover      = 'styleHover'
	this.styleBackground = 'styleBackground'
	this.styleHeader     = 'styleHeader'
	this.addlink   		= NickLinks_Links;
	this.build     		= NickLinks_Build;
	this.showlinks 		= NickLinks_ShowLinks;
	this.hidelinks 		= NickLinks_HideLinks;
	this.links     		= NickLinks_Links;
	this.parameters 	= NickLinks_Params;
}

function NickLinks_Links(Link_Str){
	aTemp = Link_Str.split(']')
	for(i=0;i<aTemp.length-1;i++){
		iTemp = aTemp[i].indexOf('[')
		Link_ArrLen = (this.linkArray).length
		Link_Params = (aTemp[i].substring(iTemp+1)).split('|')
		this.linkArray[Link_ArrLen] = new Array()
		this.linkArray[Link_ArrLen][0] = Math.floor(iTemp/2)+1
		for(j=0;j<Link_Params.length;j++){
			while(Link_Params[j].indexOf(' ')==0){ Link_Params[j]=Link_Params[j].substring(1) }
			while(Link_Params[j].lastIndexOf(' ')==Link_Params[j].length-1 && Link_Params[j].length>0  ){ Link_Params[j]=Link_Params[j].substring(0,Link_Params[j].length-1) }
			this.linkArray[Link_ArrLen][j+1] = Link_Params[j]
		}
	}
}

function NickLinks_Params(Param_Str){
	aTemp = Param_Str.split(';')
	for(i=0;i<aTemp.length;i++){
		Params_Elem = aTemp[i].split(':')
		for(j=0;j<Params_Elem.length;j++){
				while(Params_Elem[j].indexOf(' ')==0){ Params_Elem[j]=Params_Elem[j].substring(1) }
				while(Params_Elem[j].lastIndexOf(' ')==Params_Elem[j].length-1 && Params_Elem[j].length>0  ){ Params_Elem[j]=Params_Elem[j].substring(0,Params_Elem[j].length-1) }
		}
		if(Params_Elem.length>1){
			if(!isNaN(Params_Elem[1]) || Params_Elem[1].toLowerCase() == 'true' || Params_Elem[1].toLowerCase() == 'false'){ eval('this.' + Params_Elem[0] + '=' + Params_Elem[1].toLowerCase()) }
			else{ eval('this.' + Params_Elem[0] + '="' + Params_Elem[1] + '"') }
		}
	}
}

function NickLinks_Build(){
	this.linkArray[(this.linkArray).length] = new Array(-1,'END')
	NickLinks_DrawLinks(this, 1, 1)
}

function NickLinks_DrawLinks(obj, Link_ArrayStart, Link_Level){
	var Link_Str = ''
	var Link_SubMenuHeader = ''
	var Link_Cols = 1
	var Link_ItemsDisplayed = 0
	for(i=Link_ArrayStart;i<obj.linkArray.length;i++){
		if(obj.linkArray[i][0]<Link_Level){break}
		if(obj.linkArray[i][0]==Link_Level){
				if(Link_ItemsDisplayed%obj.maxRows==0 && obj.maxRows>0 && Link_ItemsDisplayed>0){
					Link_Str+='</table>'
					Link_Str+='</td>'
					Link_Str+='<td width="' + obj.width + '" class="' + obj.style + '" valign="top">'
					Link_Str+='<table width="100%" cellpadding="0" cellspacing="0" border="0">'
					Link_Cols++
				}
				if(obj.linkArray[i+1][0]>Link_Level){
					Link_Str+='<tr ' + NickLinks_BuildNavigation(obj, i ) + 'NickLinks_Rollover(this,\'' + obj.styleHover + '\',\'' + obj.style + '\',' + Link_Level + ');NickLinks_ShowLinks_Do(this,' + obj.divID + ',' + (i+1) + ',' + (Link_Level+1) + ',' + obj.startX + ',' + obj.startY + ',' + obj.spacingX + ',' + obj.spacingY + ',' + obj.width + ',' + obj.pageScroll + ',' + obj.linkWrap + ',' + obj.reverse + ', null);">'
						Link_Str+='<td nowrap class="' + obj.style + '" style="cursor:pointer; padding:0 ' + obj.textPadding + 'px; height:' + obj.height + 'px; background-image:url(' + obj.imageArrow + '); background-position:right; background-repeat:no-repeat;">'
							Link_Str+=obj.linkArray[i][1]
						Link_Str+='</td>'
					Link_Str+='</tr>'
				}
				else{
					switch((obj.linkArray[i][1]).toLowerCase()){
						case '{br}':
							Link_Str+='<tr class="' + obj.style + '">'
								Link_Str+='<td style="height:' + obj.height + 'px;">&nbsp;</td>'
							Link_Str+='</tr>'
							break;
						case '{hr}':
							Link_Str+='<tr class="' + obj.style + '">'
								Link_Str+='<td style="padding:0 ' + obj.textPadding + 'px; height:' + obj.height + 'px;"><hr size="1" width="100%"></td>'
							Link_Str+='</tr>'
							break;
						default:
							Link_Str+='<tr ' + NickLinks_BuildNavigation(obj, i ) + 'NickLinks_Rollover(this,\'' + obj.styleHover + '\',\'' + obj.style + '\',' + Link_Level + ');NickLinks_HideLinks_Do(' + (obj.linkArray[i][0]+1) + ')">'
								Link_Str+='<td nowrap class="' + obj.style + '" style="cursor:pointer; padding:0 ' + obj.textPadding + 'px; height:' + obj.height + 'px;">'
									Link_Str+=obj.linkArray[i][1]
								Link_Str+='&nbsp;</td>'
							Link_Str+='</tr>'
					}
				}
				Link_ItemsDisplayed++
		}
	}
	if(Link_Level>1 && obj.showHeader){
			Link_SubMenuHeader+='<tr><td colspan="' + Link_Cols + '" class="' + obj.styleHeader + '" style="cursor:default; padding:0 ' + obj.textPadding + 'px; height:' + obj.height + 'px;" ONMOUSEOVER="NickLinks_Rollout(' + Link_Level + ')">'
				Link_SubMenuHeader+=obj.linkArray[Link_ArrayStart-1][1]
			Link_SubMenuHeader+='</td></tr>'
	}
	NickLinks_DivInfo[NickLinks_DivInfo.length] = new Array(obj.divID, Link_ArrayStart, Link_Level)
	if(Link_ItemsDisplayed!=0){
		Link_Str= '<div id="NickLinksDiv' + obj.divID + '-' + Link_ArrayStart + '" ONMOUSEOVER="NickLinks_DivOver()" ONMOUSEOUT="NickLinks_DivOut(' + obj.hideDelay + ')" style="position:absolute; z-index:' + (16384+NickLinks_DivInfo.length*(obj.zIndexReverse?-1:1)) + '; visibility:hidden; top:0px; left:0px; width:' + (obj.width*Link_Cols) + ';">' +
				'<table width="' + (obj.width*Link_Cols) + '" cellpadding="0" cellspacing="0" border="0" class="' + obj.styleBackground + '">' +
					Link_SubMenuHeader +
				'<tr><td width="' + obj.width + '" class="' + obj.style + '" valign="top">' +
					'<table width="100%" cellpadding="0" cellspacing="0" border="0">' + 
						Link_Str +
					'</table>' + 
				'</td></tr>' +
				'</table>' +
				'<table cellpadding="0" cellspacing="0" border="0"><tr><td></td></tr></table>' +
			  '</div>'
	}
	else{ Link_Str= '<div id="NickLinksDiv' + obj.divID + '-' + Link_ArrayStart + '" style="position:absolute; visibility:hidden; top:0px; left:0px;">&nbsp;</div>' }
	document.write(Link_Str)
	for(var sl=Link_ArrayStart;sl<obj.linkArray.length;sl++){
		if(obj.linkArray[sl][0]<Link_Level){break}
		if(obj.linkArray[sl][0]==Link_Level){ if(obj.linkArray[sl+1][0]>Link_Level){ NickLinks_DrawLinks(obj, sl+1, Link_Level+1) } }
	}
}

function NickLinks_ShowLinks(elemID, elemAlign){
	if(NickLinks_onMouseOut!=null){ eval(NickLinks_onMouseOut) }
	NickLinks_onMouseOver = this.onMouseOver;
	NickLinks_onMouseOut = this.onMouseOut;

	NickLinks_ShowLinks_Do(elemID, this.divID, 1, 1, this.startX*1, this.startY*1, this.offsetX*1, this.offsetY*1, this.width*1, this.pageScroll, this.linkWrap, this.reverse, elemAlign)
}
function NickLinks_ShowLinks_Do(elemID, divID, divSubID, divLinkLevel, objStartX, objStartY, objSpaceX, objSpaceY, objWidth, objPageScroll, objlinkWrap, objReverse, objAlign){
	NickLinks_DivOver()
	NickLinks_HideLinks_Do(divLinkLevel)
	if(divLinkLevel==1 && elemID!=null){ objWidth=0 }
	if(objReverse){ objWidth=-objWidth+1 }
	if(elemID==null){ var tmpX = objStartX ; var tmpY = objStartY }
	else{
		var tmpX = (NickLinks_GetXPos(elemID) + objWidth + objSpaceX - 1) + 'px'
		var tmpY = (NickLinks_GetYPos(elemID) + objSpaceY - 1) + 'px'
		if(objAlign!=null){
			if((objAlign.toLowerCase()).indexOf('x')==0){ var tmpY = objStartY }
			if((objAlign.toLowerCase()).indexOf('y')==0){ var tmpX = objStartX }
		}
	}
	if(divLinkLevel==1 && objPageScroll){ tmpY += (document.all?document.body.scrollTop:pageYOffset) }
	if(objlinkWrap && (8+tmpX<=0 || (8+tmpX+objWidth)>=(document.all?document.body.clientWidth:self.innerWidth))){ tmpX -= (objWidth*2) + (objSpaceX*2) }
	if(document.layers){
		var LayerID=document.layers['NickLinksDiv'+divID+'-'+divSubID].left = tmpX;
		var LayerID=document.layers['NickLinksDiv'+divID+'-'+divSubID].top = tmpY;
		var LayerID=document.layers['NickLinksDiv'+divID+'-'+divSubID].visibility = 'show';
	}
	else if(document.all){
		document.all['NickLinksDiv'+divID+'-'+divSubID].style.left = tmpX;
		document.all['NickLinksDiv'+divID+'-'+divSubID].style.top = tmpY;
		document.all['NickLinksDiv'+divID+'-'+divSubID].style.visibility='visible';
	}
	else{
		document.getElementById('NickLinksDiv'+divID+'-'+divSubID).style.left = tmpX;
		document.getElementById('NickLinksDiv'+divID+'-'+divSubID).style.top = tmpY;
		document.getElementById('NickLinksDiv'+divID+'-'+divSubID).style.visibility='visible';
	}
}

function NickLinks_HideLinks(){
	NickLinks_DivOut(this.hideDelay)
}
function NickLinks_HideLinks_Do(lLevel){
	if(lLevel==1 && NickLinks_onMouseOver!=null){ eval(NickLinks_onMouseOver); NickLinks_onMouseOver=null; }
	if(lLevel==null && NickLinks_onMouseOut!=null){ eval(NickLinks_onMouseOut); NickLinks_onMouseOut=null; }
	if(lLevel==null){ lLevel = 0 }
	for(i=0;i<NickLinks_DivInfo.length;i++){
		if(NickLinks_DivInfo[i][2]>lLevel){
			NickLinks_Rollout(i)
		}
		if(NickLinks_DivInfo[i][2]>=lLevel){
			if(document.layers){ var LayerID=document.layers['NickLinksDiv'+NickLinks_DivInfo[i][0]+'-'+NickLinks_DivInfo[i][1]].visibility = 'hide';  }
			else if(document.all){ document.all['NickLinksDiv'+NickLinks_DivInfo[i][0]+'-'+NickLinks_DivInfo[i][1]].style.visibility='hidden'; }
			else{ document.getElementById('NickLinksDiv'+NickLinks_DivInfo[i][0]+'-'+NickLinks_DivInfo[i][1]).style.visibility='hidden'; }
		}
	}
}

function NickLinks_Rollover(linkElem,linkStyle,linkStyleOut,lnkLevel){
	if(document.layers){return;}
	NickLinks_Rollout(lnkLevel)
	NickLinks_Rollout(lnkLevel+1)
	NickLinks_RolloverInfo[lnkLevel] = new Array(linkElem,linkStyleOut)
	var linkElemchild=linkElem.childNodes;
	for(j=0;j<linkElemchild.length;j++){linkElemchild[j].className = linkStyle; }
}
function NickLinks_Rollout(linkLvl){
	if(document.layers){return;}
	if(NickLinks_RolloverInfo[linkLvl]!=null){
	    var linkElemchild=NickLinks_RolloverInfo[linkLvl][0].childNodes;
		for(j=0;j<linkElemchild.length;j++){linkElemchild[j].className = NickLinks_RolloverInfo[linkLvl][1]; }
		NickLinks_RolloverInfo[linkLvl] = null
	}
}

function NickLinks_BuildNavigation(obj, LinkID){
	var Link_URL = Link_Target = Link_ONCLICK = Link_ONMOUSEOVER = Link_ONMOUSEOUT = Link_ONMOUSEDOWN = Link_ONMOUSEUP = ''
	for(k=obj.linkArray[LinkID].length;k>=2;k--){
		if(obj.linkArray[LinkID][k]!=null){
				tmpStr = (obj.linkArray[LinkID][k]).toLowerCase()
				if(tmpStr.indexOf('target:')>=0){ Link_Target = (obj.linkArray[LinkID][k]).substring(tmpStr.indexOf(':')+1) }
				else if(tmpStr.indexOf('javascript:')>=0){ Link_ONCLICK += (obj.linkArray[LinkID][k]).substring(tmpStr.indexOf(':')+1) + ';' }
				else if(tmpStr.indexOf('onclick:')>=0){ Link_ONCLICK += (obj.linkArray[LinkID][k]).substring(tmpStr.indexOf(':')+1) + ';' }
				else if(tmpStr.indexOf('onmouseover:')>=0){ Link_ONMOUSEOVER += (obj.linkArray[LinkID][k]).substring(tmpStr.indexOf(':')+1) + ';' }
				else if(tmpStr.indexOf('onmouseout:')>=0){ Link_ONMOUSEOUT += (obj.linkArray[LinkID][k]).substring(tmpStr.indexOf(':')+1) + ';' }
				else if(tmpStr.indexOf('onmousedown:')>=0){ Link_ONMOUSEDOWN += (obj.linkArray[LinkID][k]).substring(tmpStr.indexOf(':')+1) + ';' }
				else if(tmpStr.indexOf('onmouseup:')>=0){ Link_ONMOUSEUP += (obj.linkArray[LinkID][k]).substring(tmpStr.indexOf(':')+1) + ';' }
				else{ Link_URL = (obj.linkArray[LinkID][k]) }
		}
	}
	return 'ONMOUSEDOWN="' + Link_ONMOUSEDOWN + '" ONMOUSEUP="' + Link_ONMOUSEUP + '" ONCLICK="' + Link_ONCLICK + 'NickLinks_Navigate(\'' + Link_URL + '\',\'' + Link_Target + '\')" ONMOUSEOUT="' + Link_ONMOUSEOUT + '" ONMOUSEOVER="' + Link_ONMOUSEOVER 
}

function NickLinks_Navigate(URL,frame_Name){
	if(URL==null || URL==''){ return; }
	if(frame_Name==null){ frame_Name='' }
	switch(frame_Name){
		case '':
			location.href = URL 
			break;
		case '_blank':
			window.open(URL ,'','')
			break;
		case '_parent':
			parent.location.href = URL 
			break;
		case '_self':
			location.href = URL 
			break;
		case '_top':
			top.location.href = URL 
			break;
		default:
			for(i=0;i<parent.frames.length;i++){ 
				if(parent.frames[i].name==frame_Name){ parent.frames[i].location.href = URL; }
			}
	}
}

function NickLinks_GetXPos(obj) {
	var x = 0
	if (!document.layers) {
		var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
		var macIE = document.all && !onWindows
		var par = obj;
		var lastOffset = 0;
		while(par){
			if( par.leftMargin && ! onWindows ) x += parseInt(par.leftMargin);
			if( (par.offsetLeft != lastOffset) && par.offsetLeft ) x += parseInt(par.offsetLeft);
			par = macIE ? par.parentElement : par.offsetParent;
		}
	} else if (obj.x) x += obj.x;
	return x;
}
function NickLinks_GetYPos(obj) {
	var y = 0
	if(!document.layers) {
		var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
		var macIE = document.all && !onWindows
		var par = obj;
		var lastOffset = 0;
		while(par){
			if( par.topMargin && !onWindows ) y += parseInt(par.topMargin);
			if( (par.offsetTop != lastOffset) && par.offsetTop ) y += parseInt(par.offsetTop);
			par = macIE ? par.parentElement : par.offsetParent;
		}
	} else if (obj.y >= 0) y += obj.y;
	return y;
}

function NickLinks_DivOver(){
	if(NickLinks_DivStatus!=null){ clearTimeout(NickLinks_DivStatus) }
	NickLinks_DivStatus=null
}
function NickLinks_DivOut(delayMs){
	NickLinks_DivStatus = setTimeout("NickLinks_DivTimeOut()", delayMs)
}
function NickLinks_DivTimeOut(){
	if(NickLinks_DivStatus!=null){ NickLinks_HideLinks_Do(); }
}

function NickLinks_ScrollPage_Timer(){
	NickLinks_ScrollPage()
	setTimeout('NickLinks_ScrollPage_Timer()',25)
}
function NickLinks_ScrollPage(){
	var tmp_ScrTop = (document.all?document.body.scrollTop:pageYOffset)
	if(NickLinks_ScrTop!=tmp_ScrTop){NickLinks_ScrTop = tmp_ScrTop;NickLinks_HideLinks_Do()}
}
window.onscroll = NickLinks_ScrollPage


