document.observe('dom:loaded', function() {
	
	var typeSelect = $('type-select') ? $('type-select') : null;
	var measurementSelect = $('measurement-select') ? $('measurement-select') : null;
	var inchmeasurementSelect = $('inch_measurement-select') ? $('inch_measurement-select') : null;
	var brandSelect = $('brand-select') ? $('brand-select') : null;
	
	typeSelect.selectedIndex = 0;
	measurementSelect.disabled=false;
	inchmeasurementSelect.disabled=false;
	
	if(typeSelect){
		WS.Event.addEvent('type-select', 'change', function() {
			
			var postBody = '';
			var type = '';
			var populateObj = measurementSelect;
			
			if(typeSelect.value == 'used_tyres'){
				type = 'used_tyres';
				measurementSelect.disabled=false;
				inchmeasurementSelect.disabled=false;
				brandSelect.disabled=false;
			}
			
			if(typeSelect.value == 'used_rims'){
				type = 'used_rims';
				measurementSelect.disabled=false;
				inchmeasurementSelect.disabled=false;
				brandSelect.disabled=true;
			}
			
			if(typeSelect.value == 'double_airs'){
				type = 'double_airs';
				measurementSelect.disabled=true;
				inchmeasurementSelect.disabled=true;
				brandSelect.disabled=false;
				populateObj = brandSelect;
			}
			
			if(typeSelect.value == 'disassembly_tyres'){
				type = 'disassembly_tyres';
				measurementSelect.disabled=false;
				inchmeasurementSelect.disabled=false;
				brandSelect.disabled=false;
			}
			
			if(typeSelect.value == 'technical_data_tyres'){
				type = 'technical_data_tyres';
				measurementSelect.disabled=false;
				inchmeasurementSelect.disabled=false;
				brandSelect.disabled=false;
			}			
			
			if(typeSelect.value == -1){
				emptySelect(measurementSelect, 1);
				emptySelect(inchmeasurementSelect, 1);
				emptySelect(brandSelect, 1);
				measurementSelect.disabled=false;
				inchmeasurementSelect.disabled=false;
				brandSelect.disabled=false;
			
			} else {
				emptySelect(measurementSelect, 1);
				emptySelect(inchmeasurementSelect, 1);
				emptySelect(brandSelect, 1);
				
				postBody += 'unittype' + '=' + unittype;
				postBody += '&';
				postBody += 'type' + '=' + type;
				postBody += '&';
				postBody += 'measurement' + '=' ;
				postBody += '&';
				postBody += 'inch_measurement' + '=' ;
				postBody += '&';
				postBody += 'brand' + '=' ;
 				
				WS.Ajax.request('/offer/getwidgetsearch/', 
					function(response) {populateSelect(populateObj, response);}, postBody);
			}
		});
	}
	
	if(measurementSelect){
		WS.Event.addEvent('measurement-select', 'change', function() {
			var postBody = '';
			var type = '';
			populateObj = inchmeasurementSelect;
			
			if(typeSelect.value == 'used_tyres'){
				type = 'used_tyres';
			}
			
			if(typeSelect.value == 'used_rims'){
				type = 'used_rims';
			}
			
			if(typeSelect.value == 'double_airs'){
				type = 'double_airs';
			}
			
			if(typeSelect.value == 'disassembly_tyres'){
				type = 'disassembly_tyres';				
			}
			
			if(typeSelect.value == 'technical_data_tyres'){
				type = 'technical_data_tyres';				
			}		
			
			if(measurementSelect.value == -1){
				emptySelect(inchmeasurementSelect, 1);
				emptySelect(brandSelect, 1);
			
			} else {
				//emptySelect(inchmeasurementSelect, 1);
				emptySelect(brandSelect, 1);
				
				postBody += 'unittype' + '=' + unittype;
				postBody += '&';
				postBody += 'type' + '=' + type;
				postBody += '&';
				postBody += 'measurement' + '=' + measurementSelect.value;
				postBody += '&';
				postBody += 'inch_measurement' + '=' + inchmeasurementSelect.value;
				postBody += '&';
				postBody += 'brand' + '=' ;
 				
				WS.Ajax.request('/offer/getwidgetsearch/', 
					function(response) {populateSelect(populateObj, response);}, postBody);
			}
		});
	}
	
	if(inchmeasurementSelect){
		WS.Event.addEvent('inch_measurement-select', 'change', function() {
			var postBody = '';
			var type = '';
			
			if(typeSelect.value == 'used_tyres'){
				type = 'used_tyres';
			}
			
			if(typeSelect.value == 'used_rims'){
				type = 'used_rims';
			}
			
			if(typeSelect.value == 'double_airs'){
				type = 'double_airs';
			}
			
			if(typeSelect.value == 'disassembly_tyres'){
				type = 'disassembly_tyres';				
			}
			
			if(typeSelect.value == 'technical_data_tyres'){
				type = 'technical_data_tyres';				
			}
			
			if(inchmeasurementSelect.value == -1){
				emptySelect(brandSelect, 1);
			
			} else {
				emptySelect(brandSelect, 1);
				
				postBody += 'unittype' + '=' + unittype;
				postBody += '&';
				postBody += 'type' + '=' + type;
				postBody += '&';
				postBody += 'measurement' + '=' + measurementSelect.value;
				postBody += '&';
				postBody += 'inch_measurement' + '=' + inchmeasurementSelect.value;
				postBody += '&';
				postBody += 'brand' + '=' ;
 				
				WS.Ajax.request('/offer/getwidgetsearch/', 
					function(response) {populateSelect(brandSelect, response);}, postBody);
			}
		});
	}
	
});

function emptySelect(obj, offset) {
	while(obj.hasChildNodes() && obj.length > offset) {
		obj.remove(obj.length - 1);
	}
}

function populateSelect(obj, json) {
	var result = WS.Util.parseJSON(json);
	if(result.measurement){
		emptySelect($('measurement-select'), 1);
		var marr = result.measurement;
		for(var i = 0; i < marr.length; i++) {
			opt = document.createElement('option');
			opt.value = opt.innerHTML = marr[i];
			$('measurement-select').appendChild(opt);
		}
	}else if(!result.returns && result.inchm){
		emptySelect($('inch_measurement-select'), 1);
		var inchmarr = result.inchm;
		for(var i = 0; i < inchmarr.length; i++) {
			opt = document.createElement('option');
			opt.value = opt.innerHTML = inchmarr[i];
			$('inch_measurement-select').appendChild(opt);
		}
	}else if(result.brand){
			emptySelect($('brand-select'), 1);
			var marr = result.brand;
			for(var i = 0; i < marr.length; i++) {
				opt = document.createElement('option');
				opt.value = opt.innerHTML = marr[i];
				$('brand-select').appendChild(opt);
			}
	} else {
	
		
		// Clear all options except the first
		emptySelect(obj, 1);
		
		var arr = result.returns;
		// Fill select with new options
		for(var i = 0; i < arr.length; i++) {
			opt = document.createElement('option');
			opt.value = opt.innerHTML = arr[i];
			obj.appendChild(opt);
		}
		
		if(result.inchm){
			emptySelect($('inch_measurement-select'), 1);
			var inchmarr = result.inchm;
			for(var i = 0; i < inchmarr.length; i++) {
				opt = document.createElement('option');
				opt.value = opt.innerHTML = inchmarr[i];
				$('inch_measurement-select').appendChild(opt);
			}
		}
		if(result.measurement){
			emptySelect($('measurement-select'), 1);
			var marr = result.inchm;
			for(var i = 0; i < marr.length; i++) {
				opt = document.createElement('option');
				opt.value = opt.innerHTML = marr[i];
				$('measurement-select').appendChild(opt);
			}
		}
	}
}
