{"version":3,"file":"jquery.ll.min.js","sources":["jquery.ll.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\": false,\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\"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\t// Selftest (GESUND-588)\n\t\"klick_selftest\": function(args) {\n\t\tLL.actions.klick(\"klick_selftest\");\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\"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\"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\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.success(function(data, textStatus, jqXHR) {\n\t\tif (opts.target) {\n\t\t\t$(opts.target).html(data);\n\t\t}\n\t\tif (typeof opts.success == \"function\") {\n\t\t\topts.success.call();\n\t\t}\n\t})\n\t.error(function(jqXHR, textStatus, errorThrown) {\n\t\tlog(jqXHR, textStatus, errorThrown);\n\t\tif (typeof opts.error == \"function\") {\n\t\t\topts.error.call();\n\t\t}\n\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.success(function(data, textStatus, jqXHR) {\n\t\t$(\"#\"+widgetDiv).hide();\n\t\t$(\"#\"+widgetDiv+'_r')\n\t\t\t.html(data)\n\t\t\t.show();\n\t\tLL.actions.klick(\"klick_voting_results\");\n\t})\n\t.error(function(jqXHR, textStatus, errorThrown) {\n\t\tlog(jqXHR, textStatus, errorThrown);\n\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() { return /MSIE/i.test(navigator.userAgent); })(),\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}\n\t\t\telse {\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 + 10);\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}\n\t\telse if ( idx < 0 ) {\n\t\t\treturn getIndex( length + (idx % length) );\n\t\t}\n\t\telse {\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 * Definiert, ob das erste Laden bereits beim Aufruf passieren soll (default: true).\n\t * @param interval\n\t * Definiert das Intervall in Millisekunden.\n\t * @param refresh\n\t * Definiert, 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\"left\": -(idx * groupWidth)\n\t\t\t\t\t},\n\t\t\t\t\toptions.duration,\n\t\t\t\t\tfunction() {\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\tsliderIsAnimated = false;\n\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) { return false; }\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) { return false; }\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}\n\t\t\t\telse {\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) { return false; }\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}\n\t\t\t\telse {\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\t\tfunction() {\n\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t.text(\"Kommentareingabe schließen\")\n\t\t\t\t\t\t\t.addClass(\"open\")\n\t\t\t\t\t\t\t.next(\"form\")\n\t\t\t\t\t\t\t.slideDown();\n\t\t\t\t\t},\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t.text(\"Antwort kommentieren\")\n\t\t\t\t\t\t\t.removeClass(\"open\")\n\t\t\t\t\t\t\t.next(\"form\")\n\t\t\t\t\t\t\t.slideUp();\n\t\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\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}\n\t\t\t\telse {\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\n\t$.fn.llDatepicker = function(options) {\n\t\treturn this.each(function() {\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\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$(this).datepicker(opts);\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\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\t\t\t\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\t\t\t\t\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.success(function(data, textStatus, jqXHR) {\n\t\t\t\t\t\topts.success.apply(this, arguments);\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\topts.error.apply(this, arguments);\n\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.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.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\tresizeLayer();\n\t\t\t\t$layer\n\t\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 width = $layer.find(\".img img\").width();\n\t\t\t\t\t$layerInner\n\t\t\t\t\t\t.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\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\tresizeLayer();\n\t\t\t\t$layer\n\t\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 width = $layer.find(\".img img\").width();\n\t\t\t\t\t$layerInner\n\t\t\t\t\t\t.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.success(function(data, textStatus, jqXHR) {\n\t\t\t\t\t\t$(opts.target).html(data);\n\t\t\t\t\t\tif ( typeof opts.success == \"function\" ) {\n\t\t\t\t\t\t\topts.success.call();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (typeof opts.klick_function == \"function\") {\n\t\t\t\t\t\t\tif (opts.klick_function_use_title_as_button_name) {\n\t\t\t\t\t\t\t\topts.klick_function( { button_name: $(that).attr('title') } );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\topts.klick_function( { button_name: $(that).text() } );\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\t.error(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\tlog(jqXHR, textStatus, errorThrown);\n\t\t\t\t\t\tif ( typeof opts.error == \"function\" ) {\n\t\t\t\t\t\t\topts.error.call();\n\t\t\t\t\t\t}\n\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\t\t\n\t\tvar that = this;\n\t\n\t\t$.ajax({\n\t\t\t\"type\": \"GET\",\n\t\t\t\"url\": options.url\n\t\t})\n\t\t.success(function(data, textStatus, jqXHR) {\n\t\t\t$(that).html(data);\n\t\t})\n\t\t.error(function(jqXHR, textStatus, errorThrown) {\n\t\t\tlog(\"error\", jqXHR, textStatus, errorThrown);\n\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\"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\t\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\t\n\t\t\t\t\t\t$(\"input\", this).removeClass(\"error\");\n\t\t\t\t\t\t$errorMessage.html('');\n\t\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\t\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.success(\n\t\t\t\t\t\t\t\tfunction (data, textStatus, jqXHR) {\n\t\t\t\t\t\t\t\t\tcookie = readCookie(options.cookiename);\n\t\n\t\t\t\t\t\t\t\t\t$errorMessage.slideUp();\n\t\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\t$(options.idUsername, form).addClass(\"error\");\n\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}\n\t\t\t\t\t\t\t\t\telse {\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(\"logged_in\");\n\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\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\t$(options.idUsername, form).val(\"\");\n\t\t\t\t\t\t\t\t\t\t$(options.idPassword, form).val(\"\");\n\t\t\t\t\t\t\t\t\t\t\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 tracking failed in llLogin()\", 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\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}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.error(\n\t\t\t\t\t\t\t\tfunction (jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\t\t\tlog(\"login failed\", jqXHR, textStatus, errorThrown);\n\n\t\t\t\t\t\t\t\t\tswitch (jqXHR.status) {\n\t\t\t\t\t\t\t\t\t\tcase 403:\n\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\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 409:\n\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\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 410:\n\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\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 500:\n\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\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t$errorMessage.slideDown();\n\t\n\t\t\t\t\t\t\t\t\t$(options.idUsername, form).addClass(\"error\");\n\t\t\t\t\t\t\t\t\t$(options.idPassword, form).addClass(\"error\");\n\t\n\t\t\t\t\t\t\t\t\t$(options.idPassword, form).val(\"\");\n\t\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}\n\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\"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}, 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}\n\t\t\t\telse { // 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.success(\n\t\t\t\t\t\tfunction(data, textStatus, jqXHR) {\n\t\t\t\t\t\t\tcookie = readCookie(options.cookiename);\n\n\t\t\t\t\t\t\t$errorMessage.slideUp();\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tif (cookie === null) {\n\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} else {\n\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$(options.idLoginLayer).text(options.textLogout);\n\t\t\t\t\t\t\t\t\t$(options.idLoginLayer).addClass(\"logged_in\");\n\n\t\t\t\t\t\t\t\t\tif ($(options.idSaveLogin, form).is(':checked')) {\n\t\t\t\t\t\t\t\t\t\tcreateCookieSeconds(\"saveLogin\", \"true\", cookieTimeout);\n\t\t\t\t\t\t\t\t\t} else {\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\tcreateCookieSeconds(\"activityWatch\", \"active\", 3600);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (typeof options.success === \"function\") {\n\t\t\t\t\t\t\t\t\t\toptions.success();\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\ttry {\n\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_gaq.push(['_trackPageview']);\n\t\t\t\t\t\t\t\t\t} catch(e) {\n\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}\n\n\t\t\t\t\t\t\t\t\tif (options.redirectAfterLoginUrl !== \"\") {\n\t\t\t\t\t\t\t\t\t\tself.location.href = options.redirectAfterLoginUrl;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\twindow.location.reload();\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\toptions.urlLogin = LL.defaults.urlLogin;\n\t\t\t\t\t\t\t\t// reinitialize loginBox\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} catch (facebookLoginException) {\n\t\t\t\t\t\t\t\tlog(\"$.fn.llLoginExt\", this, facebookLoginException);\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\t.error(\n\t\t\t\t\t\tfunction(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t\t\tlog(\"login failed\", jqXHR, textStatus, errorThrown);\n\n\t\t\t\t\t\t\tswitch (jqXHR.status) {\n\t\t\t\t\t\t\t\tcase 403:\n\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\tvar url = options.redirectExtLoginNotFoundUrl;\n\t\t\t\t\t\t\t\t\turl += \"?init=true\";\n\t\t\t\t\t\t\t\t\turl += \"&\" + data;\n\t\t\t\t\t\t\t\t\turl += \"&externalServiceName=Facebook\";\n\t\t\t\t\t\t\t\t\turl += \"&externalAccountName=\" + options.facebook_name;\n\t\t\t\t\t\t\t\t\turl += \"&externalAccountLink=\" + options.facebook_link;\n\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//url += \"&username=\" + options.facebook_username;\n\t\t\t\t\t\t\t\t\turl += \"&firstname=\" + options.facebook_firstname;\n\t\t\t\t\t\t\t\t\turl += \"&familyname=\" + options.facebook_lastname;\n\t\t\t\t\t\t\t\t\turl += \"&anrede=\" + options.facebook_gender;\n\n\t\t\t\t\t\t\t\t\tif (options.redirectExtLoginNotFoundUrl !== \"\") {\n\t\t\t\t\t\t\t\t\t\tself.location.href = url;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 409:\n\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\tbreak;\n\t\t\t\t\t\t\t\tcase 410:\n\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\tbreak;\n\t\t\t\t\t\t\t\tcase 500:\n\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\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t$errorMessage.show();\n\n\t\t\t\t\t\t\t$(options.idLoginForm).llLogin(options);\n\t\t\t\t\t\t\t$(options.idLoginLayer).llLoginLayer(options);\n\t\t\t\t\t\t}\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.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(\"logged_in\");\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(\"logged_in\");\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.success(function(data, textStatus, jqXHR) {\n\t\t\t\t\t\t\t\t\tlog(\"succesfully logged out\", data, textStatus, jqXHR);\n\t\t\t\t\t\t\t\t\teraseCookie(\"saveLogin\");\n\t\t\t\t\t\t\t\t\teraseCookie(\"activityWatch\");\n\t\t\t\t\t\t\t\t\tcookie = readCookie(options.cookiename);\n\t\t\t\t\t\t\t\t\tif (cookie === null) {\n\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$(that).removeClass(\"logged_in\");\n\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\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(['_trackPageview', '/anmeldung/overlay']);\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 tracking failed in llLoginLayer()\", e);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\twindow.location.reload();\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(\"logout failed\", jqXHR, textStatus, errorThrown);\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\t\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(['_trackPageview', '/anmeldung/overlay']);\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 tracking failed in llLoginLayer()\", e);\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);\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.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\tif (cookie === null) {\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. 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}\n\t\t\t\t\t\t\t\t\t\telse {\n\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\tlog(\"succesfully logged in\", data, textStatus, jqXHR);\n\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\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$(domObj).text(options.textLogout);\n\t\t\t\t\t\t\t\t\t\t\t$(domObj).addClass(\"logged_in\");\n\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$(\"#layer\").fadeOut();\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 openLoginLayer()\", 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\toptions.postLoginAction();\n\t\t\t\t\t\t\t\t\t\t\tvar timeout = 1000;\n\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\ttimeout = 0;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\twindow.setTimeout(\n\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\tif (options.redirectAfterLoginUrl !== \"\") {\n\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} else {\n\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}\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\ttimeout\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\tLL.actions.klick_anmelden_lightbox_senden_fehler();\n\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$(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\tswitch(jqXHR.status) {\n\t\t\t\t\t\t\t\t\t\tcase 403:\n\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\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 409:\n\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\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 410:\n\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\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 500:\n\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\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\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\t} // if (submit)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\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.llMedSearchPaging = function(opts) {\n\t\tvar options = $.extend({\n\t\t\t\"limit\": 25,\n\t\t\t\"pagingDivId\": \"#medicine_paging\"\n\t\t}, opts);\n\n\t\treturn this.each(function() {\n\t\t\tvar that = this;\n\n\t\t\tvar $list = $(\"ul.list\", this);\n\t\t\tvar $listElements = $(\"ul.list > li\", this);\n\t\t\tvar $paging = $(options.pagingDivId);\n\t\t\tvar activePagingGroupIndex = 0;\n\n\t\t\t// paginate text\n\t\t\tvar listSize = $listElements.size();\n\t\t\tvar pagingGroups = [];\n\t\t\tvar pagingGroupsLength = 0;\n\t\t\tvar pagingGroupIndex = 0;\n\t\t\tvar count = 0;\n\n\t\t\t// break if there ain't enough content for paging\n\t\t\tif (listSize <= options.limit) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$listElements.each(function(index, element) {\n\t\t\t\tvar $element = $(element);\n\n\t\t\t\tif (count >= options.limit) {\n\t\t\t\t\tpagingGroupIndex += 1;\n\t\t\t\t\tcount = 0;\n\t\t\t\t}\n\n\t\t\t\t// open up new paging group if empty\n\t\t\t\tif (count == 0) {\n\t\t\t\t\tpagingGroups[pagingGroupIndex] = $(\"
\");\n\t\t\t\t}\n\n\t\t\t\t// push element into group\n\t\t\t\tpagingGroups[pagingGroupIndex].append($element.clone(true));\n\n\t\t\t\tcount++;\n\t\t\t});\n\n\t\t\tpagingGroupsLength = pagingGroups.length;\n\n\t\t\t// wrap original elements and hide\n\t\t\tvar $original = $(\"
\");\n\t\t\t$original.html($list.html());\n\t\t\t$list.html($original);\n\n\t\t\t// add clones to page\n\t\t\t$(pagingGroups).each(function() {\n\t\t\t\t$list.append(this);\n\t\t\t});\n\n\t\t\t// show first pagingGroup\n\t\t\tpagingGroups[activePagingGroupIndex].show();\n\n\t\t\tvar gotoPage = function() {\n\t\t\t\t$(\".paging_group\", that).hide();\n\t\t\t\tpagingGroups[activePagingGroupIndex].show();\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\t\t\t\tvar gapSetPrevious = false;\n\t\t\t\tvar gapSetAfter = false;\n\n\t\t\t\tpagingSkel.push(\"

\");\n\t\t\t\tpagingSkel.push(\" 0 ? \" prev_active\" : \"\") +\"\\\" href=\\\"#\"+that.id+\"\\\" title=\\\"vorherige Seite\\\">zurück\");\n\t\t\t\tpagingSkel.push(\"\");\n\t\t\t\tfor(var i = 0; i < pagingGroupsLength; i+=1) {\n\t\t\t\t\tif (i < 3 || i >= pagingGroupsLength-3 || i === activePagingGroupIndex-1 || i === activePagingGroupIndex || i === activePagingGroupIndex+1) {\n\t\t\t\t\t\tpagingSkel.push(\"\" + (i+1) + \"\");\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (i < activePagingGroupIndex && gapSetPrevious === false) {\n\t\t\t\t\t\t\tpagingSkel.push(\" ... \");\n\t\t\t\t\t\t\tgapSetPrevious = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i > activePagingGroupIndex && gapSetAfter === false) {\n\t\t\t\t\t\t\tpagingSkel.push(\" ... \");\n\t\t\t\t\t\t\tgapSetAfter = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpagingSkel.push(\"\");\n\t\t\t\tpagingSkel.push(\"nächste Seite\");\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(\".next\")\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\tif (!$(this).hasClass(\"next_active\")) { return; }\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(\".previous\")\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\tif (!$(this).hasClass(\"prev_active\")) { return; }\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(\"a.btn\")\n\t\t\t\t\t.click(function() {\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\t\t});\n\t};\n\n\n\t$.fn.llModExperts = function() {\n\t\t\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 = $(\"\");\n\t\t\t\t\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\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t$dots\n\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\t\t\t\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\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t$dots\n\t\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t\t\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\t\t\t\t\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\t\t\t\t\t\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\t\t\t\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\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) { return; }\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\t\t\t\tvar gapSetPrevious = false;\n\t\t\t\tvar gapSetAfter = false;\n\t\t\t\tvar prevIndex = (activePagingGroupIndex > 0) ? (activePagingGroupIndex - 1) : 0;\n\t\t\t\tvar nextIndex = (activePagingGroupIndex < pagingGroupsLength-1) ? (activePagingGroupIndex + 1) : 0;\n\n\t\t\t\tpagingSkel.push('

');\n\t\t\t\tpagingSkel.push(' 0 ? ' prev_active' : '') + '\" href=\"?page=' + (prevIndex + 1) + '#pagingTop\" title=\"vorherige Seite\">zurück');\n\t\t\t\tpagingSkel.push('');\n\n\t\t\t\tfor (var i = 0; i < pagingGroupsLength; i+=1) {\n\t\t\t\t\tif (i < 3 || i >= pagingGroupsLength-3 || i === activePagingGroupIndex-1 || i === activePagingGroupIndex || i === activePagingGroupIndex+1) {\n\t\t\t\t\t\tpagingSkel.push('' + (i+1) + '');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (i < activePagingGroupIndex && gapSetPrevious === false) {\n\t\t\t\t\t\t\tpagingSkel.push(' ... ');\n\t\t\t\t\t\t\tgapSetPrevious = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i > activePagingGroupIndex && gapSetAfter === false) {\n\t\t\t\t\t\t\tpagingSkel.push(' ... ');\n\t\t\t\t\t\t\tgapSetAfter = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpagingSkel.push('');\n\t\t\t\tpagingSkel.push('nächste Seite');\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\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 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\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\t\t\t\tvar gapSetPrevious = false;\n\t\t\t\tvar gapSetAfter = false;\n\n\t\t\t\tpagingSkel.push(\"

\");\n\t\t\t\tpagingSkel.push(\" 0 ? \" prev_active\" : \"\") +\"\\\" href=\\\"#\\\" title=\\\"vorherige Seite\\\">zurück\");\n\t\t\t\tpagingSkel.push(\"\");\n\t\t\t\tfor(var i = 0; i < pagingGroupsLength; i+=1) {\n\t\t\t\t\tif (i < 3 || i >= pagingGroupsLength-3 || i === activePagingGroupIndex-1 || i === activePagingGroupIndex || i === activePagingGroupIndex+1) {\n\t\t\t\t\t\tpagingSkel.push(\"\" + (i+1) + \"\");\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (i < activePagingGroupIndex && gapSetPrevious === false) {\n\t\t\t\t\t\t\tpagingSkel.push(\" ... \");\n\t\t\t\t\t\t\tgapSetPrevious = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i > activePagingGroupIndex && gapSetAfter === false) {\n\t\t\t\t\t\t\tpagingSkel.push(\" ... \");\n\t\t\t\t\t\t\tgapSetAfter = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpagingSkel.push(\"\");\n\t\t\t\tpagingSkel.push(\"nächste Seite\");\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(\".next\")\n\t\t\t\t\t.click(function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif (!$(this).hasClass(\"next_active\")) { return; }\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(\".previous\")\n\t\t\t\t\t.click(function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif (!$(this).hasClass(\"prev_active\")) { return; }\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(\"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\t\t\n\t\tvar options = $.extend({\n\t\t}, opts);\n\t\t\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.success(function(data, textStatus, jqXHR) {\n\t\t\t\t\t$(\"#\"+widgetDiv).hide();\n\t\t\t\t\t\n\t\t\t\t\t$(\"#\"+widgetDiv+'_r')\n\t\t\t\t\t\t.html(data)\n\t\t\t\t\t\t.show();\n\n\t\t\t\t\t$(\"#\"+widgetDiv+'_r')\n\t\t\t\t\t\t.find(\".close\")\n\t\t\t\t\t\t.live(\"click\", function() {\n\t\t\t\t\t\t\t$(\"#\"+widgetDiv+'_r').hide();\n\t\t\t\t\t\t});\n\n\t\t\t\t\tLL.actions.klick(\"klick_voting_submit\");\n\n\t\t\t\t\treturn false;\n\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});\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n\n\t\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 = $(\".ratingbtn\", this),\n\t\t\t\t$badge = $(\".badge\", this);\n\n\t\t\tfunction updateRating(data) {\n\t\t\t\t$.ajax({\n\t\t\t\t\t\"cache\": false,\n\t\t\t\t\t\"data\": data,\n\t\t\t\t\t\"type\": $form.prop(\"method\"),\n\t\t\t\t\t\"url\": $form.prop(\"action\")\n\t\t\t\t})\n\t\t\t\t.success(function(data, textStatus, jqXHR) {\n\t\t\t\t\t// write respone into badge and show no. of votes\n\t\t\t\t\t$badge.html(data);\n\t\t\t\t})\n\t\t\t\t.error(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\t// error\n\t\t\t\t\tlog(\"$.fn.llRate\", this, jqXHR, textStatus, errorThrown);\n\t\t\t\t});\n\t\t\t}\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\t\t\t\t\t$submit.addClass(\"disabled\");\n\n\t\t\t\t\t// send vote\n\t\t\t\t\tvar data = $(this).serializeArray();\n\t\t\t\t\tupdateRating(data);\n\t\t\t\t});\n\n\t\t\t// init (w/o data)\n\t\t\tupdateRating();\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}\n\t\t\t\telse 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.success(function(data, textStatus, jqXHR) {\n\t\t\t\t\t\tif ( $(data).size() !== 0 ) {\n\t\t\t\t\t\t$layer\n\t\t\t\t\t\t\t.html( data )\n\t\t\t\t\t\t\t.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t$layer\n\t\t\t\t\t\t\t\t.html(\"\")\n\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlayerIndex = undefined;\n\t\t\t\t\t\tsending = false;\n\n\t\t\t\t\t\tif (\tinputLength !== inputLengthSent ) {\n\t\t\t\t\t\t\t$input.trigger(\"keyup\");\n\t\t\t\t\t\t}\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\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\"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 = $(\".list\", 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\t$hl\n\t\t\t\t\t\t.not(this)\n\t\t\t\t\t\t.each(function() {\n\t\t\t\t\t\t\tvar $list = $(this).siblings(\".ilist\");\n\t\t\t\t\t\t\tvar $parent = $(this).closest(\".list\");\n\n\t\t\t\t\t\t\t$list.slideUp(\n\t\t\t\t\t\t\t\toptions.duration,\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t$parent.removeClass(\"active\");\n\t\t\t\t\t\t\t\t});\n\t\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(\".ilist\");\n\t\t\t\t\t\t\tvar $parent = $(this).closest(\".list\");\n\n\t\t\t\t\t\t\t$list.slideDown(\n\t\t\t\t\t\t\t\toptions.duration,\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t$parent.addClass(\"active\");\n\t\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\t\tfunction() {\n\t\t\t\t\t\tif ($(this).next(\".toggle\").is(\":hidden\")) {\n\t\t\t\t\t\t\t// open\n\t\t\t\t\t\t\tif ($(this).closest(\"li\").hasClass(\"fl\")) {\n\t\t\t\t\t\t\t\t$(\".fl.open\", that)\n\t\t\t\t\t\t\t\t\t.removeClass(\"open\")\n\t\t\t\t\t\t\t\t\t.children(\".toggle:first\")\n\t\t\t\t\t\t\t\t\t.slideUp();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t.closest(\"li\")\n\t\t\t\t\t\t\t\t.addClass(\"open\")\n\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.next(\".toggle\")\n\t\t\t\t\t\t\t\t.slideDown();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// close\n\t\t\t\t\t\t\t$(this)\n\t\t\t\t\t\t\t\t.next(\".toggle\")\n\t\t\t\t\t\t\t\t.slideUp()\n\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.closest(\"li\")\n\t\t\t\t\t\t\t\t.removeClass(\"open\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\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 > 24 || y < 0 || y > 35) {\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}\n\t\t\t\t\telse {\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 = 510;\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}\n\t\t\t\telse {\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}\n\t\t\t\telse {\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 <= 250) {\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}\n\t\t\t\t\telse {\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\")) { return false; }\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\n\t$.fn.llTopTopics = function( options ) {\n\t\treturn this.each(function() {\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\"imgWidth\": 520,\n\t\t\t\t\"interval\": 5000,\n\t\t\t\t\"length\": 1,\n\t\t\t\t\"unitWidth\": 364\n\t\t\t}, options);\n\n\t\t\tvar index = 0;\n\t\t\tvar interval;\n\t\t\tvar that = this;\n\t\t\tvar $controls = $(\".prev, .next\", this);\n\t\t\tvar $prev = $(\".prev\", this);\n\t\t\tvar $next = $(\".next\", this);\n\t\t\tvar $sliderImg = $(\".slider_img .slide_cont\", this);\n\t\t\tvar $sliderTxt = $(\".slider_txt .slide_cont\", this);\n\t\t\tvar $txts = $(\".unit\", this);\n\n\t\t\tvar resizeImages = function () {\n\t\t\t\topts.imgWidth = $(that).width();\n\t\t\t\t$(\"img\", $sliderImg).css(\"width\", opts.imgWidth + \"px\");\n\t\t\t\t$sliderImg.css(\"width\", opts.length * opts.imgWidth);\n\t\t\t\t$sliderTxt.css(\"width\", opts.length * opts.unitWidth);\n\t\t\t};\n\n\t\t\tvar resizeControls = function() {\n\t\t\t\tvar height = $txts.eq(index).outerHeight(false);\n\n\t\t\t\t$controls\n\t\t\t\t\t.height(height)\n\t\t\t\t\t.find(\"a\")\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"margin-top\": height / 2 - 18\n\t\t\t\t\t});\n\t\t\t};\n\n\t\t\tvar prev = function() {\n\t\t\t\t// img animation\n\t\t\t\tvar $lastImg = $(\".slider_img .img\", that).last().detach();\n\t\t\t\t$sliderImg\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"left\": \"-\"+opts.imgWidth+\"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);\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.css(\"visibility\", \"hidden\")\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.css(\"visibility\", \"visible\");\n\n\t\t\t\tindex = getIndex(index-1, opts.length);\n\n\t\t\t\tresizeControls();\n\n\t\t\t\treturn false;\n\t\t\t};\n\n\t\t\tvar next = function() {\n\t\t\t\t// img animation\n\t\t\t\t$sliderImg\n\t\t\t\t\t.animate({\n\t\t\t\t\t\t\"left\": \"-=\"+opts.imgWidth+\"px\"\n\t\t\t\t\t},\n\t\t\t\t\topts.slideDuration,\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tvar $firstImg = $(\".slider_img .img\", that).first().detach();\n\t\t\t\t\t\t$sliderImg\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.append($firstImg);\n\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.css(\"visibility\", \"hidden\")\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.css(\"visibility\", \"visible\")\n\t\t\t\t\t.addClass(\"active\");\n\n\t\t\t\tindex = getIndex(index+1, opts.length);\n\n\t\t\t\tresizeControls();\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\t\n\t\t\t$(\"a\", $txts).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\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.setTimeout(function() {\n\t\t\t\t\tnext();\n\t\t\t\t}, options.interval);\n\t\t\t}\n\n\t\t\tresizeImages();\n\n\t\t\tif (opts.length > 1) {\n\t\t\t\tstartInterval();\n\t\t\t\tresizeControls();\n\t\t\t} else {\n\t\t\t\t$controls.hide();\n\t\t\t}\n\n\t\t\t$(window).resize(resizeImages);\n\t\t});\n\t};\n\n\n\t$.fn.llTopTopicsZoom = function( options ) {\n\n\t\tvar opts = $.extend({\n\t\t\t\"fadeDuration\": 1000,\n\t\t\t\"fadeTxtDuration\": 0,\n\t\t\t\"imgWidth\": 520,\n\t\t\t\"interval\": 5000,\n\t\t\t\"length\": 1,\n\t\t\t\"zoomPixel\": 60,\n\t\t\t\"zoomDuration\": 5000\n\t\t}, options);\n\n\t\treturn this.each(function() {\n\t\t\tif (opts.length <= 1) { return; }\n\n\t\t\tvar index = 0;\n\t\t\tvar interval;\n\t\t\tvar steps = Math.round( opts.zoomDuration / 48 );\n\t\t\tvar timeouts = [];\n\t\t\tvar $controls = $(\".prev, .next\", this);\n\t\t\tvar $prev = $(\".prev\", this);\n\t\t\tvar $next = $(\".next\", this);\n\t\t\tvar $imgs = $(\".slider_img .slide_cont .img\", this);\n\t\t\tvar $txts = $(\".slider_txt .unit\", this);\n\n\t\t\tfunction clearTimeouts() {\n\t\t\t\twindow.clearInterval( interval );\n\n\t\t\t\tfor(var t in timeouts) {\n\t\t\t\t\twindow.clearTimeout(timeouts[t]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar resizeControls = function() {\n\t\t\t\tvar height = $txts.eq(index).outerHeight(false);\n\n\t\t\t\t$controls\n\t\t\t\t\t.height(height)\n\t\t\t\t\t.find(\"a\")\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"margin-top\": height / 2 - 18\n\t\t\t\t\t});\n\t\t\t};\n\n\n\t\t\tfunction animateImg( idx ) {\n\t\t\t\t$imgs\n\t\t\t\t\t.not( $imgs.eq(idx) )\n\t\t\t\t\t.fadeOut( opts.fadeDuration );\n\n\t\t\t\t$imgs\n\t\t\t\t\t.eq( idx )\n\t\t\t\t\t.fadeIn( opts.fadeDuration, function() {\n\t\t\t\t\t\t$imgs\n\t\t\t\t\t\t\t.not( $imgs.eq(idx) )\n\t\t\t\t\t\t\t.not( \".img_ad\" )\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\t\"height\": opts.imgWidth,\n\t\t\t\t\t\t\t\t\"top\": -opts.zoomPixel,\n\t\t\t\t\t\t\t\t\"width\": opts.imgWidth\n\t\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\tif ( !$imgs.eq(idx).hasClass(\"img_ad\") ) {\n\t\t\t\t\tfor(var i = 0, timeout = 0; i < 48; i += 1, timeout += steps) {\n\t\t\t\t\t\t(function(timeout, offset) {\n\t\t\t\t\t\t\tvar t = window.setTimeout(function() {\n\t\t\t\t\t\t\t\t$imgs\n\t\t\t\t\t\t\t\t\t.eq( idx )\n\t\t\t\t\t\t\t\t\t.css({\n\t\t\t\t\t\t\t\t\t\t\"height\": \"+=2\",\n\t\t\t\t\t\t\t\t\t\t\"left\": \"-\" + offset + \"px\",\n\t\t\t\t\t\t\t\t\t\t\"top\": \"-\" + (opts.zoomPixel + offset) + \"px\",\n\t\t\t\t\t\t\t\t\t\t\"width\": \"+=2\"\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}, timeout);\n\n\t\t\t\t\t\t\ttimeouts.push( t );\n\t\t\t\t\t\t})(timeout, i);\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\n\t\t\tfunction animateText( idx ) {\n\t\t\t\t$txts\n\t\t\t\t\t.not( $txts.eq(idx) )\n\t\t\t\t\t.css(\"visibility\", \"hidden\");\n\n\t\t\t\tresizeControls();\n\n\t\t\t\t$txts\n\t\t\t\t\t.eq( idx )\n\t\t\t\t\t.css(\"visibility\", \"visible\")\n\t\t\t\t\t.find('a')\n\t\t\t\t\t.bind('click', function() {\n\t\t\t\t\t\ttry{\n\t\t\t\t\t\t\t_gaq.push(['_trackEvent', 'mod_top_topics_zoom', 'Teaser-Überschrift', $(this).attr('title')]);\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\tlog(\"ERROR: Google tracking failed in animateText()\", e);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\n\n\n\t\t\tvar prev = function() {\n\t\t\t\tclearTimeouts();\n\t\t\t\tLL.actions.klick_top_themen_pfeil_zurueck();\n\t\t\t\tindex = getIndex( index - 1, opts.length);\n\t\t\t\tanimateImg(index);\n\t\t\t\tanimateText(index);\n\t\t\t\treturn false;\n\t\t\t};\n\n\t\t\tvar next = function() {\n\t\t\t\tclearTimeouts();\n\t\t\t\tLL.actions.klick_top_themen_pfeil_vor();\n\t\t\t\tindex = getIndex( index + 1, opts.length);\n\t\t\t\tanimateImg(index);\n\t\t\t\tanimateText(index);\n\t\t\t\treturn false;\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(prev)\n\t\t\t\t.show();\n\t\t\t$next\n\t\t\t\t.click(next)\n\t\t\t\t.show();\n\n\n\t\t\tfunction startInterval() {\n\t\t\t\tinterval = window.setInterval(function() {\n\t\t\t\t\tindex = getIndex( index + 1, opts.length );\n\t\t\t\t\tanimateImg(index);\n\t\t\t\t\tanimateText(index);\n\t\t\t\t}, options.interval);\n\t\t\t}\n\n\t\t\tanimateImg( 0 );\n\t\t\tanimateText( 0 );\n\t\t\tstartInterval();\n\t\t});\n\t};\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\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\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\t\t\t.replace(/\\$\\{foreTelling.title\\}/g, zodiacSignsFortelling.title)\n\t\t\t\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\n\t// Social-Media-Leiste -------------------------------------------------------------------------\n\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\tSocialbar.prototype.bindEvents = function() {\n\t\tvar that = this;\n\n\t\t// Bind email button\n\t\t$(\".socialbar__button--email\", this.$rootElement).click(function (e) {\n\t\t\tvar shareUrl = \"mailto:?subject=\" + encodeURIComponent($(this).data(\"subject\")) + \"&body=\" + encodeURIComponent($(this).data(\"body\"));\n\t\t\te.preventDefault();\n\t\t\tvar mail = document.createElement(\"a\");\n\t\t\tmail.href = shareUrl;\n\t\t\tmail.click();\n\t\t});\n\n\t\t// Bind facebook button\n\t\t$(\".socialbar__button--facebook\", this.$rootElement).click(function (e) {\n\t\t\tvar shareUrl = \"https://www.facebook.com/sharer/sharer.php?u=\" + encodeURIComponent($(this).data(\"url\")) + \"&t=\" + encodeURIComponent($(this).data(\"text\"));\n\t\t\te.preventDefault();\n\t\t\twindow.open(shareUrl, \"\", \"toolbar=0, status=0, width=900, height=500\");\n\t\t});\n\t\t\n\t\t// Bind Pinterest button\n\t\t$(\".socialbar__button--pinterest\", this.$rootElement).click(function (e) {\n\t\t\tvar url = encodeURIComponent($(this).data(\"url\"));\n\t\t\tvar media = encodeURIComponent($(this).data(\"media\"));\n\t\t\tvar description = encodeURIComponent($(this).data(\"description\"));\n\t\t\tvar shareUrl = \"http://pinterest.com/pin/create/button/?url=\" + url + \"&media=\" + media + \"&description=\" + description;\n\t\t\te.preventDefault();\n\t\t\twindow.open(shareUrl, \"\", \"toolbar=0, status=0, width=900, height=500\");\n\t\t});\n\n\t\t// Bind Twitter button\n\t\t$(\".socialbar__button--twitter\", this.$rootElement).click(function (e) {\n\t\t\tvar shareUrl = \"https://twitter.com/intent/tweet?text=\" + encodeURIComponent($(this).data(\"text\")) + \"&url=\" + encodeURIComponent($(this).data(\"url\"));\n\t\t\te.preventDefault();\n\t\t\twindow.open(shareUrl, \"\", \"toolbar=0, status=0, width=650, height=360\");\n\t\t});\n\t\t\n\t\t// Bind Whatsapp button\n\t\t$(\".socialbar__button--whatsapp\", this.$rootElement).click(function (e) {\n\t\t\tvar shareText = encodeURIComponent($(this).data(\"text\"));\n\t\t\te.preventDefault();\n\n\t\t\tif (isMobileLayout()) {\n\t\t\t\tdocument.location.href = \"whatsapp://send?text=\" + shareText;\n\t\t\t} else {\n\t\t\t\tvar shareUrl = \"https://web.whatsapp.com/send?text=\" + shareText;\n\t\t\t\twindow.open(shareUrl, \"\", \"toolbar=0, status=0, width=900, height=500\");\n\t\t\t}\n\t\t});\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\t\t\t\t\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}\n\t\t\telse {\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})(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\nvar tinyMceConfig = {\n\tscript_url: tinyMceUrl,\n\tlanguage: \"de\",\n\t//editor_selector : \"wysiwyg\",\n\t//mode: \"specific_textareas\",\n\t//valid_elements: \"b/strong,i/em,img,br,p,p[class],u,span,span[class],div,div[class],a,a[href],a[target]\",\n\t//valid_elements: \"iframe[src][width][height][class][frameborder][title][type][allowfullscreen]\",\n\ttheme: \"advanced\",\n\tplugins: \"emotions,paste,charcount\",\t// ,preview\n\ttheme_advanced_resizing: true,\n\ttheme_advanced_toolbar_location: \"top\",\n\ttheme_advanced_toolbar_align: \"left\",\n\ttheme_advanced_statusbar_location: \"bottom\",\n\ttheme_advanced_resize_horizontal: false,\n\ttheme_advanced_disable: \"anchor,cleanup,removeformat,visualaid,charmap,hr,help,code\",\n\ttheme_advanced_buttons2_add: \"separator,forecolor,separator,sup,sub,pastetext\",\t// ,emotions,backcolor,preview\n\ttheme_advanced_buttons3: \"\",\n\tstyle_formats : [{\n\t\ttitle : \"Zitat\",\n\t\tblock : \"div\",\t// ,p\n\t\tclasses: \"cite\"\n\t}],\n\tconvert_urls : false,\n\tsave_callback: function(fieldId, editorHtml, editorBody) {\n\t\teditorHtml = LL.substituteSmilieShortcuts(editorHtml);\n\t\t// remove all the linefeet to prevent the ForumManager from substitue them with \"
    \"s!\n\t\teditorHtml = editorHtml.replace(/[\\n\\r]/g, \"\");\n\t\t//editorHtml = editorHtml.replace(/javascript/g, \"\");\n\t\treturn editorHtml;\n\t},\n\toninit: function () {\n\t\t//$(\"#melden\").hide();\n\t}\n};\n\nvar tinyMceConfigSignature = $.extend(true, {}, tinyMceConfig);\ntinyMceConfigSignature.theme_advanced_disable = tinyMceConfigSignature.theme_advanced_disable + \",italic\";\n\nvar tinyMCEoff = false;\nif (((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_2\" 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 = $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// Mobile ------------------------------------------------------------------------------------------\n\nfunction getLayoutMode() {\n\tvar device = readCookie(\"device\");\n\n\tif (device === null) {\n\t\treturn \"auto\";\n\t} else if (device === \"desktop\") {\n\t\treturn \"desktop\";\n\t} else {\n\t\treturn \"mobile\";\n\t}\n}\n\nfunction setLayoutMode(mode) {\n\tif (mode === \"auto\") {\n\t\teraseCookie(\"device\");\n\t} else if (mode === \"desktop\") {\n\t\tcreateCookie(\"device\", \"desktop\");\n\t} else if (mode === \"mobile\") {\n\t\tcreateCookie(\"device\", \"mobile\");\n\t}\n}\n\nfunction switchToLayoutMode(mode) {\n\tsetLayoutMode(mode);\n\twindow.location.reload();\n}\n\nfunction switchToDesktopMode() {\n\tswitchToLayoutMode(\"desktop\");\n}\n\nfunction switchToMobileMode() {\n\tswitchToLayoutMode(\"mobile\");\n}\n\nfunction isMobileLayout() {\n\treturn LL.defaults.isMobile;\n}\n\nfunction isLoggedIn() {\n\treturn LL.defaults.isLoggedIn;\n}\n\n// Init after page load ----------------------------------------------------------------------------\n\n$(function() {\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// Lazy loading of images ---------------------------------------------------\n\n\t$(\"img.lazy\").lazyload({\n\t\tthreshold: 300,\n\t\tfailure_limit: 9999999\n\t});\n\n\t// Datepicker ---------------------------------------------------------------\n\n\t$(\".datepicker\").llDatepicker();\n\n\t// Set mobile social bar threshold depending on article length --------------\n\n\t(function() {\n\t\tvar $footer = $(\"#footer\"), threshold;\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\t})();\n\t$(\".socialbar\").socialbar();\n\n\t// Sticky header ---------------------------------------\n\n\t$(\"#masthead, #dl-menu\").each(function () {\n\t\tvar $window = $(window),\n\t\t\t$document = $(document),\n\t\t\t$header = $(this),\n\t\t\thideClass = \"site-header--hidden dl-menuwrapper--hidden\",\n\t\t\tlastScroll = $document.scrollTop(),\n\t\t\tscrollDelta = 0,\n\t\t\tscrollDeltaSum = 0,\n\t\t\tpageScrollTop = 0,\n\t\t\tpauseScrollDetection = false,\n\t\t\tpauseTimeout;\n\n\t\t// Wait until content is loaded and browser scroll events were fired\n\t\t$window.on('load', function () {\n\t\t\tif ($header.outerHeight(true) < $document.scrollTop()) {\n\t\t\t\t$header.addClass(hideClass);\n\t\t\t}\n\n\t\t\t$(document).on('click', 'a', function() {\n\t\t\t\t$header.trigger('pause-scroll-detection');\n\n\t\t\t\tif ($header.outerHeight(true) < $document.scrollTop()) {\n\t\t\t\t\t$header.addClass(hideClass);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$header.on('pause-scroll-detection', function(e, pauseDurationInMs) {\n\t\t\t\twindow.clearTimeout(pauseTimeout);\n\t\t\t\tpauseScrollDetection = true;\n\n\t\t\t\tpauseTimeout = window.setTimeout(function() {\n\t\t\t\t\tpauseScrollDetection = false;\n\t\t\t\t}, pauseDurationInMs || 50);\n\t\t\t});\n\n\t\t\t$window.on('scroll', function () {\n\t\t\t\tif (pauseScrollDetection) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tpageScrollTop = $document.scrollTop();\n\n\t\t\t\tif (pageScrollTop > $header.outerHeight(true)) {\n\t\t\t\t\tif (scrollDeltaSum < -100) {\n\t\t\t\t\t\t$header.removeClass(hideClass);\n\n\t\t\t\t\t}\n\t\t\t\t\telse if (scrollDeltaSum > 100) {\n\t\t\t\t\t\t$header.addClass(hideClass);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Sum up scroll deltas and reset sum on scroll direction change\n\t\t\t\t\tscrollDelta = pageScrollTop - lastScroll;\n\n\t\t\t\t\tif ((scrollDelta < 0 && scrollDeltaSum > 0) || (scrollDelta > 0 && scrollDeltaSum < 0)) {\n\t\t\t\t\t\tscrollDeltaSum = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tscrollDeltaSum += scrollDelta;\n\t\t\t\t\tlastScroll = pageScrollTop;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$header.removeClass(hideClass);\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\t});\n\n\t// Sticky skyscaper ads---------------------------------\n\n\t// Classical layout\n\t(function () {\n\t\tvar $content = $(\".page_inside\");\n\t\tvar $banners = $(\".banner_left--sticky, .banner_right--sticky\");\n\n\t\tfunction refreshBannerStickyClass() {\n\t\t\tvar isSticky = $content[0].getBoundingClientRect().top < 0;\n\t\t\t$banners.toggleClass('fixed', isSticky);\n\t\t}\n\n\t\tif ($content.length && $banners.length) {\n\t\t\t$(window).on('scroll', refreshBannerStickyClass);\n\t\t\trefreshBannerStickyClass();\n\t\t}\n\t})();\n\n\t// Modern layout\n\t(function () {\n\t\tvar $header = $(\".top-header\");\n\t\tvar $banners = $(\".banner_left--sticky, .banner_right--sticky\");\n\n\t\tfunction refreshBannerStickyClass() {\n\t\t\tvar isSticky = $header[0].getBoundingClientRect().top < $header.height() * -1;\n\t\t\t$banners.toggleClass('fixed', isSticky);\n\t\t}\n\n\t\tif ($header.length && $banners.length) {\n\t\t\t$(window).on('scroll', refreshBannerStickyClass);\n\t\t\trefreshBannerStickyClass();\n\t\t}\n\t})();\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$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 = '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\tconst minSlideHeight = 30;\n\t\t\tvar $slidesList = $(\".slick-list\", $gallery);\n\t\t\tif ($slidesList.height() < minSlideHeight) {\n\t\t\t\tvar interval = window.setInterval(function () {\n\t\t\t\t\tslick.setHeight();\n\t\t\t\t\tif ($slidesList.height() > minSlideHeight) {\n\t\t\t\t\t\tclearInterval(interval);\n\t\t\t\t\t}\n\t\t\t\t}, 100);\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 initNotificationEvents() {\n\t\t\t$slick.on('beforeChange', function(){\n\t\t\t\t$(\"#masthead, #dl-menu\").trigger(\"pause-scroll-detection\", 3000);\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\tinitNotificationEvents();\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// 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\tcancelButton: false,\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\tstarHalf: \"star-half\",\n\t\t\t\tstarOff: \"star-empty\",\n\t\t\t\tstarOn: \"star\",\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 = \"Ihre 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// 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).parent().css(\"display\", \"none\");\n\t});\n\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","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_expertise_vor","klick_expertise_zurueck","klick_selftest","loginLayerOptions","cookiename","idUsername","idPassword","idSaveLogin","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","showOn","buttonImage","buttonImageOnly","numberOfMonths","showOptions","direction","stepMonths","option","llDoxter","$links","geolocation","getCurrentPosition","lat","coords","latitude","lon","longitude","$link","llForm","$that","$form","$submitLink","live","$parentForm","closest","serializeArray","llJsonForm","dataString","serialize","llImgZoom","$imgLink","alt","llLayerInject","llGalleryEdit","$input","$selectCount","count","llGalleryView","galleryClass","$gallery","method","positionInnerLayer","$layer","display","visibility","$layerInner","offsetTop","outerHeight","margin-top","closeOnClick","closeLayer","resizeLayer","layerHeight","layerWidth","resize","unbind","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","logoutCallback","domObj","initFacebookLogin","$errorLayerMessage","timeout","isQuestionAsked","$div","login","authResponse","loginExtOptions","id","email","facebook_username","username","link","first_name","last_name","gender","scope","ex","stopPropagation","llMedSearchPaging","limit","pagingDivId","gotoPage","buildPaging","$list","$listElements","activePagingGroupIndex","listSize","pagingGroups","pagingGroupsLength","pagingGroupIndex","$element","clone","$original","$pagingSkel","pagingSkel","gapSetPrevious","gapSetAfter","join","parseInt","llModExperts","$text","$hide","$dots","llPaging","activePageIndex","$article","$articleElements","$paragraphs","autoPaging","charCount","paragraphCount","$lastElement","trim","prevIndex","nextIndex","llTeaserClipPaging","$pages","$thisPage","ll_pollLayer","formData","postUrl","llQuestion","$prev","$lists","listCount","llRate","$submit","$badge","updateRating","prop","llIndexBox","$more","$less","$li","llSearchLayer","defaultValue","layerIndex","sending","blur","clearTimeout","keyup","resultCount","$results","inputLength","keyCode","inputLengthSent","llSelftestAnswers","$answerDesc","llShortcuts","$hl","not","siblings","$parent","llSitemapToggle","children","end","llNavboxToggle","x","pageX","offset","y","pageY","top","llSlideShow","prev","elementCount","elementWidth","prependTo","appendTo","$images","$counter","offsetLeft","margin-left","on","llTabs","$tabs","$tabLinks","llTeaserTab","$teasers","llTopTopics","$controls","$sliderImg","$sliderTxt","$txts","resizeImages","resizeControls","zoom","llTopTopicsZoom","slideDuration","imgWidth","unitWidth","$firstImg","first","detach","$lastImg","clearInterval","last","fadeDuration","fadeTxtDuration","zoomPixel","zoomDuration","steps","timeouts","$imgs","clearTimeouts","t","animateImg","animateText","bind","round","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","Socialbar","rootElement","$rootElement","$window","$document","mobileMaxWidth","mobileScrollThreshold","bindEvents","horoscopeWidget","updateByUsersBirthday","birthday","getFullYear","clicker","cE","sPn","nClicker","sP","shareUrl","encodeURIComponent","mail","createElement","open","shareText","isMobileLayout","isAboveThreshold","socialbar","ajaxSetup","contentType","headers","cache-control","tinyMceConfig","script_url","tinyMceUrl","language","theme","plugins","theme_advanced_resizing","theme_advanced_toolbar_location","theme_advanced_toolbar_align","theme_advanced_statusbar_location","theme_advanced_resize_horizontal","theme_advanced_disable","theme_advanced_buttons2_add","theme_advanced_buttons3","style_formats","block","classes","convert_urls","save_callback","fieldId","editorHtml","editorBody","substituteSmilieShortcuts","oninit","tinyMceConfigSignature","tinyMCEoff","getLayoutMode","device","setLayoutMode","mode","switchToLayoutMode","switchToDesktopMode","switchToMobileMode","originalHtml","removeTinyMce","editorId","tinymce","initTinyMce","config","initFacebookLoginDone","getScript","init","appId","oauth","channelUrl","xfbml","$footer","$content","$banners","$header","refreshBannerStickyClass","isSticky","getBoundingClientRect","toggleClass","lazyload","threshold","failure_limit","scrollDelta","pageScrollTop","pauseTimeout","hideClass","lastScroll","scrollDeltaSum","pauseScrollDetection","pauseDurationInMs","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","refreshAdEvent","$slidesList","refreshInlineSparkAd","$activeAdSlide","$galleryAd","CustomEvent","detail","slot","dispatchEvent","setHeight","$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","toFixed","newScore","cancelButton","half","halfShow","hints","noRatedMsg","starHalf","starOff","starOn","starType","setPrevButtonVisible","visible","dots","slider","isFirstSlide","isBackwards"],"mappings":"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"}