Oil = {
	
	form: {
		main: 'selection_of_oils',
		mark: 'oil_mark',
		model: 'oil_model',
		model_filter: 'oil_model_filter',
		year: 'oil_year',
		engine: 'oil_engine',
		result_button: 'oil_submit',
		result_container: 'search_result'
	},
	
	value: {
		mark: null,
		model: null,
		year: null,
		engine: null
	},
	
	timer: null,
	
	init: function() {
		this.disableAllFields();
	
		this.initMark();
		
		$('#' + this.form.mark).bind(
			'change',
			function(e) {
				Oil.setMark();
				if(Oil.value.mark) {
					Oil.initEngine();
					Oil.disableModelField();
				} else {
					Oil.disableEngineField();
					Oil.disableModelField();
					Oil.disableResultButton();
					Oil.disableSearchResult();
				}
			}
		);
		
		$('#' + this.form.engine).bind(
			'change',
			function(e) {
				Oil.setEngine();
				if(Oil.value.engine) {
					Oil.initModel('');
				} else {
					Oil.disableModelField();
					Oil.disableResultButton();
					Oil.disableSearchResult();
				}
			}
		);
		
		$('#' + this.form.model_filter).bind(
			'keypress',
			function(e) {
				clearTimeout(Oil.timer);
				Oil.timer = setTimeout(
					function() {
						Oil.initModel($('#' + Oil.form.model_filter).val());
					},
					1000
				);
				Oil.disableResultButton();
				Oil.disableSearchResult();
			}
		);
		
		$('#' + this.form.model).bind(
			'change',
			function(e) {
				Oil.setModel();
				if(Oil.value.model) {
					Oil.enableResultButton();
				} else {
					Oil.disableResultButton();
				}
				
				Oil.disableSearchResult();
			}
		);
	},
	
	initMark: function() {
		$.ajax({
			type: "POST",
			url: '/ajax/oil/mark/',
			data: '',
			success: function(s) {
				var items = s.getElementsByTagName('item');
				if(items.length) {
					Oil.updateSelect(Oil.form.mark, s, true);
				}
			}
		});
		
		this.enableMarkField();
		this.setMark();
	},
	
	setMark: function() {
		var value = $('#' + this.form.mark).val();
		if(value && value != '0') {
			this.value.mark = value;
		} else {
			this.value.mark = null;
		}
	},
	
	initEngine: function() {
		if(Oil.value.mark) {
			$.ajax({
				type: "POST",
				url: '/ajax/oil/engine/',
				data: 'mark=' + Oil.value.mark,
				success: function(s) {
					var items = s.getElementsByTagName('item');
					if(items.length) {
						Oil.updateSelect(Oil.form.engine, s, true);
					} else {
						Oil.cleanSelect(Oil.form.model);
					}
				}
			});
			
			this.enableEngineField();
			this.setEngine();
		} else {
			alert('Сначала выберите марку автомобиля');
		}
	},
	
	setEngine: function() {
		var value = $('#' + this.form.engine).val();
		if(value && value != '0') {
			this.value.engine = value;
		} else {
			this.value.engine = null;
		}
	},
	
	initModel: function(query) {
		if(Oil.value.mark && Oil.value.engine) {
			this.disableModelField();
			$.ajax({
				type: "POST",
				url: '/ajax/oil/model/',
				data: 'mark=' + Oil.value.mark + '&engine=' + Oil.value.engine + '&query=' + encodeURIComponent(query),
				success: function(s) {
					var items = s.getElementsByTagName('item');
					if(items.length) {
						Oil.updateSelect(Oil.form.model, s, false);
					} else {
						Oil.cleanSelect(Oil.form.model);
					}
				}
			});
			this.enableModelField();
			this.setModel();
		} else {
			alert('Сначала выберите марку автомобиля и тип двигателя');
		}
	},
	
	setModel: function() {
		var value = $('#' + this.form.model).val();
		if(value && value != '0') {
			this.value.model = value;
		} else {
			this.value.model = null;
		}
	},
	
	updateSelect: function(ele, items, need_choose_item) {
		var obj_select = document.getElementById(ele);
		obj_select.options.length = 0;
		
		var i = 0;
		
		if(need_choose_item) {
			obj_select.options[0] = new Option('Выберите', 0);
			i++;
		}
		
		$(items).find('item').each(
			function() {
				obj_select.options[i] = new Option(
					$(this).text(), 
					$(this).attr('id')
				);
				i++;
			}
		);
	},
	
	cleanSelect: function(ele) {
		var obj_select = document.getElementById(ele);
		obj_select.options.length = 0;
	},
	
	disableAllFields: function() {
		this.disableMarkField();
		this.disableEngineField();
		this.disableModelField();
		this.disableResultButton();
		this.disableSearchResult();
	},
	
	disableMarkField: function() {
		$('#' + this.form.mark).attr('disabled', 'disabled');
	},
	
	disableEngineField: function() {
		$('#' + this.form.engine).attr('disabled', 'disabled');
	},
	
	disableModelField: function() {
		$('#' + this.form.model).attr('disabled', 'disabled');
		$('#' + this.form.model_filter).attr('disabled', 'disabled');
	},
	
	enableMarkField: function() {
		$('#' + this.form.mark).removeAttr('disabled');
	},
	
	enableEngineField: function() {
		$('#' + this.form.engine).removeAttr('disabled');
	},
	
	enableModelField: function() {
		$('#' + this.form.model).removeAttr('disabled');
		$('#' + this.form.model_filter).removeAttr('disabled');
	},
	
	enableResultButton: function() {
		$('#' + this.form.result_button).css('display', 'block');
	}, 
	
	disableResultButton: function() {
		$('#' + this.form.result_button).css('display', 'none');
	},
	
	submit: function() {
		if(this.value.mark && this.value.engine && this.value.engine) {
			this.disableSubmitButton();
			
			$.ajax({
				type: "POST",
				url: '/ajax/oil/result/',
				data: 'model=' + Oil.value.model,
				success: function(s) {
					var result = s.getElementsByTagName('result');
					if(result.length) {
						$('#' + Oil.form.result_container).html(result[0].firstChild.nodeValue);
					}
				}
			});
			
			this.enableSubmitButton();
			this.enableSearchResult();
			
		} else {
			alert('Сначала выберите марку автомобиля, тип двигателя и модель автомобиля');
		}
	},
	
	disableSubmitButton: function() {
		$('#' + this.form.result_button).attr('disabled', 'disabled');
	},
	
	enableSubmitButton: function() {
		$('#' + this.form.result_button).removeAttr('disabled');
	},
	
	disableSearchResult: function() {
		$('#' + this.form.result_container).css('display', 'none');
	},
	
	enableSearchResult: function() {
		$('#' + this.form.result_container).css('display', 'block');
	}
};

//var data = $('#' + this.FormId).serialize();