function showhide(topDiv, clickedID)  // спрятать или показать, в зависимости от текущего состояния, выданный div
{
	
	clickedDiv = document.getElementById(clickedID);
	allDivs = topDiv.getElementsByTagName('div');
	
	state = 0; // means current div is closed
	if(clickedDiv.className == 'visible')
		state = 1; // means current div is open
	
	for(i=0; i<allDivs.length; i++)
		allDivs[i].className = 'hidden';

	if(state == 0)
		clickedDiv.className = 'visible';
}


// проверка заполненности формы заказа
function validate()
{
	f = document.order;
//	if(f.amount.value > 0 && f.clientphone.value != '') проверку заполненности телефона отменили
	if(f.amount.value > 0 && f.clientphone.value != '')
	{
		alert('Ваш заказ принят. В ближайшее время с вами свяжется наш менеджер.');
		document.getElementById('order').style.display = 'none';

		return true;
	}
	else
	{
		if(f.amount.value == '' || f.amount.value == 0)
		  alert('Не указано количество единиц товара!');
		  
		if(f.clientphone.value == '')
		  alert('Укажите, пожалуйста, номер вашего телефона.')

		return false;
	}
}



// регулярные выражения для 
var reUnsafeChars = /[^A-Za-zА-Яа-я0-9-]/gi;   // замены всех нецифровых и небуквенных символов на пробелы
var reSpaces = /\s+/g;                                          // замены нескольких пробелов подряд на один

// проверка и исправление строки поиска
function parse_search_string(str)
{
	str = str.replace(reUnsafeChars, " ");
	str = str.replace(reSpaces, " ");

	// ограничение длины строки до 50 символов
	// modelCode max = 20
	// companyName max = 9
	// seriesName max = 16
	str = str.slice(0, 50);
	
	
	// массивы соответствия русских букв латинским	
	var mapRu = 'А|В|Е|К|М|Н|О|Р|С|Т|У|Х|а|в|е|к|м|н|о|р|с|т|у|х'.split('|');
	var mapEn = 'a|b|e|k|m|h|o|p|c|t|y|x|a|b|e|k|m|h|o|p|c|t|y|x'.split('|');
	
	for(i=0; i<mapRu.length; i++)
		while (str.indexOf(mapRu[i]) >= 0)
			str = str.replace(mapRu[i], mapEn[i]); 
	
	if(str == ' ') str = ''; // если просто пробелы, то строка считается пустой
	return str;
}


/////******************************************************************
// XMLHttpRequest
var req;
function loadXMLDoc(url)
{
  // для "родного" XMLHttpRequest
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
        
    // для версии с ActiveX
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function processReqChange()
{
	switch(req.readyState)
	{
		case 0:
			break;
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			//alert(req.status);
			if (req.status == 200)  // для статуса "OK"
			{
				// здесь идут всякие штуки с полученным ответом
				response = req.responseXML.documentElement;
				methodtorun = response.getElementsByTagName('method')[0].firstChild.data;

				eval(methodtorun + '(response)');
			}
			
		default:
			break;
	}
}

function requestdata(params)
{
	loadXMLDoc('/xmlreq.html'+params);
	//alert('/xmlreq.html'+params);
}
/////////////////////////////////////////////////



function turnoff(form_ref)
{
	form_ref.model.options[0].text = "Загрузка...";
	form_ref.device.options[0].text = "Загрузка...";
	
	form_ref.model.disabled = true;
	form_ref.device.disabled = true;
}

function turnon(form_ref)
{
	form_ref.model.disabled = false;
	form_ref.device.disabled = false;
	
	form_ref.model.options[0].text = "Картридж";
	form_ref.device.options[0].text = "Аппарат";
}

// делает выбранным пункт списка sel с нужным значением val (id)
function js_set_selectIndex(sel, val)
{
	for(i=0; sel.options[i].value != val; i++)
		sel.selectedIndex = i+1;
}


//
function js_update(res)
{
	/////// компании
	cmpID = res.getElementsByTagName('companyID')[0].firstChild.data;
	select_company = document.getElementById('sel_company');
	
	if(typeof cmpID != 'undefined')
		js_set_selectIndex(select_company, cmpID);


	
	/////// типы
	select_types = document.getElementById('sel_type');
	
	typeName_list = res.getElementsByTagName('typeName');
	typeID_list = res.getElementsByTagName('typeID');
	
	if(typeof typeID_list != 'undefined')
	{
		// удалить предыдущие пункты
		if(select_types.options.length > 1)
			for(i=select_types.options.length; i != 0; --i)
				select_types.options[i]=null;
		
		for(i=0; i<typeID_list.length; i++)
			select_types.options[select_types.options.length] = new Option (typeName_list[i].firstChild.data, typeID_list[i].firstChild.data, false, false);

		// если указан тип, то выбрать его в списке	
		if(res.getElementsByTagName('selected_type').length > 0)
			js_set_selectIndex(select_types, res.getElementsByTagName('selected_type')[0].firstChild.data);
	}

	turnon(document.getElementById('path'));
		
	/////// модели
	select_models = document.getElementById('sel_model');
	
	models = res.getElementsByTagName('models')[0];
	if(!!models){
		mID_list = models.getElementsByTagName('modelID');
		mCode_list = models.getElementsByTagName('modelCode');
		
		// удалить предыдущие пункты
		if(select_models.options.length > 1)
			for(i=select_models.options.length; i != 0; --i)
				select_models.options[i]=null;
		
		for(i=0; i<mID_list.length; i++)
			select_models.options[select_models.options.length] = new Option (mCode_list[i].firstChild.data, mID_list[i].firstChild.data, false, false);
	
		if(res.getElementsByTagName('selected_model').length > 0)
			js_set_selectIndex(select_models, res.getElementsByTagName('selected_model')[0].getElementsByTagName('modelID')[0].firstChild.data);
	}
	
	
	
	/////// аппараты
	select_device = document.getElementById('sel_device');
	
	devices = res.getElementsByTagName('devices')[0];
	if(!!devices){
		devID_list = devices.getElementsByTagName('deviceID');
		devName_list = devices.getElementsByTagName('deviceName');
		
		// удалить предыдущие пункты
		if(select_device.options.length > 1)
			for(i=select_device.options.length; i != 0; --i)
				select_device.options[i]=null;
		
		for(i=0; i<devID_list.length; i++)
			select_device.options[select_device.options.length] = new Option (devName_list[i].firstChild.data, devID_list[i].firstChild.data, false, false);
			
		if(res.getElementsByTagName('selected_device').length > 0)
			js_set_selectIndex(select_device, res.getElementsByTagName('selected_device')[0].getElementsByTagName('deviceID')[0].firstChild.data);
	}
}
