(function($){

    $.searchEnginePanel = function(){
    
        var that = {
            filled: false,
            loadCategoryFields: function(categoryId){
            
                $.post(setting.siteRootUrl + "/index.php/extraField/getByCategoryId", {
                    categoryId: categoryId,
                    mode: "search"
                }, function(response){
                    var height = 0;
                    
                    $searchModules = $("#searchEngineExtraFields").empty().append(response).find(".searchModule");
                    
                    $searchModules.each(function(){
                        $this = $(this);
                        height = Math.max(height, parseInt($this.css("height")) + parseInt($this.css("top")));
                    }).end().css("height", height + 10);
                    
                    if ($searchModules.length) {
                        $("#advancedSearchLink").show();
                    }
                    else {
                        $("#advancedSearchLink").hide();
                    }
                    
                    if (setting.searchValues && setting.searchValues.categoryId == categoryId) {
                        $("#searchPanelForm").autoFill(setting.searchValues);
                    }
                });
                
            },
            
            init: function(){
                $("#searchEnginePanel").load(setting.siteRootUrl + "/index.php/item/searchPanel", {
                    categoryId: setting.categoryId || 0
                }, function(){
                
                    $("#advancedSearchLink").click(function(){
                        $("#searchEngineExtraFields").toggle();
                        return false;
                    });
                    
                    $("#searchPanelForm [name=categoryId]").multiSelect({
                        nodeIdPrefix: "c",
                        url: setting.siteRootUrl + "/index.php/category/getCategoryTree/",
                        change: function(value){
                            that.loadCategoryFields(value);
                        }
                    });
                    
                    $("#searchPanelForm [name=placeId]").multiSelect({
                        nodeIdPrefix: "p",
                        url: setting.siteRootUrl + "/index.php/place/getPlaceTree/"
                    });
                    
                    if (setting.categoryId) {
                        that.loadCategoryFields(setting.categoryId);
                    }
                });
            }
        }
        
        that.init();
        
    };
    
})(jQuery);

