/*******************************************************************************
Copyright (c) 1999 Thomas Brattli (www.bratta.com)

eXperience DHTML coolFrameMenus - Get it at www.bratta.com
Version Beta 1.0
This script can be used freely as long as all copyright messages are
intact.

Visit www.bratta.com/dhtml/scripts.asp for the latest version of the script.

(You can delete the comments below to save space)

Known bugs:

Opera 4: This menu is very close to working on Opera, but as far as I could
figure out opera don't support innerHTML or document.createElement() which
makes the changing of the text inside the submenus hard to do. If anyone
know a solution to this please let me know.

Netscape 6: This will not work on any Mozilla version below M17 (no innerHTML support)
Netscape PR1 is M14 I think. It should work on Mozilla, but I seems to be having
some problems with reaching elements over frames. I think that this is a bug
in Mozilla and hopefully they will fix the framesupport sometime soon.

Explorer 4 for mac:
It will not work in this browser, nothing does. It works just fine in Explorer 5
for mac though.

Script checked with:
PC
Netscape 4.08
Netscape 4.03
Netscape 4.04
Internet Explorer 4.01
Internet Explorer 5.0
Internet Explorer 5.5
Mozilla M17 <-- Not working yet
Opera 4 <-- Not working yet
MAC
Netscape 4
Explorer 5

LAST NOTE:
I would reccomend to not use to many items on each menu. You will get
flickering on older machines if you do... Try keeping it at a max of 10

THE REALLY LAST NOTE:
If you have this linked js file inside another directory then your menu.html
file be aware of that Explorer treats realtive links relative to menu.html while
Netscape treats it relative to this file. So I suggest that you keep this
file and your menu.html in the same directory.

If there are features you think should be added to this menu please
post it in the coolMenu and coolframeMenu forum at my site:
http://www.bratta.com/dhtml/scripts.asp?url=forum
*******************************************************************************/

/*****************************************************************************
Pageobject
******************************************************************************/
function makePageCoords(){
        this.x=0;this.x2=(bw.ns4 || bw.ns5)?innerWidth:document.body.offsetWidth-3;
        this.y=0;this.y2=(bw.ns4 || bw.ns5)?innerHeight+3:document.body.offsetHeight;
        this.x50=this.x2/2;        this.y50=this.y2/2;
        this.x10=(this.x2*10)/100-5;this.y10=(this.y2*10)/100-5
        this.x15=(this.x2*15)/100-5;this.y15=(this.y2*15)/100-5;
        return this;
}

/*****************************************************************************
Debugging function
******************************************************************************/
function debug(txt,ev){
        if(mDebugging==2) self.status=txt
        else alert(txt)
        if(ev) eval(ev)
        return false
}
/********************************************************************************
Checking if the values are % or not.
********************************************************************************/
function cf_checkp(num,w,check){
        if(num){
                if(num.toString().indexOf("%")!=-1){
                        if(w || check && (this.frametype==2 || this.frametype==3)) num=(page.x2*parseFloat(num)/100)
                        else num=(page.y2*parseFloat(num)/100)
                }else num=parseFloat(num)
        }else num=0
        return num
}
/*****************************************************************************
General function to check if the frame exists.
******************************************************************************/
function cf_checkFrame(){
        if(top[this.menuFrameName]) return true
        else return false
}
/*****************************************************************************
Checking if the main frame has been scrolled or not!
******************************************************************************/
function cf_checkScrolled(){
        if(!top[this.menuFrameName]) return
        if(bw.ns4 || bw.ns5){
                this.scrolledX=top[this.menuFrameName].pageXOffset
                this.scrolledY=top[this.menuFrameName].pageYOffset
        }else{
                this.scrolledX=top[this.menuFrameName].document.body.scrollLeft
                this.scrolledY=top[this.menuFrameName].document.body.scrollTop
        }
}
/*****************************************************************************
General objects function, for frameobjects and regular objects!
******************************************************************************/
function makeFObj(frame,obj,parent,topnum,subnum,sub2num,sub3num,border){
        if(frame){
                if(!top[frame] && mDebugging) return debug('Frame: '+frame+' doesn\'t exist'+top[frame])
                  this.evnt=bw.dom?top[frame].document.getElementById(obj):bw.ie4?top[frame].document.all[obj]:bw.ns4?eval('top.'+frame+'.document.'+obj):0;
        }else{
                  this.evnt=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval('document.'+obj):0;
        }
        if(mDebugging){
                if(!this.evnt) return debug('There seems to be an error with this layer:\nFrame: '+frame+'\nLayer: '+obj)
        }
        this.css=bw.dom||bw.ie4?this.evnt.style:bw.ns4?this.evnt:0;
        this.ref=bw.dom || bw.ie4?document:bw.ns4?this.css.document:0;
        this.writeIt=cf_writeIt;
        this.height=bw.ns4?this.ref.height:this.evnt.offsetHeight;
        this.width=bw.ns4?this.ref.width:this.evnt.offsetWidth;
        this.x=(bw.ns4 || bw.ns5)? parseInt(this.css.left):this.evnt.offsetLeft;
        this.y=(bw.ns4 || bw.ns5)? parseInt(this.css.top):this.evnt.offsetTop;
        this.hideIt=cf_hideIt;        this.showIt=cf_showIt; this.clipTo=cf_clipTo;
        this.moveIt=cf_moveIt; this.bgChange=cf_bgChange;
        this.parent=parent
        if(frame && !border){
                this.evnt.onmouseover=new Function(parent.name+".mmover("+subnum+","+sub2num+","+sub3num+")");
                this.evnt.onmouseout=new Function(parent.name+".mmout("+subnum+","+sub2num+","+sub3num+")");
        }else if(!border){
                this.evnt.onmouseover=new Function(parent.name+".mover("+topnum+")");
                this.evnt.onmouseout=new Function(parent.name+".mmout2()");
        }
        this.obj = obj + "Object";         eval(this.obj + "=this")
        this.fcChange=cf_fcChange;
        return this
}
function cf_showIt(){this.css.visibility="visible"}
function cf_hideIt(){this.css.visibility="hidden"}
function cf_bgChange(color){if(color){if(bw.dom || bw.ie4) this.css.backgroundColor=color
else if(bw.ns4) this.css.bgColor=color}}
function cf_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}}}
function cf_moveIt(x,y){this.x=x; this.y=y; this.css.left=x;this.css.top=this.y}
function cf_place(){this.moveIt(this.pagex,this.pagey); this.showIt()}
function cf_writeIt(text){if(bw.ns4){this.ref.write(text);this.ref.close()}
else this.evnt.innerHTML=text}
function cf_fcChange(color){
        if(bw.ie4){
                this.evnt.children[0].style.color=color
        }else{
                this.evnt.childNodes[0].style.color=color
        }
}
/*****************************************************************************
Event functions
******************************************************************************/
//Mouseover on sub and sub2 menus
function cf_mmover(subnum,sub2num,sub3num){
        clearTimeout(this.tim)
        this.over=1
        if(sub3num>-1){
                this.activeSub3=sub3num
                this.sub3[sub3num].bgChange(this.sub3bgcoloron)
                if(!bw.ns4) this.sub3[sub3num].fcChange(this.sub3hovercolor)
        }else if(sub2num>-1){
                if(this.activeSub2>-1) this.sub2[this.activeSub2].bgChange(this.sub2bgcoloroff)
                this.activeSub2=sub2num
                this.sub2[sub2num].bgChange(this.sub2bgcoloron)
                if(!bw.ns4) this.sub2[sub2num].fcChange(this.sub2hovercolor)
                this.showSub3(sub2num)
        }else if(subnum>-1){
                if(this.activeSub>-1) this.sub[this.activeSub].bgChange(this.subbgcoloroff)
                if(this.activeSub2>-1) this.sub2[this.activeSub2].bgChange(this.sub2bgcoloroff)
                this.activeSub=subnum
                this.sub[subnum].bgChange(this.subbgcoloron)
                if(!bw.ns4) this.sub[subnum].fcChange(this.subhovercolor)
                this.hideSub3()
                this.showSub2(subnum)
        }
}
//Mouseout on sub and sub2 menus
function cf_mmout(subnum,sub2num,sub3num){
        this.tim=setTimeout(this.name+".mout()",500)
        this.over=0
        if(sub3num>-1){
                this.sub3[sub3num].bgChange(this.sub3bgcoloroff)
                if(!bw.ns4) this.sub3[sub3num].fcChange(this.sub3textcolor)
        }else if(sub2num>-1){
                if(this.activeTop>-1 && this.activeSub>-1 && this.mtop[this.activeTop].sub.length!=0){
                        if(!bw.ns4) this.sub2[sub2num].fcChange(this.sub2textcolor)
                        if(!this.mtop[this.activeTop].sub[this.activeSub].sub[sub2num]) return
                        if(this.mtop[this.activeTop].sub[this.activeSub].sub[sub2num].sub.length==0) this.sub2[sub2num].bgChange(this.sub2bgcoloroff)
                }
        }else if(subnum>-1){
                if(this.activeTop>-1 && this.mtop[this.activeTop].sub.length!=0){
                        if(!bw.ns4) this.sub[subnum].fcChange(this.subtextcolor)
                        if(!this.mtop[this.activeTop].sub[subnum]) return
                        if(this.mtop[this.activeTop].sub[subnum].sub.length==0)        this.sub[subnum].bgChange(this.subbgcoloroff)
                }
        }
}
function cf_mmout2(name){
        this.tim=setTimeout(this.name+".mout()",500)
        this.over2=0
}
//Mouseover on the top menus
function cf_mover(num){
        if(!this.checkFrame() || !this.loaded) return
        clearTimeout(this.tim)
        if(this.activeTop>-1){
                if(this.bordersize>0) this.sub.border.hideIt()
                this.top[this.activeTop].bgChange(this.mainbgcoloroff)
                if(!bw.ns4) this.top[this.activeTop].css.color=this.maintextcolor
        }
        this.activeTop=num
        this.top[this.activeTop].bgChange(this.mainbgcoloron)
        this.hideSub2(); this.hideSub3()
        this.checkScrolled()
        if(!bw.ns4) this.top[num].css.color=this.mainhovercolor
        this.over2=1
        ln=this.mtop[num].sub.length
        for(i=0;i<this.maxsubs;i++){
                if(i<ln){
                        this.sub[i].writeIt('<span class="clSub">'+this.mtop[num].sub[i].text+'</span>')
                        this.sub[i].bgChange(this.subbgcoloroff)
                        if(bw.ns4){
                                this.sub[i].ref.captureEvents(Event.MOUSEDOWN)
                                this.sub[i].ref.onmousedown=new Function(this.name+".go("+num+","+i+")")
                        }else this.sub[i].evnt.onclick=new Function(this.name+".go("+num+","+i+")")
                        this.sub[i].bgChange(this.subbgcoloroff)
                        this.sub[i].showIt()
                        if(this.frametype==0){
                                x=this.subXplacement
                                y=this.top[num].y + (this.subheight*i) +this.subYplacement + (this.bordersize*i)
                        }else if(this.frametype==1){
                                x=this.framesize- this.subwidth +this.subXplacement
                                y=this.top[num].y + (this.subheight*i) +this.subYplacement + (this.bordersize*i)
                        }else if(this.frametype==2){
                                x=this.top[num].x+this.subXplacement
                                y=this.subYplacement + (this.subheight*i) + (this.bordersize*i)
                        }else if(this.frametype==3){
                                x=this.top[num].x+this.subXplacement
                                y=this.framesize - ((ln-i-1)*this.subheight)-this.subheight+this.subYplacement+(this.bordersize*i)-(this.bordersize*ln)
                        }
                        if(this.pagecheck){
                                if(this.frametype==2 || this.frametype==3){
                                        if(x+this.subwidth>page.x2) x=this.top[num].x - this.subwidth + this.top[num].width
                                }
                        }
                        this.sub[i].moveIt(x+this.scrolledX,y+this.scrolledY)
                }else this.sub[i].hideIt()
        }
        if(this.bordersize>0){
                if(ln!=0){
                        this.sub.border.clipTo(0,this.subwidth + this.bordersize*2, this.subheight*ln + this.bordersize*(ln+1) ,0,1)
                        this.sub.border.moveIt(this.sub[0].x-this.bordersize, this.sub[0].y-this.bordersize)
                        this.sub.border.showIt()
                }else this.sub.border.hideIt()
        }
}
//Mouseout on all menus
function cf_mout(){
        if(!this.checkFrame() || !this.loaded || this.over) return
        this.activeTop=-1
        clearTimeout(this.tim)
        for(i=0;i<this.top.length;i++){this.top[i].bgChange(this.mainbgcoloroff); if(!bw.ns4) this.top[i].css.color=this.maintextcolor}
        for(i=0;i<this.maxsubs;i++){this.sub[i].hideIt()}
        if(this.bordersize>0) this.sub.border.hideIt()
        this.activeSub=-1; this.activeSub2=-1; this.activeSub2=-1
        this.hideSub2(); this.hideSub3()
}
/*****************************************************************************
Function that "resets" the object pointers when a new page loads.
Without this Explorere crashes.
******************************************************************************/
function cf_refresh(){
        for(i=0;i<this.maxsubs;i++){
                this.sub[i]=new makeFObj(this.menuFrameName,'divSub'+i,this,-1,i,-1,-1)
        }
        for(i=0;i<this.maxsubs2;i++){
                this.sub2[i]=new makeFObj(this.menuFrameName,'divSub2_'+i,this,-1,-1,i,-1)
        }
        for(i=0;i<this.maxsubs3;i++){
                this.sub3[i]=new makeFObj(this.menuFrameName,'divSub3_'+i,this,-1,-1,-1,i)
        }
        this.loaded=true
        for(i=0;i<this.mtop.length;i++){
                if(this.bordersize>0) this.top[i].border.showIt()
                this.top[i].showIt()
        }
        if(this.frametype==1){ //Right menu
                this.framesize=bw.ns4||bw.ns5?top[this.menuFrameName].innerWidth+5:top[this.menuFrameName].document.body.offsetWidth-3;
        }else if(this.frametype==3){ //Bottom menu
                this.framesize=bw.ns4||bw.ns5?top[this.menuFrameName].innerHeight+5:top[this.menuFrameName].document.body.offsetHeight-1;
        }
        if(this.bordersize>0){
                this.sub.border=new makeFObj(this.menuFrameName,'divSubBorder',this,-1,-1,-1,-1,1)
                this.sub2.border=new makeFObj(this.menuFrameName,'divSub2Border',this,-1,-1,-1,-1,1)
                this.sub3.border=new makeFObj(this.menuFrameName,'divSub3Border',this,-1,-1,-1,-1,1)
        }
}
/*****************************************************************************
Shows and hides the sub2s
******************************************************************************/
function cf_showSub2(num){
        if(this.activeTop<0) return
        if(!this.mtop[this.activeTop].sub[num])return
        ln=this.mtop[this.activeTop].sub[num].sub.length
        for(i=0;i<this.maxsubs2;i++){
                if(i<ln){
                        this.sub2[i].writeIt('<span class="clSub2">'+this.mtop[this.activeTop].sub[num].sub[i].text+'</span>')
                        this.sub2[i].bgChange(this.sub2bgcoloroff)
                        if(bw.ns4){
                                this.sub2[i].ref.captureEvents(Event.MOUSEDOWN)
                                this.sub2[i].ref.onmousedown=new Function(this.name+".go("+this.activeTop+","+num+","+i+")")
                        }else this.sub2[i].evnt.onclick=new Function(this.name+".go("+this.activeTop+","+num+","+i+")")
                        if(this.frametype==3) y=this.sub[num].y- ((ln-i-1)*this.sub2height)+this.sub2Yplacement+(this.bordersize*i)-(this.bordersize*ln)
                        else y=this.sub[num].y+(i*this.sub2height)+this.sub2Yplacement+(this.bordersize*i)
                        x=this.sub[num].x+this.sub2Xplacement
                        if(this.pagecheck){
                                if(this.frametype==2 || this.frametype==3){
                                        if(x+this.sub2width>page.x2) x=this.sub[num].x-this.sub2Xplacement
                                }
                        }
                        this.sub2[i].moveIt(x,y)
                        this.sub2[i].bgChange(this.sub2bgcoloroff)
                        this.sub2[i].showIt()
                }else this.sub2[i].hideIt()
        }
        if(this.bordersize>0){
                if(ln!=0){
                        this.sub2.border.clipTo(0,this.sub2width + this.bordersize*2, this.sub2height*ln + this.bordersize*(ln+1),0,1)
                        this.sub2.border.moveIt(this.sub2[0].x-this.bordersize, this.sub2[0].y-this.bordersize)
                        this.sub2.border.showIt()
                }else this.sub2.border.hideIt()
        }
}
function cf_hideSub2(num){
        for(i=0;i<this.maxsubs2;i++){
                this.sub2[i].hideIt()
        }
        if(this.bordersize>0) this.sub2.border.hideIt()
}
/*****************************************************************************
Shows and hides the sub3s
******************************************************************************/
function cf_showSub3(num){
        if(this.activeTop<0 || this.activeSub<0 || this.mtop[this.activeTop].sub.length==0) return
        if(!this.mtop[this.activeTop].sub[this.activeSub].sub[num]) return
        ln=this.mtop[this.activeTop].sub[this.activeSub].sub[num].sub.length
        for(i=0;i<this.maxsubs3;i++){
                if(i<ln){
                        this.sub3[i].writeIt('<span class="clSub3">'+this.mtop[this.activeTop].sub[this.activeSub].sub[num].sub[i].text+'</span>')
                        this.sub3[i].bgChange(this.sub3bgcoloroff)
                        if(bw.ns4){
                                this.sub3[i].ref.captureEvents(Event.MOUSEDOWN)
                                this.sub3[i].ref.onmousedown=new Function(this.name+".go("+this.activeTop+","+this.activeSub+","+num+","+i+")")
                        }else this.sub3[i].evnt.onclick=new Function(this.name+".go("+this.activeTop+","+this.activeSub+","+num+","+i+")")
                        if(this.frametype==3) y=this.sub2[num].y - ((ln-i-1)*this.sub3height) + this.sub3Yplacement+(this.bordersize*i)-(this.bordersize*ln)
                        else y=this.sub2[num].y+ (i*this.sub3height) + this.sub3Yplacement+(this.bordersize*i)
                        x=this.sub2[num].x+this.sub3Xplacement
                        if(this.pagecheck){
                                if(this.frametype==2 || this.frametype==3){
                                        if(x+this.sub3width+10>page.x2) x=this.sub2[num].x-this.sub3Xplacement
                                }
                        }
                        this.sub3[i].moveIt(x,y)
                        this.sub3[i].showIt()
                }else this.sub3[i].hideIt()
        }
        if(this.bordersize>0){
                if(ln!=0){
                        this.sub3.border.clipTo(0,this.sub3width + this.bordersize*2, this.sub3height*ln + this.bordersize*(ln+1),0,1)
                        this.sub3.border.moveIt(this.sub3[0].x-this.bordersize, this.sub3[0].y-this.bordersize)
                        this.sub3.border.showIt()
                }else this.sub3.border.hideIt()
        }
}
function cf_hideSub3(num){
        for(i=0;i<this.maxsubs3;i++){
                this.sub3[i].hideIt()
        }
        if(this.bordersize>0) this.sub3.border.hideIt()
}
/*****************************************************************************
Sets the top menus
******************************************************************************/
function cf_construct(){
        this.top=new Array()
        this.x=this.checkp(this.fromleft,1); this.y=this.checkp(this.fromtop)
        this.pxbetween=this.checkp(this.pxbetween,0,1)
        for(i=0;i<this.mtop.length;i++){
                this.top[i]=new makeFObj(0,'divTop'+i,this,i,-1,-1,-1)
                this.top[i].bgChange(this.mainbgcoloroff)
                if(this.menuplacement!=0){
                        if(this.frametype==2 || this.frametype==3) this.x=this.checkp(this.menuplacement[i],0,1)
                        else this.y=this.checkp(this.menuplacement[i],0,1)
                }
                this.w=this.mtop[i].width||this.mainwidth
                this.top[i].moveIt(this.x,this.y)
                this.top[i].bgChange(this.mainbgcoloroff)
                this.top[i].clipTo(0,this.w,this.mainheight,0,1)
                this.top[i].width=this.w
                if(this.bordersize>0){
                        this.top[i].border=new makeFObj(0,'divTop'+i+'Border',this,i,-1,-1,-1,1)
                        this.top[i].border.moveIt(this.x-this.bordersize,this.y-this.bordersize)
                        this.top[i].border.bgChange(this.bordercolor)
                        this.top[i].border.clipTo(0,this.w+this.bordersize*2,this.mainheight+this.bordersize*2,0,1)
                }
                if(bw.ns4){
                        this.top[i].ref.captureEvents(Event.MOUSEDOWN)
                        this.top[i].ref.onmousedown=new Function(this.name+".go("+i+")")
                }else this.top[i].evnt.onclick=new Function(this.name+".go("+i+")")
                if(this.frametype==2 || this.frametype==3) this.x+=this.w+this.pxbetween
                else this.y+=this.mainheight+this.pxbetween
        }
        setTimeout("window.onresize=resized;",500)
}
/*****************************************************************************
Refreshing page if it's resized! - You can disable or change this if you want.
It's not 100% safe, but it should work in most frame enviroments
******************************************************************************/
function resized(){
        page2=new makePageCoords()
        if(page2.x2!=page.x2 || page.y2!=page2.y2){
                //Trapping what page that's in the frameset!
                if(top[oCFMenu.menuFrameName]) murl=top[oCFMenu.menuFrameName].location.href
                else murl=""
                if(murl.indexOf("http://")>-1){ //if not it's a local test page
                        murl=murl.substr(murl.indexOf("/")+2,murl.length)
                        currurl=location.href
                        sign=currurl.indexOf("?")>-1?"&":"?"
                        location.href=location.href  + sign + "resizedurl=" + murl
                }else location.reload()
        }
}
/*****************************************************************************
Make functions
******************************************************************************/
function cf_makeTop(text,link,target,width,fc){
        this.mtop[this.a]=new Array()
        this.mtop[this.a].sub=new Array()
        this.mtop[this.a].text=text
        this.mtop[this.a].link=link
        this.mtop[this.a].target=target
        this.mtop[this.a].width=width
        this.mtop[this.a].fc=fc
        this.b=0; this.a++
        if(this.bordersize>0) document.write('\n<div id="divTop'+(this.a-1)+'Border" class="clMainBorder"></div>\n')
        document.write('\n<div id="divTop'+(this.a-1)+'" class="clMain">'+text+'</div>\n')
}
function cf_makeSub(text,link,target,fc){
        this.mtop[this.a-1].sub[this.b]=new Array()
        this.mtop[this.a-1].sub[this.b].sub=new Array()
        this.mtop[this.a-1].sub[this.b].text=text
        this.mtop[this.a-1].sub[this.b].link=link
        this.mtop[this.a-1].sub[this.b].target=target
        this.mtop[this.a-1].sub[this.b].fc=fc
        this.c=0; this.b++
}
function cf_makeSub2(text,link,target,fc){
        this.mtop[this.a-1].sub[this.b-1].sub[this.c]=new Array()
        this.mtop[this.a-1].sub[this.b-1].sub[this.c].sub=new Array()
        this.mtop[this.a-1].sub[this.b-1].sub[this.c].text=text
        this.mtop[this.a-1].sub[this.b-1].sub[this.c].link=link
        this.mtop[this.a-1].sub[this.b-1].sub[this.c].target=target
        this.mtop[this.a-1].sub[this.b-1].sub[this.c].fc=fc
        this.d=0; this.c++
}
function cf_makeSub3(text,link,target,fc){
        this.mtop[this.a-1].sub[this.b-1].sub[this.c-1].sub[this.d]=new Array()
        this.mtop[this.a-1].sub[this.b-1].sub[this.c-1].sub[this.d].text=text
        this.mtop[this.a-1].sub[this.b-1].sub[this.c-1].sub[this.d].link=link
        this.mtop[this.a-1].sub[this.b-1].sub[this.c-1].sub[this.d].target=target
        this.mtop[this.a-1].sub[this.b-1].sub[this.c-1].sub[this.d].fc=fc
        this.d++
}
/*****************************************************************************
This function makes the string that will be written out in the main frame
whenever a page loads there.
******************************************************************************/
function cf_makeFrameString(){
        this.subwidth=this.checkp(this.subwidth,1)
        this.subheight=this.checkp(this.subheight)
        this.sub2width=this.checkp(this.sub2width,1)
        this.sub2height=this.checkp(this.sub2height)
        this.sub3width=this.checkp(this.sub3width,1)
        this.sub3height=this.checkp(this.sub3height)
        sw=bw.ns4?6:3;
        str='\n<style>\n'
                +'SPAN.clSub{'+this.substyle+'; width:'+(this.subwidth-sw)+'; color:'+this.subtextcolor+'}\n'
                +'SPAN.clSub2{'+this.sub2style+'; width:'+(this.sub2width-sw)+'; color:'+this.sub2textcolor+'}\n'
                +'SPAN.clSub3{'+this.sub3style+'; width:'+(this.sub3width-sw)+'; color:'+this.sub3textcolor+'}\n'
                +'DIV.clSubs{'+this.substyle+'; color:'+this.subcolor+'; cursor:hand; position:absolute; visibility:hidden; clip:rect(0,'+this.subwidth+','+this.subheight+',0); left:0; width:'+this.subwidth+'; height:'+this.subheight+'}\n'
        for(i=0;i<this.maxsubs;i++){
                str+='#divSub'+i+'{top:'+(this.subheight*i)+';}\n'
        }
        if(this.bordersize>0){
                str+='#divSubBorder{position:absolute; background-color:'+this.bordercolor+'; layer-background-color:'+this.bordercolor+'}\n'
                str+='#divSub2Border{position:absolute; background-color:'+this.bordercolor+'; layer-background-color:'+this.bordercolor+'}\n'
                str+='#divSub3Border{position:absolute; background-color:'+this.bordercolor+'; layer-background-color:'+this.bordercolor+'}\n'
        }
        str+='DIV.clSubs3{'+this.sub3style+'; color:'+this.sub3textcolor+'; cursor:hand; position:absolute; visibility:hidden; clip:rect(0,'+this.sub3width+','+this.sub3height+',0); left:0; width:'+this.sub3width+'; height:'+this.sub3height+'}\n'
        str+='DIV.clSubs2{'+this.sub2style+'; color:'+this.sub2textcolor+'; cursor:hand;position:absolute; visibility:hidden; clip:rect(0,'+this.sub2width+','+this.sub2height+',0); left:0; width:'+this.sub2width+'; height:'+this.sub2height+'}\n'
                +'</style>\n\n'
        this.frameString=str
        str="\n\n"
        if(this.bordersize>0) str+='<div id="divSubBorder"></div>\n\n'
        for(i=0;i<this.maxsubs;i++){
                str+='<div id="divSub'+i+'" class="clSubs"></div>\n'
        }
        if(this.bordersize>0) str+='<div id="divSub2Border"></div>\n\n'
        for(i=0;i<this.maxsubs2;i++){
                str+='<div id="divSub2_'+i+'" class="clSubs2"></div>\n'
        }
        if(this.bordersize>0) str+='<div id="divSub3Border"></div>\n\n'
        for(i=0;i<this.maxsubs3;i++){
                str+='<div id="divSub3_'+i+'" class="clSubs3"></div>\n'
        }
        this.frameString2=str
}
/*****************************************************************************
Styles for the top items
******************************************************************************/
function cf_makeStyle(){
        this.mainheight=this.checkp(this.mainheight)
        this.mainwidth=this.checkp(this.mainwidth,1)
        str='\n\n<style>\n'
        str+='\tDIV.clMain{position:absolute; cursor:hand; color:'+this.maintextcolor+'; visibility:hidden; '+this.topstyle+' }\n'
        if(this.bordersize>0)str+='\tDIV.clMainBorder{position:absolute; cursor:hand; visibility:hidden; '+this.topstyle+' }\n'
        str+='</style>\n\n'
        document.write(str)
}
/*****************************************************************************
Going to another page
******************************************************************************/
function cf_go(num,subnum,sub2num,sub3num){
        if(sub3num>-1){
                url=this.mtop[num].sub[subnum].sub[sub2num].sub[sub3num].link
                target=this.mtop[num].sub[subnum].sub[sub2num].sub[sub3num].target
                fc=this.mtop[num].sub[subnum].sub[sub2num].sub[sub3num].fc
        }else if(sub2num>-1){
                url=this.mtop[num].sub[subnum].sub[sub2num].link
                target=this.mtop[num].sub[subnum].sub[sub2num].target
                fc=this.mtop[num].sub[subnum].sub[sub2num].fc
        }else if(subnum>-1){
                url=this.mtop[num].sub[subnum].link
                target=this.mtop[num].sub[subnum].target
                fc=this.mtop[num].sub[subnum].fc
        }else{
                url=this.mtop[num].link
                target=this.mtop[num].target
                fc=this.mtop[num].fc
        }
        if(url){
                this.over=0; this.mout()
                if(target=="_blank") window.open(url)
                else if(target=="_top" || target=="window") top.location.href=url
                else top[target].location.href=url
        }else if(fc){
                eval(fc)
        }
}

/*****************************************************************************
Making the main CoolFrame menu object
******************************************************************************/
function coolFrameMenu(name){
        page=new makePageCoords()
        this.name=name
        this.sub=new Array(); this.sub2=new Array()
        this.sub3=new Array(); this.construct=cf_construct;
        this.over=false; this.tim=100
        this.refresh=cf_refresh;
        this.checkFrame=cf_checkFrame; this.mmout2=cf_mmout2
        this.mover=cf_mover; this.mout=cf_mout;
        this.mmover=cf_mmover; this.mmout=cf_mmout;
        this.a=0; this.b=0; this.c=0; this.d=0;
        this.loaded=false; this.mtop=new Array()
        this.makeTop=cf_makeTop; this.makeSub=cf_makeSub;
        this.makeSub2=cf_makeSub2; this.makeSub3=cf_makeSub3;
        this.showSub2=cf_showSub2; this.hideSub2=cf_hideSub2;
        this.showSub3=cf_showSub3; this.hideSub3=cf_hideSub3;
        this.activeTop=-1; this.activeSub=-1
        this.lastSub=-1; this.frameString2=0
        this.makeFrameString=cf_makeFrameString;
        this.makeStyle=cf_makeStyle;
        this.checkp=cf_checkp;
        this.go=cf_go;
        this.scrolledX=0; this.scrolledY=0
        this.checkScrolled=cf_checkScrolled;
}
