var PanelSwitcher = function(associatedElement) {
    this._associatedElement = $get(associatedElement);
    this._anchors = new Array();
    this._currentAnchorId = '';
    this._previousAnchorId = '';
    this._viewClickHandler = null;
};

PanelSwitcher.prototype = {
    initialize : function() {
        this._viewClickHandler = Function.createDelegate(this, this._onViewClick);
        var children = this._associatedElement.childNodes;
        
        for (var i = 0; i < children.length; i++) {
            var child = children[i];
            
            if (child.nodeType == 1) {
                var A = child.getElementsByTagName("A")[0];
                this._anchors[this._anchors.length] = A;
                $addHandler(A, "click", this._viewClickHandler);
            }
        }

        var href = '';
        var anchor = '';
        var urlAnchor = '';

        if (document.location.href.indexOf('#') > -1)
            urlAnchor = document.location.href.split('#')[1];

        for (var i = 0; i < this._anchors.length; i++) {
            href = this._anchors[i].href;
            anchor = href.split('#')[1];

            if (urlAnchor != "" && document.getElementById(urlAnchor)) {
                if (anchor != urlAnchor)
                    document.getElementById(anchor).style.display = "none";
                else {
                    document.getElementById(urlAnchor).style.display = "block";
                    this._previousAnchorId = urlAnchor;
                }
            }
            else {
                if (document.getElementById(anchor))
                    document.getElementById(anchor).style.display = "none";

                if (i == 0) {
                    document.getElementById(anchor).style.display = "block";
                    this._previousAnchorId = anchor;
                }
            }
        }
    },
    
    dispose : function() {
        if (this._viewClickHandler) {
            for (var i = _anchors.length - 1; i >= 0; i--)
                $removeHandler(this._anchors[i], "click", this._viewClickHandler);

            delete this._viewClickHandler;
            delete this._anchors;
        }
    },

    _onViewClick : function() {
        var a = window.event.srcElement;
        var href = a.href;
        this._currentAnchorId = href.split('#')[1];

        if (this._previousAnchorId != this._currentAnchorId) {
            if ($get(this._previousAnchorId))
                $get(this._previousAnchorId).style.display = "none";

            this._previousAnchorId = this._currentAnchorId;
        }

        $get(this._currentAnchorId).style.display = "block";

        return false;
    }
};
