/**
 * Diverses
 */

var Dialog = {
		
	init: function(rolloId) {
        Dialog.logger("Dialog.load("+rolloId+")");
		var element = $('.rollo'+rolloId+' .cart_params');
		
		$("#dialog").dialog({
						bgiframe: true,
						resizable: false,
						height:180,
						width: 510,
						modal: true,
						autoOpen: false,
						overlay: {
							backgroundColor: '#000',
							opacity: 0.5
						},
						buttons: {
							'Weiter': function() {
								$(this).dialog('close');
								//document.location.href=linkChangeParams.href;
								Rollos.getContent(linkChangeParams.href,1,'');
								// Warenkorb auf (0) zurücksetzen
								// (#main_nav .shopping_cart) -> #num-cart_items
								//alert(linkChangeParams.href)								
								
							},
							'Abbrechen': function() {
								$(this).dialog('close');
								return false;
							}
							
						}
						
			});
		
		element.attr('onclick', 'return false;');
		element.live('click', function() {
			linkChangeParams=this;
			$("#dialog").dialog('open');
			return false;
		});

	},
	
	logger: function(logstring) {
		//log(logstring);
	}
		
};

var Page = {
	load: function(url) {
		Page.logger("Page.load("+url+")");
		rolloId = Rollos.getRolloByHash(url);
		Rollos.getContent(url,rolloId,false);
	},
	
	logger: function(logstring) {
		//log(logstring);
	}
};

var Content = {
    createPrintHeadlines: function(rolloId) {
		Content.logger("Content.createPrintHeadlines("+rolloId+")");
        if (!$(".rollo"+rolloId+" .content .headline h2 .print").size()) {
            var PrintHeadline2 = $(".rollo"+rolloId+" .content .headline h2 img").attr("alt");
            $(".rollo"+rolloId+" .content .headline h2").append('<span class="print">'+PrintHeadline2+'</span>');
    		var PrintHeadline3 = $(".rollo"+rolloId+" .content .headline h3 img").attr("alt");
    		$(".rollo"+rolloId+" .content .headline h3").append('<span class="print">'+PrintHeadline3+'</span>');
		}
	},
	
	initSearch: function() {
        Content.logger("Content.initSearch()");
        
        $("#searchbox").addClass("searchEmpty");
        $("#searchbox").val("Suchbegriff");
        
        $("#searchbox").focus(function() {
            if ($("#searchbox").val() == "Suchbegriff") {
                $("#searchbox").val("");
                $("#searchbox").removeClass("searchEmpty");
            }
        });
        
        $("#searchbox").blur(function() {
            if ($("#searchbox").val() == "") {
                $("#searchbox").addClass("searchEmpty");
                $("#searchbox").val("Suchbegriff");
            }
        });
        
        $(".searchbutton").focus(function() {
            $(this).blur();	
        });
    },
    
    initUsertypeSwitch: function(rolloId) {
        Content.logger("Content.initUsertypeSwitch("+rolloId+")");
        $(".rollo"+rolloId+" .content a").each(function() {
            var link = $(this).attr("href");
            var Ausdruck = /(utype)/;
            Ausdruck.exec(link);
            if (RegExp.$1 == "utype") {
                $(this).addClass("noajax");
                $(this).attr("href",addPreSlash(link));
            }
        });
    },
    
    initUsertypeSwitchHomepage: function() {
        Content.logger("Content.initUsertypeSwitchHomepage()");
        $("a").each(function() {
            var link = $(this).attr("href");
            var Ausdruck = /(utype)/;
            Ausdruck.exec(link);
            if (RegExp.$1 == "utype") {
//                $(this).unbind("click");
                $(this).addClass("noajax");
                $(this).addClass("utype");
                $(this).attr("href",addPreSlash(removeDomain(removePreSlash(link))));
            }
        });
    },
	
	logger: function(logstring) {
		//log(logstring);
	}
};

var TableSorter = {
	init: function(rolloId) {
		TableSorter.logger("TableSorter.init("+rolloId+")");
		if ($(".rollo"+rolloId+" table").size()) {

			$(".rollo"+rolloId+" table").each(function() {
				
                var $table = $(this);

                if ($table.hasClass("nojszebra") || $table.hasClass("dlist")) {
                } else {

    				if ($table.find("th.sortable").size()) {
    					var params = { 	'headers': {},
    									'widgets': ['zebra'] };
    					var counter = 0;
    					
    					$table.find("th").each(function() {
    						var $th = $(this);
    						if ($th.attr("class") != "sortable") {
    							params["headers"][counter] = {};
    							params["headers"][counter]["sorter"] = false;
    						}
    						counter++;
    					});
    					
    					$table.tablesorter(params);
    				} else {
                        $table.find("tbody tr:even").addClass("even");
                        $table.find("tbody tr:odd").addClass("odd");
    				}
    				
    				$table.find("tr th:first-child,tr td:first-child").addClass("first");
              		$table.find("tr th:last-child,tr td:last-child").addClass("last");

                    $table.attr("cellspacing","0");
                
                }

			});

		}

	},
	
	initThickbox: function() {
		TableSorter.logger("TableSorter.initThickbox()");
		if ($("#TB_ajaxContent table").size()) {
			$("#TB_ajaxContent table").each(function() {
				var $table = $(this);
				
				if ($table.find("th.sortable").size()) {
					var params = { 	'headers': {},
									'widgets': ['zebra'] };
					var counter = 0;
					
					$table.find("th").each(function() {
						var $th = $(this);
						if ($th.attr("class") != "sortable") {
							params["headers"][counter] = {};
							params["headers"][counter]["sorter"] = false;
						}
						counter++;
					});
					
					$table.tablesorter(params);
				} else {
					$table.find("tr:even").addClass("even");
					$table.find("tr:odd").addClass("odd");
				}
				
				$table.find("tr th:first-child,tr td:first-child").addClass("first");
              	$table.find("tr th:last-child,tr td:last-child").addClass("last");

                $table.attr("cellspacing","0");

			});
		}
	},
	
	logger: function(logstring) {
		//log(logstring);
	}
	
};


var datepickerActiv = false;
var Datepicker = {
	init: function(rolloId) {
        return false;
		Datepicker.logger("Datepicker.init("+rolloId+")");
		
        if ($(".rollo"+rolloId+" .hasdatepicker").size()) {
			$datep = $(".rollo"+rolloId+" .hasdatepicker").datepicker({
				dateFormat		: 'dd.mm.yy',
				dayNames		: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
				dayNamesMin		: ['So','Mo','Di','Mi','Do','Fr','Sa'],
				dayNamesShort	: ['Son','Mon','Die','Mit','Don','Fre','Sam'],
				monthNames		: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
				monthNamesShort	: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],
				firstDay		: 1
			});
			datepickerActiv = true;
			
		}
        
        
        $(".rollo"+rolloId+" .content").scroll(function() {
            if (datepickerActiv) {
                $datep.datepicker("hide");
                $datep.blur();
            }
        });


	},
	
	
	logger: function(logstring) {
		//log(logstring);
	}
};



var Tooltip = {
	init: function(rolloId) {
        Tooltip.logger("Tooltip.init("+rolloId+")");
		$(".rollo"+rolloId+" .glossary acronym").attr("title","");
		if ($(".rollo"+rolloId+" .glossary").size()) {

            if ($(".rollo"+rolloId+" .glossarytooltipdisplay").closest(".csc-textpic-text").find("ul").size()) {

                // Content-Element manipulieren
                $contentElement = $(".glossarytooltipdisplay").closest(".csc-textpic-text");
                glossarContent = $contentElement.find("p").html();
                $contentElement.find("p").remove();
                restContent = $contentElement.html();

                if ($.browser.msie) {
                    if (restContent.indexOf("<UL") > -1) {
                        restContent = restContent.substr(restContent.indexOf("<UL"));
                    }
                }

                $contentElement.empty();
                $contentElement.append(glossarContent+restContent);
                    
    
                if (!$(".glossarytooltipdisplay ul").size()) {
                    $list = $(".glossarytooltipdisplay").closest(".csc-textpic-text").find("ul");
                    $(".glossarytooltipdisplay").append($list);
                }

            }

//			if (($.browser.msie) && ($.browser.version < 7)) {
                $(".rollo"+rolloId+" .glossary acronym").prepend('<img class="info" src="/fileadmin/templates/images/generell/acronym-no.gif" />');
                $(".rollo"+rolloId+" .glossary").hover(function() {
                    $(this).css({"background":"#5A5A5A", "color": "white"});
                    $(this).find(".info").remove();
                    $(this).find("acronym").prepend('<img class="info" src="/fileadmin/templates/images/generell/acronym-ms.gif" />');
                },function() {
                    $(this).css({"background":"white", "color": "#5A5A5A"});
                    $(this).find(".info").remove();
                    $(this).find("acronym").prepend('<img class="info" src="/fileadmin/templates/images/generell/acronym-no.gif" />');
                });
//            }
            $(".rollo"+rolloId+" .glossary").easytooltip("glossarytooltipdisplay");
		}
	},
	
	logger: function(logstring) {
		//log(logstring);
	}
};

var Shop = {
		
	init: function() {
		Shop.logger("Shop.init()");
        $(".info-icon").click(function() {
			return false;
		});
	},
	
	logger: function(logstring) {
		//log(logstring);
	}
		
};

var Form = {
	init: function(rolloId) {
		Form.logger("Form.init("+rolloId+")");
		if ($(".rollo"+rolloId+" textarea").size()) {
			$(".rollo"+rolloId+" textarea").wrap('<div class="textarea-scroll-container"></div>');
			$(".rollo"+rolloId+" .textarea-scroll-container").jScrollPane();
		}
	},
	
	logger: function(logstring) {
		//log(logstring);
	}
};

var Faqs = {
    init: function(rolloId) {
        Faqs.logger("Faqs.init("+rolloId+")");
        
        Form.faqInit(rolloId);
        
        $(".rollo"+rolloId+" .question").unbind("click");
        $(".rollo"+rolloId+" .question").click(function() {
            if ($(this).parent().find(".hide").size()) {
                $(this).parent().find(".answer").removeClass("hide");
                $(this).parent().addClass("showAnswer");
            } else {
                $(this).parent().find(".answer").addClass("hide");
                $(this).parent().removeClass("showAnswer");
            }
            Scrollbars.init(rolloId);
        });
        
/**
        $(".rollo"+rolloId+" div[class*=content-element]").each(function() {
            $(this).find("p:last").css({"margin-bottom":"0"});
        });
*/        
    
    },
    
    logger: function(logstring) {
		//log(logstring);
	}
	
};

var Flash = {
    init: function(swf) {
        Flash.logger("Flash.init("+swf+")");
        for (i=0; i<swf.length; i++) {
            if (!$("object#"+swf[i].name).size()) {
                swfobject.embedSWF(swf[i].source, swf[i].name, swf[i].width, swf[i].height, "9.0.124","", swf[i].flashvars, swf[i].params, swf[i].params);
                if ($("#"+swf[i].name+" .csc-textpic-text").size()) {
                    $("#"+swf[i].name+" .content-element").show();
                }
                if ($("#"+swf[i].name+" .flashAlternative").size()) {
                    $("#"+swf[i].name+" .flashAlternative").show();
                }
            }
        }
        if ((!$.browser.msie) && (rolloId != 2) && ($('.rollo3 .content .fullsize').size() != 1)) { Scrollbars.init(rolloId); }
        swf = new Array();
    },
    
    getFlashMovie: function(movieName) {
        Flash.logger("Flash.getFlashMovie("+movieName+")");
        var isIE = navigator.appName.indexOf("Microsoft") != -1;
        return (isIE) ? window[movieName] : document[movieName];
    },

    resetFlashLayer: function(rolloId) {
		
        Flash.logger("Flash.resetFlashLayer("+rolloId+")");
        if ($(".rollo"+rolloId+" object#overview").size()) {
            if ((typeof(Flash.getFlashMovie) != "undefined") && (typeof(Flash.getFlashMovie("overview").resetFlashLayer) != "undefined")) {
                Flash.logger("Flash.getFlashMovie(\"overview\").resetFlashLayer()");
                Flash.getFlashMovie("overview").resetFlashLayer();
            }
        }
        if ($(".rollo"+rolloId+" object#flash_70bd3f8db1").size()) {
            if ((typeof(Flash.getFlashMovie) != "undefined") && (typeof(Flash.getFlashMovie("flash_70bd3f8db1").resetFlashLayer) != "undefined")) {
                Flash.logger("Flash.getFlashMovie(\"overview\").resetFlashLayer()");
                Flash.getFlashMovie("flash_70bd3f8db1").resetFlashLayer();
            }
        }
        if ($(".rollo"+rolloId+" .flv object").size()) {
            if (typeof(flvPlayer.sendEvent) != "undefined") {
                Flash.logger("flvPlayer.sendEvent('STOP')");
                flvPlayer.sendEvent('STOP');
            }
        }
		
		/**
		 * 20100930 BM TPO
		 * Teile des obigen Quellcodes scheinen keine Wirkung zu haben?
		 * Hier wird der Flash Film bei schliessendem Rollo entfernt und
		 * anstelle ein Hintergrundbild (Dummy) mit Link angezeigt.
		 */

		 if(rolloId == 2) {
			if ($(".rollo2 object").size()) {
				if (typeof(swfobject.removeSWF) != "undefined") {
					Flash.logger("swfobject.removeSWF();");
					swfobject.removeSWF("interaktiv-overview");
				}
			}

			if (typeof rollo[2].url == 'undefined') {
				rollo[2].url = '/de/home/';
			}

			$(".rollo2").addClass("inactiveFlash");
			//$(".rollo2").append("<a href=\"/de/entega-interaktiv/showSpecial/iglu/\" id=\"interaktivLink\" class=\"internal-link\">&nbsp;</a>");
			$(".rollo2").append("<a href=\"" + rollo[2].url + "\" id=\"interaktivLink\" class=\"internal-link\">&nbsp;</a>");

		}

    },

    restartFlashLayer: function(rolloId) {
        Flash.logger("Flash.restartFlashLayer("+rolloId+")");

		/**
		 * 20100930 BM TPO
		 * Hier werden der Flash Dummy und der Link bei öffnendem Rollo entfernt.
		 */
		if(rolloId == 2) {
			$(".rollo2").remove("interaktivLink");
			$(".rollo2").removeClass("inactiveFlash");
		}
		
        if ($(".rollo"+rolloId+" object#overview").size()) {
            if ((typeof(Flash.getFlashMovie) != "undefined") && (typeof(Flash.getFlashMovie("overview").restartFlashLayer) != "undefined")) {
                Flash.logger("Flash.getFlashMovie(\"overview\").restartFlashLayer()");
                Flash.getFlashMovie("overview").restartFlashLayer();
            }
        }
        if ($(".rollo"+rolloId+" object#flash_70bd3f8db1").size()) {
            if ((typeof(Flash.getFlashMovie) != "undefined") && (typeof(Flash.getFlashMovie("flash_70bd3f8db1").restartFlashLayer) != "undefined")) {
                Flash.logger("Flash.getFlashMovie(\"flash_70bd3f8db1\").restartFlashLayer()");
                Flash.getFlashMovie("flash_70bd3f8db1").restartFlashLayer();
            }
        }
    },
    
    showFlashSpecial: function(id) {
        Flash.logger("Flash.showFlashSpecial("+id+")");
        if ($(".rollo"+rolloId+" object#overview").size()) {
            var overviewFlash = Flash.getFlashMovie("overview");
            if (typeof overviewFlash.showFlashSpecial == 'function') { 
                overviewFlash.showFlashSpecial(id);
            }
        }
    },
    
    logger: function(logstring) {
		//log(logstring);
	}

};


var InfoIcons = {

    init: function(rolloId) {
        $(".rollo"+rolloId+" .infoIcon").append('<img src="/fileadmin/templates/images/generell/acronym-no.gif" width="4" height="8" />');
        $(".rollo"+rolloId+" .infoIcon").hover(function() {

            if(!document.getElementById('infoIconLayer')) {
               $("body").append('<div id="infoIconLayer">&nbsp;</div>');
               $("#infoIconLayer").css({"position": "absolute", "z-index": "1001"});
            }
            
            infoLayerId = $(this).attr("rel");
            $("#infoIconLayer").html($("#"+infoLayerId).html());
            $("#infoIconLayer").addClass('rolloLayer'+rolloId);
            infoLayerHeight = $("#infoIconLayer").height();
            
            infoLayerLeft = ($(this).offset().left);
            infoLayerTop = ($(this).offset().top);
            
            infoLayerTop = infoLayerTop - infoLayerHeight - 25;

            $("#infoIconLayer").css({"left": infoLayerLeft, "top" : infoLayerTop});
            $("#infoIconLayer").show();

            $(this).find("img").attr("src","/fileadmin/templates/images/generell/acronym-ms.gif");
            $(this).css({'background':'#5A5A5A','cursor':'help'});

        }, function() {
            $("#infoIconLayer").hide();
            $(this).find("img").attr("src","/fileadmin/templates/images/generell/acronym-no.gif");
            $(this).css({'background':'white','cursor':'default'});
        });
    },
    
    logger: function(logstring) {
		//log(logstring);
	}

};



var flvPlayer = null; 
// Will be called from the flv player itself
function playerReady(thePlayer) {
    Flash.logger("playerReady("+thePlayer+")");
    flvPlayer = window.document[thePlayer.id];
};

var Facebook = {

    /* Generates an URL-specific Like-Button */
    like: function(url) {
        url = location.protocol + "//" + 'www.entega.de' /* location.host */ + url;          
        $('fb\\:like').remove();
        $('#fb-like').html('<fb:like href="' + url + '" send="false" layout="button_count" width="90" show_faces="false" font=""></fb:like>');
        if (typeof FB  != "undefined")  {
            FB.XFBML.parse(document.getElementById('fb-like'));
        }
    }
    
};

var Google = {
    track: function(url) {
    	// Reinitialisiere Facebook Like Button
        Facebook.like(url);
        
        Google.logger("Google.track("+url+")");
        Google.logger("pageTracker._trackPageview("+removeDomain(url)+")");
        pageTracker._trackPageview(removeDomain(url));
    },
    
    logger: function(logstring) {
		//log(logstring);
	}
};

if (!Array.prototype.forEach) {
	Array.prototype.forEach = function(fun /*, thisp*/) {
		var len = this.length;
		if (typeof fun != "function")
			throw new TypeError();
		
		var thisp = arguments[1];
		for (var i = 0; i < len; i++) {
			if (i in this)
				fun.call(thisp, this[i], i, this);
		}
	};
}

// AnythingSlider Steuerung für Interaktiv Rollo.
// Es wird lediglich ein stoppen des Sliders benötigt. Gestartet wird durch aufruf der
// home URL.
var InteraktivSlider = {
	stopSlider: function() {
		if ($(".rollo2 .slider-buehne").size()) {
			$(".rollo2 .slider-buehne .anythingControls").hide();
			try {
				$(".rollo2 .slider-buehne .slider").data("AnythingSlider").startStop(false);
			} catch (e) {
			}
		}
	}
};

Aufklappmodul = function(modulId, onMerkzettel) {

	var base = this, o;

	base.modulId = modulId;
	base.onMerkzettel = onMerkzettel;

	if (base.onMerkzettel) {
		if ($.browser.name == 'msie' && $.browser.versionNumber <= 7) {
			base.domElm = $('.aufklappmodul').parents('.merkzettel-popup').find('#' + modulId);
		} else {
			base.domElm = $('.aufklappmodul#' + modulId).parents('.merkzettel-popup').find('#' + modulId);
		}
	} else {
		base.domElm = $('#' + modulId);
	}

	base.cid = modulId.replace(/.*?-([0-9]*)/, '$1');
	base.saveLink = base.domElm.find('a.merken');
	base.pageLink = base.domElm.find('a.pagelink');
	base.pdfFileName = base.domElm.find('.csc-uploads-fileName a').attr('href');
	base.pdfLink = base.domElm.find('a.pdf');
	base.infoList = base.domElm.find('ul.info');
	base.infoItem = base.domElm.find('ul.info li.skel').clone();

	// Initialize Module
	base.init = function() {
		
		base.logger('Aufklappmodul.init(' + base.modulId + ')');

		if (base.domElm.attr('rel') != 'initialized') {
			base.prepareSummary();
			base.prepareDetail();
			
			// Layout 1 means, show detail view directly
			// But only show detail view if not on 'merkzettel*
			if (base.domElm.parent('.layout1').size() && base.domElm.parents('.merkzettel-popup').size() == 0)  {
				base.domElm.find('.detailansicht').show();
				base.domElm.find('.zusammenfassung').hide();
			}

			// Layout 'hidden' means that this module has to be loaded, but is
			// hidden on regular pages
			if (base.domElm.parent('.hidden').size() && base.domElm.parents('.merkzettel-popup').size() == 0 && base.domElm.parents('#produktberater-layer').size() == 0) {
				$('#ce' + base.cid).hide();
			}
			
			// It's only possible to check this on 'merkzettel' because otherwise
			// a race condition exists and the 'merkzettel' doesn't yet know
			// about its modules.
			if (base.onMerkzettel) {
				if (merkzettel.hasElement(base.cid)) {
					base.removeSaveButton();
				} else {
					base.showSaveButton();
				}
			}

			// Mark object as initialized so it doesn't get reinitialized so easily
			base.domElm.attr('rel', 'initialized');

			// push this module into the module array
			aufklappmodule.push(base);
			
			// Reinitialize scrollbars
			base.updateModule(0, 2000);
		} else {
			base.logger(base.modulId + ' already initialized. Nothing to do.');
		}
	};
	
	// Prepare Summary View
	base.prepareSummary = function() {
		base.logger(base.modulId + '.prepareSummary()');
		
		// modify class string so Internet explorer won't complain
		$(base.domElm.find('.zusammenfassung div')).each(function() {
			var newclass = $(this).attr('class').replace(/[\r\n]/g, "");
			$(this).attr('class', newclass);
		});

		// Show first text with image element as summary
		$firstTextWImage = $(base.domElm.find('.zusammenfassung .textpic').get(0));
		$firstTextWImage.find('.csc-textpic-imagewrap img').css({
			cursor: 'pointer'
		}).bind('click', function() {
			base.showDetails();
		});
		$firstTextWImage.show();
		
		// Link pdf document to pdf button
		base.pdfLink.attr('href', base.pdfFileName); 

		// Show any further text with image elements as info-bubble elements
		// If a link element is found, use it for setting a detailpage link
		base.domElm.find('.zusammenfassung .textpic:gt(0)').each(function() {
			if (!$(this).find('.h2 a').size()) { 
				var image = new Image();
				var infoItem = base.infoItem.clone();
				var textpicImage = $(this).find('.csc-textpic-imagewrap img').clone();
				var textpicText = $(this).find('.csc-textpic-text p').clone();

				image.src = textpicImage.attr('src');
				image.width = textpicImage.attr('width');
				image.height = textpicImage.attr('height');
				image.width = 15;
				image.height = 15;

				infoItem.removeClass('skel');
				infoItem.prepend(image);
				infoItem.find('.bubble').append('<div class="bubbleArrow"></div><div class="bubbleTop"></div><div class="bubbleBottom"></div>');
				infoItem.find('.bubbleBottom').append(textpicText);

				base.infoList.append(infoItem);
			} else {
				if ($.browser.name == 'msie' && $.browser.versionNumber <= 9) {
					// IE <= 9 somehow reorders elements
					var linkSource = $($(this).find('.h2 a').get(0));
				} else {
					var linkSource = $($(this).find('.h2 a').get(1));
				}

				base.pageLink.attr('href', linkSource.attr('href'));
				base.pageLink.html(linkSource.html());
				//base.pageLink.addClass('internal-link');
				base.pageLink.show();

				$firstTextWImage.find(".csc-textpic-text .clear").before(base.pageLink);
				
			}
		});

		// if no external link is found, set detail link to show detail information
		if (!base.domElm.find('.zusammenfassung .textpic:gt(0) .h2 a').size()) {
			var detailLink = $(document.createElement('span'));
			detailLink.bind('click', function() {
				base.showDetails();
				return false;
			});

			detailLink.html('Detailinformationen');
			detailLink.addClass('internal-link');
			detailLink.addClass('detaillink');
			//base.pageLink.after(detailLink);
			$firstTextWImage.find(".csc-textpic-text .clear").before(detailLink);
			base.pageLink.remove();
		}

		// PDF Button und Merken Button in den Text w Image Bereich verschieben
		$firstTextWImage.find(".csc-textpic-text .clear").before(base.domElm.find('.zusammenfassung .pdf'));
		$firstTextWImage.find(".csc-textpic-text .clear").before(base.domElm.find('.zusammenfassung .merken'));
		$firstTextWImage.find(".csc-textpic-text .clear").before(base.domElm.find('.zusammenfassung .gemerkt'));
		$firstTextWImage.find(".csc-textpic-text .clear").before(base.domElm.find('.zusammenfassung .delete'));
		
		// Prepare bubbles
		base.domElm.find('ul.info li').hover(function() {
			$(this).find('.bubble').show();
		}, function() {
			$(this).find('.bubble').hide();
		});
		
		// Prepare 'merkzettel' link
		// (this also counts for detail view
		base.domElm.find('.merken').attr('href', '#');
		base.domElm.find('.merken').unbind('click');
		base.domElm.find('.merken').bind('click', function() {
			if (merkzettelAddState) {
				// Add current module to 'merkzettel', without notice
				if (window.merkzettel_ajax_add_module) merkzettel_ajax_add_module(base.cid, 0);
			} else {
				// Add current module to 'merkzettel', with notice
				if (window.merkzettel_ajax_add_module) merkzettel_ajax_add_module(base.cid, 1);
			}
			return false;
		});
		
		base.domElm.find('.delete').bind('click', function() {
			if (merkzettelRemoveState) {
				if (window.merkzettel_ajax_remove_module) merkzettel_ajax_remove_module(base.cid);
			} else {
				if (window.merkzettel_ajax_remove_module) {
					merkzettel.showRemoveElementLayer(base.cid);
				}
			}
		});

		// Prepare pdf link
		// (this also counts for detail view
		if (typeof base.pdfFileName == 'undefined') {
			base.domElm.find('.pdf').remove();
		} else {
			base.domElm.find('.pdf').show();
		}
	};
	
	// Prepare Detail View
	base.prepareDetail = function() {
		base.logger(base.modulId + '.prepareDetail()');
		
		// Show detail link if module doesn't have Layout 1 (single module)
		if (base.domElm.parent('.layout1').size() == 0 || base.domElm.parents('.merkzettel-popup').size())  {
			var detailLink = $(document.createElement('span'));
			detailLink.bind('click', function() {
				base.hideDetails(1);
				return false;
			});
	
			detailLink.html('Details schlie&szlig;en');
			detailLink.addClass('internal-link');
			detailLink.addClass('detaillink');
			$(base.domElm.find('.detailansicht .modulbutton').get(0)).before(detailLink);
		}
	};
	
	// Switch from summary to detail view
	base.showDetails = function() {
		base.logger(base.modulId + '.showDetails()');

		base.domElm.find('.zusammenfassung').slideUp();
		base.domElm.find('.detailansicht').slideDown('fast', function() {base.updateModule(1); });
			
		// close all other modules on the current page
		aufklappmodule.forEach(function(element, index, array) {
			if (element.modulId != base.modulId) {
				element.hideDetails(0);
			}
		});
	};

	// Switch from detail view to summary
	base.hideDetails = function(doJump) {
		base.logger(base.modulId + '.hideDetails()');

		base.domElm.find('.detailansicht').slideUp('fast', function() {base.updateModule(doJump); });
		base.domElm.find('.zusammenfassung').slideDown();
	};

	// Update module status
	base.updateModule = function(doJump, customTimeout) {
		base.logger(base.modulId + '.updateModule(' + doJump + ', ' + customTimeout + ')');

		var callTimeout = (!customTimeout) ? 500 : customTimeout;
		window.setTimeout(function() {
			base.logger('updating module ' + base.modulId);
			if (base.onMerkzettel) {
				Scrollbars.initThickbox();
			} else {
				if ($(".rollo"+rolloId+" .right").height() > $(".rollo"+rolloId+" .middle").height()) {
					$(".rollo"+rolloId+" .middle").css('height', ($(".rollo"+rolloId+" .right").height()+20));
				} else {
					$(".rollo"+rolloId+" .middle").css('height', 'auto');
				}

				Scrollbars.init(rolloId);
			}
			if (doJump) {
				if (base.onMerkzettel) {
					Thickbox.jumpToAnchor(base.modulId);
				} else {
					Rollos.jumpToAnchor(rolloId,base.modulId);
				}
			}
		}, callTimeout);
	};

	// Remove 'Merken' button
	base.removeSaveButton = function() {
		base.logger(base.modulId + '.removeSaveButton()');

		base.domElm.find('.merken').hide();
		if (base.onMerkzettel) {
			base.domElm.find('.delete').show();
		} else {
			base.domElm.find('.gemerkt').show();
		}
	};

	// Show 'Merken' button
	base.showSaveButton = function() {
		base.logger(base.modulId + '.showSaveButton()');

		base.domElm.find('.merken').show();
		base.domElm.find('.gemerkt').hide();
		base.domElm.find('.delete').hide();
	};

	// Logging
	base.logger = function(logstring) {
		if (window.console && typeof console.log != "undefined") {
			//console.log(logstring);
		}
	};
	
	return this;
};
        
Merkzettel = function() {
	
	var base = this, o;
	
	base.elements = [];
	base.elementCount = 0;
	
	base.init = function() {
		base.logger('Merkzettel.init()');

		// It can happen, if another instance of xajax is running, that these methods
		// get unset. In this case we may not call these functions or xajax will return
		// an error.
		if (!$('.bm_merkzettel_pi1').size() && ($('.tx-bmentegashop-pi1').size() || $('.pm_register_pi1').size())) {
			// Unset all ajax methods until xajax for 'merkzettel' gets reloaded
			window.merkzettel_ajax_get_modules = null;
			window.merkzettel_ajax_count_modules = null;
			window.merkzettel_ajax_add_module = null;
			window.merkzettel_ajax_remove_module = null;
		}

		// Get modules from session          
		if (window.merkzettel_ajax_get_modules) merkzettel_ajax_get_modules();
		if (window.merkzettel_ajax_count_modules) merkzettel_ajax_count_modules();
	};

	base.setElements = function(elements) {
		base.logger('Merkzettel.setElements(' + elements + ')');

		base.elements = elements;
	};

	base.updateElementCount = function() {
		base.logger('Merkzettel.updateElementCount()');

		base.elementCount = base.elements.length;
	};	

	base.hasElement = function(id) {
		base.logger('Merkzettel.hasElement(' + id + ')');

		for (var i=0;i<base.elements.length;i++) {
			if (base.elements[i] == id) return true;
		}
		return false; 
	};

	base.removeElement = function(cid) {
		base.logger('Merkzettel.removeElement(' + cid + ')');
		
		if ($.browser.name == 'msie' && $.browser.versionNumber <= 7) {
			$('.aufklappmodul').parents('.merkzettel-popup').find('#aufklappmodul-' + cid).slideUp('fast', function() { $(this).remove(); });
		} else {
			$('.aufklappmodul#aufklappmodul-'+cid).parents('.merkzettel-popup').find('#aufklappmodul-'+cid).slideUp('fast', function() { $(this).remove(); });
		}
		
		// close 'merkzettel' if no more elements are stored
		if (base.elementCount == 0) {
			//$('#TB_closeWindowButton').click();
		}
		
		// update scrollbar status
		window.setTimeout(function() {
			Scrollbars.initThickbox();
		}, 500);		
	};

	// Call this method if content of 'merkzettel' has been updated.
	// This will update some module information
	base.update = function() {
		base.logger('Merkzettel.update()');
		for (var i=0;i<aufklappmodule.length;i++) {
			// This will remove the save button on all modules already on 'merkzettel'
			if (base.hasElement(aufklappmodule[i].cid)) {
				aufklappmodule[i].removeSaveButton();
			} else {
				aufklappmodule[i].showSaveButton();
			}
		}

		if ($('#produktberater-layer:visible').size()) {
			// Add buttons to footer of pruductfinder layer
			var footer				= $('#produktberater-layer .produktberater-footer');
			var gemerktButton		= $('#produktberater-produkt .aufklappmodul .detailansicht .gemerkt');
			var gemerktButtonNeu	= gemerktButton.clone();
			var merkenButton		= $('#produktberater-produkt .aufklappmodul .detailansicht .merken');
			var merkenButtonNeu		= merkenButton.clone();
			var pdfButton			= $('#produktberater-produkt .aufklappmodul .detailansicht .pdf');

			// Do some thickbox magic (to open merkzettel)
			gemerktButton.unbind('click');
			gemerktButton.addClass('thickbox');
			gemerktButton.removeAttr('thickbox');
			gemerktButton.attr('href', gemerktButton.attr("href") + "?type=8&height=400&width=505");
			tb_init(gemerktButton);

			footer.html('');
	
			// Only show buttons for non-hidden modules
			if (!$('#produktberater-layer .hidden .aufklappmodul').size()) {
				gemerktButtonNeu.appendTo(footer);
				merkenButtonNeu.appendTo(footer);
			}
	
			if (pdfButton.length) {
				var pdfButtonNeu = pdfButton.clone();
				pdfButtonNeu.appendTo(footer);
				pdfButtonNeu.show();
				pdfButton.hide();
			}

			gemerktButton.hide();
			merkenButton.hide();
	
			// Redirect click event
			merkenButtonNeu.unbind('click').click(function() { merkenButton.click(); return false; });
			gemerktButtonNeu.unbind('click').click(function() { gemerktButton.click(); return false; });
	
			// productfinder layer only has one element always available through aufklappmodule[0]
			if (base.hasElement(aufklappmodule[0].cid)) {
				merkenButtonNeu.hide(); 
			} else {
				gemerktButtonNeu.hide(); 
			}

		}

		// show/hide "no modules" block in 'merkzettel'
		if (base.elementCount > 0) {
			// Dev
			//$('#ce7756').hide();		// Dev
			
			// Live
			$('#ce7768').hide();
			$('#ce8051').hide();
			$('#ce8052').hide();
			$('.merkzettelHeader .drucken').show();
		} else {
			// Dev
			//$('#ce7756').show();
			
			// Live
			$('#ce7768').show();
			$('#ce8051').show();
			$('#ce8052').show();
			$('.merkzettelHeader .drucken').hide();
		}
	};

	// Shows info layer after an element has been added
	base.showElementAddedLayer = function() {
		base.removeAllInfoLayers();

		base.infoLayerWidth = 305;
		base.infoLayerHeight = 115;

		var documentWidth = $(document).width();
		var documentHeight = $(document).height();
		var layerTop = documentHeight / 2 - base.infoLayerHeight / 2;
		var layerLeft = documentWidth / 2 - base.infoLayerWidth / 2;
		
		// Elements for info layer
		// close button
		var closeButton = $(document.createElement('span'));
		closeButton.addClass('infolayer-close');
		closeButton.bind('click', function() {
			base.removeAllInfoLayers();
		});

		// info text
		var infoText = $(document.createElement('p'));
		infoText.addClass('infolayer-notice');
		infoText.html('Das Produkt wurde in den Merkzettel gelegt.');
		
		// checkbox to save state if the layer should be visible again if another element is being removed
		var checkboxSaveStatus = $(document.createElement('label'));
		checkboxSaveStatus.attr('for', 'infolayer-save');
		checkboxSaveStatus.html('<input type="checkbox" value="1" id="infolayer-save" /> Diesen Hinweis nicht mehr anzeigen');

		// button to show 'merkzettel'
		var buttonShowMerkzettel = $(document.createElement('a'));
		buttonShowMerkzettel.addClass('modulbutton');
		buttonShowMerkzettel.addClass('anzeigen');
		buttonShowMerkzettel.html('Merkzettel anzeigen');
		buttonShowMerkzettel.addClass('thickbox');
		buttonShowMerkzettel.attr('href', '/de/top-navigation/merkzettel/?type=8&height=400&width=505');
		tb_init(buttonShowMerkzettel);
		imgLoader = new Image();// preload image
		imgLoader.src = tb_pathToImage;
		buttonShowMerkzettel.bind('click', function() {
			if ($('#infolayer-save:checked').size()) {
				merkzettelAddState = true;
			}
			base.removeAllInfoLayers();
		});

		// button to close layer
		var buttonCloseLayer = $(document.createElement('a'));
		buttonCloseLayer.addClass('modulbutton');
		buttonCloseLayer.addClass('schliessen');
		buttonCloseLayer.html('schließen');
		buttonCloseLayer.bind('click', function() {
			if ($('#infolayer-save:checked').size()) {
				merkzettelAddState = true;
			}
			base.removeAllInfoLayers();
		});

		// initialize info layer
		var infoLayer = $(document.createElement('div'));
		infoLayer.attr('id', 'merkzettel-infolayer');
		infoLayer.css({
			display: 'none',
			position: 'absolute',
			'z-index': 10000,
			top: layerTop + 'px',
			left: layerLeft + 'px',
			width: base.infoLayerWidth + 'px',
			height: base.infoLayerHeight + 'px'
		});
		infoLayer.append(closeButton);
		infoLayer.append(infoText);
		infoLayer.append(buttonShowMerkzettel);
		infoLayer.append(buttonCloseLayer);
		infoLayer.append(checkboxSaveStatus);
		$('body').append(infoLayer);
		infoLayer.fadeIn();
	};

	// layer to show before an element is to be removed
	base.showRemoveElementLayer = function(cid) {
		base.removeAllInfoLayers();

		base.infoLayerWidth = 260;
		base.infoLayerHeight = 140;
		
		var documentWidth = $(document).width();
		var documentHeight = $(document).height();
		var layerTop = documentHeight / 2 - base.infoLayerHeight / 2;
		var layerLeft = documentWidth / 2 - base.infoLayerWidth / 2;

		// Elements for info layer
		// close button
		var closeButton = $(document.createElement('span'));
		closeButton.addClass('infolayer-close');
		closeButton.bind('click', function() {
			base.removeAllInfoLayers();
		});

		// info headline
		var infoHeadline = $(document.createElement('h1'));
		infoHeadline.addClass('infolayer-headline');
		infoHeadline.html('Element löschen');
		
		// info text
		var infoText = $(document.createElement('p'));
		infoText.addClass('notice');
		infoText.html('Sind Sie sicher, dass Sie dieses Element aus dem Merkzettel löschen wollen?');
		
		// button to close info layer without removing element
		var buttonRemoveNo = $(document.createElement('a'));
		buttonRemoveNo.addClass('modulbutton');
		buttonRemoveNo.addClass('nein');
		buttonRemoveNo.html('Nein, nicht löschen');
		buttonRemoveNo.bind('click', function() {
			base.removeAllInfoLayers();
		});

		// button to remove element and to close layer afterwards
		var buttonRemoveYes = $(document.createElement('a'));
		buttonRemoveYes.addClass('modulbutton');
		buttonRemoveYes.addClass('ja');
		buttonRemoveYes.html('Ja, löschen');
		buttonRemoveYes.bind('click', function() {
			if ($('#infolayer-save:checked').size()) {
				merkzettelRemoveState = true;
			}
			if (window.merkzettel_ajax_remove_module) merkzettel_ajax_remove_module(cid);
			base.removeAllInfoLayers();
		});

		// checkbox to save state if the layer should be visible again if another element is being removed
		var checkboxSaveStatus = $(document.createElement('label'));
		checkboxSaveStatus.attr('for', 'infolayer-save');
		checkboxSaveStatus.html('<input type="checkbox" value="1" id="infolayer-save" /> Diesen Hinweis nicht mehr anzeigen');

		// initialize info layer
		var infoLayer = $(document.createElement('div'));
		infoLayer.attr('id', 'merkzettel-infolayer');
		infoLayer.css({
			display: 'none',
			position: 'absolute',
			'z-index': 10000,
			top: layerTop + 'px',
			left: layerLeft + 'px',
			width: base.infoLayerWidth + 'px',
			height: base.infoLayerHeight + 'px'
		});
		infoLayer.append(closeButton);
		infoLayer.append(infoHeadline);
		infoLayer.append(infoText);
		infoLayer.append(buttonRemoveNo);
		infoLayer.append(buttonRemoveYes);
		infoLayer.append(checkboxSaveStatus);
		$('body').append(infoLayer);
		infoLayer.fadeIn();
	};
	
	base.showPrintLayer = function() {
		base.removeAllInfoLayers();

		// close button
		var closeButton = $(document.createElement('span'));
		closeButton.addClass('infolayer-close');
		closeButton.bind('click', function() {
			base.removeAllInfoLayers();
		});

		// info headline
		var infoHeadline = $(document.createElement('h1'));
		infoHeadline.addClass('infolayer-headline');
		infoHeadline.html('Merkzettel drucken');
		
		// info text
		var infoText = $(document.createElement('p'));
		infoText.addClass('notice');
		//infoText.html('Sie können eine Kurzzusammenfassung drucken oder ein ausführliches Booklet zu allen gemerkten Elementen.');
		infoText.html('Hier können Sie ein ausführliches Booklet zu allen gemerkten Elementen drucken.<br /><br />');
	
		// Zusammenfassung drucken
		var buttonPrintSummary = $(document.createElement('a'));
		buttonPrintSummary.addClass('modulbutton');
		buttonPrintSummary.addClass('print-summary');
		buttonPrintSummary.html('Zusammenfassung');
		buttonPrintSummary.attr('href', '/de/home/?type=9&detail=0');
		buttonPrintSummary.attr('target', '_blank');
		buttonPrintSummary.bind('click', function() {
			base.removeAllInfoLayers();
		});
	
		// Detailausdrick
		var buttonPrintDetails = $(document.createElement('a'));
		buttonPrintDetails.addClass('modulbutton');
		buttonPrintDetails.addClass('print-details');
		buttonPrintDetails.html('Detailausdruck');
		buttonPrintDetails.attr('href', '/de/home/?type=9&detail=1');
		buttonPrintDetails.attr('target', '_blank');
		buttonPrintDetails.bind('click', function() {
			base.removeAllInfoLayers();
		});

		// Flyout Ecke

		var infoLayer = $(document.createElement('div'));
		infoLayer.attr('id', 'merkzettel-infolayer');
		infoLayer.css({
			display: 'none',
			position: 'absolute',
			'z-index': 10000,
			top: '-4px',
			left: '47px',
			width: '290px',
			height: '130px'
		});
		infoLayer.html('<div class="bubbleArrow"></div><div class="bubbleTop"></div><div class="bubbleBottom"></div>');
		infoLayerContent = infoLayer.find('.bubbleBottom');
		infoLayerContent.append(closeButton);
		infoLayerContent.append(infoHeadline);
		infoLayerContent.append(infoText);
		//infoLayerContent.append(buttonPrintSummary);
		infoLayerContent.append(buttonPrintDetails);
		$('#TB_title').append(infoLayer);
		infoLayer.fadeIn();
	};

	base.removeAllInfoLayers = function() {
		base.logger('merkzettel.removeAllInfoLayers()');
		$('#merkzettel-infolayer').fadeOut('fast', function() { $(this).remove(); });
	};

	base.showProductfinderLayer = function(param1, param2, elements) {
		base.logger('merkzettel.showProductfinderLayer()');
		
		pbElements = (typeof elements == 'string') ? eval(elements) : elements;
		base.logger(pbElements);

		// Close old container before opening a new one
		if ($('#produktberater-container').size()) {
			base.hideProductfinderLayer();
		}
		
		// Get containers
		var pbContainer = $('#produktberater-container-skel').clone();
		var flashContainer = $('#entega-produktberater').parent();

		pbContainer.attr('id', 'produktberater-container');
		
		// Set breadcrumb
		/*
		pbContainer.find('#breadcrumb .group').html(group);
		pbContainer.find('#breadcrumb .description').html(description);
		*/

		// Setup close button
		pbContainer.find('.closebutton').click(function() {
			base.hideProductfinderLayer();
		});

		// Prev-Navigation
		pbContainer.find('#nav-prev').click(function() {
			base.prevProductfinderElement();
		});

		// Next-Navigation		
		pbContainer.find('#nav-next').click(function() {
			base.nextProductfinderElement();
		});

		// Setup navigation
		var activeElement = null;

		// Build navigation from elements
		for (var i = 0; i < pbElements.length; i++) {
			if (pbElements[i].selected == true) {
				activeElement = pbElements[i];
				pbSelectedElement = i;
			}

		}

		// Just in case there is no element selected, we select the first one to load
		if (activeElement == null) activeElement = pbElements[0];

		// Load content element
		base.updateProductfinderLayer(activeElement);

		// Show product finder layer
		flashContainer.append(pbContainer);
		pbContainer.show();
	};

	base.prevProductfinderElement = function() {
		base.logger('merkzettel.prevProductfinderElement');

		if (pbElements.length) {
			pbElements[pbSelectedElement].selected = false;
			pbSelectedElement = (pbSelectedElement <= 0) ? (pbElements.length-1) : (pbSelectedElement-1);
			pbElements[pbSelectedElement].selected = true;
			base.updateProductfinderLayer(pbElements[pbSelectedElement]);
		}
	};
	
	base.nextProductfinderElement = function() {
		base.logger('merkzettel.nextProductfinderElement');
		
		if (pbElements.length) {
			pbElements[pbSelectedElement].selected = false;
			pbSelectedElement = ((pbSelectedElement+1) >= pbElements.length) ? 0 : (pbSelectedElement+1);
			pbElements[pbSelectedElement].selected = true;
			base.updateProductfinderLayer(pbElements[pbSelectedElement]);
		}
	};

	base.updateProductfinderLayer = function(pbElement) {
		base.logger('merkzettel.updateProductfinderLayer()');
		base.logger(pbElement);

		var preloader = '<div class="loader"><img src="/fileadmin/templates/images/generell/pbloader.gif" width="43" height="11" /></div>';
		$('#produktberater-produkt').html(preloader);
		$('#produktberater-produkt').jScrollPaneRemove();
		$('#produktberater-layer .produktberater-header h2').html('');
		$('#produktberater-layer .produktberater-footer').html('');
			
		// Get Module
		merkzettel_ajax_get_module(pbElement.id);
	};

	base.hideProductfinderLayer = function() {
		base.logger('merkzettel.hideProductfinderLayer()');

		$('#produktberater-layer .produktberater-header h2').html('');
		$('#produktberater-layer .produktberater-footer').html('');

		var pbContainer = $('#produktberater-container');
		pbContainer.hide();
		pbContainer.remove();
		
		// Fade-In Flash Content
		$('#entega-produktberater').get(0).closeContent();
	};

	base.cleanupProductfinderProduct = function(cid) {
		base.logger('merkzettel.cleanupProductfinderProduct(' + cid + ')');
		
		// Reset module array because we never show more than one module
		aufklappmodule = [];

		// Initialize module
		var modul = new Aufklappmodul('aufklappmodul-'+cid, 0);
		modul.init();

		$('#produktberater-produkt .aufklappmodul .detaillink').remove();
		$('#produktberater-produkt .aufklappmodul .detailansicht div.h2:first').remove();
		$('#produktberater-produkt .aufklappmodul .zusammenfassung').hide();
		$('#produktberater-produkt .aufklappmodul .detailansicht').show();
		
		// Finally call update to show module buttons
		base.update();

		$('#produktberater-produkt').jScrollPane({
			scrollbarWidth: 15,
			showArrows: true,
			animateTo: false,
			maintainPosition:true
		});

		// Set productfinder title
		$('#produktberater-layer .produktberater-header h2').html(pbElements[pbSelectedElement].title);
	};

	// Logging
	base.logger = function(logstring) {
		if (window.console && typeof console.log != "undefined") {
			//console.log(logstring);
		}
	};

	return this;
}

function closeContent() {
	console.log('closeContent()');
}

/* deprecated, use showInfoLayer */
function showInfoBubble(e) {
	$(e).parent().find('.bubble-info').show();
	if ($(e).parent().hasClass('info-container')) {
		$(e).parent().css('position', 'relative');
	}
}

/* deprecated, use hideInfoLayer */
function hideInfoBubble(e) {
	$(e).parent().find('.bubble-info').hide();
	if ($(e).parent().hasClass('info-container')) {
		$(e).parent().css('position', 'static');
	}
}

function showInfoLayer(infoFieldId, offsetX, offsetY) {
	var bubble_div_id = "info_msg_for_"+infoFieldId;
	var container_div_id = "info_container_for_"+infoFieldId;

//	if ($("#TB_ajaxContent").size()) {
//		$errorField = $("#TB_ajaxContent #"+container_div_id);
//		$($errorField).show();
//		leftPos = $($errorField).offset().left;
//		topPos = $($errorField).offset().top;
//		$($errorField).hide();
//		$($errorField).clone().appendTo("body");
//		$("body #"+bubble_div_id+":last").addClass("bubble-info");
//	} else {
		$infoContainer = $("#content-full-width").find("#info_container_for_"+infoFieldId);
		leftPos = $($infoContainer).offset().left;
		topPos = $($infoContainer).offset().top;		

		$infoBubble = $('#info_msg_for_' + infoFieldId);
		
		$infoBubble.clone().attr('id', 'clone_of_'+bubble_div_id).appendTo("body");
		$infoBubbleClone = $('#clone_of_'+bubble_div_id);
//	}

	if (leftPos) {
        leftPosition = leftPos;
	} 
	
	offsetX = (offsetX == null) ? 15 : offsetX;
	offsetY = (offsetY == null) ? -5 : offsetY;
	leftPosition += offsetX;
	topPos += offsetY;

	
	$infoBubbleClone.css({
		"position"	:	"absolute",
		"left"      :	leftPosition+"px",
		"top"		:	topPos+"px",
		"z-index"	:	200
	});
	$infoBubbleClone.show();
}

/**
 * Displays the info bubble below the info icon
 * @param infoFieldId
 * @return
 */
function showInfoLayerBelow(infoFieldId) {
	showInfoLayer(infoFieldId, -140, 20);
}

function hideInfoLayer(field_id) {
	var bubble_div_id = "info_msg_for_"+field_id;
	$infoBubbleClone = $('#clone_of_'+bubble_div_id);
	
	$infoBubbleClone.remove();
}

/** Fügt der vorhandenen Button-Klasse ein "-hover" hinzu */
function showDefaultImage(e) {
	var classes = $(e).attr('class');
	var newClasses = classes.replace(/button-prio(\d)((-\w+)+)/g, 'button-prio$1$2-hover');	
	$(e).attr('class', newClasses);
}

/** Entfernt ein vorhandenes "-hover" von der Button-Klasse */
function showHoverImage(e) {
	var classes = $(e).attr('class');
	var newClasses = classes.replace(/button-prio(\d)((-\w+)+)-hover(\s|$)/g, 'button-prio$1$2$4');	
	$(e).attr('class', newClasses);
}

function isIE6() {
  return ($.browser.msie && $.browser.version==6);
}

function isIE(version) {
  return ($.browser.msie && $.browser.version==version);
}

function isIEGreaterThan(version) {
  return ($.browser.msie && $.browser.version>version);
}

function pageload(hash) {
    History.load(hash);
}

$(function() {
	// initially set cursor to pointer on all rollos 
	$("div.rollo1,div.rollo2,div.rollo3").css("cursor","pointer");
	
	if (!window.location.hash && (window.location.pathname=="/de/home"||window.location.pathname=="/de/home/")) {
		// for startpage, 
		// initially "deactivate" all rollos to set clickhandlers, cursor style and save rollo urls
		Rollos.deactivatePane(1, 176);
		Rollos.deactivatePane(2, 218);
		Rollos.deactivatePane(3, 176);
	}
	if (jQuery.browser.msie) {
		$('.bubblr-info').css({zIndex:10000000,position:'absolute'})
	}	

    // Ajax Debug auf localhost Domains
    if (document.location.href.indexOf("localhost") > 0) {
        ajaxCounter = 0;
        ajaxCounterComplete = 0;
        $("body").ajaxSend(function() {
            $("#loading").slideDown("fast");
            ajaxCounter++;
            ajaxCounterComplete++;
            $("#loading .ajaxCounter").text(ajaxCounter);
            $("#loading .ajaxCounterComplete").text(ajaxCounterComplete);
        });
        $("body").ajaxStop(function() {
            ajaxCounter = 0;
            $("#loading .ajaxCounter").text(ajaxCounter);
            $("#loading").slideUp("fast");
        });
        $("body").ajaxComplete(function() {
            ajaxCounter--;
            $("#loading .ajaxCounter").text(ajaxCounter);
        });
    
    };
    
    
});

var FixedMarginal = {
	init: function(rolloId) {
		FixedMarginal.$marginalElement = $('.rollo' + rolloId + ' div.right');
		$content = $('.rollo' + rolloId + ' div.content');
		
		FixedMarginal.$marginalElement.appendTo($content);
		FixedMarginal.$marginalElement.css('position', 'absolute');
		FixedMarginal.$marginalElement.css('top', '59px');
		FixedMarginal.$marginalElement.css('left', '486px');
		FixedMarginal.$marginalElement.css('z-index', 100);
	}
};


// Extend jQuery by noop method which would be available since version 1.4
(function($) {
	$.fn.noop = function() {
		// do nothing
	};
})(jQuery);

