var vehicle_selector_defaults = {
}

var data_source = 'vehicle/selector';

function getDefaultValue(name)
{
	if (vehicle_selector_defaults[name] == undefined || vehicle_selector_defaults[name] == null) {
		return '';
	}
	return vehicle_selector_defaults[name];
}

function disableSelect(sel)
{
	$j(sel).attr('disabled', 'disabled');
	$j(sel).html('<option value=""></option>');
}

function enableSelect(sel)
{
	$j(sel).removeAttr('disabled');
}

function selectOnLoad(sel)
{
	$j(sel).attr('disabled', 'disabled');
	$j(sel).html('<option value="">Loading</option>');
}

function yearOnLoad()
{
	enableSelect(this);
	$j(this).change(yearOnChange).change();
}

function yearOnChange()
{
	disableSelect(this.form.id_make);
	disableSelect(this.form.id_model);
	if (!parseInt(this.value, 10)) {
		return;
	}
	selectOnLoad(this.form.id_make);
	$j('select[name=id_make]', this.form).load(data_source, 
		{
			data: 'makes',
			id_make: getDefaultValue('id_make'),
			only_own_makes: $j(this.form.id_make).attr('onlyownmakes'),
			year: $j(this.form.year).val()
		}, 
		makeOnLoad
	);
}

function makeOnLoad()
{
	enableSelect(this);
	$j(this).change(makeOnChange).change();
}

function makeOnChange()
{
	if (!parseInt(this.value, 10)) {
		return;
	}
	selectOnLoad(this.form.id_model);
	var params = {
		data: 'models',
		id_make:$j(this.form.id_make).val(),
		year: $j(this.form.year).val(),
//		id_model: $j(this.form.id_model).val()
		id_model: getDefaultValue('id_model')
        
	};
	if (parseInt($j(this.form.id_model).attr('withvideo'),10) == 1) {
		params.data = 'models_video';
	}
	$j('select[name=id_model]', this.form).load(data_source, 
		params, 
		modelOnLoad
	);
}

function modelOnLoad()
{
	enableSelect(this);
//	$j('<option value="">Select Model</option>').prependTo(this);
	this.value = getDefaultValue('id_model');
}

function initSelectorForm(id_form, defaults, _data_source)
{
	vehicle_selector_defaults = defaults;
	data_source = _data_source;
	disableSelect($j('#'+id_form+' select[name=year]'));
	disableSelect($j('#'+id_form+' select[name=id_make]'));
	disableSelect($j('#'+id_form+' select[name=id_model]'));
	
	selectOnLoad('#'+id_form+' select[name=year]');
	var requestYears = {
		data: 'years', 
		year: getDefaultValue('year'),
		limit:2,
		withvideo:$j('#'+id_form+' select[name=year]').attr('withvideo')
	};
	$j('#'+id_form+' select[name=year]').load(data_source, requestYears, yearOnLoad );
}

function validate_vehicle_selector(frm) {
  var value = '';
  var errFlag = new Array();
  var _qfGroups = {};
  _qfMsg = '';

  value = frm.elements['year'].selectedIndex == -1? '': frm.elements['year'].options[frm.elements['year'].selectedIndex].value;

  if (value == '' && !errFlag['year']) {
    errFlag['year'] = true;
    _qfMsg = _qfMsg + '\n - Year is required';
  }

  value = frm.elements['id_make'].selectedIndex == -1? '': frm.elements['id_make'].options[frm.elements['id_make'].selectedIndex].value;

  if (value == '' && !errFlag['id_make']) {
    errFlag['id_make'] = true;
    _qfMsg = _qfMsg + '\n - Make is required';
  }

  value = frm.elements['id_model'].selectedIndex == -1? '': frm.elements['id_model'].options[frm.elements['id_model'].selectedIndex].value;

  if (value == '' && !errFlag['id_model']) {
    errFlag['id_model'] = true;
    _qfMsg = _qfMsg + '\n - Model is required';
  }

  if (_qfMsg != '') {
    _qfMsg = 'Invalid information entered.' + _qfMsg;
    _qfMsg = _qfMsg + '\nPlease correct these fields.';
    alert(_qfMsg);
    return false;
  }
  return true;
}
