//
// Copyright © 2002 Techniker Krankenkasse, Hamburg, Germany. All rights reserved.
//
//
//
// Funktionen zum Öffnen von Browser-Fenstern
// Sonstige Funktionen
//

function enc(url){ // URLs nur encoden, wenn sie nicht schon encoded sind
	if(!(url.indexOf("%")>0)){
		url = encodeURI(url);
	}
	return url;
}

function openPrintWindow(url) {
	url = enc(url);
	window.open(url, 'printwindow');
	return false;
}

function openHelpWindow(url) {
	url = enc(url);
	window.open(url,'help','width=520,height=495,toolbar=no,status=no,scrollbars=yes,resizable=no,menubar=no,location=no');
	return false;
}
function openWindowWithParams(url, name, openParams) {
	url = enc(url);
	window.open(url, name, openParams);
	return false;
}

function openGlossaryWindow(url, name, openParams) {
	window.open(url, name, openParams);
	return false;
}


function openWindow(url, name) {
	url = enc(url);
	window.open(url, name);
	return false;
}


var textNeuesFensterDefault = "In neuem Fenster: ";
function titleAnpassen(titleObjekt) {
	titleAnpassen(titleObjekt, textNeuesFensterDefault);
}

function titleAnpassen(titleObjekt, textNeuesFenster) {
	if(!textNeuesFenster || (textNeuesFenster && textNeuesFenster == "")) {
		textNeuesFenster = textNeuesFensterDefault;
	}
	if (titleObjekt.getAttribute) {
		textAlt = titleObjekt.getAttribute("title");
		if(textAlt && textAlt.indexOf(textNeuesFenster) == -1) {
			titleObjekt.setAttribute("title", textNeuesFenster + textAlt);
		}
	}

}

//Setzt fuer die uebergebene id (sinnvollerweise ein Input Field) das Attribute autocomplete auf off.
//Damit werden die Browser angehalten, fuer das Eingabefeld keine eigene AutoCompletion zu verwenden.
function setAutoCompleteOff(searchTextId) {
	if (!document.getElementById) return false;
	var f = document.getElementById(searchTextId);
	if (f==null) return false;
	f.setAttribute('autocomplete', 'off');
}

// Die Behandlung von Doppelclicks, wird in Screen.renderFormStart benutzt
var savedTime = new Date;
savedTime.setTime(0);
function CheckDoubleSubmit() {
	var rightNow = new Date;
	if ((rightNow.valueOf() - 2000) < savedTime.valueOf() ){
		return false;
	}
	else {
		savedTime=rightNow;
		return true;
	}
}



/**
 * Diese Methode dient zum Ein- und Ausblenden von Boxen.
 * index: -1 in Verbindung mit closeOthers: true schließt alle Boxen.
 * Die selectorClass gibt das Steuer-Element an. Dieses enthält die Style-Klassen open und 
 * closed als Zusatz, jenachdem wie der Status ist. Die Ein- und Ausblende Animationen werden
 * auf das direkt nachfolgende Element angewendet.
 *  
 * <div class="selectorClass [open]"></div>
 * <div>Slidebox</div>
 *
 * Mit dem Parameter isNested:true kann jedoch auch der folgende Aufbau realisiert werden:
 *	 
 * <div><div class="selectorClass"></div></div>
 * <div>Slidebox</div>
 * 
 * Parameter:
 * selectorClass        Steuert das Schaltflächen-Element		 
 * isNested				true, wenn das Element, das ein- und ausgeblendet wird nicht direkt 
 * 						dem gewählten Element folgt, sondern der Nachfolger des 
 *						Elternelementes ist.   
 * index				Position, die geöffnet werden soll.  
 * animated 			Animation ja/nein
 * closeOthers 			Beim öffnen eines Elementes alle anderen schließen.
 * allowCloseCurrent	Ein geöffnetes Element kann auch geshlossen werden
 */		 
 function createOpenTabMethod (selectorClass, isNested) {
	 return function (index, animated, closeOthers, allowCloseCurrent) {
			
			// Standard-Werte
			isNested = (typeof isNested == "undefined") ? false : isNested;
			animated = (typeof animated == "undefined") ? true : animated;
			closeOthers = (typeof closeOthers == "undefined") ? true : closeOthers;
			allowCloseCurrent = (typeof allowCloseCurrent == "undefined") ? false : allowCloseCurrent;		
						
			$(selectorClass).each(function(temp_index, value) {
					
				var current = $(value);
				var currentIsOpen = current.hasClass("open") && !current.hasClass("closed");
				var currentIsSelected = (temp_index == index);			
						
				var slideBox = isNested ? current.parent().next() : current.next(); 
				
				if (currentIsSelected && !currentIsOpen) {
					
					current.removeClass("closed").addClass("open");
					
					if (animated){
						slideBox.slideDown("fast");
					} else {
						slideBox.show();
					}
				
				} else if ((!currentIsSelected && closeOthers) || (currentIsSelected && allowCloseCurrent)) {
																		
					if (animated) {
						slideBox.slideUp("fast", function() {
							current.addClass("closed").removeClass("open"); 
						});
					} else {
						current.addClass("closed").removeClass("open");
						slideBox.hide();
					}							
				}
			});

		};			 	 
 }

