MenuItem=[
	"id","parentid","name","redirect","hide",
	{
		id:0,
		parentid:0,
		name:'',
		redirect:'',
		hide:false,
		marked:false,
		hasVisibleChildren:false,
		menuItems:[],
		parentObj:{},
		isRed:false
	}	  
].jsonClass()

leftMenuObj={
	baseItem:new MenuItem(),
	blackArrow:'<img src="/images/general/leftMenuPics/blackArrow.gif" id="picnamn" border=0>&nbsp;',
	redArrow:'<img src="/images/general/leftMenuPics/redArrow.gif" id="picnamn" border=0>&nbsp;',
	blackArrow_down:'<img src="/images/general/leftMenuPics/blackArrow_down.gif" id="picnamn" border=0>&nbsp;',
	redArrow_down:'<img src="/images/general/leftMenuPics/redArrow_down.gif" id="picnamn" border=0>&nbsp;',
	greyArrow_down:'<img src="/images/general/leftMenuPics/greyArrow_down.gif" id="picnamn" border=0>&nbsp;',
	setStructData:function(x){
				
		// allow for dynamically created data in menu (not from structure tree)
		for(var i=0;i<x.length;i++){
			for(var j=0;j<x[i].length;j++){
				if(x[i][j]=="---dynamic---"){
					//alert("hej")
				}
			}
		}
	
		// receive menu structure data from server && convert to menuItem structure
		// with this.baseItem as root node
		var hashTable=[]
		x=x.reverse()
		for(var i=0;i<x.length;i++){
			if(x[i].length){
				var newItem=new MenuItem(x[i][0],x[i][1],x[i][2],x[i][3],x[i][4]?true:false)
				if(newItem.parentid==1){newItem.hide=true}
				newItem.menuItems=[] // fix bug in jsonClass - inline object/array points to same obj...
				var pushTo=hashTable[newItem.parentid]||this.baseItem
				newItem.parentObj=pushTo
				pushTo.menuItems.push(newItem)	
				hashTable[newItem.id]=newItem
			}
		}
		// mark selected menuItems - set obj.marked=true
		this.pageid=x[0].pageid
		this.siteName=x[0].siteName
		this.siteid=x[0].siteid
		this.onMainSite=this.siteid==5035 ||1399// 1399=intranet.
		markObj=hashTable[this.pageid]
		while(markObj){
			markObj.marked=true
			markObj=markObj.parentObj
		}
		// make hashTable reachable from all methods
		this.hashTable=hashTable
		this.calcIfRed()
	},
	setHasVisibleChildren:function(){
		var a=arguments
		for(var i=0;i<a.length;i++){
			if(this.hashTable[a[i]]){this.hashTable[a[i]].hasVisibleChildren=true}
		}
		this.buildMenu()
	},
	calcIfRed:function(){
		// set redParents and its children to isRed=true (not grandchildren)
		var redParents=[19,14098,22,2077,4916]
		for(var i=0;i<redParents.length;i++){
			var obj=this.hashTable[redParents[i]]
			if (obj){
				obj.isRed=true
				for(var j=0;j<obj.menuItems.length;j++){
					obj.menuItems[j].isRed=true	
				}
			}
		}
	},
	getBreadCrumb:function(){
		var o=[this.itemStylerBC({name:this.siteName,id:this.siteid},0)]
		var m=this.baseItem.menuItems
		var found=true
		while(found){
			found=false
			for(var i=0;i<m.length;i++){
				if(m[i].marked){
					var styled=this.itemStylerBC(m[i],0)
					if(styled && o.length>0){o.push("&nbsp;&nbsp;"+this.blackArrow+"&nbsp;")}
					o.push(styled)
					m=m[i].menuItems;
					found=true
					break
				}	
			}
		}
		var p=o.join('')
		p=p.replace(/class=\"linkSmall\"/g,"class=\"printTopLink\"")
		p=p.replace("studentlitteratur","Studentlitteratur")
		p=p.replace(/&nbsp;&nbsp;/g,"&nbsp;")
		this.printCrumb="["+p+"&nbsp;]"
		o=o.length>6?o.join('')+'<br><br><br><br>':''
		return o
	},
	showhideBasket:function(){
		
		if (!(getdiv("mainPubSysContent").innerHTML.indexOf('regForm')>0)) {
			if(window["shopBasketObj"]){
				shopBasketObj.hidden=!shopBasketObj.hidden
				shopBasketObj.showhideBasket()	
			} }
		else {
			location.href="/o.o.i.s/8139"
		}
	},
	menuFooter:function(){
		if(window.slimmedSess == "1"){return ''};
		var ds=this.dstyle
		if(!ds || ds.length<1){ds=["","margin-top:13px;margin-bottom:6px"]}
		var linje1 = '<img class="dotline1" src="/images/general/leftMenuPics/dottedLine.gif" style=margin-top:29px;><br>'
		var linje2 = '<img class="dotline2" src="/images/general/leftMenuPics/dottedLine.gif" style=margin-top:2px;><br>'
		var cinfo = '<div style="'+ds[1]+'"><a class="linkSmall" style="color:#666666; font-size:10px; text-decoration: none;" href="/o.o.i.s/2727" onMouseOver="leftMenuObj.changeColor(this)" onMouseOut="leftMenuObj.changeColorBack(this)">Cookies</a><span style="color:#666666; font-size:10px">&nbsp;/&nbsp;</span><a class="linkSmall" style="color:#666666; font-size:10px; text-decoration: none;" href="/o.o.i.s/1377" onMouseOver="leftMenuObj.changeColor(this)" onMouseOut="leftMenuObj.changeColorBack(this)">Personuppgifter</a></div>'
		cinfo=cinfo.replace(/margin-top:18px/g,"margin-top:11px")
		if (!window.slimmedSessCSS  && leftMenuObj.onMainSite == true){//unionJack
			var x= '<div style="'+ds[1]+'"><a class="linkSmall menulink" ' + (window.slimmedSessCSS ? '' : 'style="color:#666666; font-size:10px; text-decoration: none;"') + ' href="/o.o.i.s/103" onMouseOver="leftMenuObj.changeColor(this)" onMouseOut="leftMenuObj.changeColorBack(this)"><img src="/images/general/leftMenuPics/unionJack.gif" border="0">&nbsp;English version</a></div>'
		}
		else{//www.studli
			var x='<div style="'+ds[1]+'"><a class="linkSmall menulink" ' + (window.slimmedSessCSS ? '' : 'style="color:#666666; font-size:10px; text-decoration: none;"') + ' href="/o.o.i.s/4918" onMouseOver="leftMenuObj.changeColor(this)" onMouseOut="leftMenuObj.changeColorBack(this)">www.studentlitteratur.se</a></div>'
			if(!window.slimmedSessCSS  && leftMenuObj.siteid==102){//svensk flagga på eng.
				var x='<div style="'+ds[1]+'"><a class="linkSmall" ' + (window.slimmedSessCSS ? '' :'style="color:#666666; font-size:10px; text-decoration: none;"') + ' href="/o.o.i.s/4918" onMouseOver="leftMenuObj.changeColor(this)" onMouseOut="leftMenuObj.changeColorBack(this)"><img src="/images/general/leftMenuPics/svenskaflaggan.jpg" border="0">&nbsp;Swedish version</a></div>'
			}
		}
			x=x.replace(/margin-top:18px/g,"margin-top:8px")// på huvudsajten
			var y = linje1+x+linje2
			if(leftMenuObj.siteid!=102){y+=cinfo}//no unionJack for English version.
			y=y.replace("margin-top:13px;","margin-top:8px;")
		
		//no basket and search box for English version, but a dotted line under 'inloggad'
		if(leftMenuObj.siteid==102){
			if(isInloggad){getdiv("engDottedLine").style.display="inline";}else{getdiv("engDottedLine").style.display="none";}
			getdiv("basketholder").style.display="none";
			getdiv("vagnsknapp").style.display="none";
			getdiv("leftsearch").style.display="none";
		}
		if(window["medVetMenyChoice"]){return ""}
		return y
	},
	itemStyler:function(i,level,noTopSpace,showsSub){
		//returns relevant html for a menuItem
		if(i.hide){return ''}
		var hout=''
		var name=i.name.split("(")[0]
		var lstyle=[]
		var dstyle=[]
		this.dstyle=dstyle
		dstyle[0]='display:inline;margin-right:0px'
		dstyle[1]='margin-top:13px;margin-bottom:6px'
		if(showsSub){dstyle[1]=dstyle[1].replace(/6px/g,"2px")}
		if(noTopSpace){dstyle[1]='margin-bottom:6px'}
		dstyle[2]='margin-bottom:1px;margin-left:9px'
		lstyle[0]=''
		lstyle[1]='color:'+(i.marked&&(i.id==this.pageid || level!=1)?'#999999':(i.isRed?'#990000':'#000000'))+	
				';font-size:10px;text-decoration:none'
		if (!this.onMainSite){
			dstyle[2]=dstyle[2].replace(/margin-bottom:10px/g,"margin-bottom:13px")
			lstyle[1]=lstyle[1]+';font-weight:bold;'
		} 
		lstyle[2]=lstyle[1].replace(/10px/g,"9px")
//black level2
		lstyle[2]=lstyle[2].replace(/#990000/g,"#000000")
		var lanko=(i.redirect||i.id)//070103 MvW-fix för intranätsingång till pra.
		if(i.id==7280){lanko=i.id}
		var l='<div style="'+dstyle[level]+'"><a class="linkSmall" style="'+lstyle[level]+
			'" href="/o.o.i.s/'+ lanko +'" onMouseOver="leftMenuObj.changeColor(this,'+ i.id +')" onMouseOut="leftMenuObj.changeColorBack(this,'+ i.id +')">'
		var doubleSpaceReplacer='<br/>'
		
		if(i.hasVisibleChildren && level==1){ 
			if(i.marked){
				if(i.id==this.pageid || i.redirect==this.pageid){name=this.greyArrow_down+name+"add_grey"}
				else{(!i.isRed?name=this.blackArrow_down+name:name=this.redArrow_down+name)}
			}else{
				if(i.id==this.pageid || i.redirect==this.pageid){name=this.greyArrow_down+name+"add_grey"}
				else{(!i.isRed?name=this.blackArrow+name:name=this.redArrow+name)}
			}
			name=name.replace("picnamn",i.id)
			doubleSpaceReplacer='<br/><img src="/images/general/blank.gif" width="10" border="0">'
		}		
		
		// General fix double space > line break
		name=name.split('  ').join(doubleSpaceReplacer)
		hout=l+name+'</a></div>'
		
		// fix for grey text
		if(hout.indexOf("add_grey")!= -1){hout=hout.replace("#990000","#999999").replace("#000000","#999999").replace("add_grey","")}

		if(name=="---"){
			name='<img src="/images/general/leftMenuPics/dottedLine.gif">'
			hout='<div style="'+dstyle[level]+'">'+name+'</div>'
			hout=hout.replace("margin-bottom:1px","margin-top:5px;margin-bottom:3px;")
			hout=hout.replace("margin-bottom:6px","margin-bottom:0px")
		}
		return hout
	},

	itemStylerBC:function(i,level,noTopSpace,showsSub){
		//returns relevant html for a menuItem in BreadCrumb
		if(i.hide){return ''}
		var hout=''
		var name=i.name.split("(")[0]
		var lstyle=[]
		var dstyle=[]
		this.dstyle=dstyle
		dstyle[0]='display:inline;margin-right:0px'
		dstyle[1]='margin-top:13px;margin-bottom:6px'
		if(showsSub){dstyle[1]=dstyle[1].replace(/6px/g,"2px")}
		if(noTopSpace){dstyle[1]='margin-bottom:6px'}
		dstyle[2]='margin-bottom:1px;margin-left:9px'
		lstyle[0]=''
		lstyle[1]='color:'+(i.marked&&(i.id==this.pageid || level!=1)?'#999999':(i.isRed?'#990000':'#000000'))+	
				';font-size:10px;text-decoration:none'
		if (!this.onMainSite){
			dstyle[2]=dstyle[2].replace(/margin-bottom:10px/g,"margin-bottom:13px")
			lstyle[1]=lstyle[1]+';font-weight:bold;'
		} 
		lstyle[2]=lstyle[1].replace(/10px/g,"9px")
		lstyle[2]=lstyle[2].replace(/#990000/g,"#000000")
			var l='<div style="'+dstyle[level]+'"><a onfocus="this.blur()" class="linkSmall" '+
			'" href="/o.o.i.s/'+(i.redirect||i.id)+'">'
	var doubleSpaceReplacer=' '
		name=name.split('  ').join(doubleSpaceReplacer)
		hout=l+name+'</a></div>'
		return hout
	},
	
	buildMenu:function(){
		// not recursive - saw no need since we only ever show
		// max two levels but could be rebuilt to be recursive easily
		var s=this.baseItem.menuItems.reverse()
		var x=[]
		var noTopSpaceSet=false
		for(var i=0;i<s.length;i++){
				var noTopSpace=false
				// if no search box in menu and item is visible and this haven't been set 
				// before then set noTopSpace to true resulting in less space before item
				if(!window["leftMenuHasSearch"] && !noTopSpaceSet && !s[i].hide){
					noTopSpace=true;noTopSpaceSet=true
				}
				var t=s[i].menuItems.reverse();
				
				// count unhidden subitems
				var co=0
				for(var j=0;j<t.length;j++){co+=!t[j].hide}
				
				x.push(this.itemStyler(s[i],1,noTopSpace,co>0))
				for(var j=0;j<t.length;j++){
					x.push(this.itemStyler(t[j],2))	
				}
		}
		x.push(this.menuFooter())
		x=x.join('')
		if(window["logoboga"]){
			x=x.replace(/dottedLine/g,'dottedLine_wide')
			x=x.split("29px").join("30px")
			x=x.split("10px").join("11px")
			x=x.split("9px").join("10px")
			x=x.split("margin-bottom:2px").join("margin-bottom:3px")
			x=x.split("margin-bottom:1px").join("margin-bottom:2px")
		};
		document.write(x)
	},
	changeColor:function(x,y){
		this.oldLinkColor=x.style.color
		if(getdiv(y)){// Change color of arrow on mouseover of left menu link text
			this.oldPic=getdiv(y).src
			if(this.oldPic.indexOf("_down") != -1){
				getdiv(y).src="/images/general/leftMenuPics/greyArrow_down.gif"
			}else{
				getdiv(y).src="/images/general/leftMenuPics/greyArrow.gif"
			}
		}
		x.style.color="#999999"
	},
	changeColorBack:function(x,y){	
	// Changes color and arrow pic onMouseOut.
		var oColor = this.oldLinkColor
		var oPic = this.oldPic
		// Safari fix
		if(!oColor){oColor="#999999"}
		if(!oPic){oPic="/images/general/leftMenuPics/greyArrow_down.gif"}
		x.style.color=oColor
		if(getdiv(y)){getdiv(y).src=oPic}
	}
}

