var $DOM        = YAHOO.util.Dom;
var $CREATE        = YAHOO.util.Dom.create;
var $EVENT        = YAHOO.util.Event;
$EVENT.onDOMReady(function() {
    var _toggle = function(ev, obj) {
        var targ = $DOM.get(this.hash.substr(1));
        if (targ) {
            if ($DOM.hasClass(targ, 'js-toggle-closed')) {
                $DOM.replaceClass(targ, 'js-toggle-closed', 'js-toggle-open');
            } else if ($DOM.hasClass(targ, 'js-toggle-open')) {
                $DOM.replaceClass(targ, 'js-toggle-open', 'js-toggle-closed');
            }
        };
        if (ev) {
            $EVENT.stopEvent(ev);
        };
    };
    //
    var tmp_location = window.location.hash.substr(1);
    if (tmp_location) {
        var tmp_el = $DOM.get(tmp_location);
        if (tmp_el) {
            if ($DOM.hasClass(tmp_el, 'js-collapsor')) {
                $DOM.addClass(tmp_el, 'js-open');
            };
        };
    };
    var els = $DOM.getElementsByClassName('js-collapsor');
    for (var i = 0; i < els.length; i++) {
        //
        var el = $DOM.get(els[i]);
        var id = $DOM.generateId(el);
        var counter = 0;
        var tgs = $DOM.getElementsByClassName('js-toggle', 'span', el);
        for (var j = 0; j < tgs.length; j++) {
            var tg = $DOM.get(tgs[j]);
            var p = $DOM.getAncestorsByClass(tg, 'js-collapsor', null, null, true);
            if (p) {
                if (p != el) {
                    continue;
                };
            };
            var a = $CREATE('a', { href: '#' + id, className: tg.className, listener: ['click', _toggle] });
            a.innerHTML = tg.innerHTML;
            tg.parentNode.replaceChild(a, tg);
            counter++;
        };
        if (counter) {
            var cls = 'js-toggle-closed';
            if ($DOM.hasClass(el, 'js-open') || els.length == 1) {
                cls = 'js-toggle-open';
            };
            $DOM.addClass(el, cls);
        };
    };
});
