﻿function ShowMap() {
	var dList = $('input[name="districtIds"]')[0].value.split(',');
	var sdList = $('input[name="subdistrictIds"]')[0].value.split(',');
	var i = 0; var j = 0;var k = 0;
	var idanc = "";
	for (i = 0; i < dList.length; i++) {
		if (dList[i] == "")
			continue;
		var idanc = "#distr_" + dList[i] + "_anc";
		ShowOnMap(dList[i], true);
		var subdistricts = $('input[name="subdistrict"]', $(idanc).parent().children('table'));
		for (j = 0; j < subdistricts.length; j++) {
			for (k = 0; k < sdList.length; k++) {
				if (sdList[k] == "") {
					var allcb = $('input[name="allsublistricts"]', $(idanc).parent().children('table'))[0];
					allcb.checked = true;
					AllSubdistrictClick(allcb);
					continue;
				}
					
				if (subdistricts[j].value == sdList[k])
					subdistricts[j].checked = true;
			}
			SubdistrictClick(subdistricts[j]);
		}

		ShowSubdistrictInfo($('span[name="dcount"]', $(idanc).parent()), GetCheckedCount(subdistricts), dList[i]);
	}
	if (idanc != "")
		$(idanc).parent().children('table').show();
	
	
	$('#dvMap').show();
}

function CloseMap() {
	$('#dvMap').hide();
}

function MouseOverDistrict(districtNameId) {
	var id = "#distr_" + districtNameId + "_over";
	var zIndex = parseInt($("#mappreview").css('z-index')) + 2;
	$(id).css('z-index', zIndex);
	$(id).show();
}

function MouseOutDistrict(districtNameId) {
	var id = "#distr_" + districtNameId + "_over";
	var zIndex = parseInt($("#mappreview").css('z-index')) - 2;
	$(id).css('z-index', zIndex);
	$(id).show();
}

function DistrictClick(districtNameId, districtName) {
	var id = "#distr_" + districtNameId + "_check";
	var idanc = "#distr_" + districtNameId + "_anc";
	var mapZIndex = parseInt($("#mappreview").css('z-index'));
	var selectedZIndex = parseInt($(id).css('z-index'));
	var subdistricts = $('input[name="subdistrict"]', $(idanc).parent().children('table'));
	if (mapZIndex > selectedZIndex) {

		// отмечаем на карте
		ShowOnMap(districtNameId, true);
		// Прячем все подрайоны
		HideAllDistrict();
		// Показываем последний подрайон
		$(idanc).parent().children('table').show();
		// выбираем все подрайоны
		CheckedSubdistrict(subdistricts, true);
		// показываем статистику выбранных
		ShowSubdistrictInfo($('span[name="dcount"]', $(idanc).parent()), subdistricts.length, districtNameId);

	}
	else {
		// снимаем пометку с карты
		ShowOnMap(districtNameId, false);
		// Скрываем последний подрайон
		$(idanc).parent().children('table').hide();
		// отменяем все подрайоны
		CheckedSubdistrict(subdistricts, false);
		// показываем статистику выбранных
		ShowSubdistrictInfo($('span[name="dcount"]', $(idanc).parent()), 0, districtNameId);
	}
}

function DistrictHrefClick(districtNameId, districtName) {
	var idanc = "#distr_" + districtNameId + "_anc";
	var subdistricts = $('input[name="subdistrict"]', $(idanc).parent().children('table'));
	if ($(idanc).parent().children('table')[0].style.display == "none") {
		HideAllDistrict();
		$(idanc).parent().children('table').show();
		var count = GetCheckedCount(subdistricts);
		if (count == 0) {
			CheckedSubdistrict(subdistricts, true);
			count = subdistricts.length;
		}
			
		ShowSubdistrictInfo($('span[name="dcount"]', $(idanc).parent()), count, districtNameId);

	}
	else {
		// Снимаем подсветку(отменяем)
		$(idanc).parent().children('table').hide();
		ShowSubdistrictInfo($('span[name="dcount"]', $(idanc).parent()), 0, districtNameId);
	}
}

function HideAllDistrict() {
	var list = $('table[name="districtlist"]');
	var i;
	for (i = 0; i < list.length; i++) {
		$(list[i]).hide();
	}
}

function AllSubdistrictClick(allCheckBox) {
	var parentTable = $(allCheckBox).parent().parent().parent();
	var subdistricts = $('input[name="subdistrict"]', parentTable);
	CheckedSubdistrict(subdistricts, allCheckBox.checked);
	if (allCheckBox.checked)
		ShowSubdistrictInfo($('span[name="dcount"]', $(parentTable).parent().parent()), subdistricts.length, allCheckBox.value);
	else
		ShowSubdistrictInfo($('span[name="dcount"]', $(parentTable).parent().parent()), 0, allCheckBox.value);
}

function CheckedSubdistrict(list, checked) {
	var i;
	for (i = 0; i < list.length; i++) {
		list[i].checked = checked;
	}
	if (i > 0)
		SubdistrictClick(list[0]);
}

function SubdistrictClick(checkBox) {
	var parentTable = $(checkBox).parent().parent().parent();
	var subdistricts = $('input[name="subdistrict"]', parentTable);
	var count = GetCheckedCount(subdistricts);
	$('input[name="allsublistricts"]', parentTable)[0].checked = count == subdistricts.length;
	ShowSubdistrictInfo($('span[name="dcount"]', $(parentTable).parent().parent()), count, $('input[name="allsublistricts"]', parentTable)[0].value);


}

function GetCheckedCount(list) {
	var i;
	var result = 0;
	for (i = 0; i < list.length; i++) {
		if (list[i].checked)
			result++;
	}
	return result;
}

function ShowSubdistrictInfo(control, count, districtNameId) {

	var text = "зона";
	if (count > 4)
		text = "зон";
	if (count > 1 && count <= 4)
		text = "зоны";
	control[0].innerHTML = count > 0 ? "(Выбрано " + count + " " + text + ")" : "";
	if (count == 0)
		ShowOnMap(districtNameId, false);
	else
		ShowOnMap(districtNameId, true);
}


function ShowOnMap(districtNameId, isShow) {
	var id = "#distr_" + districtNameId + "_check";
	var mapZIndex = parseInt($("#mappreview").css('z-index'));
	var selectedZIndex = parseInt($(id).css('z-index'));
	if (isShow)
		$(id).css('z-index', mapZIndex + 2);
	else
		$(id).css('z-index', mapZIndex - 2);
	$(id).show();
}

function Complete() {
	// Выберем все выбранные районы и подрайоны
	var selectedSubdistrict = "";
	var selectedDistrict = [];
	$('input[name="districtIds"]')[0].value = $('input[name="subdistrictIds"]')[0].value = "";
	var sList = $('input[name="subdistrict"]');
	var i = 0;
	var subDistrictCount = false;
	for (i = 0; i < sList.length; i++) {
		if (sList[i].checked) {
			selectedSubdistrict += selectedSubdistrict == "" ? sList[i].value : "," + sList[i].value;
			subDistrictCount++;
			var parentTable = $(sList[i]).parent().parent().parent();
			var allcb = $('input[name="allsublistricts"]', parentTable)[0];
			var districtid = allcb.value;
			subDistrictCount = allcb.checked;
			selectedDistrict[districtid] = districtid;
		}
	}

	if (subDistrictCount) {
		selectedSubdistrict = "";
	}

	for (var curr in selectedDistrict) {
		$('input[name="districtIds"]')[0].value += $('input[name="districtIds"]')[0].value == "" ? curr : "," + curr;
	}
	$('input[name="subdistrictIds"]')[0].value = selectedSubdistrict;
	$('a[class="chooseDistrict"]')[0].innerHTML = GetCaptionForDistrictFilter($('input[name="districtIds"]')[0].value);
	CloseMap();
}

function GetCaptionForDistrictFilter(dIds) {
	var dCount = dIds == "" ? 0 : dIds.split(',').length;
	var text = "";
	if (dCount > 0)
		text += dCount + " районов "
	return text == "" ? "Выберите район" : "Выбрано " + text;
}

