/* 
- Die onloads werden in der DOMAssLoad.js angestossen.
- Dort wird geprueft, ob es die Funktion gibt (entweder auf der Seite, oder in der functions.js)
- Wenn es die function dort gibt muss in der Funktion geprueft werden, ob sie auf der Seite ausgefuehrt werden soll
(z.B. bei der reiterInit wird geprueft, ob es auf der Seite die "descs" gibt.)
*/
var extendBoxValues = null;
var ie = !!window.ActiveX;

var XPLAIN = window.XPLAIN || {};

XPLAIN.core = {
/**
	* Bei einem Klick in ein input defaultValue loeschen
	* @param (Object) = Das input-Object, welches manipuliert werden soll
	*/
	onFocusCheckEntry : function() {
		cont = this.defaultValue;
		if(this.value == cont) {
			this.value = "";
		}		
	},
	
	/**
	* Beim blur, wenn keine Eingabe erfolgte den defaultValue wieder schreiben
	* @param (Object) = Das input-Object, welches manipuliert werden soll
	*/
	onBlurCheckEntry : function() {
		cont = this.defaultValue;
		if(this.value == "") {
			this.value = cont;
		}	
	},

	/** 
	* Geht alle Links den Dokument durch und sucht nach "_blank". Dann ergaenzt sie einen eventuell bereits 
	* vorhandenen Title-Tag um den "neues Fenster"-Text. 
	*/
	changeTitleAndTarget : function() {
		if(!document.getElementsByTagName) return;
		var links = document.getElementsByTagName("a");
		for(i=0; i<links.length; i++) {
			if(links[i].target == "_blank") {
				origLink = links[i].href;
				origTitle = links[i].title;
				if(origTitle != "Externer Link [neues Fenster]") {
					links[i].title = origTitle + " Externer Link [neues Fenster]";
				}
				//links[i].onclick = XPLAIN.core.openWindow;
			}
		}
	},
	
	/**
	* Öffnet ein neues Browserfenster. Ein eventuell schon vorhandenes Fenster mit dem selben Namen wird vorher geschlossen
	* @param [0] - (String) = Name des zu oeffnenden Fensters
	* @param [1] - (String) = URL, die in dem neuen Fenster geladen werden soll
	* @param [2] - (String (optional)) = gewuenschte Breite des Popups
	* @param [3] - (String (optional)) = gewuenschte Hoehe des Popups
	*/
	openWindow : function(e, params) {
		url = params[0];
		windowName = (params[1]) ? params[1] : "myWin";
		width = (params[2]) ? params[2] : "400";
		height = (params[3]) ? params[3] : "400";
		options = "width="+width+",height="+height+",toolbar=no,locationbar=no,directories=no,scrollbars=auto,status=no,menubar=no,resizable=yes";
		win = eval("window."+windowName);
		if(win) {
			if(!win.closed) win.close();
		}
		eval(windowName +" = window.open(url, windowName, options)");		
	}
}

function noTextNodes(obj){
	var temp = new Array();
	var j = 0;
	for(i=0; i < obj.length; i++) {
		if(obj[i].nodeName != "#text") {
			temp[j] = obj[i];
			j++;
		}
	}
	return temp;
}

function onFocusCheckEntry(which, cont) {
	if(which.nodeName == "INPUT" && which.value == cont) {
		which.value = "";
		if(which.id == "password") {
			preLabel = (ie) ? which.previousSibling.previousSibling : which.previousSibling.previousSibling;
			preLabel.style.zIndex = 3;
		}
	}
}

function onBlurCheckEntry(which, cont) {
	if(which.nodeName == "INPUT" && which.value == "") {
		which.value = cont;
		if(which.id == "password") {
			preLabel = (ie) ? which.previousSibling.previousSibling : which.previousSibling.previousSibling;
			preLabel.style.zIndex = 3;
		}
	}
}

/*	---
	--- Reitersteuerung ---
	---
*/
function prepareReiter() {
	if (!document.getElementById) return false;
	if (document.getElementById("descs")) {
		var descs = $("descs");
		var sliders = noTextNodes(descs.getElementsByTagName("ul")[0].childNodes);
		var oneDescChilds = noTextNodes(document.getElementById("oneDesc").childNodes);
		//alle Knoten, die direkte Kinder vom innerDesc sind, damit keine div/ids aus den ReiterContainern mitgezaehlt werden.
		knoten = noTextNodes($("innerDesc").childNodes);
		for(i=0; i<knoten.length; i++) {
			$("innerDesc").getElementsByAttribute("id")[i].isExtend = false;
			if($("innerDesc").getElementsByTagName("h2")[i]) {
				$("innerDesc").getElementsByTagName("h2")[i].className= "noWebView";
			}
			if($("innerDesc").getElementsByTagName("legend")[i]) {
				$("innerDesc").getElementsByTagName("legend")[i].className= "inv";
			}
		}
		
		//alle knoten ausblenden, die im HTML kein class="webView" stehen haben
		for(i=0; i<knoten.length; i++) {
			if(knoten[i].className != "webView") {
				knoten[i].className= "noWebView";
			}
				//alert(document.getElementById("innerDesc").getElementsByTagName("div"));
		}
		
		for(k=0; k<document.getElementById("innerDesc").getElementsByTagName("div").length; k++) {
			//document.getElementById("innerDesc").getElementsByTagName("div").className = "noWebView";
		}
		
		
		for(var i = 0; i < sliders.length; i++) {
			firstA =  sliders[i].getElementsByTagName("a")[0];
			firstA.onclick = showOneDesc;
			firstA.href = "javascript:void(0);"
		}
		for(var i = 0; i < sliders.length; i++) {
			if(sliders[i].className.indexOf("chosen") != -1) {
				hideOtherDesc(sliders[i]);
			}
		}
	}
}
function extendBox(thisObj, objId) {
	var valueText = extendBoxValues[0];
	//console.debug(extendBoxValues)
	var obj = extendBoxValues[1];
	//console.debug(obj.getElementsByClassName("webView").isExtend);
	if(!obj.hasClass("cutterBlock")) {
		obj.addClass("cutterBlock");
		thisObj.firstChild.nodeValue = valueText[0];
		obj.isExtend = false;
	} else {
		obj.removeClass("cutterBlock");
		thisObj.firstChild.nodeValue = valueText[1];
		obj.isExtend = true;
	}
}

var aktDesc = null;

function hideOtherDesc(hasObj){
	var descs = document.getElementById("descs");
	var sliders = noTextNodes(descs.getElementsByTagName("ul")[0].childNodes);
	var oneDescChilds =  noTextNodes(document.getElementById("innerDesc").childNodes);
	for(i=0; i<sliders.length; i++) {
		oneDescChilds[i].className = oneDescChilds[i].className.replace(/noWebView/, "");
		oneDescChilds[i].className = oneDescChilds[i].className.replace(/webView/, "");
		if(sliders[i] == hasObj){
			sliders[i].className = sliders[i].className + ((sliders[i].className.indexOf("chosen") == -1) ? " chosen" : "");
			oneDescChilds[i].className = oneDescChilds[i].className + " webView";
			//alert(oneDescChilds[i].isExtend);
		} else {
			sliders[i].className = sliders[i].className.replace(/chosen/, "");
			oneDescChilds[i].className = oneDescChilds[i].className + " noWebView"
		}
		
	}

	
}
function showOneDesc(e, test){
	if(test != null) {
		hideOtherDesc(test.parentNode);
	} else {
		hideOtherDesc(this.parentNode);
	}
}

/*	---
	--- FAQ ein/ausklappen ---
	---
*/
openDD = "";
function resetSmallFaq() {
	if(!document.getElementsByClassName("smallFAQ")) return false;
	
	for(var j=0; j<document.getElementsByClassName("smallFAQ").length; j++){
		document.getElementsByClassName("smallFAQ")[j].getElementsByTagName("dl")[0].className = "hasJS";
	}
	
	//Den dd und dt eindeutige IDs zuordnen
	varAllDts = allDts();
	varAllDds = allDds();
	for(i=0; i<varAllDts.length; i++) {
		varAllDts[i].id = "dt" + (i);
	}
	for(i=0; i<varAllDds.length; i++) {
		varAllDds[i].id = "dd" + (i);
	}

	openCloseAlldd();
	
	//onclick an die <a> binden
	anzahlAllDt = varAllDts.length;
	for(j=0; j<anzahlAllDt; j++) {
		dtId = $("dt" + (j));
		oldContent = dtId.innerHTML;
		dtId.innerHTML = "";
		dtId.create("a", { href : "javascript:void(0);" }, true, oldContent);
		dtId.onclick = toggleFaq; //events kann man fuer den IE wohl nicht per DomAss einfuegen 
	}
}

//Alle dds einklappen
function openCloseAlldd(openClose) {
	varAllDts = allDts();
	varAllDds = allDds();
	for(i=0; i<varAllDts.length; i++) {
		varAllDts[i].className = "";
	}

	if(openClose == "open") {
		whichClass = "";
	} else {
		whichClass = "inv";
	}

	for(i=0; i<varAllDds.length; i++) {
		varAllDds[i].className = whichClass;
	}
	
}

function toggleFaq() {
	//dts = document.getElementsByClassName("smallFAQ").getElementsByTagName("dt");
	varAllDts = allDts();
	//alle DD verstecken
	openCloseAlldd();
	if(openDD != "") {
		dtId = $("dt" + openDD);
		oldContent = dtId.innerHTML;
		dtId.innerHTML = "";
		dtId.create("a", { href : "javascript:void(0);" }, true, oldContent);
		dtId.onclick = toggleFaq; //events kann man fuer den IE wohl nicht per DomAss einfuegen 
	}
	
	this.className = "activeOne";
	ddLength = this.id.length;
	ddNumber = this.id.slice(2, ddLength);
	
	dtA = $("dt" + ddNumber).getElementsByTagName("a")[0];
	oldContent = dtA.innerHTML;
	varAllDts[ddNumber].innerHTML = oldContent;
	varAllDts[ddNumber].onclick = "";
	//DD anzeigen
	$("dd" + ddNumber).className = "activeOne";
	openDD = ddNumber; 
}

//ALLE dts hintereinander in EINEM Array speichern und returnen
function allDts() {
	anzahlFAQBlocks = document.getElementsByClassName("smallFAQ").length;
	dts = new Array();
	for(a=0; a<anzahlFAQBlocks; a++) {
		dts[a] = document.getElementsByClassName("smallFAQ")[a].getElementsByTagName("dt");
	}
	varAllDts = new Array();
	for(x=0;x<dts.length; x++) {
		for(y=0;y<dts[x].length; y++) {
			//console.debug(dts[x][y]);
			varAllDts.push(dts[x][y]);
		}
	}
	return varAllDts;	
}

//ALLE dss hintereinander in EINEM Array speichern und returnen
function allDds() {
	anzahlFAQBlocks = document.getElementsByClassName("smallFAQ").length;
	dds = new Array();
	for(a=0; a<anzahlFAQBlocks; a++) {
		dds[a] = document.getElementsByClassName("smallFAQ")[a].getElementsByTagName("dd");
	}
	varAllDds = new Array();
	for(x=0;x<dds.length; x++) {
		for(y=0;y<dds[x].length; y++) {
			//console.debug(dts[x][y]);
			varAllDds.push(dds[x][y]);
		}
	}
	return varAllDds;	
}


/*	---
	--- Glossar Suchbegriffe einschraenken ---
	---
*/
function timeout(){
	return true;
}
function searchLinkList() {
	var thisObj = $("glossarShrink");
	for(var i = 0; i<linkList.length; i++){
		var childNodeValue = (linkList[i].firstChild.nodeName == "A") ? linkList[i].firstChild.firstChild.nodeValue.toLowerCase() :  linkList[i].getElementsByTagName("span")[0].firstChild.nodeValue.toLowerCase();
		var result = (thisObj.value == "") ? true : (childNodeValue.indexOf(thisObj.value.toLowerCase()) != -1);
		try{
			if(result) {
				linkList[i].removeClass("inv");
			} else {
				linkList[i].addClass("inv");
			}
		}catch(e){	
			if(result) {
				linkList[i].className = (linkList[i].className.indexOf("inv") != -1) ? linkList[i].className.replace(/inv/) : linkList[i].className;
			} else {
				linkList[i].className = (linkList[i].className.indexOf("inv") == -1) ? linkList[i].className + " inv" : linkList[i].className;
			}
		}
		if(result) {
			//glossarList.innerHTML = "<li>" + linkList[i].innerHTML + "</li>";
			//console.debug(linkList[i].className, result)
		};
		//console.debug(childNodeValue, childNodeValue.indexOf(thisObj.value), result);
	}
}

/* isAppleWebKit or Opera */
function submitButFix() {
	// String found if this is a AppleWebKit based product
	var kitName = "applewebkit/";
	var tempStr = navigator.userAgent.toLowerCase();
	var pos = tempStr.indexOf(kitName);
	var isAppleWebkit = (pos != -1);
	// String found if this is Opera
	var kitName = "opera";
	var pos = tempStr.indexOf(kitName);
	var isOpera = (pos != -1);
	if(isAppleWebkit || isOpera) {
		// Grab the version
		var kitVersion = tempStr.substring(pos + kitName.length,tempStr.length);
		kitVersion = kitVersion.substring(0,kitVersion.indexOf(" "));
		//document.getElementsByClassName('submitBut')[0].getElementsByTagName('span')[0].style.top = "0px;";
		document.getElementsByClassName('submitBut')[0].getElementsByTagName('span')[0].className = "butFix";
	}
}

function visibleOnlineBankingButton(){
	if (document.getElementById("bankPort")) {
		document.getElementById("onlineBanking").className = "inv";
	}
}


/* 
	--- --- --- --- --- ---
		EVENTS und Inits
	--- --- --- --- --- ---
*/
function initReiter(){
	if($("descs") && $("descs").className.indexOf("withJS") != -1) {
		extendBoxValues = new Array(new Array('Weiterlesen', 'Schliessen'), $("innerDesc"), 77);
		prepareReiter();
		//Parameter aus der URL auslesen und nach einem "#" suchen - dies ist der Reiter, der angezeigt werden soll. 
		params = window.location.hash;
		if(params.match( /#desc/ )) {
			var descs = document.getElementById("descs");
			aktivierDesc = noTextNodes(descs.getElementsByTagName("ul")[0].childNodes)
			which = params.substr(params.length-1, params.length);
			showOneDesc(null, aktivierDesc[which].firstChild);
			window.scrollTo(0,0);
		}
	}
}

function initGlossarList(){
	try{
		var glossarListOuter = document.getElementsByClassName("glossarList"); //.getElementsByClassName("withLinks")[0].getElementsByTagName("li");
		glossarList = glossarListOuter[0].getElementsByTagName("ul")[0];
		var parentGlossarList = glossarList.parentNode;
		linkList = glossarList.getElementsByTagName("li");
		var newDiv = document.createElement("div");
		newDiv.setAttribute("id", "shrinkList");
		parentGlossarList.insertBefore(newDiv, glossarList);
		var newLabel = document.createElement("label");
		newDiv.appendChild(newLabel);
		newLabel.appendChild(document.createTextNode("Begriffe einschraenken "));
		var newInput = document.createElement("input");
		newInput.setAttribute("id", "glossarShrink");
		newInput.setAttribute("type", "text");
		newInput.onkeyup = searchLinkList;
		newLabel.appendChild(newInput);
		var newButton = document.createElement("button");
		newButton.className = "submitBut w130";
		newButton.innerHTML = '<div>Einschraenken</div><span></span>'
		newDiv.appendChild(newButton);
		return true;
	} catch(e){
		return false;
	}
}



function searchInputEvent() {
	if($("searchInp")) {
		$("searchInp").addEvent("focus", XPLAIN.core.onFocusCheckEntry);
		$("searchInp").addEvent("blur", XPLAIN.core.onBlurCheckEntry);
	}
	if($("newsletter")) {
		$("newsletter").addEvent("focus", XPLAIN.core.onFocusCheckEntry);
		$("newsletter").addEvent("blur", XPLAIN.core.onBlurCheckEntry);
	}
	
	
}

function open_attrax(path){
	self.name = "index";
	var uebersicht;
	var fondsfenster;
	uebersicht = window.open( path ,"netbankFonds","width=950,height=165,left=0,top=0,scrollbars=yes,toolbar=no,menubar=no");
	fondsfenster = window.open("https://online.union-investment.de/netbank/login.html","fonds","width=950,height=690,left=0,top=195,scrollbars=yes,toolbar=no,menubar=no,resizable=1,location=1");
	fondsfenster.focus();
};

function open_intelliForm(path) {
	var intelliWindow;
	intelliWindow = window.open( path ,"newIntelliWindow","width=950,height=600,left=0,top=0,scrollbars=yes,toolbar=yes,menubar=yes,resizable=1,location=1");
}

function onLoadEvent(){
	//resetSmallFaq();
	submitButFix();
	visibleOnlineBankingButton();
}


