var COLLAPSE_TAG = 'div';
var COLLAPSE_CLASS = 'collapsable';
var COLLAPSE_INITIALLY_EXPANDED = 'expanded';
var COLLAPSE_COLLAPSED_CLASS = 'collapsed';
var COLLAPSE_TRIGGER_CLASS = 'trigger';
var COLLAPSE_FOOTER_CLASS = 'footer';

function collapse_collapse(element)
{
    if(element.has_class(COLLAPSE_COLLAPSED_CLASS))
        element.remove_class(COLLAPSE_COLLAPSED_CLASS);
    else
        element.add_class(COLLAPSE_COLLAPSED_CLASS);
}

function collapse_setup_element(element, trigger)
{
    /* Ok, we gonna work with element: */
    common_setup_class_funcs(element);

    common_attach_event(trigger, 'click', function() {
        collapse_collapse(element);
        return false;
    });

    var footer = document.createElement('a');
    footer.appendChild(document.createTextNode('… »'));
    element.appendChild(footer);
    common_attach_event(footer, 'click', function() {
        collapse_collapse(element);
        return false;
    });

    footer.className = COLLAPSE_FOOTER_CLASS;
    footer.setAttribute('href', 'javascript:void(0);');

    /* Trigger class name */
    trigger.className = common_add_class(trigger.className, COLLAPSE_TRIGGER_CLASS, true);
    /* If initially div has 'expanded' class then we need to uncollapse */
    if(!element.has_class(COLLAPSE_INITIALLY_EXPANDED))
        element.add_class(COLLAPSE_COLLAPSED_CLASS);
    else
        element.remove_class(COLLAPSE_INITIALLY_EXPANDED);
}

function collapse_init()
{
    divs = document.getElementsByTagName(COLLAPSE_TAG);
    for(var i = 0; i < divs.length; ++i)
    {
        var element = divs[i];

        if(common_has_class(element.className, COLLAPSE_CLASS))
        {
            for(var j = 1; j <= 5; ++j)
            {
                var hs = element.getElementsByTagName('h' + j);
                if(hs.length > 0)
                {
                    collapse_setup_element(element, hs[0]);
                    break;
                }
            }
        }
    }
}

common_onload(collapse_init);
