﻿function trySearch() {
 searchObjects();
 return false;
}

function searchObjects() {
 var url = "/db/list/";
	var someSel = false;
	var price0 = 0;
	var price1 = 0;
	var mkad0 = 0;
	var mkad1 = 0;
	
	var areaSquareFrom = 0;
	var areaSquareTo = 0;
	
	// Тип объекта
	var els = document.getElementsByName('typeID[]');
	for(i = 0; i < els.length; i++)
		someSel = someSel || els[i].checked;
 if(someSel) {
  url += "types-";
  var firstType = true;
  for(i = 0; i < els.length; i++) {
   if(els[i].checked) {
    if(firstType)
     firstType = false;
    else
     url += ".";
    url += els[i].value;
   }
  }
  url += "/";
 }
	// Регион
 if(document.dbSearch.regionID.options[document.dbSearch.regionID.selectedIndex].value != "n") {
  var districtsString = "";
  if(!document.getElementById('districts').disabled) {
   var els = document.getElementById('districts').options;
   for(i = 0; i < els.length; i++) {
    if(els[i].selected) {
     districtsString += (((districtsString)? ".": "") + els[i].value);
    }
   }
  }
  if(districtsString) {
   url += "districts-" + districtsString + "/";
  }
  else {
   url += "region-" + document.dbSearch.regionID.options[document.dbSearch.regionID.selectedIndex].value + "/";
  }
  someSel = true;
 }
	// Цена
	if(document.dbSearch.priceFrom.value) {
		if(!is_int(document.dbSearch.priceFrom.value, true, true)) {
			alert("Неверное значение цены");
			document.dbSearch.priceFrom.focus();
			return void(0);
		}
		price0 = parseInt(document.dbSearch.priceFrom.value);
  url += "priceFrom-" + document.dbSearch.priceFrom.value + "/";
	}
	someSel = someSel || (price0 != 0);
	if(document.dbSearch.priceTo.value) {
		if(!is_int(document.dbSearch.priceTo.value, true, true)) {
			alert("Неверное значение цены");
			document.dbSearch.priceTo.focus();
			return void(0);
		}
		price1 = parseInt(document.dbSearch.priceTo.value);
  url += "priceTo-" + document.dbSearch.priceTo.value + "/";
	}
	someSel = someSel || (price1 != 0);
	if(price0 && price1) {
		if(price0 >= price1) {
			alert("Неверное значение цены");
			document.dbSearch.priceTo.focus();
			return void(0);
		}
	}
	
	
	
	//---------------------------------------------------------------------------------
	
	// Площадь
	
	if(document.dbSearch.areaSquareFrom.value) {
		if(!is_int(document.dbSearch.areaSquareFrom.value, true, true)) {
			alert("Неверное значение площади участка");
			document.dbSearch.areaSquareFrom.focus();
			return void(0);
		}
		areaSquareFrom = parseInt(document.dbSearch.areaSquareFrom.value);
  url += "areaSquareFrom-" + document.dbSearch.areaSquareFrom.value + "/";
	}
	someSel = someSel || (areaSquareFrom != 0);
	if(document.dbSearch.areaSquareTo.value) {
		if(!is_int(document.dbSearch.areaSquareTo.value, true, true)) {
			alert("Неверное значение площади участка");
			document.dbSearch.areaSquareTo.focus();
			return void(0);
		}
		areaSquareTo = parseInt(document.dbSearch.areaSquareTo.value);
  url += "areaSquareTo-" + document.dbSearch.areaSquareTo.value + "/";
	}
	someSel = someSel || (areaSquareTo != 0);
	if(areaSquareFrom && areaSquareTo) {
		if(areaSquareFrom >= areaSquareTo) {
			alert("Неверное значение площади участка");
			document.dbSearch.areaSquareTo.focus();
			return void(0);
		}
	}
	
	
	//---------------------------------------------------------------------------------------
	
	
	
	
	
	// Расстояние от МКАД
	if(document.dbSearch.mkadFrom.value) {
		if(!is_int(document.dbSearch.mkadFrom.value, true, true)) {
			alert("Неверное значение расстояния");
			document.dbSearch.mkadFrom.focus();
			return void(0);
		}
		mkad0 = parseInt(document.dbSearch.mkadFrom.value);
  url += "mkadFrom-" + document.dbSearch.mkadFrom.value + "/";
	}
	someSel = someSel || (mkad0 != 0);
	if(document.dbSearch.mkadTo.value) {
		if(!is_int(document.dbSearch.mkadTo.value, true, true)) {
			alert("Неверное значение расстояния");
			document.dbSearch.mkadTo.focus();
			return void(0);
		}
		mkad1 = parseInt(document.dbSearch.mkadTo.value);
  url += "mkadTo-" + document.dbSearch.mkadTo.value + "/";
	}
	someSel = someSel || (mkad1 != 0);
	if(mkad0 && mkad1) {
		if(mkad0 >= mkad1) {
			alert("Неверное значение расстояния");
			document.dbSearch.mkadTo.focus();
			return void(0);
		}
	}
	// По тексту
	someSel = someSel || is_string(document.dbSearch.txt.value);
 var po = (document.dbSearch.txt.value)? true: false;
	// По коду
	if(document.dbSearch.id.value && !is_int(document.dbSearch.id.value, true, true)) {
		alert("Неверное значение кода");
		document.dbSearch.id.focus();
		return void(0);
	}
 if(document.dbSearch.id.value)
  url += "id-" + document.dbSearch.id.value + "/";
	someSel = someSel || is_int(document.dbSearch.id.value, true, true);

	if(someSel)
  if(po)
   document.dbSearch.submit();
  else
   document.location = url;
	else
	 alert("Необходимо выбрать хотя бы 1 критерий поиска");
}

function selectAllRegions() {
	els = document.getElementsByName("typeID[]");
	for(i = 0; i < els.length; i++)
		els[i].checked = true;
}

function selectAllTypes(objRef) {
	els = document.getElementsByName("typeID[]");
	for(i = 0; i < els.length; i++) {
		els[i].checked = objRef.checked;
	}
 els = document.getElementsByName("typeIDfake[]");
 if(els) {
  for(i = 0; i < els.length; i++) {
   els[i].checked = objRef.checked;
  }
 }
 var fakeAllTypes = document.getElementById('allFakeTypes');
 if(fakeAllTypes) {
  fakeAllTypes.checked = objRef.checked;
  document.getElementById('allTypes').checked = objRef.checked;
 }
}

function unselectAllTypes() {
	sel = true;
	els = document.getElementsByName("typeID[]");
	for(i = 0; i < els.length; i++) {
		sel = sel && els.checked;
	}
	document.getElementById('allTypes').checked = sel;
 var fakeAllTypes = document.getElementById('allFakeTypes');
 if(fakeAllTypes)
  fakeAllTypes.checked = sel;
}


function selectType(objRef) {
 unselectAllTypes();
 var objName = (objRef.name == 'typeIDfake[]')? 'typeID[]': 'typeIDfake[]';
 els = document.getElementsByName(objName);
 for(i = 0; i < els.length; i++) {
  if(els[i].value == objRef.value)
   els[i].checked = objRef.checked;
 }
}

function changeRegionIDSrch() {
 var ind = document.dbSearch.regionID.options[document.dbSearch.regionID.selectedIndex].value;
 if(ind == "n") {
  document.getElementById('districts').options.length = 1;
  document.getElementById('districts').options[0].value = "n";
  document.getElementById('districts').options[0].text = "-";
  changeDistrictsFlag(true);
  document.getElementById('allDistrictsFlag').disabled = true;
 }
 else {
  eval("var selGroup = districts_"+ind+";");
  document.getElementById('districts').options.length = selGroup.length/2;
  for(i = 0; i < selGroup.length/2; i++) {
   document.getElementById('districts').options[i].value = selGroup[i*2];
   document.getElementById('districts').options[i].text  = selGroup[i*2 + 1];
  }
  document.getElementById('allDistrictsFlag').disabled = false;
  changeDistrictsFlag(false);
 }
}

function changeDistrictsFlag(fl) {
 if(document.getElementById('allDistrictsFlag').checked != fl)
  document.getElementById('allDistrictsFlag').checked = fl;
 document.getElementById('districts').disabled = fl;
}

/*
function load1region() {
 if(document.dbSearch && document.dbSearch.regionID) {
  document.dbSearch.regionID.selectedIndex = 1;
  changeRegionIDSrch();
 }
}
*/

function loadRD(regID, distID) {
 for(i = 0; i < document.dbSearch.regionID.options.length; i++) {
  if(document.dbSearch.regionID.options[i].value == regID) {
   document.dbSearch.regionID.options[i].selected = true;
   changeRegionIDSrch();
   break;
  }
 }
 if(distID) {
  for(i = 0; i < document.getElementById('districts').options.length; i++) {
   if(document.getElementById('districts').options[i].value == distID) {
    document.getElementById('districts').options[i].selected = true;
    break;
   }
  }
 }
}

function loadRegionDistricts(region, districts) {
 for(i = 0; i < document.dbSearch.regionID.options.length; i++) {
  if(document.dbSearch.regionID.options[i].value == region) {
   document.dbSearch.regionID.options[i].selected = true;
   changeRegionIDSrch();
   break;
  }
 }
 if(districts && districts.length) {
  for(j = 0; j < districts.length; j++) {
   for(i = 0; i < document.getElementById('districts').options.length; i++) {
    if(document.getElementById('districts').options[i].value == districts[j]) {
     document.getElementById('districts').options[i].selected = true;
     break;
    }
   }
  }
 }
 else {
  changeDistrictsFlag(true);
 }
}

function regionMap() {
 var url = "/db/";
 var regID = document.dbSearch.regionID.options[document.dbSearch.regionID.selectedIndex].value;
 for(i = 0; i < mappedRegions.length; i++) {
  if(regID == mappedRegions[i]) {
   url += "map" + mappedRegions[i] + ".html";
   var q = "";
   for(i = 0; i < document.dbSearch.elements.length; i++) {
    if((document.dbSearch.elements[i].name == 'typeID[]') && document.dbSearch.elements[i].checked)
     q += (((q)? '&': '?') + 'typeID[]=' + document.dbSearch.elements[i].value);
   }
   url += q;
   break;
  }
 }
 document.location = url;
}
