﻿// default signature
// new Collapser('divSearchCriteria','lnkSearchLabel','Show Search Criteria','Hide Search Criteria', true);

if(typeof Prototype=='undefined')
{
    alert('ODACollapser requires prototype.js v.1.6.0.2 or later');
}


var ODACollapser = new Class.create();
ODACollapser.prototype = {
    initialize: function(_collapseDiv, _collapseLabel, _showText, _hideText, _defaultShow, _toggleCallback) {
        this.collapseDiv = $(_collapseDiv);
        this.collapseLabel = $(_collapseLabel);
        this.showText = (_showText == null) ? "Show" : _showText;
        this.hideText = (_hideText == null) ? "Hide" : _hideText;
        this.defaultShow = (_defaultShow == null) ? true : _defaultShow;
        this.toggleCallback = _toggleCallback;

        if (_defaultShow) {
            this.collapseDiv.show();
            this.collapseLabel.innerHTML = this.hideText;
        }
        else {
            this.collapseDiv.hide();
            this.collapseLabel.innerHTML = this.showText;
        }

        Event.observe(this.collapseLabel, 'click', this.toggle.bindAsEventListener(this));
    },

    toggle: function() {
        var collapsed = false;
        if (this.collapseLabel.innerHTML == this.showText) {
            this.collapseDiv.show();
            this.collapseLabel.innerHTML = this.hideText;
        }
        else {
            this.collapseDiv.hide();
            this.collapseLabel.innerHTML = this.showText;
            collapsed = true;
        }

        if (typeof this.toggleCallback == "function") {
            this.toggleCallback(collapsed);
        }
    },

    isCollapsed: function() {
        if (this.collapseLabel.innerHTML == this.showText) {
            return true;
        }
        else {
            return false;
        }
    },

    setVisible: function(visible) {
        if (visible && this.isCollapsed()) {
            this.toggle();
        }
        if (!visible && !this.isCollapsed()) {
            this.toggle();
        }
    }
};

