Results 1 to 2 of 2

Thread: Overlapping Content script Delay or Onclick

  1. #1
    Join Date
    Dec 2007
    Posts
    9
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Overlapping Content script Delay or Onclick

    1) Script Title: Drop down/ Overlapping Content script

    2) Script URL (on DD): http://www.dynamicdrive.com/dynamici...lapcontent.htm

    3) Describe problem: I have been going nuts trying to find information about this - I am not a javascript pro.

    I would like my overlapping links in my header (see www.themebath.com) to only appear once someone has clicked on them. If this is not possible, I would at least like to have a delay in the amount of time it takes from the overlapping content to appear. I feel the way the links are now will just drive my visitors nuts. Thanks for any help you can provide!

    Here are the codes I used:



    JS FILE:

    //Drop Down/ Overlapping Content: http://www.dynamicdrive.com
    //Last updated: Dec 19th, 07': Added ability to dynamically populate a Drop Down content using an external file (Ajax feature)

    var dropdowncontent={
    delaybeforehide: 200, //set delay in milliseconds before content box disappears onMouseout (1000=1 sec)
    disableanchorlink: true, //when user clicks on anchor link, should it be disabled?
    ajaxloadingmsg: "Loading content. Please wait...", //HTML to show while ajax page is being feched
    ajaxbustcache: true, //Bust cache when fetching pages?

    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)){
    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)
    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<obj.glidetime){ //if time run is less than specified length
    var distancepercent=(direction=="down")? this.curveincrement(elapsed/obj.glidetime) : 1-this.curveincrement(elapsed/obj.glidetime)
    var currentclip=(distancepercent*obj.contentheight)+"px"
    obj.style.clip=(direction=="down")? "rect(0 auto "+currentclip+" 0)" : "rect("+currentclip+" auto auto 0)"
    window["glidetimer_"+obj.id]=setTimeout(function(){dropdowncontent.slideengine(obj, direction)}, 10)
    }
    else{ //if animation finished
    obj.style.clip="rect(0 auto auto 0)"
    }
    },

    hide:function(activeobj, subobj, e){
    if (!dropdowncontent.isContained(activeobj, e)){
    window["hidetimer_"+subobj.id]=setTimeout(function(){
    subobj.style.visibility="hidden"
    subobj.style.left=subobj.style.top=0
    clearTimeout(window["glidetimer_"+subobj.id])
    }, dropdowncontent.delaybeforehide)
    }
    },

    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
    }
    },

    init:function(anchorid, pos, glidetime){
    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
    anchorobj.onmouseover=function(e){dropdowncontent.show(this, subobj, e)}
    anchorobj.onmouseout=function(e){dropdowncontent.hide(subobj, subobj, e)}
    if (this.disableanchorlink) anchorobj.onclick=function(){return false}
    subobj.onmouseout=function(e){dropdowncontent.hide(this, subobj, e)}
    }
    }



    HEADER:

    <script type="text/javascript" src="dropdowncontent.js">

    /***********************************************
    * Drop Down/ Overlapping Content- © Dynamic Drive (www.dynamicdrive.com)
    * This notice must stay intact for legal use.
    * Visit http://www.dynamicdrive.com/ for full source code
    ***********************************************/

    </script>



    BODY EXAMPLE:

    <div><a class="guarantee" id="ourguarantee" href="http://www.themebath.com" rel="ourguarantee2"></a></div>

    <div id="ourguarantee2" style="BORDER-RIGHT: #dedddb 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #dedddb 1px solid; PADDING-LEFT: 10px; VISIBILITY: hidden; PADDING-BOTTOM: 10px; BORDER-LEFT: #dedddb 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #dedddb 1px solid; POSITION: absolute; BACKGROUND-COLOR: white">

    <table height="293" cellspacing="0" cellpadding="0" width="290" border="0">
    <tbody>
    <tr>
    <td><a href="return-policy.aspx"><img alt="Learn More About Our Easy Returns Policy!" src="images/Design/New/Guarantee1.gif" border="0" /></a><br /><a href="shipping-policy.aspx"><img alt="Learn More About Our Shipping Rates!" src="images/Design/New/Guarantee2.gif" border="0" /></a> </td>
    </tr>
    </tbody>
    </table>
    </div>

  2. #2
    Join Date
    Aug 2004
    Posts
    10,143
    Thanks
    3
    Thanked 1,008 Times in 993 Posts
    Blog Entries
    16

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •