/*! lightbox JS */
/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d) {
	var k = d.scrollTo = function(a, i, e) {
		d(window).scrollTo(a, i, e)
	};
	k.defaults = {
		axis : 'xy',
		duration : parseFloat(d.fn.jquery) >= 1.3 ? 0 : 1
	};
	k.window = function(a) {
		return d(window)._scrollable()
	};
	d.fn._scrollable = function() {
		return this.map(function() {
			var a = this, i = !a.nodeName || d.inArray(a.nodeName.toLowerCase(), ['iframe', '#document', 'html', 'body']) != -1;
			if(!i)
				return a;
			var e = (a.contentWindow || a).document || a.ownerDocument || a;
			return d.browser.safari || e.compatMode == 'BackCompat' ? e.body : e.documentElement
		})
	};
	d.fn.scrollTo = function(n, j, b) {
		if( typeof j == 'object') {
			b = j;
			j = 0
		}
		if( typeof b == 'function')
			b = {
				onAfter : b
			};
		if(n == 'max')
			n = 9e9;
		b = d.extend({}, k.defaults, b);
		j = j || b.speed || b.duration;
		b.queue = b.queue && b.axis.length > 1;
		if(b.queue)
			j /= 2;
		b.offset = p(b.offset);
		b.over = p(b.over);
		return this._scrollable().each(function() {
			var q = this, r = d(q), f = n, s, g = {}, u = r.is('html,body');
			switch(typeof f) {
				case'number':
				case'string':
					if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)) {
						f = p(f);
						break
					}
					f = d(f, this);
				case'object':
					if(f.is || f.style)
						s = ( f = d(f)).offset()
			}
			d.each(b.axis.split(''), function(a, i) {
				var e = i == 'x' ? 'Left' : 'Top', h = e.toLowerCase(), c = 'scroll' + e, l = q[c], m = k.max(q, i);
				if(s) {
					g[c] = s[h] + ( u ? 0 : l - r.offset()[h]);
					if(b.margin) {
						g[c] -= parseInt(f.css('margin' + e)) || 0;
						g[c] -= parseInt(f.css('border' + e + 'Width')) || 0
					}
					g[c] += b.offset[h] || 0;
					if(b.over[h])
						g[c] += f[i=='x'?'width':'height']() * b.over[h]
				} else {
					var o = f[h];
					g[c] = o.slice && o.slice(-1) == '%' ? parseFloat(o) / 100 * m : o
				}
				if(/^\d+$/.test(g[c]))
					g[c] = g[c] <= 0 ? 0 : Math.min(g[c], m);
				if(!a && b.queue) {
					if(l != g[c])
						t(b.onAfterFirst);
					delete g[c]
				}
			});
			t(b.onAfter);
			function t(a) {
				r.animate(g, j, b.easing, a &&
				function() {
					a.call(this, n, b)
				})

			}

		}).end()
	};
	k.max = function(a, i) {
		var e = i == 'x' ? 'Width' : 'Height', h = 'scroll' + e;
		if(!d(a).is('html,body'))
			return a[h] - d(a)[e.toLowerCase()]();
		var c = 'client' + e, l = a.ownerDocument.documentElement, m = a.ownerDocument.body;
		return Math.max(l[h], m[h]) - Math.min(l[c], m[c])
	};
	function p(a) {
		return typeof a == 'object' ? a : {
			top : a,
			left : a
		}
	}

})(jQuery);

/* Wie schnell soll an eine #scrollto__ID -Stelle gescrollt werden */
var lb_scrollspeed = 800;

/* Eine Funktion aus Produktdetails-Tabelle wurde in den globalen Kontext gehoben */
function checkCfg(getCatRef, getGrpRef, getProdRef) {
	// Funktion gleicht die uebergebenen Werte mit den Werten
	// in der Konfigurations-Datei ab (cfg_details_tables.js)

	var hCfgResult = new Object();
	hCfgResult['category'] = '';
	hCfgResult['group'] = '';
	hCfgResult['product'] = '';

	if(sWhere == "ksb") {
		for(var sCatCfg in hCatProd) {
			if(getCatRef == sCatCfg) {
				for(var sGrpCfg in hCatProd[getCatRef]) {
					if(getProdRef != '') {
						for(var sProdCfg in hCatProd[getCatRef]['article']) {
							if(getProdRef == sProdCfg) {
								hCfgResult['product'] = sProdCfg;
								break;
							}
							if(getProdRef != sProdCfg) {
								hCfgResult['product'] = 'not_defined';
							}
						} // for
					} // if
				}// for
				hCfgResult['category'] = sCatCfg;
				break;
			}// if
			break;
		} // for
	} else {
		for(var sCatCfg in hCatGrpProd) {
			if(getCatRef == sCatCfg) {
				for(var sGrpCfg in hCatGrpProd[getCatRef]) {
					if(getGrpRef == sGrpCfg) {
						if(getProdRef != '') {
							for(var sProdCfg in hCatGrpProd[getCatRef][getGrpRef]['article']) {
								if(getProdRef == sProdCfg) {
									hCfgResult['product'] = sProdCfg;
									break;
								}
								if(getProdRef != sProdCfg) {
									hCfgResult['product'] = 'not_defined';
								}
							} // for
						}// if
						hCfgResult['group'] = sGrpCfg;
						break;
					} // if
				}// for
				hCfgResult['category'] = sCatCfg;
				break;
			}// if
			break;
		} // for
	}// else
	return (hCfgResult);
}// checkCfg


/**
* lightbox_default: standard ohne belt
*/

var fkt_lightbox_default = function() {

	var default_width = 805;
	var default_height = 200;
	var default_belt = 0;
	var default_autoscale = false;
	var default_autodimension = true;
	var default_onstart = function() {

		$("head").append("<link>");
		var css = $("head").children(":last");
		css.attr({
			rel : "stylesheet",
			type : "text/css",
			href : "/_assets_de/module/lightbox/setting_lightbox_default.css"
		});

	};
	var default_onclose = function() {
		$("head").children(":last").remove();
		oVar['scrollTo'] = "";
	};
	var default_oncomplete = function() {
	};
	// scrollen: nach parameter im href-hash-anchor suchen
	if(this.href.indexOf('__') >= 0) {

		var findanchor = this.href.split('__');

		var findtype = findanchor[0];
		var findelement = findanchor[1];

		oVar['scrollTo'] = findelement;

	} else {
		oVar['scrollTo'] = "";
	}

	/* link rev="" -Parameter checken*/
	var rev = $(this).attr("rev");

	var real_width = default_width;
	var real_height = default_height;

	if(rev && rev !== "") {
		var m = {};

		//
		var revmatch = {
			width : /(?:width:)([0-9]+)/i,
			height : /(?:height:)([0-9]+)/i,
			belt : /(?:belt:)([0-9]+)/i,
			scrollbar : /(?:scrollbar:)([0-9]+)/i
		};

		$.each(revmatch, function(i, v) {
			m[i] = v.exec(rev);
		});
		if(m.width) {
			real_width = m.width[1];
			default_autoscale = false;
			default_autodimension = false;
		}
		if(m.height) {
			real_height = m.height[1];
			default_autoscale = false;
			default_autodimension = false;
		}
		if(m.scrollbar) {
			default_oncomplete = function() {

				var scrollbar_height = Number(real_height) - 20;
				var lb_scrollto = oVar['scrollTo'];
				// scrollbarer bereich muss um die hoehe des belt  reduziert werden, sofern ein belt da ist
				if($('#lb_belt').length == 1) {
					var scrollbar_reduce = $('#lb_belt').height();
					scrollbar_height = scrollbar_height - scrollbar_reduce;
				}
				if((oVar['scrollTo'] != "") && $("#" + lb_scrollto).length > 0) {
					$('#lb_cnt').css({
						'height' : scrollbar_height,
						'overflow' : 'auto'
					}).scrollTo($("#" + lb_scrollto), lb_scrollspeed);
				} else {
					$('#lb_cnt').css({
						'height' : scrollbar_height,
						'overflow' : 'auto'
					});

				}

			};
		}

	}

	$.fancybox.showActivity();

	if(default_autodimension == false) {
		$.fancybox({
			'onComplete' : default_oncomplete,
			'onStart' : default_onstart,
			'onClosed' : default_onclose,
			'padding' : 0,
			'autoScale' : default_autoscale,
			'transitionIn' : 'fade',
			'scrolling' : 'no',
			'width' : Number(real_width),
			'height' : Number(real_height),
			'autoDimensions' : default_autodimension,
			'transitionOut' : 'none',
			'type' : 'ajax',
			'href' : this.href

		});
	} else {

		$.fancybox({
			'onComplete' : default_oncomplete,
			'onStart' : default_onstart,
			'onClosed' : default_onclose,
			'padding' : 0,
			'autoScale' : default_autoscale,
			'transitionIn' : 'fade',
			'scrolling' : 'no',
			'autoDimensions' : default_autodimension,
			'transitionOut' : 'none',
			'type' : 'ajax',
			'href' : this.href

		});

	}

	return false;

}

// lightbox_default

	/**
	 * lightbox_extra: mit belt und wenn scrollbars, dann
	 * sind die unter dem belt
	 */

	var fkt_lightbox_extra = function() {
		var default_width = 805;
		var default_height = 600;
		var default_autoscale = false;
		var default_autodimension = true;
		var default_oncomplete = function() {
		};
		var default_onclose = function() {
			$("head").children(":last").remove();
			oVar['scrollTo'] = "";
		};
		var default_onstart = function() {

			$("head").append("<link>");
			var css = $("head").children(":last");
			css.attr({
				rel : "stylesheet",
				type : "text/css",
				href : "/_assets_de/module/lightbox/setting_lightbox_extra.css"
			});

		};
		// scrollen: nach parameter im href-hash-anchor suchen
		if(this.href.indexOf('__') >= 0) {

			var findanchor = this.href.split('__');

			var findtype = findanchor[0];
			var findelement = findanchor[1];

			oVar['scrollTo'] = findelement;

		} else {
			oVar['scrollTo'] = "";
		}

		/* link rev="" -Parameter checken*/
		var rev = $(this).attr("rev");

		var real_width = default_width;
		var real_height = default_height;

		if(rev && rev !== "") {
			var m = {};

			//
			var revmatch = {
				width : /(?:width:)([0-9]+)/i,
				height : /(?:height:)([0-9]+)/i,
				scrollbar : /(?:scrollbar:)([0-9]+)/i
			};

			$.each(revmatch, function(i, v) {
				m[i] = v.exec(rev);
			});
			if(m.width) {
				real_width = m.width[1];
				default_autoscale = false;
				default_autodimension = false;
			}
			if(m.height) {
				real_height = m.height[1];
				default_autoscale = false;
				default_autodimension = false;

			}
			if(m.scrollbar) {
				default_oncomplete = function() {
					var scrollbar_height = Number(real_height);

					if($('#lb_cnt_text').hasClass("pad") == true) {
						scrollbar_height = scrollbar_height - 20;
					}

					var scrollbar_reduce = 0;
					var lb_scrollto = oVar['scrollTo'];

					if($('#lb_cnt_belt').length == 1) {
						scrollbar_reduce = $('#lb_cnt_belt').height();
					}
					scrollbar_height = scrollbar_height - scrollbar_reduce;

					// scrollen: wenn anker vorhanden und scrollziel-parameter da ist
					if((oVar['scrollTo'] != "") && $("#" + lb_scrollto).length > 0) {
						$('#lb_cnt_text').css({
							'height' : scrollbar_height,
							'overflow' : 'auto'
						}).scrollTo($("#" + lb_scrollto), lb_scrollspeed);
					} else {// nicht scrollen:
						$('#lb_cnt_text').css({
							'height' : scrollbar_height,
							'overflow' : 'auto'
						});
					}

				};
			}

		}

		$.fancybox.showActivity();
		$.fancybox({
			'onComplete' : default_oncomplete,
			'onStart' : default_onstart,
			'onClosed' : default_onclose,
			'padding' : 0,
			'autoScale' : default_autoscale,
			'transitionIn' : 'fade',
			'scrolling' : 'no',
			'width' : Number(real_width),
			'height' : Number(real_height),

			'autoDimensions' : default_autodimension,
			'transitionOut' : 'none',
			'type' : 'ajax',
			'href' : this.href

		});
		// lightbox_extra

		return false;
	}

// lightbox_extra

/**
 * lightbox_blank: default ohne padding
 */

var fkt_lightbox_blank = function() {
	var default_width = 805;
	var default_height = 600;
	var default_typ = 'ajax';
	var default_autoscale = false;
	var default_autodimension = true;
	var default_oncomplete = function() {
	};
	var default_onclose = function() {
		$("head").children(":last").remove();
		oVar['scrollTo'] = "";
	};
	var default_onstart = function() {

		$("head").append("<link>");
		var css = $("head").children(":last");
		css.attr({
			rel : "stylesheet",
			type : "text/css",
			href : "/_assets_de/module/lightbox/setting_lightbox_blank.css"
		});

	};
	// scrollen: nach parameter im href-hash-anchor suchen
	if(this.href.indexOf('__') >= 0) {
		//console.log("hat anchor");

		var findanchor = this.href.split('__');

		var findtype = findanchor[0];
		var findelement = findanchor[1];

		oVar['scrollTo'] = findelement;

	} else {
		oVar['scrollTo'] = "";
	}

	/* link rev="" -Parameter checken*/
	var rev = $(this).attr("rev");

	var real_width = default_width;
	var real_height = default_height;

	if(rev && rev !== "") {
		var m = {};

		//
		var revmatch = {
			width : /(?:width:)([0-9]+)/i,
			height : /(?:height:)([0-9]+)/i,
			iframe : /(?:height:)([0-9]+)/i,
			scrollbar : /(?:scrollbar:)([0-9]+)/i
		};

		$.each(revmatch, function(i, v) {
			m[i] = v.exec(rev);
		});
		if(m.width) {
			real_width = m.width[1];
			default_autoscale = false;
			default_autodimension = false;

		}
		if(m.height) {
			real_height = m.height[1];
			default_autoscale = false;
			default_autodimension = false;

		}
		if(m.scrollbar) {
			default_oncomplete = function() {

				var scrollbar_height = Number(real_height);
				var lb_scrollto = oVar['scrollTo'];

				// scrollbar reduzieren
				if($('#lb_belt').length > 0) {
					var scrollbar_reduce = $('#lb_belt').height();
					scrollbar_height = scrollbar_height - scrollbar_reduce;
				}

				// scrollen: wenn anker vorhanden und scrollziel-parameter da ist
				if((lb_scrollto != "") && $("#" + lb_scrollto).length > 0) {
					$('#lb_cnt').css({
						'height' : scrollbar_height,
						'overflow' : 'auto'
					}).scrollTo($("#" + lb_scrollto), lb_scrollspeed);

				} else {// nicht scrollen

					$('#lb_cnt').css({
						'height' : scrollbar_height,
						'overflow' : 'auto'
					});

				}

			};
		}

	}
	$.fancybox.showActivity();
	$.fancybox({
		'onComplete' : default_oncomplete,
		'onStart' : default_onstart,
		'onClosed' : default_onclose,
		'padding' : 0,
		'autoScale' : default_autoscale,
		'transitionIn' : 'fade',
		'scrolling' : 'no',
		'width' : Number(real_width),
		'height' : Number(real_height),

		'autoDimensions' : default_autodimension,
		'transitionOut' : 'none',
		'type' : 'ajax',
		'href' : this.href

	});
	return false;
}

// lightbox_blank

$(document).ready(function() {

	if($.fancybox) {// panic closure :-)

		/* Unsichtbaren DIV-Container als "Clone-Basis" fuer spaeter an das DOM-Ende erzeugen ("anti-hickup"-produktdetails)*/
		$('body').append("<div id='temp_lightbox_content'></div>");

		/**
		 * Presse: Auch Download-urls anzeigen fuer Bilder in "Presse"
		 */
		$("a.lightbox_download").click(function() {

			var downloadurl = this.href;

			$.fancybox({
				'onStart' : function() {
				},
				'title' : '<a href="' + downloadurl + '">' + 'Bild-Download' + '</a>',
				'titlePosition' : 'over',
				'titleShow' : true,
				'href' : downloadurl
			});

			return false;

		});
		/**
		 * produktdetails
		 */
		$("a.lightbox_details").click(function() {

			$.fancybox.showActivity();

			oVar['details_query'] = this.href;

			var default_width = 430;
			var default_height = 600;

			var real_width = default_width;
			var real_height = default_height;

			var default_onstart = function() {

				$.ajaxSetup({
					async : false
				});

				if(oVar['details_js_loaded'] == false) {

					$("#fancybox-content").css({
						'background-color' : '#EEEFF4'
					});

					$.getScript('/_assets_de/module/produkt_tabelle/cfg_popup_details.js', function() {
					});
					$("head").append("<link>");
					var css = $("head").children(":last");
					css.attr({
						rel : "stylesheet",
						type : "text/css",
						href : "/_assets_de/module/produkt_tabelle/popup_details.css"
					});
				}// if(oVar['details_js_loaded']

				$.getScript('/_assets_de/module/produkt_tabelle/control_popup_details.js', function() {
				});
				$.getScript("/" + sLngFld + "/js/rubrik/" + sRubrikWD + "/cfg_popup_details.js", function() {
				});

				$.ajaxSetup({
					async : true
				});

				$("#temp_lightbox_content").html(showTabLightbox());

				var oResultCheckCfg = new Object(checkCfg(sCatRef, sGrpRef, sProdRef));
				var sURLTab = 'url';
				if(oResultCheckCfg['category'] != '') {
					// Objekt-Definition
					// mit HTML-TAG
					// + ID +
					// CSS-Klassen
					var oTabSource = 'table#' + sIDLoadTab + sCSSLoadTab;

					if((oResultCheckCfg['product'] == '') && (oResultCheckCfg['group'] != '')) {

						initTab(oTabSource, '');
					}// if
					else if((oResultCheckCfg['product'] != '') && (oResultCheckCfg['product'] != 'not_defined') && (oResultCheckCfg['group'] == '')) {
						initTab(oTabSource, sProdRef);
					}// else if
					else if((oResultCheckCfg['product'] != '') && (oResultCheckCfg['product'] != 'not_defined') && (oResultCheckCfg['group'] != '')) {
						initTab(oTabSource, sProdRef);
					}
					// else if

				} // if

			};
			var default_oncomplete = function() {
				$("#temp_lightbox_content").html("");
			};
			var default_onclose = function() {

			};
			var default_content = function() {

				return $("div.details_box").clone(true);

			};
			var rev = $(this).attr("rev");

			if(rev && rev !== "") {
				var m = {};

				//
				var revmatch = {
					width : /(?:width:)([0-9]+)/i,
					height : /(?:height:)([0-9]+)/i,
					belt : /(?:belt:)([0-9]+)/i,
					scrollbar : /(?:scrollbar:)([0-9]+)/i
				};

				$.each(revmatch, function(i, v) {
					m[i] = v.exec(rev);
				});
				if(m.width) {
					real_width = m.width[1];
					default_autoscale = false;
					default_autodimension = false;

				}
				if(m.height) {
					real_height = m.height[1];
					default_autoscale = false;
					default_autodimension = false;

				}

			}

			$.fancybox.showActivity();
			$.fancybox({
				'padding' : 0,
				'onStart' : default_onstart,
				'onComplete' : default_oncomplete,
				'onClosed' : default_onclose,
				'autoScale' : false,
				'transitionIn' : 'fade',
				'scrolling' : 'auto',
				'width' : real_width,
				'height' : real_height,
				'autoDimensions' : false,
				'transitionOut' : 'none',
				'content' : default_content
				// content

			});
			// fancybox

			return false;
		});
		// lightbox_details


		$("a.lightbox_default").click(fkt_lightbox_default);
		
		$("a.lightbox_extra").click(fkt_lightbox_extra);

		$("a.lightbox_blank").click(fkt_lightbox_blank);

		/**
		 * lightbox_iframe: iframe ohne padding
		 */

		$("a.lightbox_iframe").click(function() {

			var default_width = 805;
			var default_height = 600;
			var default_typ = 'iframe';
			var default_autoscale = false;
			var default_scrolling = "no";
			var default_autodimension = true;
			var default_oncomplete = function() {
			};
			var default_onclose = function() {
			};
			var default_onstart = function() {
			};
			var rev = $(this).attr("rev");

			var real_width = default_width;
			var real_height = default_height;

			if(rev && rev !== "") {
				var m = {};

				//
				var revmatch = {
					width : /(?:width:)([0-9]+)/i,
					height : /(?:height:)([0-9]+)/i,
					scrollbar : /(?:scrollbar:)([0-9]+)/i,
					preloader : /(?:preloader:)([0-9]+)/i
				};

				$.each(revmatch, function(i, v) {
					m[i] = v.exec(rev);
				});
				if(m.width) {
					real_width = m.width[1];
					default_autoscale = false;
					default_autodimension = false;

				}
				if(m.height) {
					real_height = m.height[1];
					default_autoscale = false;
					default_autodimension = false;

				}
				if(m.scrollbar) {
					default_scrolling = "auto";
				}
				if(m.preloader) {
					var default_onstart = function() {
						// "loading"-Indikator fuer Iframe-Content der ewig braucht um vollstaendig geladen zu sein
						$("#fancybox-content").css({
							"background-image" : "url('/_assets_de/module/lightbox/img/ani_loading02.gif')",
							"background-position" : "center center",
							"background-repeat" : "no-repeat"
						});

					};
					var default_onclose = function() {
						// "loading"-Indikator fuer Iframe-Content entfernen
						$("#fancybox-content").css({
							'background-image' : 'none',
							'background-color' : '#EEEFF4'
						});
					};
				}

			}

			$.fancybox({
				'onComplete' : default_oncomplete,
				'onStart' : default_onstart,
				'onClosed' : default_onclose,
				'padding' : 0,
				'autoScale' : default_autoscale,
				'transitionIn' : 'fade',
				'scrolling' : default_scrolling,
				'width' : Number(real_width),
				'height' : Number(real_height),
				'autoDimensions' : default_autodimension,
				'transitionOut' : 'none',
				'type' : default_typ,
				'href' : this.href
			});
			// lightbox_details

			return false;

		});
		/**
		 * start anchorcheck
		 */
		// anchor als lightbox-trigger verwenden
		// automatisches starten einer lightbox ueber #anchor im url-path
		// mehrere typen ueber syntax getrennt moeglich. zwei underscores
		// __ trennen: type__pathtofile
		// beispiel test.html#img__/testbilder/testbild.jpg
		// alles nur wenn ein anchor mit zwei underscores vorhanden ist
		if((oVar['anchor']) && (oVar['anchor'].indexOf("__") != -1)) {

			// vor den underscores steht der dateityp, dahinter
			// der name zum aufrufen

			var findanchor = oVar['anchor'].split('__');
			var findtype = findanchor[0];
			var findelement = findanchor[1];

			switch (findtype) {
				/**
				 * Bilder automatisch in die Lightbox starten
				 */
				case "img":

					$("a[href$='" + findelement + "']").trigger('click');
					break;
				/**
				 * Lightboxaufruf fuer indexierte Detailsseiten die keine Rahmentemplates haben.
				 */
				case "href":
					$("a[href$='" + findelement + "']").trigger('click');
					break;

				/**
				 * Lightboxaufruf ueber eine Anchor-ID
				 */
				case "id":

					var triggerthis = "a#" + findelement;

					$(triggerthis).trigger('click');
					break;

				/**
				 * Lightboxaufruf ueber eine Anchor-ID., und an eine bestimmte Stelle scrollen
				 */
				case "scrollto":

					var lb_scrollLightbox = findanchor[1].split('|');
					var lb_idtrigger = lb_scrollLightbox[0];
					var lb_scrollto = lb_scrollLightbox[1];
					oVar['scrollTo'] = lb_scrollto;
					var triggerthis = "a#" + lb_scrollLightbox[0];
					$(triggerthis).trigger('click');

					break;
				case "":

					/**
					 * Ohne "type" angabe, wird defaultmaessig ein Link gesucht mit einer ID, und geklickt
					 */
					var triggerthis = "a#" + findelement;
					$(triggerthis).trigger('click');

					break;

				default:

			}

		}

		// end anchorcheck

	}// if($.fancybox)
});

