Hallo Dieter,
sorry wie gesagt ich habe vom Programieren nicht so die Ahnung, das Script habe ich mir aus dem Netz gezogen und nach Anleitung umgebaut soweit ich konnte.
Das hier steht im *.js:
function makeMenuObj(obj,nest){ nest=(!nest) ? "":'document.'+nest+'.' this.evnt = document.getElementById?document.getElementById(obj):document.all?document.all[obj]:document.layers?eval(nest+'document.'+obj):0; this.css = this.evnt.style?this.evnt.style:this.evnt; this.ref=document.layers?this.evnt.document:document; this.x=this.css.left||this.evnt.offsetLeft; this.y=this.css.top||this.evnt.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(document.getElementById) document.getElementById(this.id+"img").src = img else if(document.layers) this.ref.layers[0].document.images[0].src = img else document.images[this.id+"img"].src = img } function b_clipTo(t,r,b,l,w){if(document.layers){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+"px,"+r+"px,"+b+"px,"+l+"px)"; if(w){this.css.pixelWidth=this.css.width=r; this.css.pixelHeight=this.css.height=b}}} /******************************************************************************** Initiating page, making objects.. ********************************************************************************/ createSlideMenu.prototype.init = function(){ document.write("</div>") this.cont=new makeMenuObj(this.name+'cont') this.cont.moveIt(this.menux,this.menuy) var yy = 0, el //Make top menus for(var j=0;j<this.topmenus.length;j++){ el = this.menus[this.topmenus[j]] el.o = new makeMenuObj(this.name+""+el.num,this.name+"cont") el.o.moveIt(this.l[0].left,yy); el.top = j; el.origy = yy el.o.id = el.id; el.o.status=1; el.o.h = this.l[0].height; el.img = this.l[0].regImage yy+=el.o.h + this.l[0].between; el.o.clipTo(0,this.l[0].width,el.o.h,0,1) if(j!=this.topmenus.length-1) el.nexttop = this.topmenus[el.top+1] this.loop(el.num,j) } this.cont.showIt(); this.cont = null; this.level = null; } createSlideMenu.prototype.loop = function(num,j){ var el = this.menus[num],temp,p,h,w,y,img for(var i=0;i<el.childs.length;i++){ temp = el.childs[i] w = this.l[temp.lev].width; h = this.l[temp.lev].height y = el.o.y+el.o.h + hi + this.l[temp.lev].betweeni + this.l[temp.lev].between temp.o = new makeMenuObj(this.name+""+temp.num,this.name+"cont") temp.o.hideIt(); temp.o.clipTo(0,w,h,0,1) temp.o.moveIt(this.l[temp.lev].left,y) el.endy =y+h; temp.origy = y temp.o.zIndex=temp.num temp.o.h = h; temp.top = j temp.chnum = i; temp.o.id = temp.id if(this.useImages){ //Setting bgimage img="" if(temp.childs.length>0){ //With subs if(i==el.childs.length-1) img=this.l[temp.lev].subRound else img=this.l[temp.lev].subImg }else if(i==el.childs.length-1){ img=this.l[temp.lev].roundImg2 } if(img){ temp.o.bgImg(img); temp.img = img }else temp.img = this.l[temp.lev].regImage } p = this.menus[temp.parent] //Setting the next elements if(temp.chnum != p.childs.length-1){ //Not the last el temp.nextel = p.childs[temp.chnum+1].num temp.nexttop = temp.lev==1?p.nexttop:p.nextel }else{ //Last el, so we only have nexttop temp.nexttop = p.nextel if(temp.nexttop==-1) temp.nexttop = p.nexttop } if(temp.childs.length>0){ this.loop(temp.num,j) //Recursive call } } }
/******************************************************************************** Moving all objects in the array after a provided array number / createSlideMenu.prototype.moveItems = function(px,num){ for(i=num;i<this.menus.length;i++){ if(this.menus[i].o.status){ //Moving all visible menus this.menus[i].o.movey(this.menus[i].o.y+px) } } } / Switch menu function. / createSlideMenu.prototype.switchMenu = function(num){ if(this.going) return var m = this.menus[num] if(m.childs.length==0) return this.going = 1 var y=m.o.y+ m.o.h +this.l[m.lev].between var clnum = m.num, olev = m.lev, onext = m.nextel if(this.active[0]>-1){ var n = -1 if(m.lev>0){ if(this.active[m.lev]>-1) n=this.active[m.lev] else n=this.active[m.lev-1] }else n = this.active[0] m = this.menus[n] if(m.lev == 0 && olev==0) y = m.nexttop!=-1?this.menus[m.nexttop].origy:-1 else if(clnum!=m.num){ var ny = m.o.y + m.o.h + this.l[m.lev].between if(clnum>m.num && olev==m.lev) y = Math.min(ny,y) else if(onext==m.num) y = Math.max(ny,y) } } this.moveUp(m.nextel!=-1?m.nextel:m.nexttop,num,y) } / Move items up / createSlideMenu.prototype.moveUp = function(top,num,y){ var move = 0, m, yy=0; if(this.active[0]>-1 && top>-1){ m = this.menus[top] if(m.o.y>y){ if((m.o.y-this.pxspeed)<y) yy = -(((m.o.y-y))) else yy=-this.pxspeed; this.moveItems(yy,top) move=1 } } if(move) setTimeout(this.name+".moveUp("+top+","+num+","+y+")",this.timspeed) else{ m = this.menus[num] for(var i=m.lev;i<this.active.length;i++){ //Reset images - actives et cetera if(this.active[i]>-1){ temp = this.menus[this.active[i]] temp.o.moveIt(temp.o.x-this.inset,temp.o.y) if(this.useImages) temp.o.bgImg(temp.img) //Change bg if(this.arrow) temp.ar.replaceChild(document.createTextNode("4"),temp.ar.childNodes[0]) ch = temp.childs for(var j=0;j<ch.length;j++){ ch[j].o.hideIt(); ch[j].o.movey(ch[j].origy) } this.active[i] = -1 } } //Then open the current one, if childs if(m.childs.length == 0){this.going = 0; return} for(i=0;i<m.childs.length;i++){ //Show all m.childs[i].o.showIt() y = m.childs[i].o.y + m.childs[i].o.h } y+=this.l[m.lev].between if(m.lev>0 && m.chnum!=this.menus[m.parent].childs.length-1){ yy=y; y = this.menus[m.parent].endy + this.l[m.lev].between } m.o.moveIt(m.o.x+this.inset,m.o.y) //Inset current item: if(this.useImages) m.o.bgImg(this.l[m.lev].roundImg) //Change bg this.active[m.lev] = num //Set active if(this.arrow) m.ar.replaceChild(document.createTextNode("6"),m.ar.childNodes[0]) if(m.nexttop>-1 || m.nextel>-1) this.moveDown(m.nexttop,m.nextel,y,yy) //Then start moving all other elements down else this.going=0 } } / Move items down / createSlideMenu.prototype.moveDown = function(top,num,y,yyy){ var m = this.menus[top],yy if(m && m.o.y<y){ if((m.o.y+this.pxspeed)>y) yy = y-m.o.y else yy=this.pxspeed this.moveItems(yy,top) setTimeout(this.name+".moveDown("+top+","+num+","+y+","+yyy+")",this.timspeed) }else if(num>-1){ this.moveDown(num,-1,yyy,0) }else this.going=0 } / Slide menu object / function createSlideMenu(name){ document.write('<div id="'+name+'cont">') //The cont div start this.name = name this.menus = new Array() this.curr = 0 this.lasttype = new Array() this.writesubsonly = 0 this.level = new Array() this.l = new Array() this.topmenus = new Array() this.active = new Array() return this } / Function to create the objects and the divs ********************************************************************************/ createSlideMenu.prototype.makeMenu = function(type,text,lnk,target,end){ var str="",tg="",parent,m,cl m = this.menus[this.curr] = new Object() this.lasttype[type] = this.curr; if(!lnk) lnk="#" m.lev = 0; m.type = type; m.childs = new Array() m.num = this.curr; m.parent = -1; m.nextel = -1 m.nexttop = -1; parent = 0 //DEBUGGING:::::: m.text = text
if(type.indexOf("sub")>-1){ //Find parent type if(type.length == 3){ //sub parent = "top"; m.lev = 1 }else{ parent = type.substr(3,1) //sub2+ m.lev = parent; parent-- if(parent==1){ parent = "sub"; m.lev = 2 }else parent = "sub"+parent } } if(m.lev>=this.l.length){//Level control (same as CM4) var p1,p2=0; if(m.lev>=this.level.length) p1=this.l[this.level.length-1]; else p1=this.level[m.lev]; this.l[m.lev]=new Array(); if(!p2) p2=this.l[m.lev-1] if(m.lev!=0 && p1){ for(i in p1){ //Copying an entire object if(p1[i]==null) this.l[m.lev][i]=p2[i]; else this.l[m.lev][i]=p1[i] } }else{ this.l[m.lev]=this.level[0]; } this.level[m.lev]=p1=p2=null } this.active[m.lev] = -1 if(parent){ //Find parent element m.parent = this.lasttype[parent] parent = this.menus[this.lasttype[parent]] parent.childs[parent.childs.length] = m if(this.arrow && parent.childs.length==1){str='<span class="'+this.arrow+'">4</span>' if(document.getElementById && document.getElementById(parent.id).childNodes){ parent.ar = document.getElementById(parent.id).childNodes[this.useImage?1:0].childNodes[0] parent.ar.innerHTML = str+parent.ar.innerHTML; parent.ar=parent.ar.childNodes[0]} else this.arrow="" } }else this.topmenus[this.topmenus.length] = this.curr if(!this.writesubsonly || type!="top"){ cl = this.l[m.lev].className m.id = id = this.name + "_" + this.curr str= '<div id="'+id+'" class="'+cl+'">' //main div start if(this.useImages){ str+='<div class="'+this.bgClass+'">'//bgdiv str+='<img id="'+id+'_img" src="'+this.l[m.lev].regImage+'" />' str+='</div>' //bgdiv } if(target) tg =' target="'+target+'" ' str+='<div class="'+this.txtClass+'"><a href="'+lnk+'" '+tg+' onclick="'+this.name+'.switchMenu('+this.curr+'); if(document.getElementById) this.blur(); ' if(lnk=="#") str+='return false' str+='" class="'+this.l[m.lev].classNameA+'"> '+text+'</a><br /></div>\n' str+="</div>\n\n" //main div end document.write(str) } this.curr++ }
/******************************************************************************** Level object / function slideMenu_makeLevel(){ var c=this, a=arguments; c.left=a[0]||0; c.width=a[1]||null; c.height=a[2]||null; c.between=a[3]||null; c.className=a[4]||null; c.classNameA=a[5]||null; c.regImage=a[6]||null; c.roundImg=a[7]||null; c.roundImg2=a[8]||null; c.subImg=a[9]||null; c.subRound=a[10]||null; return c } / Preloading images ********************************************************************************/ function preLoadBackgrounds(){ for(i=0;i<arguments.length;i++){ this[i]=new Image() this[i].src=arguments[i] } return this }