$(function() {
    // Tempo
    $('.track-search-tempo .checkbox').each(function() {
        var label = $(this).children('label');
        var input = $(this).children('input');
        input.wrap('<span class="checkWrapper"></span>');
        
        if(input.attr('checked')) {
            label.addClass('selected');
        }
        
        var img = document.createElement('img');
        $(img).attr(
            'src', 
            '/neon/download/imageasset/theme/icons/tempo/tempo'+
                input.val()+
                '.png?transform=[cz:38|38]'
        ).attr('alt', label.text()).attr('title', label.text());
        label.html(img);
        
        if($.browser.msie) {
            label.click(function(e) {
                e.cancelBubble = true;
                input.click();
            });
        }
        
        input.click(function() {
            var check = $(this).attr('checked');
            if($.browser.msie) {
                check = !check;
            }
            if(check) {
                label.addClass('selected');
            } else {
                label.removeClass('selected');
            }
            
            var length = $(this).parents('.track-search-checkList').find('input:checked').length;
            if($.browser.msie) {
                length += check ? 1:-1;    
            }
            if(length) {
                $(this).parents('.inputArea').addClass('used');
            } else {
                $(this).parents('.inputArea').removeClass('used');
            }
        }).focus(function() {
            label.addClass('focused');
        }).blur(function() {
            label.removeClass('focused');
        });
    });
    
    
    // Others
    $('.track-search-checkList:not(.track-search-tempo)').find('.checkbox').each(function(i, elem) {
        var label = $(elem).children('label');
        var input = $(elem).children('input');
        input.wrap('<span class="checkWrapper"></span>');
        
        if(input.attr('checked')) {
            label.addClass('selected');
        }
        
        input.click(function() {
            if($(this).attr('checked')) {
                label.addClass('selected');
            } else {
                label.removeClass('selected');
            }
            
            if($(this).parents('.track-search-checkList').find('input:checked').length) {
                $(this).parents('.inputArea').addClass('used');
            } else {
                $(this).parents('.inputArea').removeClass('used');
            }
        }).focus(function() {
            label.addClass('focused');
        }).blur(function() {
            label.removeClass('focused');
        });
        
        var forId = $(this).parents('.fieldArea').children('label.field').attr('for').substr(5);
        if(forId == 'genre') {
            return;
        }
        var url = '/neon/download/imageasset/theme/icons/';
        switch(forId) {
            case 'vocals':
                url += 'vocals/';
                switch(input.val()) {
                    case 'm': url += 'male'; break;
                    case 'f': url += 'female'; break;
                    case 'b': url += 'both'; break;
                    case 'n': url += 'none'; break;
                }
                url += '.png';
                break;
            case 'instrument':
                url += 'instruments/' + input.val() + '.png'; 
                break;
            case 'vibes':
                url += 'vibes/' + input.val() + '.png';
                break;
        }
        
        url += '?transform=[cz:28|28]';
        
        var img = document.createElement('img');
        $(img).attr('src', url).attr('alt', label.text()).attr('title', label.text());
        label.prepend(img);
    });
    
    
    // All
    $('.track-search-checkList').each(function(i, elem) {
        if($(elem).find('input:checked').length) {
            $(elem).children('.inputArea').addClass('used');
        } else {
            $(elem).children('.inputArea').removeClass('used');
        }    
    });
});
