');
// CONTROLSCONTAINER:
if (slider.controlsContainer) {
slider.controlsContainer.append(pausePlayScaffold);
slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer);
} else {
slider.append(pausePlayScaffold);
slider.pausePlay = $('.' + namespace + 'pauseplay a', slider);
}
methods.pausePlay.update((slider.vars.slideshow) ? namespace + 'pause' : namespace + 'play');
slider.pausePlay.bind(eventType, function(event) {
event.preventDefault();
if (watchedEvent === "" || watchedEvent === event.type) {
if ($(this).hasClass(namespace + 'pause')) {
slider.manualPause = true;
slider.manualPlay = false;
slider.pause();
} else {
slider.manualPause = false;
slider.manualPlay = true;
slider.play();
}
}
// setup flags to prevent event duplication
if (watchedEvent === "") {
watchedEvent = event.type;
}
methods.setToClearWatchedEvent();
});
},
update: function(state) {
(state === "play") ? slider.pausePlay.removeClass(namespace + 'pause').addClass(namespace + 'play').html(slider.vars.playText) : slider.pausePlay.removeClass(namespace + 'play').addClass(namespace + 'pause').html(slider.vars.pauseText);
}
},
touch: function() {
var startX,
startY,
offset,
cwidth,
dx,
startT,
onTouchStart,
onTouchMove,
onTouchEnd,
scrolling = false,
localX = 0,
localY = 0,
accDx = 0;
if(!msGesture){
onTouchStart = function(e) {
if (slider.animating) {
e.preventDefault();
} else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) {
slider.pause();
// CAROUSEL:
cwidth = (vertical) ? slider.h : slider. w;
startT = Number(new Date());
// CAROUSEL:
// Local vars for X and Y points.
localX = e.touches[0].pageX;
localY = e.touches[0].pageY;
offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
(carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
(carousel && slider.currentSlide === slider.last) ? slider.limit :
(carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
(reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
startX = (vertical) ? localY : localX;
startY = (vertical) ? localX : localY;
el.addEventListener('touchmove', onTouchMove, false);
el.addEventListener('touchend', onTouchEnd, false);
}
};
onTouchMove = function(e) {
// Local vars for X and Y points.
localX = e.touches[0].pageX;
localY = e.touches[0].pageY;
dx = (vertical) ? startX - localY : (slider.vars.rtl?-1:1)*(startX - localX);
scrolling = (vertical) ? (Math.abs(dx) < Math.abs(localX - startY)) : (Math.abs(dx) < Math.abs(localY - startY));
var fxms = 500;
if ( ! scrolling || Number( new Date() ) - startT > fxms ) {
e.preventDefault();
if (!fade && slider.transitions) {
if (!slider.vars.animationLoop) {
dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);
}
slider.setProps(offset + dx, "setTouch");
}
}
};
onTouchEnd = function(e) {
// finish the touch by undoing the touch session
el.removeEventListener('touchmove', onTouchMove, false);
if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
var updateDx = (reverse) ? -dx : dx,
target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
slider.flexAnimate(target, slider.vars.pauseOnAction);
} else {
if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
}
}
el.removeEventListener('touchend', onTouchEnd, false);
startX = null;
startY = null;
dx = null;
offset = null;
};
el.addEventListener('touchstart', onTouchStart, false);
}else{
el.style.msTouchAction = "none";
el._gesture = new MSGesture();
el._gesture.target = el;
el.addEventListener("MSPointerDown", onMSPointerDown, false);
el._slider = slider;
el.addEventListener("MSGestureChange", onMSGestureChange, false);
el.addEventListener("MSGestureEnd", onMSGestureEnd, false);
function onMSPointerDown(e){
e.stopPropagation();
if (slider.animating) {
e.preventDefault();
}else{
slider.pause();
el._gesture.addPointer(e.pointerId);
accDx = 0;
cwidth = (vertical) ? slider.h : slider. w;
startT = Number(new Date());
// CAROUSEL:
offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
(carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
(carousel && slider.currentSlide === slider.last) ? slider.limit :
(carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
(reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
}
}
function onMSGestureChange(e) {
e.stopPropagation();
var slider = e.target._slider;
if(!slider){
return;
}
var transX = -e.translationX,
transY = -e.translationY;
//Accumulate translations.
accDx = accDx + ((vertical) ? transY : transX);
dx = (slider.vars.rtl?-1:1)*accDx;
scrolling = (vertical) ? (Math.abs(accDx) < Math.abs(-transX)) : (Math.abs(accDx) < Math.abs(-transY));
if(e.detail === e.MSGESTURE_FLAG_INERTIA){
setImmediate(function (){
el._gesture.stop();
});
return;
}
if (!scrolling || Number(new Date()) - startT > 500) {
e.preventDefault();
if (!fade && slider.transitions) {
if (!slider.vars.animationLoop) {
dx = accDx / ((slider.currentSlide === 0 && accDx < 0 || slider.currentSlide === slider.last && accDx > 0) ? (Math.abs(accDx) / cwidth + 2) : 1);
}
slider.setProps(offset + dx, "setTouch");
}
}
}
function onMSGestureEnd(e) {
e.stopPropagation();
var slider = e.target._slider;
if(!slider){
return;
}
if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
var updateDx = (reverse) ? -dx : dx,
target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
slider.flexAnimate(target, slider.vars.pauseOnAction);
} else {
if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
}
}
startX = null;
startY = null;
dx = null;
offset = null;
accDx = 0;
}
}
},
resize: function() {
if (!slider.animating && slider.is(':visible')) {
if (!carousel) { slider.doMath(); }
if (fade) {
// SMOOTH HEIGHT:
methods.smoothHeight();
} else if (carousel) { //CAROUSEL:
slider.slides.width(slider.computedW);
slider.update(slider.pagingCount);
slider.setProps();
}
else if (vertical) { //VERTICAL:
slider.viewport.height(slider.h);
slider.setProps(slider.h, "setTotal");
} else {
// SMOOTH HEIGHT:
if (slider.vars.smoothHeight) { methods.smoothHeight(); }
slider.newSlides.width(slider.computedW);
slider.setProps(slider.computedW, "setTotal");
}
}
},
smoothHeight: function(dur) {
if (!vertical || fade) {
var $obj = (fade) ? slider : slider.viewport;
(dur) ? $obj.animate({"height": slider.slides.eq(slider.animatingTo).innerHeight()}, dur) : $obj.innerHeight(slider.slides.eq(slider.animatingTo).innerHeight());
}
},
sync: function(action) {
var $obj = $(slider.vars.sync).data("flexslider"),
target = slider.animatingTo;
switch (action) {
case "animate": $obj.flexAnimate(target, slider.vars.pauseOnAction, false, true); break;
case "play": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break;
case "pause": $obj.pause(); break;
}
},
uniqueID: function($clone) {
// Append _clone to current level and children elements with id attributes
$clone.filter( '[id]' ).add($clone.find( '[id]' )).each(function() {
var $this = $(this);
$this.attr( 'id', $this.attr( 'id' ) + '_clone' );
});
return $clone;
},
pauseInvisible: {
visProp: null,
init: function() {
var visProp = methods.pauseInvisible.getHiddenProp();
if (visProp) {
var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange';
document.addEventListener(evtname, function() {
if (methods.pauseInvisible.isHidden()) {
if(slider.startTimeout) {
clearTimeout(slider.startTimeout); //If clock is ticking, stop timer and prevent from starting while invisible
} else {
slider.pause(); //Or just pause
}
}
else {
if(slider.started) {
slider.play(); //Initiated before, just play
} else {
if (slider.vars.initDelay > 0) {
setTimeout(slider.play, slider.vars.initDelay);
} else {
slider.play(); //Didn't init before: simply init or wait for it
}
}
}
});
}
},
isHidden: function() {
var prop = methods.pauseInvisible.getHiddenProp();
if (!prop) {
return false;
}
return document[prop];
},
getHiddenProp: function() {
var prefixes = ['webkit','moz','ms','o'];
// if 'hidden' is natively supported just return it
if ('hidden' in document) {
return 'hidden';
}
// otherwise loop over all the known prefixes until we find one
for ( var i = 0; i < prefixes.length; i++ ) {
if ((prefixes[i] + 'Hidden') in document) {
return prefixes[i] + 'Hidden';
}
}
// otherwise it's not supported
return null;
}
},
setToClearWatchedEvent: function() {
clearTimeout(watchedEventClearTimer);
watchedEventClearTimer = setTimeout(function() {
watchedEvent = "";
}, 3000);
}
};
// public methods
slider.flexAnimate = function(target, pause, override, withSync, fromNav) {
if (!slider.vars.animationLoop && target !== slider.currentSlide) {
slider.direction = (target > slider.currentSlide) ? "next" : "prev";
}
if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? "next" : "prev";
if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(":visible")) {
if (asNav && withSync) {
var master = $(slider.vars.asNavFor).data('flexslider');
slider.atEnd = target === 0 || target === slider.count - 1;
master.flexAnimate(target, true, false, true, fromNav);
slider.direction = (slider.currentItem < target) ? "next" : "prev";
master.direction = slider.direction;
if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) {
slider.currentItem = target;
slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
target = Math.floor(target/slider.visible);
} else {
slider.currentItem = target;
slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
return false;
}
}
slider.animating = true;
slider.animatingTo = target;
// SLIDESHOW:
if (pause) { slider.pause(); }
// API: before() animation Callback
slider.vars.before(slider);
// SYNC:
if (slider.syncExists && !fromNav) { methods.sync("animate"); }
// CONTROLNAV
if (slider.vars.controlNav) { methods.controlNav.active(); }
// !CAROUSEL:
// CANDIDATE: slide active class (for add/remove slide)
if (!carousel) { slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide'); }
// INFINITE LOOP:
// CANDIDATE: atEnd
slider.atEnd = target === 0 || target === slider.last;
// DIRECTIONNAV:
if (slider.vars.directionNav) { methods.directionNav.update(); }
if (target === slider.last) {
// API: end() of cycle Callback
slider.vars.end(slider);
// SLIDESHOW && !INFINITE LOOP:
if (!slider.vars.animationLoop) { slider.pause(); }
}
// SLIDE:
if (!fade) {
var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW,
margin, slideString, calcNext;
// INFINITE LOOP / REVERSE:
if (carousel) {
margin = slider.vars.itemMargin;
calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo;
slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext;
} else if (slider.currentSlide === 0 && target === slider.count - 1 && slider.vars.animationLoop && slider.direction !== "next") {
slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0;
} else if (slider.currentSlide === slider.last && target === 0 && slider.vars.animationLoop && slider.direction !== "prev") {
slideString = (reverse) ? 0 : (slider.count + 1) * dimension;
} else {
slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension;
}
slider.setProps(slideString, "", slider.vars.animationSpeed);
if (slider.transitions) {
if (!slider.vars.animationLoop || !slider.atEnd) {
slider.animating = false;
slider.currentSlide = slider.animatingTo;
}
// Unbind previous transitionEnd events and re-bind new transitionEnd event
slider.container.unbind("webkitTransitionEnd transitionend");
slider.container.bind("webkitTransitionEnd transitionend", function() {
clearTimeout(slider.ensureAnimationEnd);
slider.wrapup(dimension);
});
// Insurance for the ever-so-fickle transitionEnd event
clearTimeout(slider.ensureAnimationEnd);
slider.ensureAnimationEnd = setTimeout(function() {
slider.wrapup(dimension);
}, slider.vars.animationSpeed + 100);
} else {
slider.container.animate(slider.args, slider.vars.animationSpeed, slider.vars.easing, function(){
slider.wrapup(dimension);
});
}
} else { // FADE:
if (!touch) {
slider.slides.eq(slider.currentSlide).css({"zIndex": 1}).animate({"opacity": 0}, slider.vars.animationSpeed, slider.vars.easing);
slider.slides.eq(target).css({"zIndex": 2}).animate({"opacity": 1}, slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
} else {
slider.slides.eq(slider.currentSlide).css({ "opacity": 0, "zIndex": 1 });
slider.slides.eq(target).css({ "opacity": 1, "zIndex": 2 });
slider.wrapup(dimension);
}
}
// SMOOTH HEIGHT:
if (slider.vars.smoothHeight) { methods.smoothHeight(slider.vars.animationSpeed); }
}
};
slider.wrapup = function(dimension) {
// SLIDE:
if (!fade && !carousel) {
if (slider.currentSlide === 0 && slider.animatingTo === slider.last && slider.vars.animationLoop) {
slider.setProps(dimension, "jumpEnd");
} else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && slider.vars.animationLoop) {
slider.setProps(dimension, "jumpStart");
}
}
slider.animating = false;
slider.currentSlide = slider.animatingTo;
// API: after() animation Callback
slider.vars.after(slider);
};
// SLIDESHOW:
slider.animateSlides = function() {
if (!slider.animating && focused ) { slider.flexAnimate(slider.getTarget("next")); }
};
// SLIDESHOW:
slider.pause = function() {
clearInterval(slider.animatedSlides);
slider.animatedSlides = null;
slider.playing = false;
// PAUSEPLAY:
if (slider.vars.pausePlay) { methods.pausePlay.update("play"); }
// SYNC:
if (slider.syncExists) { methods.sync("pause"); }
};
// SLIDESHOW:
slider.play = function() {
if (slider.playing) { clearInterval(slider.animatedSlides); }
slider.animatedSlides = slider.animatedSlides || setInterval(slider.animateSlides, slider.vars.slideshowSpeed);
slider.started = slider.playing = true;
// PAUSEPLAY:
if (slider.vars.pausePlay) { methods.pausePlay.update("pause"); }
// SYNC:
if (slider.syncExists) { methods.sync("play"); }
};
// STOP:
slider.stop = function () {
slider.pause();
slider.stopped = true;
};
slider.canAdvance = function(target, fromNav) {
// ASNAV:
var last = (asNav) ? slider.pagingCount - 1 : slider.last;
return (fromNav) ? true :
(asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === "prev") ? true :
(asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== "next") ? false :
(target === slider.currentSlide && !asNav) ? false :
(slider.vars.animationLoop) ? true :
(slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== "next") ? false :
(slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === "next") ? false :
true;
};
slider.getTarget = function(dir) {
slider.direction = dir;
if (dir === "next") {
return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1;
} else {
return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1;
}
};
// SLIDE:
slider.setProps = function(pos, special, dur) {
var target = (function() {
var posCheck = (pos) ? pos : ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo,
posCalc = (function() {
if (carousel) {
return (special === "setTouch") ? pos :
(reverse && slider.animatingTo === slider.last) ? 0 :
(reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
(slider.animatingTo === slider.last) ? slider.limit : posCheck;
} else {
switch (special) {
case "setTotal": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos;
case "setTouch": return (reverse) ? pos : pos;
case "jumpEnd": return (reverse) ? pos : slider.count * pos;
case "jumpStart": return (reverse) ? slider.count * pos : pos;
default: return pos;
}
}
}());
return (posCalc * ((slider.vars.rtl)?1:-1)) + "px";
}());
if (slider.transitions) {
if (slider.isFirefox) {
target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + (parseInt(target)+'px') + ",0,0)";
} else {
target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + ((slider.vars.rtl?-1:1)*parseInt(target)+'px') + ",0,0)";
}
dur = (dur !== undefined) ? (dur/1000) + "s" : "0s";
slider.container.css("-" + slider.pfx + "-transition-duration", dur);
slider.container.css("transition-duration", dur);
}
slider.args[slider.prop] = target;
if (slider.transitions || dur === undefined) { slider.container.css(slider.args); }
slider.container.css('transform',target);
};
slider.setup = function(type) {
// SLIDE:
if (!fade) {
var sliderOffset, arr;
if (type === "init") {
slider.viewport = $('').css({"overflow": "hidden", "position": "relative"}).appendTo(slider).append(slider.container);
// INFINITE LOOP:
slider.cloneCount = 0;
slider.cloneOffset = 0;
// REVERSE:
if (reverse) {
arr = $.makeArray(slider.slides).reverse();
slider.slides = $(arr);
slider.container.empty().append(slider.slides);
}
}
// INFINITE LOOP && !CAROUSEL:
if (slider.vars.animationLoop && !carousel) {
slider.cloneCount = 2;
slider.cloneOffset = 1;
// clear out old clones
if (type !== "init") { slider.container.find('.clone').remove(); }
slider.container.append(methods.uniqueID(slider.slides.first().clone().addClass('clone')).attr('aria-hidden', 'true'))
.prepend(methods.uniqueID(slider.slides.last().clone().addClass('clone')).attr('aria-hidden', 'true'));
}
slider.newSlides = $(slider.vars.selector, slider);
sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset;
// VERTICAL:
if (vertical && !carousel) {
slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%");
setTimeout(function(){
slider.newSlides.css({"display": "block"});
slider.doMath();
slider.viewport.height(slider.h);
slider.setProps(sliderOffset * slider.h, "init");
}, (type === "init") ? 100 : 0);
} else {
slider.container.width((slider.count + slider.cloneCount) * 200 + "%");
slider.setProps(sliderOffset * slider.computedW, "init");
setTimeout(function(){
slider.doMath();
if(slider.vars.rtl){
if (slider.isFirefox) {
slider.newSlides.css({"width": slider.computedW, "marginRight" : slider.computedM, "float": "right", "display": "block"});
} else {
slider.newSlides.css({"width": slider.computedW, "marginRight" : slider.computedM, "float": "left", "display": "block"});
}
}
else{
slider.newSlides.css({"width": slider.computedW, "marginRight" : slider.computedM, "float": "left", "display": "block"});
}
// SMOOTH HEIGHT:
if (slider.vars.smoothHeight) { methods.smoothHeight(); }
}, (type === "init") ? 100 : 0);
}
} else { // FADE:
if(slider.vars.rtl){
slider.slides.css({"width": "100%", "float": 'right', "marginLeft": "-100%", "position": "relative"});
}
else{
slider.slides.css({"width": "100%", "float": 'left', "marginRight": "-100%", "position": "relative"});
}
if (type === "init") {
if (!touch) {
//slider.slides.eq(slider.currentSlide).fadeIn(slider.vars.animationSpeed, slider.vars.easing);
if (slider.vars.fadeFirstSlide == false) {
slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).css({"opacity": 1});
} else {
slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).animate({"opacity": 1},slider.vars.animationSpeed,slider.vars.easing);
}
} else {
slider.slides.css({ "opacity": 0, "display": "block", "webkitTransition": "opacity " + slider.vars.animationSpeed / 1000 + "s ease", "zIndex": 1 }).eq(slider.currentSlide).css({ "opacity": 1, "zIndex": 2});
}
}
// SMOOTH HEIGHT:
if (slider.vars.smoothHeight) { methods.smoothHeight(); }
}
// !CAROUSEL:
// CANDIDATE: active slide
if (!carousel) { slider.slides.removeClass(namespace + "active-slide").eq(slider.currentSlide).addClass(namespace + "active-slide"); }
//FlexSlider: init() Callback
slider.vars.init(slider);
};
slider.doMath = function() {
var slide = slider.slides.first(),
slideMargin = slider.vars.itemMargin,
minItems = slider.vars.minItems,
maxItems = slider.vars.maxItems;
slider.w = (slider.viewport===undefined) ? slider.width() : slider.viewport.width();
if (slider.isFirefox) { slider.w = slider.width(); }
slider.h = slide.height();
slider.boxPadding = slide.outerWidth() - slide.width();
// CAROUSEL:
if (carousel) {
slider.itemT = slider.vars.itemWidth + slideMargin;
slider.itemM = slideMargin;
slider.minW = (minItems) ? minItems * slider.itemT : slider.w;
slider.maxW = (maxItems) ? (maxItems * slider.itemT) - slideMargin : slider.w;
slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * (minItems - 1)))/minItems :
(slider.maxW < slider.w) ? (slider.w - (slideMargin * (maxItems - 1)))/maxItems :
(slider.vars.itemWidth > slider.w) ? slider.w : slider.vars.itemWidth;
slider.visible = Math.floor(slider.w/(slider.itemW));
slider.move = (slider.vars.move > 0 && slider.vars.move < slider.visible ) ? slider.vars.move : slider.visible;
slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1);
slider.last = slider.pagingCount - 1;
slider.limit = (slider.pagingCount === 1) ? 0 :
(slider.vars.itemWidth > slider.w) ? (slider.itemW * (slider.count - 1)) + (slideMargin * (slider.count - 1)) : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin;
} else {
slider.itemW = slider.w;
slider.itemM = slideMargin;
slider.pagingCount = slider.count;
slider.last = slider.count - 1;
}
slider.computedW = slider.itemW - slider.boxPadding;
slider.computedM = slider.itemM;
};
slider.update = function(pos, action) {
slider.doMath();
// update currentSlide and slider.animatingTo if necessary
if (!carousel) {
if (pos < slider.currentSlide) {
slider.currentSlide += 1;
} else if (pos <= slider.currentSlide && pos !== 0) {
slider.currentSlide -= 1;
}
slider.animatingTo = slider.currentSlide;
}
// update controlNav
if (slider.vars.controlNav && !slider.manualControls) {
if ((action === "add" && !carousel) || slider.pagingCount > slider.controlNav.length) {
methods.controlNav.update("add");
} else if ((action === "remove" && !carousel) || slider.pagingCount < slider.controlNav.length) {
if (carousel && slider.currentSlide > slider.last) {
slider.currentSlide -= 1;
slider.animatingTo -= 1;
}
methods.controlNav.update("remove", slider.last);
}
}
// update directionNav
if (slider.vars.directionNav) { methods.directionNav.update(); }
};
slider.addSlide = function(obj, pos) {
var $obj = $(obj);
slider.count += 1;
slider.last = slider.count - 1;
// append new slide
if (vertical && reverse) {
(pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj);
} else {
(pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj);
}
// update currentSlide, animatingTo, controlNav, and directionNav
slider.update(pos, "add");
// update slider.slides
slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
// re-setup the slider to accomdate new slide
slider.setup();
//FlexSlider: added() Callback
slider.vars.added(slider);
};
slider.removeSlide = function(obj) {
var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj;
// update count
slider.count -= 1;
slider.last = slider.count - 1;
// remove slide
if (isNaN(obj)) {
$(obj, slider.slides).remove();
} else {
(vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove();
}
// update currentSlide, animatingTo, controlNav, and directionNav
slider.doMath();
slider.update(pos, "remove");
// update slider.slides
slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
// re-setup the slider to accomdate new slide
slider.setup();
// FlexSlider: removed() Callback
slider.vars.removed(slider);
};
//FlexSlider: Initialize
methods.init();
};
// Ensure the slider isn't focussed if the window loses focus.
$( window ).blur( function ( e ) {
focused = false;
}).focus( function ( e ) {
focused = true;
});
//FlexSlider: Default Settings
$.flexslider.defaults = {
namespace: "flex-", //{NEW} String: Prefix string attached to the class of every element generated by the plugin
selector: ".slides > li", //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril
animation: "fade", //String: Select your animation type, "fade" or "slide"
easing: "swing", //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!
direction: "horizontal", //String: Select the sliding direction, "horizontal" or "vertical"
reverse: false, //{NEW} Boolean: Reverse the animation direction
animationLoop: true, //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end
smoothHeight: false, //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode
startAt: 0, //Integer: The slide that the slider should start on. Array notation (0 = first slide)
slideshow: true, //Boolean: Animate slider automatically
slideshowSpeed: 7000, //Integer: Set the speed of the slideshow cycling, in milliseconds
animationSpeed: 600, //Integer: Set the speed of animations, in milliseconds
initDelay: 0, //{NEW} Integer: Set an initialization delay, in milliseconds
randomize: false, //Boolean: Randomize slide order
fadeFirstSlide: true, //Boolean: Fade in the first slide when animation type is "fade"
thumbCaptions: false, //Boolean: Whether or not to put captions on thumbnails when using the "thumbnails" controlNav.
// Usability features
pauseOnAction: true, //Boolean: Pause the slideshow when interacting with control elements, highly recommended.
pauseOnHover: false, //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering
pauseInvisible: true, //{NEW} Boolean: Pause the slideshow when tab is invisible, resume when visible. Provides better UX, lower CPU usage.
useCSS: true, //{NEW} Boolean: Slider will use CSS3 transitions if available
touch: true, //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices
video: false, //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches
// Primary Controls
controlNav: true, //Boolean: Create navigation for paging control of each slide? Note: Leave true for manualControls usage
directionNav: true, //Boolean: Create navigation for previous/next navigation? (true/false)
prevText: "Previous", //String: Set the text for the "previous" directionNav item
nextText: "Next", //String: Set the text for the "next" directionNav item
// Secondary Navigation
keyboard: true, //Boolean: Allow slider navigating via keyboard left/right keys
multipleKeyboard: false, //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.
mousewheel: false, //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel
pausePlay: false, //Boolean: Create pause/play dynamic element
pauseText: "Pause", //String: Set the text for the "pause" pausePlay item
playText: "Play", //String: Set the text for the "play" pausePlay item
// Special properties
controlsContainer: "", //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be $(".flexslider-container"). Property is ignored if given element is not found.
manualControls: "", //{UPDATED} jQuery Object/Selector: Declare custom control navigation. Examples would be $(".flex-control-nav li") or "#tabs-nav li img", etc. The number of elements in your controlNav should match the number of slides/tabs.
customDirectionNav: "", //{NEW} jQuery Object/Selector: Custom prev / next button. Must be two jQuery elements. In order to make the events work they have to have the classes "prev" and "next" (plus namespace)
sync: "", //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.
asNavFor: "", //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider
// Carousel Options
itemWidth: 0, //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.
itemMargin: 0, //{NEW} Integer: Margin between carousel items.
minItems: 1, //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.
maxItems: 0, //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.
move: 0, //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.
allowOneSlide: true, //{NEW} Boolean: Whether or not to allow a slider comprised of a single slide
// Browser Specific
isFirefox: false, // {NEW} Boolean: Set to true when Firefox is the browser used.
// Callback API
start: function(){}, //Callback: function(slider) - Fires when the slider loads the first slide
before: function(){}, //Callback: function(slider) - Fires asynchronously with each slider animation
after: function(){}, //Callback: function(slider) - Fires after each slider animation completes
end: function(){}, //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)
added: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is added
removed: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is removed
init: function() {}, //{NEW} Callback: function(slider) - Fires after the slider is initially setup
rtl: false //{NEW} Boolean: Whether or not to enable RTL mode
};
//FlexSlider: Plugin Function
$.fn.flexslider = function(options) {
if (options === undefined) { options = {}; }
if (typeof options === "object") {
return this.each(function() {
var $this = $(this),
selector = (options.selector) ? options.selector : ".slides > li",
$slides = $this.find(selector);
if ( ( $slides.length === 1 && options.allowOneSlide === false ) || $slides.length === 0 ) {
$slides.fadeIn(400);
if (options.start) { options.start($this); }
} else if ($this.data('flexslider') === undefined) {
new $.flexslider(this, options);
}
});
} else {
// Helper strings to quickly perform functions on the slider
var $slider = $(this).data('flexslider');
switch (options) {
case "play": $slider.play(); break;
case "pause": $slider.pause(); break;
case "stop": $slider.stop(); break;
case "next": $slider.flexAnimate($slider.getTarget("next"), true); break;
case "prev":
case "previous": $slider.flexAnimate($slider.getTarget("prev"), true); break;
default: if (typeof options === "number") { $slider.flexAnimate(options, true); }
}
}
};
})(jQuery);
$('.flexslider').flexslider({
animation : "slide",
slideshow: true,
slideshowSpeed: 9000,
animationSpeed: 800,
directionNav: true,
controlNav: true,
keyboard: true,
multipleKeyboard: false,
start : function(slider) {
$('body').removeClass('loading');
}
});
App-Download
Schritt 1
Befestigen Sie den Filter auf der Rückseite Ihres Geräts, sodass die Kamera hindurchschaut. Achten Sie darauf, dass der Klettverschluss den Filter sicher an Ort und Stelle hält.
Schritt 2
Richten Sie das Handy auf die Sonne (ohne direkt in die Sonne zu schauen). Bewegen Sie den Zoom-Schieberegler, um heranzuzoomen.
Schritt 3
Wenn die Sonne zu hell oder zu dunkel ist, passen Sie die Helligkeit mit dem Exp-Schieberegler an.
Schritt 4
Wenn der Rand der Sonne unscharf ist, bewegen Sie den Fokus-Schieberegler, um ihn scharfzustellen. Jetzt sind Sie bereit, ein Foto aufzunehmen!
Zusatzfunktionen
Macht alle 60 Sekunden ein Foto.
Macht alle 10 Sekunden eine Serie von 5 Fotos.
Machen Sie 1 Foto oder 3 Fotos mit leicht unterschiedlichen Belichtungen.
Totality
Während der Totalität (und nur während der Totalität) dürfen Sie den Kamerafilter und die Brille abnehmen. Verwenden Sie den Totalitätsmodus, um automatisch alle zehn Sekunden ein Foto aufzunehmen (hier wird ein Stativ empfohlen). Üben Sie dies im Voraus, da die Totalität schnell vorbeigeht und es keine „Wiederholung“ gibt.
Durch die BRESSER Sonnenfinsternis-Brille bestaunen Sie eins der faszinierendsten Himmelsereignisse ganz leicht und absolut sicher. Egal ob ringförmig, total oder partiell - es ist immer ein atemberaubender Anblick, wenn sich der Mond vor die Sonne schiebt. Um Ihre Augen dabei optimal zu schützen, wurde diese Spezial-Brille für die Sonnenbeobachtung nach höchsten Sicherheitsstandards in den USA hergestellt.
Die SoFi-Brille von BRESSER: Ihr sicheres Fenster zur Sonne
Die qualitativ hochwertige Weißlichtfilterfolie der Brille blockiert schädliche UV- und IR-Strahlen zuverlässig. Dabei erzeugt sie ein sehr natürliches hellgelbes Bild von unserem Heimatstern. Zudem eignet sich die Sonnenfinsternis-Brille durch ihre robuste Verarbeitung für die wiederholte Verwendung. So können Sie damit auch immer wieder nach großen Sonnenflecken Ausschau halten oder an der Sonne vorbeifliegende Flugzeuge bestaunen.
Machen Sie sich bereit für die nächste SoFi und genießen Sie die Sonnenbeobachtung mit sicherem Schutz - durch die BRESSER Sonnenfinsternis-Brille.
EIGENSCHAFTENSpezial-Brille zur sicheren Sonnenfinsternis-Beobachtung
Erzeugt ein natürliches, hellgelbes Sonnenbild
Ideal für die gefahrlose visuelle Sonnenbeobachtung
Sehr widerstandsfähig gegen Beschädigung
Sofort einsatzbereit
Entspricht der Norm für Augen- und Gesichtsschutz EN ISO 12312-2:2015, bestätigt durch unabhängigen Labortest von ICS INC. Laboratories
LIEFERUMFANG
3 Sonnenfinsternis-Brillen
Durch die BRESSER Sonnenfinsternis-Brille bestaunen Sie eins der faszinierendsten Himmelsereignisse ganz leicht und absolut sicher. Egal ob ringförmig, total oder partiell - es ist immer ein atemberaubender Anblick, wenn sich der Mond vor die Sonne schiebt. Um Ihre Augen dabei optimal zu schützen, wurde diese Spezial-Brille für die Sonnenbeobachtung nach höchsten Sicherheitsstandards in den USA hergestellt.
Die SoFi-Brille von BRESSER: Ihr sicheres Fenster zur Sonne
Die qualitativ hochwertige Weißlichtfilterfolie der Brille blockiert schädliche UV- und IR-Strahlen zuverlässig. Dabei erzeugt sie ein sehr natürliches hellgelbes Bild von unserem Heimatstern. Zudem eignet sich die Sonnenfinsternis-Brille durch ihre robuste Verarbeitung für die wiederholte Verwendung. So können Sie damit auch immer wieder nach großen Sonnenflecken Ausschau halten oder an der Sonne vorbeifliegende Flugzeuge bestaunen.
Machen Sie sich bereit für die nächste SoFi und genießen Sie die Sonnenbeobachtung mit sicherem Schutz - durch die BRESSER Sonnenfinsternis-Brille.
EIGENSCHAFTENSpezial-Brille zur sicheren Sonnenfinsternis-Beobachtung
Erzeugt ein natürliches, hellgelbes Sonnenbild
Ideal für die gefahrlose visuelle Sonnenbeobachtung
Sehr widerstandsfähig gegen Beschädigung
Sofort einsatzbereit
Entspricht der Norm für Augen- und Gesichtsschutz EN ISO 12312-2:2015, bestätigt durch unabhängigen Labortest von ICS INC. Laboratories
LIEFERUMFANG
5 Sonnenfinsternis-Brillen
Durch die BRESSER Sonnenfinsternis-Brille bestaunen Sie eins der faszinierendsten Himmelsereignisse ganz leicht und absolut sicher. Egal ob ringförmig, total oder partiell - es ist immer ein atemberaubender Anblick, wenn sich der Mond vor die Sonne schiebt. Um Ihre Augen dabei optimal zu schützen, wurde diese Spezial-Brille für die Sonnenbeobachtung nach höchsten Sicherheitsstandards in den USA hergestellt.
Die SoFi-Brille von BRESSER: Ihr sicheres Fenster zur Sonne
Die qualitativ hochwertige Weißlichtfilterfolie der Brille blockiert schädliche UV- und IR-Strahlen zuverlässig. Dabei erzeugt sie ein sehr natürliches hellgelbes Bild von unserem Heimatstern. Zudem eignet sich die Sonnenfinsternis-Brille durch ihre robuste Verarbeitung für die wiederholte Verwendung. So können Sie damit auch immer wieder nach großen Sonnenflecken Ausschau halten oder an der Sonne vorbeifliegende Flugzeuge bestaunen.
Machen Sie sich bereit für die nächste SoFi und genießen Sie die Sonnenbeobachtung mit sicherem Schutz - durch die BRESSER Sonnenfinsternis-Brille.
EIGENSCHAFTENSpezial-Brille zur sicheren Sonnenfinsternis-Beobachtung
Erzeugt ein natürliches, hellgelbes Sonnenbild
Ideal für die gefahrlose visuelle Sonnenbeobachtung
Sehr widerstandsfähig gegen Beschädigung
Sofort einsatzbereit
Entspricht der Norm für Augen- und Gesichtsschutz EN ISO 12312-2:2015, bestätigt durch unabhängigen Labortest von ICS INC. Laboratories
LIEFERUMFANG
10 Sonnenfinsternis-Brillen
Durch die BRESSER Sonnenfinsternis-Brille bestaunen Sie eins der faszinierendsten Himmelsereignisse ganz leicht und absolut sicher. Egal ob ringförmig, total oder partiell - es ist immer ein atemberaubender Anblick, wenn sich der Mond vor die Sonne schiebt. Um Ihre Augen dabei optimal zu schützen, wurde diese Spezial-Brille für die Sonnenbeobachtung nach höchsten Sicherheitsstandards in den USA hergestellt.
Die SoFi-Brille von BRESSER: Ihr sicheres Fenster zur Sonne
Die qualitativ hochwertige Weißlichtfilterfolie der Brille blockiert schädliche UV- und IR-Strahlen zuverlässig. Dabei erzeugt sie ein sehr natürliches hellgelbes Bild von unserem Heimatstern. Zudem eignet sich die Sonnenfinsternis-Brille durch ihre robuste Verarbeitung für die wiederholte Verwendung. So können Sie damit auch immer wieder nach großen Sonnenflecken Ausschau halten oder an der Sonne vorbeifliegende Flugzeuge bestaunen.
Machen Sie sich bereit für die nächste SoFi und genießen Sie die Sonnenbeobachtung mit sicherem Schutz - durch die BRESSER Sonnenfinsternis-Brille.
EIGENSCHAFTENSpezial-Brille zur sicheren Sonnenfinsternis-Beobachtung
Erzeugt ein natürliches, hellgelbes Sonnenbild
Ideal für die gefahrlose visuelle Sonnenbeobachtung
Sehr widerstandsfähig gegen Beschädigung
Sofort einsatzbereit
Entspricht der Norm für Augen- und Gesichtsschutz EN ISO 12312-2:2015, bestätigt durch unabhängigen Labortest von ICS INC. Laboratories
LIEFERUMFANG
25 Sonnenfinsternis-Brillen
Durch die BRESSER Sonnenfinsternis-Brille bestaunen Sie eins der faszinierendsten Himmelsereignisse ganz leicht und absolut sicher. Egal ob ringförmig, total oder partiell - es ist immer ein atemberaubender Anblick, wenn sich der Mond vor die Sonne schiebt. Um Ihre Augen dabei optimal zu schützen, wurde diese Spezial-Brille für die Sonnenbeobachtung nach höchsten Sicherheitsstandards in den USA hergestellt.
Die SoFi-Brille von BRESSER: Ihr sicheres Fenster zur Sonne
Die qualitativ hochwertige Weißlichtfilterfolie der Brille blockiert schädliche UV- und IR-Strahlen zuverlässig. Dabei erzeugt sie ein sehr natürliches hellgelbes Bild von unserem Heimatstern. Zudem eignet sich die Sonnenfinsternis-Brille durch ihre robuste Verarbeitung für die wiederholte Verwendung. So können Sie damit auch immer wieder nach großen Sonnenflecken Ausschau halten oder an der Sonne vorbeifliegende Flugzeuge bestaunen.
Machen Sie sich bereit für die nächste SoFi und genießen Sie die Sonnenbeobachtung mit sicherem Schutz - durch die BRESSER Sonnenfinsternis-Brille.
EIGENSCHAFTENSpezial-Brille zur sicheren Sonnenfinsternis-Beobachtung
Erzeugt ein natürliches, hellgelbes Sonnenbild
Ideal für die gefahrlose visuelle Sonnenbeobachtung
Sehr widerstandsfähig gegen Beschädigung
Sofort einsatzbereit
Entspricht der Norm für Augen- und Gesichtsschutz EN ISO 12312-2:2015, bestätigt durch unabhängigen Labortest von ICS INC. Laboratories
LIEFERUMFANG
50 Sonnenfinsternis-Brillen
Durch die BRESSER Sonnenfinsternis-Brille bestaunen Sie eins der faszinierendsten Himmelsereignisse ganz leicht und absolut sicher. Egal ob ringförmig, total oder partiell - es ist immer ein atemberaubender Anblick, wenn sich der Mond vor die Sonne schiebt. Um Ihre Augen dabei optimal zu schützen, wurde diese Spezial-Brille für die Sonnenbeobachtung nach höchsten Sicherheitsstandards in den USA hergestellt.
Die SoFi-Brille von BRESSER: Ihr sicheres Fenster zur Sonne
Die qualitativ hochwertige Weißlichtfilterfolie der Brille blockiert schädliche UV- und IR-Strahlen zuverlässig. Dabei erzeugt sie ein sehr natürliches hellgelbes Bild von unserem Heimatstern. Zudem eignet sich die Sonnenfinsternis-Brille durch ihre robuste Verarbeitung für die wiederholte Verwendung. So können Sie damit auch immer wieder nach großen Sonnenflecken Ausschau halten oder an der Sonne vorbeifliegende Flugzeuge bestaunen.
Machen Sie sich bereit für die nächste SoFi und genießen Sie die Sonnenbeobachtung mit sicherem Schutz - durch die BRESSER Sonnenfinsternis-Brille.
EIGENSCHAFTENSpezial-Brille zur sicheren Sonnenfinsternis-Beobachtung
Erzeugt ein natürliches, hellgelbes Sonnenbild
Ideal für die gefahrlose visuelle Sonnenbeobachtung
Sehr widerstandsfähig gegen Beschädigung
Sofort einsatzbereit
Entspricht der Norm für Augen- und Gesichtsschutz EN ISO 12312-2:2015, bestätigt durch unabhängigen Labortest von ICS INC. Laboratories
LIEFERUMFANG
250 Sonnenfinsternis-Brillen
Durch die BRESSER Sonnenfinsternis-Brille bestaunen Sie eins der faszinierendsten Himmelsereignisse ganz leicht und absolut sicher. Egal ob ringförmig, total oder partiell - es ist immer ein atemberaubender Anblick, wenn sich der Mond vor die Sonne schiebt. Um Ihre Augen dabei optimal zu schützen, wurde diese Spezial-Brille für die Sonnenbeobachtung nach höchsten Sicherheitsstandards in den USA hergestellt.
Die SoFi-Brille von BRESSER: Ihr sicheres Fenster zur Sonne
Die qualitativ hochwertige Weißlichtfilterfolie der Brille blockiert schädliche UV- und IR-Strahlen zuverlässig. Dabei erzeugt sie ein sehr natürliches hellgelbes Bild von unserem Heimatstern. Zudem eignet sich die Sonnenfinsternis-Brille durch ihre robuste Verarbeitung für die wiederholte Verwendung. So können Sie damit auch immer wieder nach großen Sonnenflecken Ausschau halten oder an der Sonne vorbeifliegende Flugzeuge bestaunen.
Machen Sie sich bereit für die nächste SoFi und genießen Sie die Sonnenbeobachtung mit sicherem Schutz - durch die BRESSER Sonnenfinsternis-Brille.
EIGENSCHAFTENSpezial-Brille zur sicheren Sonnenfinsternis-Beobachtung
Erzeugt ein natürliches, hellgelbes Sonnenbild
Ideal für die gefahrlose visuelle Sonnenbeobachtung
Sehr widerstandsfähig gegen Beschädigung
Sofort einsatzbereit
Entspricht der Norm für Augen- und Gesichtsschutz EN ISO 12312-2:2015, bestätigt durch unabhängigen Labortest von ICS INC. Laboratories
LIEFERUMFANG
500 Sonnenfinsternis-Brillen
Durch die BRESSER Sonnenfinsternis-Brille bestaunen Sie eins der faszinierendsten Himmelsereignisse ganz leicht und absolut sicher. Egal ob ringförmig, total oder partiell - es ist immer ein atemberaubender Anblick, wenn sich der Mond vor die Sonne schiebt. Um Ihre Augen dabei optimal zu schützen, wurde diese Spezial-Brille für die Sonnenbeobachtung nach höchsten Sicherheitsstandards in den USA hergestellt.
Die SoFi-Brille von BRESSER: Ihr sicheres Fenster zur Sonne
Die qualitativ hochwertige Weißlichtfilterfolie der Brille blockiert schädliche UV- und IR-Strahlen zuverlässig. Dabei erzeugt sie ein sehr natürliches hellgelbes Bild von unserem Heimatstern. Zudem eignet sich die Sonnenfinsternis-Brille durch ihre robuste Verarbeitung für die wiederholte Verwendung. So können Sie damit auch immer wieder nach großen Sonnenflecken Ausschau halten oder an der Sonne vorbeifliegende Flugzeuge bestaunen.
Machen Sie sich bereit für die nächste SoFi und genießen Sie die Sonnenbeobachtung mit sicherem Schutz - durch die BRESSER Sonnenfinsternis-Brille.
EIGENSCHAFTENSpezial-Brille zur sicheren Sonnenfinsternis-Beobachtung
Erzeugt ein natürliches, hellgelbes Sonnenbild
Ideal für die gefahrlose visuelle Sonnenbeobachtung
Sehr widerstandsfähig gegen Beschädigung
Sofort einsatzbereit
Entspricht der Norm für Augen- und Gesichtsschutz EN ISO 12312-2:2015, bestätigt durch unabhängigen Labortest von ICS INC. Laboratories
LIEFERUMFANG
5.000 Sonnenfinsternis-Brillen
Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries. App Store is a service mark of Apple Inc., registered in the U.S. and other countries. Google Play and the Google Play logo are trademarks of Google Inc.
Wir verwenden Cookies, um Inhalte und Dienste zu personalisieren und zu verbessern, relevante Werbung zu schalten und ein sicheres Erlebnis zu bieten. Sie können Ihre Cookie-Kontrollen jederzeit überprüfen. Erfahren Sie mir über die Verwendung und Kontrolle von Cookies in unserer Datenschutzerklärung. Impressum
Funktionale Cookies sind für die Funktionalität des Webshops unbedingt erforderlich. Diese Cookies ordnen Ihrem Browser eine eindeutige zufällige ID zu damit Ihr ungehindertes Einkaufserlebnis über mehrere Seitenaufrufe hinweg gewährleistet werden kann.
Google Pay Zahlungen
Amazon Pay
Stripe orig props:
Stripe-referrer-informationen.
Private maschinenkennung:
Sicherheitstoken zum identifizieren des privaten computers.
Site-auth:
Stripe-authentifizierungscookie.
Stripe csrf:
CSRF-token.
ODOSCOPE
PayPal-Zahlungen
Cookie Einstellungen:
Das Cookie wird verwendet um die Cookie Einstellungen des Seitenbenutzers über mehrere Browsersitzungen zu speichern.
Herkunftsinformationen:
Das Cookie speichert die Herkunftsseite und die zuerst besuchte Seite des Benutzers für eine weitere Verwendung.
Zahlungsdienstleister (Stripe) Session
Zeitzone:
Das Cookie wird verwendet um dem System die aktuelle Zeitzone des Benutzers zur Verfügung zu stellen.
CAPTCHA-Integration
Zahlungsdienstleister (Stripe) Session
Stripe:
Das Cookie wird vom Zahlungsanbieter genutzt um die Sicherheit bei der Abwicklung von Zahlungen auf der Webseite zu erhöhen.
Cache Behandlung:
Das Cookie wird eingesetzt um den Cache für unterschiedliche Szenarien und Seitenbenutzer zu differenzieren.
Session:
Das Session Cookie speichert Ihre Einkaufsdaten über mehrere Seitenaufrufe hinweg und ist somit unerlässlich für Ihr persönliches Einkaufserlebnis.
Zahlungsdienstleister (Stripe) Betrugsprävention
Zahlungsdienstleister (Stripe) Betrugsprävention
CSRF-Token:
Das CSRF-Token Cookie trägt zu Ihrer Sicherheit bei. Es verstärkt die Absicherung bei Formularen gegen unerwünschte Hackangriffe.
Google Tag Manager Debug Modus:
Ermöglicht es den Google Tag Manager im Debug Modus auszuführen.
Aktivierte Cookies:
Speichert welche Cookies bereits vom Benutzer zum ersten Mal akzeptiert wurden.
Erlaubt es Google, personenbezogene Daten für Online-Werbung und Marketing zu sammeln.
AWIN Tracking:
Affiliate-Marketing-Modul, welches die Verwendung von Cookies zur Bestätigung von Affiliate-Transaktionen erfordert.
Meta Pixel:
Cookie von Meta, das für Website-Analysen, Ad-Targeting und Anzeigenmessung verwendet wird.
Microsoft Ads:
Cookie von Microsoft Ads, das für Website-Analysen, Ad-Targeting und Anzeigenmessung verwendet wird.
Pinterest Ads:
Cookie von Pinterest, das für Website-Analysen, Ad-Targeting und Anzeigenmessung verwendet wird.
TikTok Ads:
Cookie von TikTok, das für Website-Analysen, Ad-Targeting und Anzeigenmessung verwendet wird.
YouTube-Video
Landkarte:
Wir verwenden OpenStreetMap als Anbieter, um Ihnen den Standort unserer Geschäfte und Händler visuell darzustellen.
Zuletzt angesehen Produkte:
Das Cookie speichert die zuletzt angesehenen Produkte um diese dann auf weiteren Produktseiten vorzuschlagen.
Merkzettel
Kunden haben auch gesehen.:
Das Cookie speichert die zuletzt angesehenen Produkte um sie für andere Kunden auf Produktseiten vorzuschlagen.
Für Statistiken und Shop-Performance-Metriken genutzte Cookies.
Google Analytics
Kauf- und Surfverhalten mit Google Tag Manager
Google Tag Manager:
Cookie von Google zur Steuerung der erweiterten Script- und Ereignisbehandlung.
Google Analytics:
Cookie von Google für Website-Analysen. Erzeugt statistische Daten darüber, wie der Besucher die Website nutzt.
Tracking Cookies helfen dem Shopbetreiber Informationen über das Verhalten von Nutzern auf ihrer Webseite zu sammeln und auszuwerten.
AWIN
Matomo Tracking:
Tracking-Statistiken zur Optimierung der Benutzerabläufe. Es werden keine persönlichen Daten gespeichert.
Google Analytics:
Google Analytics wird zur der Datenverkehranalyse der Webseite eingesetzt. Dabei können Statistiken über Webseitenaktivitäten erstellt und ausgelesen werden.
Marketing Cookies dienen dazu Werbeanzeigen auf der Webseite zielgerichtet und individuell über mehrere Seitenaufrufe und Browsersitzungen zu schalten.
Google Werbung und Marketing
Google Ads:
Werbung Targeting
Google AdSense:
Das Cookie wird von Google AdSense für Förderung der Werbungseffizienz auf der Webseite verwendet.
Google Conversion Tracking:
Das Google Conversion Tracking Cookie wird genutzt um Conversions auf der Webseite effektiv zu erfassen. Diese Informationen werden vom Seitenbetreiber genutzt um Google AdWords Kampagnen gezielt einzusetzen.
Shopware Analytics ist ein Analysedienst zur Erfassung des Shopping-Verhaltens auf diesem Webshop, bereitgestellt von der shopware AG (Ebbinghoff 10, 48624 Schöppingen, Deutschland) in gemeinsamer Verantwortung (siehe auch die Datenschutzinformationen). Die Rechtsgrundlage für die Datenverarbeitung ist Art. 6 Abs. 1 S. 1 lit. a DSGVO. Sofern Informationen lokal gespeichert werden, entnehmen Sie bitte weitere Details zur Datenverarbeitung unserer Datenschutzerklärung.
Empfänger der Daten ist die shopware AG sowie IT-Dienstleister. Verwendete Technologien umfassen Local Storage. Die erhobenen Daten beinhalten Kundengruppe, besuchte Seiten, Klickpfade, Datum und Uhrzeit des Besuches, Informationen über das genutzte Endgerät (Auflösung, Auflösungsdichte, Betriebssystem), Referrer URL, Informationen des verwendeten Browsers, Gebietsschema, Suchanfragen, Zeitzone. Der Zweck der Datenerhebung dient dem Marketing, der Analyse und der Statistik.
Die Datenverarbeitung erfolgt innerhalb der Europäischen Union. Bei Fragen zum Datenschutz können Sie den Datenschutzbeauftragten unter legal@shopware.com kontaktieren. Weitere Informationen finden Sie auf https://www.shopware.com/de/datenschutz/website.
Gespeicherte Daten:
Shopware Analytics fügt die folgenden Daten zum Local Storage des Browsers hinzu, bis die Zustimmung widerrufen wird: _swa_anonymousId (eine eindeutige Kennung des Besuchers), _swa_userTraits (Benutzermerkmale des Besuchers).
Um Videos anzusehen, müssen Sie Cookies von Drittanbietern akzeptieren: