//********************************
// C A T E G O R Y  L I S T I N G
// author: Gursch Markus
// July 2008
/////////////////////////////////*

var underCatArr = new Array();
var selectedCats = new Array();
var removeCats = new Array();;
var insertCategoryID;
var showCategoryScreen = true;
var showUnderCategoryScreen = true;

function showCategoryList(katID)
{
	var parentElement = document.getElementById("nodeSecondLi" + katID).parentNode.id;
	var parentKatID = parentElement.substring(10);
	
	if (underCatArr[parentKatID] == null)
		underCatArr[parentKatID] = new Array();

	underCatArr[parentKatID].push(katID);
	
	if (showCategoryScreen == true)
	{
		insertCategoryID = katID;
		clearChilds(document.getElementById("addCatDiv"));
		
		if (generateCategoryDivText() != 0)
		{
			selectedCats[katID] = 1;
			toggle("unfold", "catStartContainer");
			removeCats = null;
			removeCats = new Array();
		}
		else
		{	
			setLoad(true);
			selectedCats[katID] = 1;
			showMarkersToCategory(katID);
		}
	}
	else
	{
		setLoad(true);
		showMarkersToCategory(katID);
	}
}

function showUnderCategoryList(katID)
{
	if (showUnderCategoryScreen == true && underCatArr.length != 0)
	{
		insertCategoryID = katID;
		clearChilds(document.getElementById("addCatDiv"));
		if (generateUnderCategoryDivText(katID) != 0)
			toggle("unfold", "catStartContainer");
		else
			return 0;
	}
}
function generateUnderCategoryDivText(katID)
{
	var div = document.getElementById("addCatDiv");
	var ul  = document.createElement("ul");
	ul.setAttribute("id", "catsUL");
	
	var logo = getDivLogo();
	div.appendChild(logo);

	div.appendChild(document.createElement("br"));
	div.appendChild(document.createElement("br"));
	
	var catsCount = 0;
	
	
	if (underCatArr[katID])
		for (var i=0; i < underCatArr[katID].length; i++)
		{	
			if (underCatArr[katID][i] != 0)
			{
				catsCount++;
				var line = createCategoryLine(underCatArr[katID][i]);
				ul.appendChild(line);
			}
		}
		
	if (catsCount == 0)
	{
		toggle("fold", "catStartContainer");
		return 0;
	}
	// text
	div.appendChild(generateText(catsCount,true));
	
	// menu UL
	div.appendChild(ul);
	
	//dont show text
	div.appendChild(document.createElement("br"));
	div.appendChild(generateDontShowText(true));
	
	var br = document.createElement("br");
	div.appendChild(getAdditionalText());
	div.appendChild(getUnderWeiter(katID));
	return 1;
}
function generateCategoryDivText()
{
	var div = document.getElementById("addCatDiv");
	var ul  = document.createElement("ul");
	ul.setAttribute("id", "catsUL");
	
	var logo = getDivLogo();
	div.appendChild(logo);

	div.appendChild(document.createElement("br"));
	div.appendChild(document.createElement("br"));
	
	var catsCount = 0;
	for (element in selectedCats)
	{	
		var cbox = document.getElementById("cbKat" + element);
		if (cbox && cbox.checked == true && insertCategoryID != element && selectedCats[element] != 0)
		{
			catsCount++;
			var line = createCategoryLine(element);
			ul.appendChild(line);
		}	
	}
	
	if (catsCount == 0)
		return 0;
	
	// text
	div.appendChild(generateText(catsCount,false));
	
	// menu UL
	div.appendChild(ul);
	
	//dont show text
	div.appendChild(document.createElement("br"));
	div.appendChild(generateDontShowText(false));
	
	var br = document.createElement("br");
	div.appendChild(getAdditionalText());
	div.appendChild(getWeiter());
	return 1;
}

function closeCatDiv()
{
	toggle("fold", "catStartContainer");
	setLoad(true);
	
	selectedCats[insertCategoryID] = 1;
	showMarkersToCategory(insertCategoryID);

	for (element in removeCats)
	{
		if (removeCats[element] == 1)
		{
			selectedCats[element] = 0;
			var parentElement = document.getElementById("nodeSecondLi" + element).parentNode.id;
			var parentKatID = parentElement.substring(10);
			deleteUnderCatArrEntry(parentKatID, element);
			document.getElementById("cbKat" + element).checked = false;
			removeCategoryMarkers(element);
		}
	}
	removeCats = null;
	removeCats = new Array();
	
}

function createCategoryLine(element)
{
	var li = document.createElement("li");
	li.setAttribute("id", "catsLI");
	li.appendChild(createCatCheckBox(element));
	li.appendChild(document.createTextNode(catArray[element]));
	return li;
}

function createCatCheckBox(element)
{
	var checkbox = document.createElement('input');
	checkbox.type = 'checkbox';
	checkbox.setAttribute ("id", 'removeCat' + element);
	
	checkbox.defaultChecked = true;
	checkbox.value = element;
	
	checkbox.onclick=function(){selectCategory( element )};

	return checkbox;
}

function selectCategory(element)
{
	var cb = document.getElementById('removeCat' + element);
	if (cb.checked == false)
		removeCats[element] = 1;		
	else
		removeCats[element] = 0;
}

function generateText(catsCount, under)
{
	if (under == true)
	{
		if (catsCount == 0)
			return document.createTextNode(unescape("Es sind keine Unterkategorien ausgew%E4hlt"));
		else
			return document.createTextNode("Folgende Unterkategorien sind aktiviert:");
	}
	else
	{
		if (catsCount == 0)
			return document.createTextNode(unescape("Es sind keine Kategorien ausgew%E4hlt"));
		else
			return document.createTextNode("Folgende Kategorien sind aktiviert:");
	}
}

function generateDontShowText(under)
{
	var ul       = document.createElement("ul");
	var li       = document.createElement("li");
	var checkbox = document.createElement("input");
	
  checkbox.type = 'checkbox';
	checkbox.setAttribute ("id", 'cbDontShow');
	
	checkbox.defaultChecked = false;
	checkbox.onclick = function(){dontShow(under)};
	
	li.appendChild(checkbox);
	li.appendChild(document.createTextNode("Diese Meldung nicht mehr anzeigen."));
	
	ul.appendChild(li);
	return ul;
}

function dontShow(under)
{
	var cb = document.getElementById("cbDontShow");
	
	if (under == true)
	{
		if (cb.checked == true)
			showUnderCategoryScreen = false;
		else
			showUnderCategoryScreen = true;
	}
	else
	{
		if (cb.checked == true)
			showCategoryScreen = false;
		else
			showCategoryScreen = true;
	}
}
function getDivLogo()
{
	var img = document.createElement("img");
	img.style.marginTop = "3px";
	img.style.marginLeft = "3px";
	
	img.setAttribute("id", "vulkanlandLogo");
 	img.src = hostFiller + "/images/logo_gross.png";
 	return img;
}

function getAdditionalText()
{
	var br  = document.createElement("br");
	var div = document.createElement("div");
	
	div.setAttribute("id", "catAddText");
	div.appendChild(br);
	var text = unescape("Deaktivieren Sie jene Kategorien%2C die sich nicht beibehalten m%F6chten.");
	
	div.appendChild(document.createTextNode(text));
	return div;
}

function getWeiter()
{
	var div = document.createElement("div");
	var br  = document.createElement("br");
	var a   = document.createElement("a");
	
	div.setAttribute("id", "catWeiter");
	div.setAttribute("align", "right");
	
	a.setAttribute("href", "javascript:void(0);");
	a.onclick = closeCatDiv;

	a.appendChild(document.createTextNode("Weiter"));
	
	div.appendChild(br);
	div.appendChild(a);
	return div;
}

function getUnderWeiter(katID)
{
	var div = document.createElement("div");
	var br  = document.createElement("br");
	var a   = document.createElement("a");
	
	div.setAttribute("id", "catWeiter");
	div.setAttribute("align", "right");
	
	a.setAttribute("href", "javascript:void(0);");
	a.onclick = function onclick(event){closeUnderCatDiv(katID)}
	
	a.appendChild(document.createTextNode("Weiter"));
	
	div.appendChild(br);
	div.appendChild(a);
	return div;
}

function closeUnderCatDiv(katID)
{
	toggle("fold", "catStartContainer");

	for (element in removeCats)
	{
		if (removeCats[element] == 1)
		{
			var parentElement = document.getElementById("nodeSecondLi" + element).parentNode.id;
			var parentKatID = parentElement.substring(10);
			deleteUnderCatArrEntry(parentKatID, element);
			document.getElementById("cbKat" + element).checked = false;
			removeCategoryMarkers(element);
		}
	}
	removeCats = null;
	removeCats = new Array();
}
function deleteUnderCatArrEntry(katID, element)
{
	if (underCatArr[katID] != null)
		for(var i = 0; i < underCatArr[katID].length; i++)
		{
			if (underCatArr[katID][i] == element)
			{
				underCatArr[katID][i] = 0;
				break;
			}
		}
}
function deleteUnderCatArrEntries(element)
{
	
	
	if (underCatArr[element] != null)
		for(var i = 0; i < underCatArr[element].length; i++)
			underCatArr[element][i] = 0;
}