var fjpsuche = {
	
	// Temporärer Speicherplatz bzw Liste der ausgewählten Elemente
	clickedItems: '',
	
	// Default ist withHighlight
	withHighlight: true,
				
	
	highlightThis: function(doId, doHighlight) {
		adId = "id_" + doId;	// vorangestellt zur Minimierung von Validierungsfehler und Mantis 17701
		var thisId = document.getElementById(adId);
		
		if (thisId) {
			if(doHighlight) {
				thisId.style.backgroundColor = "#D2E3F3";
			} else {
				thisId.style.backgroundColor = "#FFF";
			}
		}
	},
	
	checkItems: function(elemId, divId, classname, withHighlight) {	
		if(withHighlight != null) { fjpsuche.withHighlight = withHighlight; }
		//Element holen und highlighten 
		var elem = document.getElementById(elemId);
		if(fjpsuche.withHighlight) { 
			fjpsuche.highlightThis(elem.id,elem.checked);
		}
		
		//wenn Element 'Alle' ist
		if(elem.id == "Alle") {
			if (fjpsuche.clickedItems == '') {
				// Alle ungecheckt, aber es gibt keine andere ausgewählte bzw gespeicherten Elemente
				elem.checked = true;
				if(fjpsuche.withHighlight) { 
					fjpsuche.highlightThis(elem.id,elem.checked);
				}
			} else {
				//sonst alle anderen Elemente unchecken
				var checkboxes = (fjpsuche.clickedItems).split('&');
				for(var i=0; i < checkboxes.length; i++) {
					if (checkboxes[i] != ''){
						var uncheckElem = document.getElementById(checkboxes[i]);
						if (uncheckElem.id != null) {
							uncheckElem.checked = false;							
							if(fjpsuche.withHighlight) { 
								fjpsuche.highlightThis(uncheckElem.id,uncheckElem.checked);
							}
						}
					}
				}
			}
		} else {
			// wenn Element nicht 'Alle' ist
			var all = document.getElementById("Alle");
			var pos = (fjpsuche.clickedItems).indexOf(elem.id);
			if (pos == -1 && elem.checked) {
				// ausgewählte Elemente nicht gefunden bzw noch nicht gespeichert
			 	fjpsuche.clickedItems = (fjpsuche.clickedItems).concat(elem.id+'&');
			} else if (pos > 0 && !elem.checked) {
			 	// Element wurde entfernt, aus der Liste der gespeicherten Elemente
				fjpsuche.clickedItems = ((fjpsuche.clickedItems).substring(0,pos-1)).concat((fjpsuche.clickedItems).substring(pos+((elem.id).length)));
			} else if (pos == 0 && !elem.checked) {
				fjpsuche.clickedItems = (fjpsuche.clickedItems).substr(pos+((elem.id).length)+1);
			} 
			if (fjpsuche.clickedItems == '') {
				all.checked = true;
			} else {
				all.checked = false;
			}
			if(fjpsuche.withHighlight) { 
				fjpsuche.highlightThis(all.id,all.checked);
			}
		}		
	},
	
	checkLabelItems: function(elemId, divId, classname) {
		//Checkbox checken/unchecken wenn auf Label geklickt wird	
		var elem = document.getElementById(elemId);
		if(elem.checked) {
			elem.checked = false;
		} else {
			elem.checked = true;
		}
		fjpsuche.checkItems(elemId, divId, classname);
	},
	
	initClickedItems: function(formName, elemName, withHighlight) {	
		
		if(withHighlight != null) { fjpsuche.withHighlight = withHighlight; }
		fjpsuche.clickedItems = '';
		
		var tempList = document.forms[formName].elements[elemName];
		if (tempList != null) {
			for (i=1; i<tempList.length; i++){
				if(tempList[i].checked){
					fjpsuche.clickedItems = (fjpsuche.clickedItems).concat(tempList[i].id+'&');
					fjpsuche.checkItems(tempList[i].id,null,null,withHighlight);
				}
			}
		}
	},
	/* *************************************************************
	 * Funktion setzt den angeklickten Link auf display = none
	 * und ersetzt den Link mit seinem eigenen Inhalt (Kindknoten)
	 * Somit ist der Link kein zweites Mal anklickbar
	 */
	toggleLink: function(aLink){
		var lnkName = aLink.getAttribute("name");
		var lnkAnz = 0;
		var elClone = null;
		var childNode = null;
		var doCount = 0;
		
			if(lnkName != null && lnkName.length > 0){
				var lnkArray = document.getElementsByName(lnkName);
				lnkAnz = lnkArray.length;
			}
		
		do {
			//alert("doCount: "+doCount);
			aLink = (lnkAnz == 0) ? aLink : lnkArray[doCount]; //Linkknoten neu setzen
			childNode = aLink.firstChild;
			
			while (childNode != null){
				if( childNode.nodeType == 3){ //Textknoten
					var text = new String(childNode.nodeValue);
					var rExp = new RegExp("\\w+");

					if (!rExp.test(text)){ //leeren Textknoten bzw. Textknoten ohne Buchstaben/Ziffern entfernen
						aLink.removeChild(childNode);
						childNode = aLink.firstChild;
						continue;
					}
					else { //Textknoten
						elClone = childNode.cloneNode(true); // Textknoten klonen
						break;
					}
				}
				else if(childNode.nodeType == 1){ //Elementknoten
					elClone = childNode.cloneNode(true); //Elementknoten klonen
					break;
				}
				childNode = childNode.nextSibling;
			}
			
			/* Neues Div-Element erzeugen, welches den Clone aufnimmt */
			var eDiv = document.createElement("div"); 
			eDiv.setAttribute("name", "clone_"+lnkName);
			eDiv.setAttribute("style", "display:inline");
			eDiv.appendChild(elClone); // Textknoten in div-Element haengen
			aLink.parentNode.appendChild(eDiv); //neues Div-Element in Parentnode einhaengen
			aLink.style.display = 'none'; //Link ausblenden			
			
			doCount++; //hochzaehlen
		} while (doCount < lnkAnz);
	},
	
	sendFormByLink: function(aLink,params){
		fjpsuche.toggleLink(aLink);

		var allParams= params.replace(/outputtype=ajax_sel/g,"outputtype=ajax").split('&');
		var aForm = document.forms['formlink'];
		for(i=0;i<allParams.length;i++){
			aParam = allParams[i].split('=');
			if(aParam.length == 2){
				var inputField = document.createElement('input');
				inputField.setAttribute('type','hidden');
				inputField.setAttribute('name',aParam[0]);
				inputField.setAttribute('value',aParam[1]);
				aForm.appendChild(inputField);
			}
		}
		var hrefStr=''+aLink.href;
		aForm.action=hrefStr;
		if(hrefStr.indexOf("?") >0){
			aForm.action=hrefStr.substring(0,hrefStr.indexOf("?"));
		}	
		aLink.href='javascript:fjpsuche.submitFormByLink();';
		return false;
	},
	
	submitFormByLink: function(){
		document.forms['formlink'].submit();
	}
}

