{"version":3,"sources":["scripts.min.js"],"names":["parallax","scroll_top","$$","window","get_scroll_top","$image","$main","set_style","top","height","Element","prototype","matches","selector","this","matchesSelector","msMatchesSelector","webkitMatchesSelector","call","document","embed","svg","g","viewBox","getAttribute","fragment","createDocumentFragment","clone","cloneNode","setAttribute","childNodes","length","appendChild","firstChild","loadreadystatechange","xhr","onreadystatechange","readyState","x","createElement","innerHTML","responseText","s","splice","map","array","querySelector","replace","svg4everybody","oninterval","use","i","$uses","parentNode","test","nodeName","src","$url","split","url_root","url_hash","removeChild","$svgCache","XMLHttpRequest","open","send","push","getElementById","requestAnimationFrame","getElementsByTagName","polyfill","navigator","userAgent","match","setTimeout","_is_document","$node","nodeType","DOCUMENT_NODE","_is_window","_is_array","$obj","Object","toString","_is_input","tagName","_query","context","$nodes","simpleRe","periodRe","slice","substr","getElementsByClassName","querySelectorAll","_get_filtered_nodes","$filtered_nodes","len","toLowerCase","_create_element","html","$div","trim","_get_scroll_offset","left","pageXOffset","pageYOffset","scrollTop","scrollLeft","_get_vendor_property","property","css_prefixes","cap_name","charAt","toUpperCase","orig_name","style","_camel_case_property","all","letter","_get_prefixed_event","type","$types","prefix","$prefixes","_get_event_type_wheel","documentMode","_get_event_type_animatedend","animation","MozAnimation","WebkitAnimation","msAnimation","_get_event_type_transitionend","transition","MozTransition","WebkitTransition","msTransition","_get_event_type","$helpers","_this","is_helper","find","$this","concat","reduce","a","b","indexOf","children","$child_node","$filtered_child_nodes","nextSibling","get_parent","maybe_class","name_only","tag_name","class_name","className","append","j","obj_len","prepend","insertBefore","before","after","remove","remove_children","empty","next_sibling","prev_sibling","previousSibling","get_siblings","$siblings","$children","get_attribute","attribute","value","set_attribute","removeAttribute","set_text","text","textContent","get_text","insert_html","outer","outerHTML","get_html","get_file","$file","filename","filetype","filesize","files","name","size","is_tag","tagname","is_visible","$styles","getComputedStyle","offsetWidth","offsetHeight","display","parentElement","index","element","for_each","callback","is_checked","checked","add_class","trimmed_classes","classes","$selector","updated","String","selector_len","sort","join","remove_class","has_class","classList","contains","focus","click","property_camel_case","property_vendor","hasOwnProperty","get_style","getPropertyValue","set_data","key","get_data","get_width","width","documentElement","clientWidth","Math","max","body","scrollWidth","get_height","clientHeight","scrollHeight","get_offset_top","offsetTop","offsetParent","get_offset_left","offsetLeft","get_scroll_left","scroll_left","set_value","get_value","add_event","listener","event_listener","event","types_len","addEventListener","load_script","url","$head","$script","random","onload","get","$ajax","status","set_hash","hash","history","replaceState","location","pathname","title","merge_objects","$obj1","$obj2","constructor","scroll_to","to","duration","diff","step","scrollBy","abs","get_touch_range","dist_x","dist_y","degrees","theta","atan2","PI","floor","is_top","is_right","is_bottom","is_left","_find","needle","$html","device","iphone","ipod","ipad","ios","android","android_phone","android_tablet","windows","windows_phone","windows_tablet","mobile","tablet","add","_has_css_property","css_property_found","prefixes","support","touch","msMaxTouchPoints","Prefetch","$prefetch_link","_$prefetch_link","_$options","init","_prefetch","_prerender","$link","$prefetch_links","$links","target","$button","$buttons","keyCode","FocusMethod","focus_method","last_focus_method","_on_key_down","bind","passive","_on_mouse_down","_on_touch_start","_on_focus","_on_blur","_on_window_blur","$cookie_banner","$body","$close","now","Date","getTime","storage","sessionStorage","getItem","domain","preventDefault","setItem","$cookie_spacing","$footer","paddingBottom","$email","$emails","$phone_numbers","$vards","$downloads","$whatsapp_links","$facebook_links","$twitter_links","$twitter_shares","$facebook_shares","$onlinetools","y","ga","$phone_number","$vard","$whatsapp","k","console","log","$download","$facebook_link","v","$facebook_share","o","$twitter_link","w","$twitter_share","d","$onlinetool","q","href","SeoHighlightKeywords","$article","current_url","previous_url","referrer","keyword","_get_keyword","regex","RegExp","keywords","decodeURIComponent","Tooltip","$tooltip_wrapper","$tooltip","_temp_disabled","_perm_disabled","_focused","tooltip_id","$tooltip_trigger","_check_tooltip","_hide_tooltip","_keyboard_nav","_show_tooltip","disabled","stopPropagation","$tooltip_wrappers","_get_offset_top","$target","top_position","_remove_highlight_class","$highlighted_target","has_animationend_event","_scroll_to","offset","$callback","interval","setInterval","clearInterval","_auto_scroll","parameter","search","localStorage","clear","scrollTo","offset_top","SmoothScroll","_click_link","_change_select","$parameter","$hash","options","selectedIndex","DropdownMenu","$dropdown_menu","id","$main_menuitems","$sub_menuitems","$main_menuitems_with_sub_menu","main_menu_index","event_type","$key","tab","enter","escape","space","arrow_left","arrow_up","arrow_right","arrow_down","_init_accessibility","_init_keyboard","$main_menuitem","$li","_on_mouseenter_main_menuitem","_on_mouseover_main_menuitem","_on_mouseout_main_menuitem","_on_focus_main_menuitem","_on_keydown_main_menuitem","$sub_menuitem","_on_keydown_sub_menuitem","_get_main_menuitem_index","$sub_menu","nextElementSibling","shiftKey","_close_sub_menus","_open_sub_menu","sub_menu_is_open","_close_sub_menu","_focus_prev_main_menuitem","_focus_prev_menuitem","_focus_next_main_menuitem","Array","activeElement","clearTimeout","close_sub_menu_timeout","sub_menu_index","_focus_prev_sub_menuitem","_focus_next_sub_menuitem","focus_last_sub_menuitem","is_current_menuitem","OffCanvasMenuAccordion","$toggle_offcanvas_menu","controls","$main_menuitem_with_sub_menu","_on_click_main_menuitem","_window_size_changed","$element","$main_menuitem_selected","OffCanvasMenu","$offcanvas_menu","$focus_elements","focus_element","$offcanvas_menu_state","_focus_element_with_shift_tab_key","_focus_element_with_tab_key","tab_index","$focus_element","_toggle_sub_menus","is_active_menuitem","$parent_menuitems","_get_parent_menu_elements","toggle","$findings","False","OffCanvasMenuOpener","$open_offcanvas_menu","$close_offcanvas_menu","$english_menu_items","_toggle_menu","_open_menu","_close_menu","_scroll_to_top","$anchor","FormHelpers","$el","_file_upload","_select","$file_name","$file_button","$select","$option","FormValidation","$form","_$form","_$inputs","_$inputs_checkbox","_$selects","_$button","_$error_msg_button","inputs_len","$input","_input_keyup","_input_blur","inputs_checkbox_len","$input_checkbox","_input_checkbox_click","_input_checkbox_keyup","_input_checkbox_blur","selects_len","_select_change","_select_blur","_submit","_check_submit_status","_validate_input","$error_warning","min","parseInt","pattern","regexp","_validate_input_file","required","_validate_input_checkbox","_validate_select","$wrapper","error_msg_button_id","enable_submit_button","_show_first_error","$first_input_error","$forms","$secure_targets","$secure_target","$location_data","$locations_data","FormCache","_form_name","_$cache","_init_events","_restore_cache","_save_cache","_reset_cache","JSON","stringify","$cache","parse","is_valid","removeItem","_get_style","_set_style","FormTextareaAutogrow","$textarea","default_height","line_height","padding_bottom","padding_top","_set_textarea_height","$lines","$textareas","FormUrlParameters","_get_url_parameters","$parameters","_set_inputs_value","$inputs","$pair","selected_select","_checked_input_radio","defaultChecked","defaultValue","$options","defaultSelected","FormSearchDataList","$search","$submit","datalist","list","datalist_loaded","datalist_inserted","_focus","_get_datalist","_get_url","$datalist","_get_sorted_datalist","_create_datalist","$a","$b","a_value","b_value","$datalist_entry","label","FormSearch","$input_search","_on_input","FormSearchBox","$toggle_search_box","$open_search_box","$close_search_box_1","$search_box_state","$search_box","$search_button","$close_search_box_2","_toggle","_open","_close","ImageGallery","$images","$overlay","$slider","$previous","$next","_current_index","_touch_flag","_init_animations","_init_mouse","_init_touch","_overlay_transtion_end","_bounce_animation_end","_show_previous_image","_show_next_image","_hide_overlay","_touch_start_x","changedTouches","pageX","_touch_start_y","pageY","touches","touch_x","touch_y","_prepare_overlay","_show_overlay","gallery","_current_gallery","$full_images","$current_images","$full_image","_load_image","_preload_previous_image","_preload_next_image","_update_offset","transform","webkitTransform","$figure","image_source","image_description","$spinner","$figcaption","AnimationHelpers","$animated_element","_$animated_element","_offset","$show_animation","_is_in_viewport","_offset_top","_remove_scroll_event","removeEventListener","$animated_elements","scrolled_down","_$header_pos","_$nav_height","_$main","_is_scrolled_down","paddingTop","VpiDiagram","$vpi_diagram","$grid","$grid_text","$grid_points","$months","$legend","$year_label","$select_year","$switch_view","$infolist_section","$output","svg_namespace","$months_and_values","$legend_text","bounds","timer","_get_data_for_year","_year_changed","_year_selected_by_user","_switch_view","_display_months_two_row","getBBox","setAttributeNS","_calc_grid_bounds","_change_grid","_change_months_label","_change_lines","_change_points","_change_legend","_change_year_label","_change_table_view","year","$table","innerText","month","parseFloat","avg","middle","_calc_x_coordinate","array_position","_calc_y_coordinate","toFixed","$old_texts","$svg_text","createElementNS","createTextNode","$old_circles","$svg_circle","x_coordinate","y_coordinate","_change_output","$old_lines","$svg_line","$label","getBoundingClientRect","$show_more_content","content_id","$content","$share_button","innerHeight","innerWidth","$vcards","$vcard","ChartOrganigram","chart_data","table","google","visualization","DataTable","chart","OrgChart","draw_chart","addColumn","addRows","draw","nodeClass","selectedNodeClass","chart_organigram","Slider","$slider_wrapper","$slides","$prev","time","intervall","touch_start_x","stop_on_hover","_next_slide","_set_height","_prev_slide","_slide","WebkitTransform","msTransform","_manage_control","highest","$sliders","_extend","merge","obj","prop","deep","$extended","arguments","GoogleMaps","data_id","map_is_ready","_infowindow_is_open","static_map_urls","max_zoom","min_zoom","map_type","direction_color","_latlng_loaded","timeout","mapdata","undefined","latlng","_init_map","_geocoder_response","$mapdata","street_address","postal_code","locality","country","$geocoder","geocode","address","$results","maps","GeocoderStatus","OK","geometry","latitude","lat","longitude","lng","OVER_QUERY_LIMIT","Geocoder","LatLng","$map","Map","center","mapTypeId","MapTypeId","scrollwheel","zoom","disableDefaultUI","disable_default_ui","styles","map_style","zoomControlOptions","position","ControlPosition","TOP_RIGHT","mapTypeControlOptions","TOP_LEFT","streetViewControlOptions","$bounds","LatLngBounds","_init_infowindow","_change_travel_mode","_set_markers","_init_directions","_limit_zoomlevel","_init_autoselect","_init_static_maps","map_resize","debug","addDomListener","getCenter","_$infowindow","InfoWindow","maxWidth","addListener","close","$travel_mode","marker_href","marker_width","marker_height","infowindow","_remove_duplicated_markers","$marker","Marker","Animation","DROP","clickable","icon","scaledSize","Size","optimized","zIndex","open_infowindow","getZIndex","extend","fitBounds","addListenerOnce","getZoom","setZoom","_remove_all_markers","$original_map_data","original_infowindow","$latlng","$duplicates","_clean_map","$polylines","setMap","$static_maps","len_i","_update_static_maps","paths","daddr","$direction","$panel_wrapper","$panel_title","$panel","$directions_service","DirectionsService","$saddr","$daddr","travel_mode","directionsmode","destination","saddr","$input_error","DirectionsTravelMode","DRIVING","TRANSIT","BICYCLING","WALKING","route","origin","travelMode","$result","DirectionsStatus","$polyline","$route","routes","$legs","legs","$steps","steps","warnings","distance_text","duration_text","static_paths","template","$route_bounds","distance","start_address","steps_len","instructions","start_location","Polyline","path","strokeColor","strokeOpacity","strokeWeight","end_address","copyrights","$start_marker","start_marker_href","start_marker_width","start_marker_height","mapdata_len","setVisible","_google_analytics_tracking","has_google_analytics","show_marker","_get_current_index","panTo","_$infowindow_mapdata","setContent","trigger","setCenter","$google_maps_data","Accordion","$accordion","$tab","anchor","one_tab_open","_setup_accordion","_open_tabpanel","_toggle_tabpanel","_on_resize","_close_tabpanel","$tabpanel","_get_tabpanel","maxHeight","max_height","13","32","35","36","37","38","39","40","_change_focused_tab","$accordions","viewport_height","_load_images","load","_window_scroll","_window_resize","LazyLoad","$spin","loaded","is_loaded","img_src","_get_src","_load_img","_load_background_img","$src","src_length","ratio","round","devicePixelRatio","substring","$img","background-image","lazy_load","_create_popup","zms_common","html_len","$popup","$iframe","_close_popup","which","OnlinetoolPopup","SlideInElement","$slidein_element","$slidein_container","$close_button","$order_button","slidein_id","no_cookie_found","$start_countdown","start_countdown","set_cookie","close_element","timestamp","start","progress","_show_slide_in","cancelAnimationFrame","_self","$slide_ins","auto","auto_stop","start_slide","active_count","class_slide","class_nav","class_next","class_prev","class_pagination","$navigation","$navigation_next","$navigation_prev","$pagination","slides","end_slide","slider_run","is_animated","_auto_slide","_init_navigation","_init_pagination","_update_slides","_is_animated","stop","next","prev","set_active","_init_touch_navigation","$window","start_x","start_y","$range","direction","_update_pagination","_update_classes","index_next","index_end","count","count_index","slider","ua","HTMLPictureElement","$1","dummySrc","fixRespimg","img","source","sizes","picture","firstElementChild","_pfLastSize","findPictureImgs","imgs","onResize","mq","matchMedia","srcset","isSpace","c","detectTypeSupport","typeUri","image","Image","onerror","types","picturefill","updateMetrics","isVwDirty","DPR","cssCache","sizeLengthCache","pf","units","docElem","vw","vh","evalId","em","getEmValue","rem","chooseLowRes","lowerValue","higherValue","dprValue","isCached","bonusFactor","tooMuch","bonus","meanDensity","cfg","algorithm","pow","sqrt","applyBestCandidate","srcSetCandidates","matchingSet","getSet","evaluated","setRes","applySetCandidate","ns","evaled","ascendingSort","res","setSrcToCur","set","candidate","sets","getCandidateForSrc","makeUrl","curSrc","curCan","setResolution","candidates","parseSet","getAllSourceElements","sources","media","parseSrcset","input","collectCharacters","regEx","chars","exec","pos","parseDescriptors","h","desc","lastChar","intVal","floatVal","pError","descriptors","regexNonNegativeInteger","regexFloatingPoint","has1x","tokenize","regexLeadingSpaces","currentDescriptor","state","inputLength","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","parseSizes","strValue","parseComponentValues","str","pushComponent","component","componentArray","pushComponentArray","listArray","chrctr","parenDepth","inComment","isValidNonNegativeSourceSizeValue","regexCssLengthWithUnits","regexCssCalc","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","pop","matchesMedia","warn","eminpx","alwaysCheckWDescriptor","isSupportTestReady","noop","getImgAttr","setImgAttr","removeImgAttr","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","baseStyle","fsCss","px","in","alreadyRun","on","evt","fn","capture","attachEvent","memoize","cache","evalCSS","regLength","args","string","buildStr","css","parsedLength","Function","e","sizesattr","cWidth","calcListLength","opt","elements","plen","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","message","implementation","hasFeature","supSrcset","supSizes","supPicture","image2","complete","width2","width1","u","setSize","mMQ","apply","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","div","originalHTMLCSS","cssText","originalBodyCSS","sourceSizeListStr","uT","winningLength","bestCandidate","candidateSrc","abortCurSrc","imageData","dpr","cached","setSrc","origWidth","parseSets","parent","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","supported","parsed","extreme","isDomReady","regReady","run","timerId","fillImgs","debounce","func","wait","later","last","lastClientWidth","_","shift","module","exports","define","amd","calcNumbers","end","range","current","stepTime","$scroll_point","values","already_animated","window_height","onscroll","posY","$top_link"],"mappings":"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","file":"scripts.min.js","sourcesContent":["// MATCHES\n// Support für IE 9+, Edge und Android bis Version 4.4.4\n// -------------------------------------------------------------------------------------------------\n\n(function() {\n if (!Element.prototype.matches) {\n var matches = function(selector) {\n return (this.matchesSelector || this.msMatchesSelector || this.webkitMatchesSelector).call(this, selector);\n };\n\n Element.prototype.matches = matches;\n }\n})();\n\n\n// SVG4EVERYBODY\n// SVG-Support für alle IE-Versionen\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n /* jshint nocomma: false */\n\n function embed(svg, g) {\n if (g) {\n var viewBox = !svg.getAttribute('viewBox') && g.getAttribute('viewBox'),\n fragment = document.createDocumentFragment(), clone = g.cloneNode(!0);\n\n for (viewBox && svg.setAttribute('viewBox', viewBox); clone.childNodes.length;) {\n fragment.appendChild(clone.firstChild);\n }\n\n svg.appendChild(fragment);\n }\n }\n\n function loadreadystatechange(xhr) {\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n var x = document.createElement('x');\n\n x.innerHTML = xhr.responseText, xhr.s.splice(0).map(function(array) {\n embed(array[0], x.querySelector('#' + array[1].replace(/(\\W)/g, '\\\\$1')));\n });\n }\n }, xhr.onreadystatechange();\n }\n\n function svg4everybody() {\n var $uses = document.getElementsByTagName('use'),\n polyfill = /\\bFirefox\\b|\\bEdge\\b|\\bTrident\\/[567]\\b|\\bVersion\\/7.0 Safari\\b/.test(navigator.userAgent) || (navigator.userAgent.match(/AppleWebKit\\/(\\d+)/) || [])[1] < 537,\n requestAnimationFrame = window.requestAnimationFrame || setTimeout,\n $svgCache = {};\n\n function oninterval() {\n for (var use, svg, i = 0; i < $uses.length;) {\n if (use = $uses[i], svg = use.parentNode, svg && /svg/i.test(svg.nodeName)) {\n var src = use.getAttribute('xlink:href'),\n $url = src.split('#'),\n url_root = $url[0],\n url_hash = $url[1];\n\n if (svg.removeChild(use), url_root.length) {\n var xhr = $svgCache[url_root] = $svgCache[url_root] || new XMLHttpRequest();\n xhr.s || (xhr.s = [], xhr.open('GET', url_root), xhr.send()), xhr.s.push([ svg, url_hash ]),\n loadreadystatechange(xhr);\n }\n else {\n embed(svg, document.getElementById(url_hash));\n }\n } else {\n i += 1;\n }\n }\n requestAnimationFrame(oninterval, 17);\n }\n\n if (polyfill) {\n oninterval();\n }\n }\n\n svg4everybody();\n}(document, window));\n\n// HELPERS\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n var $helpers,\n $$;\n\n // Interne Funktion\n\n function _is_document($node) {\n return $node !== null && $node.nodeType === $node.DOCUMENT_NODE;\n }\n\n function _is_window($node) {\n return $node !== null && $node === window;\n }\n\n function _is_array($obj) {\n return Object.prototype.toString.call($obj) === '[object Array]';\n }\n\n function _is_input($node) {\n return $node.tagName === 'INPUT' ||\n $node.tagName === 'SELECT' ||\n $node.tagName === 'TEXTAREA';\n }\n\n function _query(selector, context) {\n var simpleRe = /^(#?[\\w-]+|\\.[\\w-.]+)$/,\n periodRe = /\\./g,\n slice = [].slice,\n $nodes;\n\n if (simpleRe.test(selector)) {\n switch(selector[0]) {\n case '#':\n $nodes = context.getElementById(selector.substr(1));\n break;\n case '.':\n $nodes = slice.call(context.getElementsByClassName(selector.substr(1).replace(periodRe, ' ')));\n break;\n default:\n $nodes = slice.call(context.getElementsByTagName(selector));\n }\n }\n else {\n $nodes = slice.call(context.querySelectorAll(selector));\n }\n\n return $nodes ? (_is_array($nodes) ? $nodes : [$nodes]) : [];\n }\n\n function _get_filtered_nodes($nodes, selector) {\n var $filtered_nodes = [];\n\n for (var i = 0, len = $nodes.length; $nodes !== null && (i < len); i++) {\n if ($nodes[i].nodeType === 1) {\n if (typeof selector === 'undefined') {\n $filtered_nodes.push($nodes[i]);\n }\n else if($nodes[i].tagName.toLowerCase() === selector) {\n $filtered_nodes.push($nodes[i]);\n }\n }\n }\n\n return $filtered_nodes;\n }\n\n function _create_element(html) {\n var $div = document.createElement('div');\n\n $div.innerHTML = html.trim(); // textContent/nodeValue funktionieren hier nicht,\n // Bug bei Popups: http://stackoverflow.com/a/25896886\n\n return _get_filtered_nodes($div.childNodes);\n }\n\n function _get_scroll_offset($node) {\n var top,\n left;\n\n if (_is_window($node)) {\n if (window.pageXOffset !== null) {\n top = window.pageYOffset;\n left = window.pageXOffset;\n }\n }\n else {\n top = $node.scrollTop;\n left = $node.scrollLeft;\n }\n\n return {\n top : top,\n left : left\n };\n }\n\n function _get_vendor_property(property) {\n var css_prefixes = ['Moz', 'ms', 'Webkit'],\n $div = document.createElement('div');\n\n if (property in $div) {\n return property;\n }\n\n var cap_name = property.charAt(0).toUpperCase() + property.slice(1),\n orig_name = property;\n\n for (var i = css_prefixes.length; i > 0; i--) {\n property = css_prefixes[i] + cap_name;\n\n if (property in $div.style) {\n return property;\n }\n }\n\n return orig_name;\n }\n\n function _camel_case_property(property) {\n return property.replace(/-([\\da-z])/gi, function(all, letter) {\n return letter.toUpperCase();\n });\n }\n\n function _get_prefixed_event(type, $types) {\n var $div = document.createElement('div').style,\n $prefixes = ['', 'Moz', 'ms', 'Webkit'],\n prefix;\n\n for (var i = 0, len = $prefixes.length; i < len; i++) {\n prefix = $prefixes[i] + type.charAt(0).toUpperCase() + type.substr(1, type.length - 4);\n\n if (prefix in $div) {\n return $types[prefix];\n }\n }\n\n return type;\n }\n\n function _get_event_type_wheel(type) {\n return type === 'wheel' ? 'onwheel' in document || document.documentMode >= 9 ? 'wheel' : 'mousewheel' : type;\n }\n\n function _get_event_type_animatedend(type) {\n return _get_prefixed_event(type, {\n 'animation' : 'animationend',\n 'MozAnimation' : 'animationend',\n 'WebkitAnimation' : 'webkitAnimationEnd',\n 'msAnimation' : 'MSAnimationEnd'\n });\n }\n\n function _get_event_type_transitionend(type) {\n return _get_prefixed_event(type, {\n 'transition' : 'transitionend',\n 'MozTransition' : 'transitionend',\n 'WebkitTransition' : 'webkitTransitionEnd',\n 'msTransition' : 'MSTransitionEnd'\n });\n }\n\n function _get_event_type(type) {\n type = _get_event_type_animatedend(type) || _get_event_type_transitionend(type);\n type = _get_event_type_wheel(type);\n\n return type;\n }\n\n // Erstellt Helpers Object\n\n $$ = function(selector, context) {\n context = context || document;\n return new $helpers(selector, context);\n };\n\n $helpers = function(selector, context) {\n var _this = this,\n $nodes = [];\n\n if (selector) {\n if (typeof selector === 'string') {\n selector = selector.trim();\n\n if (/<[a-z][\\s\\S]*>/i.test(selector)) {\n $nodes = _create_element(selector);\n }\n else {\n $nodes = _query(selector, context);\n }\n }\n else if (_is_array(selector)) {\n $nodes = selector;\n }\n else {\n $nodes = [selector];\n }\n }\n\n for (var i = 0, len = $nodes.length; i < len; i++) {\n _this[i] = $nodes[i];\n }\n\n _this.length = $nodes.length;\n\n return _this;\n };\n\n // Helpers API\n\n $helpers.prototype = {\n is_helper: true,\n\n find: function(selector) {\n var $this = this,\n $nodes = [],\n context;\n\n if ($this.length !== 0) {\n if ($this.length === 1) {\n $nodes = _query(selector, $this[0]);\n }\n else {\n for (var i = 0, len = $this.length; i < len; i++) {\n $nodes = $nodes.concat(\n _query(selector, $this[i])\n );\n }\n\n $nodes = $nodes.reduce(function(a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n\n return a;\n }, []);\n }\n }\n\n return $$($nodes, context);\n },\n\n children: function(selector) {\n var $this = this,\n $filtered_child_nodes = [],\n $child_node;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n $child_node = this[i].firstChild;\n\n while ($child_node) {\n if ($child_node.nodeType === 1 && $child_node.matches(selector)) {\n $filtered_child_nodes.push($child_node);\n }\n\n $child_node = $child_node.nextSibling;\n }\n }\n\n return $$($filtered_child_nodes);\n },\n\n get_parent: function(selector) {\n var $this = this,\n maybe_class,\n name_only,\n tag_name,\n class_name,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n\n if (typeof selector !== 'undefined') {\n maybe_class = selector[0] === '.';\n name_only = maybe_class ? selector.slice(1) : selector;\n tag_name = name_only.toUpperCase();\n }\n\n do {\n $obj = $obj.parentNode;\n class_name = (' ' + $obj.className + ' ').replace(/[\\t\\r\\n\\f]/g, ' ');\n\n if ((typeof selector === 'undefined' && $obj.nodeType === 1) ||\n (maybe_class && class_name.indexOf(' ' + name_only + ' ') > -1) ||\n $obj.tagName === tag_name) {\n\n return $$($obj);\n }\n }\n while ($obj && $obj.nodeType !== 9);\n }\n },\n\n append: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].appendChild($obj[j]);\n }\n }\n },\n\n prepend: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].insertBefore($obj[j], $this[i].childNodes[0]);\n }\n }\n },\n\n before: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].parentNode.insertBefore($obj[j], $this[i]);\n }\n }\n },\n\n after: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].parentNode.insertBefore($obj[j], $this[i].nextSibling);\n }\n }\n },\n\n remove: function() {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n $this[i].parentNode.removeChild($this[i]);\n }\n },\n\n remove_children: function() {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n while ($this[i].firstChild) {\n $this[i].removeChild($this[i].firstChild);\n }\n }\n },\n\n empty: function() {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n while ($this[i].firstChild) {\n $this[i].removeChild($this[i].firstChild);\n }\n }\n },\n\n clone: function() {\n var $this = this;\n\n if ($this.length === 1) {\n return $$($this[0].cloneNode(true));\n }\n },\n\n next_sibling: function() {\n var $this = this;\n\n if ($this.length === 1) {\n var $obj = $this[0];\n\n do {\n $obj = $obj.nextSibling;\n }\n while ($obj && $obj.nodeType !== 1);\n\n return $$($obj);\n }\n },\n\n prev_sibling: function() {\n var $this = this;\n\n if ($this.length === 1) {\n var $obj = $this[0];\n\n do {\n $obj = $obj.previousSibling;\n }\n while ($obj && $obj.nodeType !== 1);\n\n return $$($obj);\n }\n },\n\n get_siblings: function() {\n var $this = this,\n $siblings = [];\n\n if ($this.length === 1) {\n var $obj = $this[0],\n $children = $obj.parentNode.children;\n\n for (var i = 0, len = $children.length; i < len; i++) {\n if ($children[i].nodeType === 1 && $children[i] !== $obj) {\n $siblings.push($children[i]);\n }\n }\n }\n\n return $$($siblings);\n },\n\n get_attribute: function(attribute) {\n var $this = this,\n value = null;\n\n if ($this.length === 1) {\n if (_is_input($this[0]) && attribute === 'value') {\n value = $this[0][attribute];\n }\n else {\n value = $this[0].getAttribute(attribute);\n }\n }\n\n return value === null ? '' : value;\n },\n\n set_attribute: function(attribute, value) {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n if (_is_input($this[i]) && attribute === 'value') {\n $this[i][attribute] = value;\n }\n else if (value) {\n $this[i].setAttribute(attribute, value);\n }\n else {\n $this[i].removeAttribute(attribute);\n }\n }\n },\n\n set_text: function(text) {\n var $this = this;\n\n if ($this.length === 1) {\n $this[0].textContent = text.toString().trim();\n }\n },\n\n get_text: function() {\n var $this = this,\n text = '';\n\n if ($this.length === 1) {\n text = $this[0].textContent.trim();\n }\n\n return text;\n },\n\n insert_html: function(html, outer) {\n var $this = this;\n\n if ($this.length === 1) {\n if (outer === true) {\n $this[0].outerHTML = html;\n }\n else {\n $this[0].innerHTML = html;\n }\n }\n },\n\n get_html: function(outer) {\n var $this = this,\n html = '';\n\n if ($this.length === 1) {\n if (outer === true) {\n html = $this[0].outerHTML;\n }\n else {\n html = $this[0].innerHTML;\n }\n }\n\n return html.trim();\n },\n\n get_file: function() {\n var $this = this,\n filename = '',\n filetype = '',\n filesize = 0,\n $file;\n\n if ($this.length === 1) {\n $file = $this[0].files;\n\n if ($file.length) {\n filename = $file[0].name;\n filesize = $file[0].size;\n filetype = $file[0].type;\n }\n }\n\n return {\n 'filename' : filename,\n 'filesize' : filesize,\n 'filetype' : filetype\n };\n },\n\n is_tag: function(tagname) {\n var $this = this,\n is_tag = false;\n\n if ($this.length === 1) {\n is_tag = $this[0].tagName.toLowerCase() === tagname;\n }\n\n return is_tag;\n },\n\n is_visible: function() {\n var $this = this,\n is_visible = false,\n $styles,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n is_visible = true;\n\n while ($obj && $obj.nodeType !== 9) {\n $styles = window.getComputedStyle($obj, null);\n\n if ($obj.offsetWidth === 0 &&\n $obj.offsetHeight === 0 &&\n $styles.display === 'none') {\n\n is_visible = false;\n break;\n }\n\n $obj = $obj.parentElement;\n }\n }\n\n return is_visible;\n },\n\n index: function(element) {\n var $this = this;\n\n if (typeof element === 'object') {\n for (var i = 0, len = $this.length; i < len; i++) {\n if ($this[i] === element) {\n return i;\n }\n }\n }\n else if (typeof element === 'number') {\n if (element === -1) {\n element = $this.length - 1;\n }\n\n return $$($this[element]);\n }\n },\n\n for_each: function(callback) {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n callback.call($this[i], i);\n }\n },\n\n is_checked: function() {\n var $this = this,\n is_checked = false;\n\n if ($this.length === 1) {\n is_checked = $this[0].checked;\n }\n\n return is_checked;\n },\n\n add_class: function(selector) {\n var $this = this,\n $selector = selector.split(' '),\n updated = false,\n trimmed_classes,\n classes;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n trimmed_classes = String.prototype.trim.call($this[i].getAttribute('class') || '');\n classes = trimmed_classes ? trimmed_classes.split(/\\s+/) : [];\n\n for (var j = 0, selector_len = $selector.length; j < selector_len; j++) {\n if (classes.indexOf($selector[j]) === -1) {\n classes.push($selector[j]);\n updated = true;\n }\n }\n\n if (updated) {\n $this[i].setAttribute('class', classes.sort().join(' '));\n updated = false;\n }\n }\n },\n\n remove_class: function(selector) {\n var $this = this,\n $selector = selector.split(' '),\n updated = false,\n trimmed_classes,\n classes,\n index;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n trimmed_classes = String.prototype.trim.call($this[i].getAttribute('class') || '');\n classes = trimmed_classes ? trimmed_classes.split(/\\s+/) : [];\n\n for (var j = 0, selector_len = $selector.length; j < selector_len; j++) {\n index = classes.indexOf($selector[j]);\n\n if (index > -1) {\n classes.splice(index, 1);\n updated = true;\n }\n }\n\n if (updated) {\n if (classes.length) {\n $this[i].setAttribute('class', classes.sort().join(' '));\n }\n else {\n $this[i].removeAttribute('class');\n }\n updated = false;\n }\n }\n },\n\n has_class: function(selector) {\n var $this = this,\n has_class = false;\n\n if ($this.length === 1) {\n has_class = $this[0].classList.contains(selector);\n }\n\n return has_class;\n },\n\n focus: function() {\n var $this = this;\n\n if ($this.length) {\n $this[0].focus();\n }\n },\n\n click: function() {\n var $this = this;\n\n if ($this.length) {\n $this[0].click();\n }\n },\n\n set_style: function($styles) {\n var $this = this,\n property_camel_case,\n property_vendor;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var property in $styles) {\n if ($styles.hasOwnProperty(property)) {\n property_camel_case = _camel_case_property(property);\n property_vendor = _get_vendor_property(property_camel_case);\n\n $this[i].style[property_vendor] = $styles[property];\n }\n }\n }\n },\n\n get_style: function(property) {\n var $this = this,\n style = '',\n $styles;\n\n if ($this.length === 1) {\n $styles = window.getComputedStyle($this[0], null);\n style = $styles.getPropertyValue(property);\n }\n\n return style;\n },\n\n set_data: function(key, value) {\n var $this = this;\n\n if ($this.length === 1) {\n $this[0][key] = value;\n }\n },\n\n get_data: function(key) {\n var $this = this;\n\n if ($this.length === 1) {\n return $this[0][key];\n }\n },\n\n get_width: function() {\n var $this = this,\n width = 0;\n\n if ($this.length === 1) {\n if (_is_window($this[0])) {\n width = document.documentElement.clientWidth;\n }\n else if (_is_document($this[0])) {\n width = Math.max(\n document.body.scrollWidth,\n document.body.offsetWidth\n );\n }\n else {\n width = this[0].offsetWidth;\n }\n }\n\n return width;\n },\n\n get_height: function() {\n var $this = this,\n height = 0;\n\n if ($this.length === 1) {\n if (_is_window($this[0])) {\n height = document.documentElement.clientHeight;\n }\n else if (_is_document($this[0])) {\n height = Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight\n );\n }\n else {\n height = this[0].offsetHeight;\n }\n }\n\n return height;\n },\n\n get_offset_top: function() {\n var $this = this,\n top = 0,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n top = $obj.offsetTop;\n\n while ($obj = $obj.offsetParent) {\n top += $obj.offsetTop;\n }\n }\n\n return top;\n },\n\n get_offset_left: function() {\n var $this = this,\n left = 0,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n left = $obj.offsetLeft;\n\n while ($obj = $obj.offsetParent) {\n left += $obj.offsetLeft;\n }\n }\n\n return left;\n },\n\n get_scroll_top: function() {\n var $this = this,\n scroll_top = 0;\n\n if ($this.length === 1) {\n scroll_top = _get_scroll_offset($this[0]).top;\n }\n\n return scroll_top;\n },\n\n get_scroll_left: function() {\n var $this = this,\n scroll_left = 0;\n\n if ($this.length === 1) {\n scroll_left = _get_scroll_offset($this[0]).left;\n }\n\n return scroll_left;\n },\n\n set_value: function(value) {\n return this.set_attribute('value', value);\n },\n\n get_value: function() {\n return this.get_attribute('value');\n },\n\n add_event: function(type, listener) {\n var $this = this,\n $types = type.split(','),\n event_listener;\n\n event_listener = function(event) {\n listener.call(this, event);\n };\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, types_len = $types.length; j < types_len; j++) {\n type = _get_event_type($types[j].trim());\n\n $this[i].addEventListener(type, event_listener, false);\n }\n }\n },\n };\n\n // Ladet JavaScript-Code nach\n\n $$.load_script = function(url, callback) {\n var $head = document.getElementsByTagName('head')[0],\n $script = document.createElement('script');\n\n $script.src = (navigator.userAgent.indexOf('MSIE ') > 0) ? url + '?' + Math.random() : url;\n\n if (callback && typeof(callback) === 'function') {\n $script.onload = callback;\n }\n\n $head.appendChild($script);\n };\n\n // Ajax\n\n $$.get = function(url, callback) {\n if (window.XMLHttpRequest) {\n var $ajax = new XMLHttpRequest();\n\n $ajax.open('GET', url, true);\n\n $ajax.onload = function() {\n if (this.status === 200) {\n callback.call(this, this.responseText);\n }\n };\n\n $ajax.send();\n }\n };\n\n // Setzt hash\n\n $$.set_hash = function(hash) {\n if (window.history && window.history.replaceState) { // IE 10+\n hash = hash || window.location.pathname;\n window.history.replaceState(null, document.title, hash);\n }\n };\n\n // Verbindet zwei Objekte\n\n $$.merge_objects = function($obj1, $obj2) {\n for (var key in $obj2) {\n if ($obj2[key].constructor === Object) {\n $obj2[key] = $$.merge_objects($obj1[key], $obj2[key]);\n }\n else {\n $obj1[key] = $obj2[key];\n }\n }\n\n return $obj1;\n };\n\n // Scrollt zu\n\n $$.scroll_to = function(to, duration, callback) {\n var diff = to - $$(window).get_scroll_top(),\n step = diff / duration * 10;\n\n setTimeout(function() {\n window.scrollBy(0, step);\n\n if (Math.abs(diff) <= Math.abs(step)) {\n\n if (typeof callback === 'function') {\n callback();\n }\n\n return;\n }\n\n $$.scroll_to(to, duration - 10, callback);\n }, 10);\n };\n\n\n // Gibt die Touch-Richtung zurück\n\n $$.get_touch_range = function(dist_x, dist_y) {\n var theta = Math.atan2(-dist_x, dist_y),\n degrees;\n\n if (theta < 0) {\n theta += 2 * Math.PI;\n }\n\n degrees = Math.floor(theta * (180 / Math.PI) - 180);\n\n if (degrees < 0 && degrees > -180) {\n degrees = 360 - Math.abs(degrees);\n }\n\n return {\n is_top : degrees <= 40 || degrees >= 320,\n is_right : degrees >= 50 && degrees <= 130,\n is_bottom : degrees >= 140 && degrees <= 220,\n is_left : degrees >= 230 && degrees <= 310\n };\n };\n\n window.$$ = $$;\n}(document, window));\n\n// DEVICE\n// -------------------------------------------------------------------------------------------------\n\n(function(document, navigator, window) {\n var $html = document.querySelector('html');\n\n function _find(needle) {\n return navigator.userAgent.toLowerCase().indexOf(needle) !== -1;\n }\n\n window.device = {};\n\n device.iphone = _find('iphone');\n device.ipod = _find('ipod');\n device.ipad = _find('ipad');\n device.ios = device.iphone || device.ipod || device.ipad;\n device.android = _find('android');\n device.android_phone = device.android && _find('mobile');\n device.android_tablet = device.android && !_find('mobile');\n device.windows = _find('windows');\n device.windows_phone = device.windows && _find('phone');\n device.windows_tablet = device.windows && _find('touch');\n device.mobile = device.android_phone || device.iphone || device.ipod || device.windows_phone;\n device.tablet = device.ipad || device.android_tablet || device.windows_tablet;\n\n if (device.ios) {\n if (device.ipad) {\n $html.classList.add('ios', 'ipad', 'tablet');\n }\n else if (device.iphone || device.ipod) {\n $html.classList.add('ios', 'iphone', 'mobile');\n }\n }\n else if (device.android) {\n if (device.android_tablet) {\n $html.classList.add('android', 'tablet');\n }\n else {\n $html.classList.add('android', 'mobile');\n }\n }\n else if (device.windows) {\n if (device.windows_tablet) {\n $html.classList.add('windows', 'tablet');\n }\n else if (device.windows_phone) {\n $html.classList.add('windows', 'mobile');\n }\n else {\n $html.classList.add('desktop');\n }\n }\n else {\n $html.classList.add('desktop');\n }\n}(document, navigator, window));\n\n// BROWSER SUPPORT\n// -------------------------------------------------------------------------------------------------\n\n(function(document, navigator, window) {\n var $html = document.querySelector('html'),\n $div = document.createElement('div');\n\n // Überprüft die Browser-Unterstützung für CSS-Attribute wie z. B. transition\n\n function _has_css_property(property) {\n var css_property_found = false,\n prefixes = ['Moz', 'Webkit'];\n\n if (property in $div.style) {\n css_property_found = true;\n }\n else {\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n for (var i = 0, len = prefixes.length; i < len; i++) {\n if (typeof $div.style[prefixes[i] + property] !== 'undefined') {\n css_property_found = true;\n break;\n }\n }\n }\n\n return css_property_found;\n }\n\n window.support = {\n touch : window.navigator.msMaxTouchPoints || 'ontouchstart' in document.documentElement,\n transition : _has_css_property('transition') && 'TransitionEvent' in window // TransitionEvent wird benötigt für Android 4.1.x (https://bugs.dojotoolkit.org/ticket/17164#comment:13)\n };\n\n // Setzt Klassen auf den HTML-Tag\n\n $html.classList.remove('no_js');\n $html.classList.add(support.touch ? 'touch' : 'no_touch');\n $html.classList.add(support.transition ? 'csstransitions' : 'no_csstransitions');\n}(document, navigator, window));\n\n// PREFETCH\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var Prefetch = function($prefetch_link) {\n var _this = this;\n\n _this._$prefetch_link = $prefetch_link;\n _this._$options = _this._$prefetch_link.getAttribute('data-performance');\n };\n\n Prefetch.prototype = {\n init: function() {\n var _this = this;\n\n if (_this._$options.indexOf('prefetch') > -1) {\n _this._prefetch();\n }\n\n if (_this._$options.indexOf('prerender') > -1) {\n _this._prerender();\n }\n },\n\n _prefetch: function() {\n var _this = this,\n $link = document.createElement('link');\n\n $link.setAttribute('rel', 'prefetch');\n $link.setAttribute('href', _this._$prefetch_link.getAttribute('href'));\n\n document.querySelector('head').appendChild($link);\n },\n\n _prerender: function() {\n var _this = this,\n $link = document.createElement('link');\n\n $link.setAttribute('rel', 'prerender');\n $link.setAttribute('href', _this._$prefetch_link.getAttribute('href'));\n\n document.querySelector('head').appendChild($link);\n }\n };\n\n var $prefetch_links = document.querySelectorAll('[data-performance]');\n\n for (var i = 0, len = $prefetch_links.length; i < len; i++) {\n new Prefetch($prefetch_links[i]).init();\n }\n})(document);\n\n// BARRIEREFREIHEIT\n// Wird gebraucht für alle Projekte\n\n// EXTERNER LINK\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $links = document.querySelectorAll('[href*=http]');\n\n for (var i = 0, $link; $link = $links[i]; i++) {\n var target = $link.getAttribute('target'),\n title = $link.getAttribute('title');\n\n if (title && target === '_blank') {\n $link.setAttribute('title', title + ' (Neues Fenster)');\n }\n }\n})(document);\n\n\n// TASTATURSTEUERUNG FÜR ELEMENTE MIT ROLE BUTTON\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $buttons = document.querySelectorAll('[role=\"button\"]');\n\n for (var i = 0, $button; $button = $buttons[i]; i++) {\n $button.addEventListener('keyup', function(event) {\n if (event.keyCode === 13 && this.tagName !== 'A' || event.keyCode === 32) {\n this.click();\n }\n });\n }\n})(document);\n\n\n// ERKENNUNG DER FOKUSMETHODE FÜR LINKS\n// Wird verwendet für verbesserten Fokus auf Links (siehe default.less)\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var FocusMethod = function($link) {\n var _this = this;\n\n _this.$link = $link;\n\n _this.focus_method = false;\n _this.last_focus_method = false;\n };\n\n FocusMethod.prototype = {\n init: function() {\n var _this = this;\n\n _this.$link.addEventListener('keydown',\n _this._on_key_down.bind(this), {\n 'passive' : true\n }\n );\n\n _this.$link.addEventListener('mousedown',\n _this._on_mouse_down.bind(this), {\n 'passive' : true\n }\n );\n\n _this.$link.addEventListener('touchstart',\n _this._on_touch_start.bind(this), {\n 'passive' : true\n }\n );\n\n _this.$link.addEventListener('focus', _this._on_focus.bind(this));\n _this.$link.addEventListener('blur', _this._on_blur.bind(this));\n\n window.addEventListener('blur', this._on_window_blur.bind(this));\n },\n\n _on_key_down: function() {\n var _this = this;\n\n _this.focus_method = 'key';\n },\n\n _on_mouse_down: function() {\n var _this = this;\n\n if (_this.focus_method === 'touch') {\n return;\n }\n\n _this.focus_method = 'mouse';\n },\n\n _on_touch_start: function() {\n var _this = this;\n\n _this.focus_method = 'touch';\n },\n\n _on_focus: function() {\n var _this = this;\n\n if (!_this.focus_method) {\n _this.focus_method = _this.last_focus_method;\n }\n\n _this.$link.setAttribute('data-focus-method', _this.focus_method);\n\n this.last_focus_method = this.focus_method;\n this.focus_method = false;\n },\n\n _on_blur: function() {\n var _this = this;\n\n _this.$link.removeAttribute('data-focus-method');\n },\n\n _on_window_blur: function() {\n var _this = this;\n\n _this.focus_method = false;\n }\n };\n\n var $links = document.querySelectorAll('a, [tabindex=\"0\"]');\n\n for (var i = 0, $link; $link = $links[i]; i++) {\n new FocusMethod($link).init();\n }\n})(document);\n\n// COOKIE-HINWEIS\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $cookie_banner = document.querySelector('#cookie_banner'),\n $body = document.querySelector('body');\n\n if (!$cookie_banner) {\n return;\n }\n\n var $close = $cookie_banner.querySelector('.close'),\n now = new Date().getTime(),\n storage = sessionStorage.getItem(domain + '_cookie_banner');\n\n if (storage === null || now > storage) {\n $cookie_banner.classList.remove('hideme');\n $body.classList.add('cb_visible');\n }\n\n $close.addEventListener('click', function(event) {\n event.preventDefault();\n\n sessionStorage.setItem(domain + '_cookie_banner', now + 31536000);\n $cookie_banner.classList.add('hideme');\n $body.classList.remove('cb_visible');\n });\n}(document));\n\n// COOKIE-HINWEIS FUSSZEILE VERLÄNGERN\r\n// -------------------------------------------------------------------------------------------------\r\n\r\n(function(document) {\r\n var $cookie_banner = document.querySelector('#cookie_banner'),\r\n $footer = document.querySelector('footer'),\r\n $close = $cookie_banner.querySelector('.close'),\r\n $cookie_spacing;\r\n\r\n if (!$cookie_banner) {\r\n return;\r\n }\r\n\r\n $close.addEventListener('click', function() {\r\n if ($footer) {\r\n $footer.removeChild($cookie_spacing);\r\n }\r\n });\r\n\r\n if ($footer) {\r\n $cookie_spacing = document.createElement('div');\r\n $footer.appendChild($cookie_spacing);\r\n $cookie_spacing.style.paddingBottom = $cookie_banner.clientHeight + 'px';\r\n window.addEventListener('resize', function() {\r\n $cookie_spacing.style.paddingBottom = $cookie_banner.clientHeight + 'px';\r\n }, false);\r\n }\r\n\r\n}(document));\r\n\n// SEO: GOOGLE ANALYTICS TRACKING\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $emails = document.querySelectorAll('[href^=\"mailto:\"]'),\n $phone_numbers = document.querySelectorAll('[href^=\"tel:\"]'),\n $vards = document.querySelectorAll('[href$=\".vcf\"]'),\n $downloads = document.querySelectorAll('[href$=\".doc\"], [href$=\".docx\"], [href$=\".xls\"], [href$=\".xlsx\"], [href$=\".pdf\"], [href$=\".zip\"]'),\n $whatsapp_links = document.querySelectorAll('[href^=\"whatsapp\"]'),\n $facebook_links = document.querySelectorAll('[href$=\"facebook\"], [href$=\"facebook/\"]'),\n $twitter_links = document.querySelectorAll('[href$=\"twitter\"], [href$=\"twitter/\"]'),\n $twitter_shares = document.querySelectorAll('[href*=\"twitter.com/intent/tweet\"]'),\n $facebook_shares = document.querySelectorAll('[href*=\"facebook.com/sharer.php\"]'),\n $onlinetools = document.querySelectorAll('[href*=\"rechner.atikon.\"]');\n\n\n // if (typeof ga !== 'function') {\n // return;\n // }\n\n for (var y = 0, $email; $email = $emails[y]; y++) {\n $email.addEventListener('mousedown', function() {\n ga('send', 'event', 'E-Mail', 'Klick auf verlinkte E-Mailadresse', this.getAttribute('href').replace('mailto:', ''));\n });\n\n $email.addEventListener('copy', function() {\n ga('send', 'event', 'E-Mail', 'E-Mailadresse in die Zwischenablage kopiert', this.getAttribute('href').replace('mailto:', ''));\n });\n }\n\n for (var i = 0, $phone_number; $phone_number = $phone_numbers[i]; i++) {\n $phone_number.addEventListener('mousedown', function() {\n ga('send', 'event', 'Telefon', 'Klick auf verlinkte Telefonnummer', this.getAttribute('href').replace('tel:', ''));\n });\n }\n\n for (var j = 0, $vard; $vard = $vards[j]; j++) {\n $vard.addEventListener('mousedown', function() {\n ga('send', 'event', 'Downloads', 'Vcard heruntergeladen', this.getAttribute('data-info'));\n });\n }\n\n for (var k = 0, $whatsapp; $whatsapp = $whatsapp_links[k]; k++) {\n $whatsapp.addEventListener('mousedown', function() {\n ga('send', 'event', 'WhatsApp', this.getAttribute('data-info') + ' angeklickt', this.getAttribute('href'));\n console.log(this.getAttribute('data-info') + ' angeklickt');\n });\n }\n\n for (var x = 0, $download; $download = $downloads[x]; x++) {\n $download.addEventListener('mousedown', function() {\n ga('send', 'event', 'Downloads', this.getAttribute('title') + ' heruntergeladen', this.getAttribute('href'));\n });\n }\n\n for (var v = 0, $facebook_link; $facebook_link = $facebook_links[v]; v++) {\n $facebook_link.addEventListener('mousedown', function() {\n ga('send', 'event', 'Facebook', 'Facebook Verlinkung aufgerufen', this.getAttribute('href'));\n });\n }\n\n for (var o = 0, $facebook_share; $facebook_share = $facebook_shares[o]; o++) {\n $facebook_share.addEventListener('mousedown', function() {\n ga('send', 'event', 'Facebook', 'Facebook Share-Funktion aufgerufen', this.getAttribute('href'));\n });\n }\n\n for (var w = 0, $twitter_link; $twitter_link = $twitter_links[w]; w++) {\n $twitter_link.addEventListener('mousedown', function() {\n ga('send', 'event', 'Twitter', 'Twitter Verlinkung aufgerufen', this.getAttribute('href'));\n });\n }\n\n for (var d = 0, $twitter_share; $twitter_share = $twitter_shares[d]; d++) {\n $twitter_share.addEventListener('mousedown', function() {\n ga('send', 'event', 'Twitter', 'Twitter Share-Funktion aufgerufen', this.getAttribute('href'));\n });\n }\n\n for (var q = 0, $onlinetool; $onlinetool = $onlinetools[q]; q++) {\n $onlinetool.addEventListener('mousedown', function() {\n ga('send', 'event', 'Onlinetool', this.getAttribute('title') + ' aufgerufen', this.getAttribute('href'));\n });\n }\n\n if (document.querySelector('.confirm_page')) {\n ga('send', 'event', 'Formulare', 'Formular versendet', location.href);\n }\n}(document));\n\n// SEO: KEYWORDS IN STEUERNEWS ARTIKEL HERVORHEBEN\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var SeoHighlightKeywords = function($article) {\n var _this = this;\n\n _this.$article = $article;\n _this.current_url = document.location.href;\n _this.previous_url = document.referrer;\n };\n\n SeoHighlightKeywords.prototype = {\n init: function() {\n var _this = this;\n\n if (_this.previous_url.indexOf('/thema/') > -1 &&\n _this.current_url.indexOf('/thema/') === -1) {\n\n var keyword = _this._get_keyword(),\n regex = new RegExp('(?![^<]*>)' + '(' + keyword + ')', 'gi');\n\n _this.$article.innerHTML = _this.$article.innerHTML.replace(regex , '$1');\n }\n },\n\n _get_keyword: function() {\n var _this = this,\n keywords = _this.previous_url.split('/thema/');\n\n return decodeURIComponent(keywords[1]);\n }\n };\n\n var $article = document.getElementById('highlight_keywords');\n\n if ($article) { // has_seo raus, wenn SEO-Baustein\n new SeoHighlightKeywords($article).init();\n }\n})(document);\n\n// TOOLTIP\n// Wird gebraucht für: google_maps,newsletter_quick_subscribe, formular\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var Tooltip = function($tooltip_wrapper) {\n var _this = this;\n\n _this.$tooltip_wrapper = $tooltip_wrapper;\n _this.$tooltip = $tooltip_wrapper.querySelector('[role=\"tooltip\"]');\n\n _this._temp_disabled = false;\n _this._perm_disabled = false;\n _this._focused = false;\n\n var tooltip_id = _this.$tooltip.getAttribute('id');\n\n _this.$tooltip_trigger = $tooltip_wrapper.querySelector('[aria-describedby=\"' + tooltip_id + '\"]');\n };\n\n Tooltip.prototype = {\n init: function() {\n var _this = this;\n\n _this.$tooltip_trigger.addEventListener('keyup', _this._check_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('focus', _this._check_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('blur', _this._hide_tooltip.bind(_this));\n\n if (!support.touch) {\n _this.$tooltip.addEventListener('mouseenter', _this._check_tooltip.bind(_this));\n _this.$tooltip.addEventListener('mouseleave', _this._hide_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('mouseenter', _this._check_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('mouseleave', _this._hide_tooltip.bind(_this));\n }\n\n _this._keyboard_nav();\n },\n\n _check_tooltip: function(event) {\n var _this = this;\n\n if (_this.$tooltip_trigger.getAttribute('aria-invalid') === 'true') {\n _this._perm_disabled = false;\n _this._show_tooltip(event);\n }\n else {\n _this._perm_disabled = true;\n _this._hide_tooltip(event);\n }\n },\n\n _show_tooltip: function(event) {\n var _this = this;\n\n if (_this.disabled) {\n return;\n }\n\n if (event.type === 'keyup' || event.type === 'focus') {\n _this._focused = true;\n }\n\n if (!_this._temp_disabled && !_this._perm_disabled ||\n event.type === 'mouseenter' && !_this._perm_disabled) {\n _this.$tooltip.setAttribute('aria-hidden', 'false');\n }\n },\n\n _hide_tooltip: function(event) {\n var _this = this;\n\n if (event.type === 'blur') {\n _this._temp_disabled = false;\n _this._focused = false;\n }\n\n if (!_this._focused || _this._perm_disabled || _this._temp_disabled) {\n _this.$tooltip.setAttribute('aria-hidden', 'true');\n }\n },\n\n _keyboard_nav: function() {\n var _this = this;\n\n _this.$tooltip_trigger.addEventListener('keydown', function(event) {\n if (event.keyCode === 27 && _this.$tooltip.getAttribute('aria-hidden') === 'false') {\n event.stopPropagation();\n\n _this._temp_disabled = true;\n _this._hide_tooltip(event);\n }\n });\n }\n };\n\n var $tooltip_wrappers = document.querySelectorAll('.tooltip_wrapper');\n\n for (var i = 0, len = $tooltip_wrappers.length; i < len; i++) {\n new Tooltip($tooltip_wrappers[i]).init();\n }\n\n window.Tooltip = Tooltip;\n})(document);\n\n// SANFTES SCROLLEN\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n var SmoothScroll = function($link) {\n var _this = this;\n\n _this.$link = $link;\n _this.has_animationend_event = false;\n },\n offset_top = (220);\n\n function _get_offset_top($target) {\n var $obj = $target,\n top_position = $obj.offsetTop;\n\n while ($obj = $obj.offsetParent) {\n top_position += $obj.offsetTop;\n }\n return top_position;\n }\n\n function _remove_highlight_class($highlighted_target) {\n if ($highlighted_target.has_animationend_event) {\n return;\n }\n\n $highlighted_target.addEventListener('animationend', function(event) {\n if (event.target !== this) {\n return;\n }\n\n $highlighted_target.has_animationend_event = true;\n $highlighted_target.classList.remove('highlighted');\n });\n }\n\n function _scroll_to($target, offset, $callback) {\n var top_position = _get_offset_top($target) - offset,\n duration = 300,\n $highlighted_target,\n interval;\n\n if ($target.getAttribute('id')) {\n $highlighted_target = $target.parentElement;\n }\n else {\n $highlighted_target = $target;\n }\n\n interval = setInterval(function() {\n var diff = top_position - window.pageYOffset,\n step = diff / duration * 10;\n\n if (Math.abs(diff) <= Math.abs(step)) {\n clearInterval(interval);\n $highlighted_target.classList.add('highlighted');\n\n if (typeof $callback === 'function') {\n $callback();\n }\n }\n\n window.scrollBy(0, step);\n duration -= 10;\n }, 10);\n\n _remove_highlight_class($highlighted_target);\n }\n\n function _auto_scroll() {\n var hash = location.hash,\n parameter = location.search,\n $target;\n\n if(!location.hash && localStorage.getItem('go_to_main')) {\n hash = '#main';\n\n if(localStorage.getItem('go_to_main')) {\n localStorage.clear();\n }\n }\n\n if (hash.length <= 1) {\n return;\n }\n\n $target = document.querySelector(hash) || document.querySelector('a[id=\"' + hash.slice(1) + '\"]');\n\n if (!$target || $target.classList.contains('no_smooth_scroll')) {\n return;\n }\n\n location.hash = ''; // IE und Edge Bug - Scroll beginnt nicht am Seitenanfang\n window.history.replaceState(null, document.title, location.pathname + parameter);\n\n setTimeout(function() { // Firefox Bug - Scroll beginnt nicht am Seitenanfang\n window.scrollTo(0, 0);\n\n _scroll_to($target, offset_top, function() {\n $target.focus();\n window.history.replaceState(null, document.title, parameter + hash);\n });\n }, 10);\n\n\n }\n\n SmoothScroll.prototype = {\n init: function() {\n var _this = this;\n\n if (_this.$link.classList.contains('no_smooth_scroll')) {\n return;\n }\n\n if (_this.$link.tagName === 'A' || _this.$link.tagName === 'a') {\n _this._click_link();\n }\n else {\n _this._change_select();\n }\n },\n\n _click_link: function() {\n\n var _this = this;\n\n\n _this.$link.addEventListener('click', function(event) {\n localStorage.setItem('go_to_main', true);\n\n var hash = this.getAttribute('href'),\n parameter,\n $parameter,\n $hash,\n $target;\n\n if (hash.length === 1) {\n return;\n }\n\n $hash = hash.split('#');\n $parameter = $hash[0].split('?');\n parameter = $parameter.length === 2 ? '?' + $parameter[1] : '';\n hash = $hash[1];\n $target = document.querySelector('#' + hash) || document.querySelector('a[id=\"' + hash + '\"]');\n\n\n if (!$target) {\n return;\n }\n\n event.preventDefault();\n\n _scroll_to($target, offset_top, function() {\n $target.focus();\n\n window.history.replaceState(null, document.title, parameter + '#' + hash);\n });\n\n if(localStorage.getItem('go_to_main')) {\n localStorage.clear();\n }\n\n });\n },\n\n _change_select: function() {\n var _this = this;\n\n _this.$link.addEventListener('change', function(event) {\n var hash = this.options[this.selectedIndex].value,\n $target;\n\n if (hash.length === 1) {\n return;\n }\n\n hash = hash.split('#')[1];\n $target = document.querySelector('#' + hash) || document.querySelector('a[id=\"' + hash + '\"]');\n\n if (!$target) {\n return;\n }\n\n event.preventDefault();\n\n _scroll_to($target, offset_top, function() {\n $target.focus();\n window.history.replaceState(null, document.title, hash);\n });\n });\n }\n };\n\n // var $links = document.querySelectorAll('a[href*=\"#\"], select');\n\n var $links = document.querySelectorAll('a, select');\n\n\n for (var i = 0, len = $links.length; i < len; i++) {\n new SmoothScroll($links[i]).init();\n }\n\n _auto_scroll();\n})(document, window);\n\n// DROPDOWN MENU\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var DropdownMenu = function($dropdown_menu) {\n var _this = this,\n id = $dropdown_menu.getAttribute('id');\n\n _this.$dropdown_menu = $dropdown_menu;\n _this.$main_menuitems = $dropdown_menu.querySelectorAll('#' + id + ' > ul > li > a');\n _this.$sub_menuitems = $dropdown_menu.querySelectorAll('#' + id + ' > ul > li li > a');\n _this.$main_menuitems_with_sub_menu = $dropdown_menu.querySelectorAll('[href^=\"#\"]');\n _this.main_menu_index = 0;\n _this.event_type = false;\n\n _this.$key = {\n 'tab' : 9,\n 'enter' : 13,\n 'escape' : 27,\n 'space' : 32,\n 'arrow_left' : 37,\n 'arrow_up' : 38,\n 'arrow_right' : 39,\n 'arrow_down' : 40\n };\n };\n\n DropdownMenu.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_accessibility();\n _this._init_keyboard();\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems[i]; i++) {\n var $li = $main_menuitem.parentElement;\n\n $li.addEventListener('mouseenter',\n _this._on_mouseenter_main_menuitem.bind(_this, $main_menuitem)\n );\n\n $li.addEventListener('mouseover',\n _this._on_mouseover_main_menuitem.bind(_this, $main_menuitem)\n );\n\n $li.addEventListener('mouseout',\n _this._on_mouseout_main_menuitem.bind(_this)\n );\n\n $main_menuitem.addEventListener('focus',\n _this._on_focus_main_menuitem.bind(_this, $main_menuitem)\n );\n }\n },\n\n _init_accessibility: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n $main_menuitem.setAttribute('aria-expanded', 'false');\n\n $main_menuitem.addEventListener('click', function(event) {\n event.preventDefault();\n });\n }\n },\n\n _init_keyboard: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems[i]; i++) {\n $main_menuitem.addEventListener('keydown',\n _this._on_keydown_main_menuitem.bind(_this, $main_menuitem)\n );\n }\n\n for (var j = 0, $sub_menuitem; $sub_menuitem = _this.$sub_menuitems[j]; j++) {\n $sub_menuitem.addEventListener('keydown',\n _this._on_keydown_sub_menuitem.bind(_this)\n );\n }\n },\n\n _on_keydown_main_menuitem: function($main_menuitem, event) {\n var _this = this;\n\n _this.event_type = event.type;\n _this.main_menu_index = _this._get_main_menuitem_index();\n _this.$main_menuitem = $main_menuitem;\n _this.$sub_menu = $main_menuitem.nextElementSibling;\n\n switch(event.keyCode) {\n case _this.$key.tab:\n if (event.shiftKey) {\n _this.main_menu_index -= 1;\n }\n else {\n _this.main_menu_index += 1;\n }\n\n break;\n\n case _this.$key.enter:\n if (_this.$sub_menu) {\n event.preventDefault();\n _this._close_sub_menus();\n this._open_sub_menu(false);\n }\n\n break;\n\n case _this.$key.escape:\n event.preventDefault();\n\n if (_this.sub_menu_is_open) {\n event.stopPropagation();\n }\n\n _this._close_sub_menu();\n\n break;\n\n case _this.$key.arrow_left:\n event.preventDefault();\n\n _this._focus_prev_main_menuitem();\n\n break;\n\n case _this.$key.arrow_up:\n event.preventDefault();\n\n if (_this.sub_menu_is_open) {\n _this._focus_prev_menuitem();\n }\n\n break;\n\n case _this.$key.arrow_right:\n event.preventDefault();\n\n _this._focus_next_main_menuitem();\n\n break;\n\n case _this.$key.arrow_down:\n event.preventDefault();\n\n if (_this.$sub_menu) {\n this._open_sub_menu(false);\n }\n else {\n _this._focus_next_main_menuitem();\n }\n\n break;\n }\n },\n\n _get_main_menuitem_index: function() {\n var _this = this;\n\n return Array.prototype.indexOf.call(_this.$main_menuitems, document.activeElement);\n },\n\n _focus_prev_menuitem: function() {\n var _this = this;\n\n _this.main_menu_index -= 1;\n\n if (_this.main_menu_index < 0) {\n _this.main_menu_index = 0;\n\n return;\n }\n\n _this.$main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n _this.$sub_menu = _this.$main_menuitem.nextElementSibling;\n\n if (_this.$sub_menu && _this.sub_menu_is_open) {\n this._open_sub_menu(true);\n }\n else {\n _this.$main_menuitem.focus();\n }\n },\n\n _focus_prev_main_menuitem: function() {\n var _this = this;\n\n _this.main_menu_index -= 1;\n\n if (_this.main_menu_index < 0) {\n _this.main_menu_index = 0;\n\n return;\n }\n\n _this.$main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n\n _this.$main_menuitem.focus();\n },\n\n _focus_next_main_menuitem: function() {\n var _this = this;\n\n _this.main_menu_index += 1;\n\n if (_this.main_menu_index === _this.$main_menuitems.length) {\n _this.main_menu_index = _this.$main_menuitems.length - 1;\n\n return;\n }\n\n _this.$main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n\n _this.$main_menuitem.focus();\n },\n\n _on_mouseenter_main_menuitem: function($main_menuitem, event) {\n var _this = this;\n\n _this.event_type = event.type;\n _this.$main_menuitem = $main_menuitem;\n _this.$sub_menu = $main_menuitem.nextElementSibling;\n\n _this._close_sub_menus();\n\n if (_this.$sub_menu) {\n _this._open_sub_menu(false);\n }\n },\n\n _on_mouseover_main_menuitem: function() {\n var _this = this;\n\n clearTimeout(_this.close_sub_menu_timeout);\n },\n\n _on_mouseout_main_menuitem: function() {\n var _this = this;\n\n _this.close_sub_menu_timeout = setTimeout(function() {\n _this._close_sub_menus();\n }, 1000);\n },\n\n _on_focus_main_menuitem: function($main_menuitem, event) {\n var _this = this;\n\n _this.event_type = event.type;\n\n if (_this.sub_menu_is_open) {\n _this.$main_menuitem = $main_menuitem;\n _this.$sub_menu = $main_menuitem.nextElementSibling;\n\n _this._close_sub_menus();\n\n if (_this.$sub_menu) {\n _this._open_sub_menu();\n }\n }\n },\n\n _on_keydown_sub_menuitem: function(event) {\n var _this = this;\n\n switch(event.keyCode) {\n case _this.$key.tab:\n\n if (event.shiftKey) {\n _this.sub_menu_index -= 1;\n }\n else {\n _this.sub_menu_index += 1;\n }\n\n break;\n\n case _this.$key.escape:\n event.preventDefault();\n event.stopPropagation();\n\n _this._close_sub_menu();\n\n break;\n\n case _this.$key.arrow_left:\n event.preventDefault();\n\n _this.sub_menu_index = 0;\n _this._focus_prev_sub_menuitem();\n\n break;\n\n case _this.$key.arrow_up:\n event.preventDefault();\n\n _this._focus_prev_sub_menuitem();\n\n break;\n\n case _this.$key.arrow_right:\n event.preventDefault();\n\n _this.sub_menu_index = 0;\n _this._focus_prev_sub_menuitem();\n\n break;\n\n case _this.$key.arrow_down:\n event.preventDefault();\n\n _this._focus_next_sub_menuitem();\n\n break;\n }\n },\n\n _focus_prev_sub_menuitem: function() {\n var _this = this,\n $sub_menuitems = _this.$main_menuitem.nextElementSibling.querySelectorAll('a'),\n $sub_menuitem,\n $main_menuitem;\n\n _this.sub_menu_index -= 1;\n\n $sub_menuitem = $sub_menuitems[_this.sub_menu_index];\n\n if (_this.sub_menu_index < 0) {\n $main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n\n if ($main_menuitem) {\n $main_menuitem.focus();\n }\n }\n else if ($sub_menuitem) {\n $sub_menuitem.focus();\n }\n },\n\n _focus_next_sub_menuitem: function() {\n var _this = this,\n $sub_menuitems = _this.$main_menuitem.nextElementSibling.querySelectorAll('a'),\n $sub_menuitem,\n $main_menuitem;\n\n _this.sub_menu_index += 1;\n\n $sub_menuitem = $sub_menuitems[_this.sub_menu_index];\n\n if (_this.sub_menu_index === $sub_menuitems.length) {\n _this.main_menu_index += 1;\n\n $main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n\n if ($main_menuitem) {\n $main_menuitem.focus();\n }\n else {\n _this.main_menu_index -= 1;\n _this.sub_menu_index -= 1;\n }\n }\n else {\n $sub_menuitem.focus();\n }\n },\n\n _open_sub_menu: function(focus_last_sub_menuitem) {\n var _this = this,\n $sub_menuitems;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n var is_current_menuitem = _this.$main_menuitem === $main_menuitem;\n\n if (is_current_menuitem) {\n $main_menuitem.parentElement.classList.add('hover');\n }\n else {\n $main_menuitem.parentElement.classList.remove('hover');\n }\n\n $main_menuitem.setAttribute('aria-expanded', is_current_menuitem);\n }\n\n _this.sub_menu_index = 0;\n\n if (_this.event_type === 'keydown') {\n $sub_menuitems = _this.$sub_menu.querySelectorAll('a');\n\n if (focus_last_sub_menuitem) {\n _this.sub_menu_index = $sub_menuitems.length - 1;\n }\n\n $sub_menuitems[_this.sub_menu_index].focus();\n\n _this.event_type = false;\n }\n\n _this.sub_menu_is_open = true;\n },\n\n _close_sub_menu: function() {\n var _this = this;\n\n _this.$main_menuitem.parentElement.classList.remove('hover');\n _this.$main_menuitem.setAttribute('aria-expanded', 'false');\n\n _this.sub_menu_is_open = false;\n\n _this.$main_menuitem.focus();\n },\n\n _close_sub_menus: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n $main_menuitem.parentElement.classList.remove('hover');\n $main_menuitem.setAttribute('aria-expanded', 'false');\n }\n }\n };\n\n var $dropdown_menu = document.getElementsByClassName('dropdown_menu');\n\n for (var i = 0, len = $dropdown_menu.length; i < len; i++) {\n new DropdownMenu($dropdown_menu[i]).init();\n }\n})(document);\n\n// OFFCANVAS MENU ACORDION\n// MUSS VOR DEM EIGENTLICHEN ACORDION GELADEN WERDEN\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var OffCanvasMenuAccordion = function($toggle_offcanvas_menu) {\n var _this = this,\n controls;\n\n controls = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu').getAttribute('aria-controls');\n\n _this.$main_menuitems_with_sub_menu = document.getElementById(controls).querySelectorAll('[href^=\"#\"]');\n };\n\n OffCanvasMenuAccordion.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_accessibility();\n\n for (var j = 0, $main_menuitem_with_sub_menu; $main_menuitem_with_sub_menu = _this.$main_menuitems_with_sub_menu[j]; j++) {\n $main_menuitem_with_sub_menu.addEventListener('click',\n _this._on_click_main_menuitem.bind(_this, $main_menuitem_with_sub_menu)\n );\n }\n\n window.addEventListener('resize',\n _this._window_size_changed.bind(_this, $main_menuitem_with_sub_menu)\n );\n\n },\n\n _init_accessibility: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n if ($main_menuitem.classList.contains('active')) {\n $element = $main_menuitem.parentElement.querySelector('ul');\n $element.style.height = $element.scrollHeight + 'px';\n }\n }\n },\n\n _window_size_changed: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n if ($main_menuitem.getAttribute('aria-expanded') === 'true') {\n var $element = $main_menuitem.parentElement.querySelector('ul');\n // reset height font.size manipulates height of element\n $element.style.height = 'auto';\n $element.style.height = $element.scrollHeight + 'px';\n }\n }\n },\n\n _on_click_main_menuitem: function($main_menuitem_selected) {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n var $element = $main_menuitem.parentElement.querySelector('ul');\n\n if ($main_menuitem_selected === $main_menuitem) {\n $element.style.height = '0px';\n if ($main_menuitem.getAttribute('aria-expanded') === 'false') {\n $element.style.height = $element.scrollHeight + 'px';\n } else {\n $element.style.height = '0px';\n }\n }\n else {\n $element.style.height = '0px';\n }\n }\n }\n };\n\n // init OffCanvasMenu only once\n\n var $toggle_offcanvas_menu = document.getElementsByClassName('toggle_offcanvas_menu');\n\n // create an Opener for each button\n for (var i = 0, len = $toggle_offcanvas_menu.length; i < len; i++) {\n new OffCanvasMenuAccordion($toggle_offcanvas_menu[i]).init();\n }\n\n})(document);\n\n// OFFCANVAS MENU\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var OffCanvasMenu = function($toggle_offcanvas_menu) {\n var _this = this,\n controls;\n\n controls = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu').getAttribute('aria-controls');\n\n _this.$offcanvas_menu = document.getElementById(controls);\n _this.$main_menuitems_with_sub_menu = _this.$offcanvas_menu.querySelectorAll('[href^=\"#\"]');\n // _this.$offcanvas_menu_content = _this.$offcanvas_menu.querySelector('.offcanvas_menu_content');\n _this.$focus_elements = _this.$offcanvas_menu.querySelectorAll('a');\n _this.focus_element = false;\n _this.$offcanvas_menu_state = false;\n\n\n _this.$key = {\n 'tab' : 9,\n };\n };\n\n OffCanvasMenu.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_accessibility();\n _this._init_keyboard();\n\n for (var j = 0, $main_menuitem_with_sub_menu; $main_menuitem_with_sub_menu = _this.$main_menuitems_with_sub_menu[j]; j++) {\n $main_menuitem_with_sub_menu.addEventListener('click',\n _this._on_click_main_menuitem.bind(_this, $main_menuitem_with_sub_menu)\n );\n }\n },\n\n _init_accessibility: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n $main_menuitem.setAttribute('aria-expanded', $main_menuitem.classList.contains('active'));\n }\n },\n\n _init_keyboard: function() {\n var _this = this;\n\n document.addEventListener('keydown', function(event) {\n if (!_this.$offcanvas_menu_state.checked) {\n return;\n }\n\n if (event.keyCode === _this.$key.tab) {\n event.preventDefault();\n\n if (event.shiftKey) {\n _this._focus_element_with_shift_tab_key(event);\n }\n else {\n _this._focus_element_with_tab_key(event);\n }\n }\n });\n },\n\n _focus_element_with_shift_tab_key: function() {\n var _this = this;\n\n _this.tab_index -= 1;\n\n if (_this.tab_index < 0) {\n _this.tab_index = _this.$focus_elements.length - 1;\n }\n\n for (var i = _this.tab_index, $focus_element; $focus_element = _this.$focus_elements[i]; i--) {\n if ($focus_element.offsetParent === null || $focus_element.offsetWidth === 0) {\n _this.tab_index -= 1;\n continue;\n }\n\n _this.$focus_elements[_this.tab_index].focus();\n break;\n }\n },\n\n _focus_element_with_tab_key: function() {\n var _this = this;\n\n if (_this.tab_index === _this.$focus_elements.length - 1) {\n _this.tab_index = 0;\n }\n else {\n _this.tab_index += 1;\n }\n\n for (var i = _this.tab_index, $focus_element; $focus_element = _this.$focus_elements[i]; i++) {\n if ($focus_element.offsetParent === null || $focus_element.offsetWidth === 0) {\n _this.tab_index += 1;\n\n if (_this.tab_index > _this.$focus_elements.length - 1) {\n _this.tab_index = 0;\n }\n else {\n continue;\n }\n }\n\n _this.$focus_elements[_this.tab_index].focus();\n break;\n }\n },\n\n _on_click_main_menuitem: function($main_menuitem, event) {\n var _this = this;\n\n event.preventDefault();\n\n _this.$main_menuitem = $main_menuitem;\n\n _this._toggle_sub_menus();\n },\n\n _toggle_sub_menus: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n var is_active_menuitem = _this.$main_menuitem === $main_menuitem,\n $parent_menuitems = _this._get_parent_menu_elements();\n\n if (is_active_menuitem) {\n _this.sub_menu_is_open = $main_menuitem.getAttribute('aria-expanded') === 'false';\n\n $main_menuitem.parentElement.classList.toggle('expanded', _this.sub_menu_is_open);\n $main_menuitem.setAttribute('aria-expanded', _this.sub_menu_is_open);\n }\n else if ($parent_menuitems.indexOf($main_menuitem) !== -1) { // Check parents\n $main_menuitem.parentElement.classList.toggle('expanded', 'true');\n $main_menuitem.setAttribute('aria-expanded', 'true');\n }\n else {\n $main_menuitem.parentElement.classList.remove('expanded');\n $main_menuitem.setAttribute('aria-expanded', 'false');\n }\n }\n },\n\n _get_parent_menu_elements: function() {\n var _this = this.$main_menuitem,\n $findings = [];\n\n while (_this.parentNode) {\n _this = _this.parentNode;\n\n if (_this.nodeName.toLowerCase() === 'li') {\n $findings.push(_this.querySelector('a'));\n }\n }\n\n return $findings || False;\n }\n };\n\n var OffCanvasMenuOpener = function($toggle_offcanvas_menu) {\n var _this = this;\n var controls = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu').getAttribute('aria-controls');\n\n _this.$toggle_offcanvas_menu = $toggle_offcanvas_menu.querySelector('label');\n _this.$open_offcanvas_menu = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu');\n _this.$close_offcanvas_menu = document.querySelector('.close_offcanvas_menu');\n _this.$offcanvas_menu_state = document.querySelector('#' + _this.$toggle_offcanvas_menu.getAttribute('for'));\n _this.$offcanvas_menu = document.getElementById(controls);\n _this.$focus_elements = _this.$offcanvas_menu.querySelectorAll('a');\n _this.$english_menu_items = _this.$offcanvas_menu.querySelectorAll('.onepage_menu_item');\n\n _this.$key = {\n 'enter' : 13,\n 'escape' : 27,\n 'space' : 32\n };\n };\n\n OffCanvasMenuOpener.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_keyboard();\n\n _this.$toggle_offcanvas_menu.addEventListener('click', _this._toggle_menu.bind(_this));\n _this.$open_offcanvas_menu.addEventListener('click', _this._open_menu.bind(_this));\n _this.$close_offcanvas_menu.addEventListener('click', _this._close_menu.bind(_this));\n\n for (var j = 0; j < _this.$english_menu_items.length; j++) {\n\n _this.$english_menu_items[j].addEventListener('click', function(event) {\n _this._close_menu(event);\n })\n\n }\n\n _this.$offcanvas_menu.addEventListener('transitionend', function(event) {\n\n if (event.target !== this) {\n return;\n }\n\n if (_this.$offcanvas_menu_state.checked) {\n if (_this.focus_element) {\n _this.focus_element = false;\n _this.$focus_elements[0].focus();\n }\n }\n else if (_this.focus_element) {\n _this.focus_element = false;\n _this.$open_offcanvas_menu.focus();\n }\n });\n },\n\n _init_keyboard: function() {\n var _this = this;\n\n _this.$open_offcanvas_menu.addEventListener('keydown', function(event) {\n if (event.keyCode === _this.$key.space || event.keyCode === _this.$key.enter) {\n _this.focus_element = true;\n }\n\n if (event.keyCode === _this.$key.space) {\n event.preventDefault();\n }\n });\n\n _this.$close_offcanvas_menu.addEventListener('keydown', function(event) {\n if (event.keyCode === _this.$key.space) {\n event.preventDefault();\n }\n });\n\n document.addEventListener('keydown', function(event) {\n if (!_this.$offcanvas_menu_state.checked) {\n return;\n }\n\n if (event.keyCode === _this.$key.escape) {\n _this.focus_element = true;\n _this._close_menu(event);\n }\n });\n },\n\n _scroll_to_top: function() {\n var _this = this;\n\n setTimeout(function() {\n var duration = 300,\n interval;\n\n interval = setInterval(function() {\n var diff = -window.pageYOffset,\n step = diff / duration * 10;\n\n if (Math.abs(diff) <= Math.abs(step)) {\n if (_this.$anchor) {\n _this.$anchor.focus();\n }\n\n clearInterval(interval);\n }\n\n window.scrollBy(0, step);\n duration -= 10;\n }, 10);\n }, 300);\n },\n\n _toggle_menu: function(event) {\n var _this = this;\n\n if (_this.$offcanvas_menu_state.checked) {\n _this._close_menu(event);\n }\n else {\n _this._open_menu(event);\n }\n },\n\n _open_menu: function(event) {\n var _this = this;\n\n event.preventDefault();\n\n _this.$offcanvas_menu_state.checked = true;\n _this.tab_index = 0;\n\n _this._scroll_to_top();\n },\n\n _close_menu: function() {\n var _this = this;\n\n _this.$offcanvas_menu_state.checked = false;\n _this.tab_index = 0;\n }\n };\n\n var $offcanvas_menu = document.getElementsByClassName('toggle_offcanvas_menu');\n\n if ($offcanvas_menu.length) {\n new OffCanvasMenu($offcanvas_menu[0]).init(); // init once\n\n // create an opener for each button\n for (var i = 0, len = $offcanvas_menu.length; i < len; i++) {\n new OffCanvasMenuOpener($offcanvas_menu[i]).init();\n }\n }\n})(document);\n\n// FORMULARE\n// -------------------------------------------------------------------------------------------------\n\n(function(window) {\n var FormHelpers = function(element) {\n var _this = this;\n\n _this.$el = $$(element);\n };\n\n FormHelpers.prototype = {\n init: function() {\n var _this = this;\n\n _this._file_upload();\n _this._select();\n },\n\n _file_upload: function() {\n var _this = this;\n\n if (_this.$el.get_attribute('type') !== 'file') {\n return;\n }\n\n var $file_name = _this.$el.get_parent().children('.file_name'),\n $file_button = _this.$el.get_parent().children('.file_button');\n\n _this.$el.add_event('focus', function() {\n $file_button.add_class('focus');\n });\n\n _this.$el.add_event('blur', function() {\n $file_button.remove_class('focus');\n });\n\n _this.$el.add_event('change', function() {\n $file_name.set_text(_this.$el.get_file().filename);\n });\n },\n\n _select: function() {\n var _this = this;\n\n if (!_this.$el.is_tag('select')) {\n return;\n }\n\n _this.$el.add_event('focus', function() {\n _this.$el.get_parent('.select').add_class('focus');\n });\n\n _this.$el.add_event('blur', function() {\n _this.$el.get_parent('.select').remove_class('focus');\n });\n\n _this.$el.add_event('change', function() {\n var index = this.selectedIndex,\n $select = $$(this),\n $option = $select.find('option').index(index),\n value = $option.get_value();\n\n if (value.indexOf('http://') > -1 || value.indexOf('https://') > -1) {\n window.location.href = value;\n }\n });\n }\n };\n\n $$('input, select, textarea').for_each(function() {\n new FormHelpers(this).init();\n });\n})(window);\n\n// FORM VALIDIERUNG\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n var FormValidation = function($form) {\n var _this = this;\n\n _this._$form = $form;\n _this._$inputs = _this._$form.querySelectorAll('input.validate, textarea.validate');\n _this._$inputs_checkbox = _this._$form.querySelectorAll('input[type=checkbox][required]');\n _this._$selects = _this._$form.querySelectorAll('select[required]');\n _this._$button = _this._$form.querySelector('[type=\"submit\"]');\n _this._$error_msg_button = _this._$form.querySelector('.error_msg_button');\n };\n\n FormValidation.prototype = {\n init: function() {\n var _this = this;\n\n for (var j = 0, inputs_len = _this._$inputs.length; j < inputs_len; j++) {\n var $input = this._$inputs[j];\n\n $input.addEventListener('keyup', _this._input_keyup.bind(_this, $input));\n $input.addEventListener('blur', _this._input_blur.bind(_this, $input));\n }\n\n for (var i = 0, inputs_checkbox_len = _this._$inputs_checkbox.length; i < inputs_checkbox_len; i++) {\n var $input_checkbox = this._$inputs_checkbox[i];\n\n $input_checkbox.addEventListener('click', _this._input_checkbox_click.bind(_this, $input_checkbox));\n $input_checkbox.addEventListener('keyup', _this._input_checkbox_keyup.bind(_this, $input_checkbox));\n $input_checkbox.addEventListener('blur', _this._input_checkbox_blur.bind(_this, $input_checkbox));\n }\n\n for (var x = 0, selects_len = _this._$selects.length; x < selects_len; x++) {\n var $select = this._$selects[x];\n\n $select.addEventListener('change', _this._select_change.bind(_this, $select));\n $select.addEventListener('blur', _this._select_blur.bind(_this, $select));\n }\n\n _this._$form.addEventListener('submit', _this._submit.bind(_this));\n\n _this._check_submit_status();\n },\n\n _input_keyup: function($input, event) {\n if (event.keyCode === 9 || event.keyCode === 27) {\n // No validation on TAB or ESC\n return;\n }\n\n this._validate_input($input, event);\n },\n\n _input_blur: function($input, event) {\n this._validate_input($input, event);\n },\n\n _validate_input: function($input, event) {\n var _this = this,\n id = $input.getAttribute('id'),\n $error_warning = document.querySelector('[for=\"' + id + '\"] .error_warning'),\n min = parseInt($input.getAttribute('min')),\n pattern = $input.getAttribute('pattern'),\n regexp = new RegExp(pattern),\n value = $input.value;\n\n if ($input.type === 'file') {\n _this._validate_input_file($input);\n }\n else if (value) {\n if (pattern && value.match(regexp) || value >= min || !pattern && $input.required) {\n $input.setAttribute('aria-invalid', 'false');\n\n if (!event || event.type === 'blur') {\n $input.classList.remove('error');\n\n if ($error_warning) {\n $error_warning.classList.remove('show');\n }\n }\n }\n else {\n $input.setAttribute('aria-invalid', 'true');\n\n if (!event || event.type === 'blur') {\n $input.classList.add('error');\n\n if ($error_warning) {\n $error_warning.classList.add('show');\n }\n }\n }\n }\n else if ($input.required) {\n $input.setAttribute('aria-invalid', 'true');\n\n if (!event || event.type === 'blur') {\n $input.classList.add('error');\n\n if ($error_warning) {\n $error_warning.classList.add('show');\n }\n }\n }\n else {\n $input.setAttribute('aria-invalid', 'false');\n\n if (!event || event.type === 'blur') {\n $input.classList.remove('error');\n\n if ($error_warning) {\n $error_warning.classList.remove('show');\n }\n }\n }\n _this._check_submit_status();\n },\n\n _validate_input_file: function($input) {\n var _this = this,\n id = $input.getAttribute('id'),\n $error_warning = document.querySelector('[for=\"' + id + '\"] .error_warning'),\n value = $input.value;\n\n while ($input && $input.nodeType !== 9) {\n $input = $input.parentNode;\n\n if ($input.classList.contains('file')) {\n break;\n }\n }\n\n if (value) {\n $input.classList.remove('error');\n if ($error_warning) {\n $error_warning.classList.remove('show');\n }\n }\n else {\n $input.classList.add('error');\n if ($error_warning) {\n $error_warning.classList.add('show');\n }\n }\n\n _this._check_submit_status();\n },\n\n _input_checkbox_click: function($input_checkbox, event) {\n this._validate_input_checkbox($input_checkbox, event);\n },\n\n _input_checkbox_keyup: function($input_checkbox, event) {\n if (event.keyCode === 32) { // SPACE\n this._validate_input_checkbox($input_checkbox, event);\n }\n },\n\n _input_checkbox_blur: function($input_checkbox, event) {\n this._validate_input_checkbox($input_checkbox, event);\n },\n\n _validate_input_checkbox: function($input_checkbox, event) {\n var _this = this,\n id = $input_checkbox.getAttribute('id'),\n $error_warning = document.querySelector('#label_' + id + ' .error_warning');\n\n if ($input_checkbox.checked && !event ||\n $input_checkbox.checked && event && event.type !== 'keyup' ||\n !$input_checkbox.checked && event && event.type === 'keyup') {\n $input_checkbox.setAttribute('aria-invalid', 'false');\n $input_checkbox.classList.remove('error');\n $error_warning.classList.remove('show');\n }\n else {\n $input_checkbox.setAttribute('aria-invalid', 'true');\n $input_checkbox.classList.add('error');\n $error_warning.classList.add('show');\n }\n\n _this._check_submit_status();\n },\n\n _select_change: function($select, event) {\n this._validate_select($select, event);\n },\n\n _select_blur: function($select, event) {\n this._validate_select($select, event);\n },\n\n _validate_select: function($select, event) {\n var _this = this,\n id = $select.getAttribute('id'),\n $wrapper = $select,\n $error_warning = document.querySelector('#label_' + id + ' .error_warning'),\n value = $select.value;\n\n while ($wrapper && $wrapper.nodeType !== 9) {\n $wrapper = $wrapper.parentNode;\n\n if ($wrapper.classList.contains('select')) {\n break;\n }\n }\n\n if (value) {\n $select.setAttribute('aria-invalid', 'false');\n\n if (!event || event.type === 'blur') {\n $wrapper.classList.remove('error');\n $error_warning.classList.remove('show');\n }\n }\n else {\n $select.setAttribute('aria-invalid', 'true');\n\n if (!event || event.type === 'blur') {\n $wrapper.classList.add('error');\n $error_warning.classList.add('show');\n }\n }\n\n _this._check_submit_status();\n },\n\n _check_submit_status: function() {\n var _this = this,\n error_msg_button_id = _this._$error_msg_button.getAttribute('id'),\n enable_submit_button = true;\n\n for (var j = 0, inputs_len = _this._$inputs.length; j < inputs_len; j++) {\n if (_this._$inputs[j].getAttribute('aria-invalid') === 'true' ||\n _this._$inputs[j].required && !_this._$inputs[j].value) {\n enable_submit_button = false;\n break;\n }\n }\n\n for (var i = 0, inputs_checkbox_len = _this._$inputs_checkbox.length; i < inputs_checkbox_len; i++) {\n if (!_this._$inputs_checkbox[i].checked) {\n enable_submit_button = false;\n break;\n }\n }\n\n for (var x = 0, selects_len = _this._$selects.length; x < selects_len; x++) {\n if (!_this._$selects[x].value) {\n enable_submit_button = false;\n break;\n }\n }\n\n if (enable_submit_button) {\n _this._$button.classList.remove('disabled');\n _this._$button.removeAttribute('aria-describedby');\n }\n else {\n _this._$button.classList.add('disabled');\n _this._$button.setAttribute('aria-describedby', error_msg_button_id);\n }\n },\n\n _show_first_error: function() {\n var _this = this,\n $first_input_error = _this._$form.querySelector('[aria-invalid=\"true\"]'),\n top_position = 0,\n offset_top = 60,\n duration = 300,\n interval,\n $obj;\n\n if ($first_input_error) {\n $obj = $first_input_error;\n top_position = $obj.offsetTop - offset_top;\n\n while ($obj = $obj.offsetParent) {\n top_position += $obj.offsetTop;\n }\n\n if (window.pageYOffset < top_position) {\n $first_input_error.focus();\n return;\n }\n\n interval = setInterval(function() {\n var diff = top_position - window.pageYOffset,\n step = diff / duration * 10;\n\n if (Math.abs(diff) <= Math.abs(step)) {\n $first_input_error.focus();\n clearInterval(interval);\n }\n\n window.scrollBy(0, step);\n duration -= 10;\n }, 10);\n }\n },\n\n _submit: function(event) {\n var _this = this;\n\n _this._check_submit_status();\n\n if (_this._$button.classList.contains('disabled')) {\n event.preventDefault();\n\n for (var j = 0, inputs_len = _this._$inputs.length; j < inputs_len; j++) {\n _this._validate_input(this._$inputs[j]);\n }\n\n for (var i = 0, inputs_checkbox_len = _this._$inputs_checkbox.length; i < inputs_checkbox_len; i++) {\n _this._validate_input_checkbox(this._$inputs_checkbox[i]);\n }\n\n for (var x = 0, selects_len = _this._$selects.length; x < selects_len; x++) {\n _this._validate_select(this._$selects[x]);\n }\n\n _this._show_first_error();\n }\n }\n };\n\n var $forms = document.querySelectorAll('[data-form*=\"validate\"]');\n\n for (var i = 0, len = $forms.length; i < len; i++) {\n new FormValidation($forms[i]).init();\n }\n})(document, window);\n\n// FORMULARE: STANDORT AUSWAHL\n// Wird verwendet für: formular\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $secure_targets = document.querySelectorAll('[name=\"secure_target\"]');\n\n if (!$secure_targets.length) {\n return;\n }\n\n for (var i = 0, $secure_target; $secure_target = $secure_targets[i]; i++) {\n $secure_target.addEventListener('change', function() {\n var id = this.options[this.selectedIndex].getAttribute('id');\n\n if (id) {\n var $locations_data = document.querySelectorAll('[data-forms-location=' + id + '] span');\n\n for (var j = 0, $location_data; $location_data = $locations_data[j]; j++) {\n var title = $location_data.getAttribute('title'),\n $input = document.querySelector('input[name=\"to_' + title + '\"]');\n\n $input.value = $location_data.textContent.trim();\n }\n }\n });\n }\n})(document);\n\n// FORMULARE: EINGABE ZWISCHENSPEICHERN\n// Wird verwendet für: formular\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var FormCache = function($form) {\n var _this = this;\n\n _this._$form = $form;\n _this._form_name = _this._$form.getAttribute('data-form-cache');\n _this._$inputs = _this._$form.querySelectorAll('input, select, textarea');\n _this._$cache = {};\n };\n\n FormCache.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_events();\n _this._restore_cache();\n },\n\n _init_events: function() {\n var _this = this,\n $input,\n type,\n event_listener;\n\n for (var i = 0, len = _this._$inputs.length; i < len; i++) {\n $input = _this._$inputs[i];\n type = $input.type;\n\n if (type === 'checkbox') {\n event_listener = 'click';\n }\n else if (type === 'select-one') {\n event_listener = 'change';\n }\n else {\n event_listener = 'input';\n }\n\n $input.addEventListener(event_listener, _this._save_cache.bind(_this, $input), false);\n }\n\n _this._$form.addEventListener('submit', _this._reset_cache.bind(_this), false);\n },\n\n _save_cache: function($input) {\n var _this = this,\n name = $input.getAttribute('name'),\n type = $input.type;\n\n if (type === 'checkbox') {\n _this._$cache[name] = $input.checked;\n }\n else if (type === 'select-one') {\n _this._$cache[name] = $input.selectedIndex;\n }\n else {\n _this._$cache[name] = $input.value;\n }\n\n localStorage.setItem(domain + '_form_cache_' + _this._form_name, JSON.stringify(_this._$cache));\n },\n\n _restore_cache: function() {\n var _this = this,\n $cache = localStorage.getItem(domain + '_form_cache_' + _this._form_name),\n $input,\n type;\n\n if (!$cache) {\n return;\n }\n\n _this._$cache = JSON.parse($cache);\n\n for (var key in _this._$cache) {\n if (_this._$cache.hasOwnProperty(key)) {\n $input = _this._$form.querySelector('[name=\"' + key + '\"]');\n type = $input.type;\n\n if (type === 'checkbox') {\n $input.checked = _this._$cache[key];\n }\n else if (type === 'select-one') {\n $input.selectedIndex = _this._$cache[key];\n }\n else {\n $input.value = _this._$cache[key];\n }\n }\n }\n },\n\n _reset_cache: function() {\n var _this = this,\n is_valid = true;\n\n for (var i = 0, len = _this._$inputs.length; i < len; i++) {\n if (_this._$inputs[i].getAttribute('aria-invalid') === 'true') {\n is_valid = false;\n break;\n }\n }\n\n if (is_valid) {\n localStorage.removeItem(domain + '_form_cache_' + _this._form_name);\n }\n }\n };\n\n var $forms = document.querySelectorAll('[data-form-cache]');\n\n for (var i = 0, len = $forms.length; i < len; i++) {\n new FormCache($forms[i]).init();\n }\n})(document);\n\n// FORMULARE: TEXTAREA AUTOGROW\n// Wird gebraucht für alle