{"version":3,"file":"jquery.9monate.min.js","sources":["jquery.9monate.js"],"sourcesContent":["// usage: log('inside coolFunc', this, arguments);\n// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/\nwindow.log = function() {\n\tlog.history = log.history || [];\t// store logs to an array for reference\n\tlog.history.push(arguments);\n\targuments.callee = arguments.callee.caller;\n\tif (this.console) console.log(Array.prototype.slice.call(arguments));\n};\n\n// make it safe to use console.log always\n(function(b) {function c() {}for(var d=\"assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn\".split(\",\"),a;a=d.pop();)b[a]=b[a]||c;})(window.console=window.console||{});\n\nif (typeof LL == \"undefined\") {\n\tvar LL = {};\n}\n\nLL.defaults = {\n\t\"calendarIcon\": \"/resources/ver1-0/img/icon-calendar.png\",\n\t\"facebookAppId\": \"\",\n\t\"facebookLoginEnabled\": true,\n\t\"idLoginBox\": \"#loginbox_0\",\n\t\"idLoginForm\": \"#login_0\",\n\t\"idLoginLayer\": \"#login_head\",\n\t\"isLoggedIn\": false,\n\t\"isMobile\": window.innerWidth < 768,\n\t\"textLogin\": \"Anmelden!\",\n\t\"textLogout\": \"Abmelden\",\n\t\"urlLogin\": \"/community-webservice/service/login/\",\n\t\"urlLogout\": \"/community-webservice/service/logout/\",\n\t\"extLoginUrl\": \"/community-webservice/service/extloginuser/\",\n\t\"loginHtml\": \"\",\n\t\"loginErrors\": \"\"\n};\n\nLL.actions = {\n\t\"klick\": function(ivw_context, ga_context) {\n\t\tif ((ivw_context !== \"\") && (typeof IOMm_data !== \"undefined\") && (typeof IOMm !== \"undefined\")) {\n\t\t\ttry {\n\t\t\t\tIOMm(\"pageview\", IOMm_data);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: IVW tracking (via IOMm) failed in LL.actions.klick()\", e);\n\t\t\t}\n\t\t}\n\n\t\tif (ga_context !== \"\") {\n\t\t\tif (!ga_context && (ivw_context !== \"\")) {\n\t\t\t\tga_context = ivw_context;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackPageview', ga_context]);\n\t\t\t} catch(e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in LL.actions.klick()\", e);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (typeof dataLayer !== 'undefined') {\n\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\t'event': 'virtualPageViewTestcase',\n\t\t\t\t\t\t'virtualPageURL': ga_context,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in LL.actions.klick()\", e);\n\t\t\t}\n\t\t}\n\t},\n\n\t// 7.2.5.2.5 // done\n\t\"klick_videobox_thumbnail\": function(args) {\n\t\tvar title = args.title;\n\t\tLL.actions.klick(\"klick_videobox_thumbnail\" + \"_\" + title);\n\t},\n\t\"klick_videobox_pfeil_vor\": function(args) {\n\t\tLL.actions.klick(\"klick_videobox_pfeil_vor\");\n\t},\n\t\"klick_videobox_pfeil_zurueck\": function(args) {\n\t\tLL.actions.klick(\"klick_videobox_pfeil_zurueck\");\n\t},\n\t\"klick_videobox_lightbox_open\": function(args) {\n\t\tvar title = args.title;\n\t\tLL.actions.klick(\"klick_videobox_lightbox_open\" + \"_\" + title, \"\");\n\t},\n\t\"klick_videobox_lightbox_close\": function(args) {\n\t\t//var title = args.title;\n\t\t//LL.actions.klick(\"klick_videobox_lightbox_close\" + \"_\" + title);\n\t},\n\n\t// 7.2.7.2.5 // done\n\t\"klick_f_a_box_pfeil_vor\": function(args) {\n\t\tLL.actions.klick(\"klick_f_a_box_pfeil_vor\");\n\t},\n\t\"klick_f_a_box_pfeil_zurueck\": function(args) {\n\t\tLL.actions.klick(\"klick_f_a_box_pfeil_zurueck\");\n\t},\n\n\t// 7.2.9.2.5 // done\n\t\"klick_navigation_anmelden_lightbox_open\": function(args) {\n\t\tLL.actions.klick(\"\", \"klick_navigation_anmelden_lightbox_open\");\n\t},\n\t\"klick_anmelden_lightbox_ok_close\": function(args) {\n\t\t//LL.actions.klick(\"klick_anmelden_lightbox_ok_close\");\n\t},\n\t\"klick_anmelden_lightbox_manuell_close\": function(args) {\n\t\t//LL.actions.klick(\"klick_anmelden_lightbox_manuell_close\");\n\t},\n\t\"klick_anmelden_lightbox_senden_fehler\": function(args) {\n\t\tLL.actions.klick(\"klick_anmelden_lightbox_senden_fehler\");\n\t},\n\n\t// 7.2.15.2.5\n\t\"klick_nutzer_ranking_reiter\": function(args) {\n\t\tLL.actions.klick(\"klick_nutzer_ranking_reiter\");\n\t},\n\n\t// 7.4.1.2.5 // done\n\t\"klick_top_themen_pfeil_vor\": function(args) {\n\t\tLL.actions.klick(\"klick_top_themen_pfeil_vor\");\n\t},\n\t\"klick_top_themen_pfeil_zurueck\": function(args) {\n\t\tLL.actions.klick(\"klick_top_themen_pfeil_zurueck\");\n\t},\n\n\t// 7.4.2.2.5 // done\n\t\"klick_a_z_reiter\": function(args) {\n\t\tvar button_name = args.button_name;\n\t\tLL.actions.klick(\"klick_a_z_reiter\" + \"_\" + button_name);\n\t},\n\n\t// 7.4.5.2.5 // done\n\t\"klick_teaser_reiter\": function(args) {\n\t\tvar button_name = args.button_name;\n\t\tLL.actions.klick(\"klick_teaser_reiter\" + \"_\" + button_name);\n\t},\n\n\t\"klick_teaser_clip_paging\": function(args) {\n\t\tvar page = args.page;\n\t\tLL.actions.klick(\"klick_teaser_clip_paging\" + \"_\" + page);\n\t},\n\n\t// 7.4.8.2.5\n\t\"klick_f_a_box_reiter\": function(args) {\n\t\tLL.actions.klick(\"klick_f_a_box_reiter\");\n\t},\n\n\t// 7.4.9.2.5\n\t\"klick_kommentarmodul_reiter\": function(args) {\n\t\tLL.actions.klick(\"klick_kommentarmodul_reiter\");\n\t},\n\t\"klick_kommentarmodul_melden\": function(args) {\n\t\tLL.actions.klick(\"klick_kommentarmodul_melden\");\n\t},\n\t\"klick_kommentarmodul_melden_lightbox_manuell_close\": function(args) {\n\t\t//LL.actions.klick(\"klick_kommentarmodul_melden_lightbox_manuell_close\");\n\t},\n\t\"klick_kommentarmodul_melden_lightbox_ok_close\": function(args) {\n\t\t//LL.actions.klick(\"klick_kommentarmodul_melden_lightbox_ok_close\");\n\t},\n\t\"klick_kommentarmodul_melden_lightbox_fehler\": function(args) {\n\t\tLL.actions.klick(\"klick_kommentarmodul_melden_lightbox_fehler\");\n\t},\n\t\"klick_kommentarmodul_bewertung_hilfreich\": function(args) {\n\t\tLL.actions.klick(\"klick_kommentarmodul_bewertung_hilfreich\");\n\t},\n\t\"klick_kommentarmodul_mehr\": function(args) {\n\t\tLL.actions.klick(\"klick_kommentarmodul_mehr\");\n\t},\n\n\t// 7.4.10.2.5\n\t\"klick_fragestellen_anmelden_lightbox_open\": function(args) {\n\t\tLL.actions.klick(\"klick_fragestellen_anmelden_lightbox_open\");\n\t},\n\t\"klick_fragestellen_anmelden_lightbox_ok_close\": function(args) {\n\t\t//LL.actions.klick(\"klick_fragestellen_anmelden_lightbox_ok_close\");\n\t},\n\t\"klick_fragestellen_anmelden_lightbox_manuell_close\": function(args) {\n\t\t//LL.actions.klick(\"klick_fragestellen_anmelden_lightbox_manuell_close\");\n\t},\n\t\"klick_fragestellen_anmelden_lightbox_senden_fehler\": function(args) {\n\t\tLL.actions.klick(\"klick_fragestellen_anmelden_lightbox_senden_fehler\");\n\t},\n\n\t// 7.5.2.2.5 // done\n\t\"klick_karussell_pfeil_vor\": function(args) {\n\t\tLL.actions.klick(\"klick_karussell_pfeil_vor\");\n\t},\n\t\"klick_karussell_pfeil_zurueck\": function(args) {\n\t\tLL.actions.klick(\"klick_karussell_pfeil_zurueck\");\n\t},\n\t\"klick_karussell_button\": function(args) {\n\t\tLL.actions.klick(\"klick_karussell_button\");\n\t},\n\n\t// 7.6.2.2.5 // done\n\t\"klick_inlinebild_lightbox_open\": function(args) {\n\t\tvar title = args.title;\n\t\tLL.actions.klick(\"klick_inlinebild_lightbox_open\" + \"_\" + title);\n\t},\n\t\"klick_inlinebild_lightbox_close\": function(args) {\n\t\t//var title = args.title;\n\t\t//LL.actions.klick(\"klick_inlinebild_lightbox_close\" + \"_\" + title);\n\t},\n\n\t// 7.6.3.2.5 // done\n\t\"klick_fotostrecke_vor\": function(args) {\n\t\tvar headline = args.headline,\n\t\t\ttrigger = args.trigger,\n\t\t\tgaContext = document.location.pathname + document.location.hash;\n\t\tLL.actions.klick(\"klick_fotostrecke_vor\" + \"_\" + headline + \"_\" + trigger, gaContext);\n\t},\n\t\"klick_fotostrecke_zurueck\": function(args) {\n\t\tvar headline = args.headline,\n\t\t\ttrigger = args.trigger,\n\t\t\tgaContext = document.location.pathname + document.location.hash;\n\t\tLL.actions.klick(\"klick_fotostrecke_zurueck\" + \"_\" + headline + \"_\" + trigger, gaContext);\n\t},\n\n\t// Selftest (GESUND-588)\n\t\"klick_selftest\": function(args) {\n\t\tLL.actions.klick(\"klick_selftest\", \"\");\n\t},\n\n\t\"klick_threads_paging\": function(args) {\n\t\tLL.actions.klick(\"klick_threads_paging\" + \"_\" + args.button_name);\n\t},\n\t\"klick_usergallery_paging\": function(args) {\n\t\tLL.actions.klick(\"klick_usergallery_paging\" + \"_\" + args.button_name);\n\t},\n\t\"klick_usergallery_image\": function(args) {\n\t\tLL.actions.klick(\"klick_usergallery_image\" + \"_\" + args.id);\n\t},\n\t\"klick_userquestions_tab\": function(args) {\n\t\tLL.actions.klick(\"klick_userquestions_tab\" + \"_\" + args.button_name);\n\t},\n\n\t\"klick_user_friendship\": function(args) {\n\t\tLL.actions.klick(\"klick_user_friendship\");\n\t},\n\n\t\"klick_hibbelliste_paging\": function(args) {\n\t\tLL.actions.klick(\"klick_hibbelliste_paging\" + \"_\" + args.button_name);\n\t},\n\n\t\"klick_expertise_vor\": function(args) {\n\t\tvar headline = args.headline,\n\t\t\ttrigger = args.trigger,\n\t\t\tgaContext = document.location.pathname + document.location.hash;\n\t\tLL.actions.klick(\"klick_expertise_vor\" + \"_\" + headline + \"_\" + trigger, gaContext);\n\t},\n\t\"klick_expertise_zurueck\": function(args) {\n\t\tvar headline = args.headline,\n\t\t\ttrigger = args.trigger,\n\t\t\tgaContext = document.location.pathname + document.location.hash;\n\t\tLL.actions.klick(\"klick_expertise_zurueck\" + \"_\" + headline + \"_\" + trigger, gaContext);\n\t},\n};\n\nLL.defaults.loginLayerOptions = {\n\t\"cache\": false,\n\t\"cookiename\": \"communitycookie\",\n\t\"html\": \"\",\n\t\"idLoginBox\": LL.defaults.idLoginBox,\n\t\"idLoginForm\": LL.defaults.idLoginForm,\n\t\"idLoginLayer\": LL.defaults.idLoginLayer,\n\t\"idUsername\": \"#username\",\n\t\"idPassword\": \"#password\",\n\t\"idSaveLogin\": \"#saveLogin\",\n\t\"logoutCallback\": \"\",\n\t\"textLogin\": LL.defaults.textLogin,\n\t\"textLogout\": LL.defaults.textLogout,\n\t\"urlLayer\": \"\",\n\t\"urlLogin\": LL.defaults.urlLogin,\n\t\"urlLogout\": LL.defaults.urlLogout,\n\t\"postLoginAction\": function () {\n\t},\n\t\"redirectAfterLoginUrl\": \"\",\n\t\"redirectExtLoginNotFoundUrl\": \"\"\n};\n\nLL.client = {\n\t\"os\": {\n\t\t\"name\": null,\n\t\t\"version\": null\n\t}\n};\n\nfunction detectClient() {\n\tvar ua = navigator.userAgent;\n\n\tif (ua.indexOf(\"Android\") >= 0) {\n\t\tLL.client.os.name = \"Android\";\n\t}\n\tif ((ua.indexOf(\"iPad\") >= 0) || (ua.indexOf(\"iPod\") >= 0) || (ua.indexOf(\"iPhone\") >= 0)) {\n\t\tLL.client.os.name = \"iOS\";\n\t\tvar osName = \"OS \";\n\t\tua = ua.replace('_', '.');\n\t\tLL.client.os.version = parseFloat(ua.slice(ua.indexOf(osName) + osName.length));\n\t}\n\n\tif (LL.client.os.name && !LL.client.os.version) {\n\t\tvar osName = LL.client.os.name;\n\t\tLL.client.os.version = parseFloat(ua.slice(ua.indexOf(osName) + osName.length + 1));\n\t}\n}\n\n// cookie handling\nfunction createCookie(name, value, days) {\n\tif (days) {\n\t\tcreateCookieSeconds(name, value, days * 24 * 60 * 60);\n\t} else {\n\t\tcreateCookieSeconds(name, value);\n\t}\n}\n\nfunction createCookieSeconds(name, value, seconds) {\n\tif (seconds) {\n\t\tvar date = new Date();\n\t\tdate.setTime(date.getTime() + (seconds * 1000));\n\t\tvar expires = \"; expires=\" + date.toGMTString();\n\t} else {\n\t\tvar expires = \"\";\n\t}\n\tdocument.cookie = name + \"=\" + value + expires + \"; path=/\";\n}\n\nfunction readCookie(name) {\n\tvar nameEQ = name + \"=\";\n\tvar ca = document.cookie.split(';');\n\tfor (var i = 0; i < ca.length; i++) {\n\t\tvar c = ca[i];\n\t\twhile (c.charAt(0) == ' ') c = c.substring(1, c.length);\n\t\tif (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\n\t}\n\treturn null;\n}\n\nfunction eraseCookie(name) {\n\tcreateCookie(name, \"\", -1);\n}\n\n// fw functions\nfunction fwAjax(options) {\n\tvar opts = $.extend({\n\t\tcontext: document.body,\n\t\tdata: null,\n\t\terror: null,\n\t\tsuccess: null,\n\t\ttarget: null,\n\t\ttype: \"POST\",\n\t\turl: \"\"\n\t}, options);\n\n\tvar data = opts.data;\n\tif (!data && (opts.type == \"POST\")) {\n\t\tdata = \"nocache=\" + (Math.random() * 100000);\n\t}\n\n\t$.ajax({\n\t\t\"cache\": false,\n\t\t\"context\": opts.context,\n\t\t\"data\": data,\n\t\t\"type\": opts.type,\n\t\t\"url\": opts.url\n\t})\n\t\t.success(function (data, textStatus, jqXHR) {\n\t\t\tif (opts.target) {\n\t\t\t\t$(opts.target).html(data);\n\t\t\t}\n\t\t\tif (typeof opts.success == \"function\") {\n\t\t\t\topts.success.call();\n\t\t\t}\n\t\t})\n\t\t.error(function (jqXHR, textStatus, errorThrown) {\n\t\t\tlog(jqXHR, textStatus, errorThrown);\n\t\t\tif (typeof opts.error == \"function\") {\n\t\t\t\topts.error.call();\n\t\t\t}\n\t\t});\n}\n\nfunction fwUpdateURLParameter(url, key, value) {\n\tvar re = new RegExp(\"([?|&])\" + key + \"=.*?(&|$)\", \"i\");\n\tseparator = url.indexOf('?') !== -1 ? \"&\" : \"?\";\n\tif (url.match(re)) {\n\t\treturn url.replace(re, '$1' + key + \"=\" + value + '$2');\n\t} else {\n\t\treturn url + separator + key + \"=\" + value;\n\t}\n}\n\n// GeoLocation\nfunction logGeoLocationError(error) {\n\tswitch (error.code) {\n\t\tcase error.PERMISSION_DENIED:\n\t\t\tlog(\"User denied the request for Geolocation.\");\n\t\t\tbreak;\n\t\tcase error.POSITION_UNAVAILABLE:\n\t\t\tlog(\"Location information is unavailable.\");\n\t\t\tbreak;\n\t\tcase error.TIMEOUT:\n\t\t\tlog(\"The request to get user location timed out.\");\n\t\t\tbreak;\n\t\tcase error.UNKNOWN_ERROR:\n\t\t\tlog(\"An unknown error occurred.\");\n\t\t\tbreak;\n\t}\n}\n\n// poll handling\nfunction ll_pollGoBack(widgetDiv) {\n\t$('#' + widgetDiv + '_r').hide();\n\t$('#' + widgetDiv).show();\n\n\tLL.actions.klick(\"klick_voting_goback\");\n\n\treturn false;\n}\n\nfunction ll_pollResults(widgetDiv) {\n\tvar url = $(\"#\" + widgetDiv + '_rb').attr(\"href\");\n\t$.ajax({\n\t\t\"cache\": false,\n\t\t\"data\": \"nocache=\" + (Math.random() * 100000),\n\t\t\"type\": \"POST\",\n\t\t\"url\": url\n\t})\n\t\t.success(function (data, textStatus, jqXHR) {\n\t\t\t$(\"#\" + widgetDiv).hide();\n\t\t\t$(\"#\" + widgetDiv + '_r')\n\t\t\t\t.html(data)\n\t\t\t\t.show();\n\t\t\tLL.actions.klick(\"klick_voting_results\");\n\t\t})\n\t\t.error(function (jqXHR, textStatus, errorThrown) {\n\t\t\tlog(jqXHR, textStatus, errorThrown);\n\t\t});\n\n\treturn false;\n}\n\nfunction reloadAds() {\n\ttry {\n\t\tif (typeof Spark !== \"undefined\") {\n\t\t\tlog(\"Reloading Spark ads ...\");\n\n\t\t\tSpark.cmd.push(function() {\n\t\t\t\tSpark.definitionService.refresh();\n\t\t\t});\n\t\t}\n\n\t\tif (typeof ASCDP !== \"undefined\") {\n\t\t\tlog(\"Reloading ASMI ads ...\");\n\n\t\t\tASCDP.adS.reloadAds();\n\t\t}\n\n\t\tif (typeof adition !== \"undefined\") {\n\t\t\tlog(\"Reloading Adition ads ...\");\n\t\n\t\t\tadition.srq.push(function(api) {\n\t\t\t\tapi.load().completeRendering();\n\t\t\t});\n\t\t}\n\t} catch (e) {\n\t\tlog(\"Error: Failed reloading ads.\", e);\n\t}\n}\n\nfunction setDatepickerLanguage() {\n\t$.datepicker.regional['de'] = {\n\t\tchangeMonth: true,\n\t\tchangeYear: true,\n\t\tcloseText: 'schließen',\n\t\tprevText: '<zurück',\n\t\tnextText: 'Vor>',\n\t\tcurrentText: 'heute',\n\t\tmonthNames: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],\n\t\tmonthNamesShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n\t\tdayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],\n\t\tdayNamesShort: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n\t\tdayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n\t\tweekHeader: 'Wo',\n\t\tdateFormat: 'dd.mm.yy',\n\t\tfirstDay: 1,\n\t\tisRTL: false,\n\t\tshowMonthAfterYear: false,\n\t\tshowOtherMonths: false,\n\t\tselectOtherMonths: false,\n\t\tyearSuffix: ''\n\t};\n\t$.datepicker.setDefaults($.datepicker.regional['de']);\n}\n\n(function ($) {\n\t// global object with settings\n\tvar ll = {\n\t\t// ie6 test\n\t\t\"isIE\": (function () {\n\t\t\treturn /MSIE/i.test(navigator.userAgent);\n\t\t})(),\n\t\t// get url params as object\n\t\t\"params\": (function () {\n\t\t\tvar params = {};\n\t\t\tvar rawParams = window.location.search;\n\t\t\tif (rawParams === \"\") {\n\t\t\t\treturn params;\n\t\t\t} else {\n\t\t\t\trawParams = rawParams.substring(rawParams.indexOf(\"?\") + 1).split(\"&\");\n\t\t\t\tfor (var idx in rawParams) {\n\t\t\t\t\tvar param = rawParams[idx].split(\"=\");\n\t\t\t\t\tparam[1] === \"true\" ? param[1] = true : param[1] = false;\n\t\t\t\t\tparams[param[0]] = param[1];\n\t\t\t\t}\n\t\t\t\treturn params;\n\t\t\t}\n\t\t})(),\n\t\tgetLightboxLayerTop: function (layerInnerHeight) {\n\t\t\tvar viewportHeight = $(window).height();\n\t\t\tvar viewportOffset = $(window).scrollTop();\n\t\t\tvar isTouchDevice = $(\"html\").hasClass(\"touch\");\n\n\t\t\tif (!isTouchDevice) {\n\t\t\t\treturn (viewportOffset + (viewportHeight / 2 - layerInnerHeight / 2));\n\t\t\t} else {\n\t\t\t\treturn (viewportOffset + 40);\n\t\t\t}\n\t\t}\n\t};\n\n\t(function () {\n\t\tif (ll.params.dev) {\n\t\t\t$(\".dev, .dev_q\").show();\n\t\t}\n\t})();\n\n\n\t// Helper function to get the right index for galleries.\n\tvar getIndex = function (idx, length) {\n\t\tif (idx >= length) {\n\t\t\treturn idx % length;\n\t\t} else if (idx < 0) {\n\t\t\treturn getIndex(length + (idx % length));\n\t\t} else {\n\t\t\treturn idx;\n\t\t}\n\t};\n\n\n\t$.fn.reverse = [].reverse;\n\n\n\t/**\n\t * Lädt den Inhalt des angebundenen Elements von der im Parameter url übergebenen\n\t * AJAX-URL in periodischem Abstand immer wieder.\n\t *\n\t * @param initial\n\t *\t\t\tDefiniert, ob das erste Laden bereits beim Aufruf passieren soll (default: true).\n\t * @param interval\n\t *\t\t\tDefiniert das Intervall in Millisekunden.\n\t * @param refresh\n\t *\t\t\tDefiniert, ob das Laden periodisch wiederholt werden soll (default: true).\n\t */\n\t$.fn.fwAjaxRefresh = function (options) {\n\t\treturn this.each(function () {\n\t\t\tvar opts = $.extend({\n\t\t\t\tbefore: null,\n\t\t\t\tcontext: document.body,\n\t\t\t\tdata: null,\n\t\t\t\terror: null,\n\t\t\t\tinitial: true,\n\t\t\t\tinterval: null,\n\t\t\t\trefresh: true,\n\t\t\t\tsuccess: null,\n\t\t\t\ttype: \"GET\",\n\t\t\t\turl: null\n\t\t\t}, options);\n\n\t\t\tvar that = this;\n\n\t\t\tif (opts.initial) {\n\t\t\t\t$(that).fwAjaxUpdate(opts);\n\t\t\t\topts.initial = false;\n\t\t\t}\n\n\t\t\tif (opts.refresh) {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t$(that).fwAjaxUpdate(opts).fwAjaxRefresh(opts);\n\t\t\t\t}, opts.interval);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Lädt den Inhalt des Elements target, wenn der Wert der angebundenen Selectbox\n\t * geändert wird. Die AJAX-URLs müssen im value der options stehen.\n\t */\n\t$.fn.fwAjaxSelect = function (options) {\n\t\treturn this.each(function () {\n\t\t\tvar opts = $.extend({\n\t\t\t\tbefore: null,\n\t\t\t\tcontext: document.body,\n\t\t\t\tdata: null,\n\t\t\t\terror: null,\n\t\t\t\tsuccess: null,\n\t\t\t\ttarget: null,\n\t\t\t\ttype: \"GET\"\n\t\t\t}, options);\n\n\t\t\t$(this).change(function () {\n\t\t\t\tvar url = $(this).val();\n\t\t\t\t$(opts.target).fwAjaxUpdate(opts);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\t/**\n\t * Lädt den Inhalt des angebundenen Elements von der im Parameter url übergebenen\n\t * AJAX-URL.\n\t *\n\t * Beispiel: $(\"#elementId\").fwAjaxUpdate({\"url\": \"...\"});\n\t */\n\t$.fn.fwAjaxUpdate = function (options) {\n\t\treturn this.each(function () {\n\t\t\tvar opts = $.extend({\n\t\t\t\tbefore: null,\n\t\t\t\tcontext: document.body,\n\t\t\t\tdata: null,\n\t\t\t\terror: null,\n\t\t\t\tsuccess: null,\n\t\t\t\ttype: \"GET\",\n\t\t\t\turl: null\n\t\t\t}, options);\n\n\t\t\tvar that = this;\n\t\t\tvar data = opts.data;\n\t\t\tif (!data && (opts.type == \"POST\")) {\n\t\t\t\tdata = \"nocache=\" + (Math.random() * 100000);\n\t\t\t}\n\n\t\t\tif (typeof opts.before == \"function\") {\n\t\t\t\tdata = opts.before.call(this, data);\n\t\t\t}\n\n\t\t\t$.ajax({\n\t\t\t\t\"cache\": false,\n\t\t\t\t\"context\": opts.context,\n\t\t\t\t\"data\": data,\n\t\t\t\t\"error\": function (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tlog(jqXHR, textStatus, errorThrown);\n\t\t\t\t\tif (typeof opts.error == \"function\") {\n\t\t\t\t\t\topts.error.call();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"success\": function (data, textStatus, jqXHR) {\n\t\t\t\t\t$(that).html(data);\n\t\t\t\t\tif (typeof opts.success == \"function\") {\n\t\t\t\t\t\topts.success.call();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"type\": opts.type,\n\t\t\t\t\"url\": opts.url\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llAsk = function (opts) {\n\t\tvar options = $.extend({\n\t\t\turlLayer: \"ajax/_ask.html\"\n\t\t}, opts);\n\n\t\treturn this.each(function () {\n\n\t\t\t$(this)\n\t\t\t\t.click(function () {\n\t\t\t\t\t$(\"#layer\").llLayer({\n\t\t\t\t\t\t\"callback\": function () {\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"closeCallback\": function () {\n\t\t\t\t\t\t\tLL.actions.klick_anmelden_lightbox_manuell_close();\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"url\": options.urlLayer\n\t\t\t\t\t});\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llCaroussel = function (opts) {\n\t\tvar options = $.extend({\n\t\t\t\"duration\": 1000\n\t\t}, opts);\n\n\t\treturn this.each(function () {\n\t\t\t// jquery objects\n\t\t\tvar $paging = $(\".paging\", this);\n\t\t\tvar $previous = $(\".previous\", this);\n\t\t\tvar $next = $(\".next\", this);\n\t\t\tvar $pagingButtons = $(\".paging .btn\", this);\n\t\t\tvar $slider = $(\".slider\", this);\n\n\t\t\t// other vars\n\t\t\tvar index = 0;\n\t\t\tvar groupWidth = $(\".group\", this).outerWidth(true);\n\t\t\tvar groupSize = $(\".group\", this).size();\n\t\t\tvar sliderWidth = groupWidth * groupSize;\n\t\t\tvar sliderIsAnimated = false;\n\n\t\t\t$slider.width(sliderWidth);\n\n\t\t\tvar slide = function (idx, callback) {\n\t\t\t\t// set active state\n\t\t\t\t$pagingButtons\n\t\t\t\t\t.removeClass(\"active\")\n\t\t\t\t\t.eq(getIndex(idx, groupSize))\n\t\t\t\t\t.addClass(\"active\");\n\n\t\t\t\t// animate\n\t\t\t\tsliderIsAnimated = true;\n\t\t\t\t$slider\n\t\t\t\t\t.animate({\n\t\t\t\t\t\t\t\"left\": -(idx * groupWidth)\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions.duration,\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tif (typeof callback === \"function\") {\n\t\t\t\t\t\t\t\tcallback.call();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsliderIsAnimated = false;\n\t\t\t\t\t\t});\n\t\t\t};\n\n\n\t\t\t$pagingButtons.click(function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (sliderIsAnimated) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar idx = $pagingButtons.index(this);\n\t\t\t\tslide(idx);\n\t\t\t\tindex = getIndex(idx, groupSize);\n\n\t\t\t\tLL.actions.klick_karussell_button();\n\t\t\t});\n\n\t\t\t$previous.click(function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (sliderIsAnimated) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar idx = index - 1;\n\n\t\t\t\tif (idx < 0) {\n\t\t\t\t\tvar offsetLeft = $slider.position().left;\n\t\t\t\t\tvar $originals = $slider.find(\".group\");\n\n\t\t\t\t\t$slider\n\t\t\t\t\t\t.width(sliderWidth * 2)\n\t\t\t\t\t\t.prepend($slider.html())\n\t\t\t\t\t\t.css({\n\t\t\t\t\t\t\t\"left\": -sliderWidth\n\t\t\t\t\t\t});\n\n\t\t\t\t\tslide(getIndex(idx, groupSize), function () {\n\t\t\t\t\t\t$originals.remove();\n\t\t\t\t\t\t$slider.width(sliderWidth);\n\t\t\t\t\t\tindex = getIndex(idx, groupSize);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tslide(idx);\n\t\t\t\t\tindex = getIndex(idx, groupSize);\n\t\t\t\t}\n\n\t\t\t\tLL.actions.klick_karussell_pfeil_zurueck();\n\t\t\t});\n\n\t\t\t$next.click(function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (sliderIsAnimated) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar idx = index + 1;\n\n\t\t\t\tif (idx === groupSize) {\n\t\t\t\t\tvar $originals = $slider.find(\".group\");\n\n\t\t\t\t\t$slider\n\t\t\t\t\t\t.width(sliderWidth * 2)\n\t\t\t\t\t\t.append($slider.html());\n\n\t\t\t\t\tslide(idx, function () {\n\t\t\t\t\t\t$originals.remove();\n\t\t\t\t\t\t$slider\n\t\t\t\t\t\t\t.css({\n\t\t\t\t\t\t\t\t\"left\": 0\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.width(sliderWidth);\n\t\t\t\t\t\tindex = getIndex(idx, groupSize);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tslide(idx);\n\t\t\t\t\tindex = getIndex(idx, groupSize);\n\t\t\t\t}\n\n\t\t\t\tLL.actions.klick_karussell_pfeil_vor();\n\t\t\t});\n\n\n\t\t\t// show paging\n\t\t\t$paging.show();\n\t\t});\n\t};\n\n\n\t$.fn.llCommentFormToggle = function () {\n\t\treturn this.each(function () {\n\n\t\t\t$(\".more\", this).toggle(\n\t\t\t\tfunction () {\n\t\t\t\t\t$(this)\n\t\t\t\t\t\t.text(\"Kommentareingabe schließen\")\n\t\t\t\t\t\t.addClass(\"open\")\n\t\t\t\t\t\t.next(\"form\")\n\t\t\t\t\t\t.slideDown();\n\t\t\t\t},\n\t\t\t\tfunction () {\n\t\t\t\t\t$(this)\n\t\t\t\t\t\t.text(\"Antwort kommentieren\")\n\t\t\t\t\t\t.removeClass(\"open\")\n\t\t\t\t\t\t.next(\"form\")\n\t\t\t\t\t\t.slideUp();\n\t\t\t\t});\n\n\t\t});\n\t};\n\n\n\t$.fn.llDailyDosis = function (opts) {\n\t\tvar options = $.extend({\n\t\t\t\"duration\": 1000\n\t\t}, opts);\n\n\t\treturn this.each(function () {\n\t\t\tvar $dd = $(\"#daily_dosis\", this);\n\t\t\tvar $switch = $(\"#dd_switch\", this);\n\n\t\t\t$switch.click(function (e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif ($dd.is(\":visible\")) {\n\t\t\t\t\t$switch\n\t\t\t\t\t\t.addClass(\"not_expanded\")\n\t\t\t\t\t\t.removeClass(\"expanded\");\n\t\t\t\t\t$dd.slideUp(options.duration);\n\t\t\t\t} else {\n\t\t\t\t\t$switch\n\t\t\t\t\t\t.addClass(\"expanded\")\n\t\t\t\t\t\t.removeClass(\"not_expanded\");\n\t\t\t\t\t$dd.slideDown(options.duration);\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\t};\n\n\t$.fn.llDatepicker = function (options) {\n\t\treturn this.each(function () {\n\t\t\tvar $that = $(this);\n\n\t\t\t// Initialize when DOM is ready. jQueryUI + Datepicker are loaded at the end of the document\n\t\t\t$(function () {\n\t\t\t\tsetDatepickerLanguage();\n\n\t\t\t\tvar opts = $.extend({\n\t\t\t\t\t\"showOn\": \"button\",\n\t\t\t\t\t\"buttonImage\": LL.defaults.calendarIcon,\n\t\t\t\t\t\"buttonImageOnly\": true,\n\t\t\t\t\t\"numberOfMonths\": [1, 1],\n\t\t\t\t\t\"showOptions\": {\"direction\": \"down\"},\n\t\t\t\t\t\"dateFormat\": \"dd.mm.yy\",\n\t\t\t\t\t\"stepMonths\": 1,\n\t\t\t\t\t\"option\": $.datepicker.regional['de']\n\t\t\t\t}, options);\n\n\t\t\t\t// Bei HTML5-Date-Input-Fields den Datepicker nur als Fallback nehmen:\n\t\t\t\tif ($that.attr(\"type\") === \"date\") {\n\t\t\t\t\tif (!Modernizr.inputtypes.date) {\n\t\t\t\t\t\tconvertDateFromIsoToGerman($that);\n\t\t\t\t\t\t$that.datepicker(opts);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$that.datepicker(opts);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Konvertiert das interne HTML5-Datumsfeldformat ins deutsche Datumsformat:\n\t\t\tfunction convertDateFromIsoToGerman($that) {\n\t\t\t\tvar dateStr = $that.val();\n\n\t\t\t\tif (dateStr) {\n\t\t\t\t\tvar date = parseDateTimeIso(dateStr);\n\n\t\t\t\t\tif (date) {\n\t\t\t\t\t\t$that.val(formatDate(date));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction parseDateTimeIso(s) {\n\t\t\t\treturn new Date(Date.parse(s));\n\t\t\t}\n\n\t\t\tfunction formatDate(date) {\n\t\t\t\tvar d, m, y;\n\n\t\t\t\td = date.getDate();\n\t\t\t\tm = date.getMonth() + 1;\n\t\t\t\ty = date.getFullYear();\n\n\t\t\t\td = (d <= 9 ? \"0\" + d : d);\n\t\t\t\tm = (m <= 9 ? \"0\" + m : m);\n\n\t\t\t\treturn d + \".\" + m + \".\" + y;\n\t\t\t}\n\t\t});\n\t};\n\n\n\t$.fn.llDoxter = function () {\n\t\treturn this.each(function () {\n\t\t\tvar $links = $(\"a\", this);\n\n\t\t\tif (navigator.geolocation) {\n\t\t\t\tnavigator.geolocation.getCurrentPosition(function (position) {\n\n\t\t\t\t\tvar lat = position.coords.latitude;\n\t\t\t\t\tvar lon = position.coords.longitude;\n\n\t\t\t\t\t$links.each(function () {\n\t\t\t\t\t\tvar $link = $(this);\n\t\t\t\t\t\tvar url = $link.attr(\"href\");\n\t\t\t\t\t\tvar locationExists = (url.indexOf(\"&lng=\") > 0);\n\n\t\t\t\t\t\tif (!locationExists) {\n\t\t\t\t\t\t\turl += (url.indexOf(\"?\") == -1) ? \"?\" : \"&\";\n\t\t\t\t\t\t\turl += \"lat=\" + lat + \"&lng=\" + lon;\n\n\t\t\t\t\t\t\t$link.attr(\"href\", url);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}, logGeoLocationError);\n\t\t\t}\n\t\t});\n\t};\n\n\n\t$.fn.llForm = function (options) {\n\n\t\treturn this.each(function () {\n\n\t\t\tvar opts = $.extend({\n\t\t\t\tbefore: null,\n\t\t\t\tcontext: document.body,\n\t\t\t\terror: null,\n\t\t\t\tsuccess: null,\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: \"\"\n\t\t\t}, options);\n\n\t\t\tvar that = this;\n\t\t\tvar $that = $(this);\n\t\t\tvar $form = $(\"form\", this);\n\n\t\t\tvar $submitLink = $(\"a.submit\", this);\n\n\t\t\t$submitLink.live(\"click\", function () {\n\t\t\t\t$parentForm = $(this).closest(\"form\");\n\t\t\t\t$parentForm.trigger(\"submit\");\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t$submitLink = $(\"a.submitAction\", this);\n\n\t\t\t$submitLink.live(\"click\", function () {\n\t\t\t\t$parentForm = $(this).closest(\"form\");\n\t\t\t\t$parentForm.trigger(\"submit\");\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t$(\"input[type=submit], button[type=submit]\", this).live(\"click\", function () {\n\t\t\t\t$(\"input[name=action]\", that).val($(this).attr(\"name\"));\n\t\t\t});\n\n\t\t\t$form.live(\"submit\", function () {\n\t\t\t\tvar data = $(this).serializeArray();\n\n\t\t\t\tif (typeof opts.before == \"function\") {\n\t\t\t\t\tdata = opts.before.call(this, data);\n\t\t\t\t}\n\n\t\t\t\t$.ajax({\n\t\t\t\t\t\"cache\": false,\n\t\t\t\t\t\"context\": opts.context,\n\t\t\t\t\t\"data\": data,\n\t\t\t\t\t\"type\": opts.type,\n\t\t\t\t\t\"url\": opts.url\n\t\t\t\t}).success(function (data, textStatus, jqXHR) {\n\t\t\t\t\t$that.html(data);\n\t\t\t\t\tif (typeof opts.success == \"function\") {\n\t\t\t\t\t\topts.success.call();\n\t\t\t\t\t}\n\t\t\t\t}).error(function (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tlog(jqXHR, textStatus, errorThrown);\n\t\t\t\t\tif (typeof opts.error == \"function\") {\n\t\t\t\t\t\topts.error.call();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llJsonForm = function (options) {\n\n\t\treturn this.each(function () {\n\n\t\t\tvar opts = $.extend({\n\t\t\t\tbefore: null,\n\t\t\t\tcontext: document.body,\n\t\t\t\terror: null,\n\t\t\t\tsuccess: null,\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: \"\"\n\t\t\t}, options);\n\t\t\tif (\n\t\t\t\t(\n\t\t\t\t\topts.success === null ||\n\t\t\t\t\topts.error === null\n\t\t\t\t) &&\n\t\t\t\t(\n\t\t\t\t\ttypeof opts.success !== \"function\" ||\n\t\t\t\t\ttypeof opts.error !== \"function\"\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrow \"llJsonForm instantiation error: a success and a error handler have to be included in the options!\";\n\t\t\t}\n\n\t\t\tvar $that = $(this);\n\t\t\tvar $form = $(\"form\", this);\n\n\t\t\tvar $submitLink = $(\".submit\", this);\n\n\t\t\t$submitLink\n\t\t\t\t.click(function () {\n\t\t\t\t\t$form.trigger(\"submit\");\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t$form\n\t\t\t\t.live(\"submit\", function () {\n\t\t\t\t\tvar dataString = $(this).serialize();\n\n\t\t\t\t\tif (typeof opts.before === \"function\") {\n\t\t\t\t\t\tdataString = opts.before.call(this, dataString);\n\t\t\t\t\t}\n\n\t\t\t\t\t$.ajax({\n\t\t\t\t\t\t\"cache\": false,\n\t\t\t\t\t\t\"context\": opts.context,\n\t\t\t\t\t\t\"data\": dataString,\n\t\t\t\t\t\t\"type\": opts.type,\n\t\t\t\t\t\t\"url\": opts.url\n\t\t\t\t\t})\n\t\t\t\t\t\t.success(function (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\topts.success.apply(this, arguments);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.error(function (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\tlog(jqXHR, textStatus, errorThrown);\n\t\t\t\t\t\t\topts.error.apply(this, arguments);\n\t\t\t\t\t\t});\n\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llLayerForm = function (options) {\n\n\t\treturn this.each(function () {\n\n\t\t\tvar opts = $.extend({\n\t\t\t\t\"before\": null,\n\t\t\t\t\"closeOnClick\": true,\n\t\t\t\t\"context\": document.body,\n\t\t\t\t\"duration\": 1000, // fadeIn/fadeOut duration\n\t\t\t\t\"success\": null,\n\t\t\t\t\"type\": \"POST\",\n\t\t\t\t\"url\": \"\"\n\t\t\t}, options);\n\n\t\t\tvar that = this;\n\t\t\tvar $that = $(this);\n\t\t\tvar $form = $(\"form\", this);\n\n\t\t\tvar $submitLink = $(\"a.submit\", this);\n\n\t\t\t$submitLink.click(function () {\n\t\t\t\t$form.trigger(\"submit\");\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t$(\"input[type=submit]\", this).live(\"click\", function () {\n\t\t\t\t$(\"input[name=action]\", that).val($(this).attr(\"name\"));\n\t\t\t});\n\n\t\t\t$form.live(\"submit\", function () {\n\t\t\t\tvar data = $(this).serializeArray();\n\n\t\t\t\tif (typeof opts.before == \"function\") {\n\t\t\t\t\tdata = opts.before.call(this, data);\n\t\t\t\t}\n\n\t\t\t\tvar $layer = $(this).closest(\".layer\");\n\n\t\t\t\t$layer.llLayer({\n\t\t\t\t\t\"callback\": opts.success,\n\t\t\t\t\t\"closeCallback\": function () {\n\t\t\t\t\t\t$layer.html(\"\");\n\t\t\t\t\t},\n\t\t\t\t\t\"closeOnClick\": opts.closeOnClick,\n\t\t\t\t\t\"context\": opts.context,\n\t\t\t\t\t\"data\": data,\n\t\t\t\t\t\"duration\": opts.duration,\n\t\t\t\t\t\"method\": opts.type,\n\t\t\t\t\t\"url\": opts.url\n\t\t\t\t});\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llImgZoom = function (opts) {\n\n\t\treturn this.each(function () {\n\t\t\tvar options = $.extend({\n\t\t\t\t\"html\": \"\"\n\t\t\t}, opts);\n\n\t\t\tvar $imgLink = $(\".img a\", this);\n\t\t\tvar alt = $(\".img img\", this).attr(\"alt\");\n\n\t\t\t// append magnifier glas\n\t\t\t$imgLink\n\t\t\t\t.append(\"\")\n\t\t\t\t.click(\"click\", function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tLL.actions.klick_inlinebild_lightbox_open({\n\t\t\t\t\t\t\"title\": alt\n\t\t\t\t\t});\n\n\t\t\t\t\t$(\"#layer\").llLayerInject({\n\t\t\t\t\t\t\"closeCallback\": function () {\n\t\t\t\t\t\t\tLL.actions.klick_inlinebild_lightbox_close({\n\t\t\t\t\t\t\t\t\"title\": alt\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"html\": options.html\n\t\t\t\t\t});\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llGallery = function (opts) {\n\n\t\treturn this.each(function () {\n\t\t\tvar prev = $(\".control .prev\", this)[0];\n\t\t\tvar next = $(\".control .next\", this)[0];\n\n\t\t\t$(document).keyup(function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 37:\t// Cursor links\n\t\t\t\t\t\tprev.click();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 39:\t// Cursor rechts\n\t\t\t\t\t\tnext.click();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llGalleryEdit = function () {\n\t\treturn this.each(function () {\n\t\t\tvar $input = $(\".images .image input\", this);\n\t\t\tvar $selectCount = $(\".selectCountValue\", this);\n\t\t\tvar that = this;\n\n\t\t\t$input.click(function () {\n\t\t\t\tvar count = 0;\n\n\t\t\t\t$input.each(function () {\n\t\t\t\t\tif ($(this).is(':checked')) {\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$selectCount.html(count);\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llGalleryView = function (options) {\n\t\treturn this.each(function () {\n\t\t\tvar opts = $.extend({\n\t\t\t\t\"galleryClass\": \"gallery\"\n\t\t\t}, options);\n\n\t\t\tvar $links = $(\".view\", this);\n\t\t\tvar that = this;\n\n\t\t\t$links.click(function (e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t// Da der Button kein href hat, den Link im selben \"gallery\"-div ermitteln:\n\t\t\t\tvar $gallery = $(this).closest(\".\" + opts.galleryClass);\n\t\t\t\tvar url = $(\"a.view\", $gallery).attr(\"href\");\n\n\t\t\t\t$(\"#layer\").llLayer({\n\t\t\t\t\t\"closeCallback\": function () {\n\t\t\t\t\t\t$(\"#layer\").html(\"\");\n\t\t\t\t\t},\n\t\t\t\t\t\"duration\": 0,\n\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\"url\": url\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llLayerInject = function (opts) {\n\n\t\treturn this.each(function () {\n\t\t\tvar options = $.extend({\n\t\t\t\t\"callback\": null,\n\t\t\t\t\"closeCallback\": null, // will be called after the layer is closed\n\t\t\t\t\"closeOnClick\": true,\n\t\t\t\t\"duration\": 500, // fadeIn/fadeOut duration\n\t\t\t\t\"html\": null\n\t\t\t}, opts);\n\n\t\t\tvar $layer = $(this);\n\n\t\t\tvar closeLayer = function () {\n\t\t\t\t$layer.fadeOut(options.duration);\n\t\t\t\tif (typeof options.closeCallback == \"function\") {\n\t\t\t\t\toptions.closeCallback.call();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// fade in, resize layer. add closing\n\t\t\tvar init = function () {\n\t\t\t\t// (Mobile) Aufklapp-Menüs/-Layer schließen:\n\t\t\t\tif (isMobileLayout()) {\n\t\t\t\t\t$(\".toggled-item\").hide();\n\t\t\t\t}\n\n\t\t\t\tresizeLayer();\n\t\t\t\t$layer\n\t\t\t\t//.fadeIn(options.duration)\n\t\t\t\t\t.show();\n\t\t\t\tif (options.closeOnClick) {\n\t\t\t\t\t$layer\n\t\t\t\t\t\t.addClass(\"clickable\")\n\t\t\t\t\t\t.unbind(\"click\")\n\t\t\t\t\t\t.click(function (e) {\n\t\t\t\t\t\t\tif (e.target === this) {\n\t\t\t\t\t\t\t\t$(window).unbind(\"resize\");\n\t\t\t\t\t\t\t\tcloseLayer();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// var position the layer\n\t\t\tvar positionInnerLayer = function () {\n\n\t\t\t\t$layer.css({\n\t\t\t\t\t\"display\": \"block\",\n\t\t\t\t\t\"visibility\": \"hidden\"\n\t\t\t\t});\n\n\t\t\t\tvar $layerInner = $(\".layer_inner\", $layer);\n\n\t\t\t\tvar offsetTop = ll.getLightboxLayerTop($layerInner.outerHeight(false));\n\n\t\t\t\t// set width if .img\n\t\t\t\tif ($layer.find(\".layer_img\").size()) {\n\t\t\t\t\tvar layerPadding = 28;\n\t\t\t\t\tvar $layerImg = $layerInner.find(\".img img\");\n\t\t\t\t\tvar maxWidth = $(window).width() - layerPadding;\n\t\t\t\t\tvar layerImgWidth = parseInt($layerImg.attr(\"width\")) || $layerImg.width() || maxWidth;\n\t\t\t\t\tvar width = Math.min(maxWidth, layerImgWidth + layerPadding);\n\n\t\t\t\t\t$layerInner.width(width);\n\t\t\t\t}\n\n\t\t\t\t$layer.css({\n\t\t\t\t\t\"visibility\": \"visible\"\n\t\t\t\t});\n\n\t\t\t\t$layerInner\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"margin-top\": offsetTop,\n\t\t\t\t\t\t\"visibility\": \"visible\"\n\t\t\t\t\t});\n\t\t\t};\n\n\t\t\t// add resizing functionality\n\t\t\tvar resizeLayer = function () {\n\t\t\t\tvar layerHeight = $(\"body\").height() < $(window).height() ? $(window).height() : $(\"body\").height();\n\t\t\t\tvar layerWidth = $(window).width();\n\n\t\t\t\t$layer\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"height\": layerHeight,\n\t\t\t\t\t\t\"width\": layerWidth\n\t\t\t\t\t});\n\t\t\t};\n\n\t\t\t// Nicht bei Touch-Devices, da es Probleme macht, wenn die Tastatur eingeblendet wird!\n\t\t\tvar isTouchDevice = $(\"html\").hasClass(\"touch\");\n\t\t\tif (!isTouchDevice) {\n\t\t\t\t$(window).resize(function () {\n\t\t\t\t\tresizeLayer();\n\t\t\t\t\tpositionInnerLayer();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// inject html and position\n\t\t\t$layer\n\t\t\t\t.html(options.html)\n\t\t\t\t.find(\".close\")\n\t\t\t\t.click(function () {\n\t\t\t\t\t$(window).unbind(\"resize\");\n\t\t\t\t\tcloseLayer();\n\t\t\t\t});\n\n\t\t\t$(\".layer_inner\", $layer).show();\n\t\t\tpositionInnerLayer();\n\n\t\t\tif (typeof options.callback === \"function\") {\n\t\t\t\toptions.callback.call();\n\t\t\t}\n\n\t\t\t// call init if the layer is hidden\n\t\t\t//if ($layer.is(\":hidden\")) {\n\t\t\tinit();\n\t\t\t//}\n\n\t\t});\n\t};\n\n\n\t$.fn.llLayer = function (opts) {\n\t\treturn this.each(function () {\n\t\t\tvar options = $.extend({\n\t\t\t\t\"callback\": null,\n\t\t\t\t\"closeCallback\": null, // will be called after the layer is closed\n\t\t\t\t\"closeOnClick\": true,\n\t\t\t\t\"data\": null,\n\t\t\t\t\"duration\": 1000, // fadeIn/fadeOut duration\n\t\t\t\t\"focusId\": null,\n\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\"responseType\": \"html\",\n\t\t\t\t\"url\": null\n\t\t\t}, opts);\n\n\t\t\tvar $layer = $(this);\n\t\t\tvar data = options.data;\n\t\t\tif (!data && (options.method == \"POST\")) {\n\t\t\t\tdata = \"nocache=\" + (Math.random() * 100000);\n\t\t\t}\n\n\t\t\tvar closeLayer = function () {\n\t\t\t\t$layer.fadeOut(options.duration);\n\t\t\t\tif (typeof options.closeCallback == \"function\") {\n\t\t\t\t\toptions.closeCallback.call();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// fade in, resize layer. add closing\n\t\t\tvar init = function () {\n\t\t\t\t// (Mobile) Aufklapp-Menüs/-Layer schließen:\n\t\t\t\tif (isMobileLayout()) {\n\t\t\t\t\t$(\".toggled-item\").hide();\n\t\t\t\t}\n\n\t\t\t\tresizeLayer();\n\t\t\t\t$layer\n\t\t\t\t//.fadeIn(options.duration)\n\t\t\t\t\t.show();\n\t\t\t\tif (options.closeOnClick) {\n\t\t\t\t\t$layer\n\t\t\t\t\t\t.addClass(\"clickable\")\n\t\t\t\t\t\t.unbind(\"click\")\n\t\t\t\t\t\t.click(function (e) {\n\t\t\t\t\t\t\tif (e.target === this) {\n\t\t\t\t\t\t\t\tcloseLayer();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// var position the layer\n\t\t\tvar positionInnerLayer = function () {\n\t\t\t\tvar $layerInner = $(\".layer_inner\", $layer);\n\n\t\t\t\tvar offsetTop = ll.getLightboxLayerTop($layerInner.outerHeight(false));\n\n\t\t\t\t// set width if .img\n\t\t\t\tif ($layer.find(\".layer_img\").size()) {\n\t\t\t\t\tvar windowPadding = 28;\n\t\t\t\t\tvar $layerImg = $layerInner.find(\".img img\");\n\t\t\t\t\tvar maxWidth = $(window).width() - windowPadding;\n\t\t\t\t\tvar layerImgWidth = parseInt($layerImg.attr(\"width\")) || $layerImg.width() || maxWidth;\n\t\t\t\t\tvar width = Math.min(maxWidth, layerImgWidth + windowPadding);\n\n\t\t\t\t\t$layerInner.width(width);\n\t\t\t\t}\n\n\t\t\t\t$layerInner\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"margin-top\": offsetTop,\n\t\t\t\t\t\t\"visibility\": \"visible\"\n\t\t\t\t\t});\n\t\t\t};\n\n\t\t\t// add resizing functionality\n\t\t\tvar resizeLayer = function () {\n\t\t\t\tvar layerHeight = $(\"body\").height() < $(window).height() ? $(window).height() : $(\"body\").height();\n\t\t\t\tvar layerWidth = $(window).width();\n\n\t\t\t\t$layer\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"height\": layerHeight,\n\t\t\t\t\t\t\"width\": layerWidth\n\t\t\t\t\t});\n\t\t\t};\n\n\t\t\t// Nicht bei Touch-Devices, da es Probleme macht, wenn die Tastatur eingeblendet wird!\n\t\t\tvar isTouchDevice = $(\"html\").hasClass(\"touch\");\n\t\t\tif (!isTouchDevice) {\n\t\t\t\t$(window).resize(function () {\n\t\t\t\t\tresizeLayer();\n\t\t\t\t\tpositionInnerLayer();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// load ajax and position\n\t\t\t$.ajax({\n\t\t\t\t\"cache\": false,\n\t\t\t\t\"dataType\": options.responseType,\n\t\t\t\t\"type\": options.method,\n\t\t\t\t\"url\": options.url,\n\t\t\t\t\"data\": data\n\t\t\t})\n\t\t\t\t.success(function (response) {\n\t\t\t\t\t// strip body\n\t\t\t\t\t$layer\n\t\t\t\t\t\t.html(response)\n\t\t\t\t\t\t.find(\".close\")\n\t\t\t\t\t\t.unbind(\"click\")\n\t\t\t\t\t\t.click(function () {\n\t\t\t\t\t\t\tcloseLayer();\n\t\t\t\t\t\t});\n\n\t\t\t\t\tpositionInnerLayer();\n\n\t\t\t\t\tif (options.focusId) {\n\t\t\t\t\t\tvar elem = document.getElementById(options.focusId);\n\t\t\t\t\t\tif (elem) {\n\t\t\t\t\t\t\telem.focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof options.callback === \"function\") {\n\t\t\t\t\t\toptions.callback.call();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t// call init if the layer is hidden\n\t\t\tif ($layer.is(\":hidden\")) {\n\t\t\t\tinit();\n\t\t\t}\n\t\t});\n\t};\n\n\n\t$.fn.llLink = function (options) {\n\n\t\treturn this.each(function () {\n\n\t\t\tvar opts = $.extend({\n\t\t\t\tbefore: null,\n\t\t\t\tcontext: document.body,\n\t\t\t\tdata: null,\n\t\t\t\terror: null,\n\t\t\t\tklick_function: null,\n\t\t\t\tklick_function_use_title_as_button_name: false,\n\t\t\t\tsuccess: null,\n\t\t\t\ttarget: null,\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: $(this).data(\"ajax-url\") || $(this).attr(\"href\")\n\t\t\t}, options);\n\n\t\t\tvar that = this;\n\n\t\t\t$(this)\n\t\t\t\t.click(function () {\n\t\t\t\t\tvar data = opts.data;\n\t\t\t\t\tif (!data && (opts.type == \"POST\")) {\n\t\t\t\t\t\tdata = \"nocache=\" + (Math.random() * 100000);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof opts.before == \"function\") {\n\t\t\t\t\t\tdata = opts.before.call(this, data);\n\t\t\t\t\t}\n\n\t\t\t\t\t$.ajax({\n\t\t\t\t\t\t\"cache\": false,\n\t\t\t\t\t\t\"context\": opts.context,\n\t\t\t\t\t\t\"data\": data,\n\t\t\t\t\t\t\"type\": opts.type,\n\t\t\t\t\t\t\"url\": opts.url\n\t\t\t\t\t})\n\t\t\t\t\t\t.success(function (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\t$(opts.target).html(data);\n\t\t\t\t\t\t\tif (typeof opts.success == \"function\") {\n\t\t\t\t\t\t\t\topts.success.call();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof opts.klick_function == \"function\") {\n\t\t\t\t\t\t\t\tif (opts.klick_function_use_title_as_button_name) {\n\t\t\t\t\t\t\t\t\topts.klick_function({button_name: $(that).attr('title')});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\topts.klick_function({button_name: $(that).text()});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.error(function (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\tlog(jqXHR, textStatus, errorThrown);\n\t\t\t\t\t\t\tif (typeof opts.error == \"function\") {\n\t\t\t\t\t\t\t\topts.error.call();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llLoadTab = function (opts) {\n\t\tvar options = $.extend({\n\t\t\turl: null\n\t\t}, opts);\n\n\t\tvar that = this;\n\n\t\t$.ajax({\n\t\t\t\"type\": \"GET\",\n\t\t\t\"url\": options.url\n\t\t})\n\t\t\t.success(function (data, textStatus, jqXHR) {\n\t\t\t\t$(that).html(data);\n\t\t\t})\n\t\t\t.error(function (jqXHR, textStatus, errorThrown) {\n\t\t\t\tlog(\"error\", jqXHR, textStatus, errorThrown);\n\t\t\t});\n\t};\n\n\n\t$.fn.llLoggedOutOnly = function () {\n\t\tvar cookie = readCookie(\"communitycookie\");\n\n\t\tif (cookie !== null) { // logged in\n\t\t\t$(this).hide();\n\t\t}\n\t};\n\n\n\t$.fn.llLogin = function (opts) {\n\t\treturn this.each(\n\t\t\tfunction () {\n\t\t\t\tvar that = this;\n\t\t\t\tvar options = $.extend({\n\t\t\t\t\t\"cache\": false,\n\t\t\t\t\t\"cookiename\": \"communitycookie\",\n\t\t\t\t\t\"idLoginBox\": LL.defaults.idLoginBox,\n\t\t\t\t\t\"idLoginForm\": LL.defaults.idLoginForm,\n\t\t\t\t\t\"idLoginLayer\": LL.defaults.idLoginLayer,\n\t\t\t\t\t\"idUsername\": LL.defaults.idLoginForm + \"_0\",\n\t\t\t\t\t\"idPassword\": LL.defaults.idLoginForm + \"_1\",\n\t\t\t\t\t\"idSaveLogin\": LL.defaults.idLoginForm + \"_saveLogin\",\n\t\t\t\t\t\"textLogin\": LL.defaults.textLogin,\n\t\t\t\t\t\"textLogout\": LL.defaults.textLogout,\n\t\t\t\t\t\"urlLayer\": \"\",\n\t\t\t\t\t\"urlLogin\": LL.defaults.urlLogin,\n\t\t\t\t\t\"urlLogout\": LL.defaults.urlLogout,\n\t\t\t\t\t\"postLoginAction\": function () {\n\t\t\t\t\t},\n\t\t\t\t\t\"redirectAfterLoginUrl\": LL.defaults.loginLayerOptions.redirectAfterLoginUrl\n\t\t\t\t}, opts);\n\n\t\t\t\tvar $errorMessage = $(\".error_message\", this);\n\t\t\t\tvar $loginBox = $(\"#\" + options.loginBox);\n\n\t\t\t\t// check for cookie\n\t\t\t\tvar cookie = readCookie(options.cookiename);\n\n\t\t\t\tif (cookie === null) {\n\t\t\t\t\t// not logged in\n\t\t\t\t\t$loginBox.slideDown();\n\t\t\t\t} else {\n\t\t\t\t\t// logged in\n\t\t\t\t\t$loginBox.slideUp();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$(this)\n\t\t\t\t\t.unbind(\"submit\")\n\t\t\t\t\t.submit(function () {\n\t\t\t\t\t\tvar form = this;\n\t\t\t\t\t\tvar submit = true;\n\t\t\t\t\t\tvar data = $(this).serializeArray();\n\t\t\t\t\t\tvar cookieTimeout = 10 * 365 * 86400;\t// 10 Jahre in Sekunden\n\n\t\t\t\t\t\tif ($(options.idSaveLogin, form).is(':checked')) {\n\t\t\t\t\t\t\tdata.push({\"name\": \"cookieTimeout\", \"value\": (cookieTimeout)});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$(\"input\", this).removeClass(\"error\");\n\t\t\t\t\t\t$errorMessage.html('');\n\n\t\t\t\t\t\tif ($(options.idUsername, this).val() === \"\") {\n\t\t\t\t\t\t\t$(options.idUsername, this).addClass(\"error\");\n\t\t\t\t\t\t\tsubmit = false;\n\t\t\t\t\t\t\t$errorMessage.append('Benutzername / E-Mail darf nicht leer sein!');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ($(options.idPassword, this).val() === \"\") {\n\t\t\t\t\t\t\t$(options.idPassword, this).addClass(\"error\");\n\t\t\t\t\t\t\tsubmit = false;\n\t\t\t\t\t\t\t$errorMessage.append('
Das Passwort darf nicht leer sein!');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (submit) {\n\t\t\t\t\t\t\t$.ajax({\n\t\t\t\t\t\t\t\t\"cache\": options.cache,\n\t\t\t\t\t\t\t\t\"data\": data,\n\t\t\t\t\t\t\t\t\"type\": \"POST\",\n\t\t\t\t\t\t\t\t\"url\": options.urlLogin\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.success(\n\t\t\t\t\t\t\t\t\tfunction (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\t\t\t\tcookie = readCookie(options.cookiename);\n\n\t\t\t\t\t\t\t\t\t\t$errorMessage.slideUp();\n\n\t\t\t\t\t\t\t\t\t\tif (cookie === null) {\n\t\t\t\t\t\t\t\t\t\t\tlog(\"login failed. no cookie\", data, textStatus, jqXHR);\n\t\t\t\t\t\t\t\t\t\t\t$(options.idUsername, form).addClass(\"error\");\n\t\t\t\t\t\t\t\t\t\t\t$(options.idPassword, form).addClass(\"error\");\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tlog(\"succesfully logged in\", data, textStatus, jqXHR);\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).text(options.textLogout);\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).addClass(\"bold\");\n\t\t\t\t\t\t\t\t\t\t\t$(\"input\", form).removeClass(\"error\");\n\n\t\t\t\t\t\t\t\t\t\t\tif ($(options.idSaveLogin, form).is(':checked')) {\n\t\t\t\t\t\t\t\t\t\t\t\tcreateCookieSeconds(\"saveLogin\", \"true\", cookieTimeout);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\teraseCookie(\"saveLogin\");\n\t\t\t\t\t\t\t\t\t\t\t\teraseCookie(\"activityWatch\");\n\t\t\t\t\t\t\t\t\t\t\t\tcreateCookieSeconds(\"activityWatch\", \"active\", 3600);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t$(options.idUsername, form).val(\"\");\n\t\t\t\t\t\t\t\t\t\t\t$(options.idPassword, form).val(\"\");\n\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t_gaq.push(['_setCustomVar', 2, 'Login', 'Ja', 2]);\n\t\t\t\t\t\t\t\t\t\t\t\t_gaq.push(['_trackPageview']);\n\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\tlog(\"ERROR: Google tracking failed in llLogin()\", e);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tif (options.redirectAfterLoginUrl !== \"\") {\n\t\t\t\t\t\t\t\t\t\t\t\tself.location.href = options.redirectAfterLoginUrl;\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// reinitialize loginBox\n\t\t\t\t\t\t\t\t\t\t$(options.idLoginForm).llLogin(options);\n\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).llLoginLayer(options);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.error(\n\t\t\t\t\t\t\t\t\tfunction (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\t\t\t\tlog(\"login failed\", jqXHR, textStatus, errorThrown);\n\n\t\t\t\t\t\t\t\t\t\tswitch (jqXHR.status) {\n\t\t\t\t\t\t\t\t\t\t\tcase 403:\n\t\t\t\t\t\t\t\t\t\t\t\t$errorMessage.html(options.errors.error403);\t// Nicht gefunden\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\tcase 409:\n\t\t\t\t\t\t\t\t\t\t\t\t$errorMessage.html(options.errors.error409);\t// Account nicht aktiviert\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\tcase 410:\n\t\t\t\t\t\t\t\t\t\t\t\t$errorMessage.html(options.errors.error410);\t// Gesperrt\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\tcase 500:\n\t\t\t\t\t\t\t\t\t\t\t\t$errorMessage.html(options.errors.error500);\t// Systemfehler\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t$errorMessage.slideDown();\n\n\t\t\t\t\t\t\t\t\t\t$(options.idUsername, form).addClass(\"error\");\n\t\t\t\t\t\t\t\t\t\t$(options.idPassword, form).addClass(\"error\");\n\n\t\t\t\t\t\t\t\t\t\t$(options.idPassword, form).val(\"\");\n\n\t\t\t\t\t\t\t\t\t\t$(options.idLoginForm).llLogin(options);\n\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).llLoginLayer(options);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}); // submit function\n\t\t\t}\n\t\t);\n\t};\n\n\n\t$.fn.llLoginExt = function (opts) {\n\t\treturn this.each(\n\t\t\tfunction () {\n\t\t\t\tvar that = this;\n\t\t\t\tvar options = $.extend({\n\t\t\t\t\t\"cache\": false,\n\t\t\t\t\t\"cookiename\": \"communitycookie\",\n\t\t\t\t\t\"idLoginBox\": LL.defaults.idLoginBox,\n\t\t\t\t\t\"idLoginForm\": LL.defaults.idLoginForm,\n\t\t\t\t\t\"idLoginLayer\": LL.defaults.idLoginLayer,\n\t\t\t\t\t\"idUsername\": LL.defaults.idLoginForm + \"_0\",\n\t\t\t\t\t\"idPassword\": LL.defaults.idLoginForm + \"_1\",\n\t\t\t\t\t\"idSaveLogin\": LL.defaults.idLoginForm + \"_saveLogin\",\n\t\t\t\t\t\"textLogin\": LL.defaults.textLogin,\n\t\t\t\t\t\"textLogout\": LL.defaults.textLogout,\n\t\t\t\t\t\"urlLayer\": \"\",\n\t\t\t\t\t\"urlLogin\": LL.defaults.extLoginUrl,\n\t\t\t\t\t\"urlLogout\": LL.defaults.urlLogout,\n\t\t\t\t\t\"postLoginAction\": function () {\n\t\t\t\t\t},\n\t\t\t\t\t\"redirectAfterLoginUrl\": LL.defaults.loginLayerOptions.redirectAfterLoginUrl,\n\t\t\t\t\t\"redirectExtLoginNotFoundUrl\": LL.defaults.loginLayerOptions.redirectExtLoginNotFoundUrl,\n\t\t\t\t\t\"success\": function () {\n\t\t\t\t\t}\n\t\t\t\t}, opts);\n\n\t\t\t\tvar $errorMessage = $(\".error_message\", this);\n\n\t\t\t\t// check for cookie\n\t\t\t\tvar cookie = readCookie(options.cookiename);\n\n\t\t\t\tif (cookie === null) { // not logged in\n\t\t\t\t\t$(this).slideDown();\n\t\t\t\t} else { // logged in\n\t\t\t\t\t$(this).slideUp();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar form = this;\n\t\t\t\tvar submit = true;\n\t\t\t\tvar cookieTimeout = 10 * 365 * 86400;\t// 10 Jahre in Sekunden\n\n\t\t\t\t$(\"input\", this).removeClass(\"error\");\n\t\t\t\t$errorMessage.html('').hide();\n\n\t\t\t\tif (options.facebookid_externalid === \"\" || options.facebookid_externalid === \"undefined\") {\n\t\t\t\t\tsubmit = false;\n\t\t\t\t\t$errorMessage.append('Die Facebook-Authorisierung ist fehlgeschlagen!');\n\t\t\t\t\t$errorMessage.show();\n\t\t\t\t}\n\n\t\t\t\tvar data = \"externalIdentifierName=facebookid_externalid\";\n\t\t\t\tdata += \"&externalIdentifierValue=\" + options.facebookid_externalid;\n\n\t\t\t\ttry {\n\t\t\t\t\tdata += \"&externalAccessToken=\" + FB.getAuthResponse().accessToken;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlog(\"ERROR: FB usage in llLoginExt()\", e);\n\t\t\t\t}\n\n\t\t\t\tif (submit) {\n\t\t\t\t\t$.ajax({\n\t\t\t\t\t\t\"cache\": options.cache,\n\t\t\t\t\t\t\"data\": data,\n\t\t\t\t\t\t\"type\": \"POST\",\n\t\t\t\t\t\t\"url\": options.urlLogin,\n\t\t\t\t\t\t\"dataType\": \"json\"\n\t\t\t\t\t})\n\t\t\t\t\t\t.success(\n\t\t\t\t\t\t\tfunction (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\t\tcookie = readCookie(options.cookiename);\n\n\t\t\t\t\t\t\t\t$errorMessage.slideUp();\n\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tif (cookie === null) {\n\t\t\t\t\t\t\t\t\t\tlog(\"login failed. no cookie\", data, textStatus, jqXHR);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tlog(\"succesfully logged in\", data, textStatus, jqXHR);\n\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).text(options.textLogout);\n\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).addClass(\"bold\");\n\n\t\t\t\t\t\t\t\t\t\tif ($(options.idSaveLogin, form).is(':checked')) {\n\t\t\t\t\t\t\t\t\t\t\tcreateCookieSeconds(\"saveLogin\", \"true\", cookieTimeout);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\teraseCookie(\"saveLogin\");\n\t\t\t\t\t\t\t\t\t\t\teraseCookie(\"activityWatch\");\n\t\t\t\t\t\t\t\t\t\t\tcreateCookieSeconds(\"activityWatch\", \"active\", 3600);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (typeof options.success === \"function\") {\n\t\t\t\t\t\t\t\t\t\t\toptions.success();\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t_gaq.push(['_setCustomVar', 2, 'Login', 'Ja', 2]);\n\t\t\t\t\t\t\t\t\t\t\t_gaq.push(['_trackPageview']);\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\tlog(\"ERROR: Google pageview tracking failed in llLoginExt()\", e);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (options.redirectAfterLoginUrl !== \"\") {\n\t\t\t\t\t\t\t\t\t\t\tself.location.href = options.redirectAfterLoginUrl;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\toptions.urlLogin = LL.defaults.urlLogin;\n\t\t\t\t\t\t\t\t\t// reinitialize loginBox\n\t\t\t\t\t\t\t\t\t$(options.idLoginForm).llLogin(options);\n\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).llLoginLayer(options);\n\t\t\t\t\t\t\t\t} catch (facebookLoginException) {\n\t\t\t\t\t\t\t\t\tlog(\"$.fn.llLoginExt\", this, facebookLoginException);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.error(\n\t\t\t\t\t\t\tfunction (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\t\tlog(\"login failed\", jqXHR, textStatus, errorThrown);\n\n\t\t\t\t\t\t\t\tswitch (jqXHR.status) {\n\t\t\t\t\t\t\t\t\tcase 403:\n\t\t\t\t\t\t\t\t\t\t$errorMessage.html(options.errorsFb.error403);\t// Nicht gefunden\n\t\t\t\t\t\t\t\t\t\tvar url = options.redirectExtLoginNotFoundUrl;\n\t\t\t\t\t\t\t\t\t\turl += \"?init=true\";\n\t\t\t\t\t\t\t\t\t\turl += \"&\" + data;\n\t\t\t\t\t\t\t\t\t\turl += \"&externalServiceName=Facebook\";\n\t\t\t\t\t\t\t\t\t\turl += \"&externalAccountName=\" + options.facebook_name;\n\t\t\t\t\t\t\t\t\t\turl += \"&externalAccountLink=\" + options.facebook_link;\n\t\t\t\t\t\t\t\t\t\turl += \"&email=\" + ((options.facebook_email != undefined) ? options.facebook_email : \"\");\n\t\t\t\t\t\t\t\t\t\t//url += \"&username=\" + options.facebook_username;\n\t\t\t\t\t\t\t\t\t\turl += \"&firstname=\" + options.facebook_firstname;\n\t\t\t\t\t\t\t\t\t\turl += \"&familyname=\" + options.facebook_lastname;\n\t\t\t\t\t\t\t\t\t\turl += \"&anrede=\" + options.facebook_gender;\n\n\t\t\t\t\t\t\t\t\t\tif (options.redirectExtLoginNotFoundUrl !== \"\") {\n\t\t\t\t\t\t\t\t\t\t\tself.location.href = url;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 409:\n\t\t\t\t\t\t\t\t\t\t$errorMessage.html(options.errorsFb.error409);\t// Account nicht aktiviert\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 410:\n\t\t\t\t\t\t\t\t\t\t$errorMessage.html(options.errorsFb.error410);\t// Gesperrt\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 500:\n\t\t\t\t\t\t\t\t\t\t$errorMessage.html(options.errorsFb.error500);\t// Systemfehler\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t$errorMessage.show();\n\n\t\t\t\t\t\t\t\t$(options.idLoginForm).llLogin(options);\n\t\t\t\t\t\t\t\t$(options.idLoginLayer).llLoginLayer(options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t);\n\t};\n\n\n\t$.fn.llLoginLayer = function (opts) {\n\n\t\treturn this.each(\n\t\t\tfunction () {\n\t\t\t\tvar that = this;\n\t\t\t\tvar options = $.extend(LL.defaults.loginLayerOptions, opts);\n\n\t\t\t\t// check for cookie\n\t\t\t\tvar cookie = readCookie(options.cookiename);\n\n\t\t\t\tif (cookie === null) { // not logged in\n\n\t\t\t\t\t$(this).text(options.textLogin);\n\t\t\t\t\t$(this).removeClass(\"bold\");\n\n\t\t\t\t\t$(this)\n\t\t\t\t\t\t.unbind(\"click\")\n\t\t\t\t\t\t.click(\n\t\t\t\t\t\t\tfunction (e) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t\tLL.actions.openLoginLayer(that, options);\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t_gaq.push(['_trackPageview', '/anmeldung/overlay']);\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tlog(\"ERROR: Google tracking failed in llLoginLayer()\", e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);// .click\n\n\t\t\t\t} else { // logged in\n\t\t\t\t\t$(this).text(options.textLogout);\n\t\t\t\t\t$(this).addClass(\"bold\");\n\n\t\t\t\t\t$(this)\n\t\t\t\t\t\t.unbind(\"click\")\n\t\t\t\t\t\t.click(\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t// Den Login-Status *vor* dem Logout zurücksetzen:\n\t\t\t\t\t\t\t\tif (typeof options.logoutCallback == \"function\") {\n\t\t\t\t\t\t\t\t\toptions.logoutCallback();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t$.ajax({\n\t\t\t\t\t\t\t\t\t\"cache\": options.cache,\n\t\t\t\t\t\t\t\t\t\"data\": \"nocache=\" + (Math.random() * 100000),\n\t\t\t\t\t\t\t\t\t\"dataType\": \"text\",\n\t\t\t\t\t\t\t\t\t\"type\": \"POST\",\n\t\t\t\t\t\t\t\t\t\"url\": options.urlLogout\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.success(function (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\t\t\t\tlog(\"succesfully logged out\", data, textStatus, jqXHR);\n\t\t\t\t\t\t\t\t\t\teraseCookie(\"saveLogin\");\n\t\t\t\t\t\t\t\t\t\teraseCookie(\"activityWatch\");\n\t\t\t\t\t\t\t\t\t\tcookie = readCookie(options.cookiename);\n\t\t\t\t\t\t\t\t\t\tif (cookie === null) {\n\t\t\t\t\t\t\t\t\t\t\t$(that).text(options.textLogin);\n\t\t\t\t\t\t\t\t\t\t\t$(that).removeClass(\"bold\");\n\n\t\t\t\t\t\t\t\t\t\t\t// reinitialize loginBox\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginForm).llLogin(options);\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).llLoginLayer(options);\n\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t_gaq.push(['_trackPageview', '/anmeldung/overlay']);\n\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\tlog(\"ERROR: Google tracking failed in llLoginLayer()\", e);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.error(\n\t\t\t\t\t\t\t\t\t\tfunction (jqXHR, textStatus, errorThrown) {\n\n\t\t\t\t\t\t\t\t\t\t\tlog(\"logout failed\", jqXHR, textStatus, errorThrown);\n\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginForm).llLogin(options);\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).llLoginLayer(options);\n\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t_gaq.push(['_trackPageview', '/anmeldung/overlay']);\n\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\tlog(\"ERROR: Google tracking failed in llLoginLayer()\", e);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t};\n\n\n\tLL.actions.openLoginLayer = function (domObj, options) {\n\t\tLL.actions.klick_navigation_anmelden_lightbox_open();\n\t\tLL.initFacebookLogin();\n\n\t\t$(\"#layer\").llLayerInject({\n\t\t\t\"callback\": function () {\n\t\t\t\tif (options.focusId) {\n\t\t\t\t\tvar elem = document.getElementById(options.focusId);\n\t\t\t\t\tif (elem) {\n\t\t\t\t\t\telem.focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$(\"#layer form\")\n\t\t\t\t\t.unbind(\"submit\")\n\t\t\t\t\t.submit(\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tvar form = this;\n\t\t\t\t\t\t\tvar data = $(this).serializeArray();\n\t\t\t\t\t\t\tvar submit = true;\n\t\t\t\t\t\t\tvar cookieTimeout = 10 * 365 * 86400;\t// 10 Jahre in Sekunden\n\n\t\t\t\t\t\t\tif ($(options.idSaveLogin, form).is(':checked')) {\n\t\t\t\t\t\t\t\tdata.push({\"name\": \"cookieTimeout\", \"value\": (cookieTimeout)});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t$(\"input\", this).removeClass(\"error\");\n\n\t\t\t\t\t\t\tvar $errorLayerMessage = $(\"#login_layer_error\");\n\t\t\t\t\t\t\t$errorLayerMessage.html('').hide();\n\n\t\t\t\t\t\t\tif ($(options.idUsername, this).val() === \"\") {\n\t\t\t\t\t\t\t\t$(options.idUsername, this).addClass(\"error\");\n\t\t\t\t\t\t\t\tsubmit = false;\n\t\t\t\t\t\t\t\t$errorLayerMessage.append('Benutzername / E-Mail darf nicht leer sein!').show();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ($(options.idPassword, this).val() === \"\") {\n\t\t\t\t\t\t\t\t$(options.idPassword, this).addClass(\"error\");\n\t\t\t\t\t\t\t\tsubmit = false;\n\t\t\t\t\t\t\t\t$errorLayerMessage.append('
Das Passwort darf nicht leer sein!').show();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (submit) {\n\t\t\t\t\t\t\t\t$.ajax({\n\t\t\t\t\t\t\t\t\t\"cache\": options.cache,\n\t\t\t\t\t\t\t\t\t\"data\": data,\n\t\t\t\t\t\t\t\t\t\"type\": \"POST\",\n\t\t\t\t\t\t\t\t\t\"url\": options.urlLogin\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.success(\n\t\t\t\t\t\t\t\t\t\tfunction (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\t\t\t\t\tcookie = readCookie(options.cookiename);\n\n\t\t\t\t\t\t\t\t\t\t\tif (cookie === null) {\n\t\t\t\t\t\t\t\t\t\t\t\tLL.actions.klick_anmelden_lightbox_senden_fehler();\n\t\t\t\t\t\t\t\t\t\t\t\tlog(\"login failed. no cookie\", data, textStatus, jqXHR);\n\t\t\t\t\t\t\t\t\t\t\t\t$(options.idUsername, form).addClass(\"error\");\n\t\t\t\t\t\t\t\t\t\t\t\t$(options.idPassword, form).addClass(\"error\");\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tLL.actions.klick_anmelden_lightbox_ok_close();\n\t\t\t\t\t\t\t\t\t\t\t\tlog(\"succesfully logged in\", data, textStatus, jqXHR);\n\t\t\t\t\t\t\t\t\t\t\t\t$(options.idUsername, form).addClass(\"error\");\n\n\t\t\t\t\t\t\t\t\t\t\t\tif ($(options.idSaveLogin, form).is(':checked')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcreateCookieSeconds(\"saveLogin\", \"true\", cookieTimeout);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\teraseCookie(\"saveLogin\");\n\t\t\t\t\t\t\t\t\t\t\t\t\teraseCookie(\"activityWatch\");\n\t\t\t\t\t\t\t\t\t\t\t\t\tcreateCookieSeconds(\"activityWatch\", \"active\", 3600);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t$(domObj).text(options.textLogout);\n\t\t\t\t\t\t\t\t\t\t\t\t$(domObj).addClass(\"bold\");\n\t\t\t\t\t\t\t\t\t\t\t\t$(\"input\", form).removeClass(\"error\");\n\t\t\t\t\t\t\t\t\t\t\t\t$(\"#layer\").fadeOut();\n\n\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t_gaq.push(['_setCustomVar', 2, 'Login', 'Ja', 2]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t_gaq.push(['_trackPageview']);\n\t\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlog(\"ERROR: Google tracking failed in openLoginLayer()\", e);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\toptions.postLoginAction();\n\t\t\t\t\t\t\t\t\t\t\t\tvar timeout = 1000;\n\t\t\t\t\t\t\t\t\t\t\t\tif (options.isQuestionAsked === \"true\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttimeout = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\twindow.setTimeout(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (options.redirectAfterLoginUrl !== \"\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tself.location.href = options.redirectAfterLoginUrl;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\ttimeout\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// reinitialize loginBox\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginForm).llLogin(options);\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).llLoginLayer(options);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.error(\n\t\t\t\t\t\t\t\t\t\tfunction (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\t\t\t\t\tLL.actions.klick_anmelden_lightbox_senden_fehler();\n\t\t\t\t\t\t\t\t\t\t\tlog(\"login failed\", jqXHR, textStatus, errorThrown);\n\t\t\t\t\t\t\t\t\t\t\t$(options.idUsername, form).addClass(\"error\");\n\t\t\t\t\t\t\t\t\t\t\t$(options.idPassword, form).addClass(\"error\");\n\n\t\t\t\t\t\t\t\t\t\t\tswitch (jqXHR.status) {\n\t\t\t\t\t\t\t\t\t\t\t\tcase 403:\n\t\t\t\t\t\t\t\t\t\t\t\t\t$errorLayerMessage.html(options.errors.error403).show();\t// Nicht gefunden\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase 409:\n\t\t\t\t\t\t\t\t\t\t\t\t\t$errorLayerMessage.html(options.errors.error409).show();\t// Account nicht aktiviert\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase 410:\n\t\t\t\t\t\t\t\t\t\t\t\t\t$errorLayerMessage.html(options.errors.error410).show();\t// Gesperrt\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase 500:\n\t\t\t\t\t\t\t\t\t\t\t\t\t$errorLayerMessage.html(options.errors.error500).show();\t// Systemfehler\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginForm).llLogin(options);\n\t\t\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).llLoginLayer(options);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} // if (submit)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t}, // \"callback\": function\n\t\t\t\"closeCallback\": function () {\n\t\t\t\tLL.actions.klick_anmelden_lightbox_manuell_close();\n\t\t\t},\n\t\t\t\"html\": options.html\n\t\t}); // $.llLayerInject\n\n\t\t$('#community_layer_facebook_login').click(function(e) {\n\t\t\tvar that = this;\n\t\t\tvar $div = $(that).closest(\"div.right\");\n\n\t\t\ttry {\n\t\t\t\tFB.login(function(response) {\n\t\t\t\t\tif (response.authResponse) {\n\t\t\t\t\t\tFB.api('/me', function(response) {\n\t\t\t\t\t\t\t// Werte: response.id,.name,.first_name,.last_name,.link,.username,.gender,.locale,.age_range,.email\n\n\t\t\t\t\t\t\tvar loginExtOptions = $.extend(options, {\n\t\t\t\t\t\t\t\t\"facebookid_externalid\": response.id,\n\t\t\t\t\t\t\t\t\"facebook_email\": response.email ? response.email : \"\",\n\t\t\t\t\t\t\t\t\"facebook_username\": response.username,\n\t\t\t\t\t\t\t\t\"facebook_name\": response.name ? response.name :\"\",\n\t\t\t\t\t\t\t\t\"facebook_link\": response.link ? response.link : \"\",\n\t\t\t\t\t\t\t\t\"facebook_firstname\": response.first_name ? response.first_name : \"\",\n\t\t\t\t\t\t\t\t\"facebook_lastname\": response.last_name ? response.last_name : \"\",\n\t\t\t\t\t\t\t\t\"facebook_gender\": response.gender ? response.gender : \"\",\n\t\t\t\t\t\t\t\t\"errorsFb\": {\n\t\t\t\t\t\t\t\t\t\"error403\": \"Unbekannes Facebook-Konto. Weiterleitung zur Registrierung...\",\t// Nicht gefunden\n\t\t\t\t\t\t\t\t\t\"error409\": options.errors.error409,\t// Account nicht aktiviert\n\t\t\t\t\t\t\t\t\t\"error410\": options.errors.error410,\t// Gesperrt\n\t\t\t\t\t\t\t\t\t\"error500\": options.errors.error500\t\t// Systemfehler\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"success\": function() {\n\t\t\t\t\t\t\t\t\tLL.actions.klick_anmelden_lightbox_ok_close();\n\t\t\t\t\t\t\t\t\t$(\"#layer\").fadeOut();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"urlLogin\": LL.defaults.extLoginUrl\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t$div.llLoginExt(loginExtOptions);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar error = \"Login fehlgeschlagen.\";\n\t\t\t\t\t\tif (response.status === \"not_authorized\") {\n\t\t\t\t\t\t\terror = \"Der Facebook-Login-Service hat die Anfrage abgelehnt.\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terror = \"Der Facebook-Login-Service ist nicht erreichbar oder wurde abgebrochen.\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(\".error_message\", $div).html(error).show();\n\t\t\t\t\t}\n\t\t\t\t}, {scope: \"email\"});\n\t\t\t} catch (ex) {\n\t\t\t\t// it's just a bug in the facebook API in Internet Explorer 7 to 9\n\t\t\t\tlog(\"LL.actions.openLoginLayer\", this, \"FB-Login-Error: \" + ex);\n\t\t\t}\n\t\t\te.stopPropagation();\n\t\t\treturn false;\n\t\t});\n\t};\n\n\n\t$.fn.llModExperts = function () {\n\n\t\treturn this.each(function () {\n\t\t\tvar $li = $(\"li\", this);\n\n\t\t\t// iterate over each answer\n\t\t\t$li.each(function () {\n\t\t\t\tvar $text = $(\".text\", this),\n\t\t\t\t\t$hide = $(\".hide\", this),\n\t\t\t\t\t$dots = $(\"...\"),\n\t\t\t\t\t$switch = $(\"
Erweitern
\");\n\n\t\t\t\t// toggling text visibility\n\t\t\t\t$switch\n\t\t\t\t\t.toggle(\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t$hide\n\t\t\t\t\t\t\t\t.show();\n\n\t\t\t\t\t\t\t$dots\n\t\t\t\t\t\t\t\t.hide();\n\n\t\t\t\t\t\t\t$switch\n\t\t\t\t\t\t\t\t.find(\".more\")\n\t\t\t\t\t\t\t\t.text(\"Reduzieren\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t$hide\n\t\t\t\t\t\t\t\t.hide();\n\n\t\t\t\t\t\t\t$dots\n\t\t\t\t\t\t\t\t.show();\n\n\t\t\t\t\t\t\t$switch\n\t\t\t\t\t\t\t\t.find(\".more\")\n\t\t\t\t\t\t\t\t.text(\"Erweitern\");\n\t\t\t\t\t\t});\n\n\t\t\t\t// only apply switch if there is text to be hidden\n\t\t\t\tif ($hide.size() > 0) {\n\t\t\t\t\t$hide\n\t\t\t\t\t\t.before($dots)\n\t\t\t\t\t\t.hide();\n\n\t\t\t\t\t$text\n\t\t\t\t\t\t.append($switch);\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\t};\n\n\n\t$.fn.llPaging = function (opts) {\n\t\tvar options = $.extend({\n\t\t\t\"activePageIndex\": 0,\n\t\t\t\"limit\": 0\n\t\t}, opts);\n\n\t\treturn this.each(function () {\n\t\t\tvar that = this;\n\n\t\t\tvar $article = $(\".article > .txt\", this);\n\t\t\tvar $articleElements = $(\".article > .txt > *\", this);\n\t\t\tvar $paragraphs = $(\".article > .txt p\", this);\n\t\t\tvar $paging = $(\"#paging\", this);\n\n\t\t\tvar activePagingGroupIndex = options.activePageIndex;\n\n\t\t\t// paginate text\n\t\t\tvar autoPaging = (options.limit > 0);\n\t\t\tvar charCount = 0;\n\t\t\tvar elementsCount = $articleElements.size();\n\t\t\tvar paragraphCount = $paragraphs.size();\n\t\t\tvar pagingGroups = [];\n\t\t\tvar pagingGroupIndex = 0;\n\t\t\tvar pagingGroupsLength = 0;\n\n\t\t\tvar $lastElement = null;\n\n\t\t\t$articleElements.each(function (index, element) {\n\t\t\t\tvar $element = $(element);\n\n\t\t\t\t// element is a paragraph\n\t\t\t\tif ($element.is(\"h6\") || (autoPaging && $element.is(\"p\"))) {\n\n\t\t\t\t\t// limit reached and there is another paragraph and last element wasn't a h1-h6\n\t\t\t\t\tif ($element.is(\"h6\") || (autoPaging && (charCount > options.limit && pagingGroupIndex < paragraphCount - 1 && !$lastElement.is(\"h1, h2, h3, h4, h5, h6\")))) {\n\t\t\t\t\t\t// set index for new pagingGroup\n\t\t\t\t\t\tpagingGroupIndex += 1;\n\n\t\t\t\t\t\t// reset charCount\n\t\t\t\t\t\tcharCount = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcharCount += $.trim($element.text()).length;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// open up new paging group if non-existent\n\t\t\t\tif (typeof pagingGroups[pagingGroupIndex] === \"undefined\") {\n\t\t\t\t\tpagingGroups[pagingGroupIndex] = $('
');\n\t\t\t\t}\n\n\t\t\t\t// set last element\n\t\t\t\t$lastElement = $element;\n\n\t\t\t\t// push element into group\n\t\t\t\tpagingGroups[pagingGroupIndex].append($element.clone(true));\n\t\t\t});\n\n\t\t\tpagingGroupsLength = pagingGroups.length;\n\n\t\t\t// break if there ain't enough content for paging\n\t\t\tif (pagingGroupsLength < 2) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// wrap original elements and hide\n\t\t\tvar $original = $('
');\n\t\t\t$original.html($article.html());\n\t\t\t$article.html($original);\n\n\t\t\t// add clones to page\n\t\t\t$(pagingGroups).each(function () {\n\t\t\t\t$article.append(this);\n\t\t\t});\n\n\t\t\t// show first pagingGroup\n\t\t\tpagingGroups[activePagingGroupIndex].show();\n\n\t\t\t// build paging module\n\t\t\tvar buildPaging = function () {\n\t\t\t\tvar pagingSkel = [];\n\t\t\t\tvar $pagingSkel;\n\n\t\t\t\tpagingSkel.push('

');\n\n\t\t\t\tif (activePagingGroupIndex > 0) {\n\t\t\t\t\tvar prevIndex = activePagingGroupIndex - 1;\n\t\t\t\t\tpagingSkel.push('');\n\t\t\t\t\tpagingSkel.push('');\n\t\t\t\t}\n\n\t\t\t\tpagingSkel.push('');\n\n\t\t\t\tfor (var i = 0; i < pagingGroupsLength; i++) {\n\t\t\t\t\tvar pageTitle = 'Seite ' + (i + 1);\n\t\t\t\t\tvar pageClass = 'btn' + (i === activePagingGroupIndex ? ' active' : '') + '';\n\t\t\t\t\tvar pageLink = '' + (i + 1) + '';\n\n\t\t\t\t\t// [x - 10]:\n\t\t\t\t\tif ((i >= 0) && (i === activePagingGroupIndex - 10)) {\n\t\t\t\t\t\tpagingSkel.push(pageLink);\n\t\t\t\t\t\tpagingSkel.push(' ... ');\n\t\t\t\t\t}\n\t\t\t\t\t// [x - 1], [x], [x + 1]:\n\t\t\t\t\tif ((i >= activePagingGroupIndex - 1) && (i <= activePagingGroupIndex + 1)) {\n\t\t\t\t\t\tpagingSkel.push(pageLink);\n\t\t\t\t\t}\n\t\t\t\t\t// [x + 10]:\n\t\t\t\t\tif ((i <= pagingGroupsLength - 1) && (i === activePagingGroupIndex + 10)) {\n\t\t\t\t\t\tpagingSkel.push(' ... ');\n\t\t\t\t\t\tpagingSkel.push(pageLink);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpagingSkel.push('');\n\n\t\t\t\tif (activePagingGroupIndex < pagingGroupsLength - 1) {\n\t\t\t\t\tvar nextIndex = activePagingGroupIndex + 1;\n\t\t\t\t\tvar lastIndex = pagingGroupsLength - 1;\n\t\t\t\t\tpagingSkel.push('');\n\t\t\t\t\tpagingSkel.push('');\n\t\t\t\t}\n\n\t\t\t\tpagingSkel.push('

');\n\n\t\t\t\t$pagingSkel = $(pagingSkel.join(\"\"));\n\n\t\t\t\t$paging.html($pagingSkel);\n\t\t\t};\n\t\t\tbuildPaging();\n\n\t\t\t// Original-HTML entfernen, damit der Code (und die IDs) nicht doppelt ist (sind).\n\t\t\t$original.html(\"\");\n\t\t});\n\t};\n\n\t$.fn.llTeaserClipPaging = function (options) {\n\n\t\treturn this.each(function () {\n\n\t\t\tvar $paging = $(\".paging\", this);\n\t\t\tvar $links = $(\".paging a\", this);\n\t\t\tvar $pages = $(\".clip_page\", this);\n\t\t\tvar id = $(this).attr(\"id\");\n\t\t\tvar activePagingGroupIndex = 0;\n\t\t\tvar pagingGroupsLength = $pages.length;\n\n\t\t\tvar gotoPage = function () {\n\t\t\t\tLL.actions.klick_teaser_clip_paging({\"page\": activePagingGroupIndex});\n\t\t\t\tvar $thisPage = $pages.eq(activePagingGroupIndex);\n\n\t\t\t\t$pages.addClass(\"hidden\");\n\t\t\t\t$thisPage\n\t\t\t\t\t.removeClass(\"hidden\")\n\t\t\t\t\t.find(\".lazy\")\n\t\t\t\t\t.trigger(\"appear\");\n\n\t\t\t\t$(window).scrollTop($(\"#\" + id).offset().top - 20);\n\t\t\t};\n\n\t\t\t// build paging module\n\t\t\tvar buildPaging = function () {\n\t\t\t\tvar pagingSkel = [];\n\t\t\t\tvar $pagingSkel;\n\n\t\t\t\tpagingSkel.push('

');\n\n\t\t\t\tif (activePagingGroupIndex > 0) {\n\t\t\t\t\tpagingSkel.push('');\n\t\t\t\t\tpagingSkel.push('');\n\t\t\t\t}\n\n\t\t\t\tpagingSkel.push('');\n\n\t\t\t\tfor (var i = 0; i < pagingGroupsLength; i++) {\n\t\t\t\t\tvar pageTitle = 'Seite ' + (i + 1);\n\t\t\t\t\tvar pageClass = 'btn' + (i === activePagingGroupIndex ? ' active' : '') + '';\n\t\t\t\t\tvar pageLink = '' + (i + 1) + '';\n\n\t\t\t\t\t// [x - 10]:\n\t\t\t\t\tif ((i >= 0) && (i === activePagingGroupIndex - 10)) {\n\t\t\t\t\t\tpagingSkel.push(pageLink);\n\t\t\t\t\t\tpagingSkel.push(' ... ');\n\t\t\t\t\t}\n\t\t\t\t\t// [x - 1], [x], [x + 1]:\n\t\t\t\t\tif ((i >= activePagingGroupIndex - 1) && (i <= activePagingGroupIndex + 1)) {\n\t\t\t\t\t\tpagingSkel.push(pageLink);\n\t\t\t\t\t}\n\t\t\t\t\t// [x + 10]:\n\t\t\t\t\tif ((i <= pagingGroupsLength - 1) && (i === activePagingGroupIndex + 10)) {\n\t\t\t\t\t\tpagingSkel.push(' ... ');\n\t\t\t\t\t\tpagingSkel.push(pageLink);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpagingSkel.push('');\n\n\t\t\t\tif (activePagingGroupIndex < pagingGroupsLength - 1) {\n\t\t\t\t\tpagingSkel.push('');\n\t\t\t\t\tpagingSkel.push('');\n\t\t\t\t}\n\n\t\t\t\tpagingSkel.push('

');\n\n\t\t\t\t$pagingSkel = $(pagingSkel.join(\"\"));\n\n\t\t\t\t// add events\n\t\t\t\t$pagingSkel\n\t\t\t\t\t.find(\".first\")\n\t\t\t\t\t.click(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tactivePagingGroupIndex = 0;\n\t\t\t\t\t\tgotoPage();\n\t\t\t\t\t\tbuildPaging();\n\t\t\t\t\t});\n\n\t\t\t\t$pagingSkel\n\t\t\t\t\t.find(\".prev\")\n\t\t\t\t\t.click(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tactivePagingGroupIndex -= 1;\n\t\t\t\t\t\tgotoPage();\n\t\t\t\t\t\tbuildPaging();\n\t\t\t\t\t});\n\n\t\t\t\t$pagingSkel\n\t\t\t\t\t.find(\".next\")\n\t\t\t\t\t.click(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tactivePagingGroupIndex += 1;\n\t\t\t\t\t\tgotoPage();\n\t\t\t\t\t\tbuildPaging();\n\t\t\t\t\t});\n\n\t\t\t\t$pagingSkel\n\t\t\t\t\t.find(\".last\")\n\t\t\t\t\t.click(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tactivePagingGroupIndex = pagingGroupsLength - 1;\n\t\t\t\t\t\tgotoPage();\n\t\t\t\t\t\tbuildPaging();\n\t\t\t\t\t});\n\n\t\t\t\t$pagingSkel\n\t\t\t\t\t.find(\"a.btn\")\n\t\t\t\t\t.click(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tactivePagingGroupIndex = parseInt($(this).text()) - 1;\n\t\t\t\t\t\tgotoPage();\n\t\t\t\t\t\tbuildPaging();\n\t\t\t\t\t});\n\n\t\t\t\t$paging.html($pagingSkel);\n\t\t\t};\n\t\t\tbuildPaging();\n\n\t\t});\n\t};\n\n\n\t$.fn.ll_pollLayer = function (opts) {\n\t\tvar widgetDiv = opts;\n\n\t\tvar options = $.extend({}, opts);\n\n\t\treturn this.each(function () {\n\t\t\tvar $that = $(this);\n\t\t\tvar $form = $(\"form\", this);\n\n\t\t\t$form.live(\"submit\", function () {\n\t\t\t\tvar formData = $(this).serializeArray();\n\t\t\t\tvar postUrl = $(this).attr(\"action\");\n\t\t\t\t$.ajax({\n\t\t\t\t\t\"cache\": false,\n\t\t\t\t\tdata: formData,\n\t\t\t\t\ttype: \"POST\",\n\t\t\t\t\turl: postUrl\n\t\t\t\t})\n\t\t\t\t\t.success(function (data, textStatus, jqXHR) {\n\t\t\t\t\t\t$(\"#\" + widgetDiv).hide();\n\n\t\t\t\t\t\t$(\"#\" + widgetDiv + '_r')\n\t\t\t\t\t\t\t.html(data)\n\t\t\t\t\t\t\t.show();\n\n\t\t\t\t\t\t$(\"#\" + widgetDiv + '_r')\n\t\t\t\t\t\t\t.find(\".close\")\n\t\t\t\t\t\t\t.live(\"click\", function () {\n\t\t\t\t\t\t\t\t$(\"#\" + widgetDiv + '_r').hide();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\tLL.actions.klick(\"klick_voting_submit\");\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t})\n\t\t\t\t\t.error(function (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\tlog(jqXHR, textStatus, errorThrown);\n\t\t\t\t\t});\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llQuestion = function () {\n\t\treturn this.each(function () {\n\t\t\tvar $prev = $(\".prev\", this);\n\t\t\tvar $next = $(\".next\", this);\n\t\t\tvar $lists = $(\".list\", this);\n\t\t\tvar listCount = $(\".list\", this).size();\n\t\t\tvar index = 0;\n\n\t\t\t$prev.live(\"click\", function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tLL.actions.klick_f_a_box_pfeil_zurueck();\n\n\t\t\t\tindex -= 1;\n\n\t\t\t\t$lists\n\t\t\t\t\t.hide()\n\t\t\t\t\t.eq(index)\n\t\t\t\t\t.show();\n\n\t\t\t\tindex >= listCount - 1 ?\n\t\t\t\t\t$next.hide() :\n\t\t\t\t\t$next.show();\n\n\t\t\t\tindex <= 0 ?\n\t\t\t\t\t$prev.hide() :\n\t\t\t\t\t$prev.show();\n\t\t\t});\n\n\t\t\t$next.live(\"click\", function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tLL.actions.klick_f_a_box_pfeil_vor();\n\n\t\t\t\tindex += 1;\n\n\t\t\t\t$lists\n\t\t\t\t\t.hide()\n\t\t\t\t\t.eq(index)\n\t\t\t\t\t.show();\n\n\t\t\t\tindex >= listCount - 1 ?\n\t\t\t\t\t$next.hide() :\n\t\t\t\t\t$next.show();\n\n\t\t\t\tindex <= 0 ?\n\t\t\t\t\t$prev.hide() :\n\t\t\t\t\t$prev.show();\n\t\t\t});\n\n\t\t\t$next.show();\n\t\t});\n\t};\n\n\n\t$.fn.llRate = function () {\n\t\treturn this.each(function () {\n\t\t\tvar $form = $(\"form\", this),\n\t\t\t\t$submit = $(\"input[type=submit]\", this),\n\t\t\t\t$badge = $(\".badge\", this);\n\n\t\t\t$form\n\t\t\t\t.submit(function (e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t// disable submit button\n\t\t\t\t\t$submit.prop(\"disabled\", true);\n\n\t\t\t\t\t// use css3 if possible\n\t\t\t\t\t$submit.addClass(\"disabled\");\n\t\t\t\t\tvar data = $(this).serializeArray();\n\n\t\t\t\t\t// send vote\n\t\t\t\t\t$.ajax({\n\t\t\t\t\t\t\"cache\": false,\n\t\t\t\t\t\t\"data\": data,\n\t\t\t\t\t\t\"type\": $form.prop(\"method\"),\n\t\t\t\t\t\t\"url\": $form.prop(\"action\")\n\t\t\t\t\t})\n\t\t\t\t\t\t.success(function (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\t// write respone into badge and show no. of votes\n\t\t\t\t\t\t\t$badge.html(data);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.error(function (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\t// error\n\t\t\t\t\t\t\tlog(\"$.fn.llRate\", this, jqXHR, textStatus, errorThrown);\n\t\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t});\n\t};\n\n\n\t$.fn.llIndexBox = function () {\n\t\treturn this.each(function () {\n\t\t\tvar $more = $(\".more\", this);\n\t\t\tvar $less = $(\".less\", this);\n\t\t\tvar $li = $(\"li.hide\", this);\n\n\t\t\t$more\n\t\t\t\t.click(function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\t$more.hide();\n\t\t\t\t\t$less.show();\n\t\t\t\t\t$li.show();\n\t\t\t\t});\n\n\t\t\t$less\n\t\t\t\t.click(function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\t$less.hide();\n\t\t\t\t\t$more.show();\n\t\t\t\t\t$li.hide();\n\t\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llSearchLayer = function (options) {\n\t\tvar opts = $.extend({\n\t\t\t\"url\": null,\n\t\t\t\"defaultValue\": \"\"\n\t\t}, options);\n\t\treturn this.each(function () {\n\t\t\tvar $form = $(this);\n\t\t\tvar $input = $(\".text\", this);\n\t\t\tvar $layer = $(\".suggest\", this);\n\n\t\t\tvar sending = false;\n\t\t\tvar layerIndex;\n\t\t\tvar value = $input.val();\n\n\t\t\t$form.attr(\"autocomplete\", \"off\");\n\t\t\t$input.attr(\"autocomplete\", \"off\");\n\n\t\t\t// Den Standardtext beim ersten Fokussieren entfernen und die Farbe anpassen:\n\t\t\t$input.focus(function (e) {\n\t\t\t\tif ($input.val() == opts.defaultValue) {\n\t\t\t\t\t$input.val(\"\");\n\t\t\t\t\t$input.removeClass(\"default\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Autocomplete-Layer ausblenden, wenn man woanders auf die Seite klickt. Da das Text-\n\t\t\t// feld aber auch beim Klick auf einen Autocomplete-Eintrag den Focus verliert, einen\n\t\t\t// kleinen Moment warten, bevor man es ausblendet.\n\t\t\t$input.blur(function (e) {\n\t\t\t\tvar hideTimer = null;\n\t\t\t\twindow.clearTimeout(hideTimer);\n\t\t\t\thideTimer = window.setTimeout(function () {\n\t\t\t\t\t$layer.html(\"\").hide();\n\t\t\t\t}, 300);\n\t\t\t});\n\n\t\t\t$form.submit(function (e) {\n\t\t\t\tif ($input.val() == opts.defaultValue) {\n\t\t\t\t\t$input.val(\"\");\n\t\t\t\t\t$input.removeClass(\"default\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$form.keyup(function (e) {\n\t\t\t\tvar inputLength = $input.val().length;\n\n\t\t\t\t// escape\n\t\t\t\tif (e.keyCode === 27) {\n\t\t\t\t\t$layer\n\t\t\t\t\t\t.html(\"\")\n\t\t\t\t\t\t.hide();\n\n\t\t\t\t\tlayerIndex = undefined;\n\n\t\t\t\t\t$input.text($input.val());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// up\n\t\t\t\tif (e.keyCode === 38) {\n\t\t\t\t\tvar $results = $layer.find(\"li li\");\n\t\t\t\t\tvar resultCount = $results.size();\n\n\t\t\t\t\tlayerIndex == undefined ? layerIndex = resultCount - 1 : layerIndex = getIndex(layerIndex - 1, resultCount);\n\n\t\t\t\t\t$results\n\t\t\t\t\t\t.removeClass(\"active\")\n\t\t\t\t\t\t.eq(layerIndex)\n\t\t\t\t\t\t.addClass(\"active\");\n\n\t\t\t\t\t$input.val($results.eq(layerIndex).find(\".term\").text());\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// down\n\t\t\t\tif (e.keyCode === 40) {\n\t\t\t\t\tvar $results = $layer.find(\"li li\");\n\t\t\t\t\tvar resultCount = $results.size();\n\n\t\t\t\t\tlayerIndex == undefined ? layerIndex = 0 : layerIndex = getIndex(layerIndex + 1, resultCount);\n\n\t\t\t\t\t$results\n\t\t\t\t\t\t.removeClass(\"active\")\n\t\t\t\t\t\t.eq(layerIndex)\n\t\t\t\t\t\t.addClass(\"active\");\n\n\t\t\t\t\t$input.val($results.eq(layerIndex).find(\".term\").text());\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// enter\n\t\t\t\tif (e.keyCode === 13 && layerIndex != undefined) { // enter\n\t\t\t\t\tvar $results = $layer.find(\"li li\");\n\t\t\t\t\t$input.val($results.eq(layerIndex).find(\".term\").text());\n\n\t\t\t\t\t$layer\n\t\t\t\t\t\t.html(\"\")\n\t\t\t\t\t\t.hide();\n\t\t\t\t\tlayerIndex = undefined;\n\n\t\t\t\t\treturn;\n\t\t\t\t} else if (e.keyCode === 13) {\n\t\t\t\t\t$layer\n\t\t\t\t\t\t.html(\"\")\n\t\t\t\t\t\t.hide();\n\n\t\t\t\t\tlayerIndex = undefined;\n\n\t\t\t\t\t$form.submit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\n\t\t\t\tif (inputLength >= 2 && sending === false && value !== $input.val()) {\n\t\t\t\t\tvalue = $input.val();\n\t\t\t\t\tsending = true;\n\t\t\t\t\tinputLengthSent = inputLength;\n\n\t\t\t\t\t$.ajax({\n\t\t\t\t\t\t\"url\": opts.url,\n\t\t\t\t\t\t\"data\": {\n\t\t\t\t\t\t\t\"search\": value\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t\t.success(function (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\tif ($(data).size() !== 0) {\n\t\t\t\t\t\t\t\t$layer\n\t\t\t\t\t\t\t\t\t.html(data)\n\t\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$layer\n\t\t\t\t\t\t\t\t\t.html(\"\")\n\t\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlayerIndex = undefined;\n\t\t\t\t\t\t\tsending = false;\n\n\t\t\t\t\t\t\tif (inputLength !== inputLengthSent) {\n\t\t\t\t\t\t\t\t$input.trigger(\"keyup\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.error(function (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\tlog(jqXHR, textStatus, errorThrown);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\t};\n\n\n\t$.fn.llSelftestAnswers = function () {\n\t\treturn this.each(function () {\n\t\t\tvar $input = $(\"input\", this);\n\t\t\tvar $answerDesc = $(\".answer_desc\", this);\n\t\t\tvar that = this;\n\n\t\t\t$input.click(function () {\n\t\t\t\t$answerDesc.each(function () {\n\t\t\t\t\tvar id = $(this).attr(\"id\").replace(\"_desc\", \"\");\n\t\t\t\t\tvar $answer = $(\"#\" + id, that);\n\n\t\t\t\t\tif ($answer.is(':checked')) {\n\t\t\t\t\t\t$(this).show();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llShortcuts = function (opts) {\n\t\tvar options = $.extend({\n\t\t\t\"autoclose\": true,\n\t\t\t\"duration\": 500\n\t\t}, opts);\n\n\t\treturn this.each(function () {\n\t\t\tvar $hl = $(\".hl\", this);\n\t\t\tvar $lists = $(\".lists\", this);\n\t\t\tvar count = $lists.size();\n\n\t\t\t$hl\n\t\t\t\t.css(\"cursor\", \"pointer\")\n\t\t\t\t.click(function (e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tvar that = this;\n\n\t\t\t\t\tif (options.autoclose) {\n\t\t\t\t\t\t$hl\n\t\t\t\t\t\t\t.not(this)\n\t\t\t\t\t\t\t.each(function () {\n\t\t\t\t\t\t\t\tvar $list = $(this).siblings(\".list\");\n\t\t\t\t\t\t\t\tvar $parent = $(this).closest(\".lists\");\n\n\t\t\t\t\t\t\t\t$list.slideUp(\n\t\t\t\t\t\t\t\t\toptions.duration,\n\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\t$parent.removeClass(\"active\");\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t$(this)\n\t\t\t\t\t\t.each(function () {\n\t\t\t\t\t\t\tvar $list = $(this).siblings(\".list\");\n\t\t\t\t\t\t\tvar $parent = $(this).closest(\".lists\");\n\n\t\t\t\t\t\t\tif ($parent.hasClass(\"active\")) {\n\t\t\t\t\t\t\t\t$list.slideUp(\n\t\t\t\t\t\t\t\t\toptions.duration,\n\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\t$parent.removeClass(\"active\");\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$list.slideDown(\n\t\t\t\t\t\t\t\t\toptions.duration,\n\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\t$parent.addClass(\"active\");\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llSitemapToggle = function () {\n\t\treturn this.each(function () {\n\t\t\tvar that = this;\n\n\t\t\t$(\"li.sub > a\", this).click(\n\t\t\t\tfunction () {\n\t\t\t\t\tif ($(this).next(\".toggle\").is(\":hidden\")) {\n\t\t\t\t\t\t// open\n\t\t\t\t\t\tif ($(this).closest(\"li\").hasClass(\"fl\")) {\n\t\t\t\t\t\t\t$(\".fl.open\", that)\n\t\t\t\t\t\t\t\t.removeClass(\"open\")\n\t\t\t\t\t\t\t\t.children(\".toggle:first\")\n\t\t\t\t\t\t\t\t.slideUp();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t.closest(\"li\")\n\t\t\t\t\t\t\t.addClass(\"open\")\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t.next(\".toggle\")\n\t\t\t\t\t\t\t.slideDown();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// close\n\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t.next(\".toggle\")\n\t\t\t\t\t\t\t.slideUp()\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t.closest(\"li\")\n\t\t\t\t\t\t\t.removeClass(\"open\");\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llNavboxToggle = function () {\n\t\treturn this.each(function () {\n\n\t\t\t// click on list item\n\t\t\t$(\"li.sub\", this)\n\t\t\t\t.click(function (e) {\n\t\t\t\t\t// stop bubbling up the DOM\n\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\t// get click position\n\t\t\t\t\tvar x = e.pageX - $(this).offset().left;\n\t\t\t\t\tvar y = e.pageY - $(this).offset().top;\n\n\t\t\t\t\t// if not above + or - return here\n\t\t\t\t\tif (x < 0 || x > 23 || y < 0 || y > 26) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// open or close the sublist for the clicked element\n\t\t\t\t\tif ($(this).hasClass(\"open\")) {\t// close\n\t\t\t\t\t\t// change icon\n\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t.removeClass(\"open\");\n\n\t\t\t\t\t\t// close sublist\n\t\t\t\t\t\t$(\"> .toggle\", this)\n\t\t\t\t\t\t\t.slideUp(function () {\n\t\t\t\t\t\t\t\t// close all child-sublists and change icon to closed\n\t\t\t\t\t\t\t\t$(\".toggle\", this)\n\t\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\t\t\t\t$(\".open\", this)\n\t\t\t\t\t\t\t\t\t.removeClass(\"open\");\n\t\t\t\t\t\t\t});\n\t\t\t\t\t} else {\t\t\t\t\t\t\t\t// open\n\t\t\t\t\t\t// change icon\n\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t.addClass(\"open\");\n\n\t\t\t\t\t\t// open sublist\n\t\t\t\t\t\t$(\"> .toggle\", this)\n\t\t\t\t\t\t\t.slideDown();\n\n\t\t\t\t\t\t// get all lists on the same layer and close them and their sublists\n\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t.siblings()\n\t\t\t\t\t\t\t.removeClass(\"open\")\n\t\t\t\t\t\t\t.find(\"> .toggle\")\n\t\t\t\t\t\t\t.slideUp(function () {\n\t\t\t\t\t\t\t\t// close all child-sublists and change icon to closed\n\t\t\t\t\t\t\t\t$(\".toggle\", this)\n\t\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\t\t\t\t$(\".open\", this)\n\t\t\t\t\t\t\t\t\t.removeClass(\"open\");\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llSlideShow = function (opts) {\n\t\tvar options = $.extend({\n\t\t\t\"duration\": 500\n\t\t}, opts);\n\n\t\treturn this.each(function () {\n\t\t\tvar that = this;\n\t\t\tvar $wrapper = $(\".wrapper\", this);\n\t\t\tvar $list = $(\".list\", this);\n\t\t\tvar $prev = $(\".prev\", this);\n\t\t\tvar $next = $(\".next\", this);\n\t\t\tvar $images = $(\".list img\", this);\n\t\t\tvar $counter = $(\".counter .idx\", this);\n\n\t\t\tvar index = 0;\n\t\t\tvar elementCount = $(\".list li\", this).size();\n\t\t\tvar elementWidth = 460;\n\n\t\t\tvar headline = $(\".hd\", this).text();\n\n\t\t\t$(\".control\", this).show();\n\n\t\t\tvar slide = function (idx, callback) {\n\t\t\t\tvar offsetLeft = -5 - ((idx) * elementWidth);\n\n\t\t\t\t$counter.text(getIndex(idx, elementCount) + 1);\n\n\t\t\t\t$(\".list\", that)\n\t\t\t\t\t.animate({\n\t\t\t\t\t\t\"margin-left\": offsetLeft\n\t\t\t\t\t}, function () {\n\t\t\t\t\t\tif (typeof callback === \"function\") {\n\t\t\t\t\t\t\tcallback.call();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t};\n\n\t\t\tvar prev = function () {\n\t\t\t\tindex -= 1;\n\n\t\t\t\tif (index < 0) {\n\t\t\t\t\t// duplicate & position\n\t\t\t\t\tvar offset = -(elementCount * elementWidth) - 5;\n\n\t\t\t\t\t$list\n\t\t\t\t\t\t.find(\"li\")\n\t\t\t\t\t\t.clone(true, true)\n\t\t\t\t\t\t.prependTo($list);\n\t\t\t\t\t$list.css(\"margin-left\", offset);\n\n\t\t\t\t\tslide(getIndex(index, elementCount), function () {\n\t\t\t\t\t\t$list\n\t\t\t\t\t\t\t.find(\"li:gt(\" + (elementCount - 1) + \")\")\n\t\t\t\t\t\t\t.remove();\n\t\t\t\t\t\tindex = getIndex(index, elementCount);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tslide(index);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar next = function () {\n\t\t\t\tindex += 1;\n\n\t\t\t\tif (index >= elementCount) {\n\t\t\t\t\t// duplicate & position\n\t\t\t\t\t$list\n\t\t\t\t\t\t.find(\"li\")\n\t\t\t\t\t\t.clone(true, true)\n\t\t\t\t\t\t.appendTo($list);\n\n\t\t\t\t\tslide(index, function () {\n\t\t\t\t\t\t$list\n\t\t\t\t\t\t\t.find(\"li:lt(\" + elementCount + \")\")\n\t\t\t\t\t\t\t.remove()\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t.css(\"margin-left\", \"-5px\");\n\n\t\t\t\t\t\tindex = getIndex(index, elementCount);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tslide(index);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$(this)\n\t\t\t\t.on(\"click\", \".prev\", function () {\n\t\t\t\t\tprev();\n\t\t\t\t\tLL.actions.klick_fotostrecke_zurueck({\n\t\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\t\"trigger\": \"pfeil_button\"\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t$(this)\n\t\t\t\t.on(\"click\", \".next\", function () {\n\t\t\t\t\tnext();\n\t\t\t\t\tLL.actions.klick_fotostrecke_vor({\n\t\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\t\"trigger\": \"pfeil_button\"\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t$(document).keyup(function (e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\tprev();\n\t\t\t\t\t\tLL.actions.klick_fotostrecke_zurueck({\n\t\t\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\t\t\"trigger\": \"keypress\"\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\tnext();\n\t\t\t\t\t\tLL.actions.klick_fotostrecke_vor({\n\t\t\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\t\t\"trigger\": \"keypress\"\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$images\n\t\t\t\t.css(\"cursor\", \"pointer\")\n\t\t\t\t.click(function (e) {\n\t\t\t\t\tvar relativeX = e.pageX - $(this).offset().left;\n\t\t\t\t\tif (relativeX <= 225) {\n\t\t\t\t\t\tprev();\n\t\t\t\t\t\tLL.actions.klick_fotostrecke_zurueck({\n\t\t\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\t\t\"trigger\": \"sensitive_area\"\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnext();\n\t\t\t\t\t\tLL.actions.klick_fotostrecke_vor({\n\t\t\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\t\t\"trigger\": \"sensitive_area\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t});\n\t};\n\n\n\t$.fn.llTabs = function () {\n\t\treturn this.each(function () {\n\t\t\tvar $tabs = $(\".tabs li\", this);\n\t\t\tvar $tabLinks = $(\".tabs a\", this);\n\n\t\t\t// set active state and show corresponding content\n\t\t\t$tabLinks.click(function () {\n\n\t\t\t\tvar idx = $tabLinks.index(this);\n\n\t\t\t\t// return if this tab is already active\n\t\t\t\tif ($tabs.eq(idx).hasClass(\"active\")) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// remove active states of all tabs, then set clicked active.\n\t\t\t\t$tabs\n\t\t\t\t\t.removeClass(\"active\")\n\t\t\t\t\t.eq(idx)\n\t\t\t\t\t.addClass(\"active\");\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llTeaserTab = function (options) {\n\t\tvar opts = $.extend({\n\t\t\t\"klick_function\": LL.actions.klick_teaser_reiter\n\t\t}, options);\n\n\t\treturn this.each(function () {\n\t\t\tvar $tabs = $(\".tabs a\", this);\n\t\t\tvar $teasers = $(\".mod_tab\", this);\n\n\t\t\t$tabs.click(function () {\n\t\t\t\tvar idx = $tabs.index(this);\n\n\t\t\t\t$tabs.removeClass(\"active\");\n\t\t\t\t$(this).addClass(\"active\");\n\t\t\t\tif (typeof opts.klick_function == \"function\") {\n\t\t\t\t\topts.klick_function({button_name: $(this).text()});\n\t\t\t\t}\n\n\t\t\t\t$teasers.removeClass(\"active\");\n\t\t\t\t$teasers.eq(idx).addClass(\"active\");\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\t$.fn.llTopTopics = function (options) {\n\t\treturn this.each(function () {\n\t\t\tvar index = 0;\n\t\t\tvar interval;\n\t\t\tvar that = this;\n\t\t\tvar $prev = $(\".prev\", this);\n\t\t\tvar $next = $(\".next\", this);\n\t\t\tvar $images = $(\".img\", this);\n\t\t\tvar $imagesContainer = $(\".slider_img .slide_cont\", this);\n\t\t\tvar $txts = $(\".unit\", this);\n\t\t\tvar imageCount = $images.length;\n\t\t\tvar isBusy = false;\n\n\t\t\t// switch to zoom if option is set\n\t\t\tif (options.zoom) {\n\t\t\t\t$(this).llTopTopicsZoom(options);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar opts = $.extend({\n\t\t\t\t\"slideDuration\": 700,\n\t\t\t\t\"interval\": 5000\n\t\t\t}, options);\n\n\t\t\tif (imageCount <= 1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar refreshWidth = function () {\n\t\t\t\tvar $containerWidth = $(that).width();\n\t\t\t\t$images.css(\"width\", $containerWidth);\n\t\t\t\t$imagesContainer.width($containerWidth * imageCount);\n\t\t\t};\n\n\t\t\tvar prev = function () {\n\t\t\t\tif (isBusy) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tisBusy = true;\n\n\t\t\t\t// img animation\n\t\t\t\tvar $lastImg = $(\".slider_img .img\", that).last().detach();\n\t\t\t\t$imagesContainer\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"left\": \"-\" + $(that).width() + \"px\"\n\t\t\t\t\t})\n\t\t\t\t\t.prepend($lastImg)\n\t\t\t\t\t.animate({\n\t\t\t\t\t\t\"left\": \"0px\"\n\t\t\t\t\t}, opts.slideDuration, function () {\n\t\t\t\t\t\tisBusy = false;\n\t\t\t\t\t});\n\n\n\t\t\t\t// text animation\n\t\t\t\t$txts\n\t\t\t\t\t.eq(index)\n\t\t\t\t\t.removeClass(\"active\")\n\t\t\t\t\t.end()\n\t\t\t\t\t.eq(getIndex(index - 1, opts.length))\n\t\t\t\t\t.addClass(\"active\");\n\n\t\t\t\tindex = getIndex(index - 1, opts.length);\n\n\t\t\t\treturn false;\n\t\t\t};\n\n\t\t\tvar next = function () {\n\t\t\t\tif (isBusy) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tisBusy = true;\n\n\t\t\t\t// img animation\n\t\t\t\t$imagesContainer\n\t\t\t\t\t.animate({\n\t\t\t\t\t\t\t\"left\": \"-=\" + $(that).width() + \"px\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\topts.slideDuration,\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tvar $firstImg = $(\".slider_img .img\", that).first().detach();\n\t\t\t\t\t\t\t$imagesContainer\n\t\t\t\t\t\t\t\t.css({\n\t\t\t\t\t\t\t\t\t\"left\": 0\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.append($firstImg);\n\t\t\t\t\t\t\tisBusy = false;\n\t\t\t\t\t\t});\n\n\t\t\t\t// text animation\n\t\t\t\t$txts\n\t\t\t\t\t.eq(index)\n\t\t\t\t\t.removeClass(\"active\")\n\t\t\t\t\t.end()\n\t\t\t\t\t.eq(getIndex(index + 1, opts.length))\n\t\t\t\t\t.addClass(\"active\");\n\n\t\t\t\tindex = getIndex(index + 1, opts.length);\n\n\t\t\t\treturn false;\n\t\t\t};\n\n\t\t\tvar $a = $(\"a\", $txts);\n\t\t\t$a.click(function () {\n\t\t\t\ttry {\n\t\t\t\t\t_gaq.push(['_trackEvent', 'mod_top_topics_zoom', 'Teaser-Überschrift', $(this).attr('title')]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlog(\"ERROR: Google tracking failed in llTopTopics()\", e);\n\t\t\t\t}\n\t\t\t});\n\n\n\t\t\t// bind events and show controls\n\t\t\t$prev\n\t\t\t\t.click(function () {\n\t\t\t\t\tLL.actions.klick_top_themen_pfeil_zurueck();\n\t\t\t\t\twindow.clearInterval(interval);\n\t\t\t\t\tprev();\n\t\t\t\t})\n\t\t\t\t.show();\n\t\t\t$next\n\t\t\t\t.click(function () {\n\t\t\t\t\tLL.actions.klick_top_themen_pfeil_vor();\n\t\t\t\t\twindow.clearInterval(interval);\n\t\t\t\t\tnext();\n\t\t\t\t})\n\t\t\t\t.show();\n\n\t\t\t// start automatic rotation\n\t\t\tfunction startInterval() {\n\t\t\t\tinterval = window.setInterval(function () {\n\t\t\t\t\tnext();\n\t\t\t\t}, options.interval);\n\t\t\t}\n\n\t\t\t// Show hidden images. All images except the first one\n\t\t\t// are display:none to prevent rendering reflows before js is ready.\n\t\t\tfunction showImages() {\n\t\t\t\t$(\".img.hidden\", that).removeClass(\"hidden\");\n\t\t\t}\n\n\t\t\trefreshWidth();\n\t\t\tstartInterval();\n\t\t\tshowImages();\n\n\t\t\t$(window).resize(refreshWidth);\n\t\t});\n\t};\n\n\t// deprecated\n\t$.fn.llTopTopicsZoom = $.fn.llTopTopics;\n\n\n\t$.fn.llValidate = function () {\n\t\treturn this.each(function () {\n\t\t\tvar $form = $(this);\n\t\t\tvar formId = $form.attr(\"id\");\n\t\t\tvar action = $form.attr(\"action\");\n\n\t\t\t$form\n\t\t\t\t.submit(function () {\n\t\t\t\t\tvar data = $form.serialize();\n\t\t\t\t\t$form.load(action + \"?\" + data + \" #\" + formId);\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llVideo = function () {\n\t\treturn this.each(function () {\n\t\t\tvar that = this;\n\t\t\tvar $linkVideo = $(\".img_container a.img\", this);\n\n\t\t\t$linkVideo.live(\"click\", function (e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t$(\"#layer\").llLayer({\n\t\t\t\t\t\"closeCallback\": function () {\n\t\t\t\t\t\t$(\"#layer\").html(\"\");\n\t\t\t\t\t},\n\t\t\t\t\t\"duration\": 0,\n\t\t\t\t\t\"url\": $(this).attr(\"href\")\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\n\t$.fn.llVideoBox = function () {\n\t\treturn this.each(function () {\n\t\t\tvar that = this;\n\t\t\tvar $linkVideo = $(\".bd a.img\", this);\n\t\t\tvar $linksBottom = $(\".ft a\", this);\n\n\t\t\t// add icons\n\t\t\tvar $prev = $(\"\");\n\t\t\tvar $next = $(\"\");\n\n\t\t\tvar deleteInlineScripts = function (dom) {\n\t\t\t\treturn dom.replace(/]*>[^<]*<\\/script>/, '');\n\t\t\t};\n\n\t\t\tvar shift = function ($list) {\n\n\t\t\t\ttry {\n\t\t\t\t\tvar $clone = $list.clone();\n\n\t\t\t\t\t$list.each(function (idx, item) {\n\t\t\t\t\t\tvar $replacement = $clone.eq(getIndex(idx - 1, $clone.size()));\n\n\t\t\t\t\t\t$(item).html(deleteInlineScripts($replacement.html()));\n\n\t\t\t\t\t});\n\t\t\t\t} catch (exp) {\n\t\t\t\t\t/* ignore console.dir(exp); */\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t$prev.click(function (e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (typeof restartInactivityTimer === \"function\") {\n\t\t\t\t\trestartInactivityTimer();\n\t\t\t\t}\n\n\t\t\t\tLL.actions.klick_videobox_pfeil_zurueck();\n\n\t\t\t\tvar list = $(\".inner, li\", that);\n\t\t\t\tshift(list);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t$next.click(function (e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (typeof restartInactivityTimer === \"function\") {\n\t\t\t\t\trestartInactivityTimer();\n\t\t\t\t}\n\n\t\t\t\tLL.actions.klick_videobox_pfeil_vor();\n\n\t\t\t\tvar list = $(\".inner, li\", that).reverse();\n\t\t\t\tshift(list);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t$(\".bd\", $(this))\n\t\t\t\t.append($prev)\n\t\t\t\t.append($next);\n\n\t\t\t$linkVideo.live(\"click\", function (e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t$(\"#layer\").llLayer({\n\t\t\t\t\t\"closeCallback\": function () {\n\t\t\t\t\t\t$(\"#layer\").html(\"\");\n\t\t\t\t\t},\n\t\t\t\t\t\"duration\": 0,\n\t\t\t\t\t\"url\": $(this).attr(\"href\")\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t$linksBottom.live(\"click\", function (e) {\n\t\t\t\ttry {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tconsole.dir($(this));\n\t\t\t\t\tLL.actions.klick_videobox_thumbnail({\n\t\t\t\t\t\t\"title\": $(this).attr(\"title\")\n\t\t\t\t\t});\n\n\t\t\t\t\tvar $top = $(\".inner\", that);\n\t\t\t\t\tvar $bottom = $(this).parent().parent();\n\t\t\t\t\tvar $topClone = $top.clone();\n\t\t\t\t\tvar $bottomClone = $bottom.clone();\n\n\t\t\t\t\t$top.html(deleteInlineScripts($bottomClone.html()));\n\t\t\t\t\t$bottom.html(deleteInlineScripts($topClone.html()));\n\n\t\t\t\t} catch (exp) {\n\t\t\t\t\tconsole.dir(exp);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\n\t/**\n\t * Usage:\n\t * \n\t * jQuery.userImagize({\n\t *\t\t\"defaultImageUrls\": {\n\t *\t\t\t\"male\": \"/[publication]/resources/ts21970927/ver1-0/img/avatars/avatar_04.png\",\n\t *\t\t\t\"female\": \"/[publication]/resources/ts21970927/ver1-0/img/avatars/avatar_02.png\",\n\t *\t\t\t\"expert\": \"/[publication]/resources/ts21970927/ver1-0/img/avatars/avatar_01.png\"\n\t *\t\t},\n\t *\t\t\"imageBasePath\": \"/community-webservice/service/image?actionname=show&image=\",\n\t *\t\t\"imageSelector\": \"IMG.user_123456\"\n\t * });\n\t * \n\t */\n\t$.userImagize = function (opts) {\n\n\t\tvar options = $.extend(\n\t\t\ttrue,\n\t\t\t{\n\t\t\t\t\"cookieName\": \"communitydata2\",\n\t\t\t\t\"defaultImageUrls\": {\n\t\t\t\t\t\"male\": \"\",\n\t\t\t\t\t\"female\": \"\",\n\t\t\t\t\t\"expert\": \"\"\n\t\t\t\t},\n\t\t\t\t\"imageBasePath\": \"\", // /community-webservice/service/image?actionname=show&image=\n\t\t\t\t\"imageSelector\": \"\" // .uicon\n\t\t\t},\n\t\t\topts\n\t\t);\n\n\t\tvalidateOptions();\n\n\t\t// read cookie\n\t\tvar cookie = readCookie(options.cookieName);\n\n\t\tif (cookie !== null) {\n\n\t\t\t// examine cookie\n\t\t\t// - slot 0: complete match;\n\t\t\t// - slot 1: userId;\n\t\t\t// - slot 2: gender or expert or undefined;\n\t\t\t// - slot 3: img-query-parameter\n\n\t\t\tcookie = cookie.replace(/\"/g, '');\n\t\t\tvar parts = cookie.match(/(^[\\d]*)\\|(Herr|Frau|expert)?\\|([^\\|]*)$/);\n\t\t\tif (parts === null || parts[1] === \"\") { // regex failed ... cookie is corrupt or no userid is given\n\t\t\t\t// we have to step out ...\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar $images = $(options.imageSelector + parts[1]);\n\n\t\t\tif ($images.length === 0) {\n\t\t\t\t// no images found at all, nothing more to do\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// find current uri (its the same for all images, so we check on the first image found.)\n\t\t\tvar currentSrcUri = $images[0].src;\n\t\t\tvar newSrcUri = \"\";\n\t\t\tif (parts[3] !== \"\") {\n\t\t\t\tif (currentSrcUri.indexOf(parts[3]) !== -1) {\n\t\t\t\t\t// the image uris are correct, nothing more to do!\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tnewSrcUri = options.imageBasePath + parts[3];\n\t\t\t\t}\n\t\t\t} else { // user has no specific image\n\t\t\t\tif (parts[2] !== undefined || parts[2] !== \"\") {\n\t\t\t\t\tswitch (parts[2]) {\n\t\t\t\t\t\tcase \"expert\":\n\t\t\t\t\t\t\tnewSrcUri = options.defaultImageUrls.expert;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"Frau\":\n\t\t\t\t\t\t\tnewSrcUri = options.defaultImageUrls.female;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"Herr\":\n\t\t\t\t\t\t\tnewSrcUri = options.defaultImageUrls.male;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (currentSrcUri === newSrcUri) {\n\t\t\t\t// the image uris are identical, nothing more to do!\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (currentSrcUri === options.defaultImageUrls.expert &&\n\t\t\t\t(newSrcUri === options.defaultImageUrls.female || newSrcUri === options.defaultImageUrls.male)) {\n\t\t\t\t// leave default expert piuc be\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// suche alle relevanten imgs.\n\t\t\t$(options.imageSelector + parts[1]).each(\n\t\t\t\tfunction (idx, image) {\n\t\t\t\t\t$(image).attr(\"src\", newSrcUri);\n\t\t\t\t}\n\t\t\t);\n\n\t\t}\n\n\t\tfunction validateOptions() {\n\t\t\tif (options.imageSelector === \"\") {\n\t\t\t\tthrow \"userImagize coder exception: options.imageSelector mustn't be empty!\";\n\t\t\t}\n\t\t\tif (options.imageBasePath === \"\") {\n\t\t\t\tthrow \"userImagize coder exception: options.imageBasePath mustn't be empty!\";\n\t\t\t}\n\t\t\tif (options.defaultImageUrls.male === \"\") {\n\t\t\t\tthrow \"userImagize coder exception: options.defaultImageUrls.male mustn't be empty!\";\n\t\t\t}\n\t\t\tif (options.defaultImageUrls.female === \"\") {\n\t\t\t\tthrow \"userImagize coder exception: options.defaultImageUrls.female mustn't be empty!\";\n\t\t\t}\n\t\t\tif (options.defaultImageUrls.expert === \"\") {\n\t\t\t\tthrow \"userImagize coder exception: options.defaultImageUrls.expert mustn't be empty!\";\n\t\t\t}\n\t\t}\n\t};\n\n\n\tvar HoroscopeWidget = function (element, date, zodiacSignsForetellings, options) {\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar that = this;\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar currentDate = date;\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar currentIndex = -1;\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar $previousHandle = $(options.previousSelector, element);\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar $nextHandle = $(options.nextSelector, element);\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar $itemContainer = $(options.itemContainerSelector, element);\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar $headlineElement = $(options.headlineElementSelector, element);\n\n\t\tzodiacSignsForetellings.sort(\n\t\t\tfunction (a, b) {\n\t\t\t\tif (a.dateFrom < b.dateFrom) {\n\t\t\t\t\treturn -1;\n\t\t\t\t} else if (a.dateFrom > b.dateFrom) {\n\t\t\t\t\treturn 1;\n\t\t\t\t} else { //they are equal ... shouldn't ever happen!\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar _zodiacSignsForetellings = zodiacSignsForetellings;\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar itemWidth = $itemContainer.parent().width();\n\n\t\t/**\n\t\t *\n\t\t * @constructor\n\t\t */\n\t\tvar init = function () {\n\n\t\t\tdrawHtmlItems();\n\n\t\t\tsetEventHandler();\n\n\t\t\t// go, to where the date says ...\n\t\t\tcurrentIndex = getZodiacSignByDate(date)[0];\n\t\t\tthis.goTo(currentIndex);\n\n\t\t};\n\n\t\t/**\n\t\t * @public\n\t\t */\n\t\tthis.next = function () {\n\t\t\tthis.goBy(+1);\n\t\t\treturn element;\n\t\t}\n\t\t/**\n\t\t * @public\n\t\t */\n\t\tthis.previous = function () {\n\t\t\tthis.goBy(-1);\n\t\t\treturn element;\n\t\t}\n\t\t/**\n\t\t * @public\n\t\t */\n\t\tthis.goBy = function (indexDelta) {\n\t\t\tmoveTo(getNewDeltaIndex(indexDelta));\n\t\t\treturn element;\n\t\t};\n\t\t/**\n\t\t * @public\n\t\t */\n\t\tthis.goTo = function (indexDelta) {\n\t\t\tmoveTo(getNewIndex(indexDelta));\n\t\t\treturn element;\n\t\t};\n\t\t/**\n\t\t * @public\n\t\t */\n\t\tthis.setZodiacSignByDate = function (date) {\n\t\t\tif (isValidDate(date)) {\n\t\t\t\tthis.goTo(getZodiacSignByDate(date)[0]);\n\t\t\t}\n\n\t\t}\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar drawHtmlItems = function () {\n\t\t\t// create the domElements accordingly to data\n\t\t\tvar itemsHtml = \"\";\n\t\t\tfor (var i = 0; i < _zodiacSignsForetellings.length; i++) {\n\t\t\t\tvar zodiacSignsFortelling = _zodiacSignsForetellings[i];\n\t\t\t\titemsHtml += options.templateItem\n\t\t\t\t\t.replace(/\\$\\{foreTelling.title\\}/g, zodiacSignsFortelling.title)\n\t\t\t\t\t.replace(/\\$\\{foreTelling.content\\}/g, zodiacSignsFortelling.content);\n\t\t\t}\n\t\t\t$itemContainer.empty().html(itemsHtml);\n\t\t}\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar setEventHandler = function () {\n\t\t\t// apply the EventHandler to next and previous handles\n\t\t\t$previousHandle.click(\n\t\t\t\tfunction () {\n\t\t\t\t\telement.data('horoscopeWidget').previous();\n\t\t\t\t}\n\t\t\t);\n\t\t\t$nextHandle.click(\n\t\t\t\tfunction () {\n\t\t\t\t\telement.data('horoscopeWidget').next();\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar getNewDeltaIndex = function (indexDelta) {\n\n\t\t\t// setting the index in data to go to... preventint not existing indexes\n\t\t\tvar newIndex = (currentIndex + indexDelta) % _zodiacSignsForetellings.length;\n\n\t\t\t// checking the newIndex for congruity\n\t\t\tif (newIndex > _zodiacSignsForetellings.length - 1) {\n\t\t\t\tconsole.debug(\"small and porous brains guesses this impossible!\");\n\t\t\t}\n\t\t\tif (newIndex < 0) {\n\t\t\t\tnewIndex = _zodiacSignsForetellings.length + newIndex;\n\t\t\t}\n\n\t\t\treturn newIndex;\n\t\t};\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar getNewIndex = function (index) {\n\n\t\t\tindex = index % _zodiacSignsForetellings.length;\n\t\t\t// prevent not existing index ...\n\t\t\tif (index < 0) {\n\t\t\t\treturn _zodiacSignsForetellings.length + index;\n\t\t\t}\n\n\t\t\treturn index;\n\t\t};\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar getZodiacSignByDate = function (date) {\n\n\t\t\tvar index = 0;\n\t\t\tvar element = jQuery.grep(\n\t\t\t\t_zodiacSignsForetellings,\n\t\t\t\tfunction (zodiacSignsForetelling, idx) {\n\t\t\t\t\tif (date >= zodiacSignsForetelling.dateFrom && date <= zodiacSignsForetelling.dateTo) {\n\t\t\t\t\t\tindex = idx\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\treturn [index, element];\n\t\t};\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar isValidDate = function (date) {\n\t\t\treturn (new RegExp(options.datePattern)).test(\"\" + date);\n\t\t};\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tvar moveTo = function (index) {\n\t\t\tif (index < 0 || index > _zodiacSignsForetellings.length - 1) {\n\t\t\t\tlog(\"trial to access a none existing index in data!\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newZodiacSign = _zodiacSignsForetellings[index];\n\t\t\tif (!!!newZodiacSign) {\n\t\t\t\tlog(\"index in data lead to an undefiend data partial!\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcurrentIndex = index;\n\t\t\t$headlineElement.fadeOut(\n\t\t\t\toptions.duration / 4,\n\t\t\t\tfunction () {\n\t\t\t\t\t$headlineElement.html(newZodiacSign.name);\n\t\t\t\t\t$itemContainer.animate(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"left\": -(index * itemWidth) + \"px\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\toptions.duration / 2,\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t$headlineElement.fadeIn(\n\t\t\t\t\t\t\t\toptions.duration / 4\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\tinit.apply(this, arguments);\n\n\t};\n\n\n\t$.fn.horoscopeWidget = function (date, zodiacSignsForetellings, opts) {\n\n\t\tvar options = $.extend(\n\t\t\t{\n\t\t\t\t\"duration\": 1000,\n\t\t\t\t\"previousSelector\": \".previous\",\n\t\t\t\t\"nextSelector\": \".next\",\n\t\t\t\t\"itemContainerSelector\": \".items ul\",\n\t\t\t\t\"headlineElementSelector\": \".control .zodiacSign\",\n\t\t\t\t\"templateItem\": '
  • ${foreTelling.title}

    ${foreTelling.content}

  • ',\n\t\t\t\t\"updateByUsersBirthday\": false,\n\t\t\t\t\"url\": \"\",\n\t\t\t\t\"datePattern\": \"\\\\d\\\\d\\\\d\\\\d-\\\\d\\\\d-\\\\d\\\\d\"\n\t\t\t},\n\t\t\topts\n\t\t);\n\n\t\treturn this.each(\n\t\t\tfunction () {\n\t\t\t\tvar element = $(this);\n\n\t\t\t\tif (element.data('horoscopeWidget')) { // Return early if this element already has a plugin instance\n\t\t\t\t\treturn element.data('horoscopeWidget');\n\t\t\t\t}\n\t\t\t\t// pass options to plugin constructor\n\t\t\t\tvar horoscopeWidget = new HoroscopeWidget(element, date, zodiacSignsForetellings, options);\n\t\t\t\t// Store plugin object in this element's data\n\t\t\t\telement.data('horoscopeWidget', horoscopeWidget);\n\n\n\t\t\t\tif (options.updateByUsersBirthday && options.url !== \"\") {\n\t\t\t\t\t// ask for a user and his birthday, if a valid result is retrieved, reset the HoroscopeWidget to the zodiac sign of the user ...\n\t\t\t\t\t$.ajax({\n\t\t\t\t\t\t\"cache\": false,\n\t\t\t\t\t\t\"context\": element,\n\t\t\t\t\t\t\"data\": \"\",\n\t\t\t\t\t\t\"type\": \"POST\",\n\t\t\t\t\t\t\"url\": options.url,\n\t\t\t\t\t\t\"dataType\": \"json\"\n\t\t\t\t\t}).success(\n\t\t\t\t\t\tfunction (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\tif (!!data) {\n\t\t\t\t\t\t\t\tif (data.error) {\n\t\t\t\t\t\t\t\t\tlog(\"updating HoroscopeWidget failed. Message is: \", data.error);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (data.birthday) {\n\t\t\t\t\t\t\t\t\telement.data('horoscopeWidget').setZodiacSignByDate(data.birthday.replace(/^\\d\\d\\d\\d\\-/, (new Date()).getFullYear() + \"-\"));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t).error(\n\t\t\t\t\t\tfunction (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\tlog(\"updating HoroscopeWidget failed. Message is: \", errorThrown, textStatus, jqXHR);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t};\n\n\n\t$(function () {\n\t\tvar clicker, cE, sP, sPn;\n\n\t\t$('.mod_special a, .clip_page .media a').click(function () {\n\t\t\tclicker = $(this);\n\t\t\tif (clicker.hasClass('img')) {\n\t\t\t\tcE = 'Teaser-Bild';\n\t\t\t} else if (clicker.hasClass('h1')) {\n\t\t\t\tcE = 'Teaser-Überschrift';\n\t\t\t} else {\n\t\t\t\tcE = 'Teaser-mehr-Link';\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackEvent', 'mod_special', cE, clicker.attr('title')]);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in '.mod_special a, .clip_page .media a' click\", e);\n\t\t\t}\n\t\t});\n\t\t$('.paging .btn').live('click', function () {\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackEvent', 'Paging', 'Seite', $(this).val()]);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in '.paging .btn' click\", e);\n\t\t\t}\n\t\t});\n\t\t$('.paging .previous_active, .paging .next_active').click(function () {\n\t\t\tclicker = $(this).parent().find('.active');\n\t\t\tvar nClicker = clicker.text();\n\t\t\tif (clicker.hasClass('previous')) {\n\t\t\t\tclicker = clicker--;\n\t\t\t} else {\n\t\t\t\tclicker = clicker++;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackEvent', 'Paging', 'Seite', nClicker]);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in '.paging .previous_active, .paging .next_active' click\", e);\n\t\t\t}\n\t\t});\n\t\t$('.content_main .mod_caroussel .slider .slot > a').live('mousedown', function () {\n\t\t\tclicker = $(this);\n\t\t\tif (clicker.hasClass('more')) {\n\t\t\t\tcE = 'mehr Specials';\n\t\t\t} else {\n\t\t\t\tcE = 'Teaser-Bild';\n\t\t\t}\n\t\t\tvar sP = clicker.parent();\n\t\t\tif (sP.hasClass('slotBox1')) {\n\t\t\t\tsPn = 'Seite 1';\n\t\t\t} else if (sP.hasClass('slotBox2')) {\n\t\t\t\tsPn = 'Seite 1';\n\t\t\t} else if (sP.hasClass('slotBox3')) {\n\t\t\t\tsPn = 'Seite 2';\n\t\t\t} else if (sP.hasClass('slotBox4')) {\n\t\t\t\tsPn = 'Seite 2';\n\t\t\t} else if (sP.hasClass('slotBox5')) {\n\t\t\t\tsPn = 'Seite 3';\n\t\t\t} else if (sP.hasClass('slotBox6')) {\n\t\t\t\tsPn = 'Seite 3';\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackEvent', 'mod_caroussel 2-spaltig' + sPn, cE, clicker.attr('title')]);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in '.content_main .mod_caroussel .slider .slot > a' mousedown\", e);\n\t\t\t}\n\t\t});\n\t\t$('.content_wide .mod_caroussel .slider .slot > a').live('mousedown', function () {\n\t\t\tclicker = $(this);\n\t\t\tif (clicker.hasClass('more')) {\n\t\t\t\tcE = 'mehr Specials';\n\t\t\t} else {\n\t\t\t\tcE = 'Teaser-Bild';\n\t\t\t}\n\t\t\tvar sP = clicker.parent();\n\t\t\tif (sP.hasClass('slotBox1')) {\n\t\t\t\tsPn = 'Seite 1';\n\t\t\t} else if (sP.hasClass('slotBox2')) {\n\t\t\t\tsPn = 'Seite 1';\n\t\t\t} else if (sP.hasClass('slotBox3')) {\n\t\t\t\tsPn = 'Seite 1';\n\t\t\t} else if (sP.hasClass('slotBox4')) {\n\t\t\t\tsPn = 'Seite 2';\n\t\t\t} else if (sP.hasClass('slotBox5')) {\n\t\t\t\tsPn = 'Seite 2';\n\t\t\t} else if (sP.hasClass('slotBox6')) {\n\t\t\t\tsPn = 'Seite 2';\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackEvent', 'mod_caroussel 3-spaltig' + sPn, cE, clicker.attr('title')]);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in '.content_wide .mod_caroussel .slider .slot > a' mousedown\", e);\n\t\t\t}\n\t\t});\n\t\t$('.content_main .mod_caroussel .slider .slot .h1 a').live('mousedown', function () {\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackEvent', 'mod_caroussel 2-spaltig', 'Teaser-Überschrift', $(this).attr('title')]);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in '.content_main .mod_caroussel .slider .slot .h1 a' mousedown\", e);\n\t\t\t}\n\t\t});\n\t\t$('.content_wide .mod_caroussel .slider .slot .h1 a').live('mousedown', function () {\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackEvent', 'mod_caroussel 3-spaltig', 'Teaser-Überschrift', $(this).attr('title')]);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in '.content_wide .mod_caroussel .slider .slot .h1 a' mousedown\", e);\n\t\t\t}\n\t\t});\n\t\t$('.content_main .mod_caroussel .slider .ilist a').live('mousedown', function () {\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackEvent', 'mod_caroussel 2-spaltig', 'Artikel-Link', $(this).attr('title')]);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in '.content_main .mod_caroussel .slider .ilist a' mousedown\", e);\n\t\t\t}\n\t\t});\n\t\t$('.content_wide .mod_caroussel .slider .ilist a').live('mousedown', function () {\n\t\t\ttry {\n\t\t\t\t_gaq.push(['_trackEvent', 'mod_caroussel 3-spaltig', 'Artikel-Link', $(this).attr('title')]);\n\t\t\t} catch (e) {\n\t\t\t\tlog(\"ERROR: Google tracking failed in '.content_wide .mod_caroussel .slider .ilist a' mousedown\", e);\n\t\t\t}\n\t\t});\n\t});\n})(jQuery);\n\n// Social-Media-Leiste -------------------------------------------------------------------------\n\n(function ($) {\n\tfunction Socialbar(rootElement) {\n\t\tthis.$rootElement = $(rootElement);\n\t\tthis.$window = $(window);\n\t\tthis.$document = $(document);\n\t\tthis.mobileMaxWidth = $(rootElement).data(\"mobile-max-width\") || 767;\n\t\tthis.mobileScrollThreshold = $(rootElement).data(\"mobile-scroll-threshold\") || 500;\n\t\tthis.bindEvents();\n\t}\n\n\tfunction emailButtonClickHandler(e) {\n\t\tvar shareUrl = \"mailto:?subject=\" + encodeURIComponent($(this).data(\"subject\")) + \"&body=\" + encodeURIComponent($(this).data(\"body\"));\n\t\te.preventDefault();\n\t\tvar mail = document.createElement(\"a\");\n\t\tmail.href = shareUrl;\n\t\tmail.click();\n\t}\n\n\tfunction facebookButtonClickHandler(e) {\n\t\tvar shareUrl = \"https://www.facebook.com/sharer/sharer.php?u=\" + encodeURIComponent($(this).data(\"url\")) + \"&t=\" + encodeURIComponent($(this).data(\"text\"));\n\t\te.preventDefault();\n\t\twindow.open(shareUrl, \"\", \"toolbar=0, status=0, width=900, height=500\");\n\t}\n\n\tfunction twitterButtonClickHandler(e) {\n\t\tvar shareUrl = \"https://twitter.com/intent/tweet?text=\" + encodeURIComponent($(this).data(\"text\")) + \"&url=\" + encodeURIComponent($(this).data(\"url\"));\n\t\te.preventDefault();\n\t\twindow.open(shareUrl, \"\", \"toolbar=0, status=0, width=650, height=360\");\n\t}\n\n\t/*function whatsappButtonClickHandler(e) {\n\t\te.preventDefault();\n\t\tdocument.location.href = $(this).data(\"share-text\");\n\t}*/\n\n\tfunction pinterestButtonClickHandler(e) {\n\t\tvar url = encodeURIComponent($(this).data(\"url\")),\n\t\t\tmedia = encodeURIComponent($(this).data(\"media\")),\n\t\t\tdescription = encodeURIComponent($(this).data(\"description\")),\n\t\t\tshareUrl = \"http://pinterest.com/pin/create/button/?url=\" + url + \"&media=\" + media + \"&description=\" + description;\n\n\t\te.preventDefault();\n\t\twindow.open(shareUrl, \"\", \"toolbar=0, status=0, width=900, height=500\");\n\t}\n\n\tfunction flipboardButtonClickHandler(e) {\n\t\tvar url = encodeURIComponent($(this).data(\"url\")),\n\t\t\ttitle = encodeURIComponent($(this).data(\"title\")),\n\t\t\tshareUrl = \"https://share.flipboard.com/bookmarklet/popout?v=2&title=\" + title + \"&url=\" + url;\n\n\t\te.preventDefault();\n\t\twindow.open(shareUrl, \"\", \"toolbar=0, status=0, width=900, height=500\");\n\t}\n\n\t// Bind Whatsapp button\n\tfunction whatsappButtonClickHandler(e) {\n\t\tvar shareText = encodeURIComponent($(this).data(\"text\"));\n\t\te.preventDefault();\n\n\t\tif (isMobileLayout()) {\n\t\t\tdocument.location.href = \"whatsapp://send?text=\" + shareText;\n\t\t} else {\n\t\t\tvar shareUrl = \"https://web.whatsapp.com/send?text=\" + shareText;\n\t\t\twindow.open(shareUrl, \"\", \"toolbar=0, status=0, width=900, height=500\");\n\t\t}\n\t}\n\n\tSocialbar.prototype.bindEvents = function () {\n\t\tvar that = this;\n\n\t\t$(\".socialbar__button--email\", this.$rootElement).click(emailButtonClickHandler);\n\t\t$(\".socialbar__button--facebook\", this.$rootElement).click(facebookButtonClickHandler);\n\t\t$(\".socialbar__button--twitter\", this.$rootElement).click(twitterButtonClickHandler);\n\t\t$(\".socialbar__button--pinterest\", this.$rootElement).click(pinterestButtonClickHandler);\n\t\t$(\".socialbar__button--flipboard\", this.$rootElement).click(flipboardButtonClickHandler);\n\t\t$(\".socialbar__button--whatsapp\", this.$rootElement).click(whatsappButtonClickHandler);\n\n\t\t// Control visibility of the share bar. The bar is always visible on desktop\n\t\t// devices and hidden on mobile devices below the scrolling threshold\n\t\tthat.$window.on(\"resize scroll\", function (e) {\n\t\t\tvar isMobile = that.mobileMaxWidth >= that.$window.width(),\n\t\t\t\tisAboveThreshold = that.$document.scrollTop() < that.mobileScrollThreshold;\n\n\t\t\tif (isMobile && !isAboveThreshold) {\n\t\t\t\tthat.$rootElement.fadeOut(300, function() {\n\t\t\t\t\t$(\"body\").removeClass(\"page-has-socialbar\");\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthat.$rootElement.fadeIn(300, function () {\n\t\t\t\t\t$(\"body\").addClass(\"page-has-socialbar\");\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n\n\t$.fn.socialbar = function () {\n\t\treturn this.each(function () {\n\t\t\tnew Socialbar(this);\n\t\t});\n\t};\n\n\t$(function () {\n\t\t// Set mobile social bar threshold depending on article length --------------\n\t\tvar $footer = $(\"#footer\"),\n\t\t\t$socialBar = $(\".socialbar\"),\n\t\t\tthreshold;\n\n\t\tif ($footer.length > 0) {\n\t\t\tthreshold = $footer.position().top - $(window).height();\n\t\t\t$socialBar.attr(\"data-mobile-scroll-threshold\", threshold);\n\t\t}\n\n\t\t// Social bar\n\t\t$socialBar.socialbar();\n\n\t\t// Login box buttons\n\t\t/*\n\t\t$(\".button--facebook\").click(facebookButtonClickHandler);\n\t\t$(\".button--twitter\").click(twitterButtonClickHandler);\n\t\t*/\n\t});\n\n})(jQuery);\n\n// Init --------------------------------------------------------------------------------------------\n\ndetectClient();\n\n$.ajaxSetup({\n\t// Fix für Bug in jQuery vor 1.7.2:\n\t\"contentType\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t// Wichtig f. iOS 6:\n\t\"cache\": \"false\",\n\t\"headers\": {\"cache-control\": \"no-cache\"}\n});\n\nvar cookie = readCookie(\"communitycookie\");\nLL.defaults.isLoggedIn = (cookie !== null);\nconsole.log(\"isLoggedIn(): \" + isLoggedIn());\n\n// TinyMCE -----------------------------------------------------------------------------------------\n\n// https://www.tiny.cloud/docs/configure/editor-appearance/\n// https://www.tiny.cloud/docs/configure/url-handling/\n// https://www.tiny.cloud/docs/advanced/editor-control-identifiers/#toolbarcontrols\nvar tinyMceConfig = {\n\tscript_url: tinyMceUrl,\n\t//autosave_ask_before_unload: false,\n\t//autosave_interval: \"10s\",\n\t//autosave_restore_when_empty: true,\n\t//autosave_retention: \"60m\",\n\tblock_formats: 'Absatz=p; Überschrift 1=h1; Überschrift 2=h2; Überschrift 3=h3; Überschrift 4=h4; Überschrift 5=h5; Überschrift 6=h6; Vorformatiert=pre; Zitat=blockquote',\n\tbranding: false,\n\tcontent_css: \"/resources/ver1-0/css/tinymce.css\",\n\t//elementpath: false,\n\tlanguage: \"de\",\n\tmenubar: false,\n\tpaste_data_images: true,\n\tplugins: \"autolink,charmap,fullscreen,hr,image,link,lists,nonbreaking,paste,table,textcolor\" + (isMobileLayout() ? \",autoresize\" : \"\"),\t// autosave\n\trelative_urls: false,\n\tstatusbar: false,\n\t/*style_formats: [{\n\t\ttitle: \"Zitat\",\n\t\tblock: \"blockquote\",\n\t\tclasses: \"cite\"\n\t}],\n\tstyle_formats_autohide: true,\n\tstyle_formats_merge: true,*/\n\t//theme: 'modern',\n\ttoolbar: 'fullscreen | undo redo | bold italic underline strikethrough superscript subscript forecolor removeformat | formatselect | bullist numlist | outdent indent | alignleft aligncenter alignright | link unlink | charmap hr image table | pastetext'\n};\n\nvar tinyMceConfigSignature = $.extend(true, {}, tinyMceConfig);\ntinyMceConfigSignature.toolbar = tinyMceConfigSignature.toolbar.replace(\" italic \", \" \");\n\nvar tinyMceConfigMobile = $.extend(true, {}, tinyMceConfig);\ntinyMceConfigMobile.toolbar = tinyMceConfigMobile.toolbar.replace(\" link unlink | \", \" \").replace(\" charmap \", \" \").replace(\" image \", \" \").replace(\" table \", \" \");\n\nvar tinyMCEoff = false;\n/*if (((LL.client.os.name == \"Android\") && LL.client.os.version && (LL.client.os.version < 3.0)) ||\n\t((LL.client.os.name == \"iOS\") && LL.client.os.version && (LL.client.os.version < 5.0))) {\n\ttinyMCEoff = true;\n}*/\n\n/*LL.emo = \"\":no:\"',\n\t':sleeping:': LL.emo + 'extended/sleeping.gif\" alt=\":sleeping:\" title=\"Sleeping\" />',\n\t':biggrin:': LL.emo + 'more_smilies/biggrin.gif\" id=\"smilie_40\" alt=\":)\" title=\"Biggrin\" />',\n\t':\\\\)': LL.emo + 'more_smilies/biggrin.gif\" id=\"smilie_40\" alt=\":)\" title=\"Biggrin\" />',\n\t':wink:': LL.emo + 'more_smilies/wink.gif\" id=\"smilie_19\" alt=\";)\" title=\"Wink\" />',\n\t';\\\\)': LL.emo + 'more_smilies/wink.gif\" id=\"smilie_19\" alt=\";)\" title=\"Wink\" />',\n\t':confused1:': LL.emo + 'more_smilies/confused1.gif\" alt=\":confused1:\" title=\"Confused1\" />',\n\t':laugh:': LL.emo + 'more_smilies/laugh.gif\" id=\"smilie_22\" alt=\":D\" title=\"Laugh\" />',\n\t':D': LL.emo + 'more_smilies/laugh.gif\" id=\"smilie_22\" alt=\":D\" title=\"Laugh\" />',\n\t':blink:': LL.emo + 'more_smilies/blink.gif\" alt=\":blink:\" title=\"Blink\" />',\n\t':innocent:': LL.emo + 'extended/innocent.gif\" alt=\":innocent:\" title=\"Innocent\" />',\n\t':sleep:': LL.emo + 'more_smilies/sleep.gif\" alt=\":sleep:\" title=\"Sleep\" />',\n\t':sad:': LL.emo + 'more_smilies/sad.gif\" alt=\":sad:\" title=\"Sad\" />',\n\t':scared:': LL.emo + 'more_smilies/scared.gif\" alt=\":scared:\" title=\"Scared\" />',\n\t':blush:': LL.emo + 'more_smilies/blush.gif\" alt=\":blush:\" title=\"Blush\" />',\n\t':ohmy:': LL.emo + 'more_smilies/ohmy.gif\" alt=\":ohmy:\" title=\"Ohmy\" />',\n\t':yes:': LL.emo + 'extended/yes.gif\" alt=\":yes:\" title=\"Yes\" />',\n\t':mellow:': LL.emo + 'more_smilies/mellow.gif\" alt=\":mellow:\" title=\"Mellow\" />',\n\t':mad:': LL.emo + 'more_smilies/mad.gif\" alt=\":mad:\" title=\"Mad\" />',\n\t':lol:': LL.emo + 'more_smilies/lol.gif\" alt=\":lol:\" title=\"Lol\" />',\n\t':tongue_smilie:': LL.emo + 'more_smilies/tongue_smilie.gif\" alt=\":tongue_smilie:\" title=\"Tongue Smilie\" />',\n\t':sneaky2:': LL.emo + 'more_smilies/sneaky2.gif\" alt=\":sneaky2:\" title=\"Sneaky2\" />',\n\t':thumbdown:': LL.emo + 'more_smilies/thumbdown.gif\" alt=\":thumbdown:\" title=\"Thumbdown\" />',\n\t':thumbup1:': LL.emo + 'more_smilies/thumbup1.gif\" alt=\":thumbup1:\" title=\"Thumbup1\" />',\n\t':thumbup:': LL.emo + 'more_smilies/thumbup.gif\" alt=\":thumbup:\" title=\"Thumbup\" />',\n\t':angry:': LL.emo + 'more_smilies/angry.gif\" alt=\":angry:\" title=\"Angry\" />',\n\t':whistling:': LL.emo + 'extended/whistling.gif\" alt=\":whistling:\" title=\"Whistling\" />',\n\t':w00t:': LL.emo + 'more_smilies/w00t.gif\" alt=\":w00t:\" title=\"W00t\" />',\n\t':chinese:': LL.emo + 'extended/chinese.gif\" alt=\":chinese:\" title=\"Chinese\" />',\n\t':chris:': LL.emo + 'extended/chris.gif\" alt=\":chris:\" title=\"Chris\" />',\n\t':clap:': LL.emo + 'extended/clap.gif\" alt=\":clap:\" title=\"Clap\" />',\n\t':clover:': LL.emo + 'extended/clover.gif\" alt=\":clover:\" title=\"Clover\" />',\n\t':clown:': LL.emo + 'extended/clown.gif\" alt=\":clown:\" title=\"Clown\" />',\n\t':cool2:': LL.emo + 'extended/cool2.gif\" alt=\":cool2:\" title=\"Cool2\" />',\n\t':cowboy:': LL.emo + 'extended/cowboy.gif\" alt=\":cowboy:\" title=\"Cowboy\" />',\n\t':detective:': LL.emo + 'extended/detective.gif\" alt=\":detective:\" title=\"Detective\" />',\n\t':devil:': LL.emo + 'extended/devil.gif\" alt=\":devil:\" title=\"Devil\" />',\n\t':devil2:': LL.emo + 'extended/devil2.gif\" alt=\":devil2:\" title=\"Devil2\" />',\n\t':chef:': LL.emo + 'extended/chef.gif\" alt=\":chef:\" title=\"Chef\" />',\n\t':rolleyes:': LL.emo + 'extended/rolleyes.gif\" alt=\":rolleyes:\" title=\"Rolleyes\" />',\n\t':drool:': LL.emo + 'more_smilies/drool.gif\" alt=\":drool:\" title=\"Drool\" />',\n\t':winkiss:': LL.emo + 'extended/winkiss.gif\" alt=\":winkiss:\" title=\"Winkiss\" />',\n\t':sorcerer:': LL.emo + 'extended/sorcerer.gif\" alt=\":sorcerer:\" title=\"Sorcerer\" />',\n\t':censored:': LL.emo + 'extended/censored.gif\" alt=\":censored:\" title=\"Censored\" />',\n\t':red_indian:': LL.emo + 'extended/red_indian.gif\" alt=\":red_indian:\" title=\"Red Indian\" />',\n\t':cursing:': LL.emo + 'more_smilies/cursing.gif\" alt=\":cursing:\" title=\"Cursing\" />',\n\t':ninja:': LL.emo + 'extended/ninja.gif\" alt=\":ninja:\" title=\"Ninja\" />',\n\t':smartass:': LL.emo + 'extended/smartass.gif\" alt=\":smartass:\" title=\"Smartass\" />',\n\t':boat:': LL.emo + 'extended/boat.gif\" alt=\":boat:\" title=\"Boat\" />',\n\t':punk:': LL.emo + 'extended/punk.gif\" alt=\":punk:\" title=\"Punk\" />',\n\t':crying:': LL.emo + 'more_smilies/crying.gif\" alt=\":crying:\" title=\"Crying\" />',\n\t':kiss:': LL.emo + 'extended/kiss.gif\" alt=\":kiss:\" title=\"Kiss\" />',\n\t':walkman:': LL.emo + 'extended/walkman.gif\" alt=\":walkman:\" title=\"Walkman\" />',\n\t':batman:': LL.emo + 'extended/batman.gif\" alt=\":batman:\" title=\"Batman\" />',\n\t':pinch:': LL.emo + 'extended/pinch.gif\" alt=\":pinch:\" title=\"Pinch\" />',\n\t':cool:': LL.emo + 'more_smilies/cool.gif\" alt=\":cool:\" title=\"Cool\" />',\n\t':wacko:': LL.emo + 'extended/wacko.gif\" alt=\":wacko:\" title=\"Wacko\" />',\n\t':sleep1:': LL.emo + 'extended/sleep1.gif\" alt=\":sleep1:\" title=\"Sleep1\" />',\n\t':balloon:': LL.emo + 'extended/balloon.gif\" alt=\":balloon:\" title=\"Balloon\" />',\n\t':phone:': LL.emo + 'extended/phone.gif\" alt=\":phone:\" title=\"Phone\" />',\n\t':huh:': LL.emo + 'more_smilies/huh.gif\" alt=\":huh:\" title=\"Huh\" />',\n\t':helpsmilie:': LL.emo + 'extended/helpsmilie.gif\" alt=\":helpsmilie:\" title=\"Helpsmilie\" />',\n\t':turned:': LL.emo + 'extended/turned.gif\" alt=\":turned:\" title=\"Turned\" />',\n\t':shifty:': LL.emo + 'extended/shifty.gif\" alt=\":shifty:\" title=\"Shifty\" />',\n\t':arabia:': LL.emo + 'extended/arabia.gif\" alt=\":arabia:\" title=\"Arabia\" />',\n\t':ph34r:': LL.emo + 'extended/ph34r.gif\" alt=\":ph34r:\" title=\"Ph34r\" />',\n\t':glare:': LL.emo + 'more_smilies/glare.gif\" alt=\":glare:\" title=\"Glare\" />',\n\t':closedeyes:': LL.emo + 'more_smilies/closedeyes.gif\" alt=\":closedeyes:\" title=\"Closedeyes\" />',\n\t':happybday:': LL.emo + 'extended/happybday.gif\" alt=\":happybday:\" title=\"Happybday\" />',\n\t':tt2:': LL.emo + 'extended/tt2.gif\" alt=\":tt2:\" title=\"Tt2\" />',\n\t':rockon:': LL.emo + 'extended/rockon.gif\" alt=\":rockon:\" title=\"Rockon\" />',\n\t':angel:': LL.emo + 'extended/angel.gif\" alt=\":angel:\" title=\"Angel\" />',\n\t':oops:': LL.emo + 'extended/oops.gif\" alt=\":oops:\" title=\"Oops\" />',\n\t':bored:': LL.emo + 'more_smilies/bored.gif\" alt=\":bored:\" title=\"Bored\" />',\n\t':hammer:': LL.emo + 'extended/hammer.gif\" alt=\":hammer:\" title=\"Hammer\" />',\n\t':tt1:': LL.emo + 'extended/tt1.gif\" alt=\":tt1:\" title=\"Tt1\" />',\n\t':shaun:': LL.emo + 'extended/shaun.gif\" alt=\":shaun:\" title=\"Shaun\" />',\n\t':alien:': LL.emo + 'extended/alien.gif\" alt=\":alien:\" title=\"Alien\" />',\n\t':online2long:': LL.emo + 'extended/online2long.gif\" alt=\":online2long:\" title=\"Online2long\" />',\n\t':yinyang:': LL.emo + 'extended/yinyang.gif\" alt=\":yinyang:\" title=\"Yinyang\" />',\n\t':blushing:': LL.emo + 'more_smilies/blushing.gif\" alt=\":blushing:\" title=\"Blushing\" />',\n\t':flowers:': LL.emo + 'extended/flowers.gif\" alt=\":flowers:\" title=\"Flowers\" />',\n\t':tooth:': LL.emo + 'extended/tooth.gif\" alt=\":tooth:\" title=\"Tooth\" />',\n\t':scooter:': LL.emo + 'extended/scooter.gif\" alt=\":scooter:\" title=\"Scooter\" />',\n\t':1eye:': LL.emo + 'extended/1eye.gif\" alt=\":1eye:\" title=\"1eye\" />',\n\t':offtopic:': LL.emo + 'extended/offtopic.gif\" alt=\":offtopic:\" title=\"Offtopic\" />',\n\t':excl:': LL.emo + 'extended/excl.gif\" alt=\":excl:\" title=\"Excl\" />',\n\t':sweatdrop:': LL.emo + 'extended/sweatdrop.gif\" alt=\":sweatdrop:\" title=\"Sweatdrop\" />',\n\t':santa:': LL.emo + 'extended/santa.gif\" alt=\":santa:\" title=\"Santa\" />',\n\t':001_icon16:': LL.emo + 'extended/001_icon16.gif\" alt=\":001_icon16:\" title=\"001 Icon16\" />',\n\t':knutschmund:': LL.emo + 'extended/001_icon16.gif\" alt=\":knutschmund:\" title=\"Knutschmund\" />',\n\t':nuke:': LL.emo + 'extended/nuke.gif\" alt=\":nuke:\" title=\"Nuke\" />',\n\t':yawn:': LL.emo + 'extended/yawn.gif\" alt=\":yawn:\" title=\"Yawn\" />',\n\t':euro:': LL.emo + 'extended/euro.gif\" alt=\":euro:\" title=\"Euro\" />',\n\t':surrender:': LL.emo + 'extended/surrender.gif\" alt=\":surrender:\" title=\"Surrender\" />',\n\t':sailor:': LL.emo + 'extended/sailor.gif\" alt=\":sailor:\" title=\"Sailor\" />',\n\t':nono:': LL.emo + 'extended/nono.gif\" alt=\":nono:\" title=\"Nono\" />',\n\t':wub:': LL.emo + 'extended/wub.gif\" alt=\":wub:\" title=\"Wub\" />',\n\t':eek:': LL.emo + 'extended/eek.gif\" alt=\":eek:\" title=\"Eek\" />',\n\t':stuart:': LL.emo + 'extended/stuart.gif\" alt=\":stuart:\" title=\"Stuart\" />'\n};*/\n\nLL.substituteSmilieShortcuts = function (originalHtml) {\n\t/*if (typeof(originalHtml) === 'string') {\n\t\tfor (var shortcut in LL.smilieReplacements) {\n\t\t\toriginalHtml = originalHtml.replace(new RegExp('([^\"])' + shortcut + '([^\"])'), \"$1\" + LL.smilieReplacements[shortcut] + \"$2\");\n\t\t}\n\t\treturn originalHtml;\n\t}*/\n\treturn originalHtml;\n};\n\nLL.removeTinyMce = function (editorId) {\n\tif (!tinyMCEoff) {\n\t\t$(editorId).tinymce().remove();\n\t\t/*var $container = $(editorId);\n\t\tvar $editor\t= $container.tinymce();\n\t\tif ($editor) {\n\t\t\t$editor.remove();\n\t\t}*/\n\t}\n};\n\nLL.initTinyMce = function (editorId, config) {\n\tif (!tinyMCEoff) {\n\t\t$(editorId).tinymce(config);\n\t}\n};\n\n// Facebook ----------------------------------------------------------------------------------------\n\nLL.initFacebookLoginDone = false;\nLL.initFacebookLogin = function() {\n\tif (LL.defaults.facebookLoginEnabled && !LL.initFacebookLoginDone) {\n\t\t$.getScript(\n\t\t\t'https://connect.facebook.net/de_DE/all.js',\n\t\t\tfunction () {\n\t\t\t\ttry {\n\t\t\t\t\tFB.init({\n\t\t\t\t\t\t\"appId\": LL.defaults.facebookAppId,\n\t\t\t\t\t\t\"cookie\": true,\n\t\t\t\t\t\t\"oauth\": true,\n\t\t\t\t\t\t\"channelUrl\": \"/js/fb/channel.html\",\n\t\t\t\t\t\t\"status\": true,\n\t\t\t\t\t\t\"xfbml\": true\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlog(\"ERROR: FB initialisation in initFacebookLogin()\", e);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tLL.initFacebookLoginDone = true;\n\t}\n};\n\n// -------------------------------------------------------------------------------------------------\n\nfunction isMobileLayout() {\n\treturn LL.defaults.isMobile;\n}\n\nfunction createUserMenuOverlay() {\n\tvar $overlay = $(\".mod_usermenu--overlay\"),\n\t\t$userMenu = $(\".mod_usermenu\");\n\n\tif ($overlay.length < 1 && $userMenu.length > 0) {\n\t\t$overlay = $userMenu\n\t\t\t.first()\n\t\t\t.clone(true)\n\t\t\t.addClass(\"mod_usermenu--overlay\");\n\n\t\t$(\"body\").append($overlay);\n\t}\n}\n\nfunction toggle_visibility(className) {\n\tvar $element = $(\".\" + className).first();\n\n\t//$(\".toggled-item\").not($element).hide();\n\t$element.toggle();\n}\n\nfunction refreshWideStoererBackground($stoerer) {\n\tvar left = $stoerer.offset().left,\n\t\t$bgWrapper = $(\".bgimage-wrapper\", $stoerer);\n\n\tif (isMobileLayout()) {\n\t\t$bgWrapper.css({left: '', right: ''});\n\t} else if ($stoerer.hasClass(\"mod_eyecatcher_wide--right\")) {\n\t\t// $bgWrapper.css({left: (left * -1) + \"px\"});\n\t\t$bgWrapper.css({left: 0});\n\t} else {\n\t\t//$bgWrapper.css({right: (-1 * (window.innerWidth - left - $stoerer.width())) + \"px\"});\n\t\t$bgWrapper.css({right: 0});\n\t}\n}\n\nfunction isLoggedIn() {\n\treturn LL.defaults.isLoggedIn;\n}\n\n// Init after page load ----------------------------------------------------------------------------\n\n$(function () {\n\n\t// Set CSS variable for viewport width -----------------------------------------\n\n\t(function () {\n\t\tfunction refreshViewportWidth() {\n\t\t\tdocument.documentElement.style.setProperty(\n\t\t\t\t'--viewport-inner-width',\n\t\t\t\t(document.documentElement.clientWidth / 16).toFixed(3) + 'rem'\n\t\t\t);\n\t\t}\n\n\t\twindow.addEventListener('resize', refreshViewportWidth);\n\t\trefreshViewportWidth();\n\t})();\n\n\t// Toggle login status dependent content ------------------------------------------\n\n\tif (isLoggedIn()) {\n\t\t$(\".logged-out-only\").addClass(\"versteckt\");\n\t\t$(\".logged-in-only\").removeClass(\"versteckt\");\n\t}\n\n\t// Refresh wide stoerer background position ---------------------------------------\n\n\t$(window).on(\"load resize\", function () {\n\t\t$(\".mod_eyecatcher_wide\").each(function () {\n\t\t\trefreshWideStoererBackground($(this));\n\t\t});\n\t});\n\n\t// Search bar in header ---------------------------------------------------\n\n\t$(\".nm-nav__open-search\").click(function () {\n\t\t$(\".nm-search\")\n\t\t\t.show()\n\t\t\t.find(\"input[name=q]\")\n\t\t\t.focus();\n\t});\n\n\t$(\".search-close\").click(function () {\n\t\t$(\".nm-search\").hide();\n\t});\n\n\t// Lazy loading of images ---------------------------------------------------\n\n\t$(\"img.lazy\").lazyload({\n\t\tthreshold: 300,\n\t\tfailure_limit: 9999999\n\t});\n\n\t// Navbox toggeling ----------------------------------------------------------\n\n\t$(\"[data-toggle-nav-box]\").llNavboxToggle();\n\n\t// Datepicker ---------------------------------------------------------------\n\n\t$(\".datepicker\").llDatepicker();\n\n\t// Galerie-Swiper --------------------------------------\n\n\t// New galleries - auto initialisation\n\t$(\".mod_gallery\").each(function () {\n\t\tvar $gallery = $(this),\n\t\t\t$slick = $(\".slick\", $gallery),\n\t\t\tslick = null,\n\t\t\theadline = $(\"h1\").text();\n\n\t\t$slick.slick({\n\t\t\tadaptiveHeight: true,\n\t\t\tfade: false,\n\t\t\tlazyLoad: \"ondemand\",\n\t\t\tnextArrow: \"
    \",\n\t\t\tprevArrow: \"
    \"\n\t\t});\n\n\t\tfunction refreshSidebar() {\n\t\t\tvar currentSlideIndex = $slick.slick(\"slickCurrentSlide\"),\n\t\t\t\t$currentSlide = $(slick.$slides[currentSlideIndex]),\n\t\t\t\theadline = $currentSlide.find(\".hl\").html(),\n\t\t\t\tcaption = $currentSlide.find(\".txt\").html();\n\n\t\t\t$(\".navibar .current-page\", $gallery).text(currentSlideIndex + 1);\n\n\t\t\tif ($currentSlide.hasClass(\"inner\")) {\n\t\t\t\t$(\".navibar .current-caption\", $gallery).html(caption);\n\t\t\t\t$(\".navibar .current-headline\", $gallery).html(headline);\n\t\t\t} else {\n\t\t\t\t$(\".navibar .current-caption\", $gallery).html(\"\");\n\t\t\t\t$(\".navibar .current-headline\", $gallery).html(\"\");\n\t\t\t}\n\t\t}\n\n\t\tfunction loadLazyImages() {\n\t\t\tvar currentIndex = $slick.slick(\"slickCurrentSlide\"),\n\t\t\t\tslideCount = slick.$slides.length,\n\t\t\t\tallSlides = Array.from(slick.$slides),\n\t\t\t\tloadSlides = [],\n\t\t\t\t$img;\n\n\t\t\tif (slideCount < 3) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get next slides\n\t\t\tloadSlides = loadSlides.concat(allSlides.slice(currentIndex, currentIndex + 3));\n\t\t\tif (currentIndex + 3 > slideCount) {\n\t\t\t\tloadSlides = loadSlides.concat(allSlides.slice(3));\n\t\t\t}\n\n\t\t\t// Get previous slides\n\t\t\tloadSlides = loadSlides.concat(allSlides.slice(currentIndex - 3, currentIndex));\n\t\t\tif (currentIndex < 3) {\n\t\t\t\tloadSlides = loadSlides.concat(allSlides.slice(-3))\n\t\t\t}\n\n\t\t\t// Load lazy images in slides\n\t\t\t$.each(loadSlides, function(key, slide) {\n\t\t\t\t$(slide).find(\"[data-lazy]\").each(function () {\n\t\t\t\t\t$img = $(this);\n\t\t\t\t\t$img.attr(\"src\", $img.data(\"lazy\")).removeAttr(\"data-lazy\");\n\t\t\t\t});\n\n\t\t\t\t$(slide).find(\".lazy[data-original]\").each(function () {\n\t\t\t\t\t$img = $(this);\n\t\t\t\t\t$img.attr(\"src\", $img.data(\"original\")).removeAttr(\"data-original\");\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tfunction triggerIvw(directionName, triggerName) {\n\t\t\tif (directionName === 'prev') {\n\t\t\t\tLL.actions.klick_fotostrecke_zurueck({\n\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\"trigger\": triggerName\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tLL.actions.klick_fotostrecke_vor({\n\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\"trigger\": triggerName\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction goToPageViaUrl() {\n\t\t\tif (window.location.hash) {\n\t\t\t\tvar matches = window.location.hash.match(/#bild([0-9]+)/);\n\t\t\t\tif (matches) {\n\t\t\t\t\tvar slideIndex = matches[1] - 1,\n\t\t\t\t\t\tslide = slick.$slides[slideIndex];\n\t\t\t\t\tif (slide) {\n\t\t\t\t\t\t$('img', slick.$slides[slideIndex]).load(function () {\n\t\t\t\t\t\t\tslick.animateHeight();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$slick.slick(\"slickGoTo\", slideIndex);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshUrlHash() {\n\t\t\tvar currentIndex = $slick.slick(\"slickCurrentSlide\") + 1;\n\n\t\t\tlocation.hash = currentIndex < 2 ? \"\" : 'bild' + currentIndex;\n\t\t}\n\n\t\t/**\n\t\t * Fix the slides list height in combination of custom lazy\n\t\t * loading, automatic height resizing and switching the gallery\n\t\t * slides too fast (before the images are lazy-loaded).\n\t\t */\n\t\tfunction fixAutoResizeHeight() {\n\t\t\tvar $slidesList = $(\".slick-list\", $gallery);\n\t\t\tif ($slidesList.height() < 2) {\n\t\t\t\tvar interval = window.setInterval(function () {\n\t\t\t\t\tslick.setHeight();\n\t\t\t\t\tif ($slidesList.height() > 2) {\n\t\t\t\t\t\tclearInterval(interval);\n\t\t\t\t\t}\n\t\t\t\t}, 50);\n\t\t\t}\n\t\t}\n\n\t\tfunction refreshLastSlideClass() {\n\t\t\tif ($slick.slick(\"slickCurrentSlide\") + 1 === slick.$slides.length) {\n\t\t\t\t$gallery.addClass(\"last-slide-active\");\n\t\t\t} else {\n\t\t\t\t$gallery.removeClass(\"last-slide-active\");\n\t\t\t}\n\t\t}\n\n\t\tfunction initSwipeEvents() {\n\t\t\t$slick.on('swipe', function(event, slick, direction) {\n\t\t\t\tif (direction === 'left') {\n\t\t\t\t\ttriggerIvw(\"next\", \"swipe\");\n\t\t\t\t} else {\n\t\t\t\t\ttriggerIvw(\"prev\", \"swipe\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction initButtonEvents() {\n\t\t\t$(\".prev\", $gallery).click(function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\t$slick.slick(\"slickPrev\");\n\t\t\t\ttriggerIvw(\"prev\", \"pfeil_button\");\n\t\t\t});\n\t\t\t$(\".next\", $gallery).click(function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\t$slick.slick(\"slickNext\");\n\t\t\t\ttriggerIvw(\"next\", \"pfeil_button\");\n\t\t\t});\n\t\t}\n\n\t\tfunction initKeyboardEvents() {\n\t\t\tvar prev = $(\".prev\", $gallery)[0],\n\t\t\t\tnext = $(\".next\", $gallery)[0];\n\n\t\t\t$(document).keyup(function(e) {\n\t\t\t\tswitch (e.keyCode) {\n\t\t\t\t\t// Cursor left\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\ttriggerIvw(\"prev\", \"keypress\");\n\t\t\t\t\t\t$slick.slick(\"slickPrev\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t// Cursor right\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\ttriggerIvw(\"next\", \"keypress\");\n\t\t\t\t\t\t$slick.slick(\"slickNext\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction refreshInlineSparkAd() {\n\t\t\tconst $activeAdSlide = $gallery.find(\".slick-slide.slick-current.isAd\");\n\t\t\tconst $galleryAd = $gallery.find(\".gallery-inline-ad-spark\");\n\n\t\t\tif ($activeAdSlide.length && $galleryAd.length) {\n\t\t\t\t$activeAdSlide.find(\".wrapper\").append($galleryAd);\n\t\t\t\tconst refreshAdEvent = new CustomEvent(\"refresh-gallery-spark-ad\", {\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tslot: $galleryAd.attr(\"id\")\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdocument.dispatchEvent(refreshAdEvent);\n\t\t\t}\n\t\t}\n\n\t\tfunction init() {\n\t\t\tslick = $slick.slick(\"getSlick\");\n\t\t\trefreshSidebar();\n\t\t\tinitKeyboardEvents();\n\t\t\tinitButtonEvents();\n\t\t\tinitSwipeEvents();\n\t\t\tgoToPageViaUrl();\n\t\t\tloadLazyImages();\n\t\t\trefreshLastSlideClass();\n\n\t\t\t$slick.on(\"afterChange\", function () {\n\t\t\t\trefreshSidebar();\n\t\t\t\tloadLazyImages();\n\t\t\t\trefreshUrlHash();\n\t\t\t\trefreshLastSlideClass();\n\t\t\t\trefreshInlineSparkAd();\n\t\t\t\tfixAutoResizeHeight();\n\t\t\t});\n\t\t}\n\n\t\tinit();\n\t});\n\n\t// Navigation ----------------------------------------------\n\n\t(function () {\n\t\tvar $nav = $(\".nm-nav\"),\n\t\t\t$levelOneElements = $(\".nm-nav__level-one > li\"),\n\t\t\t$links = $(\"li a\", $nav),\n\t\t\t$toggleMenu = $(\".toggleMenu\"),\n\t\t\t$toggleElement = $(\".toggle\", $nav),\n\t\t\t$menuTeasers = $(\".nm-header\").find(\".menu-teaser\"),\n\t\t\t$body = $(\"body\");\n\n\t\t$toggleMenu.click(function (e) {\n\t\t\te.preventDefault();\n\t\t\t$(this).toggleClass(\"active\");\n\t\t\t$nav.toggle();\n\t\t});\n\t\t$links.each(function () {\n\t\t\tif ($(this).next().length > 0) {\n\t\t\t\t$(this).addClass(\"parent\");\n\t\t\t}\n\t\t});\n\t\t$levelOneElements.on(\"mouseenter\", function () {\n\t\t\tvar $element = $(this),\n\t\t\t\thasLevelTwo = $element.find(\".nm-nav__level-two\").length;\n\n\t\t\tif (!$element.find(\".menu-teaser\").length && hasLevelTwo) {\n\t\t\t\t$element.append($menuTeasers.clone(true));\n\t\t\t\t$element.find(\".menu-teaser\").addClass(\"menu-teaser--desktop\");\n\t\t\t}\n\t\t\t// must be attached to li so that mouseleave is not triggered when hover over submenu\n\t\t\tif (hasLevelTwo) {\n\t\t\t\t$element.addClass(\"open-desktop\");\n\t\t\t\t$body.addClass(\"main-menu-flyout-open\");\n\t\t\t}\n\t\t});\n\t\t$levelOneElements.on(\"mouseleave\", function () {\n\t\t\t// must be attached to li so that mouseleave is not triggered when hover over submenu\n\t\t\t$(this).removeClass(\"open-desktop\");\n\t\t\t$body.removeClass(\"main-menu-flyout-open\");\n\t\t});\n\t\t$toggleElement.click(function (e) {\n\t\t\tvar $that = $(this),\n\t\t\t\t$parent = $that.closest(\"li\"),\n\t\t\t\tisOpen = $parent.hasClass(\"open-mobile\");\n\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t$parent.toggleClass(\"open-mobile open-desktop\", !isOpen);\n\t\t\t$that.toggleClass(\"toggle--open\", !isOpen);\n\t\t});\n\t})();\n\n\t// 5 Star voting / rating --------------------------------------\n\n\t$(\".raty-wrapper\").each(function () {\n\t\tvar $raty = $(\".raty\", this),\n\t\t\t$message = $(\".raty-message\", this),\n\t\t\tratyId = $raty.data(\"id\"),\n\t\t\tisTemporarilyDisabled = false,\n\t\t\tlockTimeMs = 3000;\n\n\t\tfunction init() {\n\t\t\t$raty.raty({\n\t\t\t\tclick: function (score) {\n\t\t\t\t\tif (!isTemporarilyDisabled) {\n\t\t\t\t\t\trate(score);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thalf: false,\n\t\t\t\thalfShow: true,\n\t\t\t\thints: [\"\", \"\", \"\", \"\", \"\"],\n\t\t\t\tnoRatedMsg: \"\",\n\t\t\t\tstarType: 'i'\n\t\t\t});\n\n\t\t\t// Disable raty if no local sorage is present to disallow voting multiple times\n\t\t\tif (typeof window.localStorage !== \"object\") {\n\t\t\t\t$raty.raty(\"readOnly\", true);\n\t\t\t}\n\n\t\t\trequestInitialRating();\n\t\t}\n\n\t\tfunction getScore() {\n\t\t\treturn localStorage.getItem('raty-' + ratyId);\n\t\t}\n\n\t\tfunction setScore(score) {\n\t\t\tlocalStorage.setItem('raty-' + ratyId, score);\n\t\t}\n\n\t\tfunction setIsDisabled(status) {\n\t\t\t$raty.raty(\"readOnly\", status);\n\t\t\tisTemporarilyDisabled = status;\n\t\t}\n\n\t\tfunction showMessage(resultList) {\n\t\t\tvar message,\n\t\t\t\taverage = getAverage(resultList),\n\t\t\t\taverageFormatted = average.replace(\".\", \",\"),\n\t\t\t\tvoteCount = getVoteCount(resultList),\n\t\t\t\tmyScore = getScore();\n\n\t\t\tif (myScore > 0) {\n\t\t\t\t// Durch Caching kann hier der eigene Wert fehlen, was zumindest bei sonst 0 Votings\n\t\t\t\t// dann manuell \"eingerechnet\" wird:\n\t\t\t\tif (voteCount == 0) {\n\t\t\t\t\taverageFormatted = myScore;\n\t\t\t\t\tvoteCount = 1;\n\t\t\t\t}\n\n\t\t\t\tmessage = \"Deine Bewertung: \" + myScore + \"\"\n\t\t\t\t\t+ \" | ∅ \" + averageFormatted + \" / 5 | Bewertungen: \" + voteCount;\n\t\t\t} else if (voteCount > 0) {\n\t\t\t\tmessage = \"∅ \" + averageFormatted + \" / 5 | Bewertungen: \" + voteCount;\n\t\t\t} else {\n\t\t\t\tmessage = \"Jetzt bewerten\";\n\t\t\t}\n\n\t\t\t$message.html(message);\n\t\t}\n\n\t\tfunction requestResultList(callback) {\n\t\t\t$.ajax({\n\t\t\t\ttype: \"GET\",\n\t\t\t\turl: \"/rate/\" + ratyId\n\t\t\t}).done(function (resultList) {\n\t\t\t\tcallback(resultList);\n\t\t\t});\n\t\t}\n\n\t\tfunction submitRate(score, callback) {\n\t\t\t$.ajax({\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: \"/rate/\" + ratyId + \"/\" + score\n\t\t\t}).done(function (resultList) {\n\t\t\t\tsetScore(score);\n\t\t\t\tcallback(resultList);\n\t\t\t});\n\t\t}\n\n\t\tfunction submitUnRate(score, callback) {\n\t\t\t$.ajax({\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: \"/unrate/\" + ratyId + \"/\" + score\n\t\t\t}).done(function (resultList) {\n\t\t\t\tcallback(resultList);\n\t\t\t});\n\t\t}\n\n\t\tfunction getAverage(resultList) {\n\t\t\tvar average = 0;\n\n\t\t\tif (typeof resultList === \"object\") {\n\t\t\t\tvar votes = 0,\n\t\t\t\t\tsum = 0;\n\n\t\t\t\t$.each(resultList, function (stars, count) {\n\t\t\t\t\tvotes += count;\n\t\t\t\t\tsum += stars * count;\n\t\t\t\t});\n\n\t\t\t\tif (votes > 0) {\n\t\t\t\t\taverage = (sum / votes).toFixed(1);\n\t\t\t\t} else {\n\t\t\t\t\taverage = \"-\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn average;\n\t\t}\n\n\t\tfunction getVoteCount(resultList) {\n\t\t\tvar count = 0;\n\n\t\t\tif (typeof resultList === \"object\") {\n\t\t\t\t$.each(resultList, function (stars, voters) {\n\t\t\t\t\tcount += voters;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn count;\n\t\t}\n\n\t\tfunction requestInitialRating() {\n\t\t\trequestResultList(function (resultList) {\n\t\t\t\t$raty.raty(\"score\", getAverage(resultList));\n\t\t\t\tshowMessage(resultList);\n\t\t\t});\n\t\t}\n\n\t\tfunction rate(newScore) {\n\t\t\tif (getScore()) {\n\t\t\t\tsetIsDisabled(true);\n\t\t\t\tsubmitUnRate(getScore(), function () {\n\t\t\t\t\tsubmitRate(newScore, function (resultList) {\n\t\t\t\t\t\tsetIsDisabled(false);\n\t\t\t\t\t\t$raty.raty(\"score\", getAverage(resultList));\n\t\t\t\t\t\tshowMessage(resultList);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tsetIsDisabled(true);\n\t\t\t\tsubmitRate(newScore, function (resultList) {\n\t\t\t\t\tsetIsDisabled(false);\n\t\t\t\t\t$raty.raty(\"score\", getAverage(resultList));\n\t\t\t\t\tshowMessage(resultList);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tinit();\n\t});\n\n\t// App-Button --------------------------------------\n\n\t(function () {\n\t\tvar isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n\n\t\tif (isIos) {\n\t\t\t$(\".google-play-store-image\").addClass(\"desktop-only\");\n\t\t} else {\n\t\t\t$(\".apple-app-store-image\").addClass(\"desktop-only\");\n\t\t}\n\t})();\n\n\t// Expertise slider --------------------------------------\n\n\t$(\".mod_expertise\").each(function () {\n\t\tvar $gallery = $(this),\n\t\t\t$slick = $(\".mod_expertise__slider\", $gallery),\n\t\t\theadline = $('.intro .hd', this).text(),\n\t\t\tslick;\n\n\t\t$slick.slick({\n\t\t\tadaptiveHeight: true,\n\t\t\tfade: false,\n\t\t\tdots: true,\n\t\t\tlazyLoad: \"ondemand\",\n\t\t\tnextArrow: \"
    \",\n\t\t\tprevArrow: \"
    \"\n\t\t});\n\n\t\tfunction setPrevButtonVisible(visible) {\n\t\t\t$slick.find(\".prev-wrap\").toggle(visible);\n\t\t}\n\n\t\tfunction triggerIvw(isBackwards) {\n\t\t\tif (isBackwards) {\n\t\t\t\tLL.actions.klick_expertise_zurueck({\n\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\"trigger\": \"back\"\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tLL.actions.klick_expertise_vor({\n\t\t\t\t\t\"headline\": headline,\n\t\t\t\t\t\"trigger\": \"forward\"\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction init() {\n\t\t\tslick = $slick.slick(\"getSlick\");\n\t\t\tsetPrevButtonVisible(false);\n\n\t\t\t$slick.on(\"afterChange\", function (e, slider, direction) {\n\t\t\t\tvar isFirstSlide = $slick.slick(\"slickCurrentSlide\") === 0,\n\t\t\t\t\tisBackwards = direction === 0;\n\n\t\t\t\tsetPrevButtonVisible(!isFirstSlide);\n\t\t\t\ttriggerIvw(isBackwards);\n\t\t\t});\n\t\t}\n\n\t\tinit();\n\t});\n\n\t// Mobile Sticky Banner Ad --------------------------------------\n\n\t$(\".ad_bottom_close_button\").on(\"click\", function () {\n\t\t$(this).closest(\".mod_ad\").hide();\n\t});\n});\n"],"names":["LL","detectClient","osName","ua","navigator","userAgent","indexOf","client","os","name","replace","version","parseFloat","slice","length","createCookie","value","days","createCookieSeconds","seconds","date","expires","Date","setTime","getTime","toGMTString","document","cookie","readCookie","nameEQ","ca","split","i","c","charAt","substring","eraseCookie","fwAjax","options","opts","$","extend","context","body","data","error","success","target","type","url","Math","random","ajax","cache","textStatus","jqXHR","html","call","errorThrown","log","fwUpdateURLParameter","key","re","RegExp","separator","match","logGeoLocationError","code","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","UNKNOWN_ERROR","ll_pollGoBack","widgetDiv","hide","show","actions","klick","ll_pollResults","attr","reloadAds","Spark","cmd","push","definitionService","refresh","ASCDP","adS","adition","srq","api","load","completeRendering","e","setDatepickerLanguage","datepicker","regional","changeMonth","changeYear","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","dateFormat","firstDay","isRTL","showMonthAfterYear","showOtherMonths","selectOtherMonths","yearSuffix","setDefaults","window","history","arguments","callee","caller","this","console","Array","prototype","b","a","d","pop","defaults","calendarIcon","facebookAppId","facebookLoginEnabled","idLoginBox","idLoginForm","idLoginLayer","isLoggedIn","isMobile","innerWidth","textLogin","textLogout","urlLogin","urlLogout","extLoginUrl","loginHtml","loginErrors","ivw_context","ga_context","IOMm_data","IOMm","_gaq","dataLayer","event","virtualPageURL","klick_videobox_thumbnail","args","title","klick_videobox_pfeil_vor","klick_videobox_pfeil_zurueck","klick_videobox_lightbox_open","klick_videobox_lightbox_close","klick_f_a_box_pfeil_vor","klick_f_a_box_pfeil_zurueck","klick_navigation_anmelden_lightbox_open","klick_anmelden_lightbox_ok_close","klick_anmelden_lightbox_manuell_close","klick_anmelden_lightbox_senden_fehler","klick_nutzer_ranking_reiter","klick_top_themen_pfeil_vor","klick_top_themen_pfeil_zurueck","klick_a_z_reiter","button_name","klick_teaser_reiter","klick_teaser_clip_paging","page","klick_f_a_box_reiter","klick_kommentarmodul_reiter","klick_kommentarmodul_melden","klick_kommentarmodul_melden_lightbox_manuell_close","klick_kommentarmodul_melden_lightbox_ok_close","klick_kommentarmodul_melden_lightbox_fehler","klick_kommentarmodul_bewertung_hilfreich","klick_kommentarmodul_mehr","klick_fragestellen_anmelden_lightbox_open","klick_fragestellen_anmelden_lightbox_ok_close","klick_fragestellen_anmelden_lightbox_manuell_close","klick_fragestellen_anmelden_lightbox_senden_fehler","klick_karussell_pfeil_vor","klick_karussell_pfeil_zurueck","klick_karussell_button","klick_inlinebild_lightbox_open","klick_inlinebild_lightbox_close","klick_fotostrecke_vor","headline","trigger","gaContext","location","pathname","hash","klick_fotostrecke_zurueck","klick_selftest","klick_threads_paging","klick_usergallery_paging","klick_usergallery_image","id","klick_userquestions_tab","klick_user_friendship","klick_hibbelliste_paging","klick_expertise_vor","klick_expertise_zurueck","loginLayerOptions","cookiename","idUsername","idPassword","idSaveLogin","logoutCallback","urlLayer","postLoginAction","redirectAfterLoginUrl","redirectExtLoginNotFoundUrl","test","getIndex","idx","HoroscopeWidget","element","zodiacSignsForetellings","currentIndex","$previousHandle","previousSelector","$nextHandle","nextSelector","$itemContainer","itemContainerSelector","$headlineElement","headlineElementSelector","_zodiacSignsForetellings","sort","dateFrom","itemWidth","parent","width","drawHtmlItems","next","goBy","previous","indexDelta","moveTo","getNewDeltaIndex","goTo","getNewIndex","setZodiacSignByDate","isValidDate","getZodiacSignByDate","itemsHtml","zodiacSignsFortelling","templateItem","content","empty","setEventHandler","click","newIndex","debug","index","jQuery","grep","zodiacSignsForetelling","dateTo","datePattern","newZodiacSign","fadeOut","duration","animate","left","fadeIn","apply","ll","params","rawParams","search","param","layerInnerHeight","viewportHeight","height","viewportOffset","scrollTop","hasClass","dev","fn","reverse","fwAjaxRefresh","each","before","initial","interval","that","fwAjaxUpdate","setTimeout","fwAjaxSelect","change","val","llAsk","llLayer","callback","closeCallback","llCaroussel","slide","$pagingButtons","removeClass","eq","groupSize","addClass","sliderIsAnimated","$slider","groupWidth","$paging","$previous","$next","outerWidth","size","sliderWidth","preventDefault","$originals","position","find","prepend","css","remove","append","llCommentFormToggle","toggle","text","slideDown","slideUp","llDailyDosis","$dd","$switch","is","llDatepicker","$that","dateStr","showOn","buttonImage","buttonImageOnly","numberOfMonths","showOptions","direction","stepMonths","option","Modernizr","inputtypes","s","parse","parseDateTimeIso","m","getDate","getMonth","y","getFullYear","formatDate","llDoxter","$links","geolocation","getCurrentPosition","lat","coords","latitude","lon","longitude","$link","llForm","$form","$submitLink","live","$parentForm","closest","serializeArray","llJsonForm","dataString","serialize","llLayerForm","closeOnClick","$layer","method","llImgZoom","$imgLink","alt","llLayerInject","llGallery","prev","keyup","keyCode","llGalleryEdit","$input","$selectCount","count","llGalleryView","galleryClass","$gallery","positionInnerLayer","display","visibility","layerImgWidth","$layerInner","offsetTop","outerHeight","$layerImg","maxWidth","parseInt","min","margin-top","closeLayer","resizeLayer","layerHeight","layerWidth","resize","unbind","isMobileLayout","focusId","responseType","dataType","response","elem","getElementById","focus","llLink","klick_function","klick_function_use_title_as_button_name","llLoadTab","llLoggedOutOnly","llLogin","$errorMessage","$loginBox","loginBox","submit","form","self","href","reload","llLoginLayer","status","errors","error403","error409","error410","error500","llLoginExt","facebookid_externalid","FB","getAuthResponse","accessToken","facebookLoginException","errorsFb","facebook_name","facebook_link","undefined","facebook_email","facebook_firstname","facebook_lastname","facebook_gender","openLoginLayer","domObj","initFacebookLogin","$errorLayerMessage","timeout","isQuestionAsked","$div","login","authResponse","loginExtOptions","email","facebook_username","username","link","first_name","last_name","gender","scope","ex","stopPropagation","llModExperts","$text","$hide","$dots","llPaging","activePageIndex","limit","$article","$articleElements","$paragraphs","activePagingGroupIndex","autoPaging","charCount","paragraphCount","pagingGroups","pagingGroupIndex","pagingGroupsLength","$lastElement","$element","trim","clone","$original","pagingSkel","prevIndex","lastIndex","pageLink","$pagingSkel","join","llTeaserClipPaging","$pages","gotoPage","$thisPage","offset","top","buildPaging","ll_pollLayer","formData","postUrl","llQuestion","$prev","$lists","listCount","llRate","$submit","$badge","prop","llIndexBox","$more","$less","$li","llSearchLayer","defaultValue","layerIndex","sending","blur","clearTimeout","resultCount","$results","inputLength","inputLengthSent","llSelftestAnswers","$answerDesc","llShortcuts","autoclose","$hl","not","$list","siblings","$parent","llSitemapToggle","children","end","llNavboxToggle","x","pageX","pageY","llSlideShow","elementCount","elementWidth","prependTo","appendTo","$images","$counter","offsetLeft","margin-left","on","llTabs","$tabs","$tabLinks","llTeaserTab","$teasers","llTopTopics","refreshWidth","$imagesContainer","$txts","imageCount","isBusy","zoom","llTopTopicsZoom","slideDuration","$containerWidth","$firstImg","first","detach","$lastImg","clearInterval","last","setInterval","llValidate","formId","action","llVideo","llVideoBox","shift","$clone","item","$replacement","deleteInlineScripts","exp","$linkVideo","$linksBottom","dom","restartInactivityTimer","list","dir","$top","$bottom","$topClone","$bottomClone","userImagize","cookieName","defaultImageUrls","male","female","expert","imageBasePath","imageSelector","parts","currentSrcUri","src","newSrcUri","image","horoscopeWidget","updateByUsersBirthday","birthday","clicker","cE","sPn","nClicker","sP","Socialbar","rootElement","$rootElement","$window","$document","mobileMaxWidth","mobileScrollThreshold","bindEvents","emailButtonClickHandler","shareUrl","encodeURIComponent","mail","createElement","facebookButtonClickHandler","open","twitterButtonClickHandler","pinterestButtonClickHandler","flipboardButtonClickHandler","whatsappButtonClickHandler","shareText","isAboveThreshold","socialbar","$footer","$socialBar","threshold","ajaxSetup","contentType","headers","cache-control","tinyMceConfig","script_url","tinyMceUrl","block_formats","branding","content_css","language","menubar","paste_data_images","plugins","relative_urls","statusbar","toolbar","tinyMceConfigSignature","tinyMceConfigMobile","tinyMCEoff","createUserMenuOverlay","$overlay","$userMenu","toggle_visibility","className","refreshWideStoererBackground","$stoerer","$bgWrapper","right","substituteSmilieShortcuts","originalHtml","removeTinyMce","editorId","tinymce","initTinyMce","config","initFacebookLoginDone","getScript","init","appId","oauth","channelUrl","xfbml","refreshViewportWidth","documentElement","style","setProperty","clientWidth","toFixed","$nav","$levelOneElements","$toggleMenu","$toggleElement","$menuTeasers","$body","addEventListener","lazyload","failure_limit","slideIndex","$slick","slick","refreshSidebar","currentSlideIndex","$currentSlide","$slides","caption","loadLazyImages","$img","slideCount","allSlides","from","loadSlides","concat","removeAttr","triggerIvw","directionName","triggerName","refreshLastSlideClass","adaptiveHeight","fade","lazyLoad","nextArrow","prevArrow","matches","animateHeight","refreshAdEvent","$slidesList","refreshInlineSparkAd","$activeAdSlide","$galleryAd","CustomEvent","detail","slot","dispatchEvent","setHeight","toggleClass","hasLevelTwo","isOpen","$raty","$message","ratyId","isTemporarilyDisabled","getScore","localStorage","getItem","setIsDisabled","raty","showMessage","resultList","averageFormatted","getAverage","voteCount","stars","voters","getVoteCount","myScore","message","submitRate","score","done","setItem","votes","sum","average","newScore","half","halfShow","hints","noRatedMsg","starType","MSStream","setPrevButtonVisible","visible","dots","slider","isFirstSlide","isBackwards"],"mappings":"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"}