var street_global;
var last_submit_value;

function init_set_address_page()
{
	var country = xajax.$("country");

	if(country.options.length == 2 || country.selectedIndex > 0)
	{
		country.options[1].selected = true;
		change_country(country.value);
	}
}

function enable_disable_field(field_name, first_entry, disabled, reset)
{
	var field = xajax.$(field_name);

	if(reset)
	{
		field.options.length = 0;
	}
	if(first_entry != "")
	{
		field.options[0] = new Option(first_entry, "", true, true);
	}
	field.disabled = disabled;

	return field;
}

function check_if_direct_redirect_possible(field, method, edit_value)
{
	var args = "";

	for(var j = 3; j < arguments.length; j++)
	{
		args = "," + ((isFinite(arguments[j])) ? arguments[j] : "'" + arguments[j] + "'");
	}
	if(edit_value != "")
	{
		for(var i = 0; i < field.options.length; i++)
		{
			if(field.options[i].value == edit_value)
			{
				field.options[i].selected = true;
				eval(method + "(" + ((isFinite(field.value)) ? field.options[i].value : "'" + field.options[i].value + "'") + args + ");");
				return true;
			}
		}
	}
	else if(field.options.length == 2)
	{
		field.options[1].selected = true;
		eval(method + "(" + ((isFinite(field.value)) ? field.options[1].value : "'" + field.options[1].value + "'") + args + ");");
		return true;
	}
	return false;
}

function change_delivery()
{
	process_search_branch(xajax.$("submit").value);
}

function change_country(country_name)
{
	enable_disable_field("city", L_LOADING_CITIES, true, true);
	enable_disable_field("postcode", L_SELECT_CITY, true, true);
	enable_disable_field("street", L_SELECT_CITY, true, true);
	enable_disable_field("house_number", L_SELECT_CITY, true, true);
	enable_disable_field("abc", "", true, false);

	xajax.$("search_postcode").disabled = true;
	xajax_processLoadCities(country_name);
}

function cities_loaded()
{
	var city = enable_disable_field("city", L_SELECT, false, false);

	if(city.length == 1)
	{
		enable_disable_field("city", L_SELECT_COUNTRY, true, true);
		enable_disable_field("postcode", L_SELECT_COUNTRY, true, true);
		enable_disable_field("street", L_SELECT_COUNTRY, true, true);
		enable_disable_field("house_number", L_SELECT_COUNTRY, true, true);
	}
	else if(!check_if_direct_redirect_possible(city, "change_city", E_CITY))
	{
		process_search_branch(L_SELECT_CITY);
	}
}

function change_city(city)
{
	enable_disable_field("postcode", L_LOADING_POSTCODES, true, true);
	enable_disable_field("street", L_SELECT_POSTCODE, true, true);
	enable_disable_field("house_number", L_SELECT_POSTCODE, true, true);
	enable_disable_field("abc", "", true, false);

	xajax.$("search_postcode").disabled = true;
	xajax_processLoadPostcodes(city);
}

function postcodes_loaded()
{
	var postcode = enable_disable_field("postcode", L_SELECT, false, false);

	if(postcode.length == 1)
	{
		enable_disable_field("postcode", L_SELECT_CITY, true, true);
		enable_disable_field("street", L_SELECT_CITY, true, true);
		enable_disable_field("house_number", L_SELECT_CITY, true, true);
	}
	else
	{
		xajax.$("search_postcode").disabled = false;

		if(!check_if_direct_redirect_possible(postcode, "change_postcode", E_POSTCODE, E_STREET))
		{
			process_search_branch(L_SELECT_POSTCODE);
		}
	}
}

function change_postcode(postcode, street_id)
{
	enable_disable_field("street", L_LOADING_STREETS, true, true);
	enable_disable_field("house_number", L_SELECT_STREET, true, true);
	enable_disable_field("abc", "", true, false);

	if(street_id > 0)
	{
		E_STREET = street_id; // Zwischenspeichern in der Globalen Variable
	}
	xajax_processLoadStreets(postcode, E_SET_ADDRESS); // E_SET_ADDRESS sagt aus ob Liefergebühren hinter dem Straßennamen stehen sollen
}

function streets_loaded()
{
	var street = enable_disable_field("street", L_SELECT, false, false);

	if(street.length == 1)
	{
		enable_disable_field("street", L_SELECT_POSTCODE, true, true);
		enable_disable_field("house_number", L_SELECT_POSTCODE, true, true);
	}
	else if(!check_if_direct_redirect_possible(street, "change_street", E_STREET))
	{
		process_search_branch(L_SELECT_STREET);
	}
}

function change_street(street_id)
{
	enable_disable_field("house_number", L_LOADING_HOUSE_NUMBERS, true, true);
	xajax_processLoadHouseNumbers(street_id);
}

function house_numbers_loaded(start, end)
{
	var house_number = enable_disable_field("house_number", L_SELECT, false, false);

	if(start == end && start == 0)
	{
		enable_disable_field("house_number", L_SELECT_STREET, true, true);
	}
	else
	{
		enable_disable_field("abc", "", false, false);

		if(E_HOUSE_NUMBER >= start && E_HOUSE_NUMBER <= end)
		{
			for(var i = 1; start <= end; start++, i++)
			{
				house_number.options[i] = new Option(start, start, E_HOUSE_NUMBER == start, E_HOUSE_NUMBER == start);
			}
			if(E_SET_ADDRESS)
			{
				change_house_number(E_HOUSE_NUMBER);
			}
		}
		else
		{
			for(var i = 1; start <= end; start++, i++)
			{
				house_number.options[i] = new Option(start, start, false, false);
			}
			if(E_SET_ADDRESS)
			{
				process_search_branch(L_SELECT_STREET);
			}
		}
	}
}

function change_house_number(house_number)
{
	if(E_SET_ADDRESS)
	{
		process_search_branch(L_SELECT_HOUSE_NUMBER);
	}
}

function addOptions(field, value, text, selected)
{
	field = xajax.$(field);
	field.options[field.length] = new Option(text, value, selected, selected);
}

function open_search()
{
	SearchWindow = window.open(SEARCH_URL, "", "height=350,width=400,left=300,top=300");
	return false;
}

function do_search(street)
{
	street_global = street;
	xajax_processSearchStreet(xajax.$("country").value, xajax.$("city").value, street_global, E_SET_ADDRESS); // E_SET_ADDRESS sagt aus ob Liefergebühren hinter dem Straßennamen stehen sollen
}

function past_to_popup(text, value)
{
	SearchWindow.insert_option(text, value);
}

function popup_search_finished()
{
	SearchWindow.search_finished();
}

function process_searched_street(street)
{
	street_global = street.split("||");
	var postcode  = xajax.$("postcode");

	for(var i = 0; i < postcode.options.length; i++)
	{
		if(postcode.options[i].value == street_global[0])
		{
			if(postcode.options[i].selected == false)
			{
				postcode.options[i].selected = true;
			}
			change_postcode(street_global[0], street_global[1]);
			break;
		}
	}
}

function process_search_branch(submit_button_value)
{
	var country      = xajax.$("country").value;
	var city         = xajax.$("city").value;
	var postcode     = xajax.$("postcode").value;
	var street_id    = xajax.$("street").value;
	var house_number = xajax.$("house_number").value;
	var delivery     = xajax.$("deliver").checked;

	xajax.$("submit").disabled       = true;
	xajax.$("branch").options.length = 0;

	if((country != "") && (city != "") && (postcode != "") && (street_id != "") && (house_number != ""))
	{
		last_submit_button_value = submit_button_value;

		xajax.$("submit").value 		 = L_LOADING_BRANCHES;
		xajax.$("submit").disabled       = true;

		xajax_processLoadBranches(delivery, country, city, street_id);
	}

}

function process_search_branch_finished()
{
	if(xajax.$("branch").options.length > 0)
	{
		xajax.$("branch").disabled            = false;
		xajax.$("branch").options[0].selected = true;
		xajax.$("submit").disabled            = false;
		xajax.$("submit").value               = L_CHOOSE_BRANCH;
	}
	else
	{
		xajax.$("submit").value = last_submit_button_value;
	}
}

function set_delivery_branch()
{
	var country			= xajax.$("country").value;
	var city			= xajax.$("city").value;
	var postcode		= xajax.$("postcode").value;
	var street_id		= xajax.$("street").value;
	var house_number	= xajax.$("house_number").value;
	var abc				= xajax.$("abc").value;
	var branch_id 		= parseInt(xajax.$("branch").value);

	if((country != "") && (city != "") && (postcode != "") && (street_id != "") && (house_number != "") && (branch_id > 0))
	{
		return true;
	}
	return false;
}

function build_newsletter_form(register)
{
	if(register)
	{
		xajax.$("submit").value = L_REGISTER;
		insert_element("f1","f2","f3","f4","f5","f6","f7","f8");
	}
	else
	{
		xajax.$("submit").value = L_UNREGISTER;
		remove_element("f1","f2","f3","f4","f5","f6","f7","f8");
	}
}
