﻿var map_elements = [];
var zip_elements = [];
var county_id, zip_ids, select_zip, selected_zip;

window.onload = function() {
	init_elements_local();
	
	if (init_elements)
		init_elements();
}
function load_county(id) {
    county_id.value = id;
    zip_ids.value = "";
    
	var county = get_county();
	
    select_zip.options.length = 0;
    selected_zip.options.length = 0;

    for (var i = 0; i < county.cities.length; i++) {
		var city = county.cities[i];
		
		add_city(select_zip, city, null);
    }
    
    add_item(selected_zip, "0", "Hele " + county.name, null);
    
    toggle_map(false);
}
function get_county() {
	return getCounty(parseInt(county_id.value));
}
function toggle_map(visible) {
	for (var i = 0; i < zip_elements.length; i++) {
		zip_elements[i].style.display = visible ? "none" : "block";
	}
	for (var i = 0; i < map_elements.length; i++) {
		map_elements[i].style.display = visible ? "block" : "none";
	}
	
	return false;
}
function add_zip(all) {
	var i = 0;
	while (i < select_zip.options.length) {
		if (all || select_zip.options[i].selected) {
			if (selected_zip.options.length == 1 && selected_zip.options[0].value == "0")
				selected_zip.remove(0);

			move_item(select_zip, selected_zip, i);
		} else
			i++;
	}
	
	update_items();
	
	return false;
}
function remove_zip(all) {
	if (selected_zip.options.length == 1 && selected_zip.options[0].value == "0") {
		return false;
	}
	var i = 0;
	while (i < selected_zip.options.length) {
		if (all || selected_zip.options[i].selected) {
			move_item(selected_zip, select_zip, i);
		} else
			i++;
	}
	if (selected_zip.options.length == 0) {
		add_item(selected_zip, "0", "Hele " + get_county().name, null);
	}
	
	update_items();
	
	return false;
}
function move_item(from, to, index) {
	var option = from.options[index];
	option.selected = false;
	
	var before = null;
	for (var i = 0; i < to.options.length; i++) {
		if (parseInt(option.value) < parseInt(to.options[i].value)) {
			before = to.options[i];
			break;
		}
	}
	
	from.removeChild(option);
	
	add_item(to, option.value, option.innerHTML, before);
}
function update_items() {
	zip_ids.value = "";
	if (selected_zip.options.length > 1 || selected_zip.options[0].value != "0") {
		for (var i = 0; i < selected_zip.options.length; i++) {
			zip_ids.value += selected_zip.options[i].value + ",";
		}
	}
}
function add_item(select, value, text, adjacent) {
	var item = document.createElement("option");
	item.value = value;
	item.innerHTML = text;
	
	select.insertBefore(item, adjacent);
}
function add_city(select, city, adjacent) {
	add_item(select, city.id, city.fullName, adjacent);
}