	
	

	var dialogSource=null;
	var isPostbank=false;
	var reloadUrl='';
	var umfrageUrl='';
	var widthw=300;
	var heightw=200;


	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;
	}
	
	

	// ****************************************************************
	// START jQuery.imframebox
	// Funktionen zum Aufbau des Layers
	// ****************************************************************
	;(function($) {

		/**
		 * Variablen definition
		 */
		var elem;
		var opts;
		var busy 	= false;  // zeigt nur ob das Iframe gerade beim laden ist, so dass es nciht nochmals geladen wird
		var conLog 	= false; // varibale zum loggen, ist diese auf "true" kann ein Logging in der FireBug-Konsole durchgeführt werden, solte im Produktivsystem auf false gesetzt werden
		var loadingTimer= 0;
		var loadingFrame= 1;

		// prueft ob es sich um einen InternetExplorer in der Version < 8 handelt
		var isIElt8 = ($.browser.msie && parseInt($.browser.version.substr(0,1)) < 8);

		// falls isIElt8 wahr ist muss noch geprüft werden, ob der vom User dennoch einstellbare Dokumentenmodus ungleich IE8-Standards ist (dann wäre document.documentMode=8)
		if (isIElt8) {
			if (document.documentMode && document.documentMode >= 8) {
				isIElt8 = false;
			}
		}
		
		isIElt8 = false;

		/**
		 * logs the current jQuery selection to the firebug console
		 * @param {Object} msg
		 */
		$.fn.log = function (msg) {
	      		console.log("%s: %o", msg, this);
	      		return this;
	  	};

		/**
		 *
		 */
		$.fn.fixPNG = function() {
			return this.each(function () {
				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');
					});
				}
			});
		};

		/**
		 * wird bei der initialisierung der Seite aufgerufen, am ender der Methode wird ein event-handler definiert,
		 * mit dem das anzeigen und laden des IFrames gestartet wird. Diese Methode beinhaltete mehrere private Methoden.
		 * @param {Object} settings - ist ein Object, mit diesem koennen die default-werte ueberschrieben werden
		 */
		$.fn.iframebox = function(settings){
		
			if(conLog) $.fn.log('$.fn.iframebox');		
			// ermittelt die schnittmenge aus defaults und settings, wobei settings die defaults ueberschreibt, das ganze wird in settings gespeichert
			settings = $.extend({}, $.fn.iframebox.defaults, settings);

			/**
			 * zur Initialiesirung, nach dem click-event
			 */
			function _initialize() {
				if(conLog) $.fn.log('_initialize');
				elem = this;
				elem.tempHref = $(this).attr("tempHref");
				opts = settings;
				opts.frameHeight =$.fn.iframebox.getViewport()[1]-heightw; // hier wird zur laufzeit die Hoehe des sichtbaren bereiches ermittelt
				opts.frameWidth = $.fn.iframebox.getViewport()[0]-widthw;
				_start();
			};

			/**
			 *
			 */
			function _start() {
				if(conLog) $.fn.log('_start');
				if (busy) return;

				opts.itemArray		= [];
				opts.itemCurrent	= 0;

				var item = {};

				if (elem != null) {
					var item = {href: elem.tempHref, title: elem.title};
					opts.itemArray.push( item );
				}

				if (elem.tempHref == null && opts.url != null) {
					var item = {href : opts.url };
					opts.itemArray.push(item);
				}

				if (opts.overlayShow) {
					if (isIElt8) {
						$('embed, object, select').css('visibility', 'hidden');
					}
					$("#fancy_overlay").css('opacity', opts.overlayOpacity).show();
				}

				$("#fancy_right, #fancy_left, #fancy_close, #fancy_title").hide();

				var href = opts.itemArray[ opts.itemCurrent ].href;
				if (href == null) {
					href = opts.url;
				}

				// öffnet den IFrame
				//$.fn.iframebox.showLoading();	
				_set_content('<iframe '+(opts.noScroll?'scrolling="no"':'')+' id="fancy_frame" name="fancy_frame" onload="$.fn.iframebox.showIframe();" frameborder="0" hspace="0" src="' + href + '"></iframe>', opts.frameWidth, opts.frameHeight);
			};
			
			/**
			 *
			 */
			function _set_content(value, width, height) {
				if(conLog) $.fn.log('_set_content');
				busy = true;

				var padTop = opts.paddingTop;
				var padRight = opts.paddingRight;
				var padBottom = opts.paddingBottom;
				var padLeft = opts.paddingLeft;

				if (isIElt8) {
					$("#fancy_content")[0].style.removeExpression("height");
					$("#fancy_content")[0].style.removeExpression("width");
				}

				if (padTop > 0 || padRight > 0 || padBottom > 0 || padLeft > 0) {
					if(opts.noScroll){
					width=opts.fixWidth;
					height=opts.fixHeight;
					}else{
					width	+= padRight + padLeft;
					height	+= padTop + padBottom;
					}
					$("#fancy_content").css({
						'top'		: padTop + 'px',
						'right'		: padRight + 'px',
						'bottom'	: padBottom + 'px',
						'left'		: padLeft + 'px',
						'width'		: 'auto',
						'height'	: 'auto'
					});

					if (isIElt8) {
						$("#fancy_content")[0].style.setExpression('height', '(this.parentNode.clientHeight - ' + (padTop + padBottom) + ')');
						$("#fancy_content")[0].style.setExpression('width',	 '(this.parentNode.clientWidth - ' + (padRight + padLeft) + ')');
					}

				} else {
					$("#fancy_content").css({
						'top'		: 0,
						'right'		: 0,
						'bottom'	: 0,
						'left'		: 0,
						'width'		: '100%',
						'height'	: '100%'
					});
				}

				//ermittelt den Sichbereich und berechnet die Mitte
				var w = $.fn.iframebox.getViewport();
				// ermitteln der Mitte des Sichbereiches, so das der IFrame in der Mitte des Sichtbereiches geoeffnet wird
				var itemLeft	= (width + 36)	> w[0] ? w[2] : (w[2] + Math.round((w[0] - width - 36) / 2));
				var itemTop		= (height + 50)	> w[1] ? w[3] : (w[3] + Math.round((w[1] - height - 50) / 2));

				var itemOpts = {
					'left':		itemLeft,
					'top':		itemTop,
					'width':	width + 'px',
					'height':	height + 'px'
				};

				if (opts.zoomSpeedIn > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
					$("#fancy_content").empty().append($(value));

					var orig_item	= opts.itemArray[opts.itemCurrent].orig;
					var orig_pos	= $.fn.iframebox.getPosition(orig_item);

					$("#fancy_outer").css({
						'left':		(orig_pos.left - 18) + 'px',
						'top':		(orig_pos.top  - 18) + 'px',
						'width':	$(orig_item).width(),
						'height':	$(orig_item).height()
					});

					if (opts.zoomOpacity) {
						itemOpts.opacity = 'show';
					}

					$("#fancy_outer").animate(itemOpts, opts.zoomSpeedIn, opts.easingIn, function() {
						_finish();				
					});
				} else {					
					$("#fancy_content").hide().empty().append($(value)).show();
					$("#fancy_outer").css(itemOpts).fadeIn("normal", _finish()); // ruft nachdem das IFrame eingeblendet ist die Methode _finish() auf				
				}			
			};

			/**
			 *
			 */
			function _finish() {
				if(conLog) $.fn.log('_finish');

				$(document).keydown(function(e) {
					// ESC Taste, dann wird das IFrame wieder geschlossen und ausgeblendet (gilt für das Eltern-Dokument, der Fokus muss also außerhalb vom Layer sein)
					if (e.keyCode == 27) {
						$.fn.iframebox.close();
						$(document).unbind("keydown");
					}
				});
				
				// oeffnet einen event-handler wenn "true", der bei resize oder scroll die entsprechenden Funktionen aufruft, in der das fenster dann wieder zentriert wird, ist der Wert "false", dann wird das IFrame in der linken oberen Ecke eingefuegt
				if (opts.centerOnScroll) {
					$(window).bind("scroll", $.fn.iframebox.onScroll);
					$(window).bind("resize", $.fn.iframebox.onResize);
				} else {
				
					$("div#fancy_outer").css("position", "absolute");
				}

				// ist dieser Wert "true", dann wird der IFrame geschlossen sobald jemand beliebig im sichtbereich clickt
				if (opts.hideOnContentClick) {
					$("#fancy_wrap").click($.fn.iframebox.close);
				}

				// event-handler, auf den button der zum schliessen angezeigt wird, rechts oben ein X
				$("#fancy_close").bind("click", $.fn.iframebox.close);
				$("#fancy_close").show(); // zeigt den schliessen-button an

				// prueft ob ein title angegeben wurde, wenn ja wird dieser angezeigt
				if (opts.itemArray[ opts.itemCurrent ].title !== undefined && opts.itemArray[ opts.itemCurrent ].title.length > 0) {
					$('#fancy_title div').html(opts.itemArray[ opts.itemCurrent ].title);
					$('#fancy_title').show();
				}

				if (opts.overlayShow && isIElt8) {
					$('embed, object, select', $('#fancy_content')).css('visibility', 'visible');
				}			

				// gebe dem body-Tag des Parents eine CSS-Klasse als Kennzeichen, dass ein offener Layer existiert
				$("body").addClass("layer_open");

				busy = false;
			};

			// für den Link, der im Layer aufgehen soll, wird ein clickevent registriert, der den Layer öffnet
			if(conLog) $.fn.log("this.unbind('oeffneLayer').bind('oeffneLayer', _initialize)");
			this.unbind('oeffneLayer').bind('oeffneLayer', _initialize);
		}	

		/**
		 *
		 */
		$.fn.iframebox.close = function() {
			if(conLog) $.fn.log('$.fn.iframebox.close');
			busy = true;

			$("#fancy_overlay, #fancy_close").unbind();

			if (opts.hideOnContentClick) {
				$("#fancy_wrap").unbind();
			}

			$("#fancy_close, .fancy_loading, #fancy_left, #fancy_right, #fancy_title").hide();

			if (opts.centerOnScroll) {
				$(window).unbind("resize scroll");
			}

			__cleanup = function() {
				$("#fancy_overlay, #fancy_outer").hide();

				if (opts.centerOnScroll) {
					$(window).unbind("resize scroll");
				}

				if (isIElt8) {
					$('embed, object, select').css('visibility', 'visible');
				}
				
				if ($.isFunction(opts.callbackOnClose)) {			   
					opts.callbackOnClose();
				}

				// laesst die parent-seite neu laden, wenn sich der user im Layer angemeldet hat. Ist "umfrageUrl" gefüllt wird vorher ein Umfragedialog angezeigt
				if(reloadUrl == '' && umfrageUrl.length > 0){
					openUmfrageWindow('');
				} else if(reloadUrl.length > 1 && umfrageUrl.length > 1){
					openUmfrageWindow('startReload');
				}else if(reloadUrl.length > 1 && umfrageUrl == ''){
					startParentReload();
				}

				busy = false;
			};

			if ($("#fancy_outer").is(":visible") !== false) {
				if (opts.zoomSpeedOut > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
					var orig_item	= opts.itemArray[opts.itemCurrent].orig;
					var orig_pos	= $.fn.iframebox.getPosition(orig_item);

					var itemOpts = {
						'left':		(orig_pos.left - 18) + 'px',
						'top': 		(orig_pos.top  - 18) + 'px',
						'width':	$(orig_item).width(),
						'height':	$(orig_item).height()
					};

					if (opts.zoomOpacity) {
						itemOpts.opacity = 'hide';
					}

					$("#fancy_outer").stop(false, true).animate(itemOpts, opts.zoomSpeedOut, opts.easingOut, __cleanup);
				} else {
					$("#fancy_outer").stop(false, true).fadeOut("fast", __cleanup);
				}

			} else {
				__cleanup();
			}		

			// entferne im body-Tag des Parents die zuvor einfügte CSS-Klasse (Kennzeichen, dass ein offener Layer existiert)
			$("body").removeClass("layer_open");

			return false;
		};


		// Alle Funktionen, die ausgeführt werden müssen, wenn der Nutzer im obersten Browserfenster scrollt
		$.fn.iframebox.onScroll = function() {
			// Layer an die richtige Stelle positionieren
			$.fn.iframebox.repositionLayer();
		};


		// Alle Funktionen, die ausgeführt werden müssen, wenn der Nutzer die Größe des Browserfensters verändert
		$.fn.iframebox.onResize = function() {
			// Layer an die neue Größe anpassen
			if(!opts.noScroll){
				$.fn.iframebox.resizeLayer();
			}
			$.fn.iframebox.repositionLayer();
			// Funktionen innerhalb des Layers aufrufen (z.B. resize_div)
			// Der IE braucht eine Verzögerung von 1 ms
			window.setTimeout("$.fn.iframebox.doThingsInsideLayer()", 1);
		};


		// Layer an die richtige Stelle positionieren
		$.fn.iframebox.repositionLayer = function() {
			if(conLog) $.fn.log('$.fn.iframebox.onScroll');
			var pos = $.fn.iframebox.getViewport();

			if($("#fancy_outer").width() < getClientWidth()){
				$("#fancy_outer").css('left', (($("#fancy_outer").width() + 36) > pos[0] ? pos[2] : pos[2] + Math.round((pos[0] - $("#fancy_outer").width()	- 36)	/ 2)));
				$("#fancy_outer").css('top',  (($("#fancy_outer").height()+ 50) > pos[1] ? pos[3] : pos[3] + Math.round((pos[1] - $("#fancy_outer").height()	- 50)	/ 2)));
			}else{
				$("#fancy_outer").css('left', 0);
				$("#fancy_outer").css('top',  9);
			}
			if(isIElt8){
				if($("#fancy_outer").width() < getClientWidth()){
					$("#fancy_overlay").hide();
					$("#fancy_overlay").css('width', (getClientWidth()+$(window).scrollLeft()));
					$("#fancy_overlay").css('opacity', opts.overlayOpacity).show();
				}else{
					$("#fancy_overlay").hide();
					$("#fancy_overlay").css('width', ($("#fancy_outer").width() + 36));
					$("#fancy_overlay").css('opacity', opts.overlayOpacity).show();
				}
			}
		};


		// Funktionen innerhalb des Layers aufrufen
		$.fn.iframebox.doThingsInsideLayer = function() {
			try{
			if (document.getElementById("fancy_frame").contentWindow && document.getElementById("fancy_frame").contentWindow.resize_divs) {
				document.getElementById("fancy_frame").contentWindow.resize_divs()
			}
			else if (window.frames["fancy_frame"] && window.frames["fancy_frame"].resize_divs) {
				// für alte Browser
				window.frames["fancy_frame"].resize_divs();
			}
			}catch(e){}
		};


		// Höhe des Layers neu berechnen
		$.fn.iframebox.resizeLayer = function() {
			if(!opts.noscroll){
	    	$("#fancy_outer").height(getClientHeight()-heightw);
	    	$("#fancy_outer").width(getClientWidth()-widthw);
			}
		};


		// Hier alles definieren, was beim Schließem des Layers getan werden soll
		$.fn.iframebox.doThingsOnClose = function() {
			// es wird ein evtl. vorhandener SelfService-Dialog geschlossen (falls er auch vom Layer aus aufgrufen wurde, d.h. nicht vorher schon da war)
			if (dialogSource == "layer"){
				closeSelfServiceDialog();
			}
				
			if(isPostbank == true){
				parent.close();
			}

			// führt die Funktion onLayerClose aus, sofern im Layer vorhanden
			// es können somit für jede Layer-Seite eigene Dinge definiert werden, die ausgeführt werden, wenn der Layer geschlossen wird und gerade diese Seite angezeigt wird
			// für ein Beispiel siehe /WebContent/pvo/Quit_Stammdaten.jsp
//			if (document.getElementById("fancy_frame").contentWindow && document.getElementById("fancy_frame").contentWindow.onLayerClose) {
//				document.getElementById("fancy_frame").contentWindow.onLayerClose()
//			}
//			else if (window.frames["fancy_frame"] && window.frames["fancy_frame"].onLayerClose) {
//				// für alte Browser
//				window.frames["fancy_frame"].onLayerClose();
//			}
		};


		/**
		 *
		 */
		$.fn.iframebox.showIframe = function() {
			if(conLog) $.fn.log('$.fn.iframebox.showIframe');
			//$("#fancy_loading").hide();
			$("#fancy_frame").show();
			// Funktionen innerhalb des Layers aufrufen (z.B. resize_div)
			// Der IE braucht eine Verzögerung von 1 ms	
			window.setTimeout("$.fn.iframebox.doThingsInsideLayer()", 1);
		};

		/**
		 *
		 * @param {Object} el
		 * @param {Object} prop
		 */
		$.fn.iframebox.getNumeric = function(el, prop) {
			if(conLog) $.fn.log('$.fn.iframebox.getNumeric: el ' + el + ', prop: '+prop);
			return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
		};

		/**
		 *
		 * @param {Object} el
		 */
		$.fn.iframebox.getPosition = function(el) {
			if(conLog) $.fn.log('$.fn.iframebox.getPosition: el ' + el);
			var pos = el.offset();

			pos.top	+= $.fn.iframebox.getNumeric(el, 'paddingTop');
			pos.top	+= $.fn.iframebox.getNumeric(el, 'borderTopWidth');

			pos.left += $.fn.iframebox.getNumeric(el, 'paddingLeft');
			pos.left += $.fn.iframebox.getNumeric(el, 'borderLeftWidth');
			if(conLog) $.fn.log('position: ' + pos);
			return pos;
		};

		/**
		 *
		 */
		$.fn.iframebox.animateLoading = function() {
			if(conLog) $.fn.log('$.fn.iframebox.animateLoading');
/*
			if (!$("#fancy_loading").is(':visible')){
				clearInterval(loadingTimer);
				return;
			}
			$("#fancy_loading > div").css('top', (loadingFrame * -40) + 'px');
*/
			loadingFrame = (loadingFrame + 1) % 12;
		};

		/**
		 *
		 */
		$.fn.iframebox.showLoading = function() {
			if(conLog) $.fn.log('$.fn.iframebox.showLoading');
			clearInterval(loadingTimer);
			var pos = $.fn.iframebox.getViewport();

//			$("#fancy_loading").css({'left': ((pos[0] - 40) / 2 + pos[2]), 'top': ((pos[1] - 40) / 2 + pos[3])}).show();
//			$("#fancy_loading").bind('click', $.fn.iframebox.close);

			loadingTimer = setInterval($.fn.iframebox.animateLoading, 66);
		};

		/**
		 *
		 */
		$.fn.iframebox.getViewport = function() {

			if(conLog) $.fn.log('$.fn.iframebox.getViewport');
			viewport = [$(window).width(), $(window).height(), $(document).scrollLeft(), $(document).scrollTop() ]
			if(conLog) $.fn.log('Viewport: ' + viewport);
			return viewport;
		};

		/**
		 * baut die eigentliche seite mit HTML zusammen, hier koennen Aenderungen vom aussehen vorgenommen werden
		 */
		$.fn.iframebox.build = function() {
			if(conLog) $.fn.log('$.fn.iframebox.build');
			var html = '';

			html += '<div id="fancy_overlay"></div>';						
			html += '<div id="fancy_wrap">';
			html += '  <div class="fancy_loading" id="fancy_loading">';
			html += '    <div>';
			html += '    </div>';
			html += '  </div>';		
			html += '  <div id="fancy_outer">';
			html += '    <div id="fancy_inner">';
			html += '      <div id="fancy_close"></div>';
			html += '      <div id="fancy_bg">';
			html += '        <div class="fancy_bg fancy_bg_n"></div>';
			html += '        <div class="fancy_bg fancy_bg_ne"></div>';
			html += '        <div class="fancy_bg fancy_bg_e"></div>';
			html += '        <div class="fancy_bg fancy_bg_se"></div>';
			html += '        <div class="fancy_bg fancy_bg_s"></div>';
			html += '        <div class="fancy_bg fancy_bg_sw"></div>';
			html += '        <div class="fancy_bg fancy_bg_w"></div>';
			html += '        <div class="fancy_bg fancy_bg_nw"></div>';
			html += '      </div>';
			html += '      <a href="javascript:;" id="fancy_left">';
			html += '        <span class="fancy_ico" id="fancy_left_ico"></span>';
			html += '      </a>';
			html += '      <a href="javascript:;" id="fancy_right">';
			html += '        <span class="fancy_ico" id="fancy_right_ico"></span>';
			html += '      </a>';
			html += '      <div id="fancy_content"></div>';
			html += '      <div id="fancy_title"></div>';
			html += '    </div>';
			html += '  </div>';
			html += '</div>';
			
			$(html).appendTo("body");

		//	$('<table cellspacing="0" cellpadding="0" border="0"><tr><td class="fancy_title" id="fancy_title_left"></td><td class="fancy_title" id="fancy_title_main"><div></div></td><td class="fancy_title" id="fancy_title_right"></td></tr></table>').appendTo('#fancy_title');

			if (isIElt8) {
				//$("#fancy_inner").prepend('<iframe class="fancy_bigIframe" id="myIFrame" scrolling="no" frameborder="0"></iframe>');
				$("#fancy_close, .fancy_bg, .fancy_title, .fancy_ico").fixPNG();
			}
		};

		/**
		 * default werte
		 */
		$.fn.iframebox.defaults = {
			paddingTop			:	10,
			paddingRight		:	10,
			paddingBottom		:	10,
			paddingLeft			:	10,
			imageScale			:	true,
			zoomOpacity			:	false,
			zoomSpeedIn			:	0,
			zoomSpeedOut		:	0,
			zoomSpeedChange		:	300,
			easingIn			:	'swing',
			easingOut			:	'swing',
			easingChange		:	'swing',
			frameWidth			:	650,
			frameHeight			:	350,
			overlayShow			:	true,
			overlayOpacity		:	0.8,
			hideOnContentClick	:	false,
			centerOnScroll		:	true,
			callbackOnClose		:	$.fn.iframebox.doThingsOnClose,
			url					:	null
		};

		/**
		 * wird aufgerufen, wenn das vater-dokument fertig geladen wurde
		 */
		$(document).ready(function() {
			if(conLog) $.fn.log('$(document).ready()');		
			$.fn.iframebox.build();
		});

	})(jQuery);

	// ****************************************************************
	// ENDE jQuery.imframebox
	// ****************************************************************


	// ****************************************************************
	// START jquery.easing
	// Funktionen zum "schöneren" Ein- und Ausblenden des Layers
	// ****************************************************************
	/*
	 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
	 *
	 * Uses the built in easing capabilities added In jQuery 1.1
	 * to offer multiple easing options
	 *
	 * TERMS OF USE - jQuery Easing
	 * 
	 * Open source under the BSD License. 
	 * 
	 * Copyright Â© 2008 George McGinley Smith
	 * All rights reserved.
	 * 
	 * Redistribution and use in source and binary forms, with or without modification, 
	 * are permitted provided that the following conditions are met:
	 * 
	 * Redistributions of source code must retain the above copyright notice, this list of 
	 * conditions and the following disclaimer.
	 * Redistributions in binary form must reproduce the above copyright notice, this list 
	 * of conditions and the following disclaimer in the documentation and/or other materials 
	 * provided with the distribution.
	 * 
	 * Neither the name of the author nor the names of contributors may be used to endorse 
	 * or promote products derived from this software without specific prior written permission.
	 * 
	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
	 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
	 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
	 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
	 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
	 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
	 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
	 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
	 * OF THE POSSIBILITY OF SUCH DAMAGE. 
	 *
	*/

	// t: current time, b: begInnIng value, c: change In value, d: duration
	jQuery.easing['jswing'] = jQuery.easing['swing'];

	jQuery.extend( jQuery.easing,
	{
		def: 'easeOutQuad',
		swing: function (x, t, b, c, d) {
			//alert(jQuery.easing.default);
			return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
		},
		easeInQuad: function (x, t, b, c, d) {
			return c*(t/=d)*t + b;
		},
		easeOutQuad: function (x, t, b, c, d) {
			return -c *(t/=d)*(t-2) + b;
		},
		easeInOutQuad: function (x, t, b, c, d) {
			if ((t/=d/2) < 1) return c/2*t*t + b;
			return -c/2 * ((--t)*(t-2) - 1) + b;
		},
		easeInCubic: function (x, t, b, c, d) {
			return c*(t/=d)*t*t + b;
		},
		easeOutCubic: function (x, t, b, c, d) {
			return c*((t=t/d-1)*t*t + 1) + b;
		},
		easeInOutCubic: function (x, t, b, c, d) {
			if ((t/=d/2) < 1) return c/2*t*t*t + b;
			return c/2*((t-=2)*t*t + 2) + b;
		},
		easeInQuart: function (x, t, b, c, d) {
			return c*(t/=d)*t*t*t + b;
		},
		easeOutQuart: function (x, t, b, c, d) {
			return -c * ((t=t/d-1)*t*t*t - 1) + b;
		},
		easeInOutQuart: function (x, t, b, c, d) {
			if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
			return -c/2 * ((t-=2)*t*t*t - 2) + b;
		},
		easeInQuint: function (x, t, b, c, d) {
			return c*(t/=d)*t*t*t*t + b;
		},
		easeOutQuint: function (x, t, b, c, d) {
			return c*((t=t/d-1)*t*t*t*t + 1) + b;
		},
		easeInOutQuint: function (x, t, b, c, d) {
			if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
			return c/2*((t-=2)*t*t*t*t + 2) + b;
		},
		easeInSine: function (x, t, b, c, d) {
			return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
		},
		easeOutSine: function (x, t, b, c, d) {
			return c * Math.sin(t/d * (Math.PI/2)) + b;
		},
		easeInOutSine: function (x, t, b, c, d) {
			return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
		},
		easeInExpo: function (x, t, b, c, d) {
			return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
		},
		easeOutExpo: function (x, t, b, c, d) {
			return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
		},
		easeInOutExpo: function (x, t, b, c, d) {
			if (t==0) return b;
			if (t==d) return b+c;
			if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
			return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
		},
		easeInCirc: function (x, t, b, c, d) {
			return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
		},
		easeOutCirc: function (x, t, b, c, d) {
			return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
		},
		easeInOutCirc: function (x, t, b, c, d) {
			if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
			return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
		},
		easeInElastic: function (x, t, b, c, d) {
			var s=1.70158;var p=0;var a=c;
			if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
			if (a < Math.abs(c)) { a=c; var s=p/4; }
			else var s = p/(2*Math.PI) * Math.asin (c/a);
			return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		},
		easeOutElastic: function (x, t, b, c, d) {
			var s=1.70158;var p=0;var a=c;
			if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
			if (a < Math.abs(c)) { a=c; var s=p/4; }
			else var s = p/(2*Math.PI) * Math.asin (c/a);
			return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
		},
		easeInOutElastic: function (x, t, b, c, d) {
			var s=1.70158;var p=0;var a=c;
			if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
			if (a < Math.abs(c)) { a=c; var s=p/4; }
			else var s = p/(2*Math.PI) * Math.asin (c/a);
			if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
			return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
		},
		easeInBack: function (x, t, b, c, d, s) {
			if (s == undefined) s = 1.70158;
			return c*(t/=d)*t*((s+1)*t - s) + b;
		},
		easeOutBack: function (x, t, b, c, d, s) {
			if (s == undefined) s = 1.70158;
			return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
		},
		easeInOutBack: function (x, t, b, c, d, s) {
			if (s == undefined) s = 1.70158; 
			if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
			return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
		},
		easeInBounce: function (x, t, b, c, d) {
			return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
		},
		easeOutBounce: function (x, t, b, c, d) {
			if ((t/=d) < (1/2.75)) {
				return c*(7.5625*t*t) + b;
			} else if (t < (2/2.75)) {
				return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
			} else if (t < (2.5/2.75)) {
				return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
			} else {
				return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
			}
		},
		easeInOutBounce: function (x, t, b, c, d) {
			if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
			return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
		}
	});
	// ****************************************************************
	// ENDE jquery.easing
	// Funktionen zum "schöneren" Ein- und Ausblenden des Layers
	// ****************************************************************

