Discover Habbo's history
Treat yourself with a Secret Santa gift.... of a random Wiki page for you to start exploring Habbo's history!
Happy holidays!
Celebrate with us at Habbox on the hotel, on our Forum and right here!
Join Habbox!
One of us! One of us! Click here to see the roles you could take as part of the Habbox community!


Results 1 to 3 of 3
  1. #1
    Join Date
    Jan 2006
    Location
    Kent
    Posts
    987
    Tokens
    0

    Default Spry Collapsible Panel

    Hey,
    Ive been working on a website for one of my school projects and ive decided to use the Spry Collapsible Panel feature in Dreamweaver CS3, but one question, when I open the page, the panel is open by default, is there a way to get it to stay closed by default?
    This is the .js file..
    PHP Code:
    /* SpryCollapsiblePanel.js - Revision: Spry Preview Release 1.4 */

    // Copyright (c) 2006. Adobe Systems Incorporated.
    // All rights reserved.
    //
    // Redistribution and use in source and binary forms, with or without
    // modification, are permitted provided that the following conditions are met:
    //
    //   * Redistributions of source code must retain the above copyright notice,
    //     this list of conditions and the following disclaimer.
    //   * Redistributions in binary form must reproduce the above copyright notice,
    //     this list of conditions and the following disclaimer in the documentation
    //     and/or other materials provided with the distribution.
    //   * Neither the name of Adobe Systems Incorporated nor the names of its
    //     contributors may be used to endorse or promote products derived from this
    //     software without specific prior written permission.
    //
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    // POSSIBILITY OF SUCH DAMAGE.

    var Spry;
    if (!
    SprySpry = {};
    if (!
    Spry.WidgetSpry.Widget = {};

    Spry.Widget.CollapsiblePanel = function(elementopts)
    {
        
    this.init(element);

        
    Spry.Widget.CollapsiblePanel.setOptions(thisopts);

        
    this.attachBehaviors();
    };

    Spry.Widget.CollapsiblePanel.prototype.init = function(element)
    {
        
    this.element this.getElement(element);
        
    this.focusElement null;
        
    this.hoverClass "CollapsiblePanelTabHover";
        
    this.openClass "CollapsiblePanelOpen";
        
    this.closedClass "CollapsiblePanelClosed";
        
    this.focusedClass "CollapsiblePanelFocused";
        
    this.enableAnimation true;
        
    this.enableKeyboardNavigation true;
        
    this.animator null;
        
    this.hasFocus false;
        
    this.contentIsOpen true;
    };

    Spry.Widget.CollapsiblePanel.prototype.getElement = function(ele)
    {
        if (
    ele && typeof ele == "string")
            return 
    document.getElementById(ele);
        return 
    ele;
    };

    Spry.Widget.CollapsiblePanel.prototype.addClassName = function(eleclassName)
    {
        if (!
    ele || !className || (ele.className && ele.className.search(new RegExp("\\b" className "\\b")) != -1))
            return;
        
    ele.className += (ele.className " " "") + className;
    };

    Spry.Widget.CollapsiblePanel.prototype.removeClassName = function(eleclassName)
    {
        if (!
    ele || !className || (ele.className && ele.className.search(new RegExp("\\b" className "\\b")) == -1))
            return;
        
    ele.className ele.className.replace(new RegExp("\\s*\\b" className "\\b""g"), "");
    };

    Spry.Widget.CollapsiblePanel.prototype.hasClassName = function(eleclassName)
    {
        if (!
    ele || !className || !ele.className || ele.className.search(new RegExp("\\b" className "\\b")) == -1)
            return 
    false;
        return 
    true;
    };

    Spry.Widget.CollapsiblePanel.prototype.setDisplay = function(eledisplay)
    {
        if( 
    ele )
            
    ele.style.display display;
    };

    Spry.Widget.CollapsiblePanel.setOptions = function(objoptionsObjignoreUndefinedProps)
    {
        if (!
    optionsObj)
            return;
        for (var 
    optionName in optionsObj)
        {
            if (
    ignoreUndefinedProps && optionsObj[optionName] == undefined)
                continue;
            
    obj[optionName] = optionsObj[optionName];
        }
    };

    Spry.Widget.CollapsiblePanel.prototype.onTabMouseOver = function()
    {
        
    this.addClassName(this.getTab(), this.hoverClass);
    };

    Spry.Widget.CollapsiblePanel.prototype.onTabMouseOut = function()
    {
        
    this.removeClassName(this.getTab(), this.hoverClass);
    };

    Spry.Widget.CollapsiblePanel.prototype.open = function()
    {
        
    this.contentIsOpen true;
        if (
    this.enableAnimation)
        {
            if (
    this.animator)
                
    this.animator.stop();
            
    this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(thistrue);
            
    this.animator.start();
        }
        else
            
    this.setDisplay(this.getContent(), "block");

        
    this.removeClassName(this.elementthis.closedClass);
        
    this.addClassName(this.elementthis.openClass);
    };

    Spry.Widget.CollapsiblePanel.prototype.close = function()
    {
        
    this.contentIsOpen false;
        if (
    this.enableAnimation)
        {
            if (
    this.animator)
                
    this.animator.stop();
            
    this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(thisfalse);
            
    this.animator.start();
        }
        else
            
    this.setDisplay(this.getContent(), "none");

        
    this.removeClassName(this.elementthis.openClass);
        
    this.addClassName(this.elementthis.closedClass);
    };

    Spry.Widget.CollapsiblePanel.prototype.onTabClick = function()
    {
        if (
    this.isOpen())
            
    this.close();
        else
            
    this.open();
        
    this.focus();
    };

    Spry.Widget.CollapsiblePanel.prototype.onFocus = function(e)
    {
        
    this.hasFocus true;
        
    this.addClassName(this.elementthis.focusedClass);
    };

    Spry.Widget.CollapsiblePanel.prototype.onBlur = function(e)
    {
        
    this.hasFocus false;
        
    this.removeClassName(this.elementthis.focusedClass);
    };

    Spry.Widget.CollapsiblePanel.ENTER_KEY 13;
    Spry.Widget.CollapsiblePanel.SPACE_KEY 32;

    Spry.Widget.CollapsiblePanel.prototype.onKeyDown = function(e)
    {
        var 
    key e.keyCode;
        if (!
    this.hasFocus || (key != Spry.Widget.CollapsiblePanel.ENTER_KEY && key != Spry.Widget.CollapsiblePanel.SPACE_KEY))
            return 
    true;
        
        if (
    this.isOpen())
            
    this.close();
        else
            
    this.open();

        if (
    e.stopPropagation)
            
    e.stopPropagation();
        if (
    e.preventDefault)
            
    e.preventDefault();

        return 
    false;
    };

    Spry.Widget.CollapsiblePanel.prototype.attachPanelHandlers = function()
    {
        var 
    tab this.getTab();
        if (!
    tab)
            return;

        var 
    self this;
        
    Spry.Widget.CollapsiblePanel.addEventListener(tab"click", function(e) { return self.onTabClick(); }, false);
        
    Spry.Widget.CollapsiblePanel.addEventListener(tab"mouseover", function(e) { return self.onTabMouseOver(); }, false);
        
    Spry.Widget.CollapsiblePanel.addEventListener(tab"mouseout", function(e) { return self.onTabMouseOut(); }, false);

        if (
    this.enableKeyboardNavigation)
        {
            
    // XXX: IE doesn't allow the setting of tabindex dynamically. This means we can't
            // rely on adding the tabindex attribute if it is missing to enable keyboard navigation
            // by default.

            // Find the first element within the tab container that has a tabindex or the first
            // anchor tag.
            
            
    var tabIndexEle null;
            var 
    tabAnchorEle null;

            
    this.preorderTraversal(tab, function(node) {
                if (
    node.nodeType == /* NODE.ELEMENT_NODE */)
                {
                    var 
    tabIndexAttr tab.attributes.getNamedItem("tabindex");
                    if (
    tabIndexAttr)
                    {
                        
    tabIndexEle node;
                        return 
    true;
                    }
                    if (!
    tabAnchorEle && node.nodeName.toLowerCase() == "a")
                        
    tabAnchorEle node;
                }
                return 
    false;
            });

            if (
    tabIndexEle)
                
    this.focusElement tabIndexEle;
            else if (
    tabAnchorEle)
                
    this.focusElement tabAnchorEle;

            if (
    this.focusElement)
            {
                
    Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement"focus", function(e) { return self.onFocus(e); }, false);
                
    Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement"blur", function(e) { return self.onBlur(e); }, false);
                
    Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement"keydown", function(e) { return self.onKeyDown(e); }, false);
            }
        }
    };

    Spry.Widget.CollapsiblePanel.addEventListener = function(elementeventTypehandlercapture)
    {
        try
        {
            if (
    element.addEventListener)
                
    element.addEventListener(eventTypehandlercapture);
            else if (
    element.attachEvent)
                
    element.attachEvent("on" eventTypehandler);
        }
        catch (
    e) {}
    };

    Spry.Widget.CollapsiblePanel.prototype.preorderTraversal = function(rootfunc)
    {
        var 
    stopTraversal false;
        if (
    root)
        {
            
    stopTraversal func(root);
            if (
    root.hasChildNodes())
            {
                var 
    child root.firstChild;
                while (!
    stopTraversal && child)
                {
                    
    stopTraversal this.preorderTraversal(childfunc);
                    try { 
    child child.nextSibling; } catch (e) { child null; }
                }
            }
        }
        return 
    stopTraversal;
    };

    Spry.Widget.CollapsiblePanel.prototype.attachBehaviors = function()
    {
        var 
    panel this.element;
        var 
    tab this.getTab();
        var 
    content this.getContent();

        if (
    this.contentIsOpen || this.hasClassName(panelthis.openClass))
        {
            
    this.removeClassName(panelthis.closedClass);
            
    this.setDisplay(content"block");
            
    this.contentIsOpen true;
        }
        else
        {
            
    this.removeClassName(panelthis.openClass);
            
    this.addClassName(panelthis.closedClass);
            
    this.setDisplay(content"none");
            
    this.contentIsOpen false;
        }

        
    this.attachPanelHandlers();
    };

    Spry.Widget.CollapsiblePanel.prototype.getTab = function()
    {
        return 
    this.getElementChildren(this.element)[0];
    };

    Spry.Widget.CollapsiblePanel.prototype.getContent = function()
    {
        return 
    this.getElementChildren(this.element)[1];
    };

    Spry.Widget.CollapsiblePanel.prototype.isOpen = function()
    {
        return 
    this.contentIsOpen;
    };

    Spry.Widget.CollapsiblePanel.prototype.getElementChildren = function(element)
    {
        var 
    children = [];
        var 
    child element.firstChild;
        while (
    child)
        {
            if (
    child.nodeType == /* Node.ELEMENT_NODE */)
                
    children.push(child);
            
    child child.nextSibling;
        }
        return 
    children;
    };

    Spry.Widget.CollapsiblePanel.prototype.focus = function()
    {
        if (
    this.focusElement && this.focusElement.focus)
            
    this.focusElement.focus();
    };

    /////////////////////////////////////////////////////

    Spry.Widget.CollapsiblePanel.PanelAnimator = function(paneldoOpenopts)
    {
        
    this.timer null;
        
    this.interval 0;
        
    this.stepCount 0;

        
    this.fps 0;
        
    this.steps 10;
        
    this.duration 500;
        
    this.onComplete null;

        
    this.panel panel;
        
    this.content panel.getContent();
        
    this.panelData = [];
        
    this.doOpen doOpen;

        
    Spry.Widget.CollapsiblePanel.setOptions(thisopts);


        
    // If caller specified speed in terms of frames per second,
        // convert them into steps.

        
    if (this.fps 0)
        {
            
    this.interval Math.floor(1000 this.fps);
            
    this.steps parseInt((this.duration + (this.interval 1)) / this.interval);
        }
        else if (
    this.steps 0)
            
    this.interval this.duration this.steps;

        var 
    this.content;

        var 
    curHeight c.offsetHeight c.offsetHeight 0;
        
        if (
    doOpen && c.style.display == "none")
            
    this.fromHeight 0;
        else
            
    this.fromHeight curHeight;

        if (!
    doOpen)
            
    this.toHeight 0;
        else
        {
            if (
    c.style.display == "none")
            {
                
    // The content area is not displayed so in order to calculate the extent
                // of the content inside it, we have to set its display to block.

                
    c.style.visibility "hidden";
                
    c.style.display "block";
            }

            
    // Unfortunately in Mozilla/Firefox, fetching the offsetHeight seems to cause
            // the browser to synchronously re-layout and re-display content on the page,
            // so we see a brief flash of content that is *after* the panel being positioned
            // where it should when the panel is fully expanded. To get around this, we
            // temporarily position the content area of the panel absolutely off-screen.
            // This has the effect of taking the content out-of-flow, so nothing shifts around.

            // var oldPos = c.style.position;
            // var oldLeft = c.style.left;
            // c.style.position = "absolute";
            // c.style.left = "-2000em";

            // Clear the height property so we can calculate
            // the full height of the content we are going to show.
            
    c.style.height "";
            
    this.toHeight c.offsetHeight;

            
    // Now restore the position and offset to what it was!
            // c.style.position = oldPos;
            // c.style.left = oldLeft;
        
    }

        
    this.increment = (this.toHeight this.fromHeight) / this.steps;
        
    this.overflow c.style.overflow;

        
    c.style.height this.fromHeight "px";
        
    c.style.visibility "visible";
        
    c.style.overflow "hidden";
        
    c.style.display "block";
    };

    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.start = function()
    {
        var 
    self this;
        
    this.timer setTimeout(function() { self.stepAnimation(); }, this.interval);
    };

    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stop = function()
    {
        if (
    this.timer)
        {
            
    clearTimeout(this.timer);

            
    // If we're killing the timer, restore the overflow
            // properties on the panels we were animating!

            
    if (this.stepCount this.steps)
                
    this.content.style.overflow this.overflow;
        }

        
    this.timer null;
    };

    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stepAnimation = function()
    {
        ++
    this.stepCount;

        
    this.animate();

        if (
    this.stepCount this.steps)
            
    this.start();
        else if (
    this.onComplete)
            
    this.onComplete();
    };

    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.animate = function()
    {
        if (
    this.stepCount >= this.steps)
        {
            if (!
    this.doOpen)
                
    this.content.style.display "none";
            
    this.content.style.overflow this.overflow;
            
    this.content.style.height this.toHeight "px";
        }
        else
        {
            
    this.fromHeight += this.increment;
            
    this.content.style.height this.fromHeight "px";
        }
    }; 
    Thanks in advance and please dont tell me to not use this feature of dreamweaver as i havnt got time to learn how to do it all by myself at the moment.

    Joe

  2. #2
    Join Date
    Jul 2006
    Location
    Athens
    Posts
    842
    Tokens
    0

    Default

    Code:
    /* SpryCollapsiblePanel.js - Revision: Spry Preview Release 1.4 */
    
    // Copyright (c) 2006. Adobe Systems Incorporated.
    // All rights reserved.
    //
    // Redistribution and use in source and binary forms, with or without
    // modification, are permitted provided that the following conditions are met:
    //
    //   * Redistributions of source code must retain the above copyright notice,
    //     this list of conditions and the following disclaimer.
    //   * Redistributions in binary form must reproduce the above copyright notice,
    //     this list of conditions and the following disclaimer in the documentation
    //     and/or other materials provided with the distribution.
    //   * Neither the name of Adobe Systems Incorporated nor the names of its
    //     contributors may be used to endorse or promote products derived from this
    //     software without specific prior written permission.
    //
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    // POSSIBILITY OF SUCH DAMAGE.
    
    var Spry;
    if (!Spry) Spry = {};
    if (!Spry.Widget) Spry.Widget = {};
    
    Spry.Widget.CollapsiblePanel = function(element, opts)
    {
        this.init(element);
    
        Spry.Widget.CollapsiblePanel.setOptions(this, opts);
    
        this.attachBehaviors();
    };
    
    Spry.Widget.CollapsiblePanel.prototype.init = function(element)
    {
        this.element = this.getElement(element);
        this.focusElement = null;
        this.hoverClass = "CollapsiblePanelTabHover";
        this.openClass = "CollapsiblePanelOpen";
        this.closedClass = "CollapsiblePanelClosed";
        this.focusedClass = "CollapsiblePanelFocused";
        this.enableAnimation = true;
        this.enableKeyboardNavigation = true;
        this.animator = null;
        this.hasFocus = false;
        this.contentIsOpen = false;
    };
    
    Spry.Widget.CollapsiblePanel.prototype.getElement = function(ele)
    {
        if (ele && typeof ele == "string")
            return document.getElementById(ele);
        return ele;
    };
    
    Spry.Widget.CollapsiblePanel.prototype.addClassName = function(ele, className)
    {
        if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1))
            return;
        ele.className += (ele.className ? " " : "") + className;
    };
    
    Spry.Widget.CollapsiblePanel.prototype.removeClassName = function(ele, className)
    {
        if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1))
            return;
        ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
    };
    
    Spry.Widget.CollapsiblePanel.prototype.hasClassName = function(ele, className)
    {
        if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
            return false;
        return true;
    };
    
    Spry.Widget.CollapsiblePanel.prototype.setDisplay = function(ele, display)
    {
        if( ele )
            ele.style.display = display;
    };
    
    Spry.Widget.CollapsiblePanel.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
    {
        if (!optionsObj)
            return;
        for (var optionName in optionsObj)
        {
            if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
                continue;
            obj[optionName] = optionsObj[optionName];
        }
    };
    
    Spry.Widget.CollapsiblePanel.prototype.onTabMouseOver = function()
    {
        this.addClassName(this.getTab(), this.hoverClass);
    };
    
    Spry.Widget.CollapsiblePanel.prototype.onTabMouseOut = function()
    {
        this.removeClassName(this.getTab(), this.hoverClass);
    };
    
    Spry.Widget.CollapsiblePanel.prototype.open = function()
    {
        this.contentIsOpen = true;
        if (this.enableAnimation)
        {
            if (this.animator)
                this.animator.stop();
            this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, true);
            this.animator.start();
        }
        else
            this.setDisplay(this.getContent(), "block");
    
        this.removeClassName(this.element, this.closedClass);
        this.addClassName(this.element, this.openClass);
    };
    
    Spry.Widget.CollapsiblePanel.prototype.close = function()
    {
        this.contentIsOpen = false;
        if (this.enableAnimation)
        {
            if (this.animator)
                this.animator.stop();
            this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, false);
            this.animator.start();
        }
        else
            this.setDisplay(this.getContent(), "none");
    
        this.removeClassName(this.element, this.openClass);
        this.addClassName(this.element, this.closedClass);
    };
    
    Spry.Widget.CollapsiblePanel.prototype.onTabClick = function()
    {
        if (this.isOpen())
            this.close();
        else
            this.open();
        this.focus();
    };
    
    Spry.Widget.CollapsiblePanel.prototype.onFocus = function(e)
    {
        this.hasFocus = true;
        this.addClassName(this.element, this.focusedClass);
    };
    
    Spry.Widget.CollapsiblePanel.prototype.onBlur = function(e)
    {
        this.hasFocus = false;
        this.removeClassName(this.element, this.focusedClass);
    };
    
    Spry.Widget.CollapsiblePanel.ENTER_KEY = 13;
    Spry.Widget.CollapsiblePanel.SPACE_KEY = 32;
    
    Spry.Widget.CollapsiblePanel.prototype.onKeyDown = function(e)
    {
        var key = e.keyCode;
        if (!this.hasFocus || (key != Spry.Widget.CollapsiblePanel.ENTER_KEY && key != Spry.Widget.CollapsiblePanel.SPACE_KEY))
            return true;
        
        if (this.isOpen())
            this.close();
        else
            this.open();
    
        if (e.stopPropagation)
            e.stopPropagation();
        if (e.preventDefault)
            e.preventDefault();
    
        return false;
    };
    
    Spry.Widget.CollapsiblePanel.prototype.attachPanelHandlers = function()
    {
        var tab = this.getTab();
        if (!tab)
            return;
    
        var self = this;
        Spry.Widget.CollapsiblePanel.addEventListener(tab, "click", function(e) { return self.onTabClick(); }, false);
        Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseover", function(e) { return self.onTabMouseOver(); }, false);
        Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseout", function(e) { return self.onTabMouseOut(); }, false);
    
        if (this.enableKeyboardNavigation)
        {
            // XXX: IE doesn't allow the setting of tabindex dynamically. This means we can't
            // rely on adding the tabindex attribute if it is missing to enable keyboard navigation
            // by default.
    
            // Find the first element within the tab container that has a tabindex or the first
            // anchor tag.
            
            var tabIndexEle = null;
            var tabAnchorEle = null;
    
            this.preorderTraversal(tab, function(node) {
                if (node.nodeType == 1 /* NODE.ELEMENT_NODE */)
                {
                    var tabIndexAttr = tab.attributes.getNamedItem("tabindex");
                    if (tabIndexAttr)
                    {
                        tabIndexEle = node;
                        return true;
                    }
                    if (!tabAnchorEle && node.nodeName.toLowerCase() == "a")
                        tabAnchorEle = node;
                }
                return false;
            });
    
            if (tabIndexEle)
                this.focusElement = tabIndexEle;
            else if (tabAnchorEle)
                this.focusElement = tabAnchorEle;
    
            if (this.focusElement)
            {
                Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "focus", function(e) { return self.onFocus(e); }, false);
                Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "blur", function(e) { return self.onBlur(e); }, false);
                Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "keydown", function(e) { return self.onKeyDown(e); }, false);
            }
        }
    };
    
    Spry.Widget.CollapsiblePanel.addEventListener = function(element, eventType, handler, capture)
    {
        try
        {
            if (element.addEventListener)
                element.addEventListener(eventType, handler, capture);
            else if (element.attachEvent)
                element.attachEvent("on" + eventType, handler);
        }
        catch (e) {}
    };
    
    Spry.Widget.CollapsiblePanel.prototype.preorderTraversal = function(root, func)
    {
        var stopTraversal = false;
        if (root)
        {
            stopTraversal = func(root);
            if (root.hasChildNodes())
            {
                var child = root.firstChild;
                while (!stopTraversal && child)
                {
                    stopTraversal = this.preorderTraversal(child, func);
                    try { child = child.nextSibling; } catch (e) { child = null; }
                }
            }
        }
        return stopTraversal;
    };
    
    Spry.Widget.CollapsiblePanel.prototype.attachBehaviors = function()
    {
        var panel = this.element;
        var tab = this.getTab();
        var content = this.getContent();
    
        if (this.contentIsOpen || this.hasClassName(panel, this.openClass))
        {
            this.removeClassName(panel, this.closedClass);
            this.setDisplay(content, "block");
            this.contentIsOpen = true;
        }
        else
        {
            this.removeClassName(panel, this.openClass);
            this.addClassName(panel, this.closedClass);
            this.setDisplay(content, "none");
            this.contentIsOpen = false;
        }
    
        this.attachPanelHandlers();
    };
    
    Spry.Widget.CollapsiblePanel.prototype.getTab = function()
    {
        return this.getElementChildren(this.element)[0];
    };
    
    Spry.Widget.CollapsiblePanel.prototype.getContent = function()
    {
        return this.getElementChildren(this.element)[1];
    };
    
    Spry.Widget.CollapsiblePanel.prototype.isOpen = function()
    {
        return this.contentIsOpen;
    };
    
    Spry.Widget.CollapsiblePanel.prototype.getElementChildren = function(element)
    {
        var children = [];
        var child = element.firstChild;
        while (child)
        {
            if (child.nodeType == 1 /* Node.ELEMENT_NODE */)
                children.push(child);
            child = child.nextSibling;
        }
        return children;
    };
    
    Spry.Widget.CollapsiblePanel.prototype.focus = function()
    {
        if (this.focusElement && this.focusElement.focus)
            this.focusElement.focus();
    };
    
    /////////////////////////////////////////////////////
    
    Spry.Widget.CollapsiblePanel.PanelAnimator = function(panel, doOpen, opts)
    {
        this.timer = null;
        this.interval = 0;
        this.stepCount = 0;
    
        this.fps = 0;
        this.steps = 10;
        this.duration = 500;
        this.onComplete = null;
    
        this.panel = panel;
        this.content = panel.getContent();
        this.panelData = [];
        this.doOpen = doOpen;
    
        Spry.Widget.CollapsiblePanel.setOptions(this, opts);
    
    
        // If caller specified speed in terms of frames per second,
        // convert them into steps.
    
        if (this.fps > 0)
        {
            this.interval = Math.floor(1000 / this.fps);
            this.steps = parseInt((this.duration + (this.interval - 1)) / this.interval);
        }
        else if (this.steps > 0)
            this.interval = this.duration / this.steps;
    
        var c = this.content;
    
        var curHeight = c.offsetHeight ? c.offsetHeight : 0;
        
        if (doOpen && c.style.display == "none")
            this.fromHeight = 0;
        else
            this.fromHeight = curHeight;
    
        if (!doOpen)
            this.toHeight = 0;
        else
        {
            if (c.style.display == "none")
            {
                // The content area is not displayed so in order to calculate the extent
                // of the content inside it, we have to set its display to block.
    
                c.style.visibility = "hidden";
                c.style.display = "block";
            }
    
            // Unfortunately in Mozilla/Firefox, fetching the offsetHeight seems to cause
            // the browser to synchronously re-layout and re-display content on the page,
            // so we see a brief flash of content that is *after* the panel being positioned
            // where it should when the panel is fully expanded. To get around this, we
            // temporarily position the content area of the panel absolutely off-screen.
            // This has the effect of taking the content out-of-flow, so nothing shifts around.
    
            // var oldPos = c.style.position;
            // var oldLeft = c.style.left;
            // c.style.position = "absolute";
            // c.style.left = "-2000em";
    
            // Clear the height property so we can calculate
            // the full height of the content we are going to show.
            c.style.height = "";
            this.toHeight = c.offsetHeight;
    
            // Now restore the position and offset to what it was!
            // c.style.position = oldPos;
            // c.style.left = oldLeft;
        }
    
        this.increment = (this.toHeight - this.fromHeight) / this.steps;
        this.overflow = c.style.overflow;
    
        c.style.height = this.fromHeight + "px";
        c.style.visibility = "visible";
        c.style.overflow = "hidden";
        c.style.display = "block";
    };
    
    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.start = function()
    {
        var self = this;
        this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
    };
    
    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stop = function()
    {
        if (this.timer)
        {
            clearTimeout(this.timer);
    
            // If we're killing the timer, restore the overflow
            // properties on the panels we were animating!
    
            if (this.stepCount < this.steps)
                this.content.style.overflow = this.overflow;
        }
    
        this.timer = null;
    };
    
    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stepAnimation = function()
    {
        ++this.stepCount;
    
        this.animate();
    
        if (this.stepCount < this.steps)
            this.start();
        else if (this.onComplete)
            this.onComplete();
    };
    
    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.animate = function()
    {
        if (this.stepCount >= this.steps)
        {
            if (!this.doOpen)
                this.content.style.display = "none";
            this.content.style.overflow = this.overflow;
            this.content.style.height = this.toHeight + "px";
        }
        else
        {
            this.fromHeight += this.increment;
            this.content.style.height = this.fromHeight + "px";
        }
    };
    I put the changed line in bold for you.


  3. #3
    Join Date
    Jan 2006
    Location
    Kent
    Posts
    987
    Tokens
    0

    Default

    Thankyou
    I cant believe it was that simple lol, i feel like a fool
    Thanks man

Posting Permissions

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