function uuid4() {
var uuid = "", i, random;
for (i = 0; i < 32; i++) {
random = Math.random() * 16 | 0;
if (i == 8 || i == 12 || i == 16 || i == 20) {
uuid += "-";
}
uuid += (i == 12 ? 4 : (i == 16 ? (random & 3 | 8) : random)).toString(16);
}
return uuid;
}
function get_id($el) {
var id = $el.attr('id');
if (id == undefined) {
id = uuid4();
$el.attr('id', id);
}
return id;
}
function get_data($el, name) {
try {
if (name == undefined) {
name = 'data';
}
if (!$el.data(name)){
$el.data(name, $.parseJSON(decodeURIComponent($el.data(name + '_'))));
}
return $el.data(name);
} catch(e) {
return undefined;
}
}
function cropText(text, length, replaceby) {
replaceby = typeof(replaceby) != undefined ? replaceby : '...';
if (text.length > length) {
text = text.slice(0, length - replaceby.length);
text += replaceby;
}
return text;
}
function textLimiter(field, countfield, limit) {
if (field.val().length > limit) {
field.val(field.val().substring(0, limit));
} else {
countfield.html(limit - field.val().length);
}
}
function init_formfields_richtext() {
$('form.form .formfield-richtext textarea').tinymce({
script_url: '//' + cdnhost + '/libs/tinymce/current/tinymce.min.js',
theme: 'modern',
language: {'ger': 'de', 'eng': 'en', 'fra': 'fr', 'ita': 'it'}[lang],
resize: 'both',
tabfocus_elements: ':prev,:next',
add_unload_trigger: true,
entity_encoding: 'raw',
plugins: [
"autolink lists link charmap preview hr searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking table contextmenu directionality paste"
],
statusbar: true,
menubar: false,
toolbar1: 'undo redo | cut copy paste searchreplace | visualblocks visualchars | code preview fullscreen',
toolbar2: 'styleselect | bullist numlist table | blockquote subscript superscript hr charmap',
toolbar3: 'removeformat | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify',
fix_list_elements: true,
visual: true,
browser_spellcheck: true,
convert_urls: false,
relative_urls: false,
object_resizing: false,
style_formats: [
{title: 'Headers', items: [
{title: 'Header 1', format: 'h1'},
{title: 'Header 2', format: 'h2'},
{title: 'Header 3', format: 'h3'},
{title: 'Header 4', format: 'h4'},
{title: 'Header 5', format: 'h5'},
{title: 'Header 6', format: 'h6'}
]},
{title: 'Blocks', items: [
{title: 'Paragraph', format: 'p'},
{title: 'Blockquote', format: 'blockquote'},
{title: 'Div', format: 'div'},
{title: 'Pre', format: 'pre'}
]}
],
formats: {
alignleft: {selector: '*', classes: 'left'},
alignright: {selector: '*', classes: 'right'},
aligncenter: {selector: '*', classes: 'center'},
alignjustify: {selector: '*', classes: 'justify'},
underline: {inline: 'ins'},
strikethrough: {inline: 'del'}
}
});
}
function init_formfields() {
$('body').delegate('form.form input, form.form select, form.form textarea, form.form button', 'mouseenter', function() {
$(this).addClass('hover');
});
$('body').delegate('form.form input, form.form select, form.form textarea, form.form button', 'mouseleave', function() {
$(this).removeClass('hover');
});
$('body').delegate('form.form input, form.form select, form.form textarea, form.form button', 'focus', function() {
$(this).addClass('focus');
});
$('body').delegate('form.form input, form.form select, form.form textarea, form.form button', 'blur', function() {
$(this).removeClass('focus');
});
$('body').delegate('div.formfield-input-checkbox input', 'change', function() {
var container = $(this).parentsUntil('div.formfield').parent();
if ($(this).is(':checked')) {
container.addClass('active');
} else {
container.removeClass('active');
}
});
$('div.formfield-input-checkbox').each(function() {
if ($('input', $(this)).is(':checked')) {
$(this).addClass('active');
} else {
$(this).removeClass('active');
}
});
$('body').delegate('div.formfield-input-radio input', 'change', function() {
$this = $(this);
var $listcontainer = $this.parentsUntil('fieldset.formradiolist').parent();
$('div.formfield-input-radio', $listcontainer).removeClass('active');
if ($this.is(':checked')) {
$this.parentsUntil('div.formfield').parent().addClass('active');
}
});
$('fieldset.formradiolist').each(function() {
$listcontainer = $(this);
$formfields = $('div.formfield-input-radio', $listcontainer);
$formfields.removeClass('active');
$formfields.each(function() {
var $formfield = $(this);
var $input = $('input', $formfield);
if ($input.is(':checked')) {
$formfield.addClass('active');
}
});
});
$('fieldset.formfieldset.activate_fields_if').each(function() {
var $fieldset = $(this);
var conditions = get_data($fieldset)['activate_fields_if'];
var $form = $fieldset.parents('form');
var form_name = $form.attr('name');
check_fieldset_conditions($fieldset);
$.each(conditions, function(index, condition) {
name = condition[0];
var $field = $('input, select, textarea', $form).filter('[name="' + form_name + '_' + name + '"]');
$field.on('change', function(event) {
check_fieldset_conditions($fieldset);
});
});
});
init_formfields_richtext();
}
function check_fieldset_conditions($fieldset) {
var conditions = get_data($fieldset)['activate_fields_if'];
var $form = $fieldset.parents('form');
var form_name = $form.attr('name');
var $innercontent = $('> .innercontent', $fieldset);
var show = true;
$.each(conditions, function(index, condition) {
name = condition[0];
value = condition[1];
var $field = $('input, select, textarea', $form).filter('[name="' + form_name + '_' + name + '"]');
if ($field.is(':radio')) {
$field = $field.filter(':checked');
}
if (value != $field.val()) {
show = false;
}
});
if (show) {
$innercontent.show();
} else {
$innercontent.hide();
}
}
function init_formbuttons() {
$('form.form button').click(function() {
$(this).val($(this).attr('name'));
});
}
function init_gallery() {
if ($.fancybox != undefined) {
$('.ZMSCustom-gallery').each(function() {
var $gallery = $(this);
var $galleryItems = $('.ZMSCustom-gallery_item', $gallery).attr('data-fancybox', $gallery.data('id'));
$galleryItems.fancybox({
buttons: ["zoom", "slideShow", "fullScreen", "thumbs", "close"],
});
});
$('.ZMSCustom-graphic a.btn_zoom').fancybox();
}
}
function init_tooltip_links() {
$('body').delegate('a.tooltip-link', 'click', function(event) {
event.preventDefault();
});
$('body').delegate('a.tooltip-link', 'mouseenter', function() {
$(this).qtip({
overwrite: true,
content: {
text: function() {
var returnvalue = $($(this).attr('href')).clone();
returnvalue.removeClass('tooltip-target');
returnvalue.removeClass('ZMSCustom-contentbox-main-tooltip-target');
return returnvalue;
}
},
hide: {
fixed: true
},
show: {
ready: true
},
position: {
target: 'mouse',
adjust: {
mouse: false,
x: 10
}
},
style: {
classes: 'qtip--target'
}
});
});
}
function init_form_cookification() {
$.fn['cookifyFormfield'] = function(form_id) {
form_cookie = Cookies.getJSON(form_id);
if (!form_cookie) {
form_cookie = {}
}
return this.each(function() {
var $this = $(this), name = $this.attr('id'), value;
if ($this.is( ':checkbox, :radio' )) {
if($this.attr('checked')) {
value = $this.val();
}
} else if ($this.is(':input')) {
value = $this.val();
} else {
value = $this.html();
}
if( typeof value !== 'string' || value === '' ) {
value = null;
}
form_cookie[name] = value;
Cookies.set(form_id, form_cookie);
});
}
cookieFillform = function(form_id) {
form_cookie = Cookies.getJSON(form_id);
if (form_cookie) {
$.each(form_cookie, function(key, value) {
$field = $('#' + key);
if (value !== null) {
if ($field.is(':checkbox, :radio')) {
if ($field.val() === value) {
$field.attr('checked', 'checked');
var container = $field.parentsUntil('div.formfield-input-checkbox').parent();
container.addClass('active');
} else {
$field.removeAttr('checked');
}
} else if ($field.is(':input')) {
$field.val(value);
} else {
$field.html(value);
}
}
});
}
}
}
function init_extern_layout_urls() {
var $links = $('a');
$.each(extern_layout_urls, function(index, value) {
$links.filter('[href^="' + value + '"]').each(function() {
var $this = $(this);
$this.attr('href', ZMS_ROOT + '/extern_' + lang + '.html?src=' + encodeURIComponent($this.attr('href')));
});
});
}
function handle_title_tooltips(selectors) {
$('body').delegate(selectors, 'mouseenter', function(event) {
event.preventDefault();
try {
$(this).data('qtip').show();
} catch(e) {
$(this).qtip({
overwrite: true,
show: {
ready: true
},
position: {
my: 'bottom left',
at: 'top center',
viewport: $(window)
},
style: {
classes: 'qtip-rounded qtip--title',
tip: true
}
});
}
});
}
$(function() {
location_uri = new URI();
location_hash = location_uri.hash();
location_fragment = location_uri.fragment();
$window = $(window);
$document = $(document);
$html = $('html');
$body = $('body');
if (bowser.msie) {
$html.addClass('bowser-msie');
if (!$html.hasClass('msie')) {
$html.addClass('msie');
}
}
init_form_cookification();
init_formfields();
init_formbuttons();
init_gallery();
init_tooltip_links();
init_extern_layout_urls();
});
function init_header_promotion() {
var $header_promotion = $('#header_promotion');
if ($header_promotion.length > 0) {
var data = get_data($header_promotion);
var variant = data['variant'];
if ($body.hasClass('header_promotion-below-navbar')) {
var $navbar = $('#navbar');
$window.resize(function(event) {
var navbar_height = $navbar.height();
$header_promotion.css({
'top': -navbar_height,
'margin-bottom': -navbar_height
});
}).resize();
}
if (variant == 'carousel') {
var $carousel = $('> .objects', $header_promotion);
var $targets = $('.header_promotion_target', $carousel);
var $first_target = $targets.first();
var $play = $('.carousel-play', $carousel);
var $pause = $('.carousel-pause', $carousel);
$play.on('click', function() {
if (!$play.hasClass('active')) {
$carousel.carousel('cycle');
$play.addClass('active');
$pause.removeClass('active');
}
});
$pause.on('click', function() {
if (!$pause.hasClass('active')) {
$carousel.carousel('pause');
$play.removeClass('active');
$pause.addClass('active');
}
});
var slid = function($target, first) {
var $video = $('video', $target);
$video.on('play', function(event) {
$carousel.carousel('pause');
});
$video.on('pause', function(event) {
$carousel.carousel('cycle');
});
if ($video.length > 0) {
var video = $video[0];
video.muted = true;
video.currentTime = 0;
video.play();
}
}
$carousel.on('slide.bs.carousel', function (event) {
$carousel.removeClass('active-' + event.from).removeClass('active-last').addClass('active-' + event.to);
if ($(event.relatedTarget).is(':last-child')) {
$carousel.addClass('active-last');
}
$('video', $carousel).each(function() {
var video = this;
video.muted = true;
video.currentTime = 0;
video.pause();
}).off('play').off('pause');
});
$carousel.on('slid.bs.carousel', function (event) {
slid($(event.relatedTarget));
});
slid($first_target, true);
}
if (variant == 'covers') {
var $objects = $('> .objects', $header_promotion);
var $targets = $('> .innercontent > *', $objects);
$objects.on('click', '.control-prev', function(event) {
event.preventDefault();
var $active = $targets.filter('.active');
var $prev = $active.prev();
if ($prev.length > 0) {
var $prevAll = $active.prevAll();
if ($prevAll.filter(function() {
var $this = $(this);
if ($this.css('opacity') != 1) {
return true;
}
}).length > 0) {
$active.removeClass('active');
$prev.addClass('active');
}
}
});
$objects.on('click', '.control-next', function(event) {
event.preventDefault();
var $active = $targets.filter('.active');
var $next = $active.next();
if ($next.length > 0) {
var $nextAll = $active.nextAll();
if ($nextAll.filter(function() {
var $this = $(this);
if ($this.css('opacity') != 1) {
return true;
}
}).length > 0) {
$active.removeClass('active');
$next.addClass('active');
}
}
});
}
$header_promotion.addClass('loaded');
}
}
$(function() {
init_header_promotion();
});function init_contentbox() {
$('body').delegate('a.btn_toggle_text_details', 'click', function(event) {
event.preventDefault();
$(this).parentsUntil('.text_details').parent().toggleClass('active');
});
if (document.location.toString().match('#')) {
try {
var myAnchor = document.location.toString().split('#')[1];
var $myTarget = $('.ZMSCustom-contentbox-main[data-id="' + myAnchor + '"]');
if ($myTarget.length > 0) {
$('a.btn_toggle_text_details', $myTarget).click();
$('html, body').scrollTop($myTarget.offset().top);
}
} catch(e) {}
}
}
function init_container() {
$('div.ZMSCustom-container-main.limit-contentbox-text').each(function() {
try {
var $container = $(this);
var limit = parseInt($.grep($container.attr('class').split(' '), function(classname) {return classname.startsWith('limit-contentbox-text-')})[0].replace('limit-contentbox-text-', ''));
$('div.ZMSCustom-contentbox-main > .text', $container).each(function() {
var $this = $(this);
var original_content = $this.html();
var ellipsis = '...';
$this.truncate({length: limit, words: true, ellipsis: ellipsis});
if ($this.html() != original_content) {
$this.addClass('truncated');
}
});
} catch(e) {}
});
$('div.ZMSCustom-container-main.link-contentbox div.ZMSCustom-contentbox-main').each(function() {
var $this = $(this);
if ($('> .link', $this).length <= 0) {
var url = $this.data('url');
var link_text = getLangStr('btn_contentbox_link_text', lang);
$('> .title > *', $this).wrap('');
$('
').appendTo($this);
$('.ZMSCustom-graphic-main > *', $this).not('a, .legend').wrap('');
}
});
$('div.ZMSCustom-container-main.collapse-content').each(function() {
var $container = $(this);
var $title = $('> .title', $container);
var $collapsable = $('> .innercontent', $container);
if ($collapsable.length > 0) {
var id = $container.attr('id');
var collapsable_id = id + '-collapsable';
$collapsable.addClass('collapse').attr('id', collapsable_id).on('show.bs.collapse', function() {
$container.addClass('collapse-content-active');
}).on('hide.bs.collapse', function() {
$container.removeClass('collapse-content-active');
});
$title.attr({
'data-toggle': 'collapse',
'aria-expanded': 'false',
'data-target': '#' + collapsable_id,
'aria-controls': collapsable_id
});
if (location_fragment == id || $container.hasClass('collapse-content-active')) {
$collapsable.addClass('show').attr('aria-expanded', 'true');
$title.attr('aria-expanded', 'true')
}
}
});
$window.on('hashchange', function(event) {
var location_uri = new URI();
var location_hash = location_uri.hash();
var location_fragment = location_uri.fragment();
var $target = $(location_hash);
if ($target.length > 0) {
if ($target.is('.ZMSCustom-container.collapse-content')) {
$('> .innercontent', $target).collapse('show');
}
}
});
}
function init_slideshow() {
$('.ZMSCustom-slideshow-main').each(function() {
var $slideshow = $(this);
var id = $slideshow.attr('id');
var data = get_data($slideshow);
var variant = data['variant'];
if (variant == 'carousel') {
var $carousel = $('> .objects', $slideshow).attr('id', id + '_carousel').addClass('carousel slide');
var $targets = $('> *', $carousel);
$targets.wrapAll('');
$targets.addClass('carousel-item');
$targets.first().addClass('active');
if ($targets.length > 1) {
var $prev = $('Previous').appendTo($carousel);
var $next = $('Next').appendTo($carousel);
var $indicators = $('
').appendTo($carousel);
$targets.each(function(index) {
$('').appendTo($indicators);
});
$('> li', $indicators).first().addClass('active');
}
var $statecontrols = $('').appendTo($carousel);
var $play = $('').appendTo($statecontrols);
var $pause = $('').appendTo($statecontrols);
$play.on('click', function() {
if (!$play.hasClass('active')) {
$carousel.carousel('cycle');
$play.addClass('active');
$pause.removeClass('active');
}
});
$pause.on('click', function() {
if (!$pause.hasClass('active')) {
$carousel.carousel('pause');
$play.removeClass('active');
$pause.addClass('active');
}
});
}
if (variant == 'covers') {
var $objects = $('> .objects', $slideshow);
var $targets = $('> .innercontent > *', $objects);
$objects.on('click', '.control-prev', function(event) {
event.preventDefault();
var $active = $targets.filter('.active');
var $prev = $active.prev();
if ($prev.length > 0) {
var $prevAll = $active.prevAll();
if ($prevAll.filter(function() {
var $this = $(this);
if ($this.css('opacity') != 1) {
return true;
}
}).length > 0) {
$active.removeClass('active');
$prev.addClass('active');
}
}
});
$objects.on('click', '.control-next', function(event) {
event.preventDefault();
var $active = $targets.filter('.active');
var $next = $active.next();
if ($next.length > 0) {
var $nextAll = $active.nextAll();
if ($nextAll.filter(function() {
var $this = $(this);
if ($this.css('opacity') != 1) {
return true;
}
}).length > 0) {
$active.removeClass('active');
$next.addClass('active');
}
}
});
}
$slideshow.addClass('loaded');
});
}
function init_tabcontainer() {
$('.ZMSCustom-tabcontainer-main').each(function() {
var $container = $(this).addClass('loaded');
var container_id = $container.attr('id');
var $navigation = $('> .navigation', $container);
var $content = $('> .items', $container);
var init_tab_content = function($tab) {
$('.ZMSCustom-locationsmap-main', $tab).each(function() {
load_locationsmap($(this));
});
$('.ZMSCustom-locationmap-main', $tab).each(function() {
load_locationmap($(this));
});
}
$('a', $navigation).on('shown.bs.tab', function(e) {
var $this = $(this);
var target_href = $this.attr('href');
var $new_target = $(target_href, $container);
Cookies.set(container_id, target_href);
init_tab_content($new_target);
});
$('a', $navigation).on('click', function(e) {
var $this = $(this);
var target_href = $this.attr('href');
var $new_target = $(target_href, $container);
var $active = $('.ZMSCustom-tabcontainer-main.active');
if ($new_target.attr('id') == $active.attr('id')) {
init_tab_content($new_target);
}
});
var tabbed = false;
if (document.location.toString().match('#')) {
var myAnchor = '#' + document.location.toString().split('#')[1];
if (myAnchor.length > 1 && $(myAnchor).length > 0 && $('a[href="' + myAnchor + '"]', $navigation).length > 0) {
$('a[href="' + myAnchor + '"]', $navigation).trigger('click');
tabbed = true;
}
}
if (!tabbed && Cookies.get(container_id)) {
$('a[href="' + Cookies.get(container_id) + '"]', $navigation).trigger('click');
tabbed = true;
}
if (!tabbed) {
init_tab_content($('.ZMSCustom-tabcontainer_item-main.active'));
}
});
}
function init_video() {
$('.ZMSCustom-video-main').each(function() {
var $this = $(this);
var $video = $('video', $this);
var video = $video[0];
$this.on('click', function(event) {
if (video.paused) {
video.play();
} else {
video.pause();
}
});
if ($video[0].paused) {
$this.addClass('paused');
} else {
$this.removeClass('paused');
}
$video.on('play', function() {
$this.removeClass('paused');
});
$video.on('pause', function() {
$this.addClass('paused');
});
});
}
$(function() {
init_contentbox();
init_container();
init_slideshow();
init_tabcontainer();
init_video();
});$(function() {
$body.on('focus', 'fieldset.formfieldgroup_suggestions input', function(event) {
this.select();
});
});var map_marker_icons = {};
function init_locationobjects() {
var $locationmap = $('.ZMSCustom-locationmap-main');
var $locationsmap = $('.ZMSCustom-locationsmap-main');
if ($locationmap.length > 0 || $locationsmap.length > 0) {
var libraries = ['geometry'];
var api_uri = new URI('//maps.googleapis.com/maps/api/js').addQuery({
sensor: false,
language: language_codes[lang]['iso-639-1'],
async: 2,
callback: 'jQuery.noop'
});
if (google_api_key) {
libraries.push('places');
api_uri.addQuery({
key: google_api_key,
});
}
api_uri.addQuery({
libraries: libraries.join()
});
$.getScript(api_uri.toString());
}
$locationmap.not($('.ZMSCustom-tabcontainer-main .ZMSCustom-locationmap-main')).each(function() {
load_locationmap($(this));
});
$locationsmap.not($('.ZMSCustom-tabcontainer-main .ZMSCustom-locationsmap-main')).each(function() {
load_locationsmap($(this));
});
}
var load_map_wait = 50;
function load_locationmap($locationmap) {
if (!$locationmap.hasClass('loaded')) {
if (typeof(google) == undefined) {
load_map_wait += 50;
setTimeout(function() {
load_locationmap($locationmap);
}, load_map_wait);
} else {
try {
var data = $locationmap.data();
var $location = $('.location', $locationmap);
var $location_address = $('.location_address', $location);
var map_center = new google.maps.LatLng(data['latitude']+0.005, data['longitude']);
var options = {
zoom: data['zoom'],
center: map_center,
mapTypeId: google.maps.MapTypeId[data['maptypeid']]
}
var map = new google.maps.Map($('.map_canvas', $locationmap)[0], options);
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(data['latitude'], data['longitude']),
title: $.trim($('.fn', $location_address).text())
});
var markerInfo = new google.maps.InfoWindow({
content: $location[0],
pixelOffset: new google.maps.Size(5, 5),
});
markerInfo.open(map, marker);
google.maps.event.addListener(marker, 'click', function() {
markerInfo.open(map,marker);
});
var resize = function() {
map.setCenter(map_center);
}
$locationmap.addClass('loaded');
google.maps.event.addDomListener(window, 'resize', resize);
resize();
} catch (e) {
load_map_wait += 50;
setTimeout(function() {
load_locationmap($locationmap);
}, load_map_wait);
}
}
}
}
function load_locationsmap($locationsmap) {
if (!$locationsmap.hasClass('loaded')) {
if (typeof(google) == undefined) {
load_map_wait += 50;
setTimeout(function() {
load_locationsmap($locationsmap);
}, load_map_wait);
} else {
try {
var map_marker_icons_keys = Object.keys(map_marker_icons);
var data = $locationsmap.data();
var $map_canvas = $('.map_canvas', $locationsmap);
var map = new google.maps.Map($map_canvas[0], {
zoom: 1,
mapTypeId: google.maps.MapTypeId[data['maptypeid']],
});
var markerInfo = new google.maps.InfoWindow({
pixelOffset: new google.maps.Size(5, 5)
});
var map_bounds = new google.maps.LatLngBounds();
var places = {};
var $locationsoverview = $('.ZMSCustom-locationsoverview-main');
$('.location', $locationsmap).each(function() {
var location = this;
var $location = $(location);
var $location_address = $('.address', $location);
var $location_links = $('.links', $location);
var location_data = $location.data();
var location_LatLng = new google.maps.LatLng(location_data['latitude'], location_data['longitude']);
map_bounds.extend(location_LatLng);
var marker = new google.maps.Marker({
map: map,
position: location_LatLng,
title: $.trim($('.fn', $location_address).text())
});
var marker_icon;
var marker_icon_keys = $.grep(map_marker_icons_keys, function(key) {return $location.hasClass(key);});
if (marker_icon_keys.length == 1) {
marker_icon = map_marker_icons[marker_icon_keys[0]];
} else if (marker_icon_keys.length > 1) {
marker_icon = map_marker_icons[marker_icon_keys.join(' ')];
}
if (marker_icon != undefined) {
marker.setIcon(marker_icon);
}
google.maps.event.addListener(marker, 'click', function() {
markerInfo.setContent(location);
markerInfo.open(map,marker);
});
places[location_data['id']] = {
LatLng: location_LatLng,
marker: marker,
location: location,
$location: $location,
$overview_location: $('.ZMSCustom-location-short[data-id="' + location_data['id'] + '"]', $locationsoverview)
}
});
map.setCenter(map_bounds.getCenter());
map.fitBounds(map_bounds);
var $form_filter_userlocation = $('form.form_locations_filter_userlocation', $locationsmap).on('submit', function(event) {
event.preventDefault();
});
if ($form_filter_userlocation.length > 0) {
var usermarker;
var autocomplete = new google.maps.places.Autocomplete(
$('.formfield_userlocation input', $form_filter_userlocation)[0],
{
types: ['(regions)'],
}
);
autocomplete.addListener('place_changed', function() {
var userplace = autocomplete.getPlace();
if (!userplace.geometry) {
// User entered the name of a Place that was not suggested and pressed the Enter key, or the Place Details request failed.
window.alert('Ich konnte Ihren Standort "' + userplace.name + '" nicht finden');
return;
}
if (usermarker) {
usermarker.setMap(null);
}
usermarker = new google.maps.Marker({
map: map,
position: userplace.geometry.location,
title: 'Ihr Standort',
icon: {
path: google.maps.SymbolPath.CIRCLE,
scale: 10,
fillColor: 'black',
fillOpacity: 0.8,
strokeColor: 'green',
strokeOpacity: 0.8
}
});
var places_array = $.map(places, function(place, place_id) {
place['distance'] = google.maps.geometry.spherical.computeDistanceBetween(userplace.geometry.location, place['LatLng']);
return place;
});
places_array.sort(function(a,b) {return a['distance'] - b['distance']});
var new_bounds = new google.maps.LatLngBounds();
new_bounds.extend(userplace.geometry.location);
for (i = 0; i < places_array.length; i++) {
new_bounds.extend(places_array[i]['LatLng']);
if (i>=5) {
break;
}
}
map.setCenter(new_bounds.getCenter());
map.fitBounds(new_bounds);
});
}
var $form_filter_services = $('form.form_locations_filter_services', $locationsmap).on('submit', function(event) {event.preventDefault();});
if ($form_filter_services.length > 0) {
var $inputs = $('input', $form_filter_services);
$inputs.on('change', function(event) {
var values = $inputs.fieldValue();
var new_bounds = new google.maps.LatLngBounds();
var count = 0;
$.each(places, function(place_index, place) {
var $location = place['$location'];
var show = true;
$.each(values, function(value_index, value) {
if (!$location.hasClass('has_service_' + value)) {
show = false;
}
});
if (show) {
count++;
new_bounds.extend(place['LatLng']);
place['marker'].setVisible(true);
} else {
place['marker'].setVisible(false);
}
});
if (count > 0) {
map.setCenter(new_bounds.getCenter());
map.fitBounds(new_bounds);
} else {
map.setCenter(map_bounds.getCenter());
map.fitBounds(map_bounds);
}
});
}
var $form_filter_userlocation_services = $('form.form_locations_filter_userlocation_services', $locationsmap).on('submit', function(event) {
event.preventDefault();
});
if ($form_filter_userlocation_services.length > 0) {
var do_filter = function() {
var new_bounds = new google.maps.LatLngBounds();
var filtered_places = {};
var services_values = $services_inputs.fieldValue();
$.each(places, function(place_index, place) {
var $location = place['$location'];
var show = true;
$.each(services_values, function(value_index, value) {
if (!$location.hasClass('has_service_' + value)) {
show = false;
}
});
if (show) {
filtered_places[place_index] = place;
place['marker'].setVisible(true);
} else {
place['marker'].setVisible(false);
}
});
new_userplace = autocomplete.getPlace();
if (!userplace || !new_userplace || userplace.place_id != new_userplace.place_id) {
userplace = new_userplace;
if (usermarker) {
usermarker.setMap(null);
usermarker = undefined;
}
}
if (userplace && userplace.place_id) {
if (!usermarker) {
usermarker = new google.maps.Marker({
map: map,
position: userplace.geometry.location,
title: 'Ihr Standort',
icon: {
path: google.maps.SymbolPath.CIRCLE,
scale: 10,
fillColor: 'black',
fillOpacity: 0.8,
strokeColor: 'green',
strokeOpacity: 0.8
}
});
}
var places_array = $.map(filtered_places, function(place, place_index) {
place['distance'] = google.maps.geometry.spherical.computeDistanceBetween(userplace.geometry.location, place['LatLng']);
return place;
});
places_array.sort(function(a,b) {return a['distance'] - b['distance']});
new_bounds.extend(userplace.geometry.location);
for (i = 0; i < places_array.length; i++) {
new_bounds.extend(places_array[i]['LatLng']);
if (i >= 3) {
break;
}
}
} else {
$.each(filtered_places, function(place_index, place) {
new_bounds.extend(place['LatLng']);
});
}
map.setCenter(new_bounds.getCenter());
map.fitBounds(new_bounds);
}
var usermarker, userplace;
var $userlocation_input = $('.formfield_userlocation input', $form_filter_userlocation_services);
var $services_inputs = $('.formfield_services input', $form_filter_userlocation_services);
var autocomplete = new google.maps.places.Autocomplete(
$userlocation_input[0],
{
types: ['(regions)'],
bounds: map_bounds,
strictbounds: true
}
);
autocomplete.addListener('place_changed', function() {
do_filter();
});
$userlocation_input.on('change', function(event) {
if ($(this).val().trim().length == 0) {
autocomplete.set('place', undefined);
do_filter();
}
});
$services_inputs.on('change', function(event) {
do_filter();
});
}
var changed = function() {
if (data['bind_locationsoverview'] || data['bind_locationsoverview'] == 'True' || data['bind_locationsoverview'] == 1 || data['bind_locationsoverview'] == '1') {
current_bounds = map.getBounds();
$.each(places, function(place_index, place) {
var show = false;
if (place['marker'].getVisible() && current_bounds.contains(place['marker'].getPosition())) {
show = true;
}
if (show) {
place['$overview_location'].show();
} else {
place['$overview_location'].hide();
}
});
}
}
$map_canvas.data(
{
map: map,
map_bounds: map_bounds,
map_places: places,
map_markerInfo: markerInfo
}
);
$locationsmap.addClass('loaded');
google.maps.event.addListener(map, 'idle', function() {
changed();
});
google.maps.event.addDomListener(window, 'resize', function() {
google.maps.event.trigger(map, 'resize');
});
} catch (e) {
load_map_wait += 50;
setTimeout(function() {
load_locationsmap($locationsmap);
}, load_map_wait);
}
}
}
}
function load_locationsfilter($locationsfilter) {
if (typeof(google) == typeof(undefined)) {
load_map_wait += 50;
setTimeout(function() {
load_locationsfilter($locationsfilter);
}, load_map_wait);
} else {
var data = get_data($locationsfilter);
var $input = $('input', $locationsfilter);
var input = $input[0];
var $targets = $($.map(data['targets'], function(target) {
return '#' + target;
}).join(', '));
var autocomplete = new google.maps.places.Autocomplete(
input,
{
types: ['(regions)']
}
);
autocomplete.addListener('place_changed', function() {
var place = autocomplete.getPlace();
if (!place.geometry) {
// User entered the name of a Place that was not suggested and pressed the Enter key, or the Place Details request failed.
window.alert('Ich konnte Ihren Standort "' + place.name + '" nicht finden');
return;
}
$targets.each(function() {
var $target = $(this);
if ($target.hasClass('ZMSCustom-locationsmap')) {
var $map_canvas = $('.map_canvas', $target);
var data = $map_canvas.data();
var map_places = data['map_places'];
map_places_array = $.map(map_places, function(map_place, map_place_id) {
map_place['distance'] = google.maps.geometry.spherical.computeDistanceBetween(place.geometry.location, map_place['LatLng']);
return map_place;
});
map_places_array.sort(function(a,b) {return a['distance'] - b['distance']});
var map_bounds = new google.maps.LatLngBounds();
map_bounds.extend(place.geometry.location);
map_bounds.extend(map_places_array[0]['LatLng']);
var map = data['map'];
map.setCenter(map_bounds.getCenter());
map.fitBounds(map_bounds);
// if (place.geometry.viewport) {
// map.fitBounds(place.geometry.viewport);
// } else {
// map.setCenter(place.geometry.location);
// map.setZoom(17);
// }
}
})
});
}
}
$(function() {
init_locationobjects();
});function init_shop_basket_cart() {
$('body').delegate('.ZMSCustom-shop_basket-main form.form_cart input.field_amount', 'focus', function() {
$(this).select();
});
}
function init_shop_basket_orderdata() {
var $form_shop_basket_orderdata = $('.ZMSCustom-shop_basket-main form.form_orderdata');
if ($form_shop_basket_orderdata.length > 0) {
var $formradiolist_shipping_selection_inputs = $('#formradiolist_orderdata_shipping_selection input');
var $formfieldset_delivery_address = $('#formfieldset_orderdata_delivery_address');
var $formfieldset_delivery_address_innercontent = $('> .innercontent', $formfieldset_delivery_address);
var $field_input_delivery_address_eq_billing_address = $('#field_input_orderdata_delivery_address_eq_billing_address');
$formradiolist_shipping_selection_inputs.on('change', function(event) {
var $checked_input = $formradiolist_shipping_selection_inputs.filter(':checked');
var checked_value = $checked_input.val();
if (checked_value == 'delivery') {
$formfieldset_delivery_address.show();
} else {
$formfieldset_delivery_address.hide();
}
});
$field_input_delivery_address_eq_billing_address.on('change', function(event) {
if ($(this).is(':checked')) {
$formfieldset_delivery_address_innercontent.hide();
} else {
$formfieldset_delivery_address_innercontent.show();
}
});
$formradiolist_shipping_selection_inputs.trigger('change');
$field_input_delivery_address_eq_billing_address.trigger('change');
}
}
function init_shop_basket_terms() {
if ($.fancybox != undefined) {
$('#formfield_orderdata_terms_terms_link a').attr({'data-type': 'ajax', 'data-filter': '#content'}).fancybox({
baseClass: 'fancybox-shop_terms',
});
$('#formfield_orderdata_terms_age_info a').attr({'data-type': 'ajax', 'data-filter': '#age_limitations'}).fancybox({
baseClass: 'fancybox-shop_terms_age',
});
} else if ($.nmManual != undefined ){
$('body').delegate('#formfield_orderdata_terms_terms_link a, #formfield_orderdata_terms_age_info a', 'click', function(event) {
if (!event.ctrlKey && !event.altKey && !event.shiftKey) {
event.preventDefault();
try {
$.nmManual(
$(this).attr('href') + '?contentonly=1',
{
title: getLangStr('label_shop_terms', lang, 'shop_objects'),
callbacks: {
beforeShowCont: function(nm) {
if (nm.store.title) {
nm.store.title.remove();
}
nm.store.title = $('', {
text: nm.title
}).addClass('nyroModalTitle nmReposition');
nm.elts.cont.prepend(nm.store.title);
},
close: function(nm) {
if (nm.store.title) {
nm.store.title.remove();
nm.store.title = undefined;
delete(nm.store.title);
}
}
}
}
);
} catch(e) {}
}
});
}
}
function init_shop_restricted_delivera_area() {
if ($.fancybox != undefined) {
$('.formfield_restricted_delivery_area a, .restricted_delivery_area a').attr({'data-type': 'ajax', 'data-filter': '#content'}).fancybox({
baseClass: 'fancybox-shop_restricted_delivera_area',
});
}
}
function init_shop_form_add_article() {
var lang_package = 'shop_objects';
$body.on('submit', 'form.form_add_article', function(event) {
if (!event.ctrlKey && !event.altKey && !event.shiftKey) {
event.preventDefault();
var $this = $(this);
var $modal = $('#add_shop_basket_cart_item_response');
if ($modal.length == 0) {
var $modal = $('');
}
var $modalContent = $('.modal-content', $modal);
$modalContent.html('');
$modal.modal();
$.post({
url: 'shop_utils/ajax_add_shop_basket_cart_item',
data: $this.serializeArray(),
success: function(data) {
$modal.removeClass('loading').addClass('success');
$modalContent.html(data['modal']['content']);
try {
console.log(data['body_shop_basket_content']);
var $body_shop_basket_content = $('#body_shop_basket_content');
$body_shop_basket_content.html(data['body_shop_basket_content']);
} catch(e) {console.log(e);}
},
error: function() {
$modal.removeClass('loading').addClass('error')
}
});
}
});
}
function init_shop_article_variants() {
var main_pjax = new Pjax({
elements: 'no-elements-by-default',
selectors: ['#content']
});
var short_pjax = new Pjax({
elements: 'no-elements-by-default',
selectors: ['no-elements-by-default']
});
$body.on('change', '.shop_article-variant-selector input, .shop_article-variant-selector select', function(event) {
var $this = $(this);
var $form = $this.parents('form').first();
var form_data = $.grep($form.serializeArray(), function(item) {
return item['name'] != 'form_name' && item['name'] != 'add_article_id';
});
var $shop_article = $this.parents('.ZMSCustom-shop_article').first();
if ($shop_article.is('.ZMSCustom-shop_article-main')) {
var pjax_success = function(event) {
$('#content .ZMSCustom-shop_article-main').each(function() {
init_shop_article_mediaobjects(this);
});
}
$document.on('pjax:success', pjax_success);
main_pjax.loadUrl(location.href, {
requestOptions: {
requestMethod: 'GET',
requestParams: form_data
},
cacheBust: false
});
} else if ($shop_article.is('.ZMSCustom-shop_article-short')) {
form_data.push({
name: 'contentonly',
value: 1
});
form_data.push({
name: 'render',
value: 'short'
});
$.post({
url: $shop_article.data('url'),
data: form_data,
success: function(data) {
$('.field_label', $shop_article).each(function() {$(this).tooltip('dispose');});
$shop_article.replaceWith($(data));
}
});
}
});
$body.on('mouseenter', '.shop_article-variant-selector.images .field_label', function(event) {
var $this = $(this);
$this.attr('title', $('.label-text', $this).text());
$this.tooltip('show');
});
}
function init_shop_article_mediaobjects($shop_article) {
$('.mediaobject a', $shop_article).each(function() {
var $this = $(this);
var rel = $this.attr('rel');
if (rel != undefined) {
$this.attr('data-fancybox', rel);
}
}).fancybox({
baseClass: 'fancybox-shop_article-mediaobjects',
buttons: ["zoom", "slideShow", "fullScreen", "thumbs", "close"],
});
}
$(function() {
init_shop_basket_cart();
init_shop_basket_orderdata();
init_shop_basket_terms();
init_shop_restricted_delivera_area();
init_shop_form_add_article();
init_shop_article_variants();
$('.ZMSCustom-shop_article-main').each(function() {
init_shop_article_mediaobjects($(this));
});
$('.shop_articles-slideshow').each(function() {
var $initiator = $initiator;
var $slideshow = $('.shop_articles', $initiator);
var $slides = $('.ZMSCustom-shop_article-short', $slideshow);
console.log($slides.length);
var $prev = $('').appendTo($slideshow);
var $next = $('').appendTo($slideshow);
$slides.first().addClass('active');
$prev.on('click', function(event) {
event.preventDefault();
var $active = $slides.filter('.active');
var $prevSlide = $active.prev();
if ($prevSlide.length > 0) {
var $prevSlides = $active.prevAll();
if ($prevSlides.filter(function() {
if ($(this).css('opacity') != 1) {
return true;
}
}).length > 0) {
$active.removeClass('active');
$prevSlide.addClass('active');
}
}
});
$next.on('click', function(event) {
event.preventDefault();
var $active = $slides.filter('.active');
var $nextSlide = $active.next();
if ($nextSlide.length > 0) {
var $nextSlides = $active.nextAll();
if ($nextSlides.filter(function() {
if ($(this).css('opacity') != 1) {
return true;
}
}).length > 0) {
$active.removeClass('active');
$nextSlide.addClass('active');
}
}
});
});
});
function init_shop_search() {
// shop search
var $form_shop_search = $('form.form_shop_search');
var $shop_search = $('.ZMSCustom-shop_search-main');
// shop search - dropdown
$form_shop_search.on('mouseenter', '> .innercontent > *', function(event) {
//$(this).addClass('hover').siblings().removeClass('clicked');
}).on('mouseleave', '> .innercontent > *', function(event) {
//$(this).removeClass('hover').siblings().removeClass('clicked');
}).on('click', '> .innercontent > * > legend', function(event) {
var $this = $(this);
var $container = $this.parent();
$container.toggleClass('clicked').removeClass('hover').siblings().removeClass('clicked');
$('*[data-provide="slider"]').bootstrapSlider('relayout');
}).on('click', '> .innercontent > *', function(event) {
event.stopPropagation();
});
$body.on('click', function(event) {
$('> .innercontent > *', $form_shop_search).removeClass('clicked');
});
// shop_search
var pjax_complete = function(event) {
$shop_search.removeClass('loading');
var notify = $body.data('shop_search-notification');
notify.update({
type: 'shop_search-success',
title: 'Filter angewendet',
message: 'zur Artikelansicht'
});
setTimeout(function() {
notify.close();
}, 2000);
}
var pjax_popstate = function(event) {
event.preventDefault();
location.href = event.delegateTarget.URL;
}
$document.on('pjax:complete', pjax_complete);
$document.on('pjax:popstate', pjax_popstate);
$body.on('click', '.alert-shop_search-success', function(event) {
try {$body.data('shop_search-notification').close();} catch(e) {}
});
var execute_shop_search = function() {
if ($shop_search.length > 0) {
try {$body.data('shop_search-notification').close();} catch(e) {}
var notify = $.notify(
{
title: 'ich filtere ...',
message: '',
url: '#e25182',
target: '_self'
},
{
type: 'shop_search-submit',
delay: 0,
newest_on_top: true,
placement: {
from: 'bottom',
align: 'center'
},
animate: {
enter: 'animated bounceInUp',
exit: 'animated bounceOutDown'
}
}
);
$body.data('shop_search-notification', notify);
$shop_search.addClass('loading');
var values = $form_shop_search.serialize();
$.pjax({url: 'shop_utils/ajax_shop_search?' + values, container: '#' + $shop_search.attr('id')});
} else {
$form_shop_search.submit();
}
}
$('input[data-provide="slider"]', $form_shop_search).on('slideStop', function(event) {
execute_shop_search();
});
$form_shop_search.on('change', 'input[data-provide!="slider"]:not(.formfieldset_display input), select', function(event) {
execute_shop_search();
}).on('change', '.formfieldset_display input', function(event) {
var $this = $(this);
var name = $this.attr('name');
if ($(this).is(':checked')) {
$shop_search.addClass(name + '-1').removeClass(name + '-0');
} else {
$shop_search.addClass(name + '-0').removeClass(name + '-1');
}
});
}
$(function() {
if ('ontouchstart' in document.documentElement) {
$html.addClass('touchscreen');
}
$('form').attr('role', 'form');
$('#body_search').attr('role', 'search');
var $navigation = $('#navigation');
$navigation.on('mouseenter', 'li', function(event) {
$(this).addClass('hover');
}).on('mouseleave', 'li', function(event) {
$(this).removeClass('hover');
}).on('click', 'li', function(event) {
event.stopPropagation();
var $this = $(this);
$this.toggleClass('clicked');
}).on('click', 'a', function(event) {
event.stopPropagation();
});
$('a', $navigation).removeAttr('title');
$('li.active', $navigation).addClass('clicked');
handle_title_tooltips('.ZMSCustom-graphic_btn_zoom');
var $searchbar = $('#searchbar');
var $body_search_input = $('#field_input_body_search_q');
$searchbar.on('show.bs.collapse', function (event) {
$body.addClass('header_search_active');
}).on('shown.bs.collapse', function(event) {
$body_search_input.focus();
}).on('hide.bs.collapse', function(event) {
$body.removeClass('header_search_active');
});
init_shop_search();
});