var ctx = null;
var ctxL = null;
var ctxLEdit = null;
var error_TEXT = "Sorry, could not get a answer from the server. Please retry in a few minutes.";

function show_all_trees()
{
	var trees = document.getElementsByTagName("div");
	for(var x=0;x<trees.length;x++)
	{
		if(trees[x].getAttribute("name") == "tree")
		{
			trees[x].style.display = "block";
			document.images["bild"+trees[x].id.substr(4)].src = "pics/folder_minus.gif";
		}
	}
}

function hide_all_trees(start,end)
{
	var trees = document.getElementsByTagName("div");
	for(var x=0;x<trees.length;x++)
	{
		if(trees[x].getAttribute("name") == "tree")
		{
			trees[x].style.display = "none";
			document.images["bild"+trees[x].id.substr(4)].src = "pics/folder_plus.gif";
		}
	}
}

function selectall()
{
	var trees = document.getElementsByTagName("div");
	for(var x=0;x<trees.length;x++)
	{
		if(trees[x].getAttribute("name") == "tree" && trees[x].style.display != "none")
		{
			var inputElements = trees[x].getElementsByTagName("input");
			
			for(var y=0;y<inputElements.length;y++)
			{
				inputElements[y].checked = document.forms.link_chose.sall.checked;
			}
		}
	}
}

function deselectall()
{
	var trees = document.getElementsByTagName("div");
	for(var x=0;x<trees.length;x++)
	{
		if(trees[x].getAttribute("name") == "tree" && trees[x].style.display != "none")
		{
			var inputElements = trees[x].getElementsByTagName("input");
			
			for(var y=0;y<inputElements.length;y++)
			{
				inputElements[y].checked = false;
			}
		}
	}
}

function resetCtxL()
{
	if(ctxL)
	{
		resetZIndex(ctxL.parentNode);
		ctxL.parentNode.removeChild(ctxL);
		ctxL = null;
	}
}

function setZIndex(parentItem)
{
	while(parentItem)
	{
			parentItem.style.zIndex = "1";
			parentItem = parentItem.parentNode.parentNode;
	}
}

function resetZIndex(parentItem)
{
	while(parentItem)
	{
			parentItem.style.zIndex = "0";
			parentItem = parentItem.parentNode.parentNode;
	}
	
	var responsehtml = document.getElementById("responsetext");
	responsehtml.innerHTML = "";
}

function setCtxL(item, strongtext, descr, created, edited, prio)
{
	if(ctxLEdit)
	{
		resetCtxLEdit();
	}
	if(ctx)
	{
		resetCtx();
	}
	if(!ctxL)
	{
		var parentBox = item.parentNode;
		ctxL = document.createElement("div");
		ctxL.className = "linkinfobox";
		ctxL.id = "linkinfobox";
		
		
		var linkinfo = document.createElement("div");
		linkinfo.innerHTML = strongtext;
		linkinfo.appendChild(document.createTextNode(descr));
		ctxL.appendChild(linkinfo);
		
		linkinfo = document.createElement("div");
		linkinfo.innerHTML = created;
		ctxL.appendChild(linkinfo);
		
		linkinfo = document.createElement("div");
		linkinfo.innerHTML = edited;
		ctxL.appendChild(linkinfo);
		
		linkinfo = document.createElement("div");
		linkinfo.innerHTML = prio;
		ctxL.appendChild(linkinfo);
		
		parentBox.style.zIndex = "1";
		parentBox.appendChild(ctxL);
		
		var leftOffset = parentBox.getElementsByTagName("span")[0].offsetLeft;
		
		if(leftOffset)
		{
			ctxL.style.left = leftOffset + "px";
			ctxL.style.top = "2px";
		}
		
		setZIndex(parentBox.parentNode.parentNode);
	}
}


function insertPage()
{
  if (request.readyState == 4)
  {
    if (request.status == 200)
    {
			var innercontent = document.getElementById("innercontent");
			var insertcontent = document.createElement("div");
			insertcontent.innerHTML = request.responseText;
			innercontent.parentNode.appendChild(insertcontent);
			innercontent.style.display = "none";
    }
    else
    {
     	alert(error_TEXT);
    }
  }
}

function insertCats()
{
   if (request.readyState == 4)
   {
     if (request.status == 200)
     {
	     	var newDiv = document.createElement("div");
	     	var t1 = document.getElementById('actionForm');
	     	var t2 = document.getElementById('aktionID');
	     	newDiv.innerHTML = request.responseText;
	     	newDiv = newDiv.firstChild;
				t1.insertBefore(newDiv,t2.nextSibling);
     }
     else
     {
     		alert(error_TEXT);
     }
   }
}

function resetView(responseText)
{
	var innercontent = document.getElementById("innercontent");
	var insertcontent = document.getElementById("insertcontent");
	var responsehtml = document.getElementById("responsetext");
	responsehtml.innerHTML = responseText;
	insertcontent.parentNode.removeChild(insertcontent);
	innercontent.style.display = "block";
}

function fireEvent(eventType, elementID)
{
  var o = document.getElementById(elementID);
  
  if(document.createEvent)
  {
      var evt = document.createEvent("Events");
      evt.initEvent(eventType, true, true);
      o.dispatchEvent(evt);
  }
  else if(document.createEventObject)
  {
      var evt = document.createEventObject();
      o.fireEvent('on' + eventType, evt);
  }
}

function actionPage()
{
   if (request.readyState == 4)
   {
     if (request.status == 200)
     {
				if(request.responseText.indexOf("'|'") > 0)
				{
					if(ctx)
					{
						resetCtx();
					}
				
					if(ctxLEdit)
					{
						resetCtxLEdit();
					}
					
					//alert(request.responseText);
					var response = request.responseText.split("'|'");
					
					switch(response[0])
					{
						case 'exists':
							var rubrikNode = document.getElementById("tree"+response[1]);
							rubrikNode.style.display = "block";
							var newLinkNode = document.createElement("div");
							newLinkNode.innerHTML = response[4];
							newLinkNode = newLinkNode.firstChild;
							rubrikNode.appendChild(newLinkNode);
							resetView(response[3]);
							window.location.href = "#anchl" + response[2];
							fireEvent('mouseover','anchl' + response[2]);
							break;
						case 'new':
							var rubrikNode = document.getElementById("topRoot");
							var newRubrikNode = document.createElement("div");
							newRubrikNode.innerHTML = response[4];
							newRubrikNode = newRubrikNode.firstChild;
							rubrikNode.appendChild(newRubrikNode);
							resetView(response[3]);
							document.getElementById("tree"+response[1]).style.display = "block";
							window.location.href = "#anchl" + response[2];
							fireEvent('mouseover','anchl' + response[2]);
							break;
						case 'edit_rexists':
							var oldLinkNode = document.getElementById("rootNodeL"+response[2]);
							var rubrikNode = document.getElementById("tree"+response[1]);
							var newLinkNode = document.createElement("div");
							newLinkNode.innerHTML = response[4];
							newLinkNode = newLinkNode.firstChild;
							rubrikNode.appendChild(newLinkNode);
							oldLinkNode.parentNode.removeChild(oldLinkNode);
							resetView(response[3]);
							document.getElementById("tree"+response[1]).style.display = "block";
							window.location.href = "#anchl" + response[2];
							fireEvent('mouseover','anchl' + response[2]);
							break;
						case 'edit_rnew':
							var rubrikNode = document.getElementById("topRoot");
							var oldlinkNode = document.getElementById("rootNodeL"+response[2]);
							var newRubrikNode = document.createElement("div");
							newRubrikNode.innerHTML = response[4];
							newRubrikNode = newRubrikNode.firstChild;
							oldlinkNode.parentNode.removeChild(oldlinkNode);
							rubrikNode.appendChild(newRubrikNode);
							resetView(response[3]);
							document.getElementById("tree"+response[1]).style.display = "block";
							window.location.href = "#anchl" + response[2];
							fireEvent('mouseover','anchl' + response[2]);
							break;
						default:
							break;
					}
				}
				else
				{
					alert(request.responseText);
				}
     }
     else
     {
     	alert(error_TEXT);
     }
   }
}

function actionPageRUBRIK()
{
   if (request.readyState == 4)
   {
     if (request.status == 200)
     {
				if(request.responseText.indexOf("'|'") > 0)
				{
					if(ctx)
					{
						resetCtx();
					}
				
					if(ctxLEdit)
					{
						resetCtxLEdit();
					}
					
					var response = request.responseText.split("'|'");
					
					switch(response[0])
					{
						case 'edit_nm':
							var rubrikNode = document.getElementById("tree"+response[2]);
							rubrikNode.previousSibling.getElementsByTagName("a")[0].innerHTML = response[1];
							resetView(response[3]);
							window.location.href = "#anch" + response[2];
							break;
						case 'edit_m':
							var newRootNode;
							var rubrikNode = document.getElementById("tree"+response[2]);
							rubrikNode.previousSibling.getElementsByTagName("a")[0].innerHTML = response[1];
							
							if(response[3] == 0)
								newRootNode = document.getElementById("topRoot");
							else
							{
								newRootNode = document.getElementById("tree"+response[3]);
								newRootNode.style.display = "block";
							}
							
							newRootNode.insertBefore(rubrikNode.parentNode,newRootNode.firstChild);
							resetView(response[4]);
							window.location.href = "#anch" + response[2];
							break;
						default:
							break;
					}
				}
				else
				{
					alert(request.responseText);
				}
     }
     else
     {
     	alert(error_TEXT);
     }
   }
}

function actionPageSELECTION()
{
   	if (request.readyState == 4)
   	{
     		if (request.status == 200)
     		{
					if(request.responseText.indexOf("|") > 0)
					{
						var response = request.responseText.split("|");
				
						switch(response[0])
						{
							case 'public':
								//alert(response[1]);
								var getlinks = response[1].split(",");
								
								for(var t=0; t<getlinks.length; t++)
								{
									var getlinksItem = document.getElementById('rootNodeL' + getlinks[t]);
									getlinksItem.getElementsByTagName("a")[0].style.color = "#FF8000";
									var privateimg = getlinksItem.getElementsByTagName("img")[1];
									if(privateimg)
									{
										privateimg.parentNode.removeChild(privateimg);
									}
								}
								break;
							case 'private':
								var getlinks = response[1].split(",");
								
								for(var t=0; t<getlinks.length; t++)
								{
									var getlinksItem = document.getElementById('rootNodeL' + getlinks[t]);
									getlinksItem.getElementsByTagName("a")[0].style.color = "";
									
									var privateimg = getlinksItem.getElementsByTagName("img")[1];
									if(!privateimg)
									{
										privateimg = document.createElement("img");
										privateimg.src = "pics/schluessel.gif";
										privateimg.width = "13";
										privateimg.height = "13";
										getlinksItem.appendChild(privateimg);
									}
								}
								break;
							case 'delete':
								var getlinks = response[1].split(",");
								
								for(var t=0; t<getlinks.length; t++)
								{
									var getlinksItem = document.getElementById('rootNodeL' + getlinks[t]);
									getlinksItem.parentNode.removeChild(getlinksItem);	
								}
								
								var responsehtml = document.getElementById("responsetext");
								responsehtml.innerHTML = response[2];
								break;
							case 'move':
								var getlinks = response[1].split(",");
								
								for(var t=0; t<getlinks.length; t++)
								{
									var oldLinkNode = document.getElementById('rootNodeL' + getlinks[t]);
									var rubrikNode = document.getElementById("tree"+response[2]);
									rubrikNode.appendChild(oldLinkNode);
									rubrikNode.style.display = "block";
								}
								
								var responsehtml = document.getElementById("responsetext");
								responsehtml.innerHTML = response[3];
								deselectall();
								break;
							default:
								break;
						}
					}
					else
					{
						alert(request.responseText);
					}
				}
		}
}

function getLink(thisForm, mess1, mess2, isNew)
{
	var form_URL = thisForm.form_URL.value;
	var form_TEXT = thisForm.form_TEXT.value;
	var form_SELECTED;
	var form_CAT;
	var form_PUBLIC;
	var form_PRIO;
	
	if(form_URL.length == 0 || form_URL.match("[ \t]"))
	{
		alert(mess1);
		thisForm.form_URL.focus();
		thisForm.form_URL.select();
		return;
	}
	
	if(thisForm.radiobutton[0].checked == true)
	{
		form_SELECTED = "alt";
		form_CAT = thisForm.form_CAT.options[thisForm.form_CAT.selectedIndex].value;
	}
	else if(thisForm.radiobutton[1].checked == true)
	{
		var form_RUBRIK_NEU = thisForm.form_RUBRIK_NEU.value;
		
		if(form_RUBRIK_NEU.length > 0)
		{
			form_SELECTED = "neu";
			form_CAT = form_RUBRIK_NEU;
		}
		else
		{
			alert(mess2);
			return;
		}
	}
	else
	{
		alert(mess2);
		return;
	}
	
	if(thisForm.form_PUBLIC && (thisForm.form_PUBLIC.checked == true))
	{
		form_PUBLIC = "1";
	}
	else
	{
		form_PUBLIC = "0";
	}
	
	if(!isNaN(thisForm.form_PRIO.options[thisForm.form_PRIO.selectedIndex].value))
	{
		form_PRIO = thisForm.form_PRIO.options[thisForm.form_PRIO.selectedIndex].value;
	}
	else
	{
		form_PRIO = "1";
	}
	
	var poststr = "form_URL=" + encodeURIComponent(form_URL)
	            + "&form_TEXT=" + encodeURIComponent(form_TEXT)
	            + "&form_SELECTED=" + form_SELECTED
	            + "&form_CAT=" + encodeURIComponent(form_CAT)
	            + "&form_PUBLIC=" + form_PUBLIC
	            + "&form_PRIO=" + form_PRIO;
	
	if(isNew)
		sendPostRequest('ajax/new_link_request.php', poststr, actionPage);
	else
		sendPostRequest('ajax/edit_link_request.php', poststr + "&form_LINKID=" + thisForm.form_LINKID.value, actionPage);
}

function get_rubrik(thisForm, mess1, isNew)
{
	var form_NAME = thisForm.form_NAME.value;
	var form_CAT = thisForm.form_CAT.options[thisForm.form_CAT.selectedIndex].value;
	
	if (form_NAME.length == 0)
	{
		alert(mess1);
		thisForm.form_NAME.focus();
		thisForm.form_NAME.select();
		return;
	}
	
	var poststr = "form_NAME=" + encodeURIComponent(form_NAME)
	            + "&form_CAT=" + encodeURIComponent(form_CAT);
	
	if(isNew)
		sendPostRequest('ajax/new_rubrik_request.php', poststr, actionPageRUBRIK);
	else
		sendPostRequest('ajax/edit_rubrik_request.php', poststr + "&form_RUBRIKID=" + thisForm.form_RUBRIKID.value, actionPageRUBRIK);
}

function show_cats(thisForm)
{
	var t3 = document.getElementById('form_CAT_MOVE');
	
	if(t3)
			t3.parentNode.removeChild(t3);
			
	if(thisForm.aktion.options[thisForm.aktion.selectedIndex].value == "verschieben")
	{
		sendRequest2("ajax/rubrikselection.php", insertCats);
	}
	else if(thisForm.aktion.options[thisForm.aktion.selectedIndex].value == "prio")
	{
		sendRequest2("ajax/prioselection.php", insertCats);
	}
}

function get_links(thisForm,mess1,mess2)
{
	var elems = "";
	
	for(var i=0;i<thisForm.elements.length;i++)
	{
		if(thisForm.elements[i].checked && thisForm.elements[i].name != "sall")
			elems += thisForm.elements[i].value + ",";
	}
	
	if(elems.length > 0)
	{
		elems = elems.substr(0,elems.length - 1);
	}
	else
	{
		alert(mess2);
		return;
	}
		
	switch(thisForm.aktion.options[thisForm.aktion.selectedIndex].value)
	{
		case 'verschieben':
			var form_CAT = thisForm.form_CAT_MOVE.options[thisForm.form_CAT_MOVE.selectedIndex].value;
			
			if(!isNaN(form_CAT) && confirm(confirm_move_links))
				sendPostRequest('ajax/ajax.php?command=MOVE_LINKS', "rubrik=" + form_CAT + "&links=" + elems, actionPageSELECTION);
			break;
		case 'public':
			sendPostRequest('ajax/ajax.php?command=MAKE_PUBLIC', "links=" + elems, actionPageSELECTION);
			break;
		case 'not_public':
			sendPostRequest('ajax/ajax.php?command=MAKE_PRIVATE', "links=" + elems, actionPageSELECTION);
			break;
		case 'prio':
			var form_PRIO = thisForm.form_CAT_MOVE.options[thisForm.form_CAT_MOVE.selectedIndex].value;
			
			if(!isNaN(form_PRIO))
				sendPostRequest('ajax/ajax.php?command=PRIO', "prio=" + form_PRIO + "&links=" + elems, actionPageSELECTION);
			break;
		case 'loeschen':
			if(confirm(confirm_del_links))
				sendPostRequest('ajax/ajax.php?command=DELETE_LINKS', "links=" + elems, actionPageSELECTION);
			break;
		default:
			alert(mess1);
			break;
	}
}

function cancel()
{
	if(ctx)
	{
		resetCtx();
	}
	if(ctxLEdit)
	{
		resetCtxLEdit();
	}
	
	var innercontent = document.getElementById("innercontent");
	var insertcontent = document.getElementById("insertcontent");
	insertcontent.parentNode.removeChild(insertcontent);
	innercontent.style.display = "block";
}

function addLink(rubrikId)
{
	sendRequest2("ajax/new_link_form.php?RUBRIK="+rubrikId, insertPage);
}

function editLink(linkId)
{
	sendRequest2("ajax/edit_link_form.php?LINKID="+linkId, insertPage);
}

function deleteLink(linkId)
{
	if(confirm(confirm_del_link))
	{
		sendRequest("ajax/ajax.php?command=DELETE_LINK&LINKID="+linkId);
	}
	else if(ctxLEdit)
	{
		resetCtxLEdit();
	}
}

function editRubrik(rubrikId)
{
	sendRequest2("ajax/edit_rubrik_form.php?RUBRIKID="+rubrikId, insertPage);
}

function deleteRubrik(rubrikId)
{
	if(confirm(confirm_del_rubrik))
	{
		sendRequest("ajax/ajax.php?command=DELETE_RUBRIK&RUBRIKID="+rubrikId);
	}
	else if(ctx)
	{
		resetCtx();
	}
}

function openLinks(rubrikId)
{
	window.open("login_open_url.php?RUBRIK="+rubrikId,"_blank");
}
