Yvonne Marie S. Senosa // Virtual Assistant (2023)

Yvonne Marie S. Senosa // Virtual Assistant (2)

More Info About Me

AN OFW IN DOHA, QATAR

Yvonne Marie S. Senosa

doha, Qatar
yvonnesenosa@gmail.com

(Video) Python for Data Science | Data Science with Python | Python for Data Analysis | 11 Hours Full Course

Freelancer
View Work Hire Me


Certificates

Yvonne Marie S. Senosa // Virtual Assistant (3)

×

Yvonne Marie S. Senosa // Virtual Assistant (4)

My Experience and Education

  • EXPERIENCE
  • EDUCATION
(Video) Machine Learning Full Course For Beginners | Machine Learning Tutorial | Machine Learning Course

2015

BS IN HOTEL AND RESTAURANT MANAGEMENT

UNIVERSITY OF SAN AGUSTIN

2022 - 2023

QATAR INSURANCE CONSULTANCY (QICB)
(CLIENT RELATIONSHIP MANAGER)

Build relationships with key employees among customers

2018 - 2019

MUNICIPALITY OF OTON
(ADMIN ASSISTANT/ENCODER)

Carries out administrative duties such as recording, filing, typing, copying, binding, scanning etc. office work

2016 - 2018

(Video) JAN 23, 2023 | Community & Economic Development Committee
DoubleDragon Properties Corp.
(PROPOERTY ADMINISTRATOR)

Property administrators coordinate with prospective clients to inform them about the property and offers tours to give a better view of the location.

My Services

Social Media Management

Analyzing engagement data, identifying trends in customer interaction and planning digital campaigns to build community.

Data Entry / Web Researcher

Search the Internet for information on a wide variety of topics.

Content Creator

Promote companies' products and services by developing copy for websites, social media, marketing materials.


Works

Let's work together !

I am available for freelance projects.

Hire Me

(Video) How to apply for an H1B visa as a teacher in the US the smart way

Get In Touch

Address :
doha,
Qatar
Email :
yvonnesenosa@gmail.com

Copyright © Myprofile.ph

Copy Right By Yvonne Senosa | ALL RIGHTS RESERVED

', trigger: "hover focus", title: "", delay: 0, html: !1, container: !1, viewport: { selector: "body", padding: 0 } }, c.prototype.init = function (b, c, d) { if (this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d), this .$viewport = this.options.viewport && a(a.isFunction(this.options.viewport) ? this.options .viewport.call( this, this.$element) : this.options.viewport.selector || this.options.viewport), this .inState = { click: !1, hover: !1, focus: !1 }, this.$element[0] instanceof document.constructor && !this.options.selector) throw new Error( "`selector` option must be specified when initializing " + this.type + " on the window.document object!" ); for (var e = this.options.trigger.split(" "), f = e.length; f--;) { var g = e[f]; if ("click" == g) this.$element.on("click." + this.type, this.options.selector, a.proxy(this .toggle, this)); else if ("manual" != g) { var h = "hover" == g ? "mouseenter" : "focusin", i = "hover" == g ? "mouseleave" : "focusout"; this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on( i + "." + this.type, this.options.selector, a.proxy(this.leave, this)) } } this.options.selector ? this._options = a.extend({}, this.options, { trigger: "manual", selector: "" }) : this.fixTitle() }, c.prototype.getDefaults = function () { return c.DEFAULTS }, c.prototype.getOptions = function (b) { return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = { show: b.delay, hide: b.delay }), b }, c.prototype.getDelegateOptions = function () { var b = {}, c = this.getDefaults(); return this._options && a.each(this._options, function (a, d) { c[a] != d && (b[a] = d) }), b }, c.prototype.enter = function (b) { var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type); return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b .currentTarget).data( "bs." + this.type, c)), b instanceof a.Event && (c.inState["focusin" == b.type ? "focus" : "hover"] = !0), c.tip().hasClass("in") || "in" == c.hoverState ? void(c.hoverState = "in") : (clearTimeout(c .timeout), c .hoverState = "in", c.options.delay && c.options.delay.show ? void(c.timeout = setTimeout( function () { "in" == c.hoverState && c.show() }, c.options.delay.show)) : c.show()) }, c.prototype.isInStateTrue = function () { for (var a in this.inState) if (this.inState[a]) return !0; return !1 }, c.prototype.leave = function (b) { var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type); if (c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget) .data( "bs." + this.type, c)), b instanceof a.Event && (c.inState["focusout" == b.type ? "focus" : "hover"] = ! 1), !c.isInStateTrue()) return clearTimeout(c.timeout), c.hoverState = "out", c.options .delay && c.options .delay.hide ? void(c.timeout = setTimeout(function () { "out" == c.hoverState && c.hide() }, c.options.delay.hide)) : c.hide() }, c.prototype.show = function () { var b = a.Event("show.bs." + this.type); if (this.hasContent() && this.enabled) { this.$element.trigger(b); var d = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]); if (b.isDefaultPrevented() || !d) return; var e = this, f = this.tip(), g = this.getUID(this.type); this.setContent(), f.attr("id", g), this.$element.attr("aria-describedby", g), this.options .animation && f .addClass("fade"); var h = "function" == typeof this.options.placement ? this.options.placement.call(this, f[0], this.$element[ 0]) : this.options.placement, i = /\s?auto?\s?/i, j = i.test(h); j && (h = h.replace(i, "") || "top"), f.detach().css({ top: 0, left: 0, display: "block" }).addClass(h).data("bs." + this.type, this), this.options.container ? f.appendTo(this .options .container) : f.insertAfter(this.$element), this.$element.trigger("inserted.bs." + this .type); var k = this.getPosition(), l = f[0].offsetWidth, m = f[0].offsetHeight; if (j) { var n = h, o = this.getPosition(this.$viewport); h = "bottom" == h && k.bottom + m > o.bottom ? "top" : "top" == h && k.top - m < o.top ? "bottom" : "right" == h && k.right + l > o.width ? "left" : "left" == h && k.left - l < o.left ? "right" : h, f .removeClass(n).addClass(h) } var p = this.getCalculatedOffset(h, k, l, m); this.applyPlacement(p, h); var q = function () { var a = e.hoverState; e.$element.trigger("shown.bs." + e.type), e.hoverState = null, "out" == a && e.leave(e) }; a.support.transition && this.$tip.hasClass("fade") ? f.one("bsTransitionEnd", q) .emulateTransitionEnd(c .TRANSITION_DURATION) : q() } }, c.prototype.applyPlacement = function (b, c) { var d = this.tip(), e = d[0].offsetWidth, f = d[0].offsetHeight, g = parseInt(d.css("margin-top"), 10), h = parseInt(d.css("margin-left"), 10); isNaN(g) && (g = 0), isNaN(h) && (h = 0), b.top += g, b.left += h, a.offset.setOffset(d[0], a .extend({ using: function (a) { d.css({ top: Math.round(a.top), left: Math.round(a.left) }) } }, b), 0), d.addClass("in"); var i = d[0].offsetWidth, j = d[0].offsetHeight; "top" == c && j != f && (b.top = b.top + f - j); var k = this.getViewportAdjustedDelta(c, b, i, j); k.left ? b.left += k.left : b.top += k.top; var l = /top|bottom/.test(c), m = l ? 2 * k.left - e + i : 2 * k.top - f + j, n = l ? "offsetWidth" : "offsetHeight"; d.offset(b), this.replaceArrow(m, d[0][n], l) }, c.prototype.replaceArrow = function (a, b, c) { this.arrow().css(c ? "left" : "top", 50 * (1 - a / b) + "%").css(c ? "top" : "left", "") }, c.prototype.setContent = function () { var a = this.tip(), b = this.getTitle(); a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass( "fade in top bottom left right") }, c.prototype.hide = function (b) { function d() { "in" != e.hoverState && f.detach(), e.$element && e.$element.removeAttr("aria-describedby") .trigger( "hidden.bs." + e.type), b && b() } var e = this, f = a(this.$tip), g = a.Event("hide.bs." + this.type); if (this.$element.trigger(g), !g.isDefaultPrevented()) return f.removeClass("in"), a.support .transition && f .hasClass("fade") ? f.one("bsTransitionEnd", d).emulateTransitionEnd(c .TRANSITION_DURATION) : d(), this .hoverState = null, this }, c.prototype.fixTitle = function () { var a = this.$element; (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr( "data-original-title", a.attr( "title") || "").attr("title", "") }, c.prototype.hasContent = function () { return this.getTitle() }, c.prototype.getPosition = function (b) { b = b || this.$element; var c = b[0], d = "BODY" == c.tagName, e = c.getBoundingClientRect(); null == e.width && (e = a.extend({}, e, { width: e.right - e.left, height: e.bottom - e.top })); var f = window.SVGElement && c instanceof window.SVGElement, g = d ? { top: 0, left: 0 } : f ? null : b.offset(), h = { scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop() }, i = d ? { width: a(window).width(), height: a(window).height() } : null; return a.extend({}, e, h, i, g) }, c.prototype.getCalculatedOffset = function (a, b, c, d) { return "bottom" == a ? { top: b.top + b.height, left: b.left + b.width / 2 - c / 2 } : "top" == a ? { top: b.top - d, left: b.left + b.width / 2 - c / 2 } : "left" == a ? { top: b.top + b.height / 2 - d / 2, left: b.left - c } : { top: b.top + b.height / 2 - d / 2, left: b.left + b.width } }, c.prototype.getViewportAdjustedDelta = function (a, b, c, d) { var e = { top: 0, left: 0 }; if (!this.$viewport) return e; var f = this.options.viewport && this.options.viewport.padding || 0, g = this.getPosition(this.$viewport); if (/right|left/.test(a)) { var h = b.top - f - g.scroll, i = b.top + f - g.scroll + d; h < g.top ? e.top = g.top - h : i > g.top + g.height && (e.top = g.top + g.height - i) } else { var j = b.left - f, k = b.left + f + c; j < g.left ? e.left = g.left - j : k > g.right && (e.left = g.left + g.width - k) } return e }, c.prototype.getTitle = function () { var a, b = this.$element, c = this.options; return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c .title) }, c.prototype.getUID = function (a) { do a += ~~(1e6 * Math.random()); while (document.getElementById(a)); return a }, c.prototype.tip = function () { if (!this.$tip && (this.$tip = a(this.options.template), 1 != this.$tip.length)) throw new Error( this.type + " `template` option must consist of exactly 1 top-level element!"); return this.$tip }, c.prototype.arrow = function () { return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow") }, c.prototype.enable = function () { this.enabled = !0 }, c.prototype.disable = function () { this.enabled = !1 }, c.prototype.toggleEnabled = function () { this.enabled = !this.enabled }, c.prototype.toggle = function (b) { var c = this; b && (c = a(b.currentTarget).data("bs." + this.type), c || (c = new this.constructor(b .currentTarget, this .getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c))), b ? (c.inState .click = !c.inState .click, c.isInStateTrue() ? c.enter(c) : c.leave(c)) : c.tip().hasClass("in") ? c.leave(c) : c.enter(c) }, c.prototype.destroy = function () { var a = this; clearTimeout(this.timeout), this.hide(function () { a.$element.off("." + a.type).removeData("bs." + a.type), a.$tip && a.$tip.detach(), a .$tip = null, a .$arrow = null, a.$viewport = null, a.$element = null }) }; var d = a.fn.tooltip; a.fn.tooltip = b, a.fn.tooltip.Constructor = c, a.fn.tooltip.noConflict = function () { return a.fn.tooltip = d, this } }(jQuery), + function (a) { "use strict"; function b(b) { return this.each(function () { var d = a(this), e = d.data("bs.popover"), f = "object" == typeof b && b; !e && /destroy|hide/.test(b) || (e || d.data("bs.popover", e = new c(this, f)), "string" == typeof b && e[ b]()) }) } var c = function (a, b) { this.init("popover", a, b) }; if (!a.fn.tooltip) throw new Error("Popover requires tooltip.js"); c.VERSION = "3.3.7", c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, { placement: "right", trigger: "click", content: "", template: '' }), c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), c.prototype.constructor = c, c .prototype .getDefaults = function () { return c.DEFAULTS }, c.prototype.setContent = function () { var a = this.tip(), b = this.getTitle(), c = this.getContent(); a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content") .children() .detach().end()[this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c), a .removeClass( "fade top bottom left right in"), a.find(".popover-title").html() || a.find( ".popover-title").hide() }, c.prototype.hasContent = function () { return this.getTitle() || this.getContent() }, c.prototype.getContent = function () { var a = this.$element, b = this.options; return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content) }, c.prototype.arrow = function () { return this.$arrow = this.$arrow || this.tip().find(".arrow") }; var d = a.fn.popover; a.fn.popover = b, a.fn.popover.Constructor = c, a.fn.popover.noConflict = function () { return a.fn.popover = d, this } }(jQuery), + function (a) { "use strict"; function b(c, d) { this.$body = a(document.body), this.$scrollElement = a(a(c).is(document.body) ? window : c), this .options = a .extend({}, b.DEFAULTS, d), this.selector = (this.options.target || "") + " .nav li > a", this .offsets = [], this.targets = [], this.activeTarget = null, this.scrollHeight = 0, this.$scrollElement.on( "scroll.bs.scrollspy", a.proxy(this.process, this)), this.refresh(), this.process() } function c(c) { return this.each(function () { var d = a(this), e = d.data("bs.scrollspy"), f = "object" == typeof c && c; e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]() }) } b.VERSION = "3.3.7", b.DEFAULTS = { offset: 10 }, b.prototype.getScrollHeight = function () { return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document .documentElement .scrollHeight) }, b.prototype.refresh = function () { var b = this, c = "offset", d = 0; this.offsets = [], this.targets = [], this.scrollHeight = this.getScrollHeight(), a.isWindow(this .$scrollElement[0]) || (c = "position", d = this.$scrollElement.scrollTop()), this.$body .find(this .selector).map(function () { var b = a(this), e = b.data("target") || b.attr("href"), f = /^#./.test(e) && a(e); return f && f.length && f.is(":visible") && [ [f[c]().top + d, e] ] || null }).sort(function (a, b) { return a[0] - b[0] }).each(function () { b.offsets.push(this[0]), b.targets.push(this[1]) }) }, b.prototype.process = function () { var a, b = this.$scrollElement.scrollTop() + this.options.offset, c = this.getScrollHeight(), d = this.options.offset + c - this.$scrollElement.height(), e = this.offsets, f = this.targets, g = this.activeTarget; if (this.scrollHeight != c && this.refresh(), b >= d) return g != (a = f[f.length - 1]) && this .activate(a); if (g && b < e[0]) return this.activeTarget = null, this.clear(); for (a = e.length; a--;) g != f[a] && b >= e[a] && (void 0 === e[a + 1] || b < e[a + 1]) && this .activate(f[ a]) }, b.prototype.activate = function (b) { this.activeTarget = b, this.clear(); var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]', d = a(c).parents("li").addClass("active"); d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger( "activate.bs.scrollspy") }, b.prototype.clear = function () { a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active") }; var d = a.fn.scrollspy; a.fn.scrollspy = c, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function () { return a.fn.scrollspy = d, this }, a(window).on("load.bs.scrollspy.data-api", function () { a('[data-spy="scroll"]').each(function () { var b = a(this); c.call(b, b.data()) }) }) }(jQuery), + function (a) { "use strict"; function b(b) { return this.each(function () { var d = a(this), e = d.data("bs.tab"); e || d.data("bs.tab", e = new c(this)), "string" == typeof b && e[b]() }) } var c = function (b) { this.element = a(b) }; c.VERSION = "3.3.7", c.TRANSITION_DURATION = 150, c.prototype.show = function () { var b = this.element, c = b.closest("ul:not(.dropdown-menu)"), d = b.data("target"); if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass( "active")) { var e = c.find(".active:last a"), f = a.Event("hide.bs.tab", { relatedTarget: b[0] }), g = a.Event("show.bs.tab", { relatedTarget: e[0] }); if (e.trigger(f), b.trigger(g), !g.isDefaultPrevented() && !f.isDefaultPrevented()) { var h = a(d); this.activate(b.closest("li"), c), this.activate(h, h.parent(), function () { e.trigger({ type: "hidden.bs.tab", relatedTarget: b[0] }), b.trigger({ type: "shown.bs.tab", relatedTarget: e[0] }) }) } } }, c.prototype.activate = function (b, d, e) { function f() { g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find( '[data-toggle="tab"]').attr("aria-expanded", !1), b.addClass("active").find( '[data-toggle="tab"]').attr( "aria-expanded", !0), h ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent( ".dropdown-menu").length && b.closest("li.dropdown").addClass("active").end().find( '[data-toggle="tab"]').attr("aria-expanded", !0), e && e() } var g = d.find("> .active"), h = e && a.support.transition && (g.length && g.hasClass("fade") || !!d.find("> .fade").length); g.length && h ? g.one("bsTransitionEnd", f).emulateTransitionEnd(c.TRANSITION_DURATION) : f(), g .removeClass( "in") }; var d = a.fn.tab; a.fn.tab = b, a.fn.tab.Constructor = c, a.fn.tab.noConflict = function () { return a.fn.tab = d, this }; var e = function (c) { c.preventDefault(), b.call(a(this), "show") }; a(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', e).on("click.bs.tab.data-api", '[data-toggle="pill"]', e) }(jQuery), + function (a) { "use strict"; function b(b) { return this.each(function () { var d = a(this), e = d.data("bs.affix"), f = "object" == typeof b && b; e || d.data("bs.affix", e = new c(this, f)), "string" == typeof b && e[b]() }) } var c = function (b, d) { this.options = a.extend({}, c.DEFAULTS, d), this.$target = a(this.options.target).on( "scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this .checkPositionWithEventLoop, this)), this.$element = a(b), this.affixed = null, this .unpin = null, this .pinnedOffset = null, this.checkPosition() }; c.VERSION = "3.3.7", c.RESET = "affix affix-top affix-bottom", c.DEFAULTS = { offset: 0, target: window }, c.prototype.getState = function (a, b, c, d) { var e = this.$target.scrollTop(), f = this.$element.offset(), g = this.$target.height(); if (null != c && "top" == this.affixed) return e < c && "top"; if ("bottom" == this.affixed) return null != c ? !(e + this.unpin <= f.top) && "bottom" : !(e + g <= a - d) && "bottom"; var h = null == this.affixed, i = h ? e : f.top, j = h ? g : b; return null != c && e <= c ? "top" : null != d && i + j >= a - d && "bottom" }, c.prototype.getPinnedOffset = function () { if (this.pinnedOffset) return this.pinnedOffset; this.$element.removeClass(c.RESET).addClass("affix"); var a = this.$target.scrollTop(), b = this.$element.offset(); return this.pinnedOffset = b.top - a }, c.prototype.checkPositionWithEventLoop = function () { setTimeout(a.proxy(this.checkPosition, this), 1) }, c.prototype.checkPosition = function () { if (this.$element.is(":visible")) { var b = this.$element.height(), d = this.options.offset, e = d.top, f = d.bottom, g = Math.max(a(document).height(), a(document.body).height()); "object" != typeof d && (f = e = d), "function" == typeof e && (e = d.top(this.$element)), "function" == typeof f && (f = d.bottom(this.$element)); var h = this.getState(g, b, e, f); if (this.affixed != h) { null != this.unpin && this.$element.css("top", ""); var i = "affix" + (h ? "-" + h : ""), j = a.Event(i + ".bs.affix"); if (this.$element.trigger(j), j.isDefaultPrevented()) return; this.affixed = h, this.unpin = "bottom" == h ? this.getPinnedOffset() : null, this.$element .removeClass(c .RESET).addClass(i).trigger(i.replace("affix", "affixed") + ".bs.affix") } "bottom" == h && this.$element.offset({ top: g - b - f }) } }; var d = a.fn.affix; a.fn.affix = b, a.fn.affix.Constructor = c, a.fn.affix.noConflict = function () { return a.fn.affix = d, this }, a(window).on("load", function () { a('[data-spy="affix"]').each(function () { var c = a(this), d = c.data(); d.offset = d.offset || {}, null != d.offsetBottom && (d.offset.bottom = d .offsetBottom), null != d .offsetTop && (d.offset.top = d.offsetTop), b.call(c, d) }) }) }(jQuery); (function (e) { "use strict"; var t = "ScrollIt", n = "1.0.3"; var r = { upKey: 38, downKey: 40, easing: "linear", scrollTime: 600, activeClass: "active", onPageChange: null, topOffset: 0 }; e.scrollIt = function (t) { var n = e.extend(r, t), i = 0, s = e("[data-scroll-index]:last").attr("data-scroll-index"); var o = function (t) { if (t < 0 || t > s) return; var r = e("[data-scroll-index=" + t + "]").offset().top + n.topOffset + 1; e("html,body").animate({ scrollTop: r, easing: n.easing }, n.scrollTime) }; var u = function (t) { var n = e(t.target).closest("[data-scroll-nav]").attr("data-scroll-nav") || e(t.target) .closest( "[data-scroll-goto]").attr("data-scroll-goto"); o(parseInt(n)) }; var a = function (t) { var r = t.which; if (e("html,body").is(":animated") && (r == n.upKey || r == n.downKey)) { return false } if (r == n.upKey && i > 0) { o(parseInt(i) - 1); return false } else if (r == n.downKey && i < s) { o(parseInt(i) + 1); return false } return true }; var f = function (t) { if (n.onPageChange && t && i != t) n.onPageChange(t); i = t; e("[data-scroll-nav]").removeClass(n.activeClass); e("[data-scroll-nav=" + t + "]").addClass(n.activeClass) }; var l = function () { var t = e(window).scrollTop(); var r = e("[data-scroll-index]").filter(function (r, i) { return t >= e(i).offset().top + n.topOffset && t < e(i).offset().top + n .topOffset + e(i) .outerHeight() }); var i = r.first().attr("data-scroll-index"); f(i) }; e(window).on("scroll", l).scroll(); e(window).on("keydown", a); e("body").on("click", "[data-scroll-nav], [data-scroll-goto]", function (e) { e.preventDefault(); u(e) }) } })(jQuery) /** * Owl Carousel v2.2.0 */ ! function (a, b, c, d) { function e(b, c) { this.settings = null, this.options = a.extend({}, e.Defaults, c), this.$element = a(b), this ._handlers = {}, this._plugins = {}, this._supress = {}, this._current = null, this._speed = null, this ._coordinates = [], this ._breakpoint = null, this._width = null, this._items = [], this._clones = [], this._mergers = [], this ._widths = [], this._invalidated = {}, this._pipe = [], this._drag = { time: null, target: null, pointer: null, stage: { start: null, current: null }, direction: null }, this._states = { current: {}, tags: { initializing: ["busy"], animating: ["busy"], dragging: ["interacting"] } }, a.each(["onResize", "onThrottledResize"], a.proxy(function (b, c) { this._handlers[c] = a.proxy(this[c], this) }, this)), a.each(e.Plugins, a.proxy(function (a, b) { this._plugins[a.charAt(0).toLowerCase() + a.slice(1)] = new b(this) }, this)), a.each(e.Workers, a.proxy(function (b, c) { this._pipe.push({ filter: c.filter, run: a.proxy(c.run, this) }) }, this)), this.setup(), this.initialize() } e.Defaults = { items: 3, loop: !1, center: !1, rewind: !1, mouseDrag: !0, touchDrag: !0, pullDrag: !0, freeDrag: !1, margin: 0, stagePadding: 0, merge: !1, mergeFit: !0, autoWidth: !1, startPosition: 0, rtl: !1, smartSpeed: 250, fluidSpeed: !1, dragEndSpeed: !1, responsive: {}, responsiveRefreshRate: 200, responsiveBaseElement: b, fallbackEasing: "swing", info: !1, nestedItemSelector: !1, itemElement: "div", stageElement: "div", refreshClass: "owl-refresh", loadedClass: "owl-loaded", loadingClass: "owl-loading", rtlClass: "owl-rtl", responsiveClass: "owl-responsive", dragClass: "owl-drag", itemClass: "owl-item", stageClass: "owl-stage", stageOuterClass: "owl-stage-outer", grabClass: "owl-grab" }, e.Width = { Default: "default", Inner: "inner", Outer: "outer" }, e.Type = { Event: "event", State: "state" }, e.Plugins = {}, e.Workers = [{ filter: ["width", "settings"], run: function () { this._width = this.$element.width() } }, { filter: ["width", "items", "settings"], run: function (a) { a.current = this._items && this._items[this.relative(this._current)] } }, { filter: ["items", "settings"], run: function () { this.$stage.children(".cloned").remove() } }, { filter: ["width", "items", "settings"], run: function (a) { var b = this.settings.margin || "", c = !this.settings.autoWidth, d = this.settings.rtl, e = { width: "auto", "margin-left": d ? b : "", "margin-right": d ? "" : b }; !c && this.$stage.children().css(e), a.css = e } }, { filter: ["width", "items", "settings"], run: function (a) { var b = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, c = null, d = this._items.length, e = !this.settings.autoWidth, f = []; for (a.items = { merge: !1, width: b }; d--;) c = this._mergers[d], c = this.settings.mergeFit && Math.min(c, this .settings.items) || c, a .items.merge = c > 1 || a.items.merge, f[d] = e ? b * c : this._items[d].width(); this._widths = f } }, { filter: ["items", "settings"], run: function () { var b = [], c = this._items, d = this.settings, e = Math.max(2 * d.items, 4), f = 2 * Math.ceil(c.length / 2), g = d.loop && c.length ? d.rewind ? e : Math.max(e, f) : 0, h = "", i = ""; for (g /= 2; g--;) b.push(this.normalize(b.length / 2, !0)), h += c[b[b.length - 1]][0] .outerHTML, b .push(this.normalize(c.length - 1 - (b.length - 1) / 2, !0)), i = c[b[b.length - 1]] [0].outerHTML + i; this._clones = b, a(h).addClass("cloned").appendTo(this.$stage), a(i).addClass("cloned") .prependTo(this .$stage) } }, { filter: ["width", "items", "settings"], run: function () { for (var a = this.settings.rtl ? 1 : -1, b = this._clones.length + this._items.length, c = -1, d = 0, e = 0, f = []; ++c < b;) d = f[c - 1] || 0, e = this._widths[this.relative(c)] + this.settings .margin, f.push(d + e * a); this._coordinates = f } }, { filter: ["width", "items", "settings"], run: function () { var a = this.settings.stagePadding, b = this._coordinates, c = { width: Math.ceil(Math.abs(b[b.length - 1])) + 2 * a, "padding-left": a || "", "padding-right": a || "" }; this.$stage.css(c) } }, { filter: ["width", "items", "settings"], run: function (a) { var b = this._coordinates.length, c = !this.settings.autoWidth, d = this.$stage.children(); if (c && a.items.merge) for (; b--;) a.css.width = this._widths[this.relative(b)], d.eq(b).css(a.css); else c && (a.css.width = a.items.width, d.css(a.css)) } }, { filter: ["items"], run: function () { this._coordinates.length < 1 && this.$stage.removeAttr("style") } }, { filter: ["width", "items", "settings"], run: function (a) { a.current = a.current ? this.$stage.children().index(a.current) : 0, a.current = Math .max(this .minimum(), Math.min(this.maximum(), a.current)), this.reset(a.current) } }, { filter: ["position"], run: function () { this.animate(this.coordinates(this._current)) } }, { filter: ["width", "position", "items", "settings"], run: function () { var a, b, c, d, e = this.settings.rtl ? 1 : -1, f = 2 * this.settings.stagePadding, g = this.coordinates(this.current()) + f, h = g + this.width() * e, i = []; for (c = 0, d = this._coordinates.length; d > c; c++) a = this._coordinates[c - 1] || 0, b = Math.abs( this._coordinates[c]) + f * e, (this.op(a, "<=", g) && this.op(a, ">", h) || this.op(b, "<", g) && this.op(b, ">", h)) && i.push(c); this.$stage.children(".active").removeClass("active"), this.$stage.children(":eq(" + i .join("), :eq(") + ")").addClass("active"), this.settings.center && (this.$stage.children( ".center").removeClass( "center"), this.$stage.children().eq(this.current()).addClass("center")) } }], e.prototype.initialize = function () { if (this.enter("initializing"), this.trigger("initialize"), this.$element.toggleClass(this.settings .rtlClass, this.settings.rtl), this.settings.autoWidth && !this.is("pre-loading")) { var b, c, e; b = this.$element.find("img"), c = this.settings.nestedItemSelector ? "." + this.settings .nestedItemSelector : d, e = this.$element.children(c).width(), b.length && 0 >= e && this .preloadAutoWidthImages(b) } this.$element.addClass(this.options.loadingClass), this.$stage = a("<" + this.settings .stageElement + ' class="' + this.settings.stageClass + '"/>').wrap(''), this.$element.append(this.$stage.parent()), this.replace(this.$element.children() .not(this.$stage .parent())), this.$element.is(":visible") ? this.refresh() : this.invalidate("width"), this.$element .removeClass(this.options.loadingClass).addClass(this.options.loadedClass), this .registerEventHandlers(), this.leave("initializing"), this.trigger("initialized") }, e.prototype.setup = function () { var b = this.viewport(), c = this.options.responsive, d = -1, e = null; c ? (a.each(c, function (a) { b >= a && a > d && (d = Number(a)) }), e = a.extend({}, this.options, c[d]), "function" == typeof e.stagePadding && (e .stagePadding = e .stagePadding()), delete e.responsive, e.responsiveClass && this.$element.attr("class", this.$element .attr("class").replace(new RegExp("(" + this.options.responsiveClass + "-)\\S+\\s", "g"), "$1" + d))) : e = a.extend({}, this.options), this.trigger("change", { property: { name: "settings", value: e } }), this._breakpoint = d, this.settings = e, this.invalidate("settings"), this.trigger( "changed", { property: { name: "settings", value: this.settings } }) }, e.prototype.optionsLogic = function () { this.settings.autoWidth && (this.settings.stagePadding = !1, this.settings.merge = !1) }, e.prototype.prepare = function (b) { var c = this.trigger("prepare", { content: b }); return c.data || (c.data = a("<" + this.settings.itemElement + "/>").addClass(this.options .itemClass).append( b)), this.trigger("prepared", { content: c.data }), c.data }, e.prototype.update = function () { for (var b = 0, c = this._pipe.length, d = a.proxy(function (a) { return this[a] }, this._invalidated), e = {}; c > b;)(this._invalidated.all || a.grep(this._pipe[b].filter, d) .length > 0) && this._pipe[b].run(e), b++; this._invalidated = {}, !this.is("valid") && this.enter("valid") }, e.prototype.width = function (a) { switch (a = a || e.Width.Default) { case e.Width.Inner: case e.Width.Outer: return this._width; default: return this._width - 2 * this.settings.stagePadding + this.settings.margin } }, e.prototype.refresh = function () { this.enter("refreshing"), this.trigger("refresh"), this.setup(), this.optionsLogic(), this.$element .addClass( this.options.refreshClass), this.update(), this.$element.removeClass(this.options .refreshClass), this .leave("refreshing"), this.trigger("refreshed") }, e.prototype.onThrottledResize = function () { b.clearTimeout(this.resizeTimer), this.resizeTimer = b.setTimeout(this._handlers.onResize, this .settings .responsiveRefreshRate) }, e.prototype.onResize = function () { return this._items.length ? this._width === this.$element.width() ? !1 : this.$element.is( ":visible") ? (this .enter("resizing"), this.trigger("resize").isDefaultPrevented() ? (this.leave("resizing"), ! 1) : (this .invalidate("width"), this.refresh(), this.leave("resizing"), void this.trigger( "resized"))) : !1 : !1 }, e.prototype.registerEventHandlers = function () { a.support.transition && this.$stage.on(a.support.transition.end + ".owl.core", a.proxy(this .onTransitionEnd, this)), this.settings.responsive !== !1 && this.on(b, "resize", this._handlers .onThrottledResize), this .settings.mouseDrag && (this.$element.addClass(this.options.dragClass), this.$stage.on( "mousedown.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on( "dragstart.owl.core selectstart.owl.core", function () { return !1 })), this.settings.touchDrag && (this.$stage.on("touchstart.owl.core", a.proxy(this .onDragStart, this)), this.$stage.on("touchcancel.owl.core", a.proxy(this.onDragEnd, this))) }, e.prototype.onDragStart = function (b) { var d = null; 3 !== b.which && (a.support.transform ? (d = this.$stage.css("transform").replace(/.*\(|\)| /g, "") .split( ","), d = { x: d[16 === d.length ? 12 : 4], y: d[16 === d.length ? 13 : 5] }) : (d = this.$stage.position(), d = { x: this.settings.rtl ? d.left + this.$stage.width() - this.width() + this.settings .margin : d.left, y: d.top }), this.is("animating") && (a.support.transform ? this.animate(d.x) : this.$stage.stop(), this .invalidate("position")), this.$element.toggleClass(this.options.grabClass, "mousedown" === b.type), this.speed(0), this._drag.time = (new Date).getTime(), this._drag.target = a(b.target), this ._drag.stage .start = d, this._drag.stage.current = d, this._drag.pointer = this.pointer(b), a(c).on( "mouseup.owl.core touchend.owl.core", a.proxy(this.onDragEnd, this)), a(c).one( "mousemove.owl.core touchmove.owl.core", a.proxy(function (b) { var d = this.difference(this._drag.pointer, this.pointer(b)); a(c).on("mousemove.owl.core touchmove.owl.core", a.proxy(this.onDragMove, this)), Math.abs(d.x) < Math.abs(d.y) && this.is("valid") || (b.preventDefault(), this.enter( "dragging"), this.trigger( "drag")) }, this))) }, e.prototype.onDragMove = function (a) { var b = null, c = null, d = null, e = this.difference(this._drag.pointer, this.pointer(a)), f = this.difference(this._drag.stage.start, e); this.is("dragging") && (a.preventDefault(), this.settings.loop ? (b = this.coordinates(this .minimum()), c = this.coordinates(this.maximum() + 1) - b, f.x = ((f.x - b) % c + c) % c + b) : (b = this .settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()), c = this.settings .rtl ? this .coordinates(this.minimum()) : this.coordinates(this.maximum()), d = this.settings .pullDrag ? -1 * e.x / 5 : 0, f.x = Math.max(Math.min(f.x, b + d), c + d)), this._drag.stage.current = f, this .animate(f.x)) }, e.prototype.onDragEnd = function (b) { var d = this.difference(this._drag.pointer, this.pointer(b)), e = this._drag.stage.current, f = d.x > 0 ^ this.settings.rtl ? "left" : "right"; a(c).off(".owl.core"), this.$element.removeClass(this.options.grabClass), (0 !== d.x && this.is( "dragging") || !this.is("valid")) && (this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed), this.current( this.closest(e.x, 0 !== d.x ? f : this._drag.direction)), this.invalidate("position"), this.update(), this._drag.direction = f, (Math.abs(d.x) > 3 || (new Date).getTime() - this._drag.time > 300) && this ._drag.target.one("click.owl.core", function () { return !1 })), this.is("dragging") && (this.leave("dragging"), this.trigger("dragged")) }, e.prototype.closest = function (b, c) { var d = -1, e = 30, f = this.width(), g = this.coordinates(); return this.settings.freeDrag || a.each(g, a.proxy(function (a, h) { return "left" === c && b > h - e && h + e > b ? d = a : "right" === c && b > h - f - e && h - f + e > b ? d = a + 1 : this.op(b, "<", h) && this.op(b, ">", g[a + 1] || h - f) && (d = "left" === c ? a + 1 : a), -1 === d }, this)), this.settings.loop || (this.op(b, ">", g[this.minimum()]) ? d = b = this.minimum() : this.op(b, "<", g[this.maximum()]) && (d = b = this.maximum())), d }, e.prototype.animate = function (b) { var c = this.speed() > 0; this.is("animating") && this.onTransitionEnd(), c && (this.enter("animating"), this.trigger( "translate")), a .support.transform3d && a.support.transition ? this.$stage.css({ transform: "translate3d(" + b + "px,0px,0px)", transition: this.speed() / 1e3 + "s" }) : c ? this.$stage.animate({ left: b + "px" }, this.speed(), this.settings.fallbackEasing, a.proxy(this.onTransitionEnd, this)) : this .$stage.css({ left: b + "px" }) }, e.prototype.is = function (a) { return this._states.current[a] && this._states.current[a] > 0 }, e.prototype.current = function (a) { if (a === d) return this._current; if (0 === this._items.length) return d; if (a = this.normalize(a), this._current !== a) { var b = this.trigger("change", { property: { name: "position", value: a } }); b.data !== d && (a = this.normalize(b.data)), this._current = a, this.invalidate("position"), this.trigger( "changed", { property: { name: "position", value: this._current } }) } return this._current }, e.prototype.invalidate = function (b) { return "string" === a.type(b) && (this._invalidated[b] = !0, this.is("valid") && this.leave( "valid")), a.map( this._invalidated, function (a, b) { return b }) }, e.prototype.reset = function (a) { a = this.normalize(a), a !== d && (this._speed = 0, this._current = a, this.suppress(["translate", "translated" ]), this.animate(this.coordinates(a)), this.release(["translate", "translated"])) }, e.prototype.normalize = function (a, b) { var c = this._items.length, e = b ? 0 : this._clones.length; return !this.isNumeric(a) || 1 > c ? a = d : (0 > a || a >= c + e) && (a = ((a - e / 2) % c + c) % c + e / 2), a }, e.prototype.relative = function (a) { return a -= this._clones.length / 2, this.normalize(a, !0) }, e.prototype.maximum = function (a) { var b, c, d, e = this.settings, f = this._coordinates.length; if (e.loop) f = this._clones.length / 2 + this._items.length - 1; else if (e.autoWidth || e.merge) { for (b = this._items.length, c = this._items[--b].width(), d = this.$element.width(); b-- && ( c += this ._items[b].width() + this.settings.margin, !(c > d));); f = b + 1 } else f = e.center ? this._items.length - 1 : this._items.length - e.items; return a && (f -= this._clones.length / 2), Math.max(f, 0) }, e.prototype.minimum = function (a) { return a ? 0 : this._clones.length / 2 }, e.prototype.items = function (a) { return a === d ? this._items.slice() : (a = this.normalize(a, !0), this._items[a]) }, e.prototype.mergers = function (a) { return a === d ? this._mergers.slice() : (a = this.normalize(a, !0), this._mergers[a]) }, e.prototype.clones = function (b) { var c = this._clones.length / 2, e = c + this._items.length, f = function (a) { return a % 2 === 0 ? e + a / 2 : c - (a + 1) / 2 }; return b === d ? a.map(this._clones, function (a, b) { return f(b) }) : a.map(this._clones, function (a, c) { return a === b ? f(c) : null }) }, e.prototype.speed = function (a) { return a !== d && (this._speed = a), this._speed }, e.prototype.coordinates = function (b) { var c, e = 1, f = b - 1; return b === d ? a.map(this._coordinates, a.proxy(function (a, b) { return this.coordinates(b) }, this)) : (this.settings.center ? (this.settings.rtl && (e = -1, f = b + 1), c = this ._coordinates[b], c += (this.width() - c + (this._coordinates[f] || 0)) / 2 * e) : c = this._coordinates[ f] || 0, c = Math .ceil(c)) }, e.prototype.duration = function (a, b, c) { return 0 === c ? 0 : Math.min(Math.max(Math.abs(b - a), 1), 6) * Math.abs(c || this.settings .smartSpeed) }, e.prototype.to = function (a, b) { var c = this.current(), d = null, e = a - this.relative(c), f = (e > 0) - (0 > e), g = this._items.length, h = this.minimum(), i = this.maximum(); this.settings.loop ? (!this.settings.rewind && Math.abs(e) > g / 2 && (e += -1 * f * g), a = c + e, d = ((a - h) % g + g) % g + h, d !== a && i >= d - e && d - e > 0 && (c = d - e, a = d, this .reset(c))) : this .settings.rewind ? (i += 1, a = (a % i + i) % i) : a = Math.max(h, Math.min(i, a)), this.speed( this .duration(c, a, b)), this.current(a), this.$element.is(":visible") && this.update() }, e.prototype.next = function (a) { a = a || !1, this.to(this.relative(this.current()) + 1, a) }, e.prototype.prev = function (a) { a = a || !1, this.to(this.relative(this.current()) - 1, a) }, e.prototype.onTransitionEnd = function (a) { return a !== d && (a.stopPropagation(), (a.target || a.srcElement || a.originalTarget) !== this .$stage.get( 0)) ? !1 : (this.leave("animating"), void this.trigger("translated")) }, e.prototype.viewport = function () { var d; if (this.options.responsiveBaseElement !== b) d = a(this.options.responsiveBaseElement).width(); else if (b.innerWidth) d = b.innerWidth; else { if (!c.documentElement || !c.documentElement.clientWidth) throw "Can not detect viewport width."; d = c.documentElement.clientWidth } return d }, e.prototype.replace = function (b) { this.$stage.empty(), this._items = [], b && (b = b instanceof jQuery ? b : a(b)), this.settings .nestedItemSelector && (b = b.find("." + this.settings.nestedItemSelector)), b.filter( function () { return 1 === this.nodeType }).each(a.proxy(function (a, b) { b = this.prepare(b), this.$stage.append(b), this._items.push(b), this._mergers.push( 1 * b.find( "[data-merge]").addBack("[data-merge]").attr("data-merge") || 1) }, this)), this.reset(this.isNumeric(this.settings.startPosition) ? this.settings .startPosition : 0), this .invalidate("items") }, e.prototype.add = function (b, c) { var e = this.relative(this._current); c = c === d ? this._items.length : this.normalize(c, !0), b = b instanceof jQuery ? b : a(b), this .trigger( "add", { content: b, position: c }), b = this.prepare(b), 0 === this._items.length || c === this._items.length ? (0 === this ._items .length && this.$stage.append(b), 0 !== this._items.length && this._items[c - 1].after(b), this._items .push(b), this._mergers.push(1 * b.find("[data-merge]").addBack("[data-merge]").attr( "data-merge") || 1) ) : (this._items[c].before(b), this._items.splice(c, 0, b), this._mergers.splice(c, 0, 1 * b .find( "[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)), this._items[e] && this.reset(this ._items[e].index()), this.invalidate("items"), this.trigger("added", { content: b, position: c }) }, e.prototype.remove = function (a) { a = this.normalize(a, !0), a !== d && (this.trigger("remove", { content: this._items[a], position: a }), this._items[a].remove(), this._items.splice(a, 1), this._mergers.splice(a, 1), this .invalidate( "items"), this.trigger("removed", { content: null, position: a })) }, e.prototype.preloadAutoWidthImages = function (b) { b.each(a.proxy(function (b, c) { this.enter("pre-loading"), c = a(c), a(new Image).one("load", a.proxy(function (a) { c.attr("src", a.target.src), c.css("opacity", 1), this.leave( "pre-loading"), !this.is( "pre-loading") && !this.is("initializing") && this.refresh() }, this)).attr("src", c.attr("src") || c.attr("data-src") || c.attr( "data-src-retina")) }, this)) }, e.prototype.destroy = function () { this.$element.off(".owl.core"), this.$stage.off(".owl.core"), a(c).off(".owl.core"), this.settings .responsive !== !1 && (b.clearTimeout(this.resizeTimer), this.off(b, "resize", this._handlers .onThrottledResize)); for (var d in this._plugins) this._plugins[d].destroy(); this.$stage.children(".cloned").remove(), this.$stage.unwrap(), this.$stage.children().contents() .unwrap(), this.$stage.children().unwrap(), this.$element.removeClass(this.options.refreshClass) .removeClass(this .options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options .rtlClass) .removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class", this .$element.attr( "class").replace(new RegExp(this.options.responsiveClass + "-\\S+\\s", "g"), "")) .removeData( "owl.carousel") }, e.prototype.op = function (a, b, c) { var d = this.settings.rtl; switch (b) { case "<": return d ? a > c : c > a; case ">": return d ? c > a : a > c; case ">=": return d ? c >= a : a >= c; case "<=": return d ? a >= c : c >= a } }, e.prototype.on = function (a, b, c, d) { a.addEventListener ? a.addEventListener(b, c, d) : a.attachEvent && a.attachEvent("on" + b, c) }, e.prototype.off = function (a, b, c, d) { a.removeEventListener ? a.removeEventListener(b, c, d) : a.detachEvent && a.detachEvent("on" + b, c) }, e.prototype.trigger = function (b, c, d, f, g) { var h = { item: { count: this._items.length, index: this.current() } }, i = a.camelCase(a.grep(["on", b, d], function (a) { return a }).join("-").toLowerCase()), j = a.Event([b, "owl", d || "carousel"].join(".").toLowerCase(), a.extend({ relatedTarget: this }, h, c)); return this._supress[b] || (a.each(this._plugins, function (a, b) { b.onTrigger && b.onTrigger(j) }), this.register({ type: e.Type.Event, name: b }), this.$element.trigger(j), this.settings && "function" == typeof this.settings[i] && this .settings[i] .call(this, j)), j }, e.prototype.enter = function (b) { a.each([b].concat(this._states.tags[b] || []), a.proxy(function (a, b) { this._states.current[b] === d && (this._states.current[b] = 0), this._states .current[b]++ }, this)) }, e.prototype.leave = function (b) { a.each([b].concat(this._states.tags[b] || []), a.proxy(function (a, b) { this._states.current[b]-- }, this)) }, e.prototype.register = function (b) { if (b.type === e.Type.Event) { if (a.event.special[b.name] || (a.event.special[b.name] = {}), !a.event.special[b.name].owl) { var c = a.event.special[b.name]._default; a.event.special[b.name]._default = function (a) { return !c || !c.apply || a.namespace && -1 !== a.namespace.indexOf("owl") ? a .namespace && a.namespace .indexOf("owl") > -1 : c.apply(this, arguments) }, a.event.special[b.name].owl = !0 } } else b.type === e.Type.State && (this._states.tags[b.name] ? this._states.tags[b.name] = this ._states.tags[b .name].concat(b.tags) : this._states.tags[b.name] = b.tags, this._states.tags[b.name] = a.grep(this ._states.tags[b.name], a.proxy(function (c, d) { return a.inArray(c, this._states.tags[b.name]) === d }, this))) }, e.prototype.suppress = function (b) { a.each(b, a.proxy(function (a, b) { this._supress[b] = !0 }, this)) }, e.prototype.release = function (b) { a.each(b, a.proxy(function (a, b) { delete this._supress[b] }, this)) }, e.prototype.pointer = function (a) { var c = { x: null, y: null }; return a = a.originalEvent || a || b.event, a = a.touches && a.touches.length ? a.touches[0] : a .changedTouches && a.changedTouches.length ? a.changedTouches[0] : a, a.pageX ? (c.x = a.pageX, c.y = a .pageY) : (c.x = a.clientX, c.y = a.clientY), c }, e.prototype.isNumeric = function (a) { return !isNaN(parseFloat(a)) }, e.prototype.difference = function (a, b) { return { x: a.x - b.x, y: a.y - b.y } }, a.fn.owlCarousel = function (b) { var c = Array.prototype.slice.call(arguments, 1); return this.each(function () { var d = a(this), f = d.data("owl.carousel"); f || (f = new e(this, "object" == typeof b && b), d.data("owl.carousel", f), a.each([ "next", "prev", "to", "destroy", "refresh", "replace", "add", "remove" ], function (b, c) { f.register({ type: e.Type.Event, name: c }), f.$element.on(c + ".owl.carousel.core", a.proxy(function (a) { a.namespace && a.relatedTarget !== this && (this .suppress([c]), f[c].apply(this, [] .slice.call(arguments, 1)), this.release([ c ])) }, f)) })), "string" == typeof b && "_" !== b.charAt(0) && f[b].apply(f, c) }) }, a.fn.owlCarousel.Constructor = e }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { var e = function (b) { this._core = b, this._interval = null, this._visible = null, this._handlers = { "initialized.owl.carousel": a.proxy(function (a) { a.namespace && this._core.settings.autoRefresh && this.watch() }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on( this._handlers) }; e.Defaults = { autoRefresh: !0, autoRefreshInterval: 500 }, e.prototype.watch = function () { this._interval || (this._visible = this._core.$element.is(":visible"), this._interval = b .setInterval(a.proxy( this.refresh, this), this._core.settings.autoRefreshInterval)) }, e.prototype.refresh = function () { this._core.$element.is(":visible") !== this._visible && (this._visible = !this._visible, this._core .$element .toggleClass("owl-hidden", !this._visible), this._visible && this._core.invalidate( "width") && this._core .refresh()) }, e.prototype.destroy = function () { var a, c; b.clearInterval(this._interval); for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null) }, a.fn.owlCarousel.Constructor.Plugins.AutoRefresh = e }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { var e = function (b) { this._core = b, this._loaded = [], this._handlers = { "initialized.owl.carousel change.owl.carousel resized.owl.carousel": a.proxy(function (b) { if (b.namespace && this._core.settings && this._core.settings.lazyLoad && (b .property && "position" == b.property.name || "initialized" == b.type)) for (var c = this._core.settings, e = c.center && Math.ceil(c.items / 2) || c.items, f = c .center && -1 * e || 0, g = (b.property && b.property.value !== d ? b.property.value : this ._core.current()) + f, h = this._core.clones().length, i = a .proxy(function (a, b) { this.load(b) }, this); f++ < e;) this.load(h / 2 + this._core.relative(g)), h && a.each(this._core.clones( this._core.relative(g)), i), g++ }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on( this._handlers) }; e.Defaults = { lazyLoad: !1 }, e.prototype.load = function (c) { var d = this._core.$stage.children().eq(c), e = d && d.find(".owl-lazy"); !e || a.inArray(d.get(0), this._loaded) > -1 || (e.each(a.proxy(function (c, d) { var e, f = a(d), g = b.devicePixelRatio > 1 && f.attr("data-src-retina") || f.attr( "data-src"); this._core.trigger("load", { element: f, url: g }, "lazy"), f.is("img") ? f.one("load.owl.lazy", a.proxy(function () { f.css("opacity", 1), this._core.trigger("loaded", { element: f, url: g }, "lazy") }, this)).attr("src", g) : (e = new Image, e.onload = a.proxy(function () { f.css({ "background-image": "url(" + g + ")", opacity: "1" }), this._core.trigger("loaded", { element: f, url: g }, "lazy") }, this), e.src = g) }, this)), this._loaded.push(d.get(0))) }, e.prototype.destroy = function () { var a, b; for (a in this.handlers) this._core.$element.off(a, this.handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.Lazy = e }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { var e = function (b) { this._core = b, this._handlers = { "initialized.owl.carousel refreshed.owl.carousel": a.proxy(function (a) { a.namespace && this._core.settings.autoHeight && this.update() }, this), "changed.owl.carousel": a.proxy(function (a) { a.namespace && this._core.settings.autoHeight && "position" == a.property .name && this.update() }, this), "loaded.owl.lazy": a.proxy(function (a) { a.namespace && this._core.settings.autoHeight && a.element.closest("." + this ._core.settings .itemClass).index() === this._core.current() && this.update() }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on( this._handlers) }; e.Defaults = { autoHeight: !1, autoHeightClass: "owl-height" }, e.prototype.update = function () { var b = this._core._current, c = b + this._core.settings.items, d = this._core.$stage.children().toArray().slice(b, c), e = [], f = 0; a.each(d, function (b, c) { e.push(a(c).height()) }), f = Math.max.apply(null, e), this._core.$stage.parent().height(f).addClass(this._core .settings .autoHeightClass) }, e.prototype.destroy = function () { var a, b; for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.AutoHeight = e }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { var e = function (b) { this._core = b, this._videos = {}, this._playing = null, this._handlers = { "initialized.owl.carousel": a.proxy(function (a) { a.namespace && this._core.register({ type: "state", name: "playing", tags: ["interacting"] }) }, this), "resize.owl.carousel": a.proxy(function (a) { a.namespace && this._core.settings.video && this.isInFullScreen() && a .preventDefault() }, this), "refreshed.owl.carousel": a.proxy(function (a) { a.namespace && this._core.is("resizing") && this._core.$stage.find( ".cloned .owl-video-frame") .remove() }, this), "changed.owl.carousel": a.proxy(function (a) { a.namespace && "position" === a.property.name && this._playing && this.stop() }, this), "prepared.owl.carousel": a.proxy(function (b) { if (b.namespace) { var c = a(b.content).find(".owl-video"); c.length && (c.css("display", "none"), this.fetch(c, a(b.content))) } }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on( this ._handlers), this._core.$element.on("click.owl.video", ".owl-video-play-icon", a.proxy( function (a) { this.play(a) }, this)) }; e.Defaults = { video: !1, videoHeight: !1, videoWidth: !1 }, e.prototype.fetch = function (a, b) { var c = function () { return a.attr("data-vimeo-id") ? "vimeo" : a.attr("data-vzaar-id") ? "vzaar" : "youtube" }(), d = a.attr("data-vimeo-id") || a.attr("data-youtube-id") || a.attr("data-vzaar-id"), e = a.attr("data-width") || this._core.settings.videoWidth, f = a.attr("data-height") || this._core.settings.videoHeight, g = a.attr("href"); if (!g) throw new Error("Missing video URL."); if (d = g.match( /(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/ ), d[3].indexOf("youtu") > -1) c = "youtube"; else if (d[3].indexOf("vimeo") > -1) c = "vimeo"; else { if (!(d[3].indexOf("vzaar") > -1)) throw new Error("Video URL not supported."); c = "vzaar" } d = d[6], this._videos[g] = { type: c, id: d, width: e, height: f }, b.attr("data-video", g), this.thumbnail(a, this._videos[g]) }, e.prototype.thumbnail = function (b, c) { var d, e, f, g = c.width && c.height ? 'style="width:' + c.width + "px;height:" + c.height + 'px;"' : "", h = b.find("img"), i = "src", j = "", k = this._core.settings, l = function (a) { e = '', d = k.lazyLoad ? '' : '', b.after(d), b.after(e) }; return b.wrap('"), this._core.settings.lazyLoad && ( i = "data-src", j = "owl-lazy"), h.length ? (l(h.attr(i)), h.remove(), !1) : void("youtube" === c.type ? (f = "//img.youtube.com/vi/" + c.id + "/hqdefault.jpg", l(f)) : "vimeo" === c.type ? a.ajax({ type: "GET", url: "//vimeo.com/api/v2/video/" + c.id + ".json", jsonp: "callback", dataType: "jsonp", success: function (a) { f = a[0].thumbnail_large, l(f) } }) : "vzaar" === c.type && a.ajax({ type: "GET", url: "//vzaar.com/api/videos/" + c.id + ".json", jsonp: "callback", dataType: "jsonp", success: function (a) { f = a.framegrab_url, l(f) } })) }, e.prototype.stop = function () { this._core.trigger("stop", null, "video"), this._playing.find(".owl-video-frame").remove(), this ._playing .removeClass("owl-video-playing"), this._playing = null, this._core.leave("playing"), this._core .trigger( "stopped", null, "video") }, e.prototype.play = function (b) { var c, d = a(b.target), e = d.closest("." + this._core.settings.itemClass), f = this._videos[e.attr("data-video")], g = f.width || "100%", h = f.height || this._core.$stage.height(); this._playing || (this._core.enter("playing"), this._core.trigger("play", null, "video"), e = this ._core .items(this._core.relative(e.index())), this._core.reset(e.index()), "youtube" === f.type ? c = '' : "vimeo" === f.type ? c = '' : "vzaar" === f .type && (c = ''), a('

' + c + "

") .insertAfter(e .find(".owl-video")), this._playing = e.addClass("owl-video-playing")) }, e.prototype.isInFullScreen = function () { var b = c.fullscreenElement || c.mozFullScreenElement || c.webkitFullscreenElement; return b && a(b).parent().hasClass("owl-video-frame") }, e.prototype.destroy = function () { var a, b; this._core.$element.off("click.owl.video"); for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.Video = e }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { var e = function (b) { this.core = b, this.core.options = a.extend({}, e.Defaults, this.core.options), this.swapping = !0, this .previous = d, this.next = d, this.handlers = { "change.owl.carousel": a.proxy(function (a) { a.namespace && "position" == a.property.name && (this.previous = this.core .current(), this.next = a .property.value) }, this), "drag.owl.carousel dragged.owl.carousel translated.owl.carousel": a.proxy(function (a) { a.namespace && (this.swapping = "translated" == a.type) }, this), "translate.owl.carousel": a.proxy(function (a) { a.namespace && this.swapping && (this.core.options.animateOut || this.core .options.animateIn) && this.swap() }, this) }, this.core.$element.on(this.handlers) }; e.Defaults = { animateOut: !1, animateIn: !1 }, e.prototype.swap = function () { if (1 === this.core.settings.items && a.support.animation && a.support.transition) { this.core.speed(0); var b, c = a.proxy(this.clear, this), d = this.core.$stage.children().eq(this.previous), e = this.core.$stage.children().eq(this.next), f = this.core.settings.animateIn, g = this.core.settings.animateOut; this.core.current() !== this.previous && (g && (b = this.core.coordinates(this.previous) - this .core .coordinates(this.next), d.one(a.support.animation.end, c).css({ left: b + "px" }).addClass("animated owl-animated-out").addClass(g)), f && e.one(a.support .animation.end, c) .addClass("animated owl-animated-in").addClass(f)) } }, e.prototype.clear = function (b) { a(b.target).css({ left: "" }).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings .animateIn) .removeClass(this.core.settings.animateOut), this.core.onTransitionEnd() }, e.prototype.destroy = function () { var a, b; for (a in this.handlers) this.core.$element.off(a, this.handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null); }, a.fn.owlCarousel.Constructor.Plugins.Animate = e }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { var e = function (b) { this._core = b, this._timeout = null, this._paused = !1, this._handlers = { "changed.owl.carousel": a.proxy(function (a) { a.namespace && "settings" === a.property.name ? this._core.settings.autoplay ? this.play() : this .stop() : a.namespace && "position" === a.property.name && this._core .settings.autoplay && this ._setAutoPlayInterval() }, this), "initialized.owl.carousel": a.proxy(function (a) { a.namespace && this._core.settings.autoplay && this.play() }, this), "play.owl.autoplay": a.proxy(function (a, b, c) { a.namespace && this.play(b, c) }, this), "stop.owl.autoplay": a.proxy(function (a) { a.namespace && this.stop() }, this), "mouseover.owl.autoplay": a.proxy(function () { this._core.settings.autoplayHoverPause && this._core.is("rotating") && this .pause() }, this), "mouseleave.owl.autoplay": a.proxy(function () { this._core.settings.autoplayHoverPause && this._core.is("rotating") && this .play() }, this), "touchstart.owl.core": a.proxy(function () { this._core.settings.autoplayHoverPause && this._core.is("rotating") && this .pause() }, this), "touchend.owl.core": a.proxy(function () { this._core.settings.autoplayHoverPause && this.play() }, this) }, this._core.$element.on(this._handlers), this._core.options = a.extend({}, e.Defaults, this ._core.options) }; e.Defaults = { autoplay: !1, autoplayTimeout: 5e3, autoplayHoverPause: !1, autoplaySpeed: !1 }, e.prototype.play = function (a, b) { this._paused = !1, this._core.is("rotating") || (this._core.enter("rotating"), this ._setAutoPlayInterval()) }, e.prototype._getNextTimeout = function (d, e) { return this._timeout && b.clearTimeout(this._timeout), b.setTimeout(a.proxy(function () { this._paused || this._core.is("busy") || this._core.is("interacting") || c.hidden || this._core.next( e || this._core.settings.autoplaySpeed) }, this), d || this._core.settings.autoplayTimeout) }, e.prototype._setAutoPlayInterval = function () { this._timeout = this._getNextTimeout() }, e.prototype.stop = function () { this._core.is("rotating") && (b.clearTimeout(this._timeout), this._core.leave("rotating")) }, e.prototype.pause = function () { this._core.is("rotating") && (this._paused = !0) }, e.prototype.destroy = function () { var a, b; this.stop(); for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.autoplay = e }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { "use strict"; var e = function (b) { this._core = b, this._initialized = !1, this._pages = [], this._controls = {}, this._templates = [], this .$element = this._core.$element, this._overrides = { next: this._core.next, prev: this._core.prev, to: this._core.to }, this._handlers = { "prepared.owl.carousel": a.proxy(function (b) { b.namespace && this._core.settings.dotsData && this._templates.push( '

' + a(b.content).find("[data-dot]").addBack( "[data-dot]").attr( "data-dot") + "

") }, this), "added.owl.carousel": a.proxy(function (a) { a.namespace && this._core.settings.dotsData && this._templates.splice(a .position, 0, this._templates .pop()) }, this), "remove.owl.carousel": a.proxy(function (a) { a.namespace && this._core.settings.dotsData && this._templates.splice(a .position, 1) }, this), "changed.owl.carousel": a.proxy(function (a) { a.namespace && "position" == a.property.name && this.draw() }, this), "initialized.owl.carousel": a.proxy(function (a) { a.namespace && !this._initialized && (this._core.trigger("initialize", null, "navigation"), this .initialize(), this.update(), this.draw(), this._initialized = !0, this ._core.trigger( "initialized", null, "navigation")) }, this), "refreshed.owl.carousel": a.proxy(function (a) { a.namespace && this._initialized && (this._core.trigger("refresh", null, "navigation"), this .update(), this.draw(), this._core.trigger("refreshed", null, "navigation")) }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this ._handlers) }; e.Defaults = { nav: !1, navText: ["prev", "next"], navSpeed: !1, navElement: "div", navContainer: !1, navContainerClass: "owl-nav", navClass: ["owl-prev", "owl-next"], slideBy: 1, dotClass: "owl-dot", dotsClass: "owl-dots", dots: !0, dotsEach: !1, dotsData: !1, dotsSpeed: !1, dotsContainer: !1 }, e.prototype.initialize = function () { var b, c = this._core.settings; this._controls.$relative = (c.navContainer ? a(c.navContainer) : a("

").addClass(c .navContainerClass) .appendTo(this.$element)).addClass("disabled"), this._controls.$previous = a("<" + c .navElement + ">") .addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click", a .proxy( function (a) { this.prev(c.navSpeed) }, this)), this._controls.$next = a("<" + c.navElement + ">").addClass(c.navClass[1]) .html(c.navText[1]) .appendTo(this._controls.$relative).on("click", a.proxy(function (a) { this.next(c.navSpeed) }, this)), c.dotsData || (this._templates = [a("

").addClass(c.dotClass).append(a("")) .prop( "outerHTML") ]), this._controls.$absolute = (c.dotsContainer ? a(c.dotsContainer) : a("

").addClass(c .dotsClass).appendTo(this.$element)).addClass("disabled"), this._controls.$absolute.on( "click", "div", a .proxy(function (b) { var d = a(b.target).parent().is(this._controls.$absolute) ? a(b.target).index() : a( b.target).parent() .index(); b.preventDefault(), this.to(d, c.dotsSpeed) }, this)); for (b in this._overrides) this._core[b] = a.proxy(this[b], this) }, e.prototype.destroy = function () { var a, b, c, d; for (a in this._handlers) this.$element.off(a, this._handlers[a]); for (b in this._controls) this._controls[b].remove(); for (d in this.overides) this._core[d] = this._overrides[d]; for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null) }, e.prototype.update = function () { var a, b, c, d = this._core.clones().length / 2, e = d + this._core.items().length, f = this._core.maximum(!0), g = this._core.settings, h = g.center || g.autoWidth || g.dotsData ? 1 : g.dotsEach || g.items; if ("page" !== g.slideBy && (g.slideBy = Math.min(g.slideBy, g.items)), g.dots || "page" == g .slideBy) for (this._pages = [], a = d, b = 0, c = 0; e > a; a++) { if (b >= h || 0 === b) { if (this._pages.push({ start: Math.min(f, a - d), end: a - d + h - 1 }), Math.min(f, a - d) === f) break; b = 0, ++c } b += this._core.mergers(this._core.relative(a)) } }, e.prototype.draw = function () { var b, c = this._core.settings, d = this._core.items().length <= c.items, e = this._core.relative(this._core.current()), f = c.loop || c.rewind; this._controls.$relative.toggleClass("disabled", !c.nav || d), c.nav && (this._controls.$previous .toggleClass( "disabled", !f && e <= this._core.minimum(!0)), this._controls.$next.toggleClass( "disabled", !f && e >= this._core.maximum(!0))), this._controls.$absolute.toggleClass("disabled", !c.dots || d), c.dots && (b = this._pages.length - this._controls.$absolute.children().length, c.dotsData && 0 !== b ? this._controls .$absolute.html(this._templates.join("")) : b > 0 ? this._controls.$absolute.append( new Array(b + 1).join( this._templates[0])) : 0 > b && this._controls.$absolute.children().slice(b) .remove(), this._controls .$absolute.find(".active").removeClass("active"), this._controls.$absolute.children().eq(a .inArray(this .current(), this._pages)).addClass("active")) }, e.prototype.onTrigger = function (b) { var c = this._core.settings; b.page = { index: a.inArray(this.current(), this._pages), count: this._pages.length, size: c && (c.center || c.autoWidth || c.dotsData ? 1 : c.dotsEach || c.items) } }, e.prototype.current = function () { var b = this._core.relative(this._core.current()); return a.grep(this._pages, a.proxy(function (a, c) { return a.start <= b && a.end >= b }, this)).pop() }, e.prototype.getPosition = function (b) { var c, d, e = this._core.settings; return "page" == e.slideBy ? (c = a.inArray(this.current(), this._pages), d = this._pages.length, b ? ++c : -- c, c = this._pages[(c % d + d) % d].start) : (c = this._core.relative(this._core.current()), d = this ._core.items().length, b ? c += e.slideBy : c -= e.slideBy), c }, e.prototype.next = function (b) { a.proxy(this._overrides.to, this._core)(this.getPosition(!0), b) }, e.prototype.prev = function (b) { a.proxy(this._overrides.to, this._core)(this.getPosition(!1), b) }, e.prototype.to = function (b, c, d) { var e; !d && this._pages.length ? (e = this._pages.length, a.proxy(this._overrides.to, this._core)(this ._pages[(b % e + e) % e].start, c)) : a.proxy(this._overrides.to, this._core)(b, c) }, a.fn.owlCarousel.Constructor.Plugins.Navigation = e }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { "use strict"; var e = function (c) { this._core = c, this._hashes = {}, this.$element = this._core.$element, this._handlers = { "initialized.owl.carousel": a.proxy(function (c) { c.namespace && "URLHash" === this._core.settings.startPosition && a(b).trigger( "hashchange.owl.navigation") }, this), "prepared.owl.carousel": a.proxy(function (b) { if (b.namespace) { var c = a(b.content).find("[data-hash]").addBack("[data-hash]").attr( "data-hash"); if (!c) return; this._hashes[c] = b.content } }, this), "changed.owl.carousel": a.proxy(function (c) { if (c.namespace && "position" === c.property.name) { var d = this._core.items(this._core.relative(this._core.current())), e = a.map(this._hashes, function (a, b) { return a === d ? b : null }).join(); if (!e || b.location.hash.slice(1) === e) return; b.location.hash = e } }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this ._handlers), a(b) .on("hashchange.owl.navigation", a.proxy(function (a) { var c = b.location.hash.substring(1), e = this._core.$stage.children(), f = this._hashes[c] && e.index(this._hashes[c]); f !== d && f !== this._core.current() && this._core.to(this._core.relative(f), !1, ! 0) }, this)) }; e.Defaults = { URLhashListener: !1 }, e.prototype.destroy = function () { var c, d; a(b).off("hashchange.owl.navigation"); for (c in this._handlers) this._core.$element.off(c, this._handlers[c]); for (d in Object.getOwnPropertyNames(this)) "function" != typeof this[d] && (this[d] = null) }, a.fn.owlCarousel.Constructor.Plugins.Hash = e }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { function e(b, c) { var e = !1, f = b.charAt(0).toUpperCase() + b.slice(1); return a.each((b + " " + h.join(f + " ") + f).split(" "), function (a, b) { return g[b] !== d ? (e = c ? b : !0, !1) : void 0 }), e } function f(a) { return e(a, !0) } var g = a("

").get(0).style, h = "Webkit Moz O ms".split(" "), i = { transition: { end: { WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd", transition: "transitionend" } }, animation: { end: { WebkitAnimation: "webkitAnimationEnd", MozAnimation: "animationend", OAnimation: "oAnimationEnd", animation: "animationend" } } }, j = { csstransforms: function () { return !!e("transform") }, csstransforms3d: function () { return !!e("perspective") }, csstransitions: function () { return !!e("transition") }, cssanimations: function () { return !!e("animation") } }; j.csstransitions() && (a.support.transition = new String(f("transition")), a.support.transition.end = i .transition .end[a.support.transition]), j.cssanimations() && (a.support.animation = new String(f("animation")), a.support .animation.end = i.animation.end[a.support.animation]), j.csstransforms() && (a.support.transform = new String(f("transform")), a.support.transform3d = j.csstransforms3d()) }(window.Zepto || window.jQuery, window, document); ! function (a, b, c, d) { function e(b, c) { this.element = b, this.options = a.extend({}, g, c), this._defaults = g, this._name = f, this.init() } var f = "stellar", g = { scrollProperty: "scroll", positionProperty: "position", horizontalScrolling: !0, verticalScrolling: !0, horizontalOffset: 0, verticalOffset: 0, responsive: !1, parallaxBackgrounds: !0, parallaxElements: !0, hideDistantElements: !0, hideElement: function (a) { a.hide() }, showElement: function (a) { a.show() } }, h = { scroll: { getLeft: function (a) { return a.scrollLeft() }, setLeft: function (a, b) { a.scrollLeft(b) }, getTop: function (a) { return a.scrollTop() }, setTop: function (a, b) { a.scrollTop(b) } }, position: { getLeft: function (a) { return -1 * parseInt(a.css("left"), 10) }, getTop: function (a) { return -1 * parseInt(a.css("top"), 10) } }, margin: { getLeft: function (a) { return -1 * parseInt(a.css("margin-left"), 10) }, getTop: function (a) { return -1 * parseInt(a.css("margin-top"), 10) } }, transform: { getLeft: function (a) { var b = getComputedStyle(a[0])[k]; return "none" !== b ? -1 * parseInt(b.match(/(-?[0-9]+)/g)[4], 10) : 0 }, getTop: function (a) { var b = getComputedStyle(a[0])[k]; return "none" !== b ? -1 * parseInt(b.match(/(-?[0-9]+)/g)[5], 10) : 0 } } }, i = { position: { setLeft: function (a, b) { a.css("left", b) }, setTop: function (a, b) { a.css("top", b) } }, transform: { setPosition: function (a, b, c, d, e) { a[0].style[k] = "translate3d(" + (b - c) + "px, " + (d - e) + "px, 0)" } } }, j = function () { var b, c = /^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/, d = a("script")[0].style, e = ""; for (b in d) if (c.test(b)) { e = b.match(c)[0]; break } return "WebkitOpacity" in d && (e = "Webkit"), "KhtmlOpacity" in d && (e = "Khtml"), function (a) { return e + (e.length > 0 ? a.charAt(0).toUpperCase() + a.slice(1) : a) } }(), k = j("transform"), l = a("", { style: "background:#fff" }).css("background-position-x") !== d, m = l ? function (a, b, c) { a.css({ "background-position-x": b, "background-position-y": c }) } : function (a, b, c) { a.css("background-position", b + " " + c) }, n = l ? function (a) { return [a.css("background-position-x"), a.css("background-position-y")] } : function (a) { return a.css("background-position").split(" ") }, o = b.requestAnimationFrame || b.webkitRequestAnimationFrame || b.mozRequestAnimationFrame || b .oRequestAnimationFrame || b.msRequestAnimationFrame || function (a) { setTimeout(a, 1e3 / 60) }; e.prototype = { init: function () { this.options.name = f + "_" + Math.floor(1e9 * Math.random()), this._defineElements(), this ._defineGetters(), this._defineSetters(), this._handleWindowLoadAndResize(), this ._detectViewport(), this.refresh({ firstLoad: !0 }), "scroll" === this.options.scrollProperty ? this._handleScrollEvent() : this ._startAnimationLoop() }, _defineElements: function () { this.element === c.body && (this.element = b), this.$scrollElement = a(this.element), this .$element = this .element === b ? a("body") : this.$scrollElement, this.$viewportElement = this.options .viewportElement !== d ? a(this.options.viewportElement) : this.$scrollElement[0] === b || "scroll" === this.options.scrollProperty ? this.$scrollElement : this.$scrollElement.parent() }, _defineGetters: function () { var a = this, b = h[a.options.scrollProperty]; this._getScrollLeft = function () { return b.getLeft(a.$scrollElement) }, this._getScrollTop = function () { return b.getTop(a.$scrollElement) } }, _defineSetters: function () { var b = this, c = h[b.options.scrollProperty], d = i[b.options.positionProperty], e = c.setLeft, f = c.setTop; this._setScrollLeft = "function" == typeof e ? function (a) { e(b.$scrollElement, a) } : a.noop, this._setScrollTop = "function" == typeof f ? function (a) { f(b.$scrollElement, a) } : a.noop, this._setPosition = d.setPosition || function (a, c, e, f, g) { b.options.horizontalScrolling && d.setLeft(a, c, e), b.options.verticalScrolling && d.setTop(a, f, g) } }, _handleWindowLoadAndResize: function () { var c = this, d = a(b); c.options.responsive && d.bind("load." + this.name, function () { c.refresh() }), d.bind("resize." + this.name, function () { c._detectViewport(), c.options.responsive && c.refresh() }) }, refresh: function (c) { var d = this, e = d._getScrollLeft(), f = d._getScrollTop(); c && c.firstLoad || this._reset(), this._setScrollLeft(0), this._setScrollTop(0), this ._setOffsets(), this ._findParticles(), this._findBackgrounds(), c && c.firstLoad && /WebKit/.test(navigator .userAgent) && a( b).load(function () { var a = d._getScrollLeft(), b = d._getScrollTop(); d._setScrollLeft(a + 1), d._setScrollTop(b + 1), d._setScrollLeft(a), d ._setScrollTop(b) }), this._setScrollLeft(e), this._setScrollTop(f) }, _detectViewport: function () { var a = this.$viewportElement.offset(), b = null !== a && a !== d; this.viewportWidth = this.$viewportElement.width(), this.viewportHeight = this .$viewportElement.height(), this.viewportOffsetTop = b ? a.top : 0, this.viewportOffsetLeft = b ? a.left : 0 }, _findParticles: function () { { var b = this; this._getScrollLeft(), this._getScrollTop() } if (this.particles !== d) for (var c = this.particles.length - 1; c >= 0; c--) this.particles[c].$element.data( "stellar-elementIsActive", d); this.particles = [], this.options.parallaxElements && this.$element.find( "[data-stellar-ratio]").each( function () { var c, e, f, g, h, i, j, k, l, m = a(this), n = 0, o = 0, p = 0, q = 0; if (m.data("stellar-elementIsActive")) { if (m.data("stellar-elementIsActive") !== this) return } else m.data("stellar-elementIsActive", this); b.options.showElement(m), m.data("stellar-startingLeft") ? (m.css("left", m .data( "stellar-startingLeft")), m.css("top", m.data( "stellar-startingTop"))) : (m.data( "stellar-startingLeft", m.css("left")), m.data( "stellar-startingTop", m.css("top"))), f = m .position().left, g = m.position().top, h = "auto" === m.css( "margin-left") ? 0 : parseInt(m.css( "margin-left"), 10), i = "auto" === m.css("margin-top") ? 0 : parseInt(m .css("margin-top"), 10), k = m.offset().left - h, l = m.offset().top - i, m.parents().each( function () { var b = a(this); return b.data("stellar-offset-parent") === !0 ? (n = p, o = q, j = b, !1) : (p += b.position() .left, void(q += b.position().top)) }), c = m.data("stellar-horizontal-offset") !== d ? m.data( "stellar-horizontal-offset") : j !== d && j.data("stellar-horizontal-offset") !== d ? j.data( "stellar-horizontal-offset") : b .horizontalOffset, e = m.data("stellar-vertical-offset") !== d ? m.data( "stellar-vertical-offset") : j !== d && j.data( "stellar-vertical-offset") !== d ? j.data( "stellar-vertical-offset") : b.verticalOffset, b.particles.push({ $element: m, $offsetParent: j, isFixed: "fixed" === m.css("position"), horizontalOffset: c, verticalOffset: e, startingPositionLeft: f, startingPositionTop: g, startingOffsetLeft: k, startingOffsetTop: l, parentOffsetLeft: n, parentOffsetTop: o, stellarRatio: m.data("stellar-ratio") !== d ? m.data( "stellar-ratio") : 1, width: m.outerWidth(!0), height: m.outerHeight(!0), isHidden: !1 }) }) }, _findBackgrounds: function () { var b, c = this, e = this._getScrollLeft(), f = this._getScrollTop(); this.backgrounds = [], this.options.parallaxBackgrounds && (b = this.$element.find( "[data-stellar-background-ratio]"), this.$element.data( "stellar-background-ratio") && (b = b.add( this.$element)), b.each(function () { var b, g, h, i, j, k, l, o = a(this), p = n(o), q = 0, r = 0, s = 0, t = 0; if (o.data("stellar-backgroundIsActive")) { if (o.data("stellar-backgroundIsActive") !== this) return } else o.data("stellar-backgroundIsActive", this); o.data("stellar-backgroundStartingLeft") ? m(o, o.data( "stellar-backgroundStartingLeft"), o.data( "stellar-backgroundStartingTop")) : (o.data( "stellar-backgroundStartingLeft", p[0]), o.data( "stellar-backgroundStartingTop", p[1])), h = "auto" === o.css( "margin-left") ? 0 : parseInt(o .css("margin-left"), 10), i = "auto" === o.css("margin-top") ? 0 : parseInt(o.css( "margin-top"), 10), j = o.offset().left - h - e, k = o.offset() .top - i - f, o.parents().each( function () { var b = a(this); return b.data("stellar-offset-parent") === !0 ? (q = s, r = t, l = b, !1) : (s += b .position().left, void(t += b.position().top)) }), b = o.data("stellar-horizontal-offset") !== d ? o.data( "stellar-horizontal-offset") : l !== d && l.data("stellar-horizontal-offset") !== d ? l.data( "stellar-horizontal-offset") : c .horizontalOffset, g = o.data("stellar-vertical-offset") !== d ? o.data( "stellar-vertical-offset") : l !== d && l.data( "stellar-vertical-offset") !== d ? l.data( "stellar-vertical-offset") : c.verticalOffset, c.backgrounds.push({ $element: o, $offsetParent: l, isFixed: "fixed" === o.css("background-attachment"), horizontalOffset: b, verticalOffset: g, startingValueLeft: p[0], startingValueTop: p[1], startingBackgroundPositionLeft: isNaN(parseInt(p[0], 10)) ? 0 : parseInt(p[0], 10), startingBackgroundPositionTop: isNaN(parseInt(p[1], 10)) ? 0 : parseInt(p[1], 10), startingPositionLeft: o.position().left, startingPositionTop: o.position().top, startingOffsetLeft: j, startingOffsetTop: k, parentOffsetLeft: q, parentOffsetTop: r, stellarRatio: o.data("stellar-background-ratio") === d ? 1 : o .data( "stellar-background-ratio") }) })) }, _reset: function () { var a, b, c, d, e; for (e = this.particles.length - 1; e >= 0; e--) a = this.particles[e], b = a.$element.data( "stellar-startingLeft"), c = a.$element.data("stellar-startingTop"), this ._setPosition(a.$element, b, b, c, c), this.options.showElement(a.$element), a.$element.data( "stellar-startingLeft", null).data( "stellar-elementIsActive", null).data("stellar-backgroundIsActive", null); for (e = this.backgrounds.length - 1; e >= 0; e--) d = this.backgrounds[e], d.$element.data( "stellar-backgroundStartingLeft", null).data("stellar-backgroundStartingTop", null), m(d.$element, d .startingValueLeft, d.startingValueTop) }, destroy: function () { this._reset(), this.$scrollElement.unbind("resize." + this.name).unbind("scroll." + this .name), this ._animationLoop = a.noop, a(b).unbind("load." + this.name).unbind("resize." + this.name) }, _setOffsets: function () { var c = this, d = a(b); d.unbind("resize.horizontal-" + this.name).unbind("resize.vertical-" + this.name), "function" == typeof this.options.horizontalOffset ? (this.horizontalOffset = this.options .horizontalOffset(), d.bind( "resize.horizontal-" + this.name, function () { c.horizontalOffset = c.options.horizontalOffset() })) : this.horizontalOffset = this.options.horizontalOffset, "function" == typeof this.options .verticalOffset ? (this.verticalOffset = this.options.verticalOffset(), d.bind( "resize.vertical-" + this .name, function () { c.verticalOffset = c.options.verticalOffset() })) : this.verticalOffset = this.options.verticalOffset }, _repositionElements: function () { var a, b, c, d, e, f, g, h, i, j, k = this._getScrollLeft(), l = this._getScrollTop(), n = !0, o = !0; if (this.currentScrollLeft !== k || this.currentScrollTop !== l || this.currentWidth !== this .viewportWidth || this.currentHeight !== this.viewportHeight) { for (this.currentScrollLeft = k, this.currentScrollTop = l, this.currentWidth = this .viewportWidth, this .currentHeight = this.viewportHeight, j = this.particles.length - 1; j >= 0; j--) a = this.particles[ j], b = a.isFixed ? 1 : 0, this.options.horizontalScrolling ? (f = (k + a .horizontalOffset + this .viewportOffsetLeft + a.startingPositionLeft - a.startingOffsetLeft + a .parentOffsetLeft) * -(a .stellarRatio + b - 1) + a.startingPositionLeft, h = f - a .startingPositionLeft + a .startingOffsetLeft) : (f = a.startingPositionLeft, h = a.startingOffsetLeft), this.options .verticalScrolling ? (g = (l + a.verticalOffset + this.viewportOffsetTop + a .startingPositionTop - a .startingOffsetTop + a.parentOffsetTop) * -(a.stellarRatio + b - 1) + a .startingPositionTop, i = g - a.startingPositionTop + a.startingOffsetTop) : (g = a.startingPositionTop, i = a .startingOffsetTop), this.options.hideDistantElements && (o = !this.options .horizontalScrolling || h + a.width > (a.isFixed ? 0 : k) && h < (a.isFixed ? 0 : k) + this .viewportWidth + this .viewportOffsetLeft, n = !this.options.verticalScrolling || i + a.height > (a .isFixed ? 0 : l) && i < (a.isFixed ? 0 : l) + this.viewportHeight + this.viewportOffsetTop), o && n ? (a.isHidden && ( this.options.showElement(a.$element), a.isHidden = !1), this._setPosition(a .$element, f, a .startingPositionLeft, g, a.startingPositionTop)) : a.isHidden || (this.options .hideElement(a .$element), a.isHidden = !0); for (j = this.backgrounds.length - 1; j >= 0; j--) c = this.backgrounds[j], b = c .isFixed ? 0 : 1, d = this.options.horizontalScrolling ? (k + c.horizontalOffset - this .viewportOffsetLeft - c .startingOffsetLeft + c.parentOffsetLeft - c.startingBackgroundPositionLeft) * ( b - c .stellarRatio) + "px" : c.startingValueLeft, e = this.options .verticalScrolling ? (l + c .verticalOffset - this.viewportOffsetTop - c.startingOffsetTop + c .parentOffsetTop - c .startingBackgroundPositionTop) * (b - c.stellarRatio) + "px" : c .startingValueTop, m(c.$element, d, e) } }, _handleScrollEvent: function () { var a = this, b = !1, c = function () { a._repositionElements(), b = !1 }, d = function () { b || (o(c), b = !0) }; this.$scrollElement.bind("scroll." + this.name, d), d() }, _startAnimationLoop: function () { var a = this; this._animationLoop = function () { o(a._animationLoop), a._repositionElements() }, this._animationLoop() } }, a.fn[f] = function (b) { var c = arguments; return b === d || "object" == typeof b ? this.each(function () { a.data(this, "plugin_" + f) || a.data(this, "plugin_" + f, new e(this, b)) }) : "string" == typeof b && "_" !== b[0] && "init" !== b ? this.each(function () { var d = a.data(this, "plugin_" + f); d instanceof e && "function" == typeof d[b] && d[b].apply(d, Array.prototype.slice.call( c, 1)), "destroy" === b && a.data(this, "plugin_" + f, null) }) : void 0 }, a[f] = function () { var c = a(b); return c.stellar.apply(c, Array.prototype.slice.call(arguments, 0)) }, a[f].scrollProperty = h, a[f].positionProperty = i, b.Stellar = e }(jQuery, this, document); ! function ($) { "use strict"; var Typed = function (el, options) { // chosen element to manipulate text this.el = $(el); // options this.options = $.extend({}, $.fn.typed.defaults, options); // attribute to type into this.isInput = this.el.is('input'); this.attr = this.options.attr; // show cursor this.showCursor = this.isInput ? false : this.options.showCursor; // text content of element this.elContent = this.attr ? this.el.attr(this.attr) : this.el.text(); // html or plain text this.contentType = this.options.contentType; // typing speed this.typeSpeed = this.options.typeSpeed; // add a delay before typing starts this.startDelay = this.options.startDelay; // backspacing speed this.backSpeed = this.options.backSpeed; // amount of time to wait before backspacing this.backDelay = this.options.backDelay; // div containing strings this.stringsElement = this.options.stringsElement; // input strings of text this.strings = this.options.strings; // character number position of current string this.strPos = 0; // current array position this.arrayPos = 0; // number to stop backspacing on. // default 0, can change depending on how many chars // you want to remove at the time this.stopNum = 0; // Looping logic this.loop = this.options.loop; this.loopCount = this.options.loopCount; this.curLoop = 0; // for stopping this.stop = false; // custom cursor this.cursorChar = this.options.cursorChar; // shuffle the strings this.shuffle = this.options.shuffle; // the order of strings this.sequence = []; // All systems go! this.build(); }; Typed.prototype = { constructor: Typed, init: function () { // begin the loop w/ first current string (global self.strings) // current string will be passed as an argument each time after this var self = this; self.timeout = setTimeout(function () { for (var i = 0; i < self.strings.length; ++i) self.sequence[i] = i; // shuffle the array if true if (self.shuffle) self.sequence = self.shuffleArray(self.sequence); // Start typing self.typewrite(self.strings[self.sequence[self.arrayPos]], self.strPos); }, self.startDelay); }, build: function () { var self = this; // Insert cursor if (this.showCursor === true) { this.cursor = $("" + this.cursorChar + ""); this.el.after(this.cursor); } if (this.stringsElement) { this.strings = []; this.stringsElement.hide(); console.log(this.stringsElement.children()); var strings = this.stringsElement.children(); $.each(strings, function (key, value) { self.strings.push($(value).html()); }); } this.init(); }, // pass current string state to each function, types 1 char per call typewrite: function (curString, curStrPos) { // exit when stopped if (this.stop === true) { return; } // varying values for setTimeout during typing // can't be global since number changes each time loop is executed var humanize = Math.round(Math.random() * (100 - 30)) + this.typeSpeed; var self = this; // ------------- optional ------------- // // backpaces a certain string faster // ------------------------------------ // // if (self.arrayPos == 1){ // self.backDelay = 50; // } // else{ self.backDelay = 500; } // contain typing function in a timeout humanize'd delay self.timeout = setTimeout(function () { // check for an escape character before a pause value // format: \^\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^ // single ^ are removed from string var charPause = 0; var substr = curString.substr(curStrPos); if (substr.charAt(0) === '^') { var skip = 1; // skip atleast 1 if (/^\^\d+/.test(substr)) { substr = /\d+/.exec(substr)[0]; skip += substr.length; charPause = parseInt(substr); } // strip out the escape character and pause value so they're not printed curString = curString.substring(0, curStrPos) + curString.substring( curStrPos + skip); } if (self.contentType === 'html') { // skip over html tags while typing var curChar = curString.substr(curStrPos).charAt(0) if (curChar === '<' || curChar === '&') { var tag = ''; var endTag = ''; if (curChar === '<') { endTag = '>' } else { endTag = ';' } while (curString.substr(curStrPos + 1).charAt(0) !== endTag) { tag += curString.substr(curStrPos).charAt(0); curStrPos++; if (curStrPos + 1 > curString.length) { break; } } curStrPos++; tag += endTag; } } // timeout for any pause after a character self.timeout = setTimeout(function () { if (curStrPos === curString.length) { // fires callback function self.options.onStringTyped(self.arrayPos); // is this the final string if (self.arrayPos === self.strings.length - 1) { // animation that occurs on the last typed string self.options.callback(); self.curLoop++; // quit if we wont loop back if (self.loop === false || self.curLoop === self.loopCount) return; } self.timeout = setTimeout(function () { self.backspace(curString, curStrPos); }, self.backDelay); } else { /* call before functions if applicable */ if (curStrPos === 0) { self.options.preStringTyped(self.arrayPos); } // start typing each new char into existing string // curString: arg, self.el.html: original text inside element var nextString = curString.substr(0, curStrPos + 1); if (self.attr) { self.el.attr(self.attr, nextString); } else { if (self.isInput) { self.el.val(nextString); } else if (self.contentType === 'html') { self.el.html(nextString); } else { self.el.text(nextString); } } // add characters one by one curStrPos++; // loop the function self.typewrite(curString, curStrPos); } // end of character pause }, charPause); // humanized value for typing }, humanize); }, backspace: function (curString, curStrPos) { // exit when stopped if (this.stop === true) { return; } // varying values for setTimeout during typing // can't be global since number changes each time loop is executed var humanize = Math.round(Math.random() * (100 - 30)) + this.backSpeed; var self = this; self.timeout = setTimeout(function () { // ----- this part is optional ----- // // check string array position // on the first string, only delete one word // the stopNum actually represents the amount of chars to // keep in the current string. In my case it's 14. // if (self.arrayPos == 1){ // self.stopNum = 14; // } //every other time, delete the whole typed string // else{ // self.stopNum = 0; // } if (self.contentType === 'html') { // skip over html tags while backspacing if (curString.substr(curStrPos).charAt(0) === '>') { var tag = ''; while (curString.substr(curStrPos - 1).charAt(0) !== '<') { tag -= curString.substr(curStrPos).charAt(0); curStrPos--; if (curStrPos < 0) { break; } } curStrPos--; tag += '<'; } } // ----- continue important stuff ----- // // replace text with base text + typed characters var nextString = curString.substr(0, curStrPos); if (self.attr) { self.el.attr(self.attr, nextString); } else { if (self.isInput) { self.el.val(nextString); } else if (self.contentType === 'html') { self.el.html(nextString); } else { self.el.text(nextString); } } // if the number (id of character in current string) is // less than the stop number, keep going if (curStrPos > self.stopNum) { // subtract characters one by one curStrPos--; // loop the function self.backspace(curString, curStrPos); } // if the stop number has been reached, increase // array position to next string else if (curStrPos <= self.stopNum) { self.arrayPos++; if (self.arrayPos === self.strings.length) { self.arrayPos = 0; // Shuffle sequence again if (self.shuffle) self.sequence = self.shuffleArray(self.sequence); self.init(); } else self.typewrite(self.strings[self.sequence[self.arrayPos]], curStrPos); } // humanized value for typing }, humanize); }, /** * Shuffles the numbers in the given array. * @param {Array} array * @returns {Array} */ shuffleArray: function (array) { var tmp, current, top = array.length; if (top) while (--top) { current = Math.floor(Math.random() * (top + 1)); tmp = array[current]; array[current] = array[top]; array[top] = tmp; } return array; }, // Start & Stop currently not working // , stop: function() { // var self = this; // self.stop = true; // clearInterval(self.timeout); // } // , start: function() { // var self = this; // if(self.stop === false) // return; // this.stop = false; // this.init(); // } // Reset and rebuild the element reset: function () { var self = this; clearInterval(self.timeout); var id = this.el.attr('id'); this.el.empty(); if (typeof this.cursor !== 'undefined') { this.cursor.remove(); } this.strPos = 0; this.arrayPos = 0; this.curLoop = 0; // Send the callback this.options.resetCallback(); } }; $.fn.typed = function (option) { return this.each(function () { var $this = $(this), data = $this.data('typed'), options = typeof option == 'object' && option; if (data) { data.reset(); } $this.data('typed', (data = new Typed(this, options))); if (typeof option == 'string') data[option](); }); }; $.fn.typed.defaults = { strings: ["These are the default values...", "You know what you should do?", "Use your own!", "Have a great day!" ], stringsElement: null, // typing speed typeSpeed: 0, // time before typing starts startDelay: 0, // backspacing speed backSpeed: 0, // shuffle the strings shuffle: false, // time before backspacing backDelay: 500, // loop loop: false, // false = infinite loopCount: false, // show cursor showCursor: true, // character for cursor cursorChar: "|", // attribute to type (null == text) attr: null, // either html or text contentType: 'html', // call when done callback function callback: function () {}, // starting callback function before each string preStringTyped: function () {}, //callback for every typed string onStringTyped: function () {}, // callback for reset resetCallback: function () {} }; }(window.jQuery); /*! Waypoints - 4.0.1 Copyright © 2011-2016 Caleb Troughton Licensed under the MIT license. https://github.com/imakewebthings/waypoints/blob/master/licenses.txt */ ! function () { "use strict"; function t(o) { if (!o) throw new Error("No options passed to Waypoint constructor"); if (!o.element) throw new Error("No element option passed to Waypoint constructor"); if (!o.handler) throw new Error("No handler option passed to Waypoint constructor"); this.key = "waypoint-" + e, this.options = t.Adapter.extend({}, t.defaults, o), this.element = this .options .element, this.adapter = new t.Adapter(this.element), this.callback = o.handler, this.axis = this .options .horizontal ? "horizontal" : "vertical", this.enabled = this.options.enabled, this.triggerPoint = null, this .group = t.Group.findOrCreate({ name: this.options.group, axis: this.axis }), this.context = t.Context.findOrCreateByElement(this.options.context), t.offsetAliases[this .options .offset] && (this.options.offset = t.offsetAliases[this.options.offset]), this.group.add(this), this.context .add(this), i[this.key] = this, e += 1 } var e = 0, i = {}; t.prototype.queueTrigger = function (t) { this.group.queueTrigger(this, t) }, t.prototype.trigger = function (t) { this.enabled && this.callback && this.callback.apply(this, t) }, t.prototype.destroy = function () { this.context.remove(this), this.group.remove(this), delete i[this.key] }, t.prototype.disable = function () { return this.enabled = !1, this }, t.prototype.enable = function () { return this.context.refresh(), this.enabled = !0, this }, t.prototype.next = function () { return this.group.next(this) }, t.prototype.previous = function () { return this.group.previous(this) }, t.invokeAll = function (t) { var e = []; for (var o in i) e.push(i[o]); for (var n = 0, r = e.length; r > n; n++) e[n][t]() }, t.destroyAll = function () { t.invokeAll("destroy") }, t.disableAll = function () { t.invokeAll("disable") }, t.enableAll = function () { t.Context.refreshAll(); for (var e in i) i[e].enabled = !0; return this }, t.refreshAll = function () { t.Context.refreshAll() }, t.viewportHeight = function () { return window.innerHeight || document.documentElement.clientHeight }, t.viewportWidth = function () { return document.documentElement.clientWidth }, t.adapters = [], t.defaults = { context: window, continuous: !0, enabled: !0, group: "default", horizontal: !1, offset: 0 }, t.offsetAliases = { "bottom-in-view": function () { return this.context.innerHeight() - this.adapter.outerHeight() }, "right-in-view": function () { return this.context.innerWidth() - this.adapter.outerWidth() } }, window.Waypoint = t }(), function () { "use strict"; function t(t) { window.setTimeout(t, 1e3 / 60) } function e(t) { this.element = t, this.Adapter = n.Adapter, this.adapter = new this.Adapter(t), this.key = "waypoint-context-" + i, this.didScroll = !1, this.didResize = !1, this.oldScroll = { x: this.adapter.scrollLeft(), y: this.adapter.scrollTop() }, this.waypoints = { vertical: {}, horizontal: {} }, t.waypointContextKey = this.key, o[t.waypointContextKey] = this, i += 1, n.windowContext || (n .windowContext = !0, n.windowContext = new e(window)), this.createThrottledScrollHandler(), this .createThrottledResizeHandler() } var i = 0, o = {}, n = window.Waypoint, r = window.onload; e.prototype.add = function (t) { var e = t.options.horizontal ? "horizontal" : "vertical"; this.waypoints[e][t.key] = t, this.refresh() }, e.prototype.checkEmpty = function () { var t = this.Adapter.isEmptyObject(this.waypoints.horizontal), e = this.Adapter.isEmptyObject(this.waypoints.vertical), i = this.element == this.element.window; t && e && !i && (this.adapter.off(".waypoints"), delete o[this.key]) }, e.prototype.createThrottledResizeHandler = function () { function t() { e.handleResize(), e.didResize = !1 } var e = this; this.adapter.on("resize.waypoints", function () { e.didResize || (e.didResize = !0, n.requestAnimationFrame(t)) }) }, e.prototype.createThrottledScrollHandler = function () { function t() { e.handleScroll(), e.didScroll = !1 } var e = this; this.adapter.on("scroll.waypoints", function () { (!e.didScroll || n.isTouch) && (e.didScroll = !0, n.requestAnimationFrame(t)) }) }, e.prototype.handleResize = function () { n.Context.refreshAll() }, e.prototype.handleScroll = function () { var t = {}, e = { horizontal: { newScroll: this.adapter.scrollLeft(), oldScroll: this.oldScroll.x, forward: "right", backward: "left" }, vertical: { newScroll: this.adapter.scrollTop(), oldScroll: this.oldScroll.y, forward: "down", backward: "up" } }; for (var i in e) { var o = e[i], n = o.newScroll > o.oldScroll, r = n ? o.forward : o.backward; for (var s in this.waypoints[i]) { var a = this.waypoints[i][s]; if (null !== a.triggerPoint) { var l = o.oldScroll < a.triggerPoint, h = o.newScroll >= a.triggerPoint, p = l && h, u = !l && !h; (p || u) && (a.queueTrigger(r), t[a.group.id] = a.group) } } } for (var c in t) t[c].flushTriggers(); this.oldScroll = { x: e.horizontal.newScroll, y: e.vertical.newScroll } }, e.prototype.innerHeight = function () { return this.element == this.element.window ? n.viewportHeight() : this.adapter.innerHeight() }, e.prototype.remove = function (t) { delete this.waypoints[t.axis][t.key], this.checkEmpty() }, e.prototype.innerWidth = function () { return this.element == this.element.window ? n.viewportWidth() : this.adapter.innerWidth() }, e.prototype.destroy = function () { var t = []; for (var e in this.waypoints) for (var i in this.waypoints[e]) t.push(this.waypoints[e][i]); for (var o = 0, n = t.length; n > o; o++) t[o].destroy() }, e.prototype.refresh = function () { var t, e = this.element == this.element.window, i = e ? void 0 : this.adapter.offset(), o = {}; this.handleScroll(), t = { horizontal: { contextOffset: e ? 0 : i.left, contextScroll: e ? 0 : this.oldScroll.x, contextDimension: this.innerWidth(), oldScroll: this.oldScroll.x, forward: "right", backward: "left", offsetProp: "left" }, vertical: { contextOffset: e ? 0 : i.top, contextScroll: e ? 0 : this.oldScroll.y, contextDimension: this.innerHeight(), oldScroll: this.oldScroll.y, forward: "down", backward: "up", offsetProp: "top" } }; for (var r in t) { var s = t[r]; for (var a in this.waypoints[r]) { var l, h, p, u, c, d = this.waypoints[r][a], f = d.options.offset, w = d.triggerPoint, y = 0, g = null == w; d.element !== d.element.window && (y = d.adapter.offset()[s.offsetProp]), "function" == typeof f ? f = f .apply(d) : "string" == typeof f && (f = parseFloat(f), d.options.offset.indexOf("%") > -1 && (f = Math .ceil(s.contextDimension * f / 100))), l = s.contextScroll - s.contextOffset, d .triggerPoint = Math .floor(y + l - f), h = w < s.oldScroll, p = d.triggerPoint >= s.oldScroll, u = h && p, c = !h && !p, ! g && u ? (d.queueTrigger(s.backward), o[d.group.id] = d.group) : !g && c ? (d .queueTrigger(s.forward), o[d.group.id] = d.group) : g && s.oldScroll >= d.triggerPoint && (d.queueTrigger(s .forward), o[d.group .id] = d.group) } } return n.requestAnimationFrame(function () { for (var t in o) o[t].flushTriggers() }), this }, e.findOrCreateByElement = function (t) { return e.findByElement(t) || new e(t) }, e.refreshAll = function () { for (var t in o) o[t].refresh() }, e.findByElement = function (t) { return o[t.waypointContextKey] }, window.onload = function () { r && r(), e.refreshAll() }, n.requestAnimationFrame = function (e) { var i = window.requestAnimationFrame || window.mozRequestAnimationFrame || window .webkitRequestAnimationFrame || t; i.call(window, e) }, n.Context = e }(), function () { "use strict"; function t(t, e) { return t.triggerPoint - e.triggerPoint } function e(t, e) { return e.triggerPoint - t.triggerPoint } function i(t) { this.name = t.name, this.axis = t.axis, this.id = this.name + "-" + this.axis, this.waypoints = [], this .clearTriggerQueues(), o[this.axis][this.name] = this } var o = { vertical: {}, horizontal: {} }, n = window.Waypoint; i.prototype.add = function (t) { this.waypoints.push(t) }, i.prototype.clearTriggerQueues = function () { this.triggerQueues = { up: [], down: [], left: [], right: [] } }, i.prototype.flushTriggers = function () { for (var i in this.triggerQueues) { var o = this.triggerQueues[i], n = "up" === i || "left" === i; o.sort(n ? e : t); for (var r = 0, s = o.length; s > r; r += 1) { var a = o[r]; (a.options.continuous || r === o.length - 1) && a.trigger([i]) } } this.clearTriggerQueues() }, i.prototype.next = function (e) { this.waypoints.sort(t); var i = n.Adapter.inArray(e, this.waypoints), o = i === this.waypoints.length - 1; return o ? null : this.waypoints[i + 1] }, i.prototype.previous = function (e) { this.waypoints.sort(t); var i = n.Adapter.inArray(e, this.waypoints); return i ? this.waypoints[i - 1] : null }, i.prototype.queueTrigger = function (t, e) { this.triggerQueues[e].push(t) }, i.prototype.remove = function (t) { var e = n.Adapter.inArray(t, this.waypoints); e > -1 && this.waypoints.splice(e, 1) }, i.prototype.first = function () { return this.waypoints[0] }, i.prototype.last = function () { return this.waypoints[this.waypoints.length - 1] }, i.findOrCreate = function (t) { return o[t.axis][t.name] || new i(t) }, n.Group = i }(), function () { "use strict"; function t(t) { this.$element = e(t) } var e = window.jQuery, i = window.Waypoint; e.each(["innerHeight", "innerWidth", "off", "offset", "on", "outerHeight", "outerWidth", "scrollLeft", "scrollTop" ], function (e, i) { t.prototype[i] = function () { var t = Array.prototype.slice.call(arguments); return this.$element[i].apply(this.$element, t) } }), e.each(["extend", "inArray", "isEmptyObject"], function (i, o) { t[o] = e[o] }), i.adapters.push({ name: "jquery", Adapter: t }), i.Adapter = t }(), function () { "use strict"; function t(t) { return function () { var i = [], o = arguments[0]; return t.isFunction(arguments[0]) && (o = t.extend({}, arguments[1]), o.handler = arguments[0]), this.each( function () { var n = t.extend({}, o, { element: this }); "string" == typeof n.context && (n.context = t(this).closest(n.context)[0]), i.push( new e(n)) }), i } } var e = window.Waypoint; window.jQuery && (window.jQuery.fn.waypoint = t(window.jQuery)), window.Zepto && (window.Zepto.fn.waypoint = t( window.Zepto)) }(); ! function (t) { "use strict"; t.fn.countUp = function (e) { var a = t.extend({ time: 2e3, delay: 10 }, e); return this.each(function () { var e = t(this), n = a, u = function () { e.data("counterupTo") || e.data("counterupTo", e.text()); var t = parseInt(e.data("counter-time")) > 0 ? parseInt(e.data( "counter-time")) : n.time, a = parseInt(e.data("counter-delay")) > 0 ? parseInt(e.data( "counter-delay")) : n.delay, u = t / a, r = e.data("counterupTo"), o = [r], c = /[0-9]+,[0-9]+/.test(r); r = r.replace(/,/g, ""); for (var d = (/^[0-9]+$/.test(r), /^[0-9]+\.[0-9]+$/.test(r)), s = d ? (r.split( ".")[1] || []) .length : 0, i = u; i >= 1; i--) { var p = parseInt(Math.round(r / u * i)); if (d && (p = parseFloat(r / u * i).toFixed(s)), c) for (; /(\d+)(\d{3})/.test(p.toString());) p = p.toString().replace( /(\d+)(\d{3})/, "$1,$2"); o.unshift(p) } e.data("counterup-nums", o), e.text("0"); var f = function () { e.text(e.data("counterup-nums").shift()), e.data("counterup-nums") .length ? setTimeout(e.data( "counterup-func"), a) : (delete e.data("counterup-nums"), e .data("counterup-nums", null), e .data("counterup-func", null)) }; e.data("counterup-func", f), setTimeout(e.data("counterup-func"), a) }; e.waypoint(u, { offset: "100%", triggerOnce: !0 }) }) } }(jQuery); //]]>
(Video) How To Upkeep A Scenic Paradise | Inside Our Gardens By The Bay | Full Episode

FAQs

How do I pass a virtual assistant interview? ›

A common question Recruiters ask Virtual Assistant applicants is “tell me something about yourself that's not in your resume”. An excellent way to answer this question is to talk about things that you're passionate about. For example, you can talk about your love of movies, coffee, cooking, or anything under the sun.

How do I pass a virtual assistant with no experience? ›

How to become a virtual assistant with no experience
  1. Take training courses. You've got to prepare for working as a VA and running your online business. ...
  2. Determine the work you like and can do. ...
  3. Figure out the prices to charge. ...
  4. Create an online presence. ...
  5. Start applying to jobs. ...
  6. Learn about yourself and clients.

Who is the most popular virtual assistant? ›

Best Virtual Assistant Services of 2023
  • Best Overall: Time etc.
  • Best for Solopreneurs: Prialto.
  • Best for Small Businesses: Upwork.
  • Best for On-Demand Tasks: Fancy Hands.
  • Best for Specialized VAs: Belay.
  • Best for Rush Projects: Magic.
  • Best Service Guarantee: Wood Bows.

What are the top 5 virtual assistants? ›

The Best Virtual Assistant Services of 2023
  • Fancy Hands: Best for Quick Requests.
  • Time etc: Best for Entrepreneurs.
  • Uassist.ME: Best for Bilingual.
  • Prialto: Best for Large Teams.
  • WoodBows: Best for Customer Satisfaction.
Jan 10, 2023

What are 3/5 skills that make for a great virtual assistant? ›

Top Virtual Assistant Skills
  • Communication Skills. A good virtual assistant will have exceptional communication skills regardless of whether they have years of experience or not. ...
  • Project Management. ...
  • Time Management. ...
  • IT Skills. ...
  • Excellent Attention to Detail. ...
  • Good Decision Making. ...
  • A Love for Learning. ...
  • Social Media Management.
Dec 20, 2021

What do you say at the end of a virtual interview? ›

“Thank you for giving me the opportunity to be interviewed for the role. I have thoroughly enjoyed the process, and in particular learning about your company, your plans, and how I can help you to achieve them.

Can I be a VA without experience? ›

As a virtual assistant with no experience, you are usually eligible for entry-level positions, unless you have past administrative experience. General duties may include helping clients draft emails and letters, schedule appointments, and organize electronic files.

What is your strongest skill as a virtual assistant? ›

One of the outstanding qualities of a virtual assistant is the ability to find the motivation and inspiration to sound happy on the phone, to reply to emails or chats in a friendly way, and to find the drive to complete a task so as to meet up with set deadlines.

What do you consider the hardest part of being a virtual assistant? ›

Difficulty in communication

The main issue with virtual assistants is that there is no way to communicate face to face. It is entirely an online job that is carried out from the employee's preferred location. To solve this problem, Ripple Virtual assistants strive to be consistent in communicating with clients.

How much should a virtual assistant charge per hour? ›

The more experienced a VA is, the more they'll be up to the challenge—and the higher the rate they'll be likely to charge. On Upwork, freelance virtual assistants charge an average of $18-35/hour depending on skills and experience.

Can you make a living as a virtual assistant? ›

Most virtual assistants do not get rich right away, but it is possible to earn a decent income. Those with basic skills and just a client or two may just earn a few hundred dollars per month. However, those with high level skills, years of experience, and several clients can earn $100,000 per year or more.

Do virtual assistant jobs pay well? ›

While ZipRecruiter is seeing salaries as high as $76,612 and as low as $12,199, the majority of Virtual Assistant salaries currently range between $29,278 (25th percentile) to $49,773 (75th percentile) with top earners (90th percentile) making $63,436 annually in California.

Is it hard to get a job as a virtual assistant? ›

Finding a virtual assistant job isn't difficult. Whether you are looking for a full-time job or a freelance position, plenty of companies offer virtual assistant jobs.

How many hours a week do virtual assistants work? ›

4. Virtual assistants can work 30 hours or more per week: VAs mirror their clients time zone regardless of where they reside. While full-time virtual assistant employment is ideal for significantly increasing tenure, both part-time and full-time hours are available options for businesses to consider.

How many hours do you work as a virtual assistant? ›

These are time-based and can range from 10 – 75 hours or more. You'll have a ton of flexibility and have support along the way to make the most of your demands. Additionally, as there's an agency in place, they provide you with virtual assistance to handle disputes over virtual assistant work.

What is a hard skill for virtual assistant? ›

The most common hard skill for a virtual assistant is data entry. 9.3% virtual assistants have this skill on their resume. The second most common hard skill for a virtual assistant is customer service appearing on 7.8% of resumes. The third most common is email management on 7.6% of resumes.

What is the #1 job of a great virtual assistant? ›

Typical tasks a virtual assistant might perform include scheduling appointments, making phone calls, making travel arrangements, and managing email accounts. Some virtual assistants specialize in offering graphic design, blog writing, bookkeeping, social media, and marketing services.

Why should we hire you best answer virtual assistant? ›

If you hire me as a Virtual Assistant, I will be reliable, trustworthy, adaptable, and someone who always demonstrates exceptional time-keeping, administrative skills, and attention to detail in the role.”

How do you know if you passed a virtual interview? ›

  • 7 Signs a Video Interview Went Well. Posted by IntroMagic Team on February 8th, 2022.
  • 7 Signs a Video Interview Went Well. ...
  • You got chatty with the interviewer. ...
  • You correlate with their thinking. ...
  • You are promised. ...
  • You felt confident. ...
  • Questions for recruiters. ...
  • From tête-à-tête to dates.
Feb 8, 2022

What should you not do in a virtual interview? ›

Here are the top 5 virtual interview deal-breakers that could cost you the job, according to TopResume:
  1. Avoiding eye contact or staring into space.
  2. Sitting in a messy room.
  3. Leaving inappropriate tabs or apps open when screen-sharing.
  4. Using an unprofessional background.
  5. Being interrupted by family members.
Nov 3, 2022

How do you smash a virtual interview? ›

Talent's tips in brief:
  1. Prepare just as you would for a face-to-face interview.
  2. Find a silent, well-lit place, free from distractions.
  3. Make sure you have a stable internet connection.
  4. Check that your microphone is working.
  5. Test your camera.
  6. Dress professionally and choose a suitable background.

Is working for the VA worth it? ›

Exceptional benefits

As a VA employee, you can choose from a variety of high-quality health care and life insurance options. VA also helps you plan for the future with access to the Federal Employees Retirement System (FERS) and Thrift Savings Plan (TSP), life insurance and long-term care insurance.

Is being a VA worth it? ›

For many, the decision to become a VA is a great option. It allows you to work from home and earn your salary if you're a parent or carer for someone you love. You may work from your computer as a virtual assistant. You don't go to a formal office and face the everyday traffic and long hours of travel.

Is working at the VA stressful? ›

Survey results released in May as part of a VA inspector general report found that less than half of clinical and nonclinical Veterans Health Administration staff were aware of the agency's emotional support resources and one-quarter of the staff was experiencing high levels of stress.

What are the top 3 virtual assistant expertise? ›

Focus On These Virtual Office Assistant Skills
  • 1 – Word Processing Skills.
  • 2 – Oral Communication And Writing Skills.
  • 3 – Computer Skills.
  • 4 – Self Motivation And Discipline.
  • 5 – Quick Thinking And Effective Decision Making.
  • 6 – Understanding Real Estate Listings.
  • 7 – Managing Facebook Groups And Pages.
  • 8 – Email Management.

Is virtual assistant stressful? ›

Being a Virtual Assistant definitely comes with its share of stress. Even though this specific career choice is aimed at reducing pressure for the clients, the stress still has to go somewhere.

What is the best personality type for virtual assistant? ›

The Personality Traits of a Great Virtual Assistant
  • Calmness under pressure. Running a successful business is usually stressful even at the best of times. ...
  • Clarity of thought. ...
  • Excellent organisational skills. ...
  • Emotional intelligence. ...
  • Friendliness. ...
  • Dedication.
Jan 24, 2019

What are the disadvantages of virtual assistant? ›

Cons
  • Initial cost could outweigh savings. While it's possible to make both time and cash savings using these virtual assistant devices, they don't always come cheap. ...
  • Voice recognition isn't perfect. ...
  • A microphone in your home.
Nov 22, 2022

What is the most important soft skill a virtual assistant should have? ›

#2 – Communication

It's the most important Virtual Assistant soft skill to master. If you can't communicate effectively, it's hard to meet your clients' deadlines and expectations, especially since we're virtual. It's important to ask questions, so you fully understand what you're doing for clients.

Is it hard to become a virtual assistant with no experience? ›

CAN YOU BE A VIRTUAL ASSISTANT WITHOUT ANY EXPERIENCE? The short answer is yes. You can become a virtual assistant even if you do not have prior VA experience. You just need to plan ahead and make sure that you have the necessary skills and traits that can help you become a good virtual assistant.

Can you make 6 figures as a virtual assistant? ›

Falyn Golub is a virtual assistant and the founder of boutique VA company The Invisible Assistant. He started working five to 10 hours a week for $25 an hour. Now she makes six figures.

How much does an Amazon virtual assistant make? ›

However on average a newbie Amazon VA earns upto $1000, mid-level ears $1000-$3000, and the experts who set up their own agency have a potential of earning more than $5000 per month.

Is there a high demand for virtual assistants? ›

Virtual assistants are in high demand because, with remote workers, there is less churn. And if a virtual assistant does step away, it is typically less costly to replace them with someone with a similar set of skills than it is to replace a traditional employee.

What qualifications do I need to be a virtual assistant? ›

Identify your skills

Computer proficiency: Virtual assistants use a wide range of computer programs to perform their tasks. They need to be familiar with using the internet, managing email inboxes and using cloud-based communication, such as file sharing, password managers and teleconferencing.

Do I need an LLC to be a virtual assistant? ›

Starting a limited liability company (LLC) for your virtual assistant business can provide several benefits. Most importantly, an LLC structure offers limited liability to its owners, which can protect their personal assets from lawsuits and creditors.

What is the minimum salary of virtual assistant? ›

An entry-level Virtual Assistant with less than 1 year experience can expect to earn an average total compensation (includes tips, bonus, and overtime pay) of Rs 825.00 based on 13 salaries.

What is the highest paying virtual assistant job? ›

High-paying virtual assistant jobs for beginners
  • Data entry clerk. National average salary: $38,735 per year. ...
  • Bookkeeper. National average salary: $42,616 per year. ...
  • Human resouces assistant. ...
  • Personal assistant. ...
  • Administrative assistant. ...
  • Virtual receptionist. ...
  • Customer support representative. ...
  • Virtual event coordinator.
Jun 6, 2022

Do virtual assistants work all day? ›

Myth #1: A Virtual Assistant works 24 hours per day, 7 days per week, 365 days per year. As a virtual assistant, I work bizarre hours. Some days I start at 4am, and I'm finished by noon and some days I don't even get started until 5 pm. It's all based on what my current customer's needs are.

How much do virtual assistants earn per hour? ›

What is the Pay by Experience Level for Virtual Assistants? An entry-level Virtual Assistant with less than 1 year experience can expect to earn an average total compensation (includes tips, bonus, and overtime pay) of ₦2947.91 based on 9 salaries.

What kind of people hire virtual assistants? ›

Virtual assistants help individuals, small and large companies, and entrepreneurs be more productive and grow their businesses by taking care of critical core tasks. Professionals have hired virtual assistants for decades to help with daily, office-functions.

How do I become a virtual assistant from home? ›

How to become a virtual assistant
  1. Decide what types of services you will offer. Answer these questions to gain clarity: ...
  2. Build relevant skills. Once you know who you can help and how to help them, assess your skills and experience. ...
  3. Create an online presence. ...
  4. Look for virtual assistant jobs.
Jan 13, 2023

Is virtual assistant a good side job? ›

Whatever your reasons, working from home as a virtual assistant offers a lot of benefits compared to other side hustle opportunities. And that's true whether you just want to work an extra 5-10 hours a week, or end up transitioning into online work permanently like I did.

How many clients should a virtual assistant have? ›

As a Virtual Assistant, you can work for as few or as many clients as you want depending on your time and availability. The tasks you do as a Virtual Assistant can vary widely depending on what you like to do and what you are good at. In fact, there are over 100 services you can offer as Virtual Assistant.

Do virtual assistants make their own schedule? ›

One of the benefits of working as a virtual assistant is the flexibility, people said. Virtual assistants can set their own schedules, decide how many hours to work per week, and leave time for family or travel whenever they see fit. Additionally, many start their virtual-assistant careers while holding full-time jobs.

What is the most popular virtual assistant? ›

The Best Virtual Personal Assistant Services of 2023
  • Best Overall: Time etc.
  • Runner-Up, Best Overall: MyTasker.
  • Best for Highly Qualified VAs: BELAY.
  • Best for Short Tasks: Fancy Hands.
  • Best Service Guarantee: WoodBows.
  • Best for Bilingual VAs: Uassist.ME.
  • Best for Executives: Prialto.
Nov 30, 2022

Are virtual assistants always listening? ›

If you've wondered whether your virtual assistant or device is indeed listening to you, the answer is yes. Many of these high-end products have microphones that are always active. In other cases, you may have used the device to record messages that can be retrieved by the company.

How do you answer why should we hire you as a virtual assistant? ›

I'm a hard worker with a positive outlook, and I would love to listen to your ideas and help you refine them. With me working on the projects you've assigned, you would have the breathing room to focus on creating a substantial forward movement in your business.

What kind of questions does the VA ask during an interview? ›

Most Common Veteran Interview Questions
  • Tell me about a time you had a disagreement with a co-worker.
  • Tell me about a time you had to complete a job with inadequate resources.
  • Have you ever had to commit an unsafe act in order to get a job done?
  • What is your vision for your future here at this company?

Why do you want to be a virtual assistant best answer? ›

Why do you want to be a Virtual Assistant? “I want to be a Virtual Assistant because I feel I work the best when I am given set tasks and responsibilities I need to work on each day and when I am working towards a defined objective.

How do you answer why should we hire you best answer? ›

The first thing you should do when answering “why should we hire you?” is to highlight any skills and professional experience that are relevant to the position you're applying for. To make your answer all the more valid, make sure to always back up everything you say with examples, experiences, and achievements.

How do you introduce yourself as a virtual assistant? ›

Introduce yourself and what you do.

Select and employ the services you utilize frequently. Ex. Greetings. I'm Leigh, and I'm a virtual assistant that helps small businesses strengthen their brand and overall online presence through various digital marketing strategies.

What are employers looking for in a virtual assistant? ›

Again, having basic IT skills and being proficient in Microsoft programs is a plus. Some other important things to look for in a VA include attention to detail, a love for learning new things, good customer service skills, and reliability.

What disqualifies you from VA benefits? ›

If you've received an other than honorable, bad conduct, or dishonorable discharge, you may not be eligible for VA benefits.

What does the VA look for in anxiety? ›

A VA rating for anxiety, depression, and/or adjustment disorder is stated as a percentage, from 0% to 100%. These ratings mainly look at your occupational and social functioning, although your ability to take care of yourself (hygiene, grooming) is also considered.

Is it hard to get hired by the VA? ›

It is fairly hard to get a job at the VA hospital. Your stiff competition for these coveted government jobs will include veterans, healthcare professionals, administrators, and other specialists.

What's your three greatest strength as a virtual assistant? ›

8 Qualities For A Successful Virtual Assistant Relationship
  1. Attitude. Assess their willingness to put in the time and effort to become your virtual assistant in order to do a good job. ...
  2. Communication. ...
  3. Passion. ...
  4. Competencies. ...
  5. Attention to Details. ...
  6. Willingness to Learn. ...
  7. Good Listener. ...
  8. Personality.

What are your weaknesses as a virtual assistant? ›

The main issue with virtual assistants is that there is no way to communicate face to face. It is entirely an online job that is carried out from the employee's preferred location.

Is it OK to look at notes during a video interview? ›

Turner recommends having only a few quick notes in front of you and glancing at them sparingly. Write down key figures and other small snippets, not whole answers. “You don't want to sound like you're just reading,” she says. Meanwhile, Eonnet discourages keeping any notes in front of you at all.

Should I look at the camera during virtual interview? ›

Maintain Eye Contact

Looking directly at your interviewer is essential during any interview. But some job seekers might find it challenging to know exactly where to look while they are talking during a video interview. Make it a point to look directly into the camera, rather than your computer screen.

Videos

1. Regression Analysis | Regression Coefficients | Machine Learning For Beginners | Great Learning
(Great Learning)
2. Halloween Horror Nights 10 RIP Tour with iconic Tour Guide | USS HHN10
(Dejiki.com)
3. MAY 17, 2022 | City Council
(City of San Jose, CA)
4. DEC 8, 2022 | Neighborhood Services & Education Committee
(City of San Jose, CA)
5. DEC 13, 2022 | City Council Morning Session
(City of San Jose, CA)
6. OCT 18, 2022 | City Council
(City of San Jose, CA)
Top Articles
Latest Posts
Article information

Author: Pres. Lawanda Wiegand

Last Updated: 12/08/2022

Views: 6256

Rating: 4 / 5 (51 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Pres. Lawanda Wiegand

Birthday: 1993-01-10

Address: Suite 391 6963 Ullrich Shore, Bellefort, WI 01350-7893

Phone: +6806610432415

Job: Dynamic Manufacturing Assistant

Hobby: amateur radio, Taekwondo, Wood carving, Parkour, Skateboarding, Running, Rafting

Introduction: My name is Pres. Lawanda Wiegand, I am a inquisitive, helpful, glamorous, cheerful, open, clever, innocent person who loves writing and wants to share my knowledge and understanding with you.