// Copyright by HUK24 AG - Ein Unternehmen der HUK-COBURG Versicherungsgruppe

var isPostbank   		= "false";	// hiermit wird sich gemerkt ob der Aufruf von der Postbank aus statt gefunden hat (true oder false)
var reloadUrl 			= '';
var umfrageUrl			= '';
var processID			= '';

// ****************************************************************
// START onready
// wird beim Laden der Seite ausgeführt (onready-Event)
// ****************************************************************
$(document).ready(function() {
	
	$(document).ajaxStart(function(){
		startProgress('#vumfang');
	});
	
	$(document).ajaxStop(function(){
		stopProgress();
	});
	
	$(document).ajaxError(function(){
		stopProgress();
	});			
	
	// sicherstellen dass alle Links, die im Hilfe-Dialog aufgehen sollen, sich nicht per rechter Maustaste in einem neuen Browserfenster öffnen lassen (geht trotzdem wenn Javascript deaktiviert ist)
	$("a[onclick*='openSelfService(']").each(function(){
		var href = $(this).attr("href");
		if (href.indexOf("start_selfservice.do") == 0)		// wenn href mit "start_selfservice.do" beginnt, ein "/" vorne anhängen
			href = "/" + href;
		$(this).removeAttr("onclick");
		$(this).unbind("click").bind('click', function(){
//			return openSelfService(href);
			warteAufExtJS($(this),"openSelfService('" + href + "')");
			return false;
		});
		$(this).attr("href", "javascript:void(0)");
	});

	$("a[onclick*='openSelfServiceMitSuchtext(']").each(function(){
		var href = $(this).attr("href");
		$(this).removeAttr("onclick");
		$(this).unbind("click").bind('click', function(){
			warteAufExtJS($(this),"openSelfServiceMitSuchtext('" + href + "')");
			return false;
		});
		$(this).attr("href", "javascript:void(0)");
	});
		
	pid = $("input[name='PID']:hidden").val();
});
// ****************************************************************
// ENDE onready
// ****************************************************************


// ****************************************************************
// START JS nachladen
// nicht sofort benötigte Javascript-Dateien werden bei ONREADY nachgeladen (s. huk24_utils_hp.js)
// dies sind derzeit: /Allgemein/Scripts/extjs_minimiert/lib/ext.js
// ****************************************************************

var extJsTimer;

function warteAufExtJS(obj,aufruf){
	if (getIsExtJsSchonDa()) {
		// ExtJS ist bereits geladen, Funktion gleich aufrufen
		eval(aufruf);
	} else {
		// ExtJs ist noch nicht geladen, Ajax-Bildchen einblenden und warten
		var image;
		if (obj) {
			// zeige das Ajax-Bildchen direkt neben dem geklickten Link (obj)
			var top = obj.position().top;
			var left = obj.position().left + obj.width() + 3;
			image = "/Allgemein/Bilder/ajax-loader2.gif";
		}
		else {
			// zeige das etwas größere Ajax-Bildchen in der Bildschirmmitte (für Seiten wo der Dialog automatisch aufgeht)
			var top = $(window).height() / 2 - 12;		// 12 abziehen. Hälfte vom Ajax-Bildchen (25px)
			var left= $(window).width() / 2 - 12;
			image = "/Allgemein/Bilder/ajax-loader.gif";
		}
		var html = '<div id="tmpajax"><img src="' + image + '" style="position:absolute; top:' + top + 'px; left:' + left + 'px"></div>';
		$("#tmpajax").remove();		// evtl. bereits vorhandenes Bildchen vorher entfernen
		$(html).appendTo("body");

		// prüfe in Intervallen von 1/10 Sekunde ob ExtJS geladen wurde
		window.clearInterval(extJsTimer);		// löscht vorherigen Timer wenn vorhanden
		extJsTimer = window.setInterval("warteAufExtJS2(\"" + aufruf + "\")", 100);
	}
}

function warteAufExtJS2(aufruf){
	if (getIsExtJsSchonDa()) {
		// ExtJS ist jetzt geladen, Ajax-Bildchen entfernen, Timer löschen und Hilfe-Dialog öffnen
		$("#tmpajax").remove();
		window.clearInterval(extJsTimer);
		eval(aufruf);
	}
}


// -------------------------------------------------------------------------------------
// --- Diverse Funktionen --------------------------------------------------------------
// -------------------------------------------------------------------------------------

function getClientHeight(){
	var h = self.innerHeight || (document.documentElement && document.documentElement.clientHeight) || document.body.clientHeight;
	return h;
}

function getClientWidth(){
	var w = self.innerWidth || (document.documentElement && document.documentElement.clientWidth) || document.body.clientWidth;
	return w;
}


// -------------------------------------------------------------------------------------
// -------------------------HILFETEXTE--------------------------------------------------
// -------------------------------------------------------------------------------------
var aktuelle_hilfetext_id = "";
var hilfecache_int = 0;
var hilfecache_keys = new Array();
var hilfecache_values = new Array();	

function showHelp(hilfetext_id, path) {
	var isInCache = false;
	var index = 0;
//	var session_id = getSessionId();
//	var netmind_id = getNetMindId();
	var helpdata   = new Object();

	if (aktuelle_hilfetext_id == hilfetext_id) {
		closeHelp();
	}
	else {
		aktuelle_hilfetext_id = hilfetext_id; 
		
		for (i=0; i< hilfecache_keys.length; i++) {
			if (hilfetext_id == hilfecache_keys[i]) {
				isInCache = true;
				index = i;
				break;
			}
		}
		
		if (isInCache) {
			input = hilfecache_values[index];
			openHelp(input);
		}
		else {
			hilfecache_keys[hilfecache_int] = hilfetext_id;
			
			helpdata.ID 	= hilfetext_id;
			helpdata.PATH 	=  path;
			helpdata.PID	= $("#PID").val();
				
	      	$.ajax({
				url: getNetMindId() + 'HilfeServlet' + getSessionId(),
				cache: true,
				async: true,
				type: 'POST',
				contentType: 'application/x-www-form-urlencoded;charset=UTF-8',
				data: helpdata,
				dataType: 'html',
				timeout: 15000,
				success: function(msg, testStatus){
				    hilfecache_values[hilfecache_int] = msg;
				    hilfecache_int++;        
					openHelp(msg);						
	        	},
				error: function(xmlHttpRequest, textStatus, errorThrown){			
					openHelp('<div class="z">Leider ist hier zur Zeit kein Hilfetext hinterlegt.</div>');
				}
			});					
		}
	}
}


function openHelp(input) {
	// Originaltext ausblenden
	$("#info_original").css('display', 'none');		

	// Div mit Hilfetext anreichern
	$("#info_hilfetext").html(input);

	// Hilfetext einblenden
	$("#info_hilfetext").css('display', 'block');

	// Im Layer scrolle die Infospalte immer nach oben
    if ($("#div_info").length) {
    	$("#div_info").scrollTop(0);
		resize_divs();       	
	}
}

function closeHelp() {
	aktuelle_hilfetext_id = "";
	// Hilfetext ausblenden
	$("#info_hilfetext").css('display', 'none');
	
	// HilfetextWindow schließen
	closeSelfServiceDialog();

	// Originaltext einblenden
	$("#info_original").css('display', 'block');	
	
	// Im Layer scrolle die Infospalte immer nach oben
    if ($("#div_info").length) {
    	$("#div_info").scrollTop(0);
		resize_divs();       	
	}
}

// -------------------------------------------------------------------------------------
// -------------------------SELFSERVICE-DIALOG------------------------------------------
// -------------------------------------------------------------------------------------
var helpWindow;
var req = false;
var dialogSource = "";	// hiermit wird sich gemerkt von wo der Dialog aufgerufen wird ("layer" oder "hp")

function openSelfService(href) {
	if (href.indexOf("page=Kontakt") != -1)
		showSelfServiceDialog(href, 'Kontakt', 650, 450)
	else if (href.indexOf("informationen") != -1)
		showSelfServiceDialog(href, 'Informationen', 650, 450, true)
	else if (href.indexOf("Sonderausstattung") != -1)
		showSelfServiceDialog(href, 'Sonderausstattung', 650, 450, true)		
	else {
		showSelfServiceDialog(href, 'Hilfe', 650, 450)
	}
	return false;		// wichtig damit das <a href=""> nicht aufgeführt wird;
}

function openSelfServiceMitSuchtext(href) {
	setKommeVomSuchfeld(true);
	setSuchtext($("#TXT_SUCHTEXT").val());
	openSelfService(href);
	return false;		// wichtig damit das <a href=""> nicht aufgeführt wird
}

function closeSelfServiceDialog(){
	if(helpWindow != null){	
		helpWindow.close();
		helpWindow = null;
		$('#helpDialogDiv').remove();
	}
}

////////////////////////////////////////////////////////////////////
//                         Progress Image
////////////////////////////////////////////////////////////////////

function stopProgress(){
	$('#busyProgress').hide();
}

function startProgress(divSelector){
	
	if($('#busyProgress').length == 0){				
		$("<div id='busyProgress' style='display:none'></div>").insertAfter(divSelector);				
	}
	
	var pos = [$(window).width(), $(window).height(), $(document).scrollLeft(), $(document).scrollTop() ];		
	
	if($("#busyProgress")){													
		$("#busyProgress").css({'left': ((pos[0] - 40) / 2 + pos[2]), 'top': ((pos[1] - 40) / 2 + pos[3])}).show();
		$('#busyProgress').show();
	}
}

////////////////////////////////////////////////////////////////////
//                         Sonstige Funktionen
////////////////////////////////////////////////////////////////////

// hier können weitere Funktionen oder auch Variablen definiert werden
function rahmenweg(obj) {
    if (obj.blur) obj.blur();
}

// Begrenzt den Inhalt eines Textfeldes auf die angegebene Anzahl Zeichen
function limit(obj, size) {
	if (obj.value && obj.value.length > size) obj.value = obj.value.substring(0,size);
}

// für Debug
function msg(txt) {
	if ($.browser.mozilla) console.log(txt);
	else if (document.getElementById("debugmsg")) document.getElementById("debugmsg").innerHTML += txt + "\n";
	else alert(txt);
}

function alertException(e) {
	// meldet den Inhalt des Fehlers als alert (geht nur im localhost, woanders passiert nix)
	if (location.href.indexOf("localhost") != -1) {
		var txt = "Achtung: Dieser Text erscheint nur im localhost!!!\n\n";
		for (i in e) {
			txt += i + ': ' + e[i] + '\n\n';
		}
		alert(txt);
	}
}

function setParentReload(input){
	reloadUrl = input;	
}

/**
 *	startet einen Reload der Produktstartseite
 */
function startParentReload(){		
	parent.location.href = setNetMindIdInUrl(setSessionIdInUrl(parent.location.protocol+"//"+parent.location.host + this.reloadUrl)); // startet den reload
	parent.setParentReload(''); // leert die Variable 'reloadUrl'
}

/**
 *	fügt die SessionID in eine bestehende URL
 */
function setSessionIdInUrl(url){
	// teilt die umfrageURL in adresse und parameter
	var urlParts = url.split("?");	
	var newUrl	= '';
	
	// prüft ob schon eine SessionID vorhanden ist, falls ja dann wird diese gelöscht
	if(url.indexOf(';jsessionid=') != -1){	
		var startDeletePoint = urlParts[0].indexOf(';jsessionid=');	// ermitteln wo die SessionID steht
		urlParts[0] = urlParts[0].substr(0, startDeletePoint); // url neu speichern ohne sessionId
	}
	
	// setzt die aktuelle SessionID an die Adresse
	newUrl = urlParts[0] + getSessionId();	
	// gibt es Parameter in der ursprünglichen umfrageUrl, so werden diese wieder angehängt
	if(urlParts.length == 2){
		newUrl = newUrl + "?" + urlParts[1];
	}

	return newUrl;
}

/**
 *	fügt die NetMindID in eine bestehende URL
 */
function setNetMindIdInUrl(url){
	var newUrl 	= url;	
	
	if(getNetMindId() != ''){
		// entfernt eine vorhande NetMindId aus der URL - anschliessend wird die aktuelle wieder hinzugefuegt
		if(url.indexOf('-snm-') != -1 && url.indexOf('-enm-') != -1){	
			newUrl = url.substr(0, url.indexOf("-snm-")) + url.substr(url.indexOf("-enm-") + 5);
		}
		
		// netMind Id der URL hinzufuegen
		// http(s)://www.huk24.de/tarif.do            ==> http(s)://www.huk24.de/-snm-...-enm-tarif.do
		// http(s)://www.huk24.de/produkte/seite1.jsp ==> http(s)://www.huk24.de/-snm-...-enm-produkte/seite1.jsp
		// /tarif.do                                  ==> /-snm-...-enm-tarif.do
		// tarif.do                                   ==> -snm-...-enm-tarif.do
		// openSelfService('/start_selfservice.do     ==> openSelfService('/-snm-...-enm-start_selfservice.do                             ==> -snm-...-enm-tarif.do
		var startPos = 0;
		var includePos = 0;
		if(newUrl.indexOf('https://') != -1){
			startPos = 8;
		}else if(newUrl.indexOf('http://') != -1){
			startPos = 7;
		}
		if (newUrl.indexOf('/',startPos) != -1) {
			includePos = newUrl.indexOf('/',startPos) + 1;
		}
		newUrl = newUrl.substr(0,includePos) + getNetMindId() + newUrl.substr(includePos);
	}
		
	return newUrl;
}


// ****************************************************************
// START jquery-Erweiterungen
// ****************************************************************

// ----------------------------------------------------------------
// Funktion zum Ermitteln von URL Parametern
// ----------------------------------------------------------------
jQuery.fn.extend({
/**
* Returns get parameters.
*
* If the desired param does not exist, null will be returned
*
* To get the document params:
* @example value = $(document).getUrlParam("paramName");
* 
* To get the params of a html-attribut (uses src attribute)
* @example value = $('#imgLink').getUrlParam("paramName");
*/ 
 getUrlParam: function(strParamName){
	  strParamName = escape(unescape(strParamName));
	  
	  var returnVal = new Array();
	  var qString = null;
	  
	  if ($(this).attr("nodeName")=="#document") {
	  	//document-handler
		
		if (window.location.search.search(strParamName) > -1 ){
			
			qString = window.location.search.substr(1,window.location.search.length).split("&");
		}
			
	  } else if ($(this).attr("src")!="undefined") {
	  	
	  	var strHref = $(this).attr("src")
	  	if ( strHref.indexOf("?") > -1 ){
	    	var strQueryString = strHref.substr(strHref.indexOf("?")+1);
	  		qString = strQueryString.split("&");
	  	}
	  } else if ($(this).attr("href")!="undefined") {
	  	
	  	var strHref = $(this).attr("href")
	  	if ( strHref.indexOf("?") > -1 ){
	    	var strQueryString = strHref.substr(strHref.indexOf("?")+1);
	  		qString = strQueryString.split("&");
	  	}
	  } else {
	  	return null;
	  }
	  	
	  if (qString==null) return null;
	  
	  for (var i=0;i<qString.length; i++){
			if (escape(unescape(qString[i].split("=")[0])) == strParamName){
				returnVal.push(qString[i].split("=")[1]);
			}
			
	  }
	  
	  if (returnVal.length==0) return null;
	  else if (returnVal.length==1) return returnVal[0];
	  else return returnVal;
	}
});

// ----------------------------------------------------------------
// erweitere die Funktion getScript um den Parameter cache
// ----------------------------------------------------------------
$.getScript = function(url, callback, cache){
	$.ajax({
		type: "GET",
		url: setNetMindIdInUrl(setSessionIdInUrl(url)),
		success: callback,
		dataType: "script",
		cache: cache
	});
};

// ----------------------------------------------------------------
// Ajax-Queue-Manager
// stellt sicher, dass Ajax-Request nacheinander ausgeführt werden (gilt nur für Request, die mit $.ajaxQueue aufgerufen werden)
// Aufruf: $.ajaxQueue(optionen) 
// analog zu $.ajax(optionen) mit identischen Optionen wie bei $.ajax
// ----------------------------------------------------------------
(function() {
	// Warteschlange (speichert das Optionen-Objekt eines zurückgestellten Ajax-Requests)
	var theQueue = [];
	
	// Flag ob derzeit ein Ajax-Requests läuft
	var busy = false;

	// Ajax Aufruf mit Warteschlange (d.h. max. 1 Request gleichzeitig)
	$.ajaxQueue = function(opts){
		if (!busy) {
			// derzeit ist kein Ajax-Request aktiv -> gleich ausführen
			busy = true;
			doTheAjaxCall(opts);
		}
		else {
			// derzeit ist ein Ajax-Request aktiv -> an das Ende der Warteschschlange stellen
			theQueue.push(opts);
		}
	};

	// Anzahl der noch nicht beendeten Ajax-Requests - der aktuelle Request plus Anzahl in der Warteschlange
	$.ajaxQueue.getLength = function(){
		if (busy) return 1 + theQueue.length;
		else      return 0;
	}

	// Noch nicht angefangene Ajax-Requests werden aus der Queue gelöscht
	$.ajaxQueue.emptyQueue = function(){
		theQueue = [];
	}

	// führt einen Ajax-Request aus, wenn fertig wird der nächste Request in der Warteschlange aufgerufen
	var doTheAjaxCall = function(opts){
		// wenn bereits eine Funktion complete vorhanden ist, dann zwischenspeichern und später ausführen
		if (opts.complete) opts.origComplete = opts.complete;
		else if ($.ajaxSettings.complete) opts.origComplete = $.ajaxSettings.complete;

		// durchzuführende Aktionen, wenn der aktuelle Ajax-Request abgearbeitet ist
		opts.complete = function() {
			// hier wird die ursprüngliche Complete-Funktion ausgeführt
			if (opts.origComplete) opts.origComplete();
			// bearbeite den nächsten Ajax-Request in der Warteschlange
			getNextElementFromQueue();
		}
		
		// Ajax-Request ausführen
		$.ajax(opts);
	};


	// wenn vorhanden, hole das erste Element aus der Warteschlange und lasse es ausführen
	var getNextElementFromQueue = function(){
		if (theQueue.length > 0) {
			opts = theQueue.shift();
			doTheAjaxCall(opts);
		}
		else {
			busy = false;
		}
	};
})();

// ----------------------------------------------------------------
// Fix für IE6 (und älter), der halbtransparente PNG's falsch darstellt
// ----------------------------------------------------------------
$.fn.fixPNG = function() {
	return this.each(function () {
		if ($.browser.msie && parseInt($.browser.version.substr(0,1)) < 7) {
			var image = $(this).css('backgroundImage');
				if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
				image = RegExp.$1;
				$(this).css({
					'backgroundImage': 'none',
					'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=" + ($(this).css('backgroundRepeat') == 'no-repeat' ? 'crop' : 'scale') + ", src='" + image + "')"
				}).each(function () {
					var position = $(this).css('position');
					if (position != 'absolute' && position != 'relative')
						$(this).css('position', 'relative');
				});
			}
		}
	});
};
// ****************************************************************
// ENDE jquery-Erweiterungen
// ****************************************************************