var dropdowncontent={ disableanchorlink: true, //when user clicks on anchor link, should link itself be disabled (always true if "revealbehavior" above set to "click") hidedivmouseout: [true, 0], //Set hiding behavior within Drop Down DIV itself: [hide_div_onmouseover?, miliseconds_before_hiding] ajaxloadingmsg: "Loading content. Please wait...", //HTML to show while ajax page is being feched, if applicable ajaxbustcache: true, //Bust cache when fetching Ajax pages? mysubobj: null, mysubanc: null, getposOffset:function(what, offsettype){ return (what.offsetParent)? what[offsettype]+this.getposOffset(what.offsetParent, offsettype) : what[offsettype] }, isContained:function(m, e){ var e=window.event || e var c=e.relatedTarget || ((e.type=="mouseover")? e.fromElement : e.toElement) while (c && c!=m)try {c=c.parentNode} catch(e){c=m} if (c==m) return true else return false }, show:function(anchorobj, subobj, e){ if (!this.isContained(anchorobj, e) || (e && e.type=="click")){ var e=window.event || e if (e.type=="click" && subobj.style.visibility=="visible"){ subobj.style.visibility="hidden" return } var horizontaloffset=(subobj.dropposition[0]=="left")? -(subobj.offsetWidth-anchorobj.offsetWidth) : 0 //calculate user added horizontal offset var verticaloffset=(subobj.dropposition[1]=="top")? -subobj.offsetHeight : anchorobj.offsetHeight //calculate user added vertical offset subobj.style.left=this.getposOffset(anchorobj, "offsetLeft") + horizontaloffset + "px" subobj.style.top=this.getposOffset(anchorobj, "offsetTop")+verticaloffset+"px"; subobj.style.clip=(subobj.dropposition[1]=="top")? "rect(auto auto auto 0)" : "rect(0 auto 0 0)" //hide drop down box initially via clipping subobj.style.visibility="visible" subobj.startTime=new Date().getTime() subobj.contentheight=parseInt(subobj.offsetHeight) //alert(subobj.style.left+" "+subobj.style.top); if (typeof window["hidetimer_"+subobj.id]!="undefined") //clear timer that hides drop down box? clearTimeout(window["hidetimer_"+subobj.id]) this.slideengine(subobj, (subobj.dropposition[1]=="top")? "up" : "down") } }, curveincrement:function(percent){ return (1-Math.cos(percent*Math.PI)) / 2 //return cos curve based value from a percentage input }, slideengine:function(obj, direction){ var elapsed=new Date().getTime()-obj.startTime //get time animation has run if (elapsed exitTime) return; } }, moveBalloon:function(subobj, e, anchorid){ var myP = document.getElementById(anchorid+"question"); myP.firstChild.data var dummy = 0; if(myP.firstChild.data.length > 83) dummy = -20; var scrOfX = 0, scrOfY = 0; if( typeof( window.pageYOffset ) == 'number' ) { //Netscape compliant scrOfY = window.pageYOffset; scrOfX = window.pageXOffset; } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) { //DOM compliant scrOfY = document.body.scrollTop; scrOfX = document.body.scrollLeft; } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) { //IE6 standards compliant mode scrOfY = document.documentElement.scrollTop; scrOfX = document.documentElement.scrollLeft; } var posx = 0; var posy = 0; if (!e) var e = window.event; if (e.pageX || e.pageY) { posx = e.pageX; posy = e.pageY; } else if (e.clientX || e.clientY) { posx = e.clientX; posy = e.clientY+scrOfY; //alert(wrapper.offsetTop); } posy = posy + dummy; subobj.style.left=(parseInt(posx)-25)+"px"; subobj.style.top=(parseInt(posy)-135)+"px"; }, animate:function(){ var index = mysubobj.style.left.indexOf("px"); var pos=mysubobj.style.left.substring(0,index); mysubobj.style.left=(parseInt(pos)+(50))+"px"; if(pos<900) setTimeout(dropdowncontent.animate,20); else mysubobj.style.visibility="hidden"; }, balloonClick:function(glider, subobj){ var mychange=false; myP = document.getElementById(glider+"question"); if(isInCookie(myP.firstChild.data)==false) { mychange=true; } insertToCookie('micardisqkcookie', myP.firstChild.data); document.getElementById(glider+"already").style.visibility="visible"; if(mychange==true) { document.getElementById(glider+"already").innerHTML = "This question has now been added to your Question Keeper."; } }, checkBalloon:function(anchorid, type){ myP = document.getElementById(anchorid+"question"); if(isInCookie(myP.firstChild.data)==false) { document.getElementById(anchorid+"already").innerHTML = "Click to add this question to your Question Keeper."; if(type=="show") { document.getElementById(anchorid+"already").style.visibility="visible"; } else { document.getElementById(anchorid+"already").style.visibility="hidden"; } } else { document.getElementById(anchorid+"already").innerHTML = "This question is already in your Question Keeper"; if(type=="show") { document.getElementById(anchorid+"already").style.visibility="visible"; } else { document.getElementById(anchorid+"already").style.visibility="hidden"; } } }, hidediv:function(subobjid){ document.getElementById(subobjid).style.visibility="hidden" }, ajaxconnect:function(pageurl, divId){ var page_request = false var bustcacheparameter="" if (window.XMLHttpRequest) // if Mozilla, IE7, Safari etc page_request = new XMLHttpRequest() else if (window.ActiveXObject){ // if IE6 or below try { page_request = new ActiveXObject("Msxml2.XMLHTTP") } catch (e){ try{ page_request = new ActiveXObject("Microsoft.XMLHTTP") } catch (e){} } } else return false document.getElementById(divId).innerHTML=this.ajaxloadingmsg //Display "fetching page message" page_request.onreadystatechange=function(){dropdowncontent.loadpage(page_request, divId)} if (this.ajaxbustcache) //if bust caching of external page bustcacheparameter=(pageurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime() page_request.open('GET', pageurl+bustcacheparameter, true) page_request.send(null) }, loadpage:function(page_request, divId){ if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){ document.getElementById(divId).innerHTML=page_request.responseText } }, dummy:function(){ alert("works properly"); }, init:function(anchorid, pos, glidetime, revealbehavior) { /* *If the type of the pos is cookie *Initializes cookie properties */ if(pos=="cookie") { var anchorobj=document.getElementById(anchorid); var subobj=document.getElementById(anchorobj.getAttribute("rel")); var subobjsource=anchorobj.getAttribute("rev"); if (subobjsource!=null && subobjsource!="") this.ajaxconnect(subobjsource, anchorobj.getAttribute("rel")); //subobj.dropposition=pos.split("-") subobj.glidetime=glidetime || 1000; subobj.style.left=subobj.style.top=0; mysubobj=subobj; mysubanc=anchorid; anchorobj.onclick=function(e){dropdowncontent.balloonClick(anchorid, subobj); return false} if (this.hidedivmouseout[0]==true) //hide drop down DIV when mouse rolls out of it? subobj.onmouseout=function(e){dropdowncontent.hide(this, subobj, e,anchorid);}; } else { var anchorobj=document.getElementById(anchorid); var subobj=document.getElementById(anchorobj.getAttribute("rel")); var subobjsource=anchorobj.getAttribute("rev"); if (subobjsource!=null && subobjsource!="") this.ajaxconnect(subobjsource, anchorobj.getAttribute("rel")); subobj.dropposition=pos.split("-"); subobj.glidetime=glidetime || 1000; subobj.style.left=subobj.style.top=0; if (typeof revealbehavior=="undefined" || revealbehavior=="mouseover"){ anchorobj.onmouseover=function(e){dropdowncontent.show(this, subobj, e);dropdowncontent.checkBalloon(anchorid, "show");}; anchorobj.onmouseout=function(e){dropdowncontent.hide(subobj, subobj, e,anchorid);}; anchorobj.onmousemove=function(e){dropdowncontent.moveBalloon(subobj, e, anchorid);}; if (this.disableanchorlink) anchorobj.onclick=function(){return false} } else { anchorobj.onclick=function(e){dropdowncontent.show(this, subobj, e); return false} anchorobj.onmousemove=function(e){dropdowncontent.moveBalloon(subobj, e,anchorid);} } if (this.hidedivmouseout[0]==true) //hide drop down DIV when mouse rolls out of it? subobj.onmouseout=function(e){dropdowncontent.hide(this, subobj, e,anchorid);} } } }