// UKNova advanced-find-open/close-toggle


// Sidefind-hiding toggler - can be invoked or subclassed from theme
//
js_class('FindToggle', null, function() {
    this._init= function(name, find, results, extra) {
        this.name= name; this.find= find; this.results= results; this.extra= extra;
        this.isopen= dom_isClass(find, 'inuse') || find_getToggle(name);

        var toggle1=this.toggle= document.createElement('div');
        var toggle2= document.createElement('div');
        toggle1.className= 'toggle-1';
        toggle2.className= 'toggle-2';
        toggle1.title= 'click to show find box';
        toggle2.title= 'click to hide find box';
        toggle1.appendChild(img_create('/theme/'+THEME+'/img/arrow/e.gif', '>'));
        toggle2.appendChild(img_create('/theme/'+THEME+'/img/arrow/w.gif', '<'));
        toggle1.style.cursor=toggle2.style.cursor= CURSOR_POINTER;
        toggle1.onclick=toggle2.onclick= js_callback(this, 'onclick');

        find.parentNode.insertBefore(toggle1, find);
        find.insertBefore(toggle2, find.firstChild);
        this.update();
    };
    this.onclick= function() {
        this.isopen= !this.isopen;
        this.update();
        find_setToggle(this.name, this.isopen);
    };
    this.update= function() {
        dom_setClass(this.results, 'nofind', !this.isopen);
        dom_setClass(this.find, 'folded', !this.isopen);
        if (this.extra)
            dom_setClass(this.extra, 'folded', !this.isopen);
        dom_setClass(this.toggle, 'folded', this.isopen);
    };
});

// Remember toggle state on a per-pagegroup basis
//
function find_getToggle(page) {
    var cookies= document.cookie.split(';');
    var key= 'find-'+page;
    for (var i= cookies.length; i-->0;) {
        var cookie= string_strip(cookies[i]);
        if (string_startswith(cookie, key+'='))
            return cookie.substring(key.length+1)=='open';
    }
    return page!='schedule'; // all finds except schedule page default to open
};
function find_setToggle(page, isopen) {
    document.cookie= 'find-'+page+'='+(isopen? 'open' : 'close')+';path=/';
};


// Set up tree folding
//
function find_bind() {
    var tbodies= document.getElementsByTagName('tbody');
    for (var tbodyi= tbodies.length; tbodyi-->0;) { var tbody= tbodies[tbodyi];
        if (dom_isClass(tbody, 'find-advanced')) {
            var cells= tbody.parentNode.getElementsByTagName('td');
            for (var celli= cells.length; celli-->0;) { var cell= cells[celli];
                if (dom_isClass(cell, 'find-switch')) {

                    var isopen= dom_isClass(cell, 'checked');
                    var img= img_create('/theme/'+THEME+'/img/icon/switch/find1.gif', '+', 'Advanced find...');
                    img.className= 'icon-fold';
                    var button= new ImageButton(img, null, false, false, isopen);
                    button.find_tbody= tbody;
                    button.onclick= find_click;
                    cell.appendChild(img);
                    find_set(tbody, isopen);
            }   }
    }   }
}

function find_click() {
    this.selected= !this.selected;
    find_set(this.find_tbody, this.selected);
    this.update();
}

function find_set(tbody, isopen) {
    dom_setClass(tbody, 'folded', !isopen);
}

find_bind();
theme_find();
