function search_category_init() {
    // get list by id
    var list = YAHOO.util.Dom.get("refine-bycategory");
    if(!list) return false;
    var tree = new YAHOO.widget.TreeView(list);  
    var root = tree.getRoot(); 
    
    var li = list.firstChild;
    
    do {
        if(li.nodeName=="LI") {
            var value = li.innerHTML;
            var stop = value.toUpperCase().indexOf("<UL>");
            if(stop!=-1) { 
                value = value.substr(0,stop);
            }
            node = new YAHOO.widget.TaskNode(value, root, false);
            if(stop!=-1) {
                liSub = li.childNodes[1].childNodes[1];
                do {
                    if(liSub.nodeName=="LI") {
                        var node2 = new YAHOO.widget.TaskNode(liSub.innerHTML, node, false);
                    }
                    liSub = liSub.nextSibling;
                }
                while (liSub);
            }
        }
        li = li.nextSibling;
    }
    while (li);
    
    tree.draw(); 
}
/* initialize calendars */
function calendar_init() {
    // assign event handlers to from button
    var btn_from = YAHOO.util.Dom.get("btn-fromCal", "a");  
    if(!btn_from) return false;
    YAHOO.util.Event.addListener(btn_from, "click", function(){ btn_calendar_click('fromCal');}); 
    
    // assign event handlers to to button
    var btn_to = YAHOO.util.Dom.get("btn-toCal", "a");
    if(!btn_to) return false;
    YAHOO.util.Event.addListener(btn_to, "click", function(){ btn_calendar_click('toCal');}); 
    
    // initialize calendar widget
    fCal = new YAHOO.widget.Calendar("cal1","fromCal",{ close:true } ); 
    fCal.render(); 
    tCal = new YAHOO.widget.Calendar("cal2","toCal",{ close:true } ); 
    tCal.render(); 
    
    // on calendar widget select
    fCal.selectEvent.subscribe(from_calendar_select, fCal, true);
    tCal.selectEvent.subscribe(to_calendar_select, tCal, true);
    // on <select> tags change
    YAHOO.util.Event.addListener(["toMonth","toDay","toYear"], "change", to_select_change); 
    YAHOO.util.Event.addListener(["fromMonth","fromDay","fromYear"], "change", from_select_change);
}
/* update <select>s on calendar widget select */
function from_calendar_select(type,args,obj) { 
    var dates = args[0];  
    var date = dates[0]; 
    var year = date[0], month = date[1], day = date[2]; 
    
    var fromMonth = YAHOO.util.Dom.get("fromMonth"); 
    var fromDay = YAHOO.util.Dom.get("fromDay"); 
    var fromYear = YAHOO.util.Dom.get("fromYear"); 
    
    fromMonth.selectedIndex = month; 
    fromDay.selectedIndex = day; 
    
    for (var y=0;y<fromYear.options.length;y++) { 
        if (fromYear.options[y].text == year) { 
            fromYear.selectedIndex = y; 
            break; 
        } 
    } 
}
/* update <select>s on calendar widget select */
function to_calendar_select(type,args,obj) { 
    var dates = args[0];  
    var date = dates[0]; 
    var year = date[0], month = date[1], day = date[2]; 
    
    var toMonth = YAHOO.util.Dom.get("toMonth"); 
    var toDay = YAHOO.util.Dom.get("toDay"); 
    var toYear = YAHOO.util.Dom.get("toYear"); 
    
    toMonth.selectedIndex = month; 
    toDay.selectedIndex = day; 
    
    for (var y=0;y<toYear.options.length;y++) { 
        if (toYear.options[y].text == year) { 
            toYear.selectedIndex = y; 
            break; 
        } 
    } 
}
/* update calendar widget on <select> change */
function from_select_change() { 
    var fromMonth = YAHOO.util.Dom.get("fromMonth"); 
    var fromDay = YAHOO.util.Dom.get("fromDay"); 
    var fromYear = YAHOO.util.Dom.get("fromYear"); 
    
    var month = parseInt(fromMonth.options[fromMonth.selectedIndex].text); 
    var day = parseInt(fromDay.options[fromDay.selectedIndex].value); 
    var year = parseInt(fromYear.options[fromYear.selectedIndex].value); 
    
    if (! isNaN(month) && ! isNaN(day) && ! isNaN(year)) { 
        var date = month + "/" + day + "/" + year; 
        
        fCal.select(date); 
        fCal.cfg.setProperty("pagedate", month + "/" + year); 
        fCal.render(); 
    }
}
function to_select_change() { 
    var toMonth = YAHOO.util.Dom.get("toMonth"); 
    var toDay = YAHOO.util.Dom.get("toDay"); 
    var toYear = YAHOO.util.Dom.get("toYear"); 
    
    var month = parseInt(toMonth.options[toMonth.selectedIndex].text); 
    var day = parseInt(toDay.options[toDay.selectedIndex].value); 
    var year = parseInt(toYear.options[toYear.selectedIndex].value); 
    
    if (! isNaN(month) && ! isNaN(day) && ! isNaN(year)) { 
        var date = month + "/" + day + "/" + year; 
        
        tCal.select(date); 
        tCal.cfg.setProperty("pagedate", month + "/" + year); 
        tCal.render(); 
    } 
}
/* do the show / hide */
function btn_calendar_click(cal) {
    
    var cal2 = (cal=="fromCal") ? "toCal" : "fromCal";
    
    if(YAHOO.util.Dom.getStyle(cal,"display")=="none") {
        YAHOO.util.Dom.setStyle(cal,"display","block");
        YAHOO.util.Dom.setStyle(cal2,"display","none");
    } else {
        YAHOO.util.Dom.setStyle(cal,"display","none");
    }
}

YAHOO.util.Event.addListener(window, "load", search_category_init);
YAHOO.util.Event.addListener(window, "load", calendar_init);
