// DROPDOWN MENU
// Fuse 8 (c)

// requires kmenu.js, klayers.js

// class kdropdown //////////////////////////////////////////////////////////////////////

function trace(msg){
	if(document.getElementById("trace")){
		document.getElementById("trace").value+=msg+"; "
	}
}

function kdropdown(argv){
	this.menu=new kmenu(argv);
	
	this.attr=this.menu.attr;
	this.items=this.menu.items;
	this.number=this.menu.number;
	
	if(!phpstring(this.attr.linkfromcurrent).charAt(0)=='n') this.attr.linkfromcurrent=false; else this.attr.linkfromcurrent=true
	
	this.trace=function(){
		this.menu.trace()
	}

	this.add=function(argv){
		this.menu.add(argv)
	}

	this.level_plus=function(){
		this.menu.level_plus()
	}
	
	this.level_minus=function(){
		this.menu.level_minus()
	}
	
	this.show=function(start){
		if(!start) start=0
		var level=this.items[start].level
		var i
		var buffer=[]
		var preloaderbuffer=[]
		var parent=-1
		var menuN=this.number
		if(start==0){
			document.write("<div id='k_menu_preloader_"+menuN+"' style='position:absolute;top:0px;left:0px;width:0px;height:0px;overflow:hidden;visibility:visible'>PRELOADING!!!...</div>")
		
			var d_c="cursor:pointer;cursor:hand;" // default cursor

			var m_i_s=			d_c+phpstring(this.attr.menuitemstyle)+";"
			var m_i_hc_s=		phpstring(this.attr.menuitemhaschildrenstyle)+";"
			var m_i_h_s=		phpstring(this.attr.menuitemhoverstyle)+";"
			var m_i_hc_h_s=		phpstring(this.attr.menuitemhaschildrenhoverstyle)+";"
			var m_i_c_s=		phpstring(this.attr.menuitemcurrentstyle)+";"
			var m_i_c_hc_s=		phpstring(this.attr.menuitemcurrenthaschildrenstyle)+";"
			var m_i_cs_s=		phpstring(this.attr.menuitemcurrentsectionstyle)+";"
			var m_i_cs_hc_s=	phpstring(this.attr.menuitemcurrentsectionhaschildrenstyle)+";"

			var sm_i_s=			d_c+phpstring(this.attr.submenuitemstyle)+";"
			var sm_i_hc_s=		phpstring(this.attr.submenuitemhaschildrenstyle)+";"
			var sm_i_h_s=		phpstring(this.attr.submenuitemhoverstyle)+";"
			var sm_i_hc_h_s=	phpstring(this.attr.submenuitemhaschildrenhoverstyle)+";"
			var sm_i_c_s=		phpstring(this.attr.submenuitemcurrentstyle)+";"
			var sm_i_c_hc_s=	phpstring(this.attr.submenuitemcurrenthaschildrenstyle)+";"
			var sm_i_cs_s=		phpstring(this.attr.submenuitemcurrentsectionstyle)+";"
			var sm_i_cs_hc_s=	phpstring(this.attr.submenuitemcurrentsectionhaschildrenstyle)+";"

			buffer[buffer.length]="<style>.k_submenu_"+menuN+"{"+phpstring(this.attr.submenustyle)+"}</style>"
			
			buffer[buffer.length]="<style>.k_menu_item_"+menuN+"{"+m_i_s+"}</style>"
			buffer[buffer.length]="<style>.k_menu_item_haschildren_"+menuN+"{"+m_i_s+m_i_hc_s+"}</style>"
			
			buffer[buffer.length]="<style>.k_menu_item_hover_"+menuN+"{"+m_i_s+m_i_h_s+"}</style>"
			buffer[buffer.length]="<style>.k_menu_item_haschildren_hover_"+menuN+ "{"+m_i_s+m_i_h_s+m_i_hc_s+m_i_hc_h_s+"}</style>"
			
			buffer[buffer.length]="<style>.k_menu_item_current_"+menuN+"{"+m_i_s+m_i_c_s+"}</style>"
			buffer[buffer.length]="<style>.k_menu_item_current_haschildren_"+menuN+ "{"+m_i_s+m_i_c_s+m_i_hc_s+m_i_c_hc_s+"}</style>"
			
			buffer[buffer.length]="<style>.k_menu_item_currentsection_"+menuN+ "{"+m_i_s+m_i_cs_s+"}</style>"
			buffer[buffer.length]="<style>.k_menu_item_currentsection_haschildren_"+menuN+ "{"+m_i_s+m_i_cs_s+m_i_hc_s+m_i_cs_hc_s+"}</style>"

			buffer[buffer.length]="<style>.k_submenu_item_"+menuN+"{"+sm_i_s+"}</style>"
			buffer[buffer.length]="<style>.k_submenu_item_haschildren_"+menuN+"{"+sm_i_s+sm_i_hc_s+"}</style>"
			
			buffer[buffer.length]="<style>.k_submenu_item_hover_"+menuN+"{"+sm_i_s+sm_i_h_s+"}</style>"
			buffer[buffer.length]="<style>.k_submenu_item_haschildren_hover_"+menuN+ "{"+sm_i_s+sm_i_h_s+sm_i_hc_s+sm_i_hc_h_s+"}</style>"
			
			buffer[buffer.length]="<style>.k_submenu_item_current_"+menuN+"{"+sm_i_s+sm_i_c_s+"}</style>"
			buffer[buffer.length]="<style>.k_submenu_item_current_haschildren_"+menuN+ "{"+sm_i_s+sm_i_c_s+sm_i_hc_s+sm_i_c_hc_s+"}</style>"
			
			buffer[buffer.length]="<style>.k_submenu_item_currentsection_"+menuN+ "{"+sm_i_s+sm_i_cs_s+"}</style>"
			buffer[buffer.length]="<style>.k_submenu_item_currentsection_haschildren_"+menuN+ "{"+sm_i_s+sm_i_cs_s+sm_i_hc_s+sm_i_cs_hc_s+"}</style>"
			


		}
		if(level==1){
			// top level menu items
			
			buffer[buffer.length]="<div style='position:relative;"+(isMSIE?"float:right;":"")+phpstring(this.attr.menustyle)+"'>"
			buffer[buffer.length]="<table cellspacing=0 cellpadding=0 border=0>"
			
		}else{
			// submenus
			parent=this.items[start-1].id
			
			buffer[buffer.length]="<div class='k_submenu_"+this.number+"' id='k_submenu_"+this.number+"_"+parent+"' ";
			buffer[buffer.length]="style='position:absolute; visibility:hidden; z-index:"+(0+phpnumber(this.attr.zIndex)+level)+"' "
			buffer[buffer.length]="onmouseout='k_mouseout_item(\""+(start-1)+"\", "+this.number+")'>"
			
			buffer[buffer.length]="<table cellspacing=0 cellpadding=0 border=0 width=100%>"
			
		}

		for(i=start; i < this.items.length; i++){
			var it=this.items[i]
			if(it.level>level){
				i=this.show(i)
			}else if(it.level<level){
				break;
			}else{
				it.parent=parent

				it.closing=null
				it.opening=null

				// GENERATING HTML-CODE

				if(level>1 || this.attr.dir && this.attr.dir.charAt(0)=="v"){
					buffer[buffer.length]="<tr>"
				}
				buffer[buffer.length]="<td "
				if(isMSIE){
					buffer[buffer.length]="style='position:relative' "
				}
				buffer[buffer.length]="onmouseover='k_mouseover_item(\""+it.id+"\", "+this.number+")' "
				buffer[buffer.length]="onmouseout='k_mouseout_item(\""+it.id+"\", "+this.number+")' "
				buffer[buffer.length]="onclick='k_click_item(\""+it.id+"\", "+this.number+");return false'"
				buffer[buffer.length]=">"
				
				buffer[buffer.length]="<div "
				if(!isMSIE){
					buffer[buffer.length]="style='position:relative' "
				}

				it._class="k_"+((level==1)?"":"sub")+"menu_item"+ ((it.current)?"_current":(it.currentsection?"_currentsection":""))+"_"+(it.haschildren?"haschildren_":"")+this.number

				it._classhover="k_"+((level==1)?"":"sub")+"menu_item_"+ (it.haschildren?"haschildren_":"")+"hover_"+this.number
				
				preloaderbuffer[preloaderbuffer.length]="<div class='"+it._class+"'>x</div><div class='"+it._classhover+"'>x</div>"

				buffer[buffer.length]="id='k_menu_item_"+this.number+"_"+it.id+"' class='"+it._class+"'>"
+ phpstring((level==1)?this.attr.menuitembefore:this.attr.submenuitembefore)+ it.title+phpstring((level==1)?this.attr.menuitemafter:this.attr.submenuitemafter)

				//buffer[buffer.length]="</div>"
				
				if(it.haschildren){
					buffer[buffer.length]=phpstring((level==1)?this.attr.submenuflag:this.attr.subsubmenuflag)
				}else{
					buffer[buffer.length]=phpstring((level==1)?this.attr.nosubmenuflag:this.attr.nosubsubmenuflag)			
				}
					

				buffer[buffer.length]="</div></td>"
				
				buffer[buffer.length]=phpstring((level==1)?this.attr.menumedium:this.attr.submenumedium)
			}
		}
		
		buffer[buffer.length-1]=''
		
		buffer[buffer.length]="</table></div>"
		
		layer('k_menu_preloader_'+menuN).object.innerHTML+=preloaderbuffer.join('')
		
		//document.write('<plaintext>'+buffer.join('\n'))
		document.write(buffer.join('\n'))
		return i-1;
	}
}

function k_click_item(n, menuN){
	var m=kmenus[menuN]
	if(!m.items[n].haschildren || m.attr.behavior=="onmouseover"){
		var target=m.attr.target
		if(m.items[n].target && m.items[n].target.toLowerCase()!="_self"){
			target=m.items[n].target
		}else{
			target=''
		}
		if(!m.attr.linkfromcurrent || !m.items[n].current){
			if(target){
				window.open(m.items[n].href, target)
			}else{
				window.location.href=m.items[n].href
			}
		}
	}else{
		if(m.attr.behavior=="onclick" || m.attr.behavior=="all" || (m.attr.behavior=="windows" && m.attr.items[n].level==1)){
			k_initiate_switch_item(n, menuN, true, true)
		}
	}
}

function k_mouseover_item(n, menuN){
	var m=kmenus[menuN]
	
	if(!m.attr.linkfromcurrent || !m.items[n].current){
		layer("k_menu_item_"+menuN+"_"+n).object.className=m.items[n]._classhover
	}
	
	if(m.attr.behavior=="onmouseover" || m.attr.behavior=="all" || (m.attr.behavior=="windows" && m.attr.items[n].level>1)){
		k_initiate_switch_item(n, menuN, true)
	}
	status=phpstring(m.items[n].href)
}

function k_mouseout_item(n, menuN){
	var m=kmenus[menuN]

	if(!m.attr.linkfromcurrent || !m.items[n].current){
		layer("k_menu_item_"+menuN+"_"+n).object.className=m.items[n]._class
	}

	if(m.attr.behavior=="onmouseover" || m.attr.behavior=="all" || (m.attr.behavior=="windows" && m.attr.items[n].level>1)){
		k_initiate_switch_item(n, menuN, false)
	}
	status=''
}

function k_clearTimeout(item, event){
	if(item){
		if((event=="opening" || event=="all") && item.opening){
			clearTimeout(item.opening)
		}
		if((event=="closing" || event=="all") && item.closing){
			clearTimeout(item.closing)
		}
	}
}

function k_initiate_switch_item(n, menuN, show, now){
	var m=kmenus[menuN]
	var i,j

	for(j in m.items){
		k_clearTimeout(m.items[j], "all")
	}

	if(show){
		i=m.items[n]
		if(i){
			i.opening=setTimeout("k_switch_item("+n+", "+menuN+", true)", now?0:phpnumber(m.attr.opentimeout))
		}
	}else{
		for(j in m.items){
			m.items[j].closing=setTimeout("k_switch_item("+j+", "+menuN+", false)", now?0:phpnumber(m.attr.closetimeout))
		}
	}
}

function k_switch_item(n, menuN, show){
	var m=kmenus[menuN]
	var item

	if(show){
		do{
			m.items[n].must_show=true
			n=m.items[n].parent
		}while(n!=-1 && m.items[n] && show)

		for(i in m.items){

			var item=layer("k_submenu_"+menuN+"_"+i)
			if(!item) {
				continue
			}

			if(m.items[i].must_show){
				var submenu=layer("k_menu_item_"+menuN+"_"+(i*1+1))
				var offset=layer("k_menu_item_"+menuN+"_"+i)

				if(m.items[i].level==1 && (!m.attr.dir || m.attr.dir.charAt(0)!='v')){
					var left=offset.getLeft()-submenu.getLeft()+item.getLeft()+phpnumber(m.attr.submenuleft)
					
					var top=offset.getTop()+offset.getHeight()+phpnumber(m.attr.submenutop)

					if(getWindowHeight()+getScrollY()<top+submenu.getHeight()){
						top=offset.getTop()-submenu.getHeight()
					}

				}else{
					var left=offset.getLeft()+offset.getWidth()+phpnumber(m.attr.subsubmenuleft)

					var top=offset.getTop()-submenu.getTop()+item.getTop()+phpnumber(m.attr.subsubmenutop)
	
					if(getWindowHeight()+getScrollY()<top+item.getHeight()+offset.getHeight()){
						top=offset.getTop()-item.getHeight()+offset.getHeight()-submenu.getTop()+item.getTop()
					}

				}

				if(getWindowWidth()+getScrollX()<left+submenu.getWidth()){
					left=offset.getLeft()-submenu.getWidth()
				}

				if(left<getScrollX()){
					left=getScrollX()
				}
				if(top<getScrollY()){
					top=getScrollY()
				}
				
				item.moveTo(left, top)

				item.show()
				m.items[i].visible=true
				m.items[i].must_show=false
			}else{
				item.hide()
				m.items[i].visible=false
			}
		}		
		
	}else{
		var item=layer("k_submenu_"+menuN+"_"+n)
		if(!item) {
			return
		}
		item.hide()
		item.visible=false

	}
	return true
}