blnOp = false;
blnIe = false;
blnNs = false;

var $j = jQuery.noConflict();

function checkBrowser()
{
	if (window.opera)
	{
		blnOp = true;
	}
	else if (document.layers) 
	{
		blnNs = true;
	}
	else if (document.all)
	{
		blnIe = true;
	}
}
checkBrowser();
//--------------------------------
function open_window(url, name, breite, hoehe, center, scrollbar) {
	var features = 'location=no,menubar=no,resizable=yes,status=no,toolbar=no';
	if (scrollbar == 0) {
		features += ',scrollbars=no'
	} else {
		features += ',scrollbars=yes'
	}
	if (center == 1) {
		var left = (screen.width) ? (screen.width - breite) / 2 : 100;
		var top = (screen.height) ? (screen.height - hoehe) / 2 : 100;
		features += ',left=' + left + ',top=' + top;
	}
	features += ',width=' + breite + ',height=' + hoehe;
	window.open(url, name, features);
}
//--------------------------------
function deubaPopUp(stUrl, stName) {
	open_window(stUrl, stName, 650, 700, 1, 1);
}
//--------------------------------
function changeProductpage(pageid) {
	if (pageid != '') {
		location.href = 'showpage.asp?pageid=' + pageid;
	}
}
//--------------------------------
function changeChart(index, time) {
	document.images['chart'].src = chartLinks[index][time];
	if (index != 'no_index')
	{
		document.getElementById(actual_index).className = '';
		document.getElementById(index).className = 'aktiv';
	}
	document.getElementById(actual_time).className = '';
	document.getElementById(time).className = 'aktiv';
	actual_index = index;
	actual_time = time;
}
//--------------------------------
function changeProductChart(index, time) {
	// unterbinden, dass beim time-wechsel, der index ausgewertet wird
	if (index != actual_index)
	{
		switch(index) 
		{
			case 'product':
				document.getElementById('underlying').className = 'aktiv';
				if (actual_index == 'underlying')
				{
					document.getElementById('product').className = 'aktiv';
					actual_index = 'both';
				}
				else
				{
					document.getElementById('product').className = '';
					actual_index = 'underlying';
				}
				break;
				
			case 'underlying':
				document.getElementById('product').className = 'aktiv';
				if (actual_index == 'product')
				{
					document.getElementById('underlying').className = 'aktiv';
					actual_index = 'both';
				}
				else
				{
					document.getElementById('underlying').className = '';
					actual_index = 'product';
				}
				break;
			default:
				break;
		}
	}
	else if (time == actual_time)
	{
		if (index == 'product')
		{
			actual_index = 'underlying';
		}
		else if(index == 'underlying')
		{
			actual_index = 'product';
			
		}
		document.getElementById(index).className = '';
		document.getElementById(actual_index).className = 'aktiv';
	}
	document.getElementById(actual_time).className = '';
	document.getElementById(time).className = 'emphased';
	document.getElementById(actual_time+'Perf').className = '';
	document.getElementById(time+'Perf').className = 'emphased';
	actual_time = time;
	document.images['chart'].src = chartLinks[actual_index][time];
}
//--------------------------------
function changeIRLayer(currency) {
	document.getElementById(actual_currency + '_link').className = '';
	document.getElementById(currency + '_link').className = 'aktiv';
	document.getElementById(actual_currency + '_layer').style.visibility = 'hidden';
	document.getElementById(currency + '_layer').style.visibility = 'visible';
	actual_currency = currency;
}
//--------------------------------
function setServerDate() {
	var actualClientTime = new Date();
	var elapsedTime = actualClientTime.getTime()-clientTime.getTime();
	actualServerTime = serverTime.getTime()+elapsedTime;
	setTimeout('setServerDate()',1000);
}
//--------------------------------
function clock(city,zone,showAmOrPm) {
	var digital = new Date(actualServerTime);
	var hours 	= digital.getHours() + parseInt(zone) + parseInt(sZone);
	var minutes = digital.getMinutes();
	var seconds = digital.getSeconds();
	var amOrPm 	= "AM";
	if (minutes<0) {
		minutes = 60 + minutes;
		hours	= hours -1;
	}
	if (minutes>=60) {
		minutes = minutes-60;
		hour	= hours+1;
	}
	if (minutes <= 9) minutes = "0" + minutes;
	
	if (hours >= 24) hours = hours-24;
	if (hours < 0) hours = hours+24;
	
	if (showAmOrPm) {
		if (hours == 0) hours = 12;
		if (hours >= 12) amOrPm = " PM"; else amOrPm = " AM";
		if (hours > 12) hours	= hours-12;
	} else {
		if (hours <= 9) hours = "0" + hours;
		amOrPm = "";
	}
	
	if (seconds <= 9) seconds = "0" + seconds;
	
	dispTime = hours + ":" + minutes + amOrPm ;
	document.getElementById(city).innerHTML = dispTime;
	setTimeout("clock('" + city + "'," + zone + "," + showAmOrPm + ")",1000);
}
//--------------------------------
function deleteInput(ref)
{
	if (blnClicked == false)
	{
		ref.value = '';
		blnClicked = true;
	}
}
//--------------------------------
function checkPassword(inputField)
{	
	//Im Quelltext muss arrKonfig als Array definiert werden mit Name der Elemente (Sicher, Mittel, Unsicher, Unbekannt)
	
	var testString = eval("document.frmProfile." + inputField + ".value");
	//Mindestlänge 6 Zeichen; Kleinbuchstaben, Großbuchstaben, Zahlen, Sonderzeichen
	var regExSicher = /^.*(?=.{6,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!§$%&?*+~#@<>]).*$/; 
	//Mindestlänge 6 Zeichen; Buchstaben und Zahlen
	var regExMediumSicher = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z a-z]).*$/;
	var i;
	
	for (i=0; i< arrKonfig.length;i++)
	{
		document.getElementById(arrKonfig[i]).style.display = "none";
	}
	
	// Wenn Passwort sicher ist
	if (regExSicher.test(testString))
	{
		document.getElementById(arrKonfig[0]).style.display = "inline";
	}
	else
	{
		//Wenn Passwort mittelsicher ist 
		if (regExMediumSicher.test(testString))
		{
			document.getElementById(arrKonfig[1]).style.display = "inline";
		}
		//Wenn Passwort unsicher ist
		else
		{
			document.getElementById(arrKonfig[2]).style.display = "inline";
		}
	}
}

//--------------------------------
// Funktionen, um Inhalts eines Divs dynamisch auf bestimmte Zeilenzahl zu beschränken
// und durch einen Link den "mehr"-Text anzuzeigen
//--------------------------------
var objDivElement;
var strOriginalInhalt;
var strKurzerInhalt;

function zeigeKurzenInhalt() {
	objDivElement.innerHTML = strKurzerInhalt;
}
//--------------------------------
function zeigeOriginalInhalt() {
	objDivElement.innerHTML = strOriginalInhalt;
}
//--------------------------------
function reduziereZeilen(strId, intZeilenZahl, intWorteProZeile, strMehrLink, strWenigerLink) {
	var arrMatches;
	var arrWorte;
	var i;
	var intHoehe;
	var intWortAnzahl = intZeilenZahl * intWorteProZeile;
	var intWorteZuviel;
	var intZeilenhoehe;
	var reAlleTags = /<[\s\S]*?>/gim;
	var reEnde = /(<\/p>)$/gim;
	var strInhalt;
	var strSpaces = '';
	var strSpacesBackup = '';
	var strWorte = '';
	var strWorteBackup = '';
	var blnZeigeWeniger = (strWenigerLink == '') ? false : true;

	if (document.layers) {
		objDivElement = document.layers[strId];
	} else {
		objDivElement = document.getElementById(strId);
	}
	// Ursprünglichen Inhalt des DIVs sichern
	strOriginalInhalt = objDivElement.innerHTML;
	strInhalt = strOriginalInhalt;
	// Alle Tags entfernen und Inhalt in einzelne Worte splitten
	arrMatches = strInhalt.match(reAlleTags);
	for (i = 0; i < arrMatches.length; i++) {
		strInhalt = strInhalt.replace(arrMatches[i], arrMatches[i].replace(' ', '###'));
	}
	arrWorte = strInhalt.split(' ');
	// DIV nur mit dem ersten Wort füllen, um die Zeilenhöhe zu ermitteln
	objDivElement.innerHTML = arrWorte[0].replace('###', ' ');
	if (document.layers) {
		intZeilenhoehe = objDivElement.document.height;
	} else {
		intZeilenhoehe = objDivElement.offsetHeight;
	}
	//Etwas weniger als die durchschnittliche Wortzahl und den mehr-Link einfügen.
	// Falls dies noch zu viele Worte sind, um nur drei Zeilen zu erhalten, die Wortzahl in 5er-Schritten verringern
	intWorteZuviel = 5;
	do {
		strWorte = '';
		for (i = 0; i < (intWortAnzahl - intWorteZuviel); i++) {
			strWorte += (i > 0 ? ' ' : '') + arrWorte[i].replace('###', ' ');
		}
		objDivElement.innerHTML = strWorte + '...&nbsp;<a href="javascript:vostrId();">' + strMehrLink + '</a>';
		if (document.layers) {
			intHoehe = objDivElement.document.height;
		} else {
			intHoehe = objDivElement.offsetHeight;
		}
	} while (intHoehe > (intZeilenhoehe * intZeilenZahl))
	// i enthält jetzt den Index des nächsten einzufügenden Wortes
	// Jetzt solange Worte hinzufügen, bis die vierte Zeile begonnen wird. Dabei immer den letzten Inhalt merken.
	do {
		strWorteBackup = strWorte;
		strWorte = strWorte + ' ' + arrWorte[i++].replace('###', ' ');
		objDivElement.innerHTML = strWorte + '...&nbsp;<a href="javascript:vostrId();">' + strMehrLink + '</a>';
		if (document.layers) {
			intHoehe = objDivElement.document.height;
		} else {
			intHoehe = objDivElement.offsetHeight;
		}
	} while (intHoehe < (intZeilenhoehe * (intZeilenZahl + 1)))
	// strWorteBackup enthält jetzt die richtige Anzahl an Worten.
	// Das DIV mit den Worten, dem mehr-Link und so vielen Spaces füllen, dass das Wort "mehr" ganz rechts steht
	do {
		strSpacesBackup = strSpaces;
		strSpaces = strSpaces + '&nbsp;';
		objDivElement.innerHTML = strWorteBackup + '...' + strSpaces + '<a href="javascript:vostrId();">' + strMehrLink + '</a>';
		if (document.layers) {
			intHoehe = objDivElement.document.height;
		} else {
			intHoehe = objDivElement.offsetHeight;
		}
	} while (intHoehe < (intZeilenhoehe * (intZeilenZahl + 1)))
	// p enthält jetzt die richtige Anzahl an Spaces.
	strKurzerInhalt = strWorteBackup + '...' + strSpacesBackup + '<a href="javascript:zeigeOriginalInhalt();">' + strMehrLink + '</a>';
	if (blnZeigeWeniger) {
		if (arrMatches = reEnde.exec(strOriginalInhalt)) {
			strOriginalInhalt = strOriginalInhalt.replace(reEnde, '&nbsp;<a href="javascript:zeigeKurzenInhalt();">' + strWenigerLink + '</a>' + arrMatches[0]);
		} else {
			strOriginalInhalt = strOriginalInhalt + '&nbsp;<a href="javascript:zeigeKurzenInhalt();">' + strWenigerLink + '</a>';
		}
	}
	zeigeKurzenInhalt();
}
//--------------------------------
function bannerSchliessen() {
	var objDivs = document.getElementsByTagName('DIV');
	for (var i = 0; i < objDivs.length; i++) {
		if ((objDivs[i].id.length >= 7) && (objDivs[i].id.substr(0,7) == 'phpads_')) {
			document.getElementById(objDivs[i].id).style.display = 'none';
		}
	}
}

//--------------------------------
//Fragment           : mmsetup
//Creator            : sb
//Parameter needed   :
//Parameter optional :
//Description        : Initialisierung fuer die MM_Suggest Vorschlagssuche
//--------------------------------
function mmsetup() {
	var lang = document.frmSearch.lang.value;
	SetupMMSuggest(document.frmSearch.stinput,
		{'requestURL': "/smartsugg.asp?max_results=25&Keywords_mode=APPROX&Keywords=$v$&query=$v$&bias=100&Lang=$document.frmSearch.lang.value$",
		 'onActivate': customOnActivate,
		 'flags': AS_NOLOGO + AS_GROUPED + AS_GENERATED_CATEGORIES_NOT_SELECTABLE + AS_GROUPED_DISPLAYCAT, 
		 //'flags': AS_NOLOGO + AS_GROUPED + AS_NO_ROOT, 
		 'groupedRowFunction': customGroupedRow,
		 'suggBoxTop': topBox,
		 'suggBoxBottom': bottomBox,
		 'onActivate': customOnActivate,
		 'beforeRequest': customBeforeRequest,
		 'width':410,
		 'left':40,
		 'align': 'right',
		 'iconPath': "/images/mmsuggest/",
		 'normalfg':"#003399",
		 'normalbg':"#FFFFFF",
		 'highlightfg':"#FFFFFF",
		 'highlightbg':"#003399"}
	)
}
//############################# --> RP
//nimmt ein element anhand einer ID und setzt es auf display:none falls inline oder umgekehrt
function displayOpenClose(id,str_mehr,str_minimieren){	
	if(document.getElementById(id).style.display == 'none'){
		document.getElementById(id).style.display = 'inline';
		document.getElementById('link_'+id).innerHTML = str_minimieren;
	}else{
		document.getElementById(id).style.display = 'none';
		document.getElementById('link_'+id).innerHTML = str_mehr;
	}
}

function displayOpen(id){	
	if(document.getElementById(id).style.display == 'none'){
		document.getElementById(id).style.display = 'inline';
	}
}

//############################# --> RP
//setzt alle im Array übergebenen sichtbaren Elemente display:none, den Rest auf display:visible
function vdShowHideSubSearch(id,idArraySchliessen, idArrayOeffnen, strFilter){	
	if(document.getElementById('search_link_'+ strFilter + id).innerHTML.match(/plus/)) {
		// Liste ist geschlossen und muss geöffnet werden
		document.getElementById('search_link_' + strFilter + id).innerHTML = '<img src="images/minus.gif" border="0" />';
		for(var i = 0; i < idArrayOeffnen.length; i++){ 
			document.getElementById('search_' + strFilter + idArrayOeffnen[i]).style.display = 'block';
			document.getElementById('search_link_' + strFilter + idArrayOeffnen[i]).innerHTML = '<img src="images/plus.gif" border="0" />';
			//letztes Element kann nicht existent sein, Funktion bricht im Case hier ab.
		}
	}else{
		//Liste ist offen und muss geschlossen werden
		document.getElementById('search_link_' + strFilter + id).innerHTML = '<img src="images/plus.gif" border="0" />';
		for(var i = 0; i < idArraySchliessen.length; i++){ 
			document.getElementById('search_' + strFilter + idArraySchliessen[i]).style.display = 'none';
			//letztes Element kann nicht existent sein, Funktion bricht im Case hier ab.
		}
	}
}

//--------------------------------
function changeFondsChart(time){
	// unterbinden, dass beim time-wechsel, der index ausgewertet wird
	if (time != actual_time)
	{
		document.getElementById(actual_time).className = '';
		document.getElementById(time).className = 'emphased';
		actual_time = time;
		document.images['fondsdetail_chart_img'].src = chartLinks[actual_index][time];
	}
}
//--------------------------------
function writeError(strText, Id, intNum){
	document.getElementById(Id).innerHTML = strText;
}