$(document).ready(function(){
    $('select.make').filtersSelectChain({
        url: adv_hor_params,
        targets: ['model'],
        sources: ['make','body'],
        loading: "Loading...",
        empty: 'All',
        sel: 'make'
    });
    $('select.model').filtersSelectChain({
        url: adv_hor_params,
        targets: ['body'],
        sources: ['make','model'],
        loading: "Loading...",
        empty: 'All',
        sel: 'model'
    }); /*
    $('#adv_hor_body').filtersSelectChain({
        url: 'ajax',
        targets: ['mileage','price','year','make','model'],
        sources: ['make','model','body','year_from','year_to','price_from','price_to','mileage_from','mileage_to'],
        loading: "Loading...",
        empty: 'All',
        sel: 'body'
    });	*/
});

 emptys1 = { 'make': 'Any Make', 'model': 'Any Model', 
    'body': 'Any Style'};
/*     
selectchain_options = {
    price:{
            url: 'ajax',
            targets: ['make','model','body','mileage','year'],
            sources: ['make','model','body','year_from','year_to','price_from','price_to','mileage_from','mileage_to'],
            loading: "Loading...",
            empty: 'All',
            sel: 'price'
        },
    mileage:{
            url: 'ajax',
            targets: ['make','model','body','price','year'],
            sources: ['make','model','body','year_from','year_to','price_from','price_to','mileage_from','mileage_to'],
            loading: "Loading...",
            empty: 'All',
            sel: 'mileage'
        },
    year:{
            url: 'ajax',
            targets: ['make','model','body','mileage','price'],
            sources: ['make','model','body','year_from','year_to','price_from','price_to','mileage_from','mileage_to'],
            loading: "Loading...",
            empty: 'All',
            sel: 'year'
        }
}
*/
function filtersSelectChainLoad(settings)
{
	var targets = settings.targets;
	var sources = settings.sources;
	var url = settings.url;
	var loading = settings.loading;
	var empty = settings.empty;
	//var callback = settings.callback;
        var sel = settings.sel; 
	var data = "&oper=selectchain_vehicle&trackbar=true&selectchain_common="+sel;
        var fl = 0;
        if(!$('#adv_hor_make').val() && !$('#adv_hor_body').val() && (sel == 'make' || sel == 'body'))
            fl = 1;
        
        switch(sel){
            case 'make':
                   $('select.model, select.body').val('').attr('disabled', 'disabled');
                   break;
            case 'model':
                   $('select.body').val('').attr('disabled', 'disabled');
                   break;
        }

            for (i = 0; i < sources.length; i++)
            {
                switch(sources[i]){
                    case 'make':                       
                       data += "&"+sources[i]+"="+$('#adv_hor_'+sources[i]).val();
                       break;
                    case 'model':
                       data += "&"+sources[i]+"="+$('#adv_hor_'+sources[i]).val();
                       break;
                    case 'body':
                          data += "&"+sources[i]+"="+$('#adv_hor_'+sources[i]).val();
                       break;
                    case 'year_from':
                        if($('#adv_hor_'+sel).val()!='')
                           data += "&"+sources[i]+"="+year_min;
                        break;
                    case 'year_to':
                        if($('#adv_hor_'+sel).val()!='')
                            data += "&"+sources[i]+"="+year_max;
                        break;
                    case 'mileage_from':
                        if($('#adv_hor_'+sel).val()!='')
                            data += "&"+sources[i]+"="+odometer_min;
                        break;
                    case 'mileage_to':
                        if($('#adv_hor_'+sel).val()!='')
                            data += "&"+sources[i]+"="+odometer_max;
                        break;
                    case 'price_from':
                        if($('#adv_hor_'+sel).val()!='')
                            data += "&"+sources[i]+"="+price_min;
                        break;
                    case 'price_to':
                        if($('#adv_hor_'+sel).val()!='')
                            data += "&"+sources[i]+"="+price_max;
                        break;
                }
            }


	$.ajax({
		url: url,
		data: data,
		type: 'post',
		dataType: 'json',
		success: function (j)
		{   
            if(j){
                for (var k = 0; k < targets.length; k++)
                {   
                    if(targets[k] == 'model'){
                        $('select.model').attr('disabled','');
                    } else if(targets[k] == 'body'){
                        $('select.body').attr('disabled','');
                    }
                    if(j[targets[k]] != undefined && j[targets[k]] != null){
                        //alert(emptys1['5']);
                        switch(targets[k]){
                            case 'make':
                            case 'model':
                            case 'trim':
                            case 'body': 
                                var s = $('#adv_hor_'+targets[k]).val();                                 
                                $('#adv_hor_'+targets[k]).empty().append("<option value=\"\">"+emptys1[targets[k]]+"</option>");
                                for (i = 0; i < j[targets[k]].length; i++)
                                {
                                    if(!j[targets[k]][i]["name"] || j[targets[k]][i]["name"] == undefined || j[targets[k]][i]["name"] == null) continue;
                                    id = j[targets[k]][i]["id"];
                                    text = j[targets[k]][i]["name"]+" ("+j[targets[k]][i]["count"]+")"; 
                                    $('#adv_hor_'+targets[k]).append("<option value=\""+id+"\">"+text+"</option>");
                                } 
                                if($('#adv_hor_'+targets[k]+' option[value='+s+']').size()){
                                     $('#adv_hor_'+targets[k]).val(s); 
                                } else { 
                                    $('#adv_hor_'+targets[k]).val('');
                                }
                                break;
                            case 'year': 
                                year_min = j[targets[k]].min;
                                trackbar.getObject('msadvH_year_hor').updateLeftValue(year_min);
                                year_max = j[targets[k]].max;
                                trackbar.getObject('msadvH_year_hor').updateRightValue(year_max);
                                break;
                            case 'mileage':
                                if(fl == 1){
                                  odometer_min = _odometer_min;
                                  odometer_max = _odometer_max;
                                } else {
                                  odometer_min = j[targets[k]].min;
                                  odometer_max = j[targets[k]].max;
                                }
                                
                                trackbar.getObject('msadvH_odometr_hor').updateLeftValue(odometer_min);
                                trackbar.getObject('msadvH_odometr_hor').updateRightValue(odometer_max);
                                break;
                            case 'price':
                                if(fl == 1){
                                    price_min = _price_min;
                                    price_max = _price_max;
                                } else {
                                    price_min = j[targets[k]].min;
                                    price_max = j[targets[k]].max;
                                }
                                trackbar.getObject('msadvH_price_hor').updateLeftValue(price_min);
                                trackbar.getObject('msadvH_price_hor').updateRightValue(price_max);
                                break;
                            
                        }
                        
                        
                    }
                }
            }
			//callback();
		},
		error: function ()
		{
			//jalert("an error occurred",2);
		}
	});
}

$.fn.filtersSelectChain = function()
{
        var settings = arguments[0] || {};
        $(this).change(function()
        {
                filtersSelectChainLoad(settings,this.id);
        });
}

function adv_filter_search()
{
	var sch_ar = {
		year_from : year_min,
		year_to : year_max,
		make : $('.modul-search_adv_hor .make').val(),
		model : $('.modul-search_adv_hor .model').val(),
		trim : '',
		body : $('.modul-search_adv_hor .body').val(),
		mileage_from : odometer_min,
		mileage_to : odometer_max,
		price_from : price_min,
		price_to : price_max,
		keyword: escape($('.modul-search_adv_hor .keyword').val().replace('_',' ').replace('/',' '))
	};
	advanced_search(sch_ar, adv_hor_status);
}

