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')) {
                cls        = 'js-toggle-open';
            };
            $DOM.addClass (el, cls);
        };
    };
} );