/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress * @license MIT */ ;(function(root, factory) { if (typeof define === 'function' && define.amd) { define(factory); } else if (typeof exports === 'object') { module.exports = factory(); } else { root.NProgress = factory(); } })(this, function() { var NProgress = {}; NProgress.version = '0.2.0'; var Settings = NProgress.settings = { minimum: 0.08, easing: 'ease', positionUsing: '', speed: 200, trickle: true, trickleRate: 0.02, trickleSpeed: 800, showSpinner: true, barSelector: '[role="bar"]', spinnerSelector: '[role="spinner"]', parent: 'body', template: '
' }; /** * Updates configuration. * * NProgress.configure({ * minimum: 0.1 * }); */ NProgress.configure = function(options) { var key, value; for (key in options) { value = options[key]; if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value; } return this; }; /** * Last number. */ NProgress.status = null; /** * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`. * * NProgress.set(0.4); * NProgress.set(1.0); */ NProgress.set = function(n) { var started = NProgress.isStarted(); n = clamp(n, Settings.minimum, 1); NProgress.status = (n === 1 ? null : n); var progress = NProgress.render(!started), bar = progress.querySelector(Settings.barSelector), speed = Settings.speed, ease = Settings.easing; progress.offsetWidth; /* Repaint */ queue(function(next) { // Set positionUsing if it hasn't already been set if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS(); // Add transition css(bar, barPositionCSS(n, speed, ease)); if (n === 1) { // Fade out css(progress, { transition: 'none', opacity: 1 }); progress.offsetWidth; /* Repaint */ setTimeout(function() { css(progress, { transition: 'all ' + speed + 'ms linear', opacity: 0 }); setTimeout(function() { NProgress.remove(); next(); }, speed); }, speed); } else { setTimeout(next, speed); } }); return this; }; NProgress.isStarted = function() { return typeof NProgress.status === 'number'; }; /** * Shows the progress bar. * This is the same as setting the status to 0%, except that it doesn't go backwards. * * NProgress.start(); * */ NProgress.start = function() { if (!NProgress.status) NProgress.set(0); var work = function() { setTimeout(function() { if (!NProgress.status) return; NProgress.trickle(); work(); }, Settings.trickleSpeed); }; if (Settings.trickle) work(); return this; }; /** * Hides the progress bar. * This is the *sort of* the same as setting the status to 100%, with the * difference being `done()` makes some placebo effect of some realistic motion. * * NProgress.done(); * * If `true` is passed, it will show the progress bar even if its hidden. * * NProgress.done(true); */ NProgress.done = function(force) { if (!force && !NProgress.status) return this; return NProgress.inc(0.3 + 0.5 * Math.random()).set(1); }; /** * Increments by a random amount. */ NProgress.inc = function(amount) { var n = NProgress.status; if (!n) { return NProgress.start(); } else { if (typeof amount !== 'number') { amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95); } n = clamp(n + amount, 0, 0.994); return NProgress.set(n); } }; NProgress.trickle = function() { return NProgress.inc(Math.random() * Settings.trickleRate); }; /** * Waits for all supplied jQuery promises and * increases the progress as the promises resolve. * * @param $promise jQUery Promise */ (function() { var initial = 0, current = 0; NProgress.promise = function($promise) { if (!$promise || $promise.state() === "resolved") { return this; } if (current === 0) { NProgress.start(); } initial++; current++; $promise.always(function() { current--; if (current === 0) { initial = 0; NProgress.done(); } else { NProgress.set((initial - current) / initial); } }); return this; }; })(); /** * (Internal) renders the progress bar markup based on the `template` * setting. */ NProgress.render = function(fromStart) { if (NProgress.isRendered()) return document.getElementById('nprogress'); addClass(document.documentElement, 'nprogress-busy'); var progress = document.createElement('div'); progress.id = 'nprogress'; progress.innerHTML = Settings.template; var bar = progress.querySelector(Settings.barSelector), perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0), parent = document.querySelector(Settings.parent), spinner; css(bar, { transition: 'all 0 linear', transform: 'translate3d(' + perc + '%,0,0)' }); if (!Settings.showSpinner) { spinner = progress.querySelector(Settings.spinnerSelector); spinner && removeElement(spinner); } if (parent != document.body) { addClass(parent, 'nprogress-custom-parent'); } parent.appendChild(progress); return progress; }; /** * Removes the element. Opposite of render(). */ NProgress.remove = function() { removeClass(document.documentElement, 'nprogress-busy'); removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent'); var progress = document.getElementById('nprogress'); progress && removeElement(progress); }; /** * Checks if the progress bar is rendered. */ NProgress.isRendered = function() { return !!document.getElementById('nprogress'); }; /** * Determine which positioning CSS rule to use. */ NProgress.getPositioningCSS = function() { // Sniff on document.body.style var bodyStyle = document.body.style; // Sniff prefixes var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' : ('MozTransform' in bodyStyle) ? 'Moz' : ('msTransform' in bodyStyle) ? 'ms' : ('OTransform' in bodyStyle) ? 'O' : ''; if (vendorPrefix + 'Perspective' in bodyStyle) { // Modern browsers with 3D support, e.g. Webkit, IE10 return 'translate3d'; } else if (vendorPrefix + 'Transform' in bodyStyle) { // Browsers without 3D support, e.g. IE9 return 'translate'; } else { // Browsers without translate() support, e.g. IE7-8 return 'margin'; } }; /** * Helpers */ function clamp(n, min, max) { if (n < min) return min; if (n > max) return max; return n; } /** * (Internal) converts a percentage (`0..1`) to a bar translateX * percentage (`-100%..0%`). */ function toBarPerc(n) { return (-1 + n) * 100; } /** * (Internal) returns the correct CSS for changing the bar's * position given an n percentage, and speed and ease from Settings */ function barPositionCSS(n, speed, ease) { var barCSS; if (Settings.positionUsing === 'translate3d') { barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' }; } else if (Settings.positionUsing === 'translate') { barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' }; } else { barCSS = { 'margin-left': toBarPerc(n)+'%' }; } barCSS.transition = 'all '+speed+'ms '+ease; return barCSS; } /** * (Internal) Queues a function to be executed. */ var queue = (function() { var pending = []; function next() { var fn = pending.shift(); if (fn) { fn(next); } } return function(fn) { pending.push(fn); if (pending.length == 1) next(); }; })(); /** * (Internal) Applies css properties to an element, similar to the jQuery * css method. * * While this helper does assist with vendor prefixed property names, it * does not perform any manipulation of values prior to setting styles. */ var css = (function() { var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ], cssProps = {}; function camelCase(string) { return string.replace(/^-ms-/, 'ms-').replace(/-([\da-z])/gi, function(match, letter) { return letter.toUpperCase(); }); } function getVendorProp(name) { var style = document.body.style; if (name in style) return name; var i = cssPrefixes.length, capName = name.charAt(0).toUpperCase() + name.slice(1), vendorName; while (i--) { vendorName = cssPrefixes[i] + capName; if (vendorName in style) return vendorName; } return name; } function getStyleProp(name) { name = camelCase(name); return cssProps[name] || (cssProps[name] = getVendorProp(name)); } function applyCss(element, prop, value) { prop = getStyleProp(prop); element.style[prop] = value; } return function(element, properties) { var args = arguments, prop, value; if (args.length == 2) { for (prop in properties) { value = properties[prop]; if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value); } } else { applyCss(element, args[1], args[2]); } } })(); /** * (Internal) Determines if an element or space separated list of class names contains a class name. */ function hasClass(element, name) { var list = typeof element == 'string' ? element : classList(element); return list.indexOf(' ' + name + ' ') >= 0; } /** * (Internal) Adds a class to an element. */ function addClass(element, name) { var oldList = classList(element), newList = oldList + name; if (hasClass(oldList, name)) return; // Trim the opening space. element.className = newList.substring(1); } /** * (Internal) Removes a class from an element. */ function removeClass(element, name) { var oldList = classList(element), newList; if (!hasClass(element, name)) return; // Replace the class name. newList = oldList.replace(' ' + name + ' ', ' '); // Trim the opening and closing spaces. element.className = newList.substring(1, newList.length - 1); } /** * (Internal) Gets a space separated list of the class names on the element. * The list is wrapped with a single space on each end to facilitate finding * matches within the list. */ function classList(element) { return (' ' + (element.className || '') + ' ').replace(/\s+/gi, ' '); } /** * (Internal) Removes an element from the DOM. */ function removeElement(element) { element && element.parentNode && element.parentNode.removeChild(element); } return NProgress; }); September 2024 – Dream Kabob

September 2024

intobet Giriş 5 000 TL Hoşgeldin Bonusu Burada

Bahis Evde, cafe de, arabada, sokakta ya da restoranlarda, kısaca internet erişiminin bulunduğu her noktada intobet TV keyfini çıkarmak mümkündür. Canlı bahis ve canlı casino oyunları, rulet masaları ve blackjack oyunları ile sen de kazanmak istiyorsan doğru yerdesin. Sizleri önemseyen ve size değer veren bu işletme, hayal edilen ortamı mükemmel bir şekilde bahis severlere sunuyor …

intobet Giriş 5 000 TL Hoşgeldin Bonusu Burada Read More »

Exclusive Designs for Discerning Tastes – Sp5der Hoodies Sp5derHoodie

In the off of opportunity that Sp5der Hoodie alludes into a particular issue or brand, you can have a go at searching by means of web-based through web based business web sites, internet-dependent amusement phases, or straightforwardly on the brand’s site (if Readily available) to follow down a lot more data about its highlights, accessibility, …

Exclusive Designs for Discerning Tastes – Sp5der Hoodies Sp5derHoodie Read More »

Онлайн казино в Украине ᐈ Рейтинг ТОП казино на деньги

Не только в казино с бездепозитным бонусом, но и в любом другом казино, перед регистрацией стоит ознакомиться с правилами и условиями казино, чтобы избежать проблем в будущем. Правила и условия казино содержат много необходимой информации, касающейся депозитов, вывода средств, игр и бонусов, которую необходимо знать, чтобы избежать разочарований. С бонусами и акциями на огромных баннерах …

Онлайн казино в Украине ᐈ Рейтинг ТОП казино на деньги Read More »

Бездепозитные Бонусы За Регистрацию В Онлайн Казино 2024

Активируя фриспины или промокод юзер также не тратит свои деньги на запуск барабанов, но может одержать победу и вывести выигрыш. Если вы хотите получить доступ к лучшим бездепозитным бонусам в онлайн-казино, просто проверяйте ежедневно наши эксклюзивные предложения. Бездепозитный бонус даст вам возможность рассчитывать на бесплатные деньги или бесплатные вращения в слотах. Ищите свежие бездепозитные бонусы …

Бездепозитные Бонусы За Регистрацию В Онлайн Казино 2024 Read More »

Freespin Veren Siteler – En İyi Slot Siteleri

Коллекция игровых автоматов, включающая свыше 1000 различных слотов, принимает в свои ряды лучшие модели от ведущих разработчиков, таких как Novomatic, Igrosoft, EGT и многие другие. Vbet Ua — международное казино, получившее лицензию КРАИЛ. Предлагает пользователям сотни слотов, аркадные автоматы и раздел игр с живыми дилерами (американскую, европейскую, французскую рулетку, карточные игры и т.д.). Компания регулярно …

Freespin Veren Siteler – En İyi Slot Siteleri Read More »

“1xbet 솔직 후기소개, 가입 방법, 프로모션 리뷰랜

“1xbet 솔직 후기소개, 가입 방법, 프로모션 리뷰랜드 1xbet 온라인 카지노 최고의 온라인 카지노 한국에서 온라인 카지노 플레이 Content 매일 제공되는 스포츠 베팅이벤트 Bet 고객 지원에 효율적으로 도달하는 방법 ⚽1xbet에서는 어떤 스포츠와 이벤트에 베팅할 수 있나요? 보너스 사용법 정리 스포츠베팅” Bet 카지노, 모바일 기기에서의 경험 매일 열리는 토너먼트와 프로모션 이벤트 단폴배팅 설명 및 단폴 제재없는 사이트 …

“1xbet 솔직 후기소개, 가입 방법, 프로모션 리뷰랜 Read More »

“1xbet 솔직 후기소개, 가입 방법, 프로모션 리뷰랜

“1xbet 솔직 후기소개, 가입 방법, 프로모션 리뷰랜드 1xbet 온라인 카지노 최고의 온라인 카지노 한국에서 온라인 카지노 플레이 Content 매일 제공되는 스포츠 베팅이벤트 Bet 고객 지원에 효율적으로 도달하는 방법 ⚽1xbet에서는 어떤 스포츠와 이벤트에 베팅할 수 있나요? 보너스 사용법 정리 스포츠베팅” Bet 카지노, 모바일 기기에서의 경험 매일 열리는 토너먼트와 프로모션 이벤트 단폴배팅 설명 및 단폴 제재없는 사이트 …

“1xbet 솔직 후기소개, 가입 방법, 프로모션 리뷰랜 Read More »

오늘의 무료 프로모션 코드를 획득하세요 1xbet Co

오늘의 무료 프로모션 코드를 획득하세요 1xbet Com 원엑스벳1xbet 프로모션 코드 2024: Johnnybet Vip! Content Bet(원엑스벳) 프로모션코드? 입력시 혜택은 무엇? 전화 가입 원엑스벳 프로모션코드 – 1xbet 프로모션 코드 스토어 최대 1500 Eur + 150 Fs까지 웰컴 패키지 완전한 스포츠 전자 종이 비행기 충돌 게임 Bet에 예약 코드를 어떻게 로드하나요? Bet에 등록하는 방법: 전화 및 데스크톱 Bet …

오늘의 무료 프로모션 코드를 획득하세요 1xbet Co Read More »

오늘의 무료 프로모션 코드를 획득하세요 1xbet Co

오늘의 무료 프로모션 코드를 획득하세요 1xbet Com 원엑스벳1xbet 프로모션 코드 2024: Johnnybet Vip! Content Bet(원엑스벳) 프로모션코드? 입력시 혜택은 무엇? 전화 가입 원엑스벳 프로모션코드 – 1xbet 프로모션 코드 스토어 최대 1500 Eur + 150 Fs까지 웰컴 패키지 완전한 스포츠 전자 종이 비행기 충돌 게임 Bet에 예약 코드를 어떻게 로드하나요? Bet에 등록하는 방법: 전화 및 데스크톱 Bet …

오늘의 무료 프로모션 코드를 획득하세요 1xbet Co Read More »

오늘의 무료 프로모션 코드를 획득하세요 1xbet Co

오늘의 무료 프로모션 코드를 획득하세요 1xbet Com 원엑스벳1xbet 프로모션 코드 2024: Johnnybet Vip! Content Bet(원엑스벳) 프로모션코드? 입력시 혜택은 무엇? 전화 가입 원엑스벳 프로모션코드 – 1xbet 프로모션 코드 스토어 최대 1500 Eur + 150 Fs까지 웰컴 패키지 완전한 스포츠 전자 종이 비행기 충돌 게임 Bet에 예약 코드를 어떻게 로드하나요? Bet에 등록하는 방법: 전화 및 데스크톱 Bet …

오늘의 무료 프로모션 코드를 획득하세요 1xbet Co Read More »