Avatar billede caravelle_dk Nybegynder
01. november 2007 - 11:35 Der er 18 kommentarer

ASP menu virker ikke i IE7

Jeg har fundet ud af at en bestemt menu funktion ikke virker i IE7.
Når jeg så kigger på ASP filen kan jeg heller ikke se den er sat op til en IE7.
Er der en venlig sjæl der kan fixe koden for mig;)

Det skal lige siges at jeg ANER ikke nået om ASP, og ret mig endelig hvis det her ikke er løsningen. Det var bare det jeg tror det kunne være.

Noget af koden ser sådan ud nu, og jeg tror det er her der skal tilføjes noget:

function lib_bwcheck(){ //Browsercheck (needed)
    this.ver=navigator.appVersion; this.agent=navigator.userAgent
    this.dom=document.getElementById?1:0
    this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
    this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;
    this.ie7=(document.all && !this.dom)?1:0;
    this.ie=this.ie7||this.ie5||this.ie6
    this.mac=this.agent.indexOf("Mac")>-1
    this.opera5=this.agent.indexOf("Opera 5")>-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.ie7 || this.ns4 || this.ns6 || this.opera5 || this.dom)
    return this
}
var bw=new lib_bwcheck()




Håber på lidt hjælp....
Avatar billede caravelle_dk Nybegynder
01. november 2007 - 11:38 #1
FEJLLLLLLLL troede men kunne rette i den første indlæg, men koden er forkert i det første..
Det var mig selv der havde prøvet på noget der ikke virkede...

Her der den rigtige:

function lib_bwcheck(){ //Browsercheck (needed)
    this.ver=navigator.appVersion; this.agent=navigator.userAgent
    this.dom=document.getElementById?1:0
    this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
    this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;
    this.ie4=(document.all && !this.dom)?1:0;
    this.ie=this.ie4||this.ie5||this.ie6
    this.mac=this.agent.indexOf("Mac")>-1
    this.opera5=this.agent.indexOf("Opera 5")>-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 || this.dom)
    return this
}
var bw=new lib_bwcheck()
Avatar billede madssch Nybegynder
01. november 2007 - 12:04 #2
Din menu er JavaScript - og ikke ASP.

Nå, anyway. Kender godt denne menu - stod selv med udfordringen på et tidspunkt.

Her en den brugbare kode:

function lib_bwcheck(){ //Browsercheck (needed)
    this.ver=navigator.appVersion; this.agent=navigator.userAgent
    this.dom=document.getElementById?1:0
    this.ie4=(document.all && !this.dom)?1:0;
    this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
    this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;
    this.ie7=(this.ver.indexOf("MSIE 7")>-1 && this.dom)?1:0;
    this.ie=this.ie4||this.ie5||this.ie6||this.ie7
    this.mac=this.agent.indexOf("Mac")>-1
    this.opera5=this.agent.indexOf("Opera 5")>-1
    this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
    this.ns4=(document.layers && !this.dom)?1:0;
    this.bw=(this.ie7 || this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5 || this.dom)
    return this
}
Avatar billede caravelle_dk Nybegynder
01. november 2007 - 12:13 #3
Jeg tror faktisk også jeg prøvede den løsning du skrev der, men dog uden resultat.
Men nu har jeg også fundet en Coolmenu.js hvor der er denne kode...

/*************
Pageobject
***************/
function makePageCoords(win,fr){
    if(!win) win=window
    this.x=0;this.x2=(bw.ns4 || bw.ns6)?win.innerWidth-1:win.document.body.offsetWidth;
    if(!fr&&bw.ie) this.x2-=20; else if(!fr&&bw.ns4) this.x2-=4; else if(bw.ns6) this.x2+=1
    this.y=0;this.y2=(bw.ns4 || bw.ns6)?win.innerHeight:win.document.body.offsetHeight;
    if(bw.ns4&&!win.rows) this.x2+=5; if(!fr&&bw.ie) this.y2-=4; else if(bw.ns4&&fr) this.y2+=4
    this.y2orig=this.y2; this.x50=this.x2/2; this.y50=this.y2/2; return this;
}
/*************
Debugging function
***************/
function debug(txt,ev){if(mDebugging==2) self.status=txt; else alert(txt); if(ev) eval(ev); return false}
/************
Scroll function
*************/
function cm_checkScrolled(obj){
    if(bw.ns4 || bw.ns6) obj.scrolledY=obj.win.pageYOffset
    else obj.scrolledY=obj.win.document.body.scrollTop
    if(obj.scrolledY!=obj.lastScrolled){
        if(!obj.useframes){
            for(i=0;i<obj.l[0].num;i++){var sobj=obj.l[0].o[i].oBorder; sobj.moveY(sobj.y+(obj.scrolledY-obj.lastScrolled))}
            if(obj.usebar) obj.oBar.moveY(obj.oBar.y+(obj.scrolledY-obj.lastScrolled))
        }
        obj.lastScrolled=obj.scrolledY; page.y=obj.scrolledY; page.y2=page.y2orig+obj.scrolledY
        if(!obj.useframes || bw.ie){ clearTimeout(obj.tim); obj.isover=0; obj.hideSubs(1,0)}
    }if((bw.ns4 || bw.ns6) && !obj.useframes) setTimeout("cm_checkScrolled("+obj.name+")",200)
}
/***********************
Checking if the values are % or not.
***************/
function cm_checkp(num,w,check,istop,ds){
    if(num){ var p=istop?toppage:page
        if(num.toString().indexOf("%")!=-1){if(w || (check && this.rows)) num=(p.x2*parseFloat(num)/100)
        else num=(p.y2*parseFloat(num)/100)
        }else num=eval(num)
    }else num=0; return num
}
/************
Making DIV objects + DIV objects code
*************/
function cm_makeObj(obj,name,level,win,nest,o){
    if(o&&(bw.ns4||bw.ns6)) this.evnt=o
    else this.evnt=bw.dom?win.document.getElementById(obj):bw.ie4?win.document.all[obj]:bw.ns4?nest?win.document[nest].document[obj]:win.document[obj]:0;
    if(!this.evnt) return debug('There seems to be an error with this layer:\nFrame: '+win+'\nLayer: '+nest + "." + obj)
    this.css=bw.dom||bw.ie4?this.evnt.style:bw.ns4?this.evnt:0;    this.ref=bw.dom || bw.ie4?win.document:bw.ns4?this.css.document:0;
    this.hideIt=cm_hideIt; this.showIt=cm_showIt; this.writeIt=cm_writeIt; this.setactive=cm_setactive; this.addEvents=cm_addEvents;
    this.moveIt=cm_moveIt; this.clipTo=cm_clipTo; if(name) this.parent=name; this.moveY=cm_moveY; this.l=level; this.clipOut=cm_clipOut;
    this.filterIt=cm_filterIt; this.obj = obj + "Object";     eval(this.obj + "=this"); this.tim=10; this.clipy=0; return this
}
function cm_writeIt(text){if(!this.img1){if(bw.ns4){this.ref.write(text);
this.ref.close()}else this.evnt.innerHTML=text}}; function cm_moveY(y){this.y=y; this.css.top=y}
function cm_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x;this.css.top=this.y}
function cm_showIt(){this.css.visibility="visible"; this.vis=1}; function cm_hideIt(){this.css.visibility="hidden"; this.vis=0}
function cm_clipOut(px,w,ystop,tim,name){
    if(!this.vis) return; if(this.clipy<ystop-px){this.clipy+=px; this.clipTo(0,w,this.clipy,0,1)
        this.tim=setTimeout(this.obj+".clipOut("+px+","+w+","+ystop+","+tim+",'"+name+"')",tim)
    }else{if(bw.ns6){this.hideIt();}; this.clipTo(0,w,ystop,0,1); if(bw.ns6){this.showIt()}}
}
function cm_filterIt(f){if(this.evnt.filters[0]) this.evnt.filters[0].Stop(); else this.css.filter=f; this.evnt.filters[0].Apply(); this.showIt(); this.evnt.filters[0].Play();}
function cm_setactive(on,name,frmmouse){
    if(!name) name=this.name; var tobj=this.parent.m[name]
    if(tobj.img){if(tobj.img2){if(on) this.ref.images[tobj.img].src=tobj.img2; else this.ref.images[tobj.img].src=tobj.img1}
    }else{
        if(on){var color=tobj.c2; var fcolor=tobj.c4; var re=tobj.c3}else{var color=tobj.c1; var fcolor=tobj.c3; var re=tobj.c4}
        if(color){if(bw.dom || bw.ie4) this.css.backgroundColor=color; else if(bw.ns4) if(color=="transparent") color=null; this.css.bgColor=color}
        if(fcolor && !bw.ns4){if(bw.ie4) this.evnt.style.color=fcolor; else if(this.evnt.childNodes[0]) this.evnt.style.color=fcolor
        }else if(fcolor&&frmmouse){t=this.parent.m[name].text; t=t.replace(re,fcolor); this.writeIt(t); if(on) this.addEvents(name,this.parent.name,tobj.lnk,this.parent.useclick)}
        if(tobj.l==0&&bw.ns6){this.parent.l[0].o[tobj.num].oBorder.hideIt(); this.parent.l[0].o[tobj.num].oBorder.showIt();} //Stupid fix for netscape 6....
    }
}
function cm_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}}; this.width=r; this.height=b}
function cm_addEvents(n,name,url,useclick){
    this.evnt.onmouseover=new Function(name+".mover('"+n+"')");
    this.evnt.onmouseout=new Function(name+".mmout('"+n+"')")
    if(!url && useclick) ev=new Function(name+".mover('"+n+"',1)")
    else ev=new Function(name+".go('"+n+"')")
    if(bw.ns4){this.ref.captureEvents(Event.MOUSEDOWN); this.ref.onmousedown=ev}
    else this.evnt.onclick=ev
}
/************
Making menu object
*************/
function cm_makeMenu(name,parent,text,link,target,width,height,img1,img2,bgcoloroff,bgcoloron,textcolor,hovercolor,onclick,onmouseover,onmouseout){
    this.m[name]=new Object(); var obj=this.m[name]; obj.name=name;    obj.subs=new Array(); obj.parent=parent; var tt
    obj.lnk=(link==0||link=='')?"":link; obj.target=target
    if(parent!="" && parent){this.m[parent].subs[this.m[parent].subs.length]=name; l=this.m[parent].l+1} else l=0
    obj.l=l; prop1=l<this.level.length?this.level[l]:this.level[this.level.length-1]; prop2=this.level[0]
    if(this.l.length<=l){
        this.l[l]=new Object(); this.l[l].num=0; if(l==0) this.l[l].names=new Array()
        this.l[l].clip=prop1["clip"]||prop2["clip"]||0; this.l[l].clippx=prop1["clippx"]||prop2["clippx"]||0
        this.l[l].cliptim=prop1["cliptim"]||prop2["cliptim"]||0; this.l[l].filter=prop1["filter"]||prop2["filter"]||0
        this.l[l].border=prop1["border"]||prop2["border"]; this.l[l].maxnum=0
        this.l[l].bordercolor=prop1["bordercolor"]||prop2["bordercolor"];
        s=prop1["align"]||prop2["align"]; if(s=="left") s=1; else if(s=="right") s=0;
        else if(s=="top") s=3; else if(s=="bottom") s=2; this.l[l].align=s; this.aobj[l]=-1;
        this.l[l].height=prop1["height"]||prop2["height"]; this.l[l].width=prop1["width"]||prop2["width"];
        this.l[l].style=prop1["style"]||prop2["style"]; this.l[l].tc=textcolor||prop1.textcolor||prop2.textcolor;
        this.l[l].offsetX=String(prop1["offsetX"])!="undefined"?prop1["offsetX"]:prop2["offsetX"]
        this.l[l].offsetY=String(prop1["offsetY"])!="undefined"?prop1["offsetY"]:prop2["offsetY"]
    }if(l==0) this.l[l].names[this.l[l].names.length]=name
    if(parent!="" && parent){obj.num=this.m[parent].subs.length-1}else obj.num=this.l[l].num
    this.l[l].num++; prop=l<this.level.length?this.level[l]:this.level[this.level.length-1]
    obj.width=this.checkp(width?width:prop1.width?prop1.width:prop2.width,1,0,1);
    obj.height=this.checkp(height?height:prop1.height?prop1.height:prop2.height,0,0,1);
    if(parent!="" && parent){if(this.m[parent].subs.length>this.l[l].maxnum) this.l[l].maxnum=this.m[parent].subs.length
        if(this.m[parent].totheight==0) this.m[parent].totheight=this.l[l].border
        this.m[parent].totheight+=obj.height+ this.l[l].border
        if(this.m[parent].maxwidth<obj.width) this.m[parent].maxwidth=obj.width+this.l[l].border*2
    }else{this.l[l].maxnum=this.l[l].names.length; this.totwidth+=obj.width; this.totheight+=obj.height
        this.maxwidth=this.maxwidth>obj.width?this.maxwidth:obj.width; this.maxheight=this.maxheight>obj.height?this.maxwidth:obj.height
    }if(img1) text='<img src="'+img1+'" border="0" name="imgCMenu'+name+'">'
    else if(bw.ns4){text='<font size="'+(prop1.NS4fontSize||prop2.NS4fontSize)+'" face="'+(prop1.NS4font||prop2.NS4font)+'" color="'+(textcolor||this.l[l].tc)+'">'+text+'</font>'}
    if(bw.ns4&&this.useNS4links&&(l==0||!this.useframes) ||(l==0&&img1)){tt=img1&&l==0?this.useclick?this.name+".mover('"+name+"',1);":this.name+".go('"+name+"');":"";text='<a href="#" onclick="'+tt+'return false" class="clNS4">'+text+'</a>'}
    if(img1){obj.preimg1=new Image(); obj.preimg1.src=img1}; if(img2){obj.preimg2=new Image(); obj.preimg2.src=img2}
    if(img2) obj.img="imgCMenu"+name; else obj.img=0; obj.img1=img1||""; obj.img2=img2||""; obj.text=text; obj.subx=-1;
    obj.c1=bgcoloroff||prop1.bgcoloroff||prop2.bgcoloroff; obj.c2=bgcoloron||prop1.bgcoloron||prop2.bgcoloron;
    obj.c3=textcolor||this.l[l].tc; obj.c4=hovercolor||prop1.hovercolor||prop2.hovercolor;  obj.suby=-1;
    obj.mclick=onclick||""; obj.mover=onmouseover||""; obj.mout=onmouseout||"";    obj.totheight=0; obj.maxwidth=0;
}
/************
Onmouseout
*************/
function cm_mout(name,cl){
    if(!name&&cl&&!this.isover){this.isclicked=0; this.hideSubs(1,0,0,0,1);  this.aobj[0]=-1; return}
    if(!name) return; var l=this.m[name].l;
    if((this.m[name].subs.length==0||!this.loaded)||(this.useclick&&!this.isclicked)){if((this.aobj[l+1]==-1||l>=this.l.length-1)&&this.aobj[l]!=-1){this.aobj[l].setactive(0,0,1); this.aobj[l]=-1;}}
    if(this.m[name].mout!="") eval(this.m[name].mout)
    if(this.useclick){this.isover=0; return}; clearTimeout(this.tim);
    if(!(!bw.ie&&this.useframes&&l==0&&this.aobj1)){ this.isover=0; this.aobj1=0; this.tim=setTimeout(this.name+".hideSubs(1,0,0,0,1)",this.wait)}
}
/************
Onmouseover
*************/
function cm_mover(name,cl){
    clearTimeout(this.tim); this.isover=1; var l=this.m[name].l;
    if(this.aobj[l].name==name){
        if(this.aobj[l+1]!=-1 && l<this.l.length-1){
            this.aobj[l+1].setactive(0,0,1); this.aobj[l+1]=-1; this.hideSubs(l+2,1); return
        }else if((!this.useclick)||(this.useclick&&this.isclicked)) return
    }if(this.m[name].mover!="") eval(this.m[name].mover)
    var num=this.m[name].num; var obj=this.l[l].o[num]
    if(this.aobj[l].name!=name){if(this.aobj[l]!=-1) this.aobj[l].setactive(0,0,1); this.aobj[l]=obj; this.aobj[l].name=name; obj.setactive(1,0,1)}
    if(l==1)this.aobj1=1; if(l==0 && cl && this.useclick) this.isclicked=1;
    if(!this.isclicked&&this.useclick) return; if(!this.loaded) return;
    this.showSubs(name,l,num,cl)
}
/************
Hiding subelements
*************/
function cm_hideSubs(l,system,cl,sys2,hc){
    if(this.isover && !system) return
    if(l==1 && this.aobj[0]!=-1&&!sys2){this.aobj[0].setactive(0,0,1);this.aobj[0]=-1}
    if(!this.loaded) return; if(cl==1) return
    for(i=l;i<this.l.length;i++){if(this.l[i].oBorder.vis==0) break; this.l[i].oBorder.hideIt(); this.aobj[i]=-1;}
    if(hc&&this.hcode){eval(this.hcode); this.hcode=""}
}
/************
Get x/y coords. Only the first time :)
*************/
function cm_getCoords(name,l,num,topalign,align,ln,border,cn,lev1b){
    if(cn==5){ this.m[name].subx=0; this.m[name].suby=0; return }//Just in case infinitive loops
    if(l==1) var pobj=this.l[l-1].o[num].oBorder
    else var pobj=this.l[l-1].oBorder
    var x=pobj.x; var y=pobj.y;
    if(l!=1){y+=this.l[l-1].o[num].y}
    pborder=this.l[l-1].border;
    lx=x+pobj.width; rx=x-this.m[name].maxwidth- (this.l[l-1].offsetX*2)
    if(align==0){if(l==1){y+=border} if(l==1&&this.useframes) x=0; else x=lx
    }else if(align==1){x=rx; if(l==1){if(this.useframes) x=page.x2 - this.m[name].maxwidth; y+=border}}
    if((align==2||topalign==2)&&lev1b!=3){
        if(l!=1 && (align!=1&&align!=0)){if(topalign==1) x=rx; else x=lx}
        if(l==1) if(this.useframes) y=0; else y+=this.m[name].height+border+pborder;
    }if((align==3||topalign==3)&&lev1b!=2){
        if(l!=1&&align!=1&&align!=0){if(topalign==1) x=rx; else x=lx}
        if(this.useframes&&l==1) y=page.y2 - this.m[name].totheight - this.l[l-1].offsetY*2
        else y-=this.m[name].totheight - this.l[l].offsetY*2; if(l!=1||lev1b==3) y+=this.m[name].height
    }this.m[name].scrollY=this.lastScrolled; this.m[name].subx=x+this.l[l-1].offsetX;
    this.m[name].suby=y+this.l[l-1].offsetY; if(this.useframes&&l==1&&align!=3) this.m[name].suby+=this.lastScrolled
    if(this.pagecheck&&(l!=1||!this.useframes)) this.checkPage(name,l,num,topalign,align,ln,border,cn)
}
/************
Checking page coords
*************/
function cm_checkPage(name,l,num,topalign,align,ln,border,cn){
    cn++;
    if(this.m[name].subx+this.m[name].maxwidth>page.x2){
        if(align!=1){if(align==3&&topalign!=0) topalign=3; align=1; this.getCoords(name,l,num,topalign,align,ln,border,cn)}
    }else if(this.m[name].subx<page.x){
        if(align!=0){if(align==3) topalign=3; align=0; this.getCoords(name,l,num,topalign,align,ln,border,cn)}
    }else if((this.m[name].suby+this.m[name].totheight)>page.y2){
        if(l==1){topalign=3; this.getCoords(name,l,num,topalign,align,ln,border,cn,3)}
        else if(align!=3){ align=3; this.getCoords(name,l,num,topalign,align,ln,border,cn)}
    }else if(this.m[name].suby<page.y){
        if(l==1){topalign=2; this.getCoords(name,l,num,topalign,align,ln,border,cn,2)}
        else if(align!=2){align=2; this.getCoords(name,l,num,topalign,align,ln,border,cn)}
    }
}
/************
Showing subelements
*************/
function cm_showSubs(name,l,num,cl){
    l+=1; if(l>=this.l.length) return; ln=this.m[name].subs.length
    if(ln==0){this.hideSubs(l,1,0,1); return}
    else this.hideSubs(l+1,1); var border=this.l[l].border; this.aobj[l]=-1
    if(this.useframes&&(bw.ns4||bw.ns6)) cm_checkScrolled(this)
    if((this.m[name].subx==-1 || this.m[name].suby==-1) || this.m[name].scrollY!=this.lastScrolled || this.isresized){
        var topalign=this.l[0].align; var align=this.l[l-1].align;
        this.getCoords(name,l,num,topalign,align,ln,border,0)
    }var x=this.m[name].subx; var y=this.m[name].suby;
    var bobj=this.l[l].oBorder; bobj.hideIt();
    if(this.l[l-1].clip&&!(this.l[l-1].filter&&bw.filter)){
        clearTimeout(bobj.tim); bobj.clipy=0; bobj.clipTo(0,this.m[name].maxwidth,0,0);
    }else bobj.clipTo(0,this.m[name].maxwidth,this.m[name].totheight,0,1)
    bobj.moveIt(x,y); var yy=border
    for(i=0;i<this.l[l].maxnum;i++){
        var obj=this.l[l].o[i]
        if(i<ln){
            var n=this.m[name].subs[i]; obj.aname=n; if(!bw.ns4||!this.NS4hover) obj.writeIt(this.m[n].text)
            obj.addEvents(n,this.name,this.m[n].lnk,this.useclick); var w=this.m[n].width; var h=this.m[n].height
            if(obj.y!=yy) obj.moveY(yy); yy+=h+border; if(!obj.img) obj.setactive(0,n,1);
            if(obj.width!=w||obj.height!=h) obj.clipTo(0,w,h,0,1); obj.css.visibility="inherit"
        }else obj.hideIt()
    }if(this.l[l-1].filter&&bw.filter) bobj.filterIt(this.l[l-1].filter)
    else if(this.l[l-1].clip){bobj.showIt(); bobj.clipOut(this.l[l-1].clippx,this.m[name].maxwidth,this.m[name].totheight,this.l[l-1].cliptim,name);}
    else bobj.showIt();
    if(!bw.ns4&&this.checkselect){ //CHECKING FOR SELECT BOXES
        for(i=0;i<this.sel.length;i++){
            selx=0; sely=0; var selp;
            if(this.sel[i].offsetParent){selp=this.sel[i]; while(selp.offsetParent){selp=selp.offsetParent; selx+=selp.offsetLeft; sely+=selp.offsetTop;}}
            selx+=this.sel[i].offsetLeft; sely+=this.sel[i].offsetTop
            selw=this.sel[i].offsetWidth; selh=this.sel[i].offsetHeight
            if(((selx+selw)>this.m[name].subx && selx<(this.m[name].subx+this.m[name].maxwidth))
            &&((sely+selh)>this.m[name].suby && sely<(this.m[name].suby+this.m[name].totheight))){
                if(this.sel[i].style.visibility!="hidden"){this.sel[i].level=l; this.sel[i].style.visibility="hidden"; this.hcode+=this.name+".sel["+i+"].style.visibility='visible';"}
            }else if(l<=this.sel[i].level) this.sel[i].style.visibility="visible"
        }
    }else if(bw.ns4&&this.hideForm){eval(this.hideForm+".visibility='hide'"); this.hcode=this.hideForm+".visibility='show'"}
}
/************
Making all top elements
*************/
function cm_makeTop(rr){
    var m,rows,border,x,y,mpa
    m=this.menuplacement; rows=this.rows; this.pxbetween=this.checkp(this.pxbetween,0,1,1)
    border=this.l[0].border;y=this.checkp(this.fromtop,0,0,1)+border;x=this.checkp(this.fromleft,0,0,1)+border
    if(m=="bottomcenter"||m=="bottom"){
        if(m=="bottomcenter") x=toppage.x2/2-(this.totwidth+border*this.l[0].num+this.pxbetween*(this.l[0].num-1))/2
        y=toppage.y2-this.maxheight-border
    }else if(m=="right") x=toppage.x2-this.maxwidth-border*2
    else if(m=="bottom") y=toppage.y2-this.maxheight-border*2
    else if(m=="center"){if(rows==0) x=toppage.x2/2 -  (this.maxwidth+border*2)/2; else x=toppage.x2/2 - (this.totwidth + border*this.l[0].num +this.pxbetween*(this.l[0].num-1))/2}
    else if(m.toString().indexOf(",")>-1) mpa=1
    if(this.usebar){ var bx,by,bww,bh,oBb
        oNS=bw.ns6?this.oNS[this.l[0].maxnum]:0
        this.oBar=new cm_makeObj('div'+this.name+'Bar',0,0,window,0,oNS)
        if(this.barx=="menu") bx=mpa&&rows?this.checkp(m[0],1,0,1)-border:x-border; else{ bx=this.checkp(this.barx,1,0,1) }
        if(this.bary=="menu") by=mpa&&!rows?this.checkp(m[0],0,0,1)-border:y-border; else by=this.checkp(this.bary,0,0,1);  this.oBar.moveIt(bx,by)
        if(this.barwidth=="menu"){bww=rows?mpa?(this.checkp(m[m.length-1],1,0,1)-bx)+this.m[this.l[0].names[this.l[0].num-1]].width+border:(this.totwidth +this.pxbetween*(this.l[0].num-1)):this.maxwidth;
        bww+=!rows?border*2:0;}else bww=this.checkp(this.barwidth,1,0,1);
        if(bw.ie&&rows&&this.barwidth=="100%"&&this.useframes) bww+=parseInt(self.document.body.leftMargin)*2
        if(this.barheight=="menu"){bh=!rows?mpa?(this.checkp(m[m.length-1],0,0,1)-by)+this.m[this.l[0].names[this.l[0].num-1]].height+border:(this.totheight + this.pxbetween*(this.l[0].num-1)):this.maxheight;
        bh+=rows?this.l[0].border*2:0;} else bh=this.checkp(this.barheight,0,0,1);
        this.oBar.clipTo(0,bww,bh,0,1);
        if(this.barinheritborder&&border){oBb=new cm_makeObj('div'+this.name+'Barb',0,0,window,'div'+this.name+'Bar');
        oBb.moveIt(border,border); oBb.clipTo(0,bww-border*2,bh-border*2,0,1); oBb=null;}
    }this.l[0].o=new Array()
    for(j=0;j<this.l[0].maxnum;j++){
        this.l[0].o[j]=new cm_makeObj('div'+this.name+'0_'+j,this,0,window,'div'+this.name+'0_'+j+'b'); if(bw.ns6) oNS=this.oNS[j]; else oNS=0
        this.l[0].o[j].oBorder=new cm_makeObj('div'+this.name+'0_'+j+'b',0,0,window,0,oNS)
        obj=this.l[0].o[j]; w=this.m[this.l[0].names[j]].width; h=this.m[this.l[0].names[j]].height
        obj.addEvents(this.l[0].names[j],this.name,this.m[this.l[0].names[j]].lnk,this.useclick); obj.clipTo(0,w,h,0,1)
        if(mpa){if(rows==1) x=this.checkp(m[j],0,1,1); else y=this.checkp(m[j],0,0,1)}
        obj.moveIt(border,border);
        obj.setactive(0,this.l[0].names[j])
        obj.oBorder.moveIt(x-border,y-border); obj.oBorder.clipTo(0,w+border*2,h+border*2,0,1); obj.oBorder.showIt()
        if(rows==0) y+=h+border+this.pxbetween
        else x+=w+border+this.pxbetween; obj.showIt()
    }if(!rr){
        if(this.useclick) coolFMouseup+=this.name+".mmout('',1);"; if(!this.useframes&&!bw.ns4) this.refresh()
        else if(!this.useframes&&bw.ns4){l=""; if(onload){l=String(onload.toString()); l=l.replace("function onload(event)",""); l=l.slice(25,l.length-2)} l+=this.name+ ".refresh();"; onload=new Function(l)}
        if(this.resizecheck) setTimeout('window.onresize=new Function("'+this.name+'.resized()")',500)
        if(this.checkscroll){if(bw.ns4 || bw.ns6){if(this.checkscroll!=2&&this.useframes!=1){setTimeout("cm_checkScrolled("+this.name+")",200)}}}
        if(this.useframes&&!rr) this.checkFrame(0); else this.win=window
    }
}
/************
Refreshing/making all sub elements
*************/
function cm_refresh(ev){
    var border,obj,oNS,oNS2
    if(this.useframes) page=new makePageCoords(this.win,this.useframes); else page=toppage
    for(i=1;i<this.l.length;i++){
        this.l[i].o=new Array();
        border=this.l[i].border; defheight=this.checkp(this.l[i].height)
        if(bw.ns4){oNS=new Layer(this.l[i].width,this.win); oNS.zIndex=(500+i);  if(this.l[i].border) oNS.bgColor=this.l[i].bordercolor;}
        else if(bw.ns6){oNS=document.createElement("DIV"); oNS.setAttribute("style",this.ns6styleb[i]); this.win.document.body.appendChild(oNS)}
        this.l[i].oBorder=new cm_makeObj('div'+this.name+i+"b",0,0,this.win,0,oNS)
        for(j=0;j<this.l[i].maxnum;j++){
            if(bw.ns4){oNS2=new Layer(this.l[i].width,oNS);}
            else if(bw.ns6){oNS2=document.createElement("DIV");    oNS2.setAttribute("style",this.ns6style[i]); oNS.appendChild(oNS2)}
            this.l[i].o[j]=new cm_makeObj('div'+this.name+i+'_'+j,this,i,this.win,0,oNS2)
            obj=this.l[i].o[j]; if(!obj.addEvents) return; obj.moveIt(border,(border+defheight)*j + border)
        }   
    }this.loaded=1;
    if(this.checkscroll&&bw.ie){this.win.document.body.onscroll=new Function("cm_checkScrolled("+this.name+")"); cm_checkScrolled(this)}
    if(this.useclick){this.win.document.onmouseup=new Function(coolFMouseup); if(this.useframes) document.onmouseup=new Function(coolFMouseup); }
    if(!bw.ns4&&this.checkselect) this.sel=bw.ie4?this.win.document.all.tags("SELECT"):this.win.document.getElementsByTagName("SELECT")
}
function cm_NS6_createElement(st,inn){el=document.createElement("DIV"); if(st) el.setAttribute("style",st); if(inn) el.innerHTML=inn; document.body.appendChild(el); return el}
/************
Making code
*************/
function cm_construct(){
    this.level=null; var str=""; var str2=""; var frstr=""; var tempstr; num=bw.ie?this.l.length:1;
    for(i=0;i<num;i++){
        if(i!=0) frstr+='<div id="div'+this.name+i+'b" style="'+this.ns6styleb[i]+'" class="cl'+this.name+i+'b">\n'
        for(j=0;j<this.l[i].maxnum;j++){
            tempstr='<div id="div'+this.name+i+'_'+j+'" '; if(i!=0) tempstr+='style="'+this.ns6style[i]+'"'
            if(i==0){n=this.l[0].names[j]; txt=this.m[n].text
                if(!bw.ns6){
                    str+='<div id="div'+this.name+'0_'+j+'b" class="cl'+this.name+'b'+i+'">'
                    str+=tempstr+' class="cl'+this.name+i+'">'+txt+'</div>'; str+='</div>\n'
                }else this.oNS[j]=cm_NS6_createElement(this.ns6styleb[i],tempstr+' class="cl'+this.name+i+'">'+txt+'</div>')
            }else frstr+=tempstr+'"></div>\n'
        }if(i!=0){frstr+='</div>\n'}
    }if(this.usebar){
        if(this.barinheritborder) str2='<div id="div'+this.name+'Barb"></div>';
        if(bw.ns6) this.oNS[this.l[0].maxnum]=cm_NS6_createElement(this.ns6styleb[this.ns6styleb.length-1],str2)
        else{str+='<div id="div'+this.name+'Bar">';str+=str2+'</div>\n'}
    }if(!this.useframes&&bw.ie) str+=frstr; else this.frstr=frstr; if(!bw.ns6) document.write(str)
    this.makeTop();    if(this.useframes) window.onerror=cm_check_error;
}
coolFrameError=0//Trapping external pages in frame error!
function cm_check_error(e){e=e.toLowerCase(); if(e.indexOf("access")>-1||e.indexOf("permission")>-1){coolFrameError=1; return true;}else return false}
/**************
Make styles
**************/
function cm_makeStyle(){
    var str="<style>\n"; var zindex=150;  var c,w,st,bg
    this.ns6style=new Array(); this.ns6styleb=new Array()
    for(i=0;i<this.l.length;i++){
        if(i==0){if(bw.ns4){w="width:" +this.l[0].width+";"; this.l[i].style=""} else w=""; str+='.cl'+this.name+i+'{position:absolute; '+w+' background-color:transparent; color:'+this.l[i].tc+';'+this.l[i].style+'; cursor:pointer; cursor:hand; visibility:inherit; z-index:'+zindex+'}\n'}
        else{st='position:absolute; '+this.l[i].style+';  cursor:pointer; cursor:hand; visibility:inherit; z-index:'+zindex; this.ns6style[i]=st}
        bc=this.l[i].border?bw.ns4?'layer-background-color:'+this.l[i].bordercolor:'; background-color:'+this.l[i].bordercolor:"";
        if(!bw.ns4) bc+="; overflow:hidden"
        tempstr='position:absolute; clip:rect(0,0,0,0); visibility:hidden; '+bc+'; z-index:'+(zindex-50)
        if(i==0&&!bw.ns6) str+='.cl'+this.name+'b'+i+'{'+tempstr+'}\n';
        else this.ns6styleb[i]=tempstr; zindex+=100
    }   
    if(this.usebar){
        bg=this.barinheritborder?this.l[0].bordercolor:this.barcolor
        st='z-index:80; position:absolute; background-color:'+bg+'; layer-background-color:'+bg
        if(!bw.ns6) str+='#div'+this.name+'Bar{'+st+'}\n'; else this.ns6styleb[this.ns6styleb.length]=st
        if(this.barinheritborder){str+='#div'+this.name+'Barb{z-index:85; position:absolute; background-color:'+this.barcolor+'; layer-background-color:'+this.barcolor+'}\n'}
    }
    if(bw.ns4) str+="A.clNS4{text-decoration:none; padding:"+this.NS4padding+"}\n"; document.write(str+"\n</style>\n")
}
/************
Refreshing page if it's resized
*************/
function cm_resized(){
    page2=new makePageCoords(window,this.useframes);
    if(page2.x2!=toppage.x2 || page2.y2!=toppage.y2){
        if(!bw.ns4){
            toppage=new makePageCoords(window,this.useframes); this.makeTop(1)
            if(!this.useframes) page=toppage; this.isresized=1; eval(this.resizecode)
        }else{this.win.location.reload(); location.reload()}
    }if(!bw.ns4&&this.useframes){page=new makePageCoords(this.win,this.useframes)}
}
/************
Going to another page
*************/
function cm_go(name){
    obj=this.m[name]; url=obj.lnk; target=obj.target; fc=obj.mclick
    if(url){
        if(this.useframes&&!coolFrameError) loc=this.win.location.href; else loc=location.href
        if(fc) eval(fc); url=this.checkFolder(loc.toString(),url); this.isover=0;
        this.hideSubs(1,0,1); this.isclicked=0; this.aobj[0]=-1
        if(String(target)=="undefined" || target=="" || target==0 || target=="_self"){
            this.win.location.href=url
        }else if(target=="_blank") window.open(url)
        else if(target=="_top" || target=="window") top.location.href=url 
        else if(top[target]) top[target].location.href=url
        else{fr=findFrame(target); if(fr) fr.location.href=url}
    }else if(fc) eval(fc)
}
/************
Getting folders - THANKS TO DCAGE FOR THIS FIX
*************/
function cm_checkFolder(tmp,url){
    if(url.indexOf("mailto:")>-1 || url.indexOf("/")==0 || url.indexOf("http://")==0) return url
    else if(this.useframes && bw.ie || bw.ns6) return url
    var addr=''; var lvl=''; var off_cnt=0; var cnt=0;
    if(tmp.indexOf('file:')>-1 || tmp.charAt(1)==':') addr=this.offlineUrl;
    else if(tmp.indexOf('http:')>-1) addr=this.onlineUrl;
    for(var i=0;i<addr.length;i++){if(addr.charAt(i)=='\/') off_cnt+=1}
    for(var i=0;i<tmp.length;i++){if(tmp.charAt(i)=='\/'){ cnt+=1; if(cnt>off_cnt) lvl+='../'; }}
    return lvl + url
}
/************
Checkloaded for the frames version
*************/
function cm_checkLoaded(ev,ns){
    coolFName=eval(coolFName)
    var ok=0
    if(document.layers){
        if(ns){coolFName.refresh(); coolFName.nsload=1; ok=1; coolFrameError=0
        }else if(ev.target.name==coolFName.frame&&!coolFName.nsload){coolFName.refresh(); ok=1; coolFrameError=0; routeEvent(ev)}
    }else if(bw.ie){
        if (coolFName.win.document.readyState == "complete"){
            coolFName.win.document.body.insertAdjacentHTML("beforeEnd",coolFName.frstr)
            coolFName.win.document.body.onunload=cm_unloaded; coolFName.refresh(); ok=1; coolFrameError=0
        }else setTimeout("cm_checkLoaded()",200)
    }else if(bw.ns6){
        if(coolFName.win.document){
            if(coolFName.win.document.body){coolFName.win.addEventListener("unload", cm_unloaded, true); coolFName.refresh(); ok=1; coolFrameError=0}
            else setTimeout("cm_checkLoaded()",200)
        }else setTimeout("cm_checkLoaded()",200)
    }
}
function cm_unloaded(ev){coolFName=eval(coolFName); if(!coolFName) return; if(document.layers && ev.target.name!=coolFName.frame) return; else coolFName.nsload=0; coolFName.loaded=0; if(!document.layers) setTimeout("cm_checkLoaded()",200)}
/************
Make menu object
*************/
var coolFName=""; var onload; var coolFMouseup="";
function makeCoolMenu(name){
    coolFName=name; this.name=name; this.lastScrolled=0;
    this.win=window; toppage=new makePageCoords(window,parent.frames.length);
    this.aobj=new Array(); this.m=new Array(); this.l=new Array()
    this.level=new Array(); this.resized=cm_resized;
    this.makeMenu=cm_makeMenu; this.showSubs=cm_showSubs; this.makeTop=cm_makeTop;
    this.getCoords=cm_getCoords; this.checkPage=cm_checkPage;
    this.mmout=cm_mout; this.mover=cm_mover; this.checkp=cm_checkp;
    this.hideSubs=cm_hideSubs; this.construct=cm_construct;
    this.makeStyle=cm_makeStyle; this.refresh=cm_refresh;
    this.go=cm_go; this.frstr=""; this.mobj=new Array()
    this.totwidth=0; this.totheight=0; this.maxwidth=0; this.maxheight=0
    this.tim=10; this.loaded=0; this.isover=false; this.checkFrame=cm_checkFrame;
    this.checkFolder=cm_checkFolder; this.hcode=""; this.oNS=new Array(); this.oNS2=new Array()
    bw.filter=(bw.ie6||bw.ver.indexOf("MSIE 5.5")>-1) && !bw.mac
}
/************
Find frame
*************/
function findFrame(frameName){
    obj=top; var frameObj=0;
    for(i=0;i<obj.frames.length;i++){
        if(obj.frames[i].name==frameName){frameObj=obj.frames[i]; break;}; ln=obj.frames[i].frames.length
        for(j=0;j<ln;j++){
            if(obj.frames[i].frames[j].name==frameName){frameObj=obj.frames[i].frames[j];  break}; ln2=obj.frames[i].frames[j].frames.length
            for(a=0;a<ln2;a++){
                if(obj.frames[i].frames[j].frames[a].name==frameName){frameObj=obj.frames[i].frames[j].frames[a]; break}
            }
        }
    }return frameObj
}
/************
Checking for frame
*************/
function cm_checkFrame(num){
    var fr; if(num==10){debug('Frame: '+this.frame+' doesn\'t exist - Value: '+fr + " - Could not build menus."); return}
    if(!top.frames[this.frame]) fr=findFrame(this.frame); else fr=top.frames[this.frame]
    if(!fr){num++; setTimeout(this.name+".checkFrame("+num+")",500)
    }else{ this.win=fr
        if(bw.ns4){
            top.frames.captureEvents(Event.UNLOAD); top.frames.captureEvents(Event.LOAD); top.frames.onunload=cm_unloaded;
            top.frames.onload = cm_checkLoaded;    setTimeout("cm_checkLoaded(0,1)",1000)
        }else if((bw.ie||bw.ns6)) setTimeout("cm_checkLoaded()",200)
    }
}   
















Den skal der vel også rettes i???? er det omfattende
Avatar billede w13 Novice
01. november 2007 - 12:17 #4
Meget. =)
Avatar billede caravelle_dk Nybegynder
01. november 2007 - 12:25 #5
Ha ha det var nu også det jeg kom frem til ;)
Avatar billede w13 Novice
01. november 2007 - 12:37 #6
Hvad er det, der gør, at du har valgt denne menu?

Der findes så mange nyere, bittesmå, simple koder, der laver menuer, som virker i alle browsere. Kan vi se denne menu noget sted på nettet?
Avatar billede madssch Nybegynder
01. november 2007 - 12:42 #7
Avatar billede w13 Novice
01. november 2007 - 12:49 #8
Nu ved jeg godt, at det ikke er helt det samme, men du kan sammenligne din menukode med denne her, jeg har strikket sammen:
----------------------------------------------
<script type="text/javascript">
var menunormalcolor="";
var menuhovercolor="#c0c0c0";

function ShowSubmenu(elm,submenu){
    elm.style.backgroundColor=menuhovercolor;
    if(submenu=document.getElementById(submenu)){
        submenu.style.top=elm.offsetTop+elm.offsetHeight;
        submenu.style.left=elm.offsetLeft;
        submenu.style.display="inline";
    }
}
function HideSubmenu(elm,submenu){
    elm.style.backgroundColor=menunormalcolor;
    if(submenu=document.getElementById(submenu)) submenu.style.display="none";
}
</script>

<span onmouseover="ShowSubmenu(this)" onmouseout="HideSubmenu(this)">Forside</span>
<span onmouseover="ShowSubmenu(this,'submenu_andet')" onmouseout="HideSubmenu(this,'submenu_andet')">Andet</span>
<span onmouseover="ShowSubmenu(this,'submenu_mere')" onmouseout="HideSubmenu(this,'submenu_mere')">Og mere til</span>

<div id="submenu_andet" style="position:absolute;display:none;border:1px solid #000000;padding:10px">Hej<br>Test<br>Test2</div>
<div id="submenu_mere" style="position:absolute;display:none;border:1px solid #000000;padding:10px">Hello<br>Goodbye<br>Farewell</div>
-------------------------------------------------------
Nu er min menus layout lidt grovt, men det er også kun et udkast. I hvert fald sku' det gerne gi' dig en idé om, hvor lidt kode man behøver. Ofte kan du se, hvor god din kode er, ud fra om der er unødigt meget kode.

Menuen her virker f.eks. i samtlige browsere og er meget simpel at redigere. =)
Avatar billede madssch Nybegynder
01. november 2007 - 12:57 #9
Jeg bryder mig heller ikke om den. Jeg laver normalvis mine dropdown-menuen i layers.

Men nu blev der altså spurgt, om nogen kunne optimere menuen til IE7 - og det har jeg givet løsningen på.
Avatar billede caravelle_dk Nybegynder
01. november 2007 - 14:53 #10
Nu vil jeg lige skynde mig at sige, at det er ikke mig der bruger denne menu, og kunne nu hellere aldrig have fundet på at bruge sådan en script, som nu er forældet i forhold til udviklingen af browsere. Jeg er bare blevet spurgt af ejeren a denne menu om jeg kunne hjælpe ham med at få den til at virke osv osv..... ;)

Men jeg er da glad for de input der er kommet, men desværre er løsningen ikke kommet ned i min turban endnu ;( Jeg tror bare jeg vil forslå min "ven" at finde en helt anden løsning....
Avatar billede madssch Nybegynder
01. november 2007 - 15:14 #11
Har jeg ikke sendt dig løsningen?

Den virker i IE7, som du forespurgte.
Avatar billede caravelle_dk Nybegynder
01. november 2007 - 15:24 #12
Nej den virkede faktisk ik ;( det skrev jeg da også længere oppe. Den anden fil jeg jo tilpasses dertil har jeg senere fundet ud af... så nej jeg synes ikke den virker ;(
Avatar billede madssch Nybegynder
01. november 2007 - 15:49 #13
Har du kopieret min løsning ind i din kode?

Den burde virke...
Avatar billede caravelle_dk Nybegynder
01. november 2007 - 16:57 #14
Ja det har jeg, og den virkede ikke.
Avatar billede mitbrugernavn Praktikant
01. november 2007 - 21:40 #15
hej

vend tilbage til den du spurgte om - og ret dit browser chefunction 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.ie7=(window.XMLHttpRequest && document.all && !window.opera) ? 1 : 0;
        this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
        this.ie=this.ie4||this.ie5||this.ie6||this.ie7;
        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.ie7 || this.ns4 || this.ns6 || this.opera5)
        return this
    }
var bw=new lib_bwcheck()ck til dette
Avatar billede mitbrugernavn Praktikant
01. november 2007 - 21:41 #16
hov det røg vist ind i teksten - du får den lige igen

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.ie7=(window.XMLHttpRequest && document.all && !window.opera) ? 1 : 0;
        this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
        this.ie=this.ie4||this.ie5||this.ie6||this.ie7;
        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.ie7 || this.ns4 || this.ns6 || this.opera5)
        return this
    }
var bw=new lib_bwcheck()
Avatar billede caravelle_dk Nybegynder
01. november 2007 - 22:09 #17
Desværre det virkede nu hellere ik....men er det ikke fordi der også skal rettes i Coolmenu.js filen?????

Jeg er totalt blank ;))))
Avatar billede w13 Novice
29. juli 2008 - 09:33 #18
Lukketid?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester