/************************************************************************************
TITLE		: Java script : Menu  
Uitgave 	: 1.0
Datum 		: 14-02-2007
<SCRIPT LANGUAGE="JavaScript">

   	Titel: Menu Vereniging spoorgroep Zwitserland
    	Auteur: Horus
    	email: 
    
    	Deze code mag voor niet-commerciële evenals voor commerciële doeleinden vrij 
	worden gebruikt en aangepast, zolang dit gratis gebeurt en zolang deze opmerking 
	behouden blijft. 
************************************************************************************/


<!--

function SymError()
{
  return true;
}

window.onerror = SymError;

var SymRealWinOpen = window.open;

function SymWinOpen(url, name, attributes)
{
  return (new Object());
}

window.open = SymWinOpen;

//-->

function lib_bwcheck(){ //Browsercheck (needed)
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera5=this.agent.indexOf("Opera 5")>-1
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6
	this.mac=this.agent.indexOf("Mac")>-1
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	return this
}
var bw=new lib_bwcheck()


//
if(bw.opera5) document.write("<style>DIV.clSlide{padding:0px; background-image:url('')}\n DIV.clSlideSub{padding:0px; background-image:url('')}\n DIV.clSlideSub2{padding:0px; background-image:url('')}</style>")
/************************************************************************************
Making cross-browser objects
************************************************************************************/
function makeMenuObj(obj,nest)
	{
		nest=(!nest) ? "":'document.'+nest+'.'										
   		this.css=bw.dom? document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+"document.layers." +obj):0;		
		this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0;	
		this.ref=bw.dom || bw.ie4? document:bw.ns4?eval(nest+"document.layers." +obj+".document"):0;		
		this.x=(bw.ns4 || bw.ns5)? this.css.left:this.css.offsetLeft;
		this.y=(bw.ns4 || bw.ns5)? this.css.top:this.css.offsetTop;		
		this.hideIt=b_hideIt; this.showIt=b_showIt; this.movey=b_movey
		this.moveIt=b_moveIt; this.moveBy=b_moveBy; this.status=0; 
		this.bgImg=b_bgImg;	this.obj = obj + "Object"; eval(this.obj + "=this"); 
		this.clipTo=b_clipTo;
		return this
	}

function b_showIt(){this.css.visibility="visible"; this.status=1}
function b_hideIt(){this.css.visibility="hidden"; this.status=0}
function b_movey(y){this.y=y; this.css.top=this.y}	
function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x;this.css.top=this.y}
function b_moveBy(x,y){this.x=this.x+x; this.y=this.y+y; this.css.left=this.x;this.css.top=this.y}
function b_bgImg(img){if(bw.ie||bw.dom)this.css.backgroundImage="url('"+img+"')"
else this.css.background.src=img
}
function b_clipTo(t,r,b,l,w){if(bw.ns4){this.css.clip.top=t;this.css.clip.right=r
this.css.clip.bottom=b;this.css.clip.left=l
}else{this.css.clip="rect("+t+","+r+","+b+","+l+")"; if(w){this.css.width=r; this.css.height=b}}}
/********************************************************************************
Initiating page, making objects..
********************************************************************************/
function SlideMenuInit(){
    
	oSlideMenu=new makeMenuObj('divSlideCont')
	oSlideMenu.moveIt(menux,menuy)
	oSlide=new Array()
	for(cinTeller=0;cinTeller<menus.length;cinTeller++)
		{
			oSlide[cinTeller]=new makeMenuObj('divSlide'+cinTeller,'divSlideCont')
			oSlide[cinTeller].subs=menus[cinTeller].subs
			oSlide[cinTeller].sub=new Array()
			oSlide[cinTeller].moveIt(0,mainheight*cinTeller)
			oSlide[cinTeller].starty=oSlide[cinTeller].y
    		if(bw.opera) oSlide[cinTeller].css.paddingLeft="10px"
			if(!menus[cinTeller].seperator) oSlide[cinTeller].bgImg(level0_regular)
			for(cinTeller2=0;cinTeller2<oSlide[cinTeller].subs;cinTeller2++)
			{
				oSlide[cinTeller].sub[cinTeller2]=new makeMenuObj('divSlideSub'+cinTeller+"_"+cinTeller2,'divSlideCont')
				oSlide[cinTeller].sub[cinTeller2].moveIt(10,oSlide[cinTeller].y+subheight*cinTeller2+between)
				oSlide[cinTeller].sub[cinTeller2].starty=oSlide[cinTeller].sub[cinTeller2].y
				oSlide[cinTeller][cinTeller2]=new Array()
				oSlide[cinTeller][cinTeller2].subs=menus[cinTeller][cinTeller2].subs
				oSlide[cinTeller][cinTeller2].sub=new Array()
				img=level1_round
				if(oSlide[cinTeller][cinTeller2].subs!=0)
				{
					if(cinTeller2!=oSlide[cinTeller].subs-1) img=level1_sub
					else img=level1_sub_round
					oSlide[cinTeller].sub[cinTeller2].css.color="red"
				}
				else
				{
					if(cinTeller2!=oSlide[cinTeller].subs-2)img=level1_regular
				}
				oSlide[cinTeller].sub[cinTeller2].origimg=img
				oSlide[cinTeller].sub[cinTeller2].bgImg(img)
				for(a=0;a<oSlide[cinTeller][cinTeller2].subs;a++)
				{
					oSlide[cinTeller][cinTeller2].sub[a]=new makeMenuObj('divSlideSub'+cinTeller+"_"+cinTeller2+"_"+a,'divSlideCont')
					oSlide[cinTeller][cinTeller2].sub[a].moveIt(30,oSlide[cinTeller].sub[cinTeller2].y+subheight*a+between)
					oSlide[cinTeller][cinTeller2].sub[a].starty=oSlide[cinTeller][cinTeller2].sub[a].y			
					oSlide[cinTeller][cinTeller2][a]=new Array()
					oSlide[cinTeller][cinTeller2][a].subs=menus[cinTeller][cinTeller2][a].subs
					oSlide[cinTeller][cinTeller2][a].sub=new Array()
					if(a!=oSlide[cinTeller][cinTeller2].subs-2) img=level2_regular
					else img=level2_round
					oSlide[cinTeller][cinTeller2].sub[a].origimg=img
					oSlide[cinTeller][cinTeller2].sub[a].bgImg(img)
				}
			}
		}
	oSlideMenu.showIt()
}
/********************************************************************************
Variables
********************************************************************************/
var active=-1;var going;var isthere; var sactive=-1; var sisthere=-1; var s2active=-1; var s2isthere=-1
/********************************************************************************
Switch menu function.
********************************************************************************/
function swmenu(num,snum,s2num){
	if(snum!=-1){
		if(oSlide[num][snum].subs==0) return
	}
	if(s2num!=-1){
		if(oSlide[num][snum][s2num].subs==0) return
	}
	if((num!=active || snum!=sactive || s2num!=s2active) && !going){going=true;isthere=0;sisthere=0;moveUp(num,snum,s2num)}
}
/********************************************************************************
Moving the menus upward to their original position.
********************************************************************************/
function moveUp(num,snum){
	if(snum==-1){
		for(i=0;i<oSlide.length;i++){
			if(oSlide[i].y>oSlide[i].starty+pxspeed && active!=i) oSlide[i].moveBy(0,-pxspeed)
			else{if(active!=i) oSlide[i].moveIt(oSlide[i].x,oSlide[i].starty); isthere=i}
		}
		
		if(isthere<oSlide.length-1) setTimeout("moveUp("+num+","+snum+")",timspeed)
		else swmenu2(num,snum)
	}else{
		if(num==oSlide.length-1) isthere=num
	
		if(sactive!=-1){ //Is out!
			//Slide subs
			j=0
			for(i=sactive+1;i<oSlide[num].sub.length;i++){
				j++
				if(oSlide[num].sub[i].y>oSlide[num].sub[i].starty+pxspeed) oSlide[num].sub[i].moveBy(0,-pxspeed)
				else{oSlide[num].sub[i].moveIt(oSlide[num].sub[i].x,oSlide[num].sub[i].starty); sisthere=i}
			}
			//Slide main
			for(i=num+1;i<oSlide.length;i++){
				if(oSlide[i].y>oSlide[i].starty + oSlide[num].sub[sactive].y +subheight*j )  oSlide[i].moveBy(0,-pxspeed)
				else{oSlide[i].moveIt(oSlide[i].x,oSlide[i].starty + oSlide[num].sub[sactive].y +subheight*j ); isthere=i}
			}
		}else{ //Slide to the one clicked
			for(i=num+1;i<oSlide.length;i++){
				if(oSlide[i].y>oSlide[i].starty + snum*between+between)  oSlide[i].moveBy(0,-pxspeed)
				else{oSlide[i].moveIt(oSlide[i].x,oSlide[i].starty + snum*between+between); isthere=i}
			}
		}
		if(isthere<oSlide.length-1 || (sactive!=-1 && sisthere<oSlide[num].sub.length-1 && sactive!=oSlide[num].sub.length-1)) setTimeout("moveUp("+num+","+snum+")",timspeed)
		else swmenu2(num,snum)
	}
}
/********************************************************************************
Switch menu 2, stuff that happens before the menus are moved down again.
********************************************************************************/
function swmenu2(num,snum){
	isthere=0;
	sisthere=0;
	if(active>-1 && snum==-1){
		//Hiding submenus
		for(j=0;j<oSlide[active].subs;j++){oSlide[active].sub[j].hideIt()}
		oSlide[active].bgImg(level0_regular)
		oSlide[active].moveIt(0,oSlide[active].starty)
	}
	if(sactive>-1){
		//Hiding submenus
		for(j=0;j<oSlide[active][sactive].sub.length;j++){oSlide[active][sactive].sub[j].hideIt()}
		oSlide[active].sub[sactive].bgImg(oSlide[active].sub[sactive].origimg)
		oSlide[active].sub[sactive].moveIt(10,oSlide[active].sub[sactive].starty)
		//Move back to place
		for(i=sactive+1;i<oSlide[active].sub.length;i++){
			oSlide[active].sub[i].moveIt(oSlide[active].sub[i].x,oSlide[active].sub[i].starty)
		}
	}
	active=num
	//Showing submenus
	if(snum>-1){
		sactive=snum
		for(j=0;j<oSlide[num][snum].sub.length;j++){oSlide[num][snum].sub[j].showIt()}
		oSlide[num].sub[snum].moveBy(10,3)
		oSlide[num].sub[snum].bgImg(level0_round)
	}else{
		sactive=-1
		for(j=0;j<oSlide[active].subs;j++){oSlide[active].sub[j].showIt()}
		oSlide[num].moveBy(10,3)
		oSlide[num].bgImg(level0_round)
	}
	if(num!=oSlide.length-1) moveDown(num,snum)
	else{
		isthere=num
		moveDown(num,snum)
	}
}
/********************************************************************************
Moving the menus down
********************************************************************************/
function moveDown(num,snum){
	//if(num==oSlide.length-1) isthere=num
	for(i=num+1;i<oSlide.length;i++){
		if(snum==-1){
			if(oSlide[i].y<(oSlide[num].subs-1)*subheight+oSlide[i].starty+between-pxspeed) oSlide[i].moveBy(0,pxspeed)
			else{oSlide[i].moveIt(oSlide[i].x,(oSlide[num].subs-1)*subheight+oSlide[i].starty+between); isthere=i}
		}else{
			if(oSlide[i].y<(oSlide[num].subs-1)*subheight+oSlide[i].starty+between-pxspeed + (oSlide[num][snum].subs-1)*subheight+between)  oSlide[i].moveBy(0,pxspeed)
			else{oSlide[i].moveIt(oSlide[i].x,(oSlide[num].subs-1)*subheight+oSlide[i].starty+between  + (oSlide[num][snum].subs-1)*subheight+between); isthere=i}
		}
	}
	if(snum!=-1){
		for(i=snum+1;i<oSlide[num].sub.length;i++){		
			if(oSlide[num].sub[i].y<(oSlide[num][snum].subs-1)*subheight+oSlide[num].sub[i].starty+between-pxspeed) oSlide[num].sub[i].moveBy(0,pxspeed)
			else{oSlide[num].sub[i].moveIt(oSlide[num].sub[i].x,(oSlide[num][snum].subs-1)*subheight+oSlide[num].sub[i].starty+between); sisthere=i}
		}
	}
	if(snum==-1){
		if(isthere<oSlide.length-1) setTimeout("moveDown("+num+","+snum+")",timspeed)
		else going=false
	}else{
		if(isthere<oSlide.length-1 || (sisthere<oSlide[num].sub.length-1 && snum!=oSlide[num].sub.length-1)) setTimeout("moveDown("+num+","+snum+")",timspeed)
		else going=false
	}
}

/********************************************************************************
Functions to write out the layers...
********************************************************************************/
menus=new Array(); var intTop=0; var intSub=0; var intSub2=0; var intEnd=0

function makeMenu(type,text2,text,lnk,target,end){
	// geef variabel
	strLabel=""; 
	strTarget=""; 
	strSpatie="&nbsp;&nbsp;&nbsp;";
	
 	if(target) strTarget='target="'+target+'"'
  	if(!lnk) lnk="#"
  	self.status=lnk
	if(intTop==0) strLabel='<div id="divSlideCont">\n'
	if(type=="top"){
		menus[intTop]=new Array();
		if(text=="seperator"){
			strLabel+='\t<div id="divSlide'+intTop+'" class="clSlide"></div>\n'
			menus[intTop].seperator=1
		}else{
      		strLabel+='\t<div id="divSlide'+intTop+'" class="clSlide"><a href="'+lnk+'"'+strTarget+' onclick="swmenu('+intTop+',-1,-1); if(bw.ie || bw.ns6) this.blur(); '
      		if(lnk=="#") strLabel+='return false'
      		strLabel+='" class="clSlideLinks">  '+text2+strSpatie+text+'</a><br></div>\n'
		}
    	menus[intTop].subs=0; intTop++; intSub=0
    	
		}else if(type=="sub"){
			strLabel+='\t\t<div id="divSlideSub'+(intTop-1)+'_'+(intSub)+'" class="clSlideSub"><a '+strTarget+' onclick="swmenu('+(intTop-1)+','+intSub+',-1); if(bw.ie || bw.ns6) this.blur(); '
    		if(lnk=="#") strLabel+='return false'
    		strLabel+='" href="'+lnk+'" class="clSlideSubLinks">'+text2+strSpatie+text+'</a><br></div>\n'
			intSub++; 
			menus[intTop-1].subs=intSub;
			menus[intTop-1][intSub-1]=new Array(); 
			intSub2=0; 
			menus[intTop-1][intSub-1].subs=0
	
		}else if(type=="sub2"){
			strLabel+='\t\t<div id="divSlideSub'+(intTop-1)+'_'+(intSub-1)+'_'+intSub2+'" class="clSlideSub2"><a '+strTarget+' href="'+lnk+'" class="clSlideSub2Links">  '+text2+strSpatie+text+'</a><br></div>\n'
			intSub2++; 
			menus[intTop-1][intSub-1].subs=intSub2; 
			menus[intTop-1][intSub-1][intSub2-1]=new Array(); 
			intEnd=0; 
			menus[intTop-1][intSub-1][intSub2-1].subs=0
   		}
	if(end) strLabel+="</div>"
	document.write(strLabel)
}

var test=0
function preLoadBackgrounds(){
  for(i=0;i<arguments.length;i++){
    this[i]=new Image()
    this[i].src=arguments[i]
  }
  return this
}

