PageSourceSearch

https://www.golfkuessnacht.ch/typo3temp/assets/compressed/merged-3…833d9d37744e7c7e70d01ec79-min.js?1791103107

js golfkuessnacht.ch collected 2026-10-04 08:38:49 UTC 43,308 bytes, 63 lines download raw bytes

vendor: 20,355 bytes, line 1
1var markerClusterer=function(t){"use strict";function e(t,e){var s={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(s[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(s[r[o]]=t[r[o]])}return s}class s{static isAdvancedMarkerAvailable(t){return google.maps.marker&&!0===t.getMapCapabilities().isAdvancedMarkersAvailable}static isAdvancedMarker(t){return google.maps.marker&&t instanceof google.maps.marker.AdvancedMarkerElement}static setMap(t,e){this.isAdvancedMarker(t)?t.map=e:t.setMap(e)}static getPosition(t){if(this.isAdvancedMarker(t)){if(t.position){if(t.position instanceof google.maps.LatLng)return t.position;if(t.position.lat&&t.position.lng)return new google.maps.LatLng(t.position.lat,t.position.lng)}return new google.maps.LatLng(null)}return t.getPosition()}static getVisible(t){return!!this.isAdvancedMarker(t)||t.getVisible()}}class r{constructor(t){let{markers:e,position:s}=t;this.markers=e,s&&(s instanceof google.maps.LatLng?this._position=s:this._position=new google.maps.LatLng(s))}get bounds(){if(0===this.markers.length&&!this._position)return;const t=new google.maps.LatLngBounds(this._position,this._position);for(const e of this.markers)t.extend(s.getPosition(e));return t}get position(){return this._position||this.bounds.getCenter()}get count(){return this.markers.filter((t=>s.getVisible(t))).length}push(t){this.markers.push(t)}delete(){this.marker&&(s.setMap(this.marker,null),this.marker=void 0),this.markers.length=0}}const o=(t,e,r,o)=>{const n=i(t.getBounds(),e,o);return r.filter((t=>n.contains(s.getPosition(t))))},i=(t,e,s)=>{const{northEast:r,southWest:o}=h(t,e),i=l({northEast:r,southWest:o},s);return c(i,e)},n=(t,e,s)=>{const r=i(t,e,s),o=r.getNorthEast(),n=r.getSouthWest();return[n.lng(),n.lat(),o.lng(),o.lat()]},a=(t,e)=>{const s=(e.lat-t.lat)*Math.PI/180,r=(e.lng-t.lng)*Math.PI/180,o=Math.sin(s/2),i=Math.sin(r/2),n=o*o+Math.cos(t.lat*Math.PI/180)*Math.cos(e.lat*Math.PI/180)*i*i;return 6371*(2*Math.atan2(Math.sqrt(n),Math.sqrt(1-n)))},h=(t,e)=>({northEast:e.fromLatLngToDivPixel(t.getNorthEast()),southWest:e.fromLatLngToDivPixel(t.getSouthWest())}),l=(t,e)=>{let{northEast:s,southWest:r}=t;return s.x+=e,s.y-=e,r.x-=e,r.y+=e,{northEast:s,southWest:r}},c=(t,e)=>{let{northEast:s,southWest:r}=t;const o=e.fromDivPixelToLatLng(r),i=e.fromDivPixelToLatLng(s);return new google.maps.LatLngBounds(o,i)};class u{constructor(t){let{maxZoom:e=16}=t;this.maxZoom=e}noop(t){let{markers:e}=t;return m(e)}}class p extends u{constructor(t){var{viewportPadding:s=60}=t;super(e(t,["viewportPadding"])),this.viewportPadding=60,this.viewportPadding=s}calculate(t){let{markers:e,map:s,mapCanvasProjection:r}=t;return s.getZoom()>=this.maxZoom?{clusters:this.noop({markers:e}),changed:!1}:{clusters:this.cluster({markers:o(s,r,e,this.viewportPadding),map:s,mapCanvasProjection:r})}}}const m=t=>t.map((t=>new r({position:s.getPosition(t),markers:[t]})));function d(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var g=function t(e,s){if(e===s)return!0;if(e&&s&&"object"==typeof e&&"object"==typeof s){if(e.constructor!==s.constructor)return!1;var r,o,i;if(Array.isArray(e)){if((r=e.length)!=s.length)return!1;for(o=r;0!=o--;)if(!t(e[o],s[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===s.source&&e.flags===s.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===s.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===s.toString();if((r=(i=Object.keys(e)).length)!==Object.keys(s).length)return!1;for(o=r;0!=o--;)if(!Object.prototype.hasOwnProperty.call(s,i[o]))return!1;for(o=r;0!=o--;){var n=i[o];if(!t(e[n],s[n]))return!1}return!0}return e!=e&&s!=s},f=d(g);const k=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class w{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[e,s]=new Uint8Array(t,0,2);if(219!==e)throw new Error("Data does not appear to be in a KDBush format.");const r=s>>4;if(1!==r)throw new Error(`Got v${r} data when expected v1.`);const o=k[15&s];if(!o)throw new Error("Unrecognized array type.");const[i]=new Uint16Array(t,2,1),[n]=new Uint32Array(t,4,1);return new w(n,i,o,t)}constructor(t,e=64,s=Float64Array,r){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=s,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const o=k.indexOf(this.ArrayType),i=2*t*this.ArrayType.BYTES_PER_ELEMENT,n=t*this.IndexArrayType.BYTES_PER_ELEMENT,a=(8-n%8)%8;if(o<0)throw new Error(`Unexpected typed array class: ${s}.`);r&&r instanceof ArrayBuffer?(this.data=r,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+n+a,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+i+n+a),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+n+a,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+o]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t)}add(t,e){const s=this._pos>>1;return this.ids[s]=s,this.coords[this._pos++]=t,this.coords[this._pos++]=e,s}finish(){const t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return y(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,s,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:o,coords:i,nodeSize:n}=this,a=[0,o.length-1,0],h=[];for(;a.length;){const l=a.pop()||0,c=a.pop()||0,u=a.pop()||0;if(c-u<=n){for(let n=u;n<=c;n++){const a=i[2*n],l=i[2*n+1];a>=t&&a<=s&&l>=e&&l<=r&&h.push(o[n])}continue}const p=u+c>>1,m=i[2*p],d=i[2*p+1];m>=t&&m<=s&&d>=e&&d<=r&&h.push(o[p]),(0===l?t<=m:e<=d)&&(a.push(u),a.push(p-1),a.push(1-l)),(0===l?s>=m:r>=d)&&(a.push(p+1),a.push(c),a.push(1-l))}return h}within(t,e,s){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:r,coords:o,nodeSize:i}=this,n=[0,r.length-1,0],a=[],h=s*s;for(;n.length;){const l=n.pop()||0,c=n.pop()||0,u=n.pop()||0;if(c-u<=i){for(let s=u;s<=c;s++)C(o[2*s],o[2*s+1],t,e)<=h&&a.push(r[s]);continue}const p=u+c>>1,m=o[2*p],d=o[2*p+1];C(m,d,t,e)<=h&&a.push(r[p]),(0===l?t-s<=m:e-s<=d)&&(n.push(u),n.push(p-1),n.push(1-l)),(0===l?t+s>=m:e+s>=d)&&(n.push(p+1),n.push(c),n.push(1-l))}return a}}function y(t,e,s,r,o,i){if(o-r<=s)return;const n=r+o>>1;M(t,e,n,r,o,i),y(t,e,s,r,n-1,1-i),y(t,e,s,n+1,o,1-i)}function M(t,e,s,r,o,i){for(;o>r;){if(o-r>600){const n=o-r+1,a=s-r+1,h=Math.log(n),l=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*l*(n-l)/n)*(a-n/2<0?-1:1);M(t,e,s,Math.max(r,Math.floor(s-a*l/n+c)),Math.min(o,Math.floor(s+(n-a)*l/n+c)),i)}const n=e[2*s+i];let a=r,h=o;for(v(t,e,r,s),e[2*o+i]>n&&v(t,e,r,o);a<h;){for(v(t,e,a,h),a++,h--;e[2*a+i]<n;)a++;for(;e[2*h+i]>n;)h--}e[2*r+i]===n?v(t,e,r,h):(h++,v(t,e,h,o)),h<=s&&(r=h+1),s<=h&&(o=h-1)}}function v(t,e,s,r){x(t,s,r),x(e,2*s,2*r),x(e,2*s+1,2*r+1)}function x(t,e,s){const r=t[e];t[e]=t[s],t[s]=r}function C(t,e,s,r){const o=t-s,i=e-r;return o*o+i*i}const P={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:t=>t},_=Math.fround||(E=new Float32Array(1),t=>(E[0]=+t,E[0]));var E;const A=3,b=5,L=6;class O{constructor(t){this.options=Object.assign(Object.create(P),t),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(t){const{log:e,minZoom:s,maxZoom:r}=this.options;e&&console.time("total time");const o=`prepare ${t.length} points`;e&&console.time(o),this.points=t;const i=[];for(let e=0;e<t.length;e++){const s=t[e];if(!s.geometry)continue;const[r,o]=s.geometry.coordinates,n=_(T(r)),a=_(j(o));i.push(n,a,1/0,e,-1,1),this.options.reduce&&i.push(0)}let n=this.trees[r+1]=this._createTree(i);e&&console.timeEnd(o);for(let t=r;t>=s;t--){const s=+Date.now();n=this.trees[t]=this._createTree(this._cluster(n,t)),e&&console.log("z%d: %d clusters in %dms",t,n.numItems,+Date.now()-s)}return e&&console.timeEnd("total time"),this}getClusters(t,e){let s=((t[0]+180)%360+360)%360-180;const r=Math.max(-90,Math.min(90,t[1]));let o=180===t[2]?180:((t[2]+180)%360+360)%360-180;const i=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)s=-180,o=180;else if(s>o){const t=this.getClusters([s,r,180,i],e),n=this.getClusters([-180,r,o,i],e);return t.concat(n)}const n=this.trees[this._limitZoom(e)],a=n.range(T(s),j(i),T(o),j(r)),h=n.data,l=[];for(const t of a){const e=this.stride*t;l.push(h[e+b]>1?Z(h,e,this.clusterProps):this.points[h[e+A]])}return l}getChildren(t){const e=this._getOriginId(t),s=this._getOriginZoom(t),r="No cluster with the specified id.",o=this.trees[s];if(!o)throw new Error(r);const i=o.data;if(e*this.stride>=i.length)throw new Error(r);const n=this.options.radius/(this.options.extent*Math.pow(2,s-1)),a=i[e*this.stride],h=i[e*this.stride+1],l=o.within(a,h,n),c=[];for(const e of l){const s=e*this.stride;i[s+4]===t&&c.push(i[s+b]>1?Z(i,s,this.clusterProps):this.points[i[s+A]])}if(0===c.length)throw new Error(r);return c}getLeaves(t,e,s){e=e||10,s=s||0;const r=[];return this._appendLeaves(r,t,e,s,0),r}getTile(t,e,s){const r=this.trees[this._limitZoom(t)],o=Math.pow(2,t),{extent:i,radius:n}=this.options,a=n/i,h=(s-a)/o,l=(s+1+a)/o,c={features:[]};return this._addTileFeatures(r.range((e-a)/o,h,(e+1+a)/o,l),r.data,e,s,o,c),0===e&&this._addTileFeatures(r.range(1-a/o,h,1,l),r.data,o,s,o,c),e===o-1&&this._addTileFeatures(r.range(0,h,a/o,l),r.data,-1,s,o,c),c.features.length?c:null}getClusterExpansionZoom(t){let e=this._getOriginZoom(t)-1;for(;e<=this.options.maxZoom;){const s=this.getChildren(t);if(e++,1!==s.length)break;t=s[0].properties.cluster_id}return e}_appendLeaves(t,e,s,r,o){const i=this.getChildren(e);for(const e of i){const i=e.properties;if(i&&i.cluster?o+i.point_count<=r?o+=i.point_count:o=this._appendLeaves(t,i.cluster_id,s,r,o):o<r?o++:t.push(e),t.length===s)break}return o}_createTree(t){const e=new w(t.length/this.stride|0,this.options.nodeSize,Float32Array);for(let s=0;s<t.length;s+=this.stride)e.add(t[s],t[s+1]);return e.finish(),e.data=t,e}_addTileFeatures(t,e,s,r,o,i){for(const n of t){const t=n*this.stride,a=e[t+b]>1;let h,l,c;if(a)h=I(e,t,this.clusterProps),l=e[t],c=e[t+1];else{const s=this.points[e[t+A]];h=s.properties;const[r,o]=s.geometry.coordinates;l=T(r),c=j(o)}const u={type:1,geometry:[[Math.round(this.options.extent*(l*o-s)),Math.round(this.options.extent*(c*o-r))]],tags:h};let p;p=a||this.options.generateId?e[t+A]:this.points[e[t+A]].id,void 0!==p&&(u.id=p),i.features.push(u)}}_limitZoom(t){return Math.max(this.options.minZoom,Math.min(Math.floor(+t),this.options.maxZoom+1))}_cluster(t,e){const{radius:s,extent:r,reduce:o,minPoints:i}=this.options,n=s/(r*Math.pow(2,e)),a=t.data,h=[],l=this.stride;for(let s=0;s<a.length;s+=l){if(a[s+2]<=e)continue;a[s+2]=e;const r=a[s],c=a[s+1],u=t.within(a[s],a[s+1],n),p=a[s+b];let m=p;for(const t of u){const s=t*l;a[s+2]>e&&(m+=a[s+b])}if(m>p&&m>=i){let t,i=r*p,n=c*p,d=-1;const g=((s/l|0)<<5)+(e+1)+this.points.length;for(const r of u){const h=r*l;if(a[h+2]<=e)continue;a[h+2]=e;const c=a[h+b];i+=a[h]*c,n+=a[h+1]*c,a[h+4]=g,o&&(t||(t=this._map(a,s,!0),d=this.clusterProps.length,this.clusterProps.push(t)),o(t,this._map(a,h)))}a[s+4]=g,h.push(i/m,n/m,1/0,g,-1,m),o&&h.push(d)}else{for(let t=0;t<l;t++)h.push(a[s+t]);if(m>1)for(const t of u){const s=t*l;if(!(a[s+2]<=e)){a[s+2]=e;for(let t=0;t<l;t++)h.push(a[s+t])}}}}return h}_getOriginId(t){return t-this.points.length>>5}_getOriginZoom(t){return(t-this.points.length)%32}_map(t,e,s){if(t[e+b]>1){const r=this.clusterProps[t[e+L]];return s?Object.assign({},r):r}const r=this.points[t[e+A]].properties,o=this.options.map(r);return s&&o===r?Object.assign({},o):o}}function Z(t,e,s){return{type:"Feature",id:t[e+A],properties:I(t,e,s),geometry:{type:"Point",coordinates:[(r=t[e],360*(r-.5)),S(t[e+1])]}};var r}function I(t,e,s){const r=t[e+b],o=r>=1e4?`${Math.round(r/1e3)}k`:r>=1e3?Math.round(r/100)/10+"k":r,i=t[e+L],n=-1===i?{}:Object.assign({},s[i]);return Object.assign(n,{cluster:!0,cluster_id:t[e+A],point_count:r,point_count_abbreviated:o})}function T(t){return t/360+.5}function j(t){const e=Math.sin(t*Math.PI/180),s=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return s<0?0:s>1?1:s}function S(t){const e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}class z extends u{constructor(t){var{maxZoom:s,radius:r=60}=t,o=e(t,["maxZoom","radius"]);super({maxZoom:s}),this.state={zoom:-1},this.superCluster=new O(Object.assign({maxZoom:this.maxZoom,radius:r},o))}calculate(t){let e=!1;const r={zoom:t.map.getZoom()};if(!f(t.markers,this.markers)){e=!0,this.markers=[...t.markers];const r=this.markers.map((t=>{const e=s.getPosition(t);return{type:"Feature",geometry:{type:"Point",coordinates:[e.lng(),e.lat()]},properties:{marker:t}}}));this.superCluster.load(r)}return e||(this.state.zoom<=this.maxZoom||r.zoom<=this.maxZoom)&&(e=!f(this.state,r)),this.state=r,e&&(this.clusters=this.cluster(t)),{clusters:this.clusters,changed:e}}cluster(t){let{map:e}=t;return this.superCluster.getClusters([-180,-90,180,90],Math.round(e.getZoom())).map((t=>this.transformCluster(t)))}transformCluster(t){let{geometry:{coordinates:[e,o]},properties:i}=t;if(i.cluster)return new r({markers:this.superCluster.getLeaves(i.cluster_id,1/0).map((t=>t.properties.marker)),position:{lat:o,lng:e}});const n=i.marker;return new r({markers:[n],position:s.getPosition(n)})}}class U{constructor(t,e){this.markers={sum:t.length};const s=e.map((t=>t.count)),r=s.reduce(((t,e)=>t+e),0);this.clusters={count:e.length,markers:{mean:r/e.length,sum:r,min:Math.min(...s),max:Math.max(...s)}}}}class B{render(t,e,r){let{count:o,position:i}=t;const n=`<svg fill="${o>Math.max(10,e.clusters.markers.mean)?"#ff0000":"#0000ff"}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240" width="50" height="50">\n<circle cx="120" cy="120" opacity=".6" r="70" />\n<circle cx="120" cy="120" opacity=".3" r="90" />\n<circle cx="120" cy="120" opacity=".2" r="110" />\n<text x="50%" y="50%" style="fill:#fff" text-anchor="middle" font-size="50" dominant-baseline="middle" font-family="roboto,arial,sans-serif">${o}</text>\n</svg>`,a=`Cluster of ${o} markers`,h=Number(google.maps.Marker.MAX_ZINDEX)+o;if(s.isAdvancedMarkerAvailable(r)){const t=(new DOMParser).parseFromString(n,"image/svg+xml").documentElement;t.setAttribute("transform","translate(0 25)");const e={map:r,position:i,zIndex:h,title:a,content:t};return new google.maps.marker.AdvancedMarkerElement(e)}const l={position:i,zIndex:h,title:a,icon:{url:`data:image/svg+xml;base64,${btoa(n)}`,anchor:new google.maps.Point(25,25)}};return new google.maps.Marker(l)}}class D{constructor(){!function(t,e){for(let s in e.prototype)t.prototype[s]=e.prototype[s]}(D,google.maps.OverlayView)}}var N;t.MarkerClustererEvents=void 0,(N=t.MarkerClustererEvents||(t.MarkerClustererEvents={})).CLUSTERING_BEGIN="clusteringbegin",N.CLUSTERING_END="clusteringend",N.CLUSTER_CLICK="click";const F=(t,e,s)=>{s.fitBounds(e.bounds)};return t.AbstractAlgorithm=u,t.AbstractViewportAlgorithm=p,t.Cluster=r,t.ClusterStats=U,t.DefaultRenderer=B,t.GridAlgorithm=class extends p{constructor(t){var{maxDistance:s=4e4,gridSize:r=40}=t;super(e(t,["maxDistance","gridSize"])),this.clusters=[],this.state={zoom:-1},this.maxDistance=s,this.gridSize=r}calculate(t){let{markers:e,map:s,mapCanvasProjection:r}=t;const i={zoom:s.getZoom()};let n=!1;return this.state.zoom>=this.maxZoom&&i.zoom>=this.maxZoom||(n=!f(this.state,i)),this.state=i,s.getZoom()>=this.maxZoom?{clusters:this.noop({markers:e}),changed:n}:{clusters:this.cluster({markers:o(s,r,e,this.viewportPadding),map:s,mapCanvasProjection:r})}}cluster(t){let{markers:e,map:s,mapCanvasProjection:r}=t;return this.clusters=[],e.forEach((t=>{this.addToClosestCluster(t,s,r)})),this.clusters}addToClosestCluster(t,e,o){let n=this.maxDistance,h=null;for(let e=0;e<this.clusters.length;e++){const r=this.clusters[e],o=a(r.bounds.getCenter().toJSON(),s.getPosition(t).toJSON());o<n&&(n=o,h=r)}if(h&&i(h.bounds,o,this.gridSize).contains(s.getPosition(t)))h.push(t);else{const e=new r({markers:[t]});this.clusters.push(e)}}},t.MarkerClusterer=class extends D{constructor(t){let{map:e,markers:s=[],algorithmOptions:r={},algorithm:o=new z(r),renderer:i=new B,onClusterClick:n=F}=t;super(),this.markers=[...s],this.clusters=[],this.algorithm=o,this.renderer=i,this.onClusterClick=n,e&&this.setMap(e)}addMarker(t,e){this.markers.includes(t)||(this.markers.push(t),e||this.render())}addMarkers(t,e){t.forEach((t=>{this.addMarker(t,!0)})),e||this.render()}removeMarker(t,e){const r=this.markers.indexOf(t);return-1!==r&&(s.setMap(t,null),this.markers.splice(r,1),e||this.render(),!0)}removeMarkers(t,e){let s=!1;return t.forEach((t=>{s=this.removeMarker(t,!0)||s})),s&&!e&&this.render(),s}clearMarkers(t){this.markers.length=0,t||this.render()}render(){const e=this.getMap();if(e instanceof google.maps.Map&&e.getProjection()){google.maps.event.trigger(this,t.MarkerClustererEvents.CLUSTERING_BEGIN,this);const{clusters:r,changed:o}=this.algorithm.calculate({markers:this.markers,map:e,mapCanvasProjection:this.getProjection()});if(o||null==o){const t=new Set;for(const e of r)1==e.markers.length&&t.add(e.markers[0]);const e=[];for(const r of this.clusters)null!=r.marker&&(1==r.markers.length?t.has(r.marker)||s.setMap(r.marker,null):e.push(r.marker));this.clusters=r,this.renderClusters(),requestAnimationFrame((()=>e.forEach((t=>s.setMap(t,null)))))}google.maps.event.trigger(this,t.MarkerClustererEvents.CLUSTERING_END,this)}}onAdd(){this.idleListener=this.getMap().addListener("idle",this.render.bind(this)),this.render()}onRemove(){google.maps.event.removeListener(this.idleListener),this.reset()}reset(){this.markers.forEach((t=>s.setMap(t,null))),this.clusters.forEach((t=>t.delete())),this.clusters=[]}renderClusters(){const e=new U(this.markers,this.clusters),r=this.getMap();this.clusters.forEach((o=>{1===o.markers.length?o.marker=o.markers[0]:(o.marker=this.renderer.render(o,e,r),o.markers.forEach((t=>s.setMap(t,null))),this.onClusterClick&&o.marker.addListener("click",(e=>{google.maps.event.trigger(this,t.MarkerClustererEvents.CLUSTER_CLICK,o),this.onClusterClick(e,o,r)}))),s.setMap(o.marker,r)}))}},t.MarkerUtils=s,t.NoopAlgorithm=class extends u{constructor(t){super(e(t,[]))}calculate(t){let{markers:e,map:s,mapCanvasProjection:r}=t;return{clusters:this.cluster({markers:e,map:s,mapCanvasProjection:r}),changed:!1}}cluster(t){return this.noop(t)}},t.SuperClusterAlgorithm=z,t.SuperClusterViewportAlgorithm=class extends p{constructor(t){var{maxZoom:s,radius:r=60,viewportPadding:o=60}=t,i=e(t,["maxZoom","radius","viewportPadding"]);super({maxZoom:s,viewportPadding:o}),this.superCluster=new O(Object.assign({maxZoom:this.maxZoom,radius:r},i)),this.state={zoom:-1,view:[0,0,0,0]}}calculate(t){const e={zoom:Math.round(t.map.getZoom()),view:n(t.map.getBounds(),t.mapCanvasProjection,this.viewportPadding)};let r=!f(this.state,e);if(!f(t.markers,this.markers)){r=!0,this.markers=[...t.markers];const e=this.markers.map((t=>{const e=s.getPosition(t);return{type:"Feature",geometry:{type:"Point",coordinates:[e.lng(),e.lat()]},properties:{marker:t}}}));this.superCluster.load(e)}return r&&(this.clusters=this.cluster(t),this.state=e),{clusters:this.clusters,changed:r}}cluster(t){let{map:e,mapCanvasProjection:s}=t;const r={zoom:Math.round(e.getZoom()),view:n(e.getBounds(),s,this.viewportPadding)};return this.superCluster.getClusters(r.view,r.zoom).map((t=>this.transformCluster(t)))}transformCluster(t){let{geometry:{coordinates:[e,o]},properties:i}=t;if(i.cluster)return new r({markers:this.superCluster.getLeaves(i.cluster_id,1/0).map((t=>t.properties.marker)),position:{lat:o,lng:e}});const n=i.marker;return new r({markers:[n],position:s.getPosition(n)})}},t.defaultOnClusterClickHandler=F,t.distanceBetweenPoints=a,t.extendBoundsToPaddedViewport=i,t.extendPixelBounds=l,t.filterMarkersToPaddedViewport=o,t.getPaddedViewport=n,t.noop=m,t.pixelBoundsToLatLngBounds=c,Object.defineProperty(t,"__esModule",{value:!0}),t}({});
1const GoMapsExt=window.GoMapsExt=window.GoMapsExt||{};GoMapsExt.Data={mapSettings:{markerSearch:null,defaultZoom:null,doubleClickZoom:null,scrollZoom:null,scaleControl:null,streetviewControl:null,fullscreenControl:null,zoomControl:null,defaultType:null,mapTypeControl:null,mapTypes:null,showRoute:null,calcRoute:null,styledMapName:null,styledMapCode:null,tooltipTitle:null,kmlUrl:null,kmlLocal:null,showForm:null,lat:null,lng:null,geolocation:null,},zoomTypes:[],defaultMapTypes:[],addresses:[],};class GoMapsExtController{constructor(element,gme){this.element=element;this.gme=gme;this.data=gme}
2initialize(){this.route=[];this.infoWindow=new google.maps.InfoWindow();this.bounds=new google.maps.LatLngBounds();this.markers=[];let{gme,element}=this;this.map=new google.maps.Map(document.getElementById(this.gme.mapSettings.id),this.#createMapOptions());this.#initializeCss();this.#initializeData();this.#initializeKmlImport();this.#initializeGeolocation();this.#initializeSearch();this.#initializeBackendAddresses();this.#initializeRoute();this.#initializeResizeListener();this.#initializeCheckboxListener();this.#initializeAddressListener();setTimeout(()=>{element.dispatchEvent(new Event('openinfo'))},2000);this.setCategoriesFromRequest();this.focusAddressFromRequest();element.dispatchEvent(new Event('mapcreated'));this.refreshMap(element,this.gme)}
3setCategories(selectedCats){const{gme,element}=this;this.markers.forEach(marker=>{let showMarker;if(selectedCats.length>0){marker.hidden=!0;let matches=0;marker.categories.forEach(category=>{if(selectedCats.includes(category)){matches+=1}});showMarker=(matches>0);if(gme.mapSettings.logicalAnd){showMarker=(matches===selectedCats.length)}}else{showMarker=!0}
4if(showMarker){marker.hidden=!1;const addressEl=document.querySelector(`#gme-address${marker.uid}`);if(addressEl&&addressEl.parentElement.tagName.toLowerCase()==='del'){addressEl.parentElement.replaceWith(addressEl)}
5return!0}else{const addressEl=document.querySelector(`#gme-address${marker.uid}`);if(addressEl&&addressEl.parentElement.tagName.toLowerCase()!=='del'){const delEl=document.createElement('del');addressEl.parentNode.insertBefore(delEl,addressEl);delEl.appendChild(addressEl)}}});if(element.markerCluster){this.refreshCluster(element,this.gme)}}
6setCategoriesFromRequest(){const getCats=this.getURLParameter('tx_gomapsext_show\\[cat\\]');if(getCats){const selectedCats=getCats.split(',');this.setCategories(selectedCats);const checkboxList=document.querySelectorAll('.js-gme-cat');checkboxList.forEach(checkbox=>{if(selectedCats.includes(checkbox.value)){checkbox.checked=!0}})}}
7focusAddressFromRequest(){const getAddress=parseInt(this.getURLParameter('tx_gomapsext_show\\[address\\]'));const{gme,element}=this;if(getAddress>0){this.focusAddress(getAddress,element,gme)}}
8addMapPoint(pointDescription,Route,element,infoWindow,gme){const latitude=pointDescription.latitude;const longitude=pointDescription.longitude;const geocoder=element.gomapsext.geocoder;const _this=this;Route.push(pointDescription.address);if(Math.round(latitude)===0&&Math.round(longitude)===0){geocoder.geocode({'address':pointDescription.address},function(point,status){const latitude=point[0].geometry.location.lat();const longitude=point[0].geometry.location.lng();const position=new google.maps.LatLng(latitude,longitude);_this.setMapPoint(pointDescription,Route,element,infoWindow,position,gme)});return}
9const position=new google.maps.LatLng(latitude,longitude);this.setMapPoint(pointDescription,Route,element,infoWindow,position,gme)}
10focusAddress(addressUid,element,gme){const _this=this;this.markers.forEach((marker)=>{if(marker.uid===addressUid){element.gomapsext.center=marker.position;if(marker.infoWindow){marker.infoWindow.setContent(marker.infoWindowContent);marker.infoWindow.open(_this.map,marker)}
11_this.refreshMap(element,gme);return!0}});if(element.markerCluster){element.markerCluster.render();if(gme.mapSettings.markerClusterZoom){this.map.setZoom(gme.mapSettings.markerClusterZoom+1)}}}
12getURLParameter(name){const uri=decodeURI(location.search);return(new RegExp(`[?|&]${name}=([^&;]+?)(&|#|;|$)`).exec(uri)||['',''])[1].replace(/\+/g,'%20')||null}
13getTravelMode(travelModeInput){let travelMode=google.maps.TravelMode.DRIVING;switch(travelModeInput){case 2:travelMode=google.maps.TravelMode.BICYCLING;break;case 3:travelMode=google.maps.TravelMode.TRANSIT;break;case 4:travelMode=google.maps.TravelMode.WALKING;break}
14return travelMode}
15getUnitSystem(unitSystemInput){let unitSystem=0;switch(unitSystemInput){case 2:unitSystem=google.maps.UnitSystem.METRIC;break;case 3:unitSystem=google.maps.UnitSystem.IMPERIAL;break}
16return unitSystem}
17setMapPoint(pointDescription,Route,$element,infoWindow,position,gme){const map=this.map;const markerOptions={map,position:position,title:pointDescription.title,};if(pointDescription.marker){let markerImage=document.createElement("img");if(pointDescription.image_size){markerImage.style.height=pointDescription.image_height;markerImage.style.width=pointDescription.image_width}
18markerImage.src=pointDescription.marker;markerOptions.content=markerImage}
19const marker=new google.maps.marker.AdvancedMarkerElement(markerOptions);
19if(gme.mapSettings.markerCluster==1&&$element.markerCluster){google.maps.event.addListener(marker,'visible_changed',()=>{if(marker.hidden){$element.markerCluster.removeMarker(marker,!0)}else{$element.markerCluster.addMarker(marker,!0)}})}
20if(pointDescription.infoWindowContent!==''||pointDescription.infoWindowLink>0){let infoWindowContent=pointDescription.infoWindowContent;if(pointDescription.infoWindowLink>0){const daddr=(pointDescription.infoWindowLink===2)?pointDescription.latitude+', '+pointDescription.longitude:pointDescription.address;infoWindowContent+='<p class="routeLink"><a href="//www.google.com/maps/dir/?api=1&destination='+encodeURI(daddr)+'" target="_blank">'+gme.ll.infoWindowLinkText+'<\/a><\/p>'}
21infoWindowContent='<div class="gme-info-window">'+infoWindowContent+'</div>';if(pointDescription.openByClick){google.maps.event.addListener(marker,'click',()=>{if(!infoWindow.getMap()||gme.infoWindow!==marker.position){infoWindow.setContent(infoWindowContent);infoWindow.open(map,marker);gme.infoWindow=marker.position}})}else{google.maps.event.addListener(marker,'mouseover',()=>{if(!infoWindow.getMap()||gme.infoWindow!==marker.position){infoWindow.setContent(infoWindowContent);infoWindow.open(map,marker);gme.infoWindow=marker.position}})}
22if(!pointDescription.closeByClick){google.maps.event.addListener(marker,'mouseout',()=>{infoWindow.close()})}
23if(pointDescription.opened){$element.removeEventListener('openinfo',null);$element.addEventListener('openinfo',()=>{infoWindow.setContent(infoWindowContent);infoWindow.open(map,marker)});gme.infoWindow=marker.position}
24infoWindow.setContent(infoWindowContent);marker.infoWindowContent=infoWindowContent;marker.infoWindow=infoWindow}
25marker.categories=pointDescription.categories.split(',');marker.uid=pointDescription.uid;this.markers.push(marker);this.bounds.extend(position)}
26resize(){const _map=this.map;const gme=this.data;google.maps.event.trigger(_map,'resize');_map.fitBounds(this.bounds);if(gme.mapSettings.zoom>0){_map.setZoom(gme.mapSettings.zoom)}
27this.refreshMap(this.element,gme);google.maps.event.trigger(this.infoWindow,'content_changed')}
28refreshMap(element,gme){const _map=this.map;if(gme.mapSettings.zoom>0||gme.addresses.length==1){const zoomChangeBoundsListener=google.maps.event.addListener(_map,'zoom_changed',()=>{const boundsChangeBoundsListener=google.maps.event.addListener(_map,'bounds_changed',()=>{if(_map.initZoom==1){_map.setZoom((gme.mapSettings.zoom>0)?gme.mapSettings.zoom:gme.mapSettings.defaultZoom);_map.initZoom=0}
29google.maps.event.removeListener(boundsChangeBoundsListener)})});_map.initZoom=1}
30if(element.gomapsext.center){_map.setCenter(element.gomapsext.center)}else if(gme.mapSettings.lat&&gme.mapSettings.lng){_map.setCenter(new google.maps.LatLng(gme.mapSettings.lat,gme.mapSettings.lng));_map.setZoom(gme.mapSettings.zoom)}else{_map.fitBounds(this.bounds)}
31this.refreshCluster(element,gme)}
32refreshCluster(element,gme){if(gme.mapSettings.markerCluster==1){if(element.markerCluster!=null){element.markerCluster.clearMarkers()}
33let clusterMarkers=[];this.markers.forEach(function(marker){if(!marker.hidden){clusterMarkers.push(marker)}});element.markerCluster=new markerClusterer.MarkerClusterer({map:element.gomapsext.map,markers:clusterMarkers,maxZoom:gme.mapSettings.markerClusterZoom,gridSize:gme.mapSettings.markerClusterSize});element.markerCluster.render()}}
34#initializeCss(){this.element.style.width=this.gme.mapSettings.width;this.element.style.height=this.gme.mapSettings.height}
35#initializeData(){const element=this.element;const gme=this.data;const map=this.map;element.gomapsext.map=map;if(gme.mapSettings.styledMapName){const myStyle=gme.mapSettings.styledMapCode;const styledMapOptions={name:gme.mapSettings.styledMapName,alt:gme.mapSettings.tooltipTitle,};const myMapType=new google.maps.StyledMapType(myStyle,styledMapOptions,);map.mapTypes.set(gme.mapSettings.styledMapName,myMapType)}
36if(gme.mapSettings.defaultType==3&&gme.mapSettings.styledMapName){map.setMapTypeId(gme.mapSettings.styledMapName)}}
37#createMapOptions(){const gme=this.gme;return{mapId:gme.mapSettings.id,zoom:gme.mapSettings.defaultZoom,minZoom:gme.mapSettings.minZoom,maxZoom:gme.mapSettings.maxZoom,center:new google.maps.LatLng(0,0),geolocation:gme.mapSettings.geolocation,draggable:gme.mapSettings.draggable,disableDoubleClickZoom:gme.mapSettings.doubleClickZoom,gestureHandling:gme.mapSettings.scrollZoom?'auto':'none',scaleControl:gme.mapSettings.scaleControl,streetViewControl:gme.mapSettings.streetviewControl,fullscreenControl:gme.mapSettings.fullscreenControl,zoomControl:gme.mapSettings.zoomControl,mapTypeId:gme.defaultMapTypes[gme.mapSettings.defaultType],mapTypeControl:gme.mapSettings.mapTypeControl,mapTypeControlOptions:{mapTypeIds:gme.mapSettings.mapTypes},}}
38#initializeKmlImport(){const _this=this;const _map=this.map;const gme=this.data;const Route=this.route;const $element=this.element;if(gme.mapSettings.kmlUrl!==''&&gme.mapSettings.kmlLocal===0){const kmlLayer=new google.maps.KmlLayer(gme.mapSettings.kmlUrl,{preserveViewport:gme.mapSettings.kmlPreserveViewport});kmlLayer.setMap(_map)}
39if(gme.mapSettings.kmlUrl!==''&&gme.mapSettings.kmlLocal===1){fetch(gme.mapSettings.kmlUrl).then(response=>response.text()).then(data=>{const parser=new DOMParser();const xmlDoc=parser.parseFromString(data,'text/xml');const placemarks=xmlDoc.getElementsByTagName('Placemark');for(let i=0;i<placemarks.length;i++){const placemark=placemarks[i];const coords=placemark.getElementsByTagName('coordinates')[0].textContent;const place=placemark.getElementsByTagName('name')[0].textContent;let description=placemark.getElementsByTagName('description');description=description[0]?description[0].textContent:'';const c=coords.split(',');const address={title:place,latitude:c[1],longitude:c[0],address:place,marker:'',imageSize:0,imageWidth:0,imageHeight:0,infoWindowContent:description,infoWindowLink:0,openByCl
39ick:1,closeByClick:1,opened:0,categories:'',};_this.addMapPoint(address,Route,$element,_this.infoWindow,gme);gme.addresses.push(address)}}).catch(error=>console.error(error))}}
40#initializeGeolocation(){const _this=this;const _map=this.map;const gme=this.data;if(gme.mapSettings.geolocation===1){const pin=new google.maps.marker.PinElement({background:'#4285F4',borderColor:'#4285F4',glyphColor:'#FFFFFF',glyph:'⦿'});const myloc=new google.maps.marker.AdvancedMarkerElement({content:pin.element,zIndex:999,map:_map,});if(navigator.geolocation){navigator.geolocation.getCurrentPosition(pos=>{const me=new google.maps.LatLng(pos.coords.latitude,pos.coords.longitude);myloc.position=me;const mycenter={lat:pos.coords.latitude,lng:pos.coords.longitude,};_map.setCenter(mycenter)},error=>{console.error('Could not get position')},)}}}
41#initializeSearch(){const _this=this;const gme=this.data;const $element=this.element;if(gme.mapSettings.markerSearch===1){const $myForm=document.querySelector(`#${gme.mapSettings.id}-search`);const searchIn=$myForm.querySelector('.js-gme-sword');$myForm.querySelector('.js-gme-error').style.display='none';$myForm.addEventListener('submit',function(event){event.preventDefault();const submitValue=searchIn.value.toLowerCase();let notFound=!0;gme.addresses.forEach((address,i)=>{Object.entries(address).forEach(([index,val])=>{if(typeof val==='string'&&(index==='title'||index==='infoWindowContent')&&submitValue!==''){if(val.toLowerCase().includes(submitValue)){if(_this.markers[i].map){_this.focusAddress(_this.markers[i].uid,$element,gme);notFound=!1}}}})});$myForm.querySelector('.js-gme-error').style.display=notFound?'block':'none'})}}
42#initializeBackendAddresses(){const _this=this;const gme=this.data;const element=this.element;const Route=this.route;const infoWindow=this.infoWindow;if(gme.mapSettings.showRoute==0){element.gomapsext.geocoder=new google.maps.Geocoder();if(element.gomapsext.geocoder){gme.addresses.forEach(address=>{_this.addMapPoint(address,Route,element,infoWindow,gme)})}}}
43#initializeRoute(){const _this=this;const _map=this.map;const gme=this.data;const element=this.element;if(gme.mapSettings.showRoute==1||gme.mapSettings.calcRoute==1){const panelHtml=document.createElement('div');panelHtml.id=`dPanel-${gme.mapSettings.id}`;const directionsService=new google.maps.DirectionsService();const directionsDisplay=new google.maps.DirectionsRenderer();element.parentNode.insertBefore(panelHtml,element.nextSibling);const renderRoute=function(start,end,travelMode,unitSystem){const req={origin:start,destination:end,travelMode:_this.getTravelMode(travelMode),};directionsDisplay.setMap(_map);directionsDisplay.setPanel(document.getElementById(`dPanel-${gme.mapSettings.id}`));if(_this.getUnitSystem(unitSystem)!==0){req.unitSystem=_this.getUnitSystem(unitSystem)}
44directionsService.route(req,function(response,status){if(status==google.maps.DirectionsStatus.OK){directionsDisplay.setDirections(response)}else{alert(gme.ll.alert)}})};if(gme.mapSettings.showRoute==1){renderRoute(gme.addresses[0].address,gme.addresses[1].address,gme.mapSettings.travelMode,gme.mapSettings.unitSystem)}
45if(gme.mapSettings.calcRoute==1){const mapForm=document.getElementById(`${gme.mapSettings.id}-form`);mapForm.addEventListener('submit',function(event){event.preventDefault();let formStartAddress=mapForm.querySelector('.js-gme-saddress').value;let options=mapForm.querySelectorAll('.js-gme-eaddress option');let endAddressIndex='';options.forEach(option=>{if(option.selected){endAddressIndex=option.value}});let formEndAddress=endAddressIndex?gme.addresses[parseInt(endAddressIndex)].address:gme.addresses[0].address;const formTravelModeSelector=mapForm.querySelector('.js-gme-travelmode');const formUnitSystemSelector=mapForm.querySelector('.js-gme-unitsystem');let formTravelMode=formTravelModeSelector?parseInt(formTravelModeSelector.value):gme.mapSettings.travelMode;let formUnitSystem=formUnitSystemSelector?parseInt(formUnitSystemSelector.value):gme.mapSettings.unitSystem;if(formStartAddress==null){formStartAddress=gme.addresses[0].address;formEndAddress=gme.addresses[1].address}
46renderRoute(formStartAddress,formEndAddress,formTravelMode,formUnitSystem)})}}}
47#initializeResizeListener(){const _this=this;let width=this.element.offsetWidth;this.element.addEventListener('mapresize',function(){if(_this.element.offsetWidth!==width){width=_this.element.offsetWidth;_this.resize()}})}
48#initializeCheckboxListener(){const _this=this;const checkboxes=document.querySelectorAll('.js-gme-cat');
48checkboxes.forEach(checkbox=>{checkbox.addEventListener('change',function(){let selectedCatsValues=[];checkboxes.forEach(checkbox=>{if(checkbox.checked){selectedCatsValues.push(checkbox.value)}});_this.setCategories(selectedCatsValues)})})}
49#initializeAddressListener(){const _this=this;const element=this.element;const gme=this.gme;const addresses=document.querySelectorAll('.js-gme-address');addresses.forEach(address=>{address.addEventListener('click',function(event){event.preventDefault();const selectedAddress=parseInt(this.getAttribute('data-address'));_this.focusAddress(selectedAddress,element,gme)})})}}
50document.addEventListener("DOMContentLoaded",()=>{window.goMapsExtLoaded=function(){const maps=document.querySelectorAll('.js-map');maps.forEach(function(el){el.gomapsext.controller=new GoMapsExtController(el,el.gomapsext.gme);el.gomapsext.controller.initialize()})};if(window.txGoMapsExtLibrary){const existingNonce=document.querySelector('script[nonce]')?.nonce;let script=document.createElement('script');script.src=window.txGoMapsExtLibrary;script.async=!0;script.nonce=existingNonce;document.head.appendChild(script)}});document.addEventListener('DOMContentLoaded',()=>{const links=document.querySelectorAll('.js-gme-show');const previews=document.querySelectorAll('.js-gme-preview');const mapContainers=document.querySelectorAll('.js-gme-container');const useCookies=previews[0]&&previews[0].dataset.cookie==='1';if(useCookies&&getCookie('tx_gomapsext_show_map')){showMap()}else{mapContainers.forEach(mapContainer=>{mapContainer.style.display='none'});links.forEach(link=>{link.addEventListener('click',e=>{e.preventDefault();showMap();if(useCookies){setCookie('tx_gomapsext_show_map',1,'/')}})})}
51function showMap(){if(typeof google==='undefined'||typeof google.maps==='undefined'){const script=document.createElement('script');script.src=links[0].dataset.library;document.body.appendChild(script);mapContainers.forEach(mapContainer=>{mapContainer.style.display='block'})}
52previews.forEach(preview=>{preview.remove()})}
53function getCookie(name){const value=`; ${document.cookie}`;const parts=value.split(`; ${name}=`);if(parts.length===2){return parts.pop().split(';').shift()}}
54function setCookie(name,value,path){document.cookie=`${name}=${value}; path=${path}`}});$(document).ready(function(){burgermenuClick();mobileMainmenu();iosTableScroll();searchClick();imageSlider();tooltipPlacement()});$(window).on("load",function(){topoffsetScroll();courseinfo()});$(window).resize(function(){});$(window).scroll(function(){topoffsetScroll()});function courseinfo(){const $courseinfoButton=$('.header .courseinfobutton');const $courseinfoContent=$('.courseinfo');$courseinfoButton.on('click',function(e){e.preventDefault();const winWidth=$(window).width();$courseinfoButton.toggleClass('-active');$courseinfoContent.toggleClass('-active');if(winWidth<1024){if($courseinfoContent.hasClass('-active')){$('html, body').animate({scrollTop:top},$courseinfoContent.top)}}});$courseinfoButton.on('focus',function(){$(this).tooltip("hide")})}
55function tooltipPlacement(){var winwidth=Math.max(jQuery(window).width(),window.innerWidth);if(winwidth>900){jQuery('.shortcut a').tooltip({placement:'left',trigger:'hover'})}else{jQuery('.shortcut a').tooltip({placement:'top',trigger:'hover'})}}
56function iosTableScroll(){if(navigator.userAgent.match(/(\(iPod|\(iPhone|\(iPad)/)){$('.ce-table-scroll').each(function(){var container=$(this);if(Math.round(container.width())<Math.round(container.find('table').width())){container.addClass('ios-scrollbar')}})}}
57function topoffsetScroll(){if(window.pageYOffset>0){$('.top').addClass('-scroll')}else{$('.top').removeClass('-scroll')}}
58function burgermenuClick(){var winwidth=Math.max($(window).width(),window.innerWidth);$('.burgermenu').on('click',function(e){e.preventDefault();if($('.mainmenu').hasClass('-active')){$('.shortcut').css('z-index',100).css('position','absolute');$('.mainmenu').removeClass('-active');setTimeout(function(){e.preventDefault();$('.mainmenu__nav').addClass('-hidden');$('.mainmenu__list.-level1').removeClass('-open');$('body').removeClass('-mainmenuopen');$('.top').removeClass('-scroll')},600)}else{$('.shortcut').css('z-index',1000).css('position','fixed');if((winwidth<1024&&window.pageYOffset+1<$('section.top').offset().top)||(winwidth>=1024&&$(window).height()<900&&window.pageYOffset+1<$('section.top').offset().top)){$(document).scrollTop($('section.top').offset().top),$('.mainmenu__nav').removeClass('-hidden');$('.mainmenu__list.-level1').addClass('-open');$('body').addClass('-mainmenuopen');$('.top').addClass('-scroll');setTimeout(function(){$('.mainmenu').addClass('-active')},100)}else{$('.mainmenu__nav').removeClass('-hidden');$('.mainmenu__list.-level1').addClass('-open');$('body').addClass('-mainmenuopen');setTimeout(function(){$('.mainmenu').addClass('-active')},100)}}});$('.mainmenu__background, .mainmenu__close').unbind('click').click(function(){if($('.mainmenu').hasClass('-active')){$('.shortcut').css('z-index',100).css('position','absolute');$('.mainmenu').removeClass('-active');setTimeout(function(){$('.mainmenu__nav').addClass('-hidden');$('.mainmenu__list.-level1').removeClass('-open');$('body').removeClass('-mainmenuopen')},600)}})}
59function mobileMainmenu(){var winwidth=Math.max($(window).width(),window.innerWidth);if(winwidth>1024){$('.mainmenu__list').each(function(){if($(this).find('.mainmenu__item.-active,.mainmenu__item.-current').html()){$(this).parent().addClass('-open');$(this).siblings('.mainmenu__link').addClass('-open')}});jQuery('.mainmenu__link').click(function(e){subMenu=jQuery(this).next('.mainmenu__list');if(subMenu.html()){e.preventDefault();$('.mainmenu__list').not(subMenu).not(jQuery(this).parents()).each(function(){var otherSubMenus=$(this).prev('.mainmenu__link');if(otherSubMenus.hasClass('-open')){otherSubMenus.removeClass('-open');otherSubMenus.next('.mainmenu__list').toggleClass('-open');otherSubMenus.next().find('.mainmenu__link').each(function(){if($(this).hasClass('-open')){$(this).removeClass('-open');$(this).next('.mainmenu__list').toggleClass('-open')}})}});jQuery(this).toggleClass('-open')}})}
60var arrow='<div class="mainmenu__arrow"></div>';jQuery('.mainmenu__link').each(function(){subMenu=jQuery(this).next('.mainmenu__list');if(jQuery(this).is('.-active,.-current')){jQuery(this).addClass('-open')}});jQuery('.mainmenu__arrow').click(function(){subMenu=jQuery(this).parent().next('.mainmenu__list');$('.mainmenu__list').not(subMenu).not(jQuery(this).parents()).each(function(){var otherSubMenus=$(this).prev('.mainmenu__link');if(otherSubMenus.hasClass('-open')){otherSubMenus.removeClass('-open');otherSubMenus.next('.mainmenu__list').toggle('-open');otherSubMenus.next().find('.mainmenu__link').each(function(){if($(this).hasClass('-open')){$(this).removeClass('-open');$(this).next('.mainmenu__list').toggle('-open')}})}});jQuery(this).parent().toggleClass('-open');if(winwidth<1024){subMenu.slideToggle()}
61return!1})}
62function searchClick(){jQuery('.search, .search__close').click(function(){jQuery('#search').fadeToggle()})}
63function imageSlider(){if($(".image__gallery").html()){var iconSwiper=new Swiper(".image__gallery",{slidesPerView:1,loop:!0,spaceBetween:0,pagination:{el:".swiper-pagination.-image",clickable:!0,},})}}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.