function search_common(container)
{
	var y_f = container.find('.search_common_year_from').val();
	var y_t = container.find('.search_common_year_to').val();
	var mk =  container.find('.search_common_make').val();
	var md =  container.find('.search_common_model').val();
	var tr =  container.find('.search_common_trim').val();
	var bd =  container.find('.search_common_body').val();
	var ml =  container.find('.search_common_mileage').val();
	var pr =  container.find('.search_common_price').val();

	var search_values = {};
	search_values.year_from = y_f;
	search_values.year_to = y_t;
	search_values.make = mk;
	search_values.model = (
		mk != ''
	)?md:'';


	search_values.trim = (
		mk != '' &&
		md != ''
	)?tr:'';
	search_values.body = bd;
	search_values.mileage_from = (
		ml == 100001
	)?ml:'';
	search_values.mileage_to = (
		ml != 100001
	)?ml:'';
	search_values.price_from = (
		pr == 100001
	)?pr:'';
	search_values.price_to = (
		pr != 100001
	)?pr:'';

	advanced_search(search_values, common_status);
}
function search_common_reset(container)
{
    container.find('.search_common_year_from').val('');
    container.find('.search_common_year_to').val('');
    container.find('.search_common_make').val('');
    container.find('.search_common_model').val('');
    container.find('.search_common_trim').val('');
    container.find('.search_common_body').val('');
    container.find('.search_common_mileage').val('');
    container.find('.search_common_price').val('');
    //reloading all the ajax controls
    container.find('.search_common_make').trigger('change');
}
emptys = {'year_from': 'From any Year', 'year_to': 'To any Year', 'make': 'Any Make', 'model': 'Any Model', 'trim': 'Any Trim', 'body': 'Any Body',
           'mileage': 'Any Mileage', 'price': 'Any Price'};

var gloabalYear_to,gloabalYear_for;


$(document).ready(function()
{
    $('.search_common_year_from').filtersSelectChain({
        url: 'ajax',
        targets: ['year_to','make','model','trim','body','mileage','price'],
        sources: ['year_from','year_to','make','model','trim','body','mileage','price'],
        loading: "Loading...",
        empty: 'All',
        sel: 'year_from'
    });

    $('.search_common_year_to').filtersSelectChain({
        url: 'ajax',
        targets: ['year_from','make','model','trim','body','mileage','price'],
        sources: ['year_from','year_to','make','model','trim','body','mileage','price'],
        loading: "Loading...",
        empty: 'All',
        sel: 'year_to'
    });
    $('.search_common_make').filtersSelectChain({
        url: 'ajax',
        targets: ['year_from','year_to','model','trim','body','mileage','price'],
        sources: ['year_from','year_to','make','model','trim','body','mileage','price'],            
        loading: "Loading...",
        empty: 'All',
        sel: 'make'
    });


    $('.search_common_model').filtersSelectChain({
        url: 'ajax',
        targets: ['year_from','year_to',/*'make',*/'trim','body','mileage','price'],
        sources: ['year_from','year_to','make','model','trim','body','mileage','price'],
        loading: "Loading...",
        empty: 'All',
        sel: 'model'
    });


    $('.search_common_trim').filtersSelectChain({
        url: 'ajax',
        targets: ['year_from','year_to',/*'make','model',*/'body','mileage','price'],
        sources: ['year_from','year_to','make','model','trim','body','mileage','price'],
        loading: "Loading...",
        empty: 'All',
        sel: 'trim'
    });


    $('.search_common_body').filtersSelectChain({
        url: 'ajax',
        //targets: ['year_from','year_to','make','mileage','price','body'],
        targets: ['year_from','year_to','make','model','trim','mileage','price'],
        sources: ['year_from','year_to','make','model','trim','body','mileage','price'],
        loading: "Loading...",
        empty: 'All',
        sel: 'body'
    });


    $('.search_common_mileage').filtersSelectChain({
        url: 'ajax',
        //targets: ['year_from','year_to','make','body','price'],
        targets: ['year_from','year_to','make','model','trim','body','price'],
        sources: ['year_from','year_to','make','model','trim','body','mileage','price'],
        loading: "Loading...",
        empty: 'All',
        sel: 'mileage'
    });


    $('.search_common_price').filtersSelectChain({
        url: 'ajax',
        //targets: ['year_from','year_to','make','body','mileage'],
        targets: ['year_from','year_to','make','model','trim','body','mileage'],
        sources: ['year_from','year_to','make','model','trim','body','mileage','price'],
        loading: "Loading...",
        empty: 'All',
        sel: 'price'
    });
});




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&selectchain_common="+sel;
    if($('.search_common_'+sel).val()==''&&(sel=='make'||sel=='model'||sel=='trim')){
      //  sources.splice(5,3);
        if(sel=='make'){
      //      sources.splice(3,2);
            $('.search_common_model').empty().append("<option value=''>"+emptys['model']+"</option>");
            $('.search_common_trim').empty().append("<option value=''>"+emptys['trim']+"</option>");
            $('.search_common_model').attr('disabled', 'disabled');
            $('.search_common_trim').attr('disabled', 'disabled');
        }
        if(sel=='model'){
      //      sources.splice(4,1);
            $('.search_common_trim').empty().append("<option value=''>"+emptys['trim']+"</option>");
            $('.search_common_trim').attr('disabled', 'disabled');
        }
        targets.push(sel);
    }
    data += common_params;
    for (var i = 0; i < sources.length; i++)
    {
        //if($('.search_common_'+sources[i]).val())
        if ( (sel=='make' && sources[i] != 'model' && sources[i] != 'trim') ||
             (sel=='model' && sources[i] != 'trim') || 
             (sel != 'make' && sel != 'model'))
        {
            data += "&"+sources[i]+"="+$('.search_common_'+sources[i]).val();
        }
    }
    
    for (var k=0;k<targets.length;k++){
        $('.search_common_'+targets[k]).attr('disabled','disabled');
    }

    $.ajax({
        url: url,
        data: data,
        type: 'post',
        dataType: 'json',
        success: function (j)
        {
            var recalcField = '';
            if(j){
                for (var k = 0; k < targets.length; k++)
                {   
                    if (targets[k]!='model'&&targets[k]!='trim') {
                        $('.search_common_'+targets[k]).removeAttr('disabled');
                    }else {
                        if (targets[k]=='model' && $('.search_common_model option').length > 1){
                            $('.search_common_trim').removeAttr('disabled', 'disabled');
                        }else if (targets[k]=='trim' && $('.search_common_trim option').length > 1){
                            $('.search_common_trim').removeAttr('disabled', 'disabled');
                        }
                    }
                    
                    if(j[targets[k]] != undefined && j[targets[k]] != null)
                    {
                        var s = $('.search_common_'+targets[k]).val();
                        $('.search_common_'+targets[k]).empty();
                        $('.search_common_'+targets[k]).append("<option value=''>"+emptys[targets[k]]+"</option>");

                        for (i = 0; i < j[targets[k]].length; i++)
                        {
                            var text;
                            if(!j[targets[k]][i]["name"] || j[targets[k]][i]["name"] == undefined || j[targets[k]][i]["name"] == null) continue;
                            var id = j[targets[k]][i]["id"]; 
                            if(targets[k] == 'year_to' || targets[k] == 'year_from' || targets[k] == 'price' || targets[k] == 'mileage'){
                                text = j[targets[k]][i]["name"];
                            }else{
                                text = j[targets[k]][i]["name"]+" ("+j[targets[k]][i]["count"]+")";
                            } 
                            $('.search_common_'+targets[k]).append("<option value=\""+id+"\">"+text+"</option>");
                        }
                        if ($('.search_common_'+targets[k]+' option').length > 1) { // for disabled make and model
                            $('.search_common_'+targets[k]).removeAttr('disabled');
                        }
       
                        var nId = parseInt(s);
                        if($('.search_common_'+targets[k]+' option[value='+nId+']').length > 0){
                            $('.search_common_'+targets[k]).val(nId); 
                        } else if (s != '') {
                            switch (targets[k]){
                                case 'year_from':
                                    $('.search_common_'+targets[k]+' option').removeAttr('selected');
                                    $('.search_common_'+targets[k]+' option:eq(1)').attr('selected','selected');
                                    break;
                                case 'year_to':
                                    $('.search_common_'+targets[k]+' option').removeAttr('selected');
                                    $('.search_common_'+targets[k]+' option:last').attr('selected','selected');
                                    break;
                                case 'mileage':
                                    $('.search_common_'+targets[k]+' option:last').attr('selected','selected');
                                    break;
                                case 'price':
                                    $('.search_common_'+targets[k]+' option:last').attr('selected','selected');
                                    break;
                                default:
                                    $('.search_common_'+targets[k]).val('');
                                    break;
                            }
                            if (!recalcField){recalcField = targets[k];}
                        }
                        else{
                            $('.search_common_'+targets[k]).val('');
                        }
                    }
                }
                
                if (recalcField){
                    //alert(recalcField+' requires recalculation');
                    $('.search_common_'+recalcField).trigger('change');
                }
            }
        },
        error: function ()
        {
            jalert("an error occurred",2);
        }
    });
}

$.fn.filtersSelectChain = function()
{
        var settings = arguments[0] || {};
        $(this).change(function()
        {
                filtersSelectChainLoad(settings,this.id);
        });
}
