// ajax
function get_http(){
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5) try{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch (e){
		try {
			xmlhttp = new
			ActiveXObject("Microsoft.XMLHTTP");
		}catch (E){
			xmlhttp = false;
		}
	}@else
		xmlhttp = false;
	@end @*/
	if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
		try{
			xmlhttp = new XMLHttpRequest();
		}catch (e){
			xmlhttp = false;
		}
	}
	return xmlhttp;
}


var http_num=0;
this.http=new Array();

function ajax_lookup(url, result_function){ //alert(url);
	// Получаем объект XMLHTTPRequest
	http_num++;

	if(!this.http[http_num]){
		this.http[http_num] = get_http();
	}

	// Запрос
	if (this.http[http_num]){
		var http = this.http[http_num];
		url = url + '&hash=' + Math.random();
		//alert(url);

		this.http[http_num].open("GET", url, true);
		this.http[http_num].onreadystatechange = function(){
                         if(http.readyState == 4){
				//process_result(http.responseText);
				result_function(http.responseText);
			}
		}
		this.http[http_num].send(null);
	}
	if(!this.http[http_num]){
		alert('Error creating XMLHTTP object!')
	}
}

//end ajax




//------------------------------------------------------------------------------




// устанавливает значения в полях выбора автомобиля
function set_SA_values(){
	r='';
	for(i = 0; i < document.forms.length; i++){
                 form_obj = document.forms[i];
                 for(el_num = 0; el_num < form_obj.length; el_num++){
			el_obj = form_obj[el_num];
			if(el_obj.className == 'selection_auto') set_SA_element_values(el_obj);
		}
	}
}

// устанавливает значение по умолчанию в одном конкретном поле выбора автомобиля
function set_SA_element_values(obj){
	fld_name = obj.id;
	county_obj = document.getElementById(fld_name + '_countries');
	mark_obj = document.getElementById(fld_name + '_marks');
	model_obj = document.getElementById(fld_name + '_models');

	values = get_SA_val_array(obj.value);

	if(first_load){
		county_obj.value = values['county'];
                 set_select_innerHTML(model_obj, '0:');
		set_select_innerHTML(mark_obj, '0:Загрузка...');
		ajax_lookup('/ajax_get_SA_marks.php?field=' + fld_name + '&county=' + values['county'], set_SA_marks_list);
	}else if(values['mark'] != 0){
		// загружаем список моделей
                 set_select_innerHTML(model_obj, '0:Загрузка...');
		ajax_lookup('/ajax_get_SA_models.php?field=' + fld_name + '&mark=' + values['mark'], set_SA_models_list);
	}else if(values['county'] != 0){
		// загружаем список марок
		set_select_innerHTML(model_obj, '0:');
		set_select_innerHTML(mark_obj, '0:Загрузка...');
		ajax_lookup('/ajax_get_SA_marks.php?field=' + fld_name + '&county=' + values['county'], set_SA_marks_list);
	}else if(values['county'] == 0){
		set_select_innerHTML(mark_obj, '0:');
		set_select_innerHTML(model_obj, '0:');
	}
}

// отображает список моделей в элементе select
function set_SA_models_list(html){
	s_pos = html.indexOf('-->');
	if(s_pos != -1){
		fld_name = html.substring(0, s_pos);
		html = html.substr(s_pos + 3);
		set_select_innerHTML(document.getElementById(fld_name + '_models'), html);

		if(first_load){
                         values = get_SA_val_array(document.getElementById(fld_name).value);
			if(values['mark'] != 0){
				document.getElementById(fld_name + '_models').value = values['model'];
			}
			first_load = false;
		}
	}else{
		alert('Ошибка соединения с сервером!');
	}
}

// отображает список марок в элементе select
function set_SA_marks_list(html){
	s_pos = html.indexOf('-->');
	if(s_pos != -1){
		fld_name = html.substring(0, s_pos);
		html = html.substr(s_pos + 3);
		set_select_innerHTML(document.getElementById(fld_name + '_marks'), html);

		if(first_load){
			values = get_SA_val_array(document.getElementById(fld_name).value);
			if(values['mark'] != 0){
				document.getElementById(fld_name + '_marks').value = values['mark'];
				set_select_innerHTML(document.getElementById(fld_name + '_models'), '0:Загрузка...');
				ajax_lookup('/ajax_get_SA_models.php?field=' + fld_name + '&mark=' + values['mark'], set_SA_models_list);
			}
		}
	}else{
		alert('Ошибка соединения с сервером!');
	}
}



// очищает элемент SELECT и заполняет его новыми пунктами из полученной строки
// формат строки: 'value1:text1//value2:text2//value3:text3'
function set_select_innerHTML(obj, str){
	// очистка списка
	while (obj.options.length){
		obj.options[0] = null;
	}

	options = str.split('//');
	for(opt in options){
		opt_line = options[opt]; p = opt_line.split(':', 2);
		val = p[0];
		text = ''; if(p.length > 1) text = p[1];

                 var newOpt = new Option(text, val);
		obj.options.add(newOpt);
         }
}






// устанавливает выбранную страну производителя
function set_SA_counrty(obj_id){
	new_val = document.getElementById(obj_id + '_countries').value + '.0.0';
	document.getElementById(obj_id).value = new_val;
	set_SA_element_values(document.getElementById(obj_id));
}

// устанавливает выбранную марку автообиля
function set_SA_mark(obj_id){
	new_val = document.getElementById(obj_id + '_countries').value + '.' + document.getElementById(obj_id + '_marks').value + '.0';
	document.getElementById(obj_id).value = new_val;
	set_SA_element_values(document.getElementById(obj_id));
}

// устанавливает выбранную модель автообиля
function set_SA_model(obj_id){
	new_val = document.getElementById(obj_id + '_countries').value + '.' + document.getElementById(obj_id + '_marks').value + '.' + document.getElementById(obj_id + '_models').value;
	document.getElementById(obj_id).value = new_val;
}




// возвращает в массиве ID страны, марки и модели, записанные в строке через точку
function get_SA_val_array(str){
	res = new Array();
	res['county'] = 0;
	res['mark'] = 0;
	res['model'] = 0;

	parts = str.split('.', 3);
	res['county'] = Math.abs(parts[0]);
	if(parts.length > 1) res['mark'] = Math.abs(parts[1]);
	if(parts.length > 2) res['model'] = Math.abs(parts[2]);

	return res;
}
