var BROWN = window.BROWN || {};

BROWN.home = function() {
    var last = [];
    var delayTimeout;
    return {
        init : function() {
            var oListings = $('listings');
            Element.cleanWhitespace(oListings);
            this.pruneByTagName(oListings, 'LI');
            oListings = oListings.childNodes;
            $A(oListings).each(function(oListing) {
                Element.addClassName(oListing, 'closed');
                Element.setStyle(oListing, {overflow: 'hidden'});
                Element.setStyle(oListing, {height: '24px'});
                Event.observe(oListing, 'mouseover', function() {
                    this.beginCollapse(oListing, true);
                }.bind(this));
                Event.observe(oListing, 'mouseout', function() {
                    this.cancelCollapse(oListing);
                }.bind(this));
            }.bind(this));
            this.beginCollapse(oListings[7], false);
        },
        pruneByTagName : function(oListings, tagName) {
            for (var i = 0; i < oListings.childNodes.length; ++i) {
                var node = oListings.childNodes[i];
                if (node.tagName != tagName)
                    Element.remove(node);
            } 
        },
        beginCollapse : function(oListing, doDelay) {
            Element.addClassName(oListing, 'active');
            if (doDelay == true) {
                delayTimeout = setTimeout(function() {
                    this.collapse(oListing);
                }.bind(this), 300);
            } else {
                this.collapse(oListing);
            }
        },
        cancelCollapse : function(oListing) {
            if (Element.hasClassName(oListing, 'closed')) {
                Element.removeClassName(oListing, 'active');
            }
            clearTimeout(delayTimeout);
        },
        collapse : function(oListing) {
            last.push(oListing);
            if ( last.length > 3 ) {
                last.shift();
            }
            var closeLast = true;
            var oLast = last[(last.length) - 2];
            if ( last.length === 1) {
                closeLast = false;
            } else if ( oLast === last[(last.length) - 1] ) {
                closeLast = false;
            }

            if (closeLast == true) {
                Element.addClassName(oLast, 'closed');
                Element.removeClassName(oLast, 'active');
                Element.removeClassName(oListing, 'closed');
                Element.addClassName(oListing, 'active');
                myAnim = new Tween(oListing.style,oLast.style,'height',Tween.regularEaseOut,24,194,0.4,'px');
                myAnim.start();
            } else {
                if (Element.hasClassName(oListing, 'closed')) {
                    Element.removeClassName(oListing, 'closed');
                    Element.addClassName(oListing, 'active');
                    myAnim = new Tween(oListing.style,null,'height',Tween.regularEaseOut,24,194,0.4,'px');
                    myAnim.start();
                }
            }
        }
    };
}();

