/**
 * @author germaine.stolper
 */


/*
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 * Die Funktionen "updateHiddenAmountValues()" und "getAmountForFolder", sowie
 * "addElementToFolder" m�ssen in der Funktionalit�t an die DB angepasst werden.
 *
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */

function hightlightElemtenToDropon(element, dropon) {
	//console.log("element: %s >>> dropon %s", element, dropon);
	new Effect.Highlight(dropon.id, {startcolor:'#AB0000', endcolor:'#EDEAE1', duration: 0.2});
}




function addElementToFolder(element, dropon) {

	var droppedOnFolder = dropon.id;
	var folderNumber = dropon.id.toString().substring(10, dropon.id.length);

	//Auslesen der im hiddenDrop vorhandenen Anzahl der Elemente
	var elementsInFolder = document.getElementById('hiddenItemsValue'+folderNumber);
  	var newElementsAmount = (elementsInFolder.value -1)+ 2;

  	//Setzen des neuen Wertes
	elementsInFolder.value = newElementsAmount;

	updateHiddenAmountValues('hiddenItemsValue'+folderNumber, newElementsAmount, folderNumber);

}


function updateHiddenAmountValues(hiddenField, newElementsAmount, folderNumber){
	var topLevelDiv = document.getElementById(hiddenField);

	var prevInput;
	var input = document.createElement("input");
        input.id=hiddenField;
        input.name=hiddenField;
        input.type="hidden";
        input.value=newElementsAmount;

	//Ersetzen des alten Input-Feldes gegen das neue
	for (m = 0; m < topLevelDiv.childNodes.length; m++) {
		if (topLevelDiv.childNodes[m].nodeName.toLowerCase()=="input") {
			prevInput = topLevelDiv.childNodes[m];
			topLevelDiv.replaceChild(input, prevInput)
		}
	}
	//Aufrufen der Anzeigeaktualisierung
	getAmountForFolder(hiddenField, 'spanId'+folderNumber, folderNumber)

}


function getAmountForFolder(folder, spanid, folderNumber) {

	//Ausgeben des neuen Anzahlwertes
	var amountInFolder = document.getElementById(folder);
	var elementToAppendTo = document.getElementById(spanid);

	for (k = 0; k < elementToAppendTo.childNodes.length; k++) {
			try {
				var removeEl = elementToAppendTo.childNodes[k];
				elementToAppendTo.removeChild(removeEl);
			} catch(y) {
				alert(y);
			}
	}

	//Ausgeben der Elemente im Ordner
	var n1 = document.createElement('span');
	n1.setAttribute('id', spanid+folderNumber);
  n1.setAttribute('class', 'bold');
  n1.setAttribute('className', 'bold');
	var txt1=document.createTextNode('(' + amountInFolder.value + ')');
	n1.appendChild(txt1);
	elementToAppendTo.appendChild(n1);

}






//Beispiel f�r die Funktion mit �bergebenen Ausf�hrungswert:
/*
 * function removeElementFromListBool(element, dropon, topDiv, topDivFolders, boolValue) {
 *
 * var actualRemove = boolValue;
 *
 * if (boolValue == 'true') {
 * 	removeElementFromList(element, dropon, topDiv, topDivFolders);
 * }
 *
 */



function removeElementFromList(element, dropon, topDiv, topDivFolders) {
  var olddiv = document.getElementById(element.id);
  var superUl;
  var folder = false;
  var count;
  var remTrenner = false;
  var trennerEl;
  var idFrom = element.id;

  //Wenn bereits "sortiert" wurde, muss die >> derzeitige >> Parent-Id ausgelesen werden,
  //deshalb an dieser Stelle das Auslesen der ParentNode
  var actualParentNode = olddiv.parentNode;

  //Wenn das Element, das enfernt werden soll, ein Ordner ist, muss noch eine "Ebene"
  //h�her gegangen werden, um das ganze Span- und Listenelement entfernen zu k�nnen
  if (olddiv.id.substring(0,10)=='droptarget') {
  	count = olddiv.id.toString().substring(10, olddiv.id.length);
  	/*
  	var newOlddiv = olddiv.parentNode;
  	actualParentNode = newOlddiv.parentNode;
  	olddiv = newOlddiv;
  	*/
	  //Ausserdem muss geguckt werden, ob sich �ber diesem Ordner ein "Trenner-li" befindet,
	  //das dann auch entfernt werden muss
	  if (document.getElementById('cbtrenner'+count)) {
	  	trennerEl = document.getElementById('cbtrenner'+count);
	  	remTrenner = true;
	  }
  }

/*
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * WICHTIG
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */

  	//Das was an dieser Stelle mit "removeChild" vordefiniert ist, muss dann �ber die
  	//Datenbankanbindung passieren >> speichern, welches Element von welchem Typ wo als
  	//Child hinterlegt ist und die jeweiligen Elemente �ber Abfragen anzeigen

   actualParentNode.removeChild(olddiv);

   if (remTrenner == true) {
   		actualParentNode.removeChild(trennerEl);
   }


}


// Neue Funktion, die �ber das L�schen der Klasse mainDrop aus einem Ordner ohne Unterordnern einen Ordner mit Unterordnern macht
function removeClassFromElement(element, dropon) {
	var droppedOnFolder = dropon.id;
	$(droppedOnFolder).removeClassName('mainDrop');
}





