$(function(){ $('#content ul li, #content ol li').each(function(i, e) { if ($(e).css('list-style-type') == 'square') {$(e).css('color', '#900');$(e).contents().wrapAll('<div class="text"></div>'); } }) })
$(function(){ $('a.popup').each(function(i,e) { $(e).bind('click', function(ev){var height=480;width=640;if(e.href.lastIndexOf("/popup/tvspot/") > 0){height=258;width=420;} var win = window.open(e.href, 'popup', "width="+width+",height="+height+",resizable=yes");return false;}) }) })

var search = {
    init:function(){
        if(search.initialized == true) {
            return;
        }
        // store references for easier usage
        search.country_select = $('#id_country');
        search.region_select = $('#id_region');
        search.color_select = $('#id_color');
        search.price_group_select = $('#id_price_group');
        // bind event handlers
        $('#weinsuche').bind('reset', search.rebuild_all); 
        search.country_select.bind('change', search.update_from_country);
        search.region_select.bind('change', search.update_from_region);
        search.color_select.bind('change', search.update_from_color);
        // init region if country is selected
        var val = document.getElementById('id_country').value
        if(val != "") {
            search.rebuild_select_keep(search.region_select, search.filter_list(search.rlist, search.ctor[val]));
            //search.update_from_country({target:document.getElementById('id_country')})
        }
        var val_2 = document.getElementById('id_color').value
        if(val_2 != "") {
            search.rebuild_select_keep(search.color_select, search.filter_list(search.colist, search.ctoco[val]));
            //search.update_from_color({target:document.getElementById('id_color')});
        }
        search.initialized = true;
    },
    
    // setter
    country_list:function(clist){search.clist = clist;},
    region_list:function(rlist){search.rlist = rlist;},
    color_list:function(colist){search.colist = colist;},
    c_to_r_map:function(mapping){search.ctor = mapping;},
    r_to_c_map:function(mapping){search.rtoc = mapping;},
    co_to_r_map:function(mapping){search.cotor = mapping;},
    r_to_co_map:function(mapping){search.rtoco = mapping;},
    co_to_c_map:function(mapping){search.cotoc = mapping;},
    c_to_co_map:function(mapping){search.ctoco = mapping;},
    
    rebuild_select:function(el, li) {
        // rebuild select `el` with option list `li`
        el.removeOption(/./);
        el.addOption(li, false);
    },
    
    rebuild_select_keep:function(el, li) {
        var selected = el.selectedValues();
        el.removeOption(/./);
        el.addOption(li, false);
        el.selectOptions(selected);
    },
    
    rebuild_all:function(){
      search.rebuild_select(search.country_select, search.clist);
      search.rebuild_select(search.region_select, search.rlist);
      search.rebuild_select(search.color_select, search.colist);  
    },
    
    update_from_country:function(ev) {
        var el = $(ev.target);
        var choice = ev.target.value;
        if(choice == 0) {
            search.rebuild_select(search.region_select, search.rlist);
            search.rebuild_select(search.color_select, search.colist);
        }else{
            if(document.getElementById('id_color').value == 0){
                search.rebuild_select_keep(search.region_select, search.filter_list(search.rlist, search.ctor[choice]));
            }else{
                // filter regions based on country AND color
                search.rebuild_select_keep(search.region_select, 
                    search.filter_list(
                        search.filter_list(search.rlist, search.ctor[choice]),
                        search.cotor[document.getElementById('id_color').value])
                    );
            }
            search.rebuild_select_keep(search.color_select, search.filter_list(search.colist, search.ctoco[choice]));
        }
    },
    
    update_from_region:function(ev) {
        var el = $(ev.target);
        var choice = ev.target.value;
        if(choice != 0) {
            //search.rebuild_select_keep(search.country_select, search.filter_list(search.clist, search.rtoc[choice]));
            search.rebuild_select_keep(search.color_select, search.filter_list(search.colist, search.rtoco[choice]));
            search.country_select.selectOptions([search.rtoc[choice]], true);
            //search.color_select.selectOptions([search.rtoco[choice]], true);
        }
    },
    
    update_from_color:function(ev){
        var el = $(ev.target);
        var choice = ev.target.value;
        if(choice != 0){
            // update country and region from color
            // ? _keep ??
            search.rebuild_select_keep(search.region_select, search.filter_list(search.rlist, search.cotor[choice]));
            search.rebuild_select_keep(search.country_select, search.filter_list(search.clist, search.cotoc[choice]));
            
        }
    },
    
    filter_list:function(li, filter) {
        // filter list `li` to only contain elements for `index`
        var out = {};
        for(key in filter) {
            if(li[filter[key]]) {
                out[filter[key]] = li[filter[key]];
            }
        }
        return out;
    }
}

