// JavaScript Document
var DiskAuto = {
	markId: null,
	modelId: null,
	modificationId: null,
	markField: 'disk_mark',
	modelField: 'disk_model',
	modificationField: 'disk_modification',
	searchButton: 'auto_disk_search_by_auto',
	resultId: 'auto_result',
	isExecute: false,
	type: null,
	requestType: 'disk',
	
	initFields: function(type) {
		this.initMark();
	},
	
	disableModelField: function() {
		$(document.body).getElementById(this.modelField).disabled = true;
	},
	
	disableModificationField: function() {
		$(document.body).getElementById(this.modificationField).disabled = true;
	},
	
	disableSearchButton: function() {
		$(document.body).getElementById(this.searchButton).disabled = true;
	},
	
	enableSearchButton: function() {
		$(document.body).getElementById(this.searchButton).disabled = false;
	},
	
	hideResult: function() {
		$(document.body).getElement('.search_result').hide();
	},
	
	setMarkId: function() {
		this.markId = $(document.body).getElementById(this.markField).value;
	},
	
	setModelId: function() {
		this.modelId = $(document.body).getElementById(this.modelField).value;
	},
	
	setModificationId: function() {
		this.modificationId = $(document.body).getElementById(this.modificationField).value;
	},
	
	showResultButton: function() {
		this.setModificationId();
		if(
			this.markId && this.markId != 0 &&
			this.modelId && this.modelId != 0 &&
			this.modificationId && this.modificationId != 0
		) {
			this.enableSearchButton();
		} else {
			this.disableSearchButton();
		}
	},
	
	init: function() {
		if(!this.markId && !this.modelId) {
			this.disableSearchButton();
		}
	},
	
	initModel: function() {
		this.setMarkId();
		
		if(this.markId && this.markId != 0) {
			if(!this.isExecute) {
				this.isExecute = true;
				
				var obj_select = document.getElementById(DiskAuto.modelField);
				obj_select.options.length = 0;
				obj_select.options[0] = new Option('Выполняется...', 0);
				obj_select.disabled = true;
				
				var selected_id = DiskAuto.modelId;
				
				var req = new Request(
					{
						url: '/ajax/auto/model/',
						method: 'post', 
						onSuccess: function(responseText, responseXML) {
							if(responseXML) {
								var success = responseXML.getElementsByTagName('success');
								
								if(success.length) {
									var items = success[0].getElementsByTagName('item');
									if(items.length) {
										var obj_select = document.getElementById(DiskAuto.modelField);
										obj_select.options.length = 0;
										obj_select.options[0] = new Option('Выберите', 0);
										var i = 0;
										
										for(; i < items.length; i++) {
											var item = items[i];
											
											obj_select.options[i + 1] = new Option(item.firstChild.nodeValue, item.getAttribute('id'));
											if(selected_id == item.getAttribute('id')) {
												obj_select.options[i + 1].selected = true;
											}
										}
										obj_select.disabled = false;
									}
								} else {
									var error = responseXML.getElementsByTagName('error');
									if(error.length) {
										alert(error[0].firstChild.nodeValue);
									}
								}
							}
							
							DiskAuto.isExecute = false;
							
							DiskAuto.setModelId();
							DiskAuto.initModification();
						},
						
						onFailure: function() {
							alert('Ошибка, попробуйте еще раз');
							DiskAuto.isExecute = false;
						}
					}
				);
				req.send('mark_id=' + this.markId + '&type=' + this.requestType);
				
			} else {
				alert('Подождите...');
			}
		} else {
			this.disableModelField();
			this.disableModificationField();
			this.disableSearchButton();
		}
	},
	
	initModification: function() {
		this.setModelId();
		
		if(this.modelId && this.modelId != 0) {
			if(!this.isExecute) {
				this.isExecute = true;
				
				var obj_select = document.getElementById(DiskAuto.modificationField);
				obj_select.options.length = 0;
				obj_select.options[0] = new Option('Выполняется...', 0);
				obj_select.disabled = true;
				
				var selected_id = this.modificationId;
				
				var req = new Request(
					{
						url: '/ajax/auto/modification/',
						method: 'post', 
						onSuccess: function(responseText, responseXML) {
							if(responseXML) {
								var success = responseXML.getElementsByTagName('success');
								
								if(success.length) {
									var items = success[0].getElementsByTagName('item');
									if(items.length) {
										var obj_select = document.getElementById(DiskAuto.modificationField);
										obj_select.options.length = 0;
										obj_select.options[0] = new Option('Выберите', 0);
										var i = 0;
										
										for(; i < items.length; i++) {
											var item = items[i];
											
											obj_select.options[i + 1] = new Option(item.firstChild.nodeValue, item.getAttribute('id'));
											if(selected_id == item.getAttribute('id')) {
												obj_select.options[i + 1].selected = true;
											}
										}
										
										obj_select.disabled = false;
										
										DiskAuto.setModificationId();
										if(!DiskAuto.modificationId || DiskAuto.modificationId == 0) {
											DiskAuto.disableSearchButton();
										} else {
											DiskAuto.enableSearchButton();
										}
									} else {
										var obj_select = document.getElementById(DiskAuto.modificationField);
										obj_select.options.length = 0;
										DiskAuto.enableSearchButton();
									}
								} else {
									var error = responseXML.getElementsByTagName('error');
									if(error.length) {
										alert(error[0].firstChild.nodeValue);
									}
								}
							} 
							
							DiskAuto.isExecute = false;
						},
						
						onFailure: function() {
							alert('Ошибка, попробуйте еще раз');
							DiskAuto.isExecute = false;
						}
					}
				);
				req.send('model_id=' + this.modelId + '&type=' + this.requestType);
				
			} else {
				alert('Подождите...');
			}
		} else {
			this.disableModificationField();
			this.disableSearchButton();
		}
	},
	
	initMark: function() {
		
		if(!this.isExecute) {
			this.isExecute = true;
			
			var obj_select = document.getElementById(DiskAuto.markField);
			obj_select.options.length = 0;
			obj_select.options[0] = new Option('Выполняется...', 0);
			obj_select.disabled = true;
			
			var selected_id = this.markId;
			
			var req = new Request(
				{
					url: '/ajax/auto/mark/',
					method: 'post', 
					onSuccess: function(responseText, responseXML) {
						if(responseXML) {
							var success = responseXML.getElementsByTagName('success');
							
							if(success.length) {
								var items = success[0].getElementsByTagName('item');
								if(items.length) {
									var obj_select = document.getElementById(DiskAuto.markField);
									obj_select.options.length = 0;
									obj_select.options[0] = new Option('Выберите', 0);
									var i = 0;
									
									for(; i < items.length; i++) {
										var item = items[i];
										
										obj_select.options[i + 1] = new Option(item.firstChild.nodeValue, item.getAttribute('id'));
										if(selected_id == item.getAttribute('id')) {
											obj_select.options[i + 1].selected = true;
										}
									}
									
									obj_select.disabled = false;
								}
							} else {
								var error = responseXML.getElementsByTagName('error');
								if(error.length) {
									alert(error[0].firstChild.nodeValue);
								}
							}
						}
						
						DiskAuto.isExecute = false;
						
						DiskAuto.setMarkId();
						DiskAuto.initModel();
					},
					
					onFailure: function() {
						alert('Ошибка, попробуйте еще раз');
						DiskAuto.isExecute = false;
					}
				}
			);
			req.send('type=' + this.requestType);
			
		} else {
			alert('Подождите...');
		}

		if(!this.markId || this.markId == 0) {
			this.disableModelField();
			this.disableModificationField();
			this.disableSearchButton();
		}
	}
};
