﻿///
/// sbrDoManageBreadcrumb
///
function sbrDoManageBreadcrumb(pAreaId) {
	var regionGuids = $('#RegionGuidsAggregate')[0];
	regionGuids.value = "";
	var regionlistLabel = $('#MapSearch-RegionList-list')[0];
	regionlistLabel.innerHTML = "";

	var lDefaultRegionId = sbrConfiguration.defaultRegionField;
	var lDefaultZoomLevel = sbrConfiguration.zoomLevelField;

	var lBreadcrumb = $('#HiddenMapBreadCrumb')[0];
	var lBreadcrumbArray = sbrGetArrayFromString(lBreadcrumb.value, pAreaId + ">");
	lBreadcrumb.value = (lBreadcrumbArray.length == 1) ? pAreaId + ">" : lBreadcrumbArray[0] + pAreaId + ">";
	var lCurrentZoomLevel = sbrGetArrayFromString(lBreadcrumb.value, ">").length - 1;

	sbrDoGetMapArea(pAreaId);

	if (lCurrentZoomLevel < lDefaultZoomLevel) {
		$('#MapSearch-panel')[0].style.display = "none";
		$('#CriterionSearch-panel')[0].style.display = "none";
		if ($('#SubmitSearch-panel')[0] != null) {
			$('#SubmitSearch-panel')[0].style.display = "none";
		}

		sbrSwitchPanes2('DefaultSearch-panel', 'LocalitySearch-panel', 'MapSearch-panel', 0);
	}
	//		sbrDoGetLogicalAreaChildren(pAreaId);
}

///
/// sbrDoManageMapArea
///
function sbrDoManageMapArea(pSourceAreaId, pTargetAreaId, isSpecificPlace) {
	var lDefaultRegionId = sbrConfiguration.defaultRegionField;
	var lDefaultZoomLevel = sbrConfiguration.zoomLevelField;

	var lBreadcrumb = $('#HiddenMapBreadCrumb')[0];
	var lBreadcrumbArray = sbrGetArrayFromString(lBreadcrumb.value, ">");
	var lCurrentZoomLevel = lBreadcrumbArray.length - 1;
	var lRegionGuids = $('#RegionGuidsAggregate')[0];
	var lRegionGuidsArray = sbrGetArrayFromString(lRegionGuids.value, ",");

	if (lCurrentZoomLevel >= lDefaultZoomLevel && isSpecificPlace == 0) {
		var lRegexp = new RegExp(pTargetAreaId, "gi");
		//			sbrDoGetLogicalAreaChildren(pSourceAreaId);
		if (lRegionGuids.value.match(lRegexp)) {
			WriteRegionName(pTargetAreaId, false);
		}
		else {
		    WriteRegionName(pTargetAreaId, true);

		    var lRegionGuids = $('#RegionGuidsAggregate')[0];
		    var regionGuidsValueArray = sbrGetArrayFromString(lRegionGuids.value, ",");
		    var regions = GetRegionNames();
		    if (regionGuidsValueArray.length == regions.length) {
		        var mainRegionName = $('#HiddenMainRegionName')[0];
		        if (mainRegionName != null) {
		            $('#MapSearch-RegionList-list')[0].innerHTML = mainRegionName.value
		        }
		    }
		}
	}
	else {
		//			sbrDoGetLogicalAreaChildren(pTargetAreaId);
		if (isSpecificPlace == 1) {
			lRegionGuids.value = "";
			var regionlistLabel = $('#MapSearch-RegionList-list')[0];
			regionlistLabel.innerHTML = "";
		}
		var lDefaultPane = document.getElementById('DefaultSearch-panel');
		if (lDefaultPane && lDefaultPane.style.display == "block") {
			sbrSwitchPanes2('DefaultSearch-panel', 'LocalitySearch-panel', 'MapSearch-panel', 2);
		}
		sbrDoGetMapArea(pTargetAreaId);
		lCurrentZoomLevel++;
	}
}

function RefreshRegions() {
    var regionsValue = PO_getCookie('AreaIdAgregate');
    if (regionsValue != null && regionsValue != '') {
        var regions = regionsValue.split(',');
    	if ($('#refineSearch-form').data('firstTimeOpen') == 'true') {
    		$('#refineSearch-form').data('firstTimeOpen', 'false');
        for (var i = 0; i < regions.length; i++) {
            WriteRegionName(regions[i], true);
        }

        //#8295. GetRegionNames error message
        var regionsOverall = null;
        if ($('#MapSearch-panel')[0].style.display != "none")
            regionsOverall = GetRegionNames();

        var regionsCount = 0;
        for (var i = 0; i < regionsOverall.length; i++) {
        	regionsCount++;
        }
		if (regionsCount == regions.length) {
            var mainRegionName = $('#HiddenMainRegionName')[0];
            if (mainRegionName != null) {
                $('#MapSearch-RegionList-list')[0].innerHTML = mainRegionName.value
            }
        }
    }
}
}


function WriteRegionName(regionId, toWrite) {
    //#8295. GetRegionNames error message
    var regions = null;
    if ($('#MapSearch-panel')[0].style.display != "none")
    	regions = GetRegionNames();

	var lRegionGuids = $('#RegionGuidsAggregate')[0];
	var regionGuidsValue = lRegionGuids.value;
	var regionGuidsValueArray = sbrGetArrayFromString(regionGuidsValue, ",");
	var regionlistLabel = $('#MapSearch-RegionList-list')[0];
	var regionlistLabelValue = regionlistLabel.innerHTML;
	var regionlistLabelValueArray = sbrGetArrayFromString(regionlistLabelValue, ", ");
	var highlighter = document.getElementById("h" + regionId);
	if (toWrite) {
		for (var i = 0; i < regions.length; i++) {
			if (regions[i].id == regionId) {
				regionlistLabelValue += ", " + regions[i].name;
				regionGuidsValue += "," + regions[i].id;
				if (highlighter != null) {
					highlighter.style.visibility = 'visible';
				}
			}
		}
		lRegionGuids.value = regionGuidsValue.indexOf(",") == 0 ? regionGuidsValue.substr(1) : regionGuidsValue;
		PO_setCookie('AreaIdAgregate', lRegionGuids.value, false);
		regionlistLabelValue = regionlistLabelValue.indexOf(", ") == 0 ? regionlistLabelValue.substr(2) : regionlistLabelValue;
		regionlistLabelValueArray = sbrGetArrayFromString(regionlistLabelValue, ", ");
		regionlistLabelValueArray.sort();
		regionlistLabel.innerHTML = regionlistLabelValueArray.join(", ");
	}
	else {
		regionlistLabelValue = "";
		regionGuidsValue = "";
		for (var i = 0; i < regionGuidsValueArray.length; i++) {
			if (regionGuidsValueArray[i] != regionId) {
				for (var j = 0; j < regions.length; j++) {
					if (regions[j].id == regionGuidsValueArray[i]) {
						regionlistLabelValue += ", " + regions[j].name;
					}
				}
				regionGuidsValue += "," + regionGuidsValueArray[i];
			}
			else {
				if (highlighter != null) {
					highlighter.style.visibility = 'hidden';
				}
			}
		}
		lRegionGuids.value = regionGuidsValue.indexOf(",") == 0 ? regionGuidsValue.substr(1) : regionGuidsValue;
		regionlistLabelValue = regionlistLabelValue.indexOf(", ") == 0 ? regionlistLabelValue.substr(2) : regionlistLabelValue;
		regionlistLabelValueArray = sbrGetArrayFromString(regionlistLabelValue, ", ");
		regionlistLabelValueArray.sort();
		regionlistLabel.innerHTML = regionlistLabelValueArray.join(", ");
	}
}

function sbr_selectAllCheckBox(obj) {
    var regions = GetRegionNames();

	var regionGuids = $('#RegionGuidsAggregate')[0];
	var regionGuidsValue = "";
	var regionGuidsValueArray = new Array();
	var mainRegionName = $('#HiddenMainRegionName')[0];
	if (mainRegionName != null) {
		$('#MapSearch-RegionList-list')[0].innerHTML = mainRegionName.value;
	}
	var highlighter;

	for (var i = 0; i < regions.length; i++) {
		regionGuidsValue += "," + regions[i].id;
		highlighter = document.getElementById("h" + regions[i].id);
		if (highlighter != null) {
			highlighter.style.visibility = 'visible';
		}
	}
	regionGuids.value = regionGuidsValue.substr(1);
}

function sbr_deselectAllCheckBox(obj) {
	var mainRegionId = $('#HiddenMainRegionId')[0];
	//		sbrDoGetLogicalAreaChildren(mainRegionId != null ? mainRegionId.value : null);
	var regions = GetRegionNames();

	var regionGuids = $('#RegionGuidsAggregate')[0];
	regionGuids.value = "";
	var regionlistLabel = $('#MapSearch-RegionList-list')[0];
	regionlistLabel.innerHTML = "";
	var highlighter;

	for (var i = 0; i < regions.length; i++) {
		highlighter = document.getElementById("h" + regions[i].id);
		if (highlighter != null) {
			highlighter.style.visibility = 'hidden';
		}
	}
}

function sbrCheckOnClick(lCheckbox) {
	var highlighterId = lCheckbox.id.replace('MapArea$', 'h');
	var highlighter = document.getElementById(highlighterId);
	if (highlighter) {
		if (lCheckbox.checked) {
			highlighter.style.visibility = 'visible';
		}
		else {
			highlighter.style.visibility = 'hidden';
		}
	}
}

function sbrGetArrayFromString(pString, pSeparator) {
	var lArray = pString.split(pSeparator);
	if ((lArray.length > 0) && (lArray[lArray.length - 1] == "")) { lArray.pop(); }
	if ((lArray.length > 0) && (lArray[0] == "")) { lArray.shift(); }
	return lArray;
}

function sbrSwitchPanes2(pDefaultPane, pFirstPane, pSecondPane, pIndex) {
	var lDefaultPane = $(pDefaultPane);
	var lFirstPane = $(pFirstPane);
	var lSecondPane = $(pSecondPane);
	var lLaunchSearch1 = $('#launchSearch1')[0];
	if (lDefaultPane && lFirstPane && lSecondPane) {
		var lDefaultRegionId = sbrConfiguration.defaultRegionField;
		var lDefaultZoomLevel = sbrConfiguration.zoomLevelField;
		if (pIndex == 0) {
			lDefaultPane.css("display","none");
			lFirstPane.css("display", "none");
			lSecondPane.css("display", "none");
			$('#CriterionSearch-panel').css("display", "block");
			if ($('#SubmitSearch-panel').length == 1) {
				$('#SubmitSearch-panel').css("display","block");
			}
			$('#HiddenTypeOfSearch').val("Locality");
		} else if (pIndex == 1) {
			lDefaultPane.css("display", "none");
			lFirstPane.css("display","block");
			lSecondPane.css("display", "none");
			$('#CriterionSearch-panel').css("display", "block");
			if ($('#SubmitSearch-panel').length == 1) {
				$('#SubmitSearch-panel').css("display", "block");
			}
			$('#HiddenTypeOfSearch').val("Locality");
		} else if (pIndex == 2) {
			lDefaultPane.css("display", "none");
			lFirstPane.css("display", "none");
			lSecondPane.css("display", "block");
			$("#HiddenTypeOfSearch").val("Region");
			if (lDefaultZoomLevel == 0) {
				$('#CriterionSearch-panel').css("display", "block");
				if ($('#SubmitSearch-panel').length == 1) {
					$('#SubmitSearch-panel').css("display", "block");
				}
				$('#MapSearch-panel').css("display", "block");
			}
			else {
				$('#CriterionSearch-panel').css("display", "none");
				if ($('#SubmitSearch-panel').length == 1) {
					$('#SubmitSearch-panel').css("display", "none");
				}
				$('#MapSearch-panel').css("display", "none");
			}
		}
	}
}

function sbrSwitchPanes3(pDefaultPane, pFirstPane, pSecondPane, pIndex, localityControlId1, localityControlId2) {
	sbrSwitchPanes2(pDefaultPane, pFirstPane, pSecondPane, pIndex);

	var lLocalityControl1 = $(localityControlId1);
	var lLocalityControl2 = $(localityControlId2);
	if (lLocalityControl1.length == 1 && lLocalityControl2.length == 1) {
		if (lLocalityControl1.val() != "") {
			lLocalityControl2.val(lLocalityControl1.val());
		}
	}
}

///
/// sbrDoGetMapArea
///
function sbrDoGetMapArea(pAreaId) {
	$.ajax({
		type: "GET",
		url: "/Search/GetMapByAreaId/" + pAreaId,
		data: { p_AreaId: pAreaId, p_LanguageId: sbrCulture },
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		success: function(pResult) {
			sbrOnGetMapAreaSuccess(pResult);
		},
		error: function(pResult) {
			sbrOnWcfCallFailure(pResult);
		}
	});
}

function sbrOnGetMapAreaSuccess(pResult) {
	var lDefaultRegionId = sbrConfiguration.defaultRegionField;
	var lDefaultZoomLevel = sbrConfiguration.zoomLevelField;

	$('#MapSearch-map-region')[0].innerHTML = pResult.Html.replace('\/Portals\/Immostreet15\/', '/Configuration/Portals/SiteDemo1/');
	var highlighters = document.createElement("SPAN");
	highlighters.setAttribute("ID", "highlighters");

	var regionMap = $('#MapSearch-map-region')[0];
	var html = "";

	if (regionMap != null && highlighters != null) {
		regionMap.appendChild(highlighters);
		highlighters.innerHTML = (pResult.BackImage == null || pResult.BackImage.length == 0) ? "<img src='" + pResult.MapImage + "' />" : "<img src='" + pResult.BackImage + "' />";
		for (var i = 0; i < pResult.MapHotSpots.length; i++) {
			if (pResult.MapHotSpots[i].HighlightedMap != null && pResult.MapHotSpots[i].HighlightedMap.length > 0) {
				var map = pResult.MapHotSpots[i].HighlightedMap.replace('\/Portals\/Immostreet15\/', '/Configuration/Portals/SiteDemo1/');
				var areaId = pResult.MapHotSpots[i].AreaId;
				html += "<img class='highlighter' src='" + map + "' id='h" + areaId + "' style='visibility: hidden;' />"
			}
		}
		highlighters.innerHTML = html;
	}

	var lAreaId = pResult.AreaId.toLowerCase();
	var lBreadcrumb = $('#HiddenMapBreadCrumb')[0];
	var lBreadcrumbArray = sbrGetArrayFromString(lBreadcrumb.value, ">");
	var lCurrentZoomLevel = lBreadcrumbArray.length - 1;

	lBreadcrumb.value = lBreadcrumb.value.toLowerCase();
	lBreadcrumb.value = (lBreadcrumb.value.indexOf(lAreaId + ">") < 0) ? lBreadcrumb.value + lAreaId + ">" : lBreadcrumb.value;
	lBreadcrumbArray = sbrGetArrayFromString(lBreadcrumb.value, ">");

	sbrDoGetAreaNames(lBreadcrumbArray.join(","));
}

///
/// sbrDoGetAreaNames
///
function sbrDoGetAreaNames(pAreaId) {
	$.ajax({
		type: "GET",
		url: "Search/GetAreaNamesByAreaId/" + pAreaId,
		data: { p_AreaId: pAreaId, p_LanguageId: sbrCulture },
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		success: function(pResult) {
			sbrOnGetAreaNamesSuccess(pResult);
		},
		error: function(pResult) {
			sbrOnWcfCallFailure(pResult);
		}
	});
}

function sbrOnGetAreaNamesSuccess(pResult) {
	var lBreadcrumb = $('#HiddenMapBreadCrumb')[0];
	var lGuids = sbrGetArrayFromString(lBreadcrumb.value, ">");
	var lNames = sbrGetArrayFromString(pResult, ",");
	var lArray = new Array();
	for (var i = 0; i < lGuids.length; i++)
		lArray[i] = lGuids[i] + ">" + lNames[i];

	sbrBuildBreadcrumb(lArray);
}

///
/// Utilities
///
function sbrBuildBreadcrumb(pArray) {
	var lBreadcrumb = $('.list-breadcrumbs')[0];
	var lCount = pArray.length;
	if (lCount > 0) {
		var lStringbuilder = "<ul>";
		var lElement, lGuid, lName;
		var lRegexp = new RegExp('>', "gi");
		for (var i = 0; i < lCount; i++) {
			lElement = pArray[i].split(lRegexp);
			lGuid = lElement[0];
			lName = lElement[1];
			if (i < (lCount - 1)) {
				lStringbuilder = lStringbuilder + "<li><a href=\"#\" onclick=\"sbrDoManageBreadcrumb('" + lGuid + "'); return false;\">";
				lStringbuilder = lStringbuilder + "<span>" + lName + "</span></a></li>";
			}
			else {
				lStringbuilder = lStringbuilder + "<li class=\"list-item current-item\"><span>" + lName + "</span></li>";
				var mainRegionName = $('#HiddenMainRegionName')[0];
				var mainRegionId = $('#HiddenMainRegionId')[0];
				if (mainRegionName != null && mainRegionId != null) {
					mainRegionName.value = lName;
					mainRegionId.value = lGuid;
				}
			}
		}
		lStringbuilder = lStringbuilder + "</ul>";
		lBreadcrumb.innerHTML = lStringbuilder;
	}
}

///
/// WCF failures
///
function sbrOnWcfCallFailure(result) {
	alert(result.responseText);
}

