
var loader_timer, flt_bag_type = 0, catalog_page = 1, flt_colors = [];
/*var r_url = {'школьный рюкзак' : 'shkolnye-ryukzaki',
             'городские рюкзаки' : 'gorodskie-ryukzaki',
             'спортивные рюкзаки' : 'sportivnye-ryukzaki',
             'подростковые рюкзаки' : 'podrostkovye-ryukzaki',
             'молодежные рюкзаки' : 'molodezhnye-ryukzaki',
             'рюкзаки для ноутбуков' : 'noutbuk-ryukzaki',
             'туристические рюкзаки' : 'turisticheskie-ryukzaki',
             'женские рюкзаки' : 'zhenskie-ryukzaki',
             'рюкзаки для девочек' : 'ryukzaki-dlya-devochek',
             'сумки через плечо' : 'sumki-cherez-plecho',
             'портфели' : 'portfeli',
             'спортивные сумки' : 'sportivnyie-sumki',
             'дорожные сумки' : 'dorozhnyie-sumki',
             'клатчи' : 'klatchi',
             'сумки на ремне' : 'sumki-na-remne',
             'сумки на ручках' : 'sumki-na-ruchkax'
            };*/

function array_search(needle, haystack, argStrict){
    var strict = !! argStrict;
    var key = -1;
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            return key;
        }
    }
    return false;
}

function setSelectOptions(selector,optArr){
    $('option',selector).not(':first').remove();
    var options = '';
    for(i in optArr){
        options += '<option value="'+optArr[i]+'">'+optArr[i]+'</option>';
    }
    $(selector).append(options).val(0);
//alert(optArr);
}

function urldecode(str){
    return decodeURIComponent((str + '').replace(/\+/g, '%20'));
}

//Показ прелоадера при ajax-запросе
$.fn.ajaxPreload = function(action){
    var target = $(this);
    if(action==true){
        clearTimeout(loader_timer);
        if($('#ajax_loader').size()==0) target.prepend('<div id="ajax_loader"></div>');
        $('#ajax_loader')
        .css({
            'position': 'absolute',
            'z-index': '200',
            'padding': '10px',
            'margin': '-10px 0 0 -10px',
            'width': target.width()+'px',
            'height': target.height()+'px',
            'background': 'url(assets/templates/rightbag/img/ajax-loader.gif) center center no-repeat #fff',
            'opacity': 0.7
        });
    }else{
        $('#ajax_loader').remove();
    }
}


//Ajax-запрос
function ajaxRequest(params){
    var data_conteiner = $('ul:first','#products');
    var pages_conteinet = $('#pages');
    if(typeof(params)=='undefined') $('#products').ajaxPreload(false);
    $.ajax({
        url: 'index-ajax.php',
        type: "GET",
        cache: false,
        data: $.extend({
            'q':'assets/snippets/catalogView/catalogView_ajax.inc.php',
            'ctl_page': 2,
            'doc_id':doc_id
        },params),
        dataType: 'json',
        success: function(response) {
            var prod_list = response.prod_list;
            if(prod_list) data_conteiner.html(prod_list);
            if(typeof(response.pages)!='undefined') pages_conteinet.html(response.pages);
            $('#products').ajaxPreload(false);
        //if(typeof(initPage)=='function') initPage();
        },
        error: function(jqXHR,textStatus,errorThrown){
            if(typeof(console)!='undefined') console.log(jqXHR,textStatus,errorThrown);
        }
    });
}

//Фильтрация по цвету
$.fn.colors = function(){
    var parent = $(this);
    $('a',parent).each(function(i){
        $(this).click(function(){
            if(i==0){
                $('a',parent).removeClass('active');
                $(this).addClass('active');
            }else if($(this).is('.active')){
                $(this).removeClass('active');
                if($('a.active',parent).size()==0) $('a:first',parent).addClass('active');
            }else{
                $('a:first',parent).removeClass('active');
                $(this).addClass('active');
            }
            clearTimeout(shk_timer);
            $('#products').ajaxPreload(true);
            catalog_page = 1;
            applyFilter();
            return false;
        });
    });
}

$.history.init(function(hash){
    if(!hash) return;
    var patt = /ctl_page=\d{1,}/i;
    var h_page_str = hash.match(patt).toString();
    if(!h_page_str) return;
    var h_page_arr = h_page_str.split('=');
    var h_page = h_page_arr[h_page_arr.length-1];//h_page_str.substr(h_page_str.length-1,1);
    //console.log(h_page_str,h_page);
    if(catalog_page != h_page){
        catalog_page = h_page;
        applyFilter();
    }
});

//Ajax-переход по страницам
$.fn.ajaxPages = function(){
    var parent = $(this);
    $('a',parent).live('click',function(){
        var href = $(this).attr('href');
        var page_arr = href.split('=');
        var page = page_arr[page_arr.length-1];
        //var page = href.charAt(href.length-1);
        var hrefArr = href.split('?');
        catalog_page = page;
        applyFilter();
        //$.history.load('page'+page);
        return false;
    });
}


//Просматривает значения фильтров
function applyFilter(){
    var flt_hash = '';
    var params = {};
    params.ctl_page = catalog_page;
    flt_hash = 'ctl_page='+params.ctl_page;
    params.ctl_filter = '';

    //цвета
    $('a','#colors').each(function(i){
        if(i>0 && $(this).is('.active')){
            params.ctl_filter += typeof(flt_colors[i-1])!='undefined' ? flt_colors[i-1]+'~' : '';
        }
    });
    if(params.ctl_filter){
        params.ctl_filter = 'color,'+params.ctl_filter.substr(0,params.ctl_filter.length-1)+',13';
    //flt_hash += '&ctl_filter='+params.ctl_filter;
    }

    //цена
    var price1 = $("#price-range").slider("values", 0);
    var price2 = $("#price-range").slider("values", 1);
    if(params.ctl_filter) params.ctl_filter += '|';
    params.ctl_filter += 'price,'+price1+',3|price,'+price2+',4';

    //в наличии

    if($('#filterFrom a.active').parent().hasClass('filterFrom-moskov')){
        params.ctl_filter += '|inventory,0,3';
    } 

    flt_hash += '&ctl_filter='+params.ctl_filter;

    //---фильтры для модели---
    params.model = '';
    //Материал
    var flt_material = $('#flt_material').val();
    if(flt_material) params.model += 'material,'+flt_material;

    //Подтип сумки
    var flt_subtype = $('#flt_subtype').val();
    if(flt_subtype){
        if(params.model) params.model += '|';
        if(flt_subtype) params.model += 'subtype,'+flt_subtype;
    }

    flt_hash += '&model='+params.model;

    //---фильтр бренда---
    if($('#flt_brand').size()>0 && $('#flt_brand').val()!=false){
        var flt_brand = $('#flt_brand').val();
        params.brand = '';
        if(flt_brand){
            params.brand += flt_brand;
            flt_hash += '&brand='+flt_brand;
        }
    }else if($('#flt_brand').size()==0){
        params.brand = doc_id;
        flt_hash += '&brand='+doc_id;
    }

    //Тип сумки
    if($('#flt_bagtype').size()>0 && $('#flt_bagtype').val()!=false){
        flt_bag_type = $('#flt_bagtype').val();
        params.bag_type = flt_bag_type;
        flt_hash += '&bag_type='+flt_bag_type;
    }

    params.ctl_sortby = 'price';
    params.ctl_sorttype = 'integer';
    params.ctl_sortdir = $('a:first','#flt_sorting').is('.active') ? 'asc' : 'desc';

    $('#pageAnchor').attr('name',flt_hash);
    var name_type = {'мужские сумки' : 'men', 'женские сумки' : 'women', 'рюкзаки' : 'backpacks'};
    var curr_name_sub_type = $('div.t-center h2').html().toLowerCase();
    if (curr_name_sub_type in name_type){
        window.location.hash = flt_hash;
    }    
    $('#products').ajaxPreload(true);
    ajaxRequest(params);
}


//Загружает значения фильтров из строки якоря (hash)
function loadHashFilter(){
    var name_type = {'мужские сумки' : 'men', 'женские сумки' : 'women', 'рюкзаки' : 'backpacks'};
    var curr_name_sub_type = $('div.t-center h2').html().toLowerCase();
    if (curr_name_sub_type in name_type){
        var locationHash = window.location.hash/*$('#pageAnchor').attr('name')*/;
    }
    else{
        var locationHash = $('#pageAnchor').attr('name');
    }
    
    var curFilterStr = locationHash.substr(1);
    if(!locationHash){
        var curFilterStr = urldecode(window.location.search.substr(1));
    }
    var curFilterArr = curFilterStr ? curFilterStr.split('&') : new Array();
    for(i in curFilterArr){
        var filter = curFilterArr[i].split('=');
        switch(filter[0]){
            //страница
            case 'ctl_page':
                catalog_page = filter[1];
                break;
            //фильтры
            case 'ctl_filter':
                var flt_typeArr = filter[1].split('|');
                var priceArr = [];
                for(ii in flt_typeArr){
                    var fltArr = flt_typeArr[ii].split(',');
                    //цвета
                    if(fltArr[0]=='color'){
                        var fltValueArr = fltArr[1].split('~');
                        if(fltValueArr.length>0){
                            for(iii in fltValueArr){
                                var color = fltValueArr[iii];
                                var color_index = parseInt(array_search(color,flt_colors));
                                if(color_index > -1) $('a:eq('+(color_index+1)+')','#colors').addClass('active');
                            }
                            $('a:first','#colors').removeClass('active');
                        }
                    //цены
                    } else if(fltArr[0]=='price'){
                        priceArr.push(fltArr[1]);
                    } else if(fltArr[0]=='inventory'){
                        $('#filterFrom .filterFrom-all a').removeClass('active');
                        $('#filterFrom .filterFrom-moskov a').addClass('active');
                    }
                }
                if(typeof(priceArr[0])!='undefined') $("#price-range").slider("values", 0, priceArr[0]);
                if(typeof(priceArr[1])!='undefined') $("#price-range").slider("values", 1, priceArr[1]);
                break;
            case 'model':
                var flt_typeArr = filter[1].split('|');
                for(ii in flt_typeArr){
                    var fltArr = flt_typeArr[ii].split(',');
                    //материал
                    if(fltArr[0]=='material'){
                        $('#flt_material').val(fltArr[1]);
                    //подтип
                    }else if(fltArr[0]=='subtype'){
                        $('#flt_subtype').val(fltArr[1]);
                    }
                }
                break;
            case 'brand':
                $('#flt_brand').val(filter[1]);
                break;
            case 'bag_type':
                $('#flt_bagtype').val(filter[1]);
                break;
        }
    }
    if(locationHash) applyFilter();
}

/*function change_sub_type(){
    var r_url = {'школьный рюкзак' : 'shkolnye-ryukzaki',
                 'городской рюкзак' : 'gorodskie-ryukzaki',
                 'спортивный рюкзак' : 'sportivnye-ryukzaki',
                 'подростковый рюкзак' : 'podrostkovye-ryukzaki',
                 'молодежный рюкзак' : 'molodezhnye-ryukzaki',
                 'рюкзаки для ноутбуков' : 'noutbuk-ryukzaki',
                 'туристический рюкзак' : 'turisticheskie-ryukzaki',
                 'женские рюкзаки' : 'женский рюкзак',
                 'рюкзаки для девочек' : 'рюкзак для девочек'
                };
    var w_url = {'дорожные сумки' : 'дорожная сумка',
                 'клатчи' : 'клатч',
                 'сумки на ремне' : 'сумка на ремне',
                 'сумки на ручках' : 'сумка на ручках'
                }; 
    var m_url = {'сумки через плечо' : 'сумка через плечо',
                 'портфели' : 'портфель',
                 'спортивные сумки' : 'спортивная сумка'
                };
    
    var sel_val = $('#flt_subtype option:selected').val();
    window.location.href=window.location.protocol+'//'+window.location.hostname+'/'+r_url[sel_val];
    
}*/

//document ready
$(document).bind('ready',function(){

    $('#pages').ajaxPages();
    $('#colors').colors();

    $("#price-range").slider({
        range: true,
        step: 50,
        min: min_price,
        max: max_price,
        values: [0, 19750],
        create: function(event, ui) {
            $('a.ui-slider-handle:first',this).html('<span id="price_min_amount"></span>');
            $('a.ui-slider-handle:last',this).html('<span id="price_max_amount"></span>');
        },
        slide: function(event, ui){
            if($(this).slider('option','min') < ui.values[0])
                $("#price_min_amount").html('<b>'+ui.values[0]+'</b> руб.');
            else
                $("#price_min_amount").empty();

            if($(this).slider('option','max') > ui.values[1])
                $("#price_max_amount").html('<b>'+ui.values[1]+'</b> руб.');
            else
                $("#price_max_amount").empty();
        },
        stop: function(){
            catalog_page = 1;
            applyFilter();
        }
    });
   
   //if (curr_name_sub_type == 'рюкзаки' || curr_name_sub_type == 'женские сумки' || curr_name_sub_type == 'мужские сумки'){
       $('#flt_subtype').live('change',function(){
           if ($('#flt_subtype option:selected').val() != ''){
               $('.c-color06').removeClass('active');
               $('.c-color07').removeClass('active');
               $('.c-color08').removeClass('active');
           }
           catalog_page = 1;
           applyFilter();
       });
   //}  
   $('#flt_material, #flt_brand').live('change',function(){
           catalog_page = 1;
           applyFilter();
       });

    $('div:eq(0)','#price-range').text(min_price+' руб.');
    $('div:eq(1)','#price-range').text(max_price+' руб.');
    
    var curr_name_sub_type = $('div.t-center h2').html().toLowerCase();
    var r_sub_type = {'школьные рюкзаки' : 'школьный рюкзак',
                      'городские рюкзаки' : 'городской рюкзак',
                      'спортивные рюкзаки' : 'спортивный рюкзак',
                      'подростковые рюкзаки' : 'подростковый рюкзак',
                      'молодежные рюкзаки' : 'молодежный рюкзак',
                      'рюкзаки для ноутбуков' : 'рюкзак для ноутбука',
                      'туристические рюкзаки' : 'туристический рюкзак'/*,
                      'женские рюкзаки' : 'женский рюкзак',
                      'рюкзаки для девочек' : 'рюкзак для девочек'*/
                      };
    
    var w_sub_type = {'дорожные сумки' : 'дорожная сумка',
                      'клатчи' : 'клатч',
                      'сумки на ремне' : 'сумка на ремне',
                      'сумки на ручках' : 'сумка на ручках'
                     }; 
    var m_sub_type = {'сумки через плечо' : 'сумка через плечо',
                      'портфели' : 'портфель',
                      'спортивные сумки' : 'спортивная сумка'
                     };
    
    if (curr_name_sub_type != 'рюкзаки' && (curr_name_sub_type in r_sub_type) || (curr_name_sub_type == 'женские рюкзаки' || curr_name_sub_type == 'рюкзаки для девочек')){
        var html='<option value="">любой</option>'
        $.each(r_sub_type, function(i,el){
            if (i == curr_name_sub_type)
                html+= '<option value="'+el+'" selected="selected">'+el+'</option>';
            else
                html+= '<option value="'+el+'">'+el+'</option>'
        })
        $('#flt_subtype').html(html);
        //$('#flt_subtype').attr('onchange','change_sub_type()');
        if (curr_name_sub_type == 'женские рюкзаки' || curr_name_sub_type == 'рюкзаки для девочек'){
            $('.c-color06').addClass('active');
            $('.c-color07').addClass('active');
            $('.c-color08').addClass('active');
        }
        $('#flt_subtype').trigger('change');
        return false;
    }
    
    if (curr_name_sub_type != 'женские сумки' && (curr_name_sub_type in w_sub_type)){
         
        var html='<option value="">любой</option>'
        $.each(w_sub_type, function(i,el){
            if (i == curr_name_sub_type)
                html+= '<option value="'+el+'" selected="selected">'+el+'</option>';
            else
                html+= '<option value="'+el+'">'+el+'</option>'
        })
        $('#flt_subtype').html(html);
        $('#flt_subtype').trigger('change');
        return false;
    }
    
    if (curr_name_sub_type != 'мужские сумки' && (curr_name_sub_type in m_sub_type)){
        var html='<option value="">любой</option>'
        $.each(m_sub_type, function(i,el){
            if (i == curr_name_sub_type)
                html+= '<option value="'+el+'" selected="selected">'+el+'</option>';
            else
                html+= '<option value="'+el+'">'+el+'</option>'
        })
        $('#flt_subtype').html(html);
        $('#flt_subtype').trigger('change');
        return false;
    }
    
    loadHashFilter();

});

function filterFrom (where) {

    if($('#filterFrom span.filterFrom-'+where+' a').hasClass('active') == false) {

        if(where == 'all') {
            $('#filterFrom span.filterFrom-all a').addClass('active');
            $('#filterFrom span.filterFrom-moskov a').removeClass('active');
        } else {
            $('#filterFrom span.filterFrom-moskov a').addClass('active');
            $('#filterFrom span.filterFrom-all a').removeClass('active');
        }

        catalog_page = 1;
        applyFilter();
    }
    return false;
}
