$(document).ready(function(){
	if (!bv.opera) {
		$("input[type=checkbox]").css("position","relative");
		$("input[type=checkbox]").css("top","2px");
		$("input[type=radio]").css("position","relative");
		$("input[type=radio]").css("top","2px");
	}
	getCities();
});

function pb8_changeTab(tab) {
	if (tab.className == "pb8_tab") {
		$(".pb8_activeTab").removeClass("pb8_activeTab").addClass("pb8_tab");
		tab.className = "pb8_activeTab";
	} else {
		return;
	}
	if (document.getElementById("pb8_wideC").style.display == "block") {
		document.getElementById("pb8_centerC").style.display = "block";
		document.getElementById("pb8_rightC").style.display = "block";
		document.getElementById("pb8_wideC").style.display = "none";
		document.getElementById("pb8_contentC_wide").id = "pb8_contentC";
	} else {
		document.getElementById("pb8_centerC").style.display = "none";
		document.getElementById("pb8_rightC").style.display = "none";
		document.getElementById("pb8_wideC").style.display = "block";
		document.getElementById("pb8_contentC").id = "pb8_contentC_wide";
	}
}

function pb8_toogleFilter(object) {
	document.getElementById("searchType_1").checked = false;
	document.getElementById("placeType_1").checked = false;
	document.getElementById("placeType_2").checked = false;
	document.getElementById("searchType_2").checked = false;
	document.getElementById("searchType_3").checked = false;
	if (object.id == "searchType_1" || object.id == "placeType_1") {
		document.getElementById("searchType_1").checked = true;
		document.getElementById("placeType_1").checked = true;
	}
	if (object.id == "placeType_2") {
		document.getElementById("searchType_1").checked = true;
		document.getElementById("placeType_2").checked = true;
	}
	if (object.id == "searchType_2") {
		document.getElementById("searchType_2").checked = true;
	}
	if (object.id == "searchType_3") {
		document.getElementById("searchType_3").checked = true;
	}
	getCities();
}

function setDistrict(districtId) {
	document.getElementById("districtsSelect").selectedIndex = districtId-1;
	getCities();
}

function insertOptions(formElement, values, labels) {
	for (var i=0; i<values.length; i++) {
		var newOption = new Option(values[i], labels[i]);
		formElement[i] = newOption;
	}
}

function dropOptions(formElement) {
	var countdown = formElement.length;
	for (var i=countdown; i>0; i--)
		formElement.options[i-1] = null;
}

function pb8_toggleExamples(object) {
	var examplesDiv = document.getElementById("pb8_examplesDiv");
	if (examplesDiv.style.display == "block") {
		examplesDiv.style.display = "none";
		object.innerHTML = "pokaż więcej przykładów";
	} else {
		examplesDiv.style.display = "block";
		object.innerHTML = "schowaj przykłady";
	}
}
function pb8_localizationFailture() {
	failtureDiv = document.getElementById("pb8_failtureDiv");
	failtureDiv.style.display = "block";
}
function pb8_severalResult(result) {
	var severalList = document.getElementById("pb8_severalResultList");
	var label = document.createElement('div');
	label.className = "listLabel";
	severalList.appendChild(label);
	label.innerHTML = "Znaleziono więcej niż jedno miejsce pasujące do podanej lokalizacji: <b>" + document.getElementById("user_localization").value + "</b>";
	for (var j=0; j<result.Placemark.length; j++) {
		var latitude =  result.Placemark[j].Point.coordinates[1].toFixed(4);
		var longitude =  result.Placemark[j].Point.coordinates[0].toFixed(4);
		var item = document.createElement('div');
		item.className = "listItem";
		severalList.appendChild(item);
		var itemLink = document.createElement('a');
		var address = addressCreate(result.Placemark[j].AddressDetails)
		itemLink.href = "javascript:extNearestSearch('" + latitude + "','" + longitude + "','" + address + "');void(0);"
		itemLink.innerHTML = address;
		item.appendChild(itemLink);
	}
	severalList.style.display = "block";
}

function extNearestSearch(latitude,longitude,objText) {
	document.getElementById("user_localization").value = objText;
	nearestSearch(latitude,longitude);
}

function pb8_hideAllPanels() {
	document.getElementById("pb8_examplesDiv").style.display = "none";
	document.getElementById("pb8_failtureDiv").style.display = "none";
	document.getElementById("pb8_severalResultList").style.display = "none";
	document.getElementById("pb8_severalResultList").innerHTML = "";
}

function findUser() {
	pb8_hideAllPanels();
	if (document.getElementById("user_localization").value == "") {
		alert("Aby wyszukać najbliższą placówkę podaj swoją lokalizację.");
		return;
	} else {
		userAddress = "Polska, " + document.getElementById("user_localization").value;
	}
	var geo = new GClientGeocoder();
	geo.getLocations(userAddress, function(result) {
		if (result.Status.code == G_GEO_SUCCESS) {
			if(result.Placemark.length > 1)  {
				pb8_severalResult(result);
			} else {
				var latitude =  result.Placemark[0].Point.coordinates[1].toFixed(4);
				var longitude =  result.Placemark[0].Point.coordinates[0].toFixed(4);
				var address = addressCreate(result.Placemark[0].AddressDetails)
				extNearestSearch(latitude,longitude,address);
			}
		} else {
			pb8_localizationFailture();
		}
	});
}

function searchObjectNamedPropertyValue(obj, searchName) {
	for (var propertyName in obj) {
		if(obj.hasOwnProperty(propertyName) && propertyName == searchName) {
			return obj[propertyName];
		} else if (typeof obj[propertyName] == "object") {
			var value = searchObjectNamedPropertyValue(obj[propertyName],searchName);
			if (value != null) {
				return value;
			}
		}
	}
	return null;
}

function addressCreate(obj) {
	var address = ""
	var administrativeAreaName = searchObjectNamedPropertyValue(obj,'AdministrativeAreaName');
	if (administrativeAreaName != null) {
		address += administrativeAreaName;
	}
	var localityName = searchObjectNamedPropertyValue(obj,'LocalityName');
	if (localityName != null) {
		address += ", " + localityName;
	}
	var thoroughfareName = searchObjectNamedPropertyValue(obj,'ThoroughfareName');
	if (thoroughfareName != null) {
		address += ", " + thoroughfareName;
	}
	return address;
}
