var visaKommuner = false;
var sSelected = '';
var sPrevSelected = '';

//////////////////////////////////////////////////////////////////////////////////
//																				//
//	toggleVisaKommuner(obj)														//
//																				//
//////////////////////////////////////////////////////////////////////////////////

function toggleVisaKommuner(obj,obj2)
	{
	if (!visaKommuner)
		{
		var i = 0;
		var b = true;
		for (i = 0; i < obj2.length; i++)
			if (obj2[i].selected)
				if ((obj2[i].value.substr(0,2) == 'se') && (obj2[i].value.length > 2))
					b = false;
		if (b)
			{
			alert('Du behöver välja län för att visa kommuner!');
			return;
			}
		}
	obj.value    = (visaKommuner? 'Visa kommuner' : 'Dölj kommuner');
	visaKommuner = (!visaKommuner);
	}

//////////////////////////////////////////////////////////////////////////////////
//																				//
//	addaOmrade(value,text)														//
//																				//
//////////////////////////////////////////////////////////////////////////////////

function addaOmrade(value,text)
	{
	aOmrade[aOmrade.length] = new Array(value,text);
	}

//////////////////////////////////////////////////////////////////////////////////
//																				//
//	matcha(s1,s2)																//
//																				//
//////////////////////////////////////////////////////////////////////////////////

function matcha(s1,s2)
	{
	if (s1 == s2)
		return true
	else
		if (s1.length != s2.length)
			return false
		else
			{
			var i = 0;
			for (i = 0; i < s1.length; i++)
				if (s1.substr(i,1) != '*')
					if (s1.substr(i,1) != s2.substr(i,1))
						return false;
			return true;
			}
	}

//////////////////////////////////////////////////////////////////////////////////
//																				//
//	avmarkera(s,obj)															//
//																				//
//////////////////////////////////////////////////////////////////////////////////

function avmarkera(s,obj)
	{
	var i = 0;
	for (i = 0; i < obj.length; i++)
		if (obj[i].selected)
			if (matcha(s,obj[i].value))
				{
				obj[i].selected = false;
				sSelected = sSelected.replace(obj[i].value+';','');
				}
	}

//////////////////////////////////////////////////////////////////////////////////
//																				//
//	fillSelect(obj)																//
//																				//
//////////////////////////////////////////////////////////////////////////////////

function fillSelect(obj,omrade)
	{

//
//	Fyll sSelected med de värden som är valda.
//

	sSelected = '';
	var i = 0;
	for (i = 0; i < obj.length; i++)
		if (obj[i].selected)
			sSelected += obj[i].value+';';

//
//	Fyll arrayen aOmrade (om det inte är gjort) och initiera räknaren för obj.
//

	if (aOmrade.length == 0)
		fillaOmrade(omrade);
	var iObj = 0;

//
//	Gå igenom arrayen (som innehåller alla områden) och jämför med det som är valt nu.
//	Visa eller dölj kommunerna i ett län vid behov.
//

	for (i = 0; i < aOmrade.length; i++)
		{

//
//	b anger om värdena i aOmrade och obj är olika.
//	Om de är det, kan det bli aktuellt att lägga in ett nytt värde i obj.
//

		var b = true;
		if (obj.options[iObj])
			if (obj.options[iObj].value == aOmrade[i][0])
				b = false;

//
//	Behandla områden på landsnivå.
//

		if (aOmrade[i][0].length == 2)
			{
			if (b)
				{
				obj.options[iObj] = new Option(aOmrade[i][1],aOmrade[i][0]);
				obj.options[iObj].className = 'optionlevel1';
				obj.options[iObj].selected = (sSelected.indexOf(aOmrade[i][0]+';') > -1);
				}
			if (obj.options[iObj].selected)
				if (sPrevSelected.indexOf(aOmrade[i][0]+';') == -1)
					{
					avmarkera(aOmrade[i][0].substr(0,2)+'**',obj);
					avmarkera(aOmrade[i][0].substr(0,2)+'****',obj);
					}
			iObj ++;
			}
		else

//
//	Behandla områden på länsnivå.
//

			if (aOmrade[i][0].length == 4)
				{
				if (b)
					{
					obj.options[iObj] = new Option('  '+aOmrade[i][1],aOmrade[i][0]);
					obj.options[iObj].className = 'optionlevel2';
					obj.options[iObj].selected = (sSelected.indexOf(aOmrade[i][0]+';') > -1);
					}
				if (obj.options[iObj].selected)
					if (sPrevSelected.indexOf(aOmrade[i][0]+';') == -1)
						{
						avmarkera(aOmrade[i][0].substr(0,2),obj);
						avmarkera(aOmrade[i][0].substr(0,4)+'**',obj);
						}
				iObj ++;
				}
			else

//
//	Behandla områden på kommunnivå. Kommuner visas under följande förutsättningar:
//	- Visa kommuner är valt och länet ifråga är valt
//	eller
//	- Kommunen ifråga är vald (dvs den fortsätter att visas även om man väljer Dölj kommuner)
//

				if ((visaKommuner && sSelected.indexOf(aOmrade[i][0].substr(0,4)) > -1) ||
					(sSelected.indexOf(aOmrade[i][0]) > -1))
					{
					if (b)
						{
						obj.options[iObj] = new Option('    '+aOmrade[i][1],aOmrade[i][0]);
						obj.options[iObj].className = 'optionlevel3';
						obj.options[iObj].selected = (sSelected.indexOf(aOmrade[i][0]+';') > -1);
						}
					if (obj.options[iObj].selected)
						if (sPrevSelected.indexOf(aOmrade[i][0]+';') == -1)
							{
							avmarkera(aOmrade[i][0].substr(0,2),obj);
							avmarkera(aOmrade[i][0].substr(0,4),obj);
							}
					iObj ++;
					}

		}
	obj.length = iObj;
	sPrevSelected = sSelected;
	}

