Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Question

Estou editando um código do app Vizer para o meu site, ele é escrito em JS.  Gostaria de saber se tem alguém que possa me auxiliar nos códigos, pois só programo em PHP.

 

Spoiler

! function(e, t, i, o) {
    var n = e(t);
    e.fn.lazyload = function(r) {
        function f() {
            var t = 0;
            l.each(function() {
                var i = e(this);
                if (!h.skip_invisible || i.is(":visible"))
                    if (e.abovethetop(this, h) || e.leftofbegin(this, h));
                else if (e.belowthefold(this, h) || e.rightoffold(this, h)) {
                    if (++t > h.failure_limit) return !1
                } else i.trigger("appear"), t = 0
        })
        }
        var a, l = this,
        h = {
            threshold: 0,
            failure_limit: 0,
            event: "scroll",
            effect: "show",
            container: t,
            data_attribute: "original",
            skip_invisible: !1,
            appear: null,
            load: null,
            placeholder: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"
        };
        return r && (o !== r.failurelimit && (r.failure_limit = r.failurelimit, delete r.failurelimit), o !== r.effectspeed && (r.effect_speed = r.effectspeed, delete r.effectspeed), e.extend(h, r)), a = h.container === o || h.container === t ? n : e(h.container), 0 === h.event.indexOf("scroll") && a.bind(h.event, function() {
            return f()
        }), this.each(function() {
            var t = this,
            i = e(t);
            t.loaded = !1, (i.attr("src") === o || i.attr("src") === !1) && i.is("img") && i.attr("src", h.placeholder), i.one("appear", function() {
                if (!this.loaded) {
                    if (h.appear) {
                        var o = l.length;
                        h.appear.call(t, o, h)
                    }
                    e("<img />").bind("load", function() {
                        var o = i.attr("data-" + h.data_attribute);
                        i.hide(), i.is("img") ? i.attr("src", o) : i.css("background-image", "url('" + o + "')"), i[h.effect](h.effect_speed), t.loaded = !0;
                        var n = e.grep(l, function(e) {
                            return !e.loaded
                        });
                        if (l = e(n), h.load) {
                            var r = l.length;
                            h.load.call(t, r, h)
                        }
                    }).attr("src", i.attr("data-" + h.data_attribute))
                }
            }), 0 !== h.event.indexOf("scroll") && i.bind(h.event, function() {
                t.loaded || i.trigger("appear")
            })
        }), n.bind("resize", function() {
            f()
        }), /(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion) && n.bind("pageshow", function(t) {
            t.originalEvent && t.originalEvent.persisted && l.each(function() {
                e(this).trigger("appear")
            })
        }), e(i).ready(function() {
            f()
        }), this
    }, e.belowthefold = function(i, r) {
        var f;
        return f = r.container === o || r.container === t ? (t.innerHeight ? t.innerHeight : n.height()) + n.scrollTop() : e(r.container).offset().top + e(r.container).height(), f <= e(i).offset().top - r.threshold
    }, e.rightoffold = function(i, r) {
        var f;
        return f = r.container === o || r.container === t ? n.width() + n.scrollLeft() : e(r.container).offset().left + e(r.container).width(), f <= e(i).offset().left - r.threshold
    }, e.abovethetop = function(i, r) {
        var f;
        return f = r.container === o || r.container === t ? n.scrollTop() : e(r.container).offset().top, f >= e(i).offset().top + r.threshold + e(i).height()
    }, e.leftofbegin = function(i, r) {
        var f;
        return f = r.container === o || r.container === t ? n.scrollLeft() : e(r.container).offset().left, f >= e(i).offset().left + r.threshold + e(i).width()
    }, e.inviewport = function(t, i) {
        return !(e.rightoffold(t, i) || e.leftofbegin(t, i) || e.belowthefold(t, i) || e.abovethetop(t, i))
    }, e.extend(e.expr[":"], {
        "below-the-fold": function(t) {
            return e.belowthefold(t, {
                threshold: 0
            })
        },
        "above-the-top": function(t) {
            return !e.belowthefold(t, {
                threshold: 0
            })
        },
        "right-of-screen": function(t) {
            return e.rightoffold(t, {
                threshold: 0
            })
        },
        "left-of-screen": function(t) {
            return !e.rightoffold(t, {
                threshold: 0
            })
        },
        "in-viewport": function(t) {
            return e.inviewport(t, {
                threshold: 0
            })
        },
        "above-the-fold": function(t) {
            return !e.belowthefold(t, {
                threshold: 0
            })
        },
        "right-of-fold": function(t) {
            return e.rightoffold(t, {
                threshold: 0
            })
        },
        "left-of-fold": function(t) {
            return !e.rightoffold(t, {
                threshold: 0
            })
        }
    })
}(jQuery, window, document);
! function(t, e, i, s) {
    function n(e, i) {
        this.settings = null, this.options = t.extend({}, n.Defaults, i), this.$element = t(e), this.drag = t.extend({}, p), this.state = t.extend({}, u), this.e = t.extend({}, g), 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._invalidated = {}, this._pipe = [], t.each(n.Plugins, t.proxy(function(t, e) {
            this._plugins[t[0].toLowerCase() + t.slice(1)] = new e(this)
        }, this)), t.each(n.Pipe, t.proxy(function(e, i) {
            this._pipe.push({
                filter: i.filter,
                run: t.proxy(i.run, this)
            })
        }, this)), this.setup(), this.initialize()
    }

    function o(t) {
        if (t.touches !== s) return {
            x: t.touches[0].pageX,
            y: t.touches[0].pageY
        };
        if (t.touches === s) {
            if (t.pageX !== s) return {
                x: t.pageX,
                y: t.pageY
            };
            if (t.pageX === s) return {
                x: t.clientX,
                y: t.clientY
            }
        }
    }

    function r(t) {
        var e, s, n = i.createElement("div"),
        o = t;
        for (e in o)
            if (s = o[e], "undefined" != typeof n.style) return n = null, [s, e];
        return [!1]
    }

    function a() {
        return r(["transition", "WebkitTransition", "MozTransition", "OTransition"])[1]
    }

    function h() {
        return r(["transform", "WebkitTransform", "MozTransform", "OTransform", "msTransform"])[0]
    }

    function l() {
        return r(["perspective", "webkitPerspective", "MozPerspective", "OPerspective", "MsPerspective"])[0]
    }

    function c() {
        return "ontouchstart" in e || !!navigator.msMaxTouchPoints
    }

    function d() {
        return e.navigator.msPointerEnabled
    }
    var p, u, g;
    p = {
        start: 0,
        startX: 0,
        startY: 0,
        current: 0,
        currentX: 0,
        currentY: 0,
        offsetX: 0,
        offsetY: 0,
        distance: null,
        startTime: 0,
        endTime: 0,
        updatedX: 0,
        targetEl: null
    }, u = {
        isTouch: !1,
        isScrolling: !1,
        isSwiping: !1,
        direction: !1,
        inMotion: !1
    }, g = {
        _onDragStart: null,
        _onDragMove: null,
        _onDragEnd: null,
        _transitionEnd: null,
        _resizer: null,
        _responsiveCall: null,
        _goToLoop: null,
        _checkVisibile: null
    }, n.Defaults = {
        items: 3,
        loop: !1,
        center: !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: e,
        responsiveClass: !1,
        fallbackEasing: "swing",
        info: !1,
        nestedItemSelector: !1,
        itemElement: "div",
        stageElement: "div",
        themeClass: "owl-theme",
        baseClass: "owl-carousel",
        itemClass: "owl-item",
        centerClass: "center",
        activeClass: "active"
    }, n.Width = {
        Default: "default",
        Inner: "inner",
        Outer: "outer"
    }, n.Plugins = {}, n.Pipe = [{
        filter: ["width", "items", "settings"],
        run: function(t) {
            t.current = this._items && this._items[this.relative(this._current)]
        }
    }, {
        filter: ["items", "settings"],
        run: function() {
            var t = this._clones,
            e = this.$stage.children(".cloned");
            (e.length !== t.length || !this.settings.loop && t.length > 0) && (this.$stage.children(".cloned").remove(), this._clones = [])
        }
    }, {
        filter: ["items", "settings"],
        run: function() {
            var t, e, i = this._clones,
            s = this._items,
            n = this.settings.loop ? i.length - Math.max(2 * this.settings.items, 4) : 0;
            for (t = 0, e = Math.abs(n / 2); e > t; t++) n > 0 ? (this.$stage.children().eq(s.length + i.length - 1).remove(), i.pop(), this.$stage.children().eq(0).remove(), i.pop()) : (i.push(i.length / 2), this.$stage.append(s[i[i.length - 1]].clone().addClass("cloned")), i.push(s.length - 1 - (i.length - 1) / 2), this.$stage.prepend(s[i[i.length - 1]].clone().addClass("cloned")))
        }
}, {
    filter: ["width", "items", "settings"],
    run: function() {
        var t, e, i, s = this.settings.rtl ? 1 : -1,
        n = (this.width() / this.settings.items).toFixed(3),
        o = 0;
        for (this._coordinates = [], e = 0, i = this._clones.length + this._items.length; i > e; e++) t = this._mergers[this.relative(e)], t = this.settings.mergeFit && Math.min(t, this.settings.items) || t, o += (this.settings.autoWidth ? this._items[this.relative(e)].width() + this.settings.margin : n * t) * s, this._coordinates.push(o)
    }
}, {
    filter: ["width", "items", "settings"],
    run: function() {
        var e, i, s = (this.width() / this.settings.items).toFixed(3),
        n = {
            width: Math.abs(this._coordinates[this._coordinates.length - 1]) + 2 * this.settings.stagePadding,
            "padding-left": this.settings.stagePadding || "",
            "padding-right": this.settings.stagePadding || ""
        };
        if (this.$stage.css(n), n = {
            width: this.settings.autoWidth ? "auto" : s - this.settings.margin
        }, n[this.settings.rtl ? "margin-left" : "margin-right"] = this.settings.margin, !this.settings.autoWidth && t.grep(this._mergers, function(t) {
            return t > 1
        }).length > 0)
            for (e = 0, i = this._coordinates.length; i > e; e++) n.width = Math.abs(this._coordinates[e]) - Math.abs(this._coordinates[e - 1] || 0) - this.settings.margin, this.$stage.children().eq(e).css(n);
                else this.$stage.children().css(n)
            }
    }, {
        filter: ["width", "items", "settings"],
        run: function(t) {
            t.current && this.reset(this.$stage.children().index(t.current))
        }
    }, {
        filter: ["position"],
        run: function() {
            this.animate(this.coordinates(this._current))
        }
    }, {
        filter: ["width", "position", "items", "settings"],
        run: function() {
            var t, e, i, s, n = this.settings.rtl ? 1 : -1,
            o = 2 * this.settings.stagePadding,
            r = this.coordinates(this.current()) + o,
            a = r + this.width() * n,
            h = [];
            for (i = 0, s = this._coordinates.length; s > i; i++) t = this._coordinates[i - 1] || 0, e = Math.abs(this._coordinates) + o * n, (this.op(t, "<=", r) && this.op(t, ">", a) || this.op(e, "<", r) && this.op(e, ">", a)) && h.push(i);
                this.$stage.children("." + this.settings.activeClass).removeClass(this.settings.activeClass), this.$stage.children(":eq(" + h.join("), :eq(") + ")").addClass(this.settings.activeClass), this.settings.center && (this.$stage.children("." + this.settings.centerClass).removeClass(this.settings.centerClass), this.$stage.children().eq(this.current()).addClass(this.settings.centerClass))
        }
    }], n.prototype.initialize = function() {
        if (this.trigger("initialize"), this.$element.addClass(this.settings.baseClass).addClass(this.settings.themeClass).toggleClass("owl-rtl", this.settings.rtl), this.browserSupport(), this.settings.autoWidth && this.state.imagesLoaded !== !0) {
            var e, i, n;
            if (e = this.$element.find("img"), i = this.settings.nestedItemSelector ? "." + this.settings.nestedItemSelector : s, n = this.$element.children(i).width(), e.length && 0 >= n) return this.preloadAutoWidthImages(e), !1
        }
    this.$element.addClass("owl-loading"), this.$stage = t("<" + this.settings.stageElement + ' class="owl-stage"/>').wrap('<div class="owl-stage-outer">'), this.$element.append(this.$stage.parent()), this.replace(this.$element.children().not(this.$stage.parent())), this._width = this.$element.width(), this.refresh(), this.$element.removeClass("owl-loading").addClass("owl-loaded"), this.eventsCall(), this.internalEvents(), this.addTriggerableEvents(), this.trigger("initialized")
}, n.prototype.setup = function() {
    var e = this.viewport(),
    i = this.options.responsive,
    s = -1,
    n = null;
    i ? (t.each(i, function(t) {
        e >= t && t > s && (s = Number(t))
    }), n = t.extend({}, this.options, i), delete n.responsive, n.responsiveClass && this.$element.attr("class", function(t, e) {
        return e.replace(/\b owl-responsive-\S+/g, "")
    }).addClass("owl-responsive-" + s)) : n = t.extend({}, this.options), (null === this.settings || this._breakpoint !== s) && (this.trigger("change", {
        property: {
            name: "settings",
            value: n
        }
    }), this._breakpoint = s, this.settings = n, this.invalidate("settings"), this.trigger("changed", {
        property: {
            name: "settings",
            value: this.settings
        }
    }))
}, n.prototype.optionsLogic = function() {
    this.$element.toggleClass("owl-center", this.settings.center), this.settings.loop && this._items.length < this.settings.items && (this.settings.loop = !1), this.settings.autoWidth && (this.settings.stagePadding = !1, this.settings.merge = !1)
}, n.prototype.prepare = function(e) {
    var i = this.trigger("prepare", {
        content: e
    });
    return i.data || (i.data = t("<" + this.settings.itemElement + "/>").addClass(this.settings.itemClass).append(e)), this.trigger("prepared", {
        content: i.data
    }), i.data
}, n.prototype.update = function() {
    for (var e = 0, i = this._pipe.length, s = t.proxy(function(t) {
        return this[t]
    }, this._invalidated), n = {}; i > e;)(this._invalidated.all || t.grep(this._pipe[e].filter, s).length > 0) && this._pipe[e].run(n), e++;
    this._invalidated = {}
}, n.prototype.width = function(t) {
    switch (t = t || n.Width.Default) {
        case n.Width.Inner:
        case n.Width.Outer:
        return this._width;
        default:
        return this._width - 2 * this.settings.stagePadding + this.settings.margin
    }
}, n.prototype.refresh = function() {
    if (0 === this._items.length) return !1;
    (new Date).getTime();
    this.trigger("refresh"), this.setup(), this.optionsLogic(), this.$stage.addClass("owl-refresh"), this.update(), this.$stage.removeClass("owl-refresh"), this.state.orientation = e.orientation, this.watchVisibility(), this.trigger("refreshed")
}, n.prototype.eventsCall = function() {
    this.e._onDragStart = t.proxy(function(t) {
        this.onDragStart(t)
    }, this), this.e._onDragMove = t.proxy(function(t) {
        this.onDragMove(t)
    }, this), this.e._onDragEnd = t.proxy(function(t) {
        this.onDragEnd(t)
    }, this), this.e._onResize = t.proxy(function(t) {
        this.onResize(t)
    }, this), this.e._transitionEnd = t.proxy(function(t) {
        this.transitionEnd(t)
    }, this), this.e._preventClick = t.proxy(function(t) {
        this.preventClick(t)
    }, this)
}, n.prototype.onThrottledResize = function() {
    e.clearTimeout(this.resizeTimer), this.resizeTimer = e.setTimeout(this.e._onResize, this.settings.responsiveRefreshRate)
}, n.prototype.onResize = function() {
    return this._items.length ? this._width === this.$element.width() ? !1 : this.trigger("resize").isDefaultPrevented() ? !1 : (this._width = this.$element.width(), this.invalidate("width"), this.refresh(), void this.trigger("resized")) : !1
}, n.prototype.eventsRouter = function(t) {
    var e = t.type;
    "mousedown" === e || "touchstart" === e ? this.onDragStart(t) : "mousemove" === e || "touchmove" === e ? this.onDragMove(t) : "mouseup" === e || "touchend" === e ? this.onDragEnd(t) : "touchcancel" === e && this.onDragEnd(t)
}, n.prototype.internalEvents = function() {
    var i = (c(), d());
    this.settings.mouseDrag ? (this.$stage.on("mousedown", t.proxy(function(t) {
        this.eventsRouter(t)
    }, this)), this.$stage.on("dragstart", function() {
        return !1
    }), this.$stage.get(0).onselectstart = function() {
        return !1
    }) : this.$element.addClass("owl-text-select-on"), this.settings.touchDrag && !i && this.$stage.on("touchstart touchcancel", t.proxy(function(t) {
        this.eventsRouter(t)
    }, this)), this.transitionEndVendor && this.on(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd, !1), this.settings.responsive !== !1 && this.on(e, "resize", t.proxy(this.onThrottledResize, this))
}, n.prototype.onDragStart = function(s) {
    var n, r, a, h;
    if (n = s.originalEvent || s || e.event, 3 === n.which || this.state.isTouch) return !1;
    if ("mousedown" === n.type && this.$stage.addClass("owl-grab"), this.trigger("drag"), this.drag.startTime = (new Date).getTime(), this.speed(0), this.state.isTouch = !0, this.state.isScrolling = !1, this.state.isSwiping = !1, this.drag.distance = 0, r = o(n).x, a = o(n).y, this.drag.offsetX = this.$stage.position().left, this.drag.offsetY = this.$stage.position().top, this.settings.rtl && (this.drag.offsetX = this.$stage.position().left + this.$stage.width() - this.width() + this.settings.margin), this.state.inMotion && this.support3d) h = this.getTransformProperty(), this.drag.offsetX = h, this.animate(h), this.state.inMotion = !0;
    else if (this.state.inMotion && !this.support3d) return this.state.inMotion = !1, !1;
    this.drag.startX = r - this.drag.offsetX, this.drag.startY = a - this.drag.offsetY, this.drag.start = r - this.drag.startX, this.drag.targetEl = n.target || n.srcElement, this.drag.updatedX = this.drag.start, ("IMG" === this.drag.targetEl.tagName || "A" === this.drag.targetEl.tagName) && (this.drag.targetEl.draggable = !1), t(i).on("mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents", t.proxy(function(t) {
        this.eventsRouter(t)
    }, this))
}, n.prototype.onDragMove = function(t) {
    var i, n, r, a, h, l;
    this.state.isTouch && (this.state.isScrolling || (i = t.originalEvent || t || e.event, n = o(i).x, r = o(i).y, this.drag.currentX = n - this.drag.startX, this.drag.currentY = r - this.drag.startY, this.drag.distance = this.drag.currentX - this.drag.offsetX, this.drag.distance < 0 ? this.state.direction = this.settings.rtl ? "right" : "left" : this.drag.distance > 0 && (this.state.direction = this.settings.rtl ? "left" : "right"), this.settings.loop ? this.op(this.drag.currentX, ">", this.coordinates(this.minimum())) && "right" === this.state.direction ? this.drag.currentX -= (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length) : this.op(this.drag.currentX, "<", this.coordinates(this.maximum())) && "left" === this.state.direction && (this.drag.currentX += (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length)) : (a = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()), h = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()), l = this.settings.pullDrag ? this.drag.distance / 5 : 0, this.drag.currentX = Math.max(Math.min(this.drag.currentX, a + l), h + l)), (this.drag.distance > 8 || this.drag.distance < -8) && (i.preventDefault !== s ? i.preventDefault() : i.returnValue = !1, this.state.isSwiping = !0), this.drag.updatedX = this.drag.currentX, (this.drag.currentY > 16 || this.drag.currentY < -16) && this.state.isSwiping === !1 && (this.state.isScrolling = !0, this.drag.updatedX = this.drag.start), this.animate(this.drag.updatedX)))
}, n.prototype.onDragEnd = function(e) {
    var s, n, o;
    if (this.state.isTouch) {
        if ("mouseup" === e.type && this.$stage.removeClass("owl-grab"), this.trigger("dragged"), this.drag.targetEl.removeAttribute("draggable"), this.state.isTouch = !1, this.state.isScrolling = !1, this.state.isSwiping = !1, 0 === this.drag.distance && this.state.inMotion !== !0) return this.state.inMotion = !1, !1;
        this.drag.endTime = (new Date).getTime(), s = this.drag.endTime - this.drag.startTime, n = Math.abs(this.drag.distance), (n > 3 || s > 300) && this.removeClick(this.drag.targetEl), o = this.closest(this.drag.updatedX), this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed), this.current(o), this.invalidate("position"), this.update(), this.settings.pullDrag || this.drag.updatedX !== this.coordinates(o) || this.transitionEnd(), this.drag.distance = 0, t(i).off(".owl.dragEvents")
    }
}, n.prototype.removeClick = function(i) {
    this.drag.targetEl = i, t(i).on("click.preventClick", this.e._preventClick), e.setTimeout(function() {
        t(i).off("click.preventClick")
    }, 300)
}, n.prototype.preventClick = function(e) {
    e.preventDefault ? e.preventDefault() : e.returnValue = !1, e.stopPropagation && e.stopPropagation(), t(e.target).off("click.preventClick")
}, n.prototype.getTransformProperty = function() {
    var t, i;
    return t = e.getComputedStyle(this.$stage.get(0), null).getPropertyValue(this.vendorName + "transform"), t = t.replace(/matrix(3d)?\(|\)/g, "").split(","), i = 16 === t.length, i !== !0 ? t[4] : t[12]
}, n.prototype.closest = function(e) {
    var i = -1,
    s = 30,
    n = this.width(),
    o = this.coordinates();
    return this.settings.freeDrag || t.each(o, t.proxy(function(t, r) {
        return e > r - s && r + s > e ? i = t : this.op(e, "<", r) && this.op(e, ">", o[t + 1] || r - n) && (i = "left" === this.state.direction ? t + 1 : t), -1 === i
    }, this)), this.settings.loop || (this.op(e, ">", o[this.minimum()]) ? i = e = this.minimum() : this.op(e, "<", o[this.maximum()]) && (i = e = this.maximum())), i
}, n.prototype.animate = function(e) {
    this.trigger("translate"), this.state.inMotion = this.speed() > 0, this.support3d ? this.$stage.css({
        transform: "translate3d(" + e + "px,0px, 0px)",
        transition: this.speed() / 1e3 + "s"
    }) : this.state.isTouch ? this.$stage.css({
        left: e + "px"
    }) : this.$stage.animate({
        left: e
    }, this.speed() / 1e3, this.settings.fallbackEasing, t.proxy(function() {
        this.state.inMotion && this.transitionEnd()
    }, this))
}, n.prototype.current = function(t) {
    if (t === s) return this._current;
    if (0 === this._items.length) return s;
    if (t = this.normalize(t), this._current !== t) {
        var e = this.trigger("change", {
            property: {
                name: "position",
                value: t
            }
        });
        e.data !== s && (t = this.normalize(e.data)), this._current = t, this.invalidate("position"), this.trigger("changed", {
            property: {
                name: "position",
                value: this._current
            }
        })
    }
    return this._current
}, n.prototype.invalidate = function(t) {
    this._invalidated[t] = !0
}, n.prototype.reset = function(t) {
    t = this.normalize(t), t !== s && (this._speed = 0, this._current = t, this.suppress(["translate", "translated"]), this.animate(this.coordinates(t)), this.release(["translate", "translated"]))
}, n.prototype.normalize = function(e, i) {
    var n = i ? this._items.length : this._items.length + this._clones.length;
    return !t.isNumeric(e) || 1 > n ? s : e = this._clones.length ? (e % n + n) % n : Math.max(this.minimum(i), Math.min(this.maximum(i), e))
}, n.prototype.relative = function(t) {
    return t = this.normalize(t), t -= this._clones.length / 2, this.normalize(t, !0)
}, n.prototype.maximum = function(t) {
    var e, i, s, n = 0,
    o = this.settings;
    if (t) return this._items.length - 1;
    if (!o.loop && o.center) e = this._items.length - 1;
    else if (o.loop || o.center)
        if (o.loop || o.center) e = this._items.length + o.items;
    else {
        if (!o.autoWidth && !o.merge) throw "Can not detect maximum absolute position.";
        for (revert = o.rtl ? 1 : -1, i = this.$stage.width() - this.$element.width();
            (s = this.coordinates(n)) && !(s * revert >= i);) e = ++n
    }
else e = this._items.length - o.items;
return e
}, n.prototype.minimum = function(t) {
    return t ? 0 : this._clones.length / 2
}, n.prototype.items = function(t) {
    return t === s ? this._items.slice() : (t = this.normalize(t, !0), this._items[t])
}, n.prototype.mergers = function(t) {
    return t === s ? this._mergers.slice() : (t = this.normalize(t, !0), this._mergers[t])
}, n.prototype.clones = function(e) {
    var i = this._clones.length / 2,
    n = i + this._items.length,
    o = function(t) {
        return t % 2 === 0 ? n + t / 2 : i - (t + 1) / 2
    };
    return e === s ? t.map(this._clones, function(t, e) {
        return o(e)
    }) : t.map(this._clones, function(t, i) {
        return t === e ? o(i) : null
    })
}, n.prototype.speed = function(t) {
    return t !== s && (this._speed = t), this._speed
}, n.prototype.coordinates = function(e) {
    var i = null;
    return e === s ? t.map(this._coordinates, t.proxy(function(t, e) {
        return this.coordinates(e)
    }, this)) : (this.settings.center ? (i = this._coordinates[e], i += (this.width() - i + (this._coordinates[e - 1] || 0)) / 2 * (this.settings.rtl ? -1 : 1)) : i = this._coordinates[e - 1] || 0, i)
}, n.prototype.duration = function(t, e, i) {
    return Math.min(Math.max(Math.abs(e - t), 1), 6) * Math.abs(i || this.settings.smartSpeed)
}, n.prototype.to = function(i, s) {
    if (this.settings.loop) {
        var n = i - this.relative(this.current()),
        o = this.current(),
        r = this.current(),
        a = this.current() + n,
        h = 0 > r - a ? !0 : !1,
        l = this._clones.length + this._items.length;
        a < this.settings.items && h === !1 ? (o = r + this._items.length, this.reset(o)) : a >= l - this.settings.items && h === !0 && (o = r - this._items.length, this.reset(o)), e.clearTimeout(this.e._goToLoop), this.e._goToLoop = e.setTimeout(t.proxy(function() {
            this.speed(this.duration(this.current(), o + n, s)), this.current(o + n), this.update()
        }, this), 30)
    } else this.speed(this.duration(this.current(), i, s)), this.current(i), this.update()
}, n.prototype.next = function(t) {
    t = t || !1, this.to(this.relative(this.current()) + 1, t)
}, n.prototype.prev = function(t) {
    t = t || !1, this.to(this.relative(this.current()) - 1, t)
}, n.prototype.transitionEnd = function(t) {
    return t !== s && (t.stopPropagation(), (t.target || t.srcElement || t.originalTarget) !== this.$stage.get(0)) ? !1 : (this.state.inMotion = !1, void this.trigger("translated"))
}, n.prototype.viewport = function() {
    var s;
    if (this.options.responsiveBaseElement !== e) s = t(this.options.responsiveBaseElement).width();
    else if (e.innerWidth) s = e.innerWidth;
    else {
        if (!i.documentElement || !i.documentElement.clientWidth) throw "Can not detect viewport width.";
        s = i.documentElement.clientWidth
    }
    return s
}, n.prototype.replace = function(e) {
    this.$stage.empty(), this._items = [], e && (e = e instanceof jQuery ? e : t(e)), this.settings.nestedItemSelector && (e = e.find("." + this.settings.nestedItemSelector)), e.filter(function() {
        return 1 === this.nodeType
    }).each(t.proxy(function(t, e) {
        e = this.prepare(e), this.$stage.append(e), this._items.push(e), this._mergers.push(1 * e.find("[data-merge]").andSelf("[data-merge]").attr("data-merge") || 1)
    }, this)), this.reset(t.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0), this.invalidate("items")
}, n.prototype.add = function(t, e) {
    e = e === s ? this._items.length : this.normalize(e, !0), this.trigger("add", {
        content: t,
        position: e
    }), 0 === this._items.length || e === this._items.length ? (this.$stage.append(t), this._items.push(t), this._mergers.push(1 * t.find("[data-merge]").andSelf("[data-merge]").attr("data-merge") || 1)) : (this._items[e].before(t), this._items.splice(e, 0, t), this._mergers.splice(e, 0, 1 * t.find("[data-merge]").andSelf("[data-merge]").attr("data-merge") || 1)), this.invalidate("items"), this.trigger("added", {
        content: t,
        position: e
    })
}, n.prototype.remove = function(t) {
    t = this.normalize(t, !0), t !== s && (this.trigger("remove", {
        content: this._items[t],
        position: t
    }), this._items[t].remove(), this._items.splice(t, 1), this._mergers.splice(t, 1), this.invalidate("items"), this.trigger("removed", {
        content: null,
        position: t
    }))
}, n.prototype.addTriggerableEvents = function() {
    var e = t.proxy(function(e, i) {
        return t.proxy(function(t) {
            t.relatedTarget !== this && (this.suppress(), e.apply(this, [].slice.call(arguments, 1)), this.release())
        }, this)
    }, this);
    t.each({
        next: this.next,
        prev: this.prev,
        to: this.to,
        destroy: this.destroy,
        refresh: this.refresh,
        replace: this.replace,
        add: this.add,
        remove: this.remove
    }, t.proxy(function(t, i) {
        this.$element.on(t + ".owl.carousel", e(i, t + ".owl.carousel"))
    }, this))
}, n.prototype.watchVisibility = function() {
    function i(t) {
        return t.offsetWidth > 0 && t.offsetHeight > 0
    }

    function s() {
        i(this.$element.get(0)) && (this.$element.removeClass("owl-hidden"), this.refresh(), e.clearInterval(this.e._checkVisibile))
    }
    i(this.$element.get(0)) || (this.$element.addClass("owl-hidden"), e.clearInterval(this.e._checkVisibile), this.e._checkVisibile = e.setInterval(t.proxy(s, this), 500))
}, n.prototype.preloadAutoWidthImages = function(e) {
    var i, s, n, o;
    i = 0, s = this, e.each(function(r, a) {
        n = t(a), o = new Image, o.onload = function() {
            i++, n.attr("src", o.src), n.css("opacity", 1), i >= e.length && (s.state.imagesLoaded = !0, s.initialize())
        }, o.src = n.attr("src") || n.attr("data-src") || n.attr("data-src-retina")
    })
}, n.prototype.destroy = function() {
    this.$element.hasClass(this.settings.themeClass) && this.$element.removeClass(this.settings.themeClass), this.settings.responsive !== !1 && t(e).off("resize.owl.carousel"), this.transitionEndVendor && this.off(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd);
    for (var s in this._plugins) this._plugins.destroy();
        (this.settings.mouseDrag || this.settings.touchDrag) && (this.$stage.off("mousedown touchstart touchcancel"), t(i).off(".owl.dragEvents"), this.$stage.get(0).onselectstart = function() {}, this.$stage.off("dragstart", function() {
            return !1
        })), this.$element.off(".owl"), this.$stage.children(".cloned").remove(), this.e = null, this.$element.removeData("owlCarousel"), this.$stage.children().contents().unwrap(), this.$stage.children().unwrap(), this.$stage.unwrap()
}, n.prototype.op = function(t, e, i) {
    var s = this.settings.rtl;
    switch (e) {
        case "<":
        return s ? t > i : i > t;
        case ">":
        return s ? i > t : t > i;
        case ">=":
        return s ? i >= t : t >= i;
        case "<=":
        return s ? t >= i : i >= t
    }
}, n.prototype.on = function(t, e, i, s) {
    t.addEventListener ? t.addEventListener(e, i, s) : t.attachEvent && t.attachEvent("on" + e, i)
}, n.prototype.off = function(t, e, i, s) {
    t.removeEventListener ? t.removeEventListener(e, i, s) : t.detachEvent && t.detachEvent("on" + e, i)
}, n.prototype.trigger = function(e, i, s) {
    var n = {
        item: {
            count: this._items.length,
            index: this.current()
        }
    },
    o = t.camelCase(t.grep(["on", e, s], function(t) {
        return t
    }).join("-").toLowerCase()),
    r = t.Event([e, "owl", s || "carousel"].join(".").toLowerCase(), t.extend({
        relatedTarget: this
    }, n, i));
    return this._supress[e] || (t.each(this._plugins, function(t, e) {
        e.onTrigger && e.onTrigger(r)
    }), this.$element.trigger(r), this.settings && "function" == typeof this.settings[o] && this.settings[o].apply(this, r)), r
}, n.prototype.suppress = function(e) {
    t.each(e, t.proxy(function(t, e) {
        this._supress[e] = !0
    }, this))
}, n.prototype.release = function(e) {
    t.each(e, t.proxy(function(t, e) {
        delete this._supress[e]
    }, this))
}, n.prototype.browserSupport = function() {
    if (this.support3d = l(), this.support3d) {
        this.transformVendor = h();
        var t = ["transitionend", "webkitTransitionEnd", "transitionend", "oTransitionEnd"];
        this.transitionEndVendor = t[a()], this.vendorName = this.transformVendor.replace(/Transform/i, ""), this.vendorName = "" !== this.vendorName ? "-" + this.vendorName.toLowerCase() + "-" : ""
    }
    this.state.orientation = e.orientation
}, t.fn.owlCarousel = function(e) {
    return this.each(function() {
        t(this).data("owlCarousel") || t(this).data("owlCarousel", new n(this, e))
    })
}, t.fn.owlCarousel.Constructor = n
}(window.Zepto || window.jQuery, window, document),
function(t, e, i, s) {
    var n = function(e) {
        this._core = e, this._loaded = [], this._handlers = {
            "initialized.owl.carousel change.owl.carousel": t.proxy(function(e) {
                if (e.namespace && this._core.settings && this._core.settings.lazyLoad && (e.property && "position" == e.property.name || "initialized" == e.type))
                    for (var i = this._core.settings, s = i.center && Math.ceil(i.items / 2) || i.items, n = i.center && -1 * s || 0, o = (e.property && e.property.value || this._core.current()) + n, r = this._core.clones().length, a = t.proxy(function(t, e) {
                        this.load(e)
                    }, this); n++ < s;) this.load(r / 2 + this._core.relative(o)), r && t.each(this._core.clones(this._core.relative(o++)), a)
                }, this)
        }, this._core.options = t.extend({}, n.Defaults, this._core.options), this._core.$element.on(this._handlers)
    };
    n.Defaults = {
        lazyLoad: !1
    }, n.prototype.load = function(i) {
        var s = this._core.$stage.children().eq(i),
        n = s && s.find(".owl-lazy");
        !n || t.inArray(s.get(0), this._loaded) > -1 || (n.each(t.proxy(function(i, s) {
            var n, o = t(s),
            r = e.devicePixelRatio > 1 && o.attr("data-src-retina") || o.attr("data-src");
            this._core.trigger("load", {
                element: o,
                url: r
            }, "lazy"), o.is("img") ? o.one("load.owl.lazy", t.proxy(function() {
                o.css("opacity", 1), this._core.trigger("loaded", {
                    element: o,
                    url: r
                }, "lazy")
            }, this)).attr("src", r) : (n = new Image, n.onload = t.proxy(function() {
                o.css({
                    "background-image": "url(" + r + ")",
                    opacity: "1"
                }), this._core.trigger("loaded", {
                    element: o,
                    url: r
                }, "lazy")
            }, this), n.src = r)
        }, this)), this._loaded.push(s.get(0)))
    }, n.prototype.destroy = function() {
        var t, e;
        for (t in this.handlers) this._core.$element.off(t, this.handlers[t]);
            for (e in Object.getOwnPropertyNames(this)) "function" != typeof this[e] && (this[e] = null)
        }, t.fn.owlCarousel.Constructor.Plugins.Lazy = n
}(window.Zepto || window.jQuery, window, document),
function(t, e, i, s) {
    var n = function(e) {
        this._core = e, this._handlers = {
            "initialized.owl.carousel": t.proxy(function() {
                this._core.settings.autoHeight && this.update()
            }, this),
            "changed.owl.carousel": t.proxy(function(t) {
                this._core.settings.autoHeight && "position" == t.property.name && this.update()
            }, this),
            "loaded.owl.lazy": t.proxy(function(t) {
                this._core.settings.autoHeight && t.element.closest("." + this._core.settings.itemClass) === this._core.$stage.children().eq(this._core.current()) && this.update()
            }, this)
        }, this._core.options = t.extend({}, n.Defaults, this._core.options), this._core.$element.on(this._handlers)
    };
    n.Defaults = {
        autoHeight: !1,
        autoHeightClass: "owl-height"
    }, n.prototype.update = function() {
        this._core.$stage.parent().height(this._core.$stage.children().eq(this._core.current()).height()).addClass(this._core.settings.autoHeightClass)
    }, n.prototype.destroy = function() {
        var t, e;
        for (t in this._handlers) this._core.$element.off(t, this._handlers[t]);
            for (e in Object.getOwnPropertyNames(this)) "function" != typeof this[e] && (this[e] = null)
        }, t.fn.owlCarousel.Constructor.Plugins.AutoHeight = n
}(window.Zepto || window.jQuery, window, document),
function(t, e, i, s) {
    var n = function(e) {
        this._core = e, this._videos = {}, this._playing = null, this._fullscreen = !1, this._handlers = {
            "resize.owl.carousel": t.proxy(function(t) {
                this._core.settings.video && !this.isInFullScreen() && t.preventDefault()
            }, this),
            "refresh.owl.carousel changed.owl.carousel": t.proxy(function(t) {
                this._playing && this.stop()
            }, this),
            "prepared.owl.carousel": t.proxy(function(e) {
                var i = t(e.content).find(".owl-video");
                i.length && (i.css("display", "none"), this.fetch(i, t(e.content)))
            }, this)
        }, this._core.options = t.extend({}, n.Defaults, this._core.options), this._core.$element.on(this._handlers), this._core.$element.on("click.owl.video", ".owl-video-play-icon", t.proxy(function(t) {
            this.play(t)
        }, this))
    };
    n.Defaults = {
        video: !1,
        videoHeight: !1,
        videoWidth: !1
    }, n.prototype.fetch = function(t, e) {
        var i = t.attr("data-vimeo-id") ? "vimeo" : "youtube",
        s = t.attr("data-vimeo-id") || t.attr("data-youtube-id"),
        n = t.attr("data-width") || this._core.settings.videoWidth,
        o = t.attr("data-height") || this._core.settings.videoHeight,
        r = t.attr("href");
        if (!r) throw new Error("Missing video URL.");
        if (s = r.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/), s[3].indexOf("youtu") > -1) i = "youtube";
        else {
            if (!(s[3].indexOf("vimeo") > -1)) throw new Error("Video URL not supported.");
            i = "vimeo"
        }
        s = s[6], this._videos[r] = {
            type: i,
            id: s,
            width: n,
            height: o
        }, e.attr("data-video", r), this.thumbnail(t, this._videos[r])
    }, n.prototype.thumbnail = function(e, i) {
        var s, n, o, r = i.width && i.height ? 'style="width:' + i.width + "px;height:" + i.height + 'px;"' : "",
        a = e.find("img"),
        h = "src",
        l = "",
        c = this._core.settings,
        d = function(t) {
            n = '<div class="owl-video-play-icon"></div>', s = c.lazyLoad ? '<div class="owl-video-tn ' + l + '" ' + h + '="' + t + '"></div>' : '<div class="owl-video-tn" style="opacity:1;background-image:url(' + t + ')"></div>', e.after(s), e.after(n)
        };
        return e.wrap('<div class="owl-video-wrapper"' + r + "></div>"), this._core.settings.lazyLoad && (h = "data-src", l = "owl-lazy"), a.length ? (d(a.attr(h)), a.remove(), !1) : void("youtube" === i.type ? (o = "http://img.youtube.com/vi/" + i.id + "/hqdefault.jpg", d(o)) : "vimeo" === i.type && t.ajax({
            type: "GET",
            url: "http://vimeo.com/api/v2/video/" + i.id + ".json",
            jsonp: "callback",
            dataType: "jsonp",
            success: function(t) {
                o = t[0].thumbnail_large, d(o)
            }
        }))
    }, n.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
    }, n.prototype.play = function(e) {
        this._core.trigger("play", null, "video"), this._playing && this.stop();
        var i, s, n = t(e.target || e.srcElement),
        o = n.closest("." + this._core.settings.itemClass),
        r = this._videos[o.attr("data-video")],
        a = r.width || "100%",
        h = r.height || this._core.$stage.height();
        "youtube" === r.type ? i = '<iframe width="' + a + '" height="' + h + '" src="http://www.youtube.com/embed/' + r.id + "?autoplay=1&v=" + r.id + '" frameborder="0" allowfullscreen></iframe>' : "vimeo" === r.type && (i = '<iframe src="http://player.vimeo.com/video/' + r.id + '?autoplay=1" width="' + a + '" height="' + h + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'), o.addClass("owl-video-playing"), this._playing = o, s = t('<div style="height:' + h + "px; width:" + a + 'px" class="owl-video-frame">' + i + "</div>"), n.after(s)
    }, n.prototype.isInFullScreen = function() {
        var s = i.fullscreenElement || i.mozFullScreenElement || i.webkitFullscreenElement;
        return s && t(s).parent().hasClass("owl-video-frame") && (this._core.speed(0), this._fullscreen = !0), s && this._fullscreen && this._playing ? !1 : this._fullscreen ? (this._fullscreen = !1, !1) : this._playing && this._core.state.orientation !== e.orientation ? (this._core.state.orientation = e.orientation, !1) : !0
    }, n.prototype.destroy = function() {
        var t, e;
        this._core.$element.off("click.owl.video");
        for (t in this._handlers) this._core.$element.off(t, this._handlers[t]);
            for (e in Object.getOwnPropertyNames(this)) "function" != typeof this[e] && (this[e] = null)
        }, t.fn.owlCarousel.Constructor.Plugins.Video = n
}(window.Zepto || window.jQuery, window, document),
function(t, e, i, s) {
    var n = function(e) {
        this.core = e, this.core.options = t.extend({}, n.Defaults, this.core.options), this.swapping = !0, this.previous = s, this.next = s, this.handlers = {
            "change.owl.carousel": t.proxy(function(t) {
                "position" == t.property.name && (this.previous = this.core.current(), this.next = t.property.value)
            }, this),
            "drag.owl.carousel dragged.owl.carousel translated.owl.carousel": t.proxy(function(t) {
                this.swapping = "translated" == t.type
            }, this),
            "translate.owl.carousel": t.proxy(function(t) {
                this.swapping && (this.core.options.animateOut || this.core.options.animateIn) && this.swap()
            }, this)
        }, this.core.$element.on(this.handlers)
    };
    n.Defaults = {
        animateOut: !1,
        animateIn: !1
    }, n.prototype.swap = function() {
        if (1 === this.core.settings.items && this.core.support3d) {
            this.core.speed(0);
            var e, i = t.proxy(this.clear, this),
            s = this.core.$stage.children().eq(this.previous),
            n = this.core.$stage.children().eq(this.next),
            o = this.core.settings.animateIn,
            r = this.core.settings.animateOut;
            this.core.current() !== this.previous && (r && (e = this.core.coordinates(this.previous) - this.core.coordinates(this.next), s.css({
                left: e + "px"
            }).addClass("animated owl-animated-out").addClass(r).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", i)), o && n.addClass("animated owl-animated-in").addClass(o).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", i))
        }
    }, n.prototype.clear = function(e) {
        t(e.target).css({
            left: ""
        }).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut), this.core.transitionEnd()
    }, n.prototype.destroy = function() {
        var t, e;
        for (t in this.handlers) this.core.$element.off(t, this.handlers[t]);
            for (e in Object.getOwnPropertyNames(this)) "function" != typeof this[e] && (this[e] = null)
        }, t.fn.owlCarousel.Constructor.Plugins.Animate = n
}(window.Zepto || window.jQuery, window, document),
function(t, e, i, s) {
    var n = function(e) {
        this.core = e, this.core.options = t.extend({}, n.Defaults, this.core.options), this.handlers = {
            "translated.owl.carousel refreshed.owl.carousel": t.proxy(function() {
                this.autoplay()
            }, this),
            "play.owl.autoplay": t.proxy(function(t, e, i) {
                this.play(e, i)
            }, this),
            "stop.owl.autoplay": t.proxy(function() {
                this.stop()
            }, this),
            "mouseover.owl.autoplay": t.proxy(function() {
                this.core.settings.autoplayHoverPause && this.pause()
            }, this),
            "mouseleave.owl.autoplay": t.proxy(function() {
                this.core.settings.autoplayHoverPause && this.autoplay()
            }, this)
        }, this.core.$element.on(this.handlers)
    };
    n.Defaults = {
        autoplay: !1,
        autoplayTimeout: 5e3,
        autoplayHoverPause: !1,
        autoplaySpeed: !1
    }, n.prototype.autoplay = function() {
        this.core.settings.autoplay && !this.core.state.videoPlay ? (e.clearInterval(this.interval), this.interval = e.setInterval(t.proxy(function() {
            this.play()
        }, this), this.core.settings.autoplayTimeout)) : e.clearInterval(this.interval)
    }, n.prototype.play = function(t, s) {
        return i.hidden === !0 || this.core.state.isTouch || this.core.state.isScrolling || this.core.state.isSwiping || this.core.state.inMotion ? void 0 : this.core.settings.autoplay === !1 ? void e.clearInterval(this.interval) : void this.core.next(this.core.settings.autoplaySpeed)
    }, n.prototype.stop = function() {
        e.clearInterval(this.interval)
    }, n.prototype.pause = function() {
        e.clearInterval(this.interval)
    }, n.prototype.destroy = function() {
        var t, i;
        e.clearInterval(this.interval);
        for (t in this.handlers) this.core.$element.off(t, this.handlers[t]);
            for (i in Object.getOwnPropertyNames(this)) "function" != typeof this && (this = null)
        }, t.fn.owlCarousel.Constructor.Plugins.autoplay = n
}(window.Zepto || window.jQuery, window, document),
function(t, e, i, s) {
    "use strict";
    var n = function(e) {
        this._core = e, 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": t.proxy(function(e) {
                this._core.settings.dotsData && this._templates.push(t(e.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))
            }, this),
            "add.owl.carousel": t.proxy(function(e) {
                this._core.settings.dotsData && this._templates.splice(e.position, 0, t(e.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))
            }, this),
            "remove.owl.carousel prepared.owl.carousel": t.proxy(function(t) {
                this._core.settings.dotsData && this._templates.splice(t.position, 1)
            }, this),
            "change.owl.carousel": t.proxy(function(t) {
                if ("position" == t.property.name && !this._core.state.revert && !this._core.settings.loop && this._core.settings.navRewind) {
                    var e = this._core.current(),
                    i = this._core.maximum(),
                    s = this._core.minimum();
                    t.data = t.property.value > i ? e >= i ? s : i : t.property.value < s ? i : t.property.value
                }
            }, this),
            "changed.owl.carousel": t.proxy(function(t) {
                "position" == t.property.name && this.draw()
            }, this),
            "refreshed.owl.carousel": t.proxy(function() {
                this._initialized || (this.initialize(), this._initialized = !0), this._core.trigger("refresh", null, "navigation"), this.update(), this.draw(), this._core.trigger("refreshed", null, "navigation")
            }, this)
        }, this._core.options = t.extend({}, n.Defaults, this._core.options), this.$element.on(this._handlers)
    };
    n.Defaults = {
        nav: !1,
        navRewind: !0,
        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,
        dotData: !1,
        dotsSpeed: !1,
        dotsContainer: !1,
        controlsClass: "owl-controls"
    }, n.prototype.initialize = function() {
        var e, i, s = this._core.settings;
        s.dotsData || (this._templates = [t("<div>").addClass(s.dotClass).append(t("<span>")).prop("outerHTML")]), s.navContainer && s.dotsContainer || (this._controls.$container = t("<div>").addClass(s.controlsClass).appendTo(this.$element)), this._controls.$indicators = s.dotsContainer ? t(s.dotsContainer) : t("<div>").hide().addClass(s.dotsClass).appendTo(this._controls.$container), this._controls.$indicators.on("click", "div", t.proxy(function(e) {
            var i = t(e.target).parent().is(this._controls.$indicators) ? t(e.target).index() : t(e.target).parent().index();
            e.preventDefault(), this.to(i, s.dotsSpeed)
        }, this)), e = s.navContainer ? t(s.navContainer) : t("<div>").addClass(s.navContainerClass).prependTo(this._controls.$container), this._controls.$next = t("<" + s.navElement + ">"), this._controls.$previous = this._controls.$next.clone(), this._controls.$previous.addClass(s.navClass[0]).html(s.navText[0]).hide().prependTo(e).on("click", t.proxy(function(t) {
            this.prev(s.navSpeed)
        }, this)), this._controls.$next.addClass(s.navClass[1]).html(s.navText[1]).hide().appendTo(e).on("click", t.proxy(function(t) {
            this.next(s.navSpeed)
        }, this));
        for (i in this._overrides) this._core = t.proxy(this, this)
    }, n.prototype.destroy = function() {
        var t, e, i, s;
        for (t in this._handlers) this.$element.off(t, this._handlers[t]);
            for (e in this._controls) this._controls[e].remove();
                for (s in this.overides) this._core = this._overrides;
                    for (i in Object.getOwnPropertyNames(this)) "function" != typeof this && (this = null)
                }, n.prototype.update = function() {
                    var t, e, i, s = this._core.settings,
                    n = this._core.clones().length / 2,
                    o = n + this._core.items().length,
                    r = s.center || s.autoWidth || s.dotData ? 1 : s.dotsEach || s.items;
                    if ("page" !== s.slideBy && (s.slideBy = Math.min(s.slideBy, s.items)), s.dots || "page" == s.slideBy)
                        for (this._pages = [], t = n, e = 0, i = 0; o > t; t++)(e >= r || 0 === e) && (this._pages.push({
                            start: t - n,
                            end: t - n + r - 1
                        }), e = 0, ++i), e += this._core.mergers(this._core.relative(t))
                    }, n.prototype.draw = function() {
                        var e, i, s = "",
                        n = this._core.settings,
                        o = (this._core.$stage.children(), this._core.relative(this._core.current()));
                        if (!n.nav || n.loop || n.navRewind || (this._controls.$previous.toggleClass("disabled", 0 >= o), this._controls.$next.toggleClass("disabled", o >= this._core.maximum())), this._controls.$previous.toggle(n.nav), this._controls.$next.toggle(n.nav), n.dots) {
                            if (e = this._pages.length - this._controls.$indicators.children().length, n.dotData && 0 !== e) {
                                for (i = 0; i < this._controls.$indicators.children().length; i++) s += this._templates[this._core.relative(i)];
                                    this._controls.$indicators.html(s)
                            } else e > 0 ? (s = new Array(e + 1).join(this._templates[0]), this._controls.$indicators.append(s)) : 0 > e && this._controls.$indicators.children().slice(e).remove();
                            this._controls.$indicators.find(".active").removeClass("active"), this._controls.$indicators.children().eq(t.inArray(this.current(), this._pages)).addClass("active")
                        }
                        this._controls.$indicators.toggle(n.dots)
                    }, n.prototype.onTrigger = function(e) {
                        var i = this._core.settings;
                        e.page = {
                            index: t.inArray(this.current(), this._pages),
                            count: this._pages.length,
                            size: i && (i.center || i.autoWidth || i.dotData ? 1 : i.dotsEach || i.items)
                        }
                    }, n.prototype.current = function() {
                        var e = this._core.relative(this._core.current());
                        return t.grep(this._pages, function(t) {
                            return t.start <= e && t.end >= e
                        }).pop()
                    }, n.prototype.getPosition = function(e) {
                        var i, s, n = this._core.settings;
                        return "page" == n.slideBy ? (i = t.inArray(this.current(), this._pages), s = this._pages.length, e ? ++i : --i, i = this._pages[(i % s + s) % s].start) : (i = this._core.relative(this._core.current()), s = this._core.items().length, e ? i += n.slideBy : i -= n.slideBy), i
                    }, n.prototype.next = function(e) {
                        t.proxy(this._overrides.to, this._core)(this.getPosition(!0), e)
                    }, n.prototype.prev = function(e) {
                        t.proxy(this._overrides.to, this._core)(this.getPosition(!1), e)
                    }, n.prototype.to = function(e, i, s) {
                        var n;
                        s ? t.proxy(this._overrides.to, this._core)(e, i) : (n = this._pages.length, t.proxy(this._overrides.to, this._core)(this._pages[(e % n + n) % n].start, i))
                    }, t.fn.owlCarousel.Constructor.Plugins.Navigation = n
                }(window.Zepto || window.jQuery, window, document),
                function(t, e, i, s) {
                    "use strict";
                    var n = function(i) {
                        this._core = i, this._hashes = {}, this.$element = this._core.$element, this._handlers = {
                            "initialized.owl.carousel": t.proxy(function() {
                                "URLHash" == this._core.settings.startPosition && t(e).trigger("hashchange.owl.navigation")
                            }, this),
                            "prepared.owl.carousel": t.proxy(function(e) {
                                var i = t(e.content).find("[data-hash]").andSelf("[data-hash]").attr("data-hash");
                                this._hashes = e.content
                            }, this)
                        }, this._core.options = t.extend({}, n.Defaults, this._core.options), this.$element.on(this._handlers), t(e).on("hashchange.owl.navigation", t.proxy(function() {
                            var t = e.location.hash.substring(1),
                            i = this._core.$stage.children(),
                            s = this._hashes[t] && i.index(this._hashes[t]) || 0;
                            return t ? void this._core.to(s, !1, !0) : !1
                        }, this))
                    };
                    n.Defaults = {
                        URLhashListener: !1
                    }, n.prototype.destroy = function() {
                        var i, s;
                        t(e).off("hashchange.owl.navigation");
                        for (i in this._handlers) this._core.$element.off(i, this._handlers);
                            for (s in Object.getOwnPropertyNames(this)) "function" != typeof this && (this = null)
                        }, t.fn.owlCarousel.Constructor.Plugins.Hash = n
                }(window.Zepto || window.jQuery, window, document);

                function svgIcon(icon) {
                    var iconList = {
                        user: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 55" width="512" height="512"><path d="M55 27.5C55 12.337 42.663 0 27.5 0S0 12.337 0 27.5c0 8.009 3.444 15.228 8.926 20.258l-.026.023.892.752c.058.049.121.089.179.137.474.393.965.766 1.465 1.127.162.117.324.234.489.348.534.368 1.082.717 1.642 1.048.122.072.245.142.368.212.613.349 1.239.678 1.88.98.047.022.095.042.142.064 2.089.971 4.319 1.684 6.651 2.105.061.011.122.022.184.033.724.125 1.456.225 2.197.292.09.008.18.013.271.021.738.061 1.484.1 2.24.1.749 0 1.488-.039 2.222-.098.093-.008.186-.013.279-.021.735-.067 1.461-.164 2.178-.287.062-.011.125-.022.187-.034 2.297-.412 4.495-1.109 6.557-2.055.076-.035.153-.068.229-.104.617-.29 1.22-.603 1.811-.936.147-.083.293-.167.439-.253.538-.317 1.067-.648 1.581-1 .185-.126.366-.259.549-.391.439-.316.87-.642 1.289-.983.093-.075.193-.14.284-.217l.915-.764-.027-.023C51.523 42.802 55 35.55 55 27.5zm-53 0C2 13.439 13.439 2 27.5 2S53 13.439 53 27.5c0 7.577-3.325 14.389-8.589 19.063-.294-.203-.59-.385-.893-.537l-8.467-4.233c-.76-.38-1.232-1.144-1.232-1.993v-2.957c.196-.242.403-.516.617-.817 1.096-1.548 1.975-3.27 2.616-5.123 1.267-.602 2.085-1.864 2.085-3.289v-3.545c0-.867-.318-1.708-.887-2.369v-4.667c.052-.519.236-3.448-1.883-5.864C34.524 9.065 31.541 8 27.5 8s-7.024 1.065-8.867 3.168c-2.119 2.416-1.935 5.345-1.883 5.864v4.667c-.568.661-.887 1.502-.887 2.369v3.545c0 1.101.494 2.128 1.34 2.821.81 3.173 2.477 5.575 3.093 6.389v2.894c0 .816-.445 1.566-1.162 1.958l-7.907 4.313c-.252.137-.502.297-.752.476C5.276 41.792 2 35.022 2 27.5zm40.459 20.632c-.35.254-.706.5-1.067.735-.166.108-.331.216-.5.321-.472.292-.952.57-1.442.83-.108.057-.217.111-.326.167-1.126.577-2.291 1.073-3.488 1.476-.042.014-.084.029-.127.043-.627.208-1.262.393-1.904.552-.002 0-.004.001-.006.001-.648.16-1.304.293-1.964.402-.018.003-.036.007-.054.01-.621.101-1.247.174-1.875.229-.111.01-.222.017-.334.025-.621.047-1.245.077-1.872.077-.634 0-1.266-.031-1.895-.078-.109-.008-.218-.015-.326-.025-.634-.056-1.265-.131-1.89-.233l-.084-.015c-1.322-.221-2.623-.546-3.89-.971-.039-.013-.079-.027-.118-.04-.629-.214-1.251-.451-1.862-.713-.004-.002-.009-.004-.013-.006-.578-.249-1.145-.525-1.705-.816-.073-.038-.147-.074-.219-.113-.511-.273-1.011-.568-1.504-.876-.146-.092-.291-.185-.435-.279-.454-.297-.902-.606-1.338-.933-.045-.034-.088-.07-.133-.104l.096-.054 7.907-4.313c1.36-.742 2.205-2.165 2.205-3.714l-.001-3.602-.23-.278c-.022-.025-2.184-2.655-3.001-6.216l-.091-.396-.341-.221c-.481-.311-.769-.831-.769-1.392v-3.545c0-.465.197-.898.557-1.223l.33-.298v-5.57l-.009-.131c-.003-.024-.298-2.429 1.396-4.36C21.583 10.837 24.061 10 27.5 10c3.426 0 5.896.83 7.346 2.466 1.692 1.911 1.415 4.361 1.413 4.381l-.009 5.701.33.298c.359.324.557.758.557 1.223v3.545c0 .713-.485 1.36-1.181 1.575l-.497.153-.16.495c-.59 1.833-1.43 3.526-2.496 5.032-.262.37-.517.698-.736.949l-.248.283V39.8c0 1.612.896 3.062 2.338 3.782l8.467 4.233c.054.027.107.055.16.083-.107.081-.217.156-.325.234z" fill="#FFF"/></svg>',
                        movies: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 191.255 191.255" width="512" height="512"><path d="M162.929 66.612c-2.814-1.754-6.514-.896-8.267 1.917s-.895 6.513 1.917 8.266c6.544 4.081 10.45 11.121 10.45 18.833s-3.906 14.752-10.45 18.833l-98.417 61.365c-6.943 4.329-15.359 4.542-22.512.573-7.154-3.97-11.425-11.225-11.425-19.406V34.262c0-8.181 4.271-15.436 11.425-19.406 7.153-3.969 15.569-3.756 22.512.573l57.292 35.723c2.813 1.752 6.513.895 8.267-1.917 1.753-2.812.895-6.513-1.917-8.266L64.512 5.247c-10.696-6.669-23.661-7-34.685-.883-11.021 6.116-17.601 17.293-17.601 29.898v122.73c0 12.605 6.58 23.782 17.602 29.898 5.25 2.913 10.939 4.364 16.616 4.364 6.241 0 12.467-1.754 18.068-5.247l98.417-61.365c10.082-6.287 16.101-17.133 16.101-29.015s-6.019-22.728-16.101-29.015z" fill="#FFF"/></svg>',
                        series: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" width="512" height="512"><g fill="#FFF"><path d="M36.537 28.156l-11-7c-.308-.195-.698-.208-1.019-.033-.319.176-.518.512-.518.877v14c0 .365.199.701.519.877.15.082.315.123.481.123.187 0 .374-.053.537-.156l11-7c.288-.184.463-.502.463-.844s-.175-.66-.463-.844zM26 34.179V23.821L34.137 29 26 34.179z"/><path d="M57 6H1c-.552 0-1 .447-1 1v44c0 .553.448 1 1 1h56c.552 0 1-.447 1-1V7c0-.553-.448-1-1-1zM10 28H2v-9h8v9zm-8 2h8v9H2v-9zm10 10V8h34v42H12V40zm44-12h-8v-9h8v9zm-8 2h8v9h-8v-9zm8-22v9h-8V8h8zM2 8h8v9H2V8zm0 42v-9h8v9H2zm54 0h-8v-9h8v9z"/></g></svg>',
                        tv: '<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 612 612"><path d="M578.766 51.487v-.895H32.934v.895C15.272 52.701 2.095 66.753 0 83.808v358.726c0 6.898 1.795 12.712 4.791 17.949 6.893 12.137 17.068 18.269 31.14 18.269h197.012v49.695h-37.425c-9.281 0-16.467 7.218-16.467 16.48s7.186 16.479 16.467 16.479h220.666c9.281 0 16.768-7.218 16.768-16.479 0-9.263-7.486-16.48-16.768-16.48h-37.425v-49.695H575.77c14.078 0 24.343-6.132 31.14-18.269 3.085-5.493 5.091-11.37 5.091-17.949V83.809c-2.096-17.056-16.168-31.108-33.235-32.322zm0 35.324v355.724c0 2.108-.895 3.002-2.996 3.002H35.93c-2.095 0-2.996-.894-2.996-3.002V83.809h545.831v3.002z" fill="#FFF"/></svg>',
                    }
                    return iconList[icon]
                }

                function loadSvgs() {
                    $("[data-generate-icon]").each(function(index) {
                        if (!$(this).hasClass("loaded")) {
                            $(this).append(svgIcon($(this).attr("data-generate-icon")));
                            $(this).addClass("loaded")
                        }
                    })
                }
                var parseQueryString = function() {
                    var str = window.location.search;
                    var objURL = {};
                    str.replace(new RegExp("([^?=&]+)(=([^&]*))?", "g"), function($0, $1, $2, $3) {
                        objURL[$1] = $3
                    });
                    return objURL
                };
                var params             = parseQueryString();
                var appVersion         = params.v;
                var userId             = params.uid;
                var userName           = params.userName;
                var userEmail          = params.userEmail;
                var userImage          = "";
                var userRank           = params.userRank;
                var userToken          = params.token;
                var oneSignalId        = params.oneSignalId;
                var mxStatus           = params.mx;
                var lcStatus           = params.lc;
                var userGender         = !1;
                var userMoviesSeeLater = !1;
                var userSeriesFollow   = !1;
                var siteUrlM           = "https://vizer.gratis/wp-json/moble/";
                $(function() {
                    getUserInfos(userId, userToken);
                    loadSvgs()
                });

                function showError(error) {
                    $("body").append("<div class='errormsg'>" + error + "</div>");
                    setTimeout(function() {
                        $(".errormsg").remove()
                    }, 7500)
                }

                function showErrorServe(id){
                    
                    switch (id){

                        case 1 :

                        return showError('Error');

                        case 2 :

                        return showError('Você precisa se registrar para usar esse recurso!');

                        case 3 :

                        return showError('Não temos episódos!');

                        default:

                        return showError('Error Não foi Possível se comunicar com nosso Servidor.');    

                    }
                }

                function showNotifications() {
                    if ($("#topBar .notificationButton").hasClass("notifying")) {
                        $.ajax({

                            method: "POST",
                            url: siteUrlM + 'user/notify/',
                            data: { 
                                uid: userId,
                            },
                            cache: true,
                            success: function (data) {

                                $("#topBar .notificationButton").removeClass("notifying");
                                $("#topBar .notificationButton .dot").remove()
                            },
                            error: function (response) {

                                showErrorServe(1)
                            }

                        });
                    }
                    if (!$(".notificationList").hasClass("active")) {
                        $(".notificationList").addClass("active");
                        $("#topBar .notificationButton").addClass("close")
                    } else {
                        $(".notificationList").removeClass("active");
                        $("#topBar .notificationButton").removeClass("close")
                    }
                }
                $(document).on('click', 'body, html', function(e) {
                    if ($(e.target).closest('.notificationList, .notificationButton').length === 0) {
                        $(".notificationList").removeClass("active");
                        $("#topBar .notificationButton").removeClass("close")
                    }
                    if ($(e.target).closest('#movieFilters, .buttonTop').length === 0) {
                        hideMovieFilters()
                    }
                    if ($(e.target).closest('#selectPlayerBox, .generalPlayer').length === 0) {
                        hideSelectPlayerBox()
                    }
                    if ($(e.target).closest('#channelPlayerBox, #tvPage .itemList .item').length === 0) {
                        e.preventDefault();
                        e.stopPropagation();
                        hideChannelPlayers()
                    }
                    if ($(e.target).closest('#coolModal, #accountPage .button, #accountPage .header .image, .item.duvidas, .context b, .isItSlow').length === 0) {
                        e.preventDefault();
                        e.stopPropagation();
                        closeCoolModal()
                    }
                });

                function logout() {
                    Android.logFuckingOut()
                }

                function facebookPage() {
                    Android.openFacebookPage()
                }

                function OpenMail() {
                    Android.OnMail('[email protected]')
                }

                function showToast(text){
                    Android.showToast(text)
                }

                function openVizer() {
                    openBrowser("https://viziontele.com")
                }

                function setAsWallpaper(url) {
                    openBrowser(url)
                }

                function openTrailer(id) {
                    Android.openTrailer("https://www.youtube.com/embed/" + id + "?autoplay=true")
                }

                function openBrowser(url) {
                    Android.openBrowser(url)
                }

                function openPlayer(url, type) {
                    if (type == "openload") {
                        var poster = $(".generalMoviePage .header").css('background-image');
                        poster = poster.replace('url(', '').replace(')', '').replace(/\"/gi, "");
                        Android.openPlayer(url)
                    } else if (type == "onMxPlayer") {
                        Android.openPlayeronMxPlayer(url)
                    } else if (type == "onLocalcast") {
                        Android.openPlayeronLocalcast(url)
                    } else if (type == "vizerplayer") {
                        Android.vizerPlayer(url)
                    } else {
                        Android.openPlayer(url)
                    }
                }

                function showLoading() {
                    $(".pulseLoading").addClass("visible");
                    setTimeout(function() {
                        $(".pulseLoading").removeClass("visible")
                    }, 500)
                }

                function dataOpenPage(page) {
                    showLoading();
                    if (page == "home") {
                        showHomePage()
                    } else if (page == "movies") {
                        showMoviesPage("category")
                    } else if (page == "moviesSeeLater") {
                        if (userId != 0) {
                            showMoviesPage("seelater");
                            page = "movies"
                        }else{
                            showErrorServe(2)
                        }        
                    } else if (page == "series") {
                        showSeriesPage()
                    } else if (page == "seriesFollow") {
                        showSeriesPage();
                        openSeriesCatPage("following")
                    } else if (page == "tv") {
                        showTvPage()
                    } else if (page == "profile") {
                        showAccount()
                    } else if (page == "random") {
                        showRandom()
                    }
                    $("#tabBar .line").removeClass("active");
                    $("#tabBar .line." + page).addClass("active")
                }

                function lazyLoadLauncher() {
                    $(".lazy:not(.loaded)").lazyload({
                        threshold: 300,
                        skip_invisible: !1,
                        failure_limit: 50,
                        load: function() {
                            $(this).addClass("loaded")
                        }
                    })
                }

                function createSlider(appendTo, mg) {
                    if (!appendTo) {
                        appendTo = '.generalList:not(.listing)'
                    }
                    $(appendTo).owlCarousel({
                        center: !1,
                        loop: !1,
                        autoWidth: !0,
                        responsiveClass: !1,
                        nav: !1,
                        margin: mg,
                        onDragged: ondragcarousel,
                    })
                }

                function listMenuSlide() {
                    $('.listHeader').owlCarousel({
                        center: !1,
                        loop: !1,
                        autoWidth: !0,
                        responsiveClass: !1,
                        nav: !1,
                        margin: 20,
                        onDragged: ondragcarousel,
                    })
                }

                function ondragcarousel(event) {
                    $(window).scroll()
                }

                function showUpdate(url) {
                    Android.forceUpdate(url)
                }

                function showMaintenance(){
                    Android.maintenance()
                }

                /* Metodo responsavél por retorna as informações de usuários*/
                function getUserInfos(userId, userToken) {

                    if (userId, userToken) {

                        $.ajax({

                            method: "POST",
                            url: siteUrlM + "user/inforMoble/",
                            data: { 
                                uid         : userId,
                                version     : appVersion,
                            },
                            cache: true,
                            success: function (data) {

                                if (data.status == "success") {
                                    if (data.notifications.notify == "true") {
                                        $("#topBar .notificationButton").append('<div class="dot"></div>');
                                        $("#topBar .notificationButton").addClass('notifying')
                                    }
                                    if (data.notifications.requests == "true") {
                                        $(".notificationList").append("<div class='line'><div class='icon' data-generate-icon='request'></div>Um filme pedido foi adicionado.")
                                    }
                                    if (data.notifications.news == "true") {
                                        $(".notificationList").append("<div class='line'><div class='icon' data-generate-icon='news'></div>Nova notícia no Vizion.")
                                    }
                                    if (data.notifications.seriesCount != 0) {
                                        $.each(data.notifications.series, function(i, item) {
                                            $(".notificationList").append("<div class='line' onclick='showSeriePage(\"" + item.id + "\")'><div class='icon' data-generate-icon='series'></div>" + item.title + " / " + item.ep + "</div>")
                                        })
                                    }
                                    userMoviesSeeLater = data.moviesSeeLater;
                                    userSeriesFollow   = data.seriesFollow;
                                    userGender         = data.userGender;
                                    userImage          = data.userImage;
                                    if (userImage == 0) {
                                        if (userGender = "male") {
                                            userImage = "img/male.png"
                                        } else {
                                            userImage = "img/female.png"
                                        }
                                    }
                                    showHomePage();
                                    loadSvgs();
                                    lazyLoadLauncher()
                                } else if (data.status == "logout") {
                                    logout()

                                } else if (data.status == "updateIt") {
                                    showUpdate(data.url)

                                } else if (data.status == "maintenance") {
                                    showMaintenance()

                                } else {

                                    showError(data.error)
                                }

                            },
                            error: function (response) {
                                
                                showMaintenance()
                            }

                        });
                    }
                }

                function returnMoviePoster(id, title, poster, see) {
                    if (see == !0) {
                        see = '<div class="mustsee">POR VER</div>'
                    } else {
                        see = ""
                    }
                    return '<div class="item" data-open-movie="' + id + '"><div class="inner lazy loadBg" data-original="' + poster + '"><div class="img-op"></div><div class="img-hover"></div><div class="playicon"></div>' + see + '<div class="title">' + title + '</div></div></div>'
                }

                function showHomePage() {
                    $("#pagination").empty();
                    $("#pagination").append('<div id="homePage" class="normalPage"><div class="clearfix"></div><div class="welcome"></div><div class="clearfix"></div><div class="h20"></div><div class="generalTitle movies"><b>Filmes</b> Lançamento</div><div class="generalList cinemasMovies"></div><div class="h20"></div><div class="generalTitle movies"><b>Filmes</b> Recentes</div><div class="generalList recentMovies"></div><div class="h20"></div><div class="generalTitle series"><b>Últimos</b> episódios</div><div class="generalList recentEpisodes"></div></div>');
                    $("#pagination #homePage .welcome").prepend('<div class="block randomMovie" onclick="dataOpenPage(\'random\');"><img src="img/shuffle.png" />FILME ALEATÓRIO</div>');
                    $("#pagination #homePage .welcome").prepend('<div class="block seriesfollow" onclick="dataOpenPage(\'seriesFollow\');"><div class="number"></div><div class="title"><b>Séries</b> seguindo</div><div class="icon" data-generate-icon="series"></div></div>');
                    $("#pagination #homePage .welcome").prepend('<div class="block seelater" onclick="dataOpenPage(\'moviesSeeLater\');"><div class="number"></div><div class="title"><b>Filmes</b> por ver</div><div class="icon" data-generate-icon="movies"></div></div>');
                    $("#pagination #homePage .welcome").prepend('<div class="block facebook" onclick="facebookPage();"><div class="title"><b>Curta</b> nossa página!</div><div class="icon"><img src="img/icon/facebook.png" alt=""> FACEBOOK</div></div>');
                    $("#pagination #homePage .welcome").prepend('<div class="block hello" onclick="dataOpenPage(\'profile\');"><div class="number">Olá, <div class="name"></div></div><div class="title"></div></div>');
                    loadSvgs();
                    $("#homePage .welcome .hello .number .name").append(userName);
                    if (userGender == "male") {
                        $("#homePage .welcome .hello .title").append("Bem vindo!")
                    } else {
                        $("#homePage .welcome .hello .title").append("Bem vinda!")
                    }
                    $("#homePage .welcome .seelater .number").empty().append(userMoviesSeeLater);
                    $("#homePage .welcome .seriesfollow .number").empty().append(userSeriesFollow);
                    getMoviesList("cinemas", "#pagination .generalList.cinemasMovies", !0);
                    getMoviesList("recents", "#pagination .generalList.recentMovies", !0);
                    getSeriesList("recent", "#pagination .generalList.recentEpisodes", !0)
                }

                function showMoviesPage(cat) {
                    $("#pagination").empty();
                    $("#pagination").append('<div id="moviesPage" class="normalPage"><div class="listHeader movies"><div class="item active category" onclick="selectMoviesList(\'category\');">Categorias</div><div class="item cinemas" onclick="selectMoviesList(\'cinemas\');">Lançamentos</div><div class="item lists" onclick="selectMoviesList(\'lists\');">Listas</div><div class="item seelater" onclick="selectMoviesList(\'seelater\');">Filmes por ver</div></div><div id="moviesContent"></div></div>');
                    listMenuSlide();
                    selectMoviesList(cat)
                }

                function getMoviesList(term, appendTo, slider) {
                    
                    $.ajax({

                        method: "GET",
                        url: siteUrlM + 'movie/' + term,
                        data: { 
                            uid      : userId,
                        },
                        cache: true,
                        success: function (data) {

                            if (data.status == "success") {
                                
                                if (data.movies == "none") {
                                    return !1
                                }
                                $.each(data.movies, function(i, item) {
                                    $(appendTo).append(returnMoviePoster(item.id, item.title, item.poster, item.see))
                                });
                                if (slider) {
                                    $(appendTo).append('<div class="item"></div>');
                                    createSlider(appendTo, 5)
                                }
                                lazyLoadLauncher()
                            } else if (data.status == "logout") {

                                logout()

                            } else if (data.status == "maintenance") {
                                showMaintenance()

                            } else {

                                showError(data.error)
                            }

                            
                        },
                        error: function (response) {

                            showErrorServe(1)
                        }

                    });
                }

                var activeListPage = !1;

                function selectMoviesList(page) {
                    activeListPage = page;
                    resetFilters();
                    if (page == 'category') moviePage= 1;
                    showLoading();
                    $("#moviesPage .listHeader .item").removeClass("active");
                    $("#moviesPage .listHeader .item." + page).addClass("active");
                    $("#moviesContent").empty();
                    if (page == "category") {
                        $("#moviesContent").append('<div id="categoriesList"></div>');
                        $.ajax({

                            method: "GET",
                            url: siteUrlM + 'movie/list',
                            cache: true,
                            success: function (data) {
                                if (data.status == "success") {
                                    $.each(data.categories, function(i, item) {
                                        $("#moviesContent #categoriesList").append('<div class="item ' + item.name + '" onclick=\'openCategoryList("' + item.name + '")\'><div class="name">' + item.title + '</div><div class="count"><b>' + item.count + '</b> Filmes</div></div>')
                                    })
                                }else if (data.status == "maintenance") {
                                    showMaintenance()

                                } else {
                                    showError(data.error)
                                }
                            },
                            error: function (response) {

                                showErrorServe(1)
                            }

                        });
                    } else if (page == "cinemas") {
                        moviePage= 1;
                        $("#moviesContent").append('<div id="moviesList"><div class="h20"></div><div class="generalTitle movies"><b>Filmes</b> Lançamento</div><div class="generalList listing"></div></div><div class="loadMoreItemsButton" onclick="LoadMove(\'cinemas\');">CARREGAR MAIS FILMES</div></div>');
                        LoadMove("cinemas")
                    } else if (page == "lists") {
                        $("#moviesContent").append('<div id="moviesList"><div class="h20"></div><div class="generalTitle movies"><b>Ultimos</b> Adicionados</div><div class="generalList recentMovies"></div><div class="h20"></div><div class="generalTitle movies"><b>Mais</b> assistidos</div><div class="generalList mostseen"></div><div class="h20"></div><div class="generalTitle movies"><b>Filmes</b> MARVEL</div><div class="generalList marvel"></div>');
                        getMoviesList("recents", "#moviesContent .generalList.recentMovies", !0);
                        getMoviesList("mostSeen", "#moviesContent .generalList.mostseen", !0);
                        /*getMoviesList("racing", "#moviesContent .generalList.racing", !0);
                        getMoviesList("lgbt", "#moviesContent .generalList.lgbt", !0);
                        getMoviesList("starWars", "#moviesContent .generalList.starWars", !0);
                        getMoviesList("harryp", "#moviesContent .generalList.harryp", !0);*/
                        getMoviesList("marvel", "#moviesContent .generalList.marvel", !0)
                    } else if (page == "seelater") {
                        $("#moviesContent").append('<div id="moviesList"><div class="h20"></div><div class="generalTitle movies"><b>FILMES</b> POR VER</div><div class="generalList listing"></div></div>');
                        if (userId != 0) {
                            getMoviesList("seeLater", "#moviesContent .generalList", !1)
                        }else{
                            showErrorServe(2)
                        }
                        
                    }
                    lazyLoadLauncher()
                }

                var movieActualCategory = !1;
                var moviePage           = 1;
                var movieFilterYear     = "*";
                var movieFilterOrderBy  = "*";
                var movieFilterOrder    = "desc";

                function openMovieFilters() {
                    $("#movieFilters").addClass("active")
                }

                function hideMovieFilters() {
                    $("#movieFilters").removeClass("active")
                }

                function resetFilters() {
                    movieActualCategory = !1;
                    movieFilterYear     = "*";
                    movieFilterOrderBy  = "*";
                    movieFilterOrder    = "desc"
                }

                function updateDescAsc(act) {
                    movieFilterOrder = act;
                    $("#movieFilters .orderByItem").removeClass("active");
                    $("#movieFilters .orderByItem." + act).addClass("active")
                }

                function updateMovieFilters() {
                    movieFilterYear = $("#movieFilters .filterYear").val();
                    movieFilterOrderBy = $("#movieFilters .filterOrderBy").val();
                    $("#moviesContent #categoriesMovieList .bigList").empty();
                    openCategoryList(movieActualCategory);
                    hideMovieFilters()
                }

                function openCategoryList(cat) {
                    if (!cat) {
                        return !1
                    }
                    movieActualCategory = cat;
                    showLoading();
                    $("#moviesContent").empty();
                    $("#moviesContent").append('<div id="categoriesMovieList"><div class="buttonTop" onclick="openMovieFilters();">Filtros</div><div class="buttonTop" onclick="openSearch();">pesquisar</div><div class="bigList generalList listing"></div><div class="loadMoreItemsButton" onclick="categoryLoadMore();">CARREGAR MAIS FILMES</div></div>');
                    categoryLoadMore()
                }

                function categoryLoadMore() {
                    var cat     = movieActualCategory;
                    var limit   = moviePage++;
                    var year    = movieFilterYear;
                    var orderby = movieFilterOrderBy;
                    var order   = movieFilterOrder;

                    $.ajax({

                        method: "GET",
                        url: siteUrlM + 'movie/categoriesList/',
                        data: { 
                            category: cat,
                            year: year,
                            orderby: orderby,
                            order: order,
                            limit: limit,
                            uid: userId,
                        },
                        cache: true,
                        success: function (data) {

                            if (data.status == "success") {

                                $.each(data.movies, function(i, item) {
                                    $("#moviesContent #categoriesMovieList .bigList").append(returnMoviePoster(item.id, item.title, item.poster, item.see))
                                });
                                lazyLoadLauncher()

                            }else if (data.status == "maintenance") {
                                showMaintenance()

                            } else {
                                showError(data.error);
                                
                            }
                        },
                        error: function (response) {

                            showErrorServe(1);

                        }

                    });

                }

                function LoadAnime(term) {

                    var limit   = animePage++;

                    $.ajax({

                        method: "GET",
                        url: siteUrlM + 'serie/'+ term,
                        data: { 
                            limit: limit,
                            uid: userId,
                        },
                        cache: true,
                        success: function (data) {

                            if (data.status == "success") {

                                $.each(data.series, function(i, item) {
                                    $("#seriesPage .listAnimes").append(returnSeriePoster(item.id, item.title, item.poster, item.episode, item.see))
                                });
                                lazyLoadLauncher()

                            }else if (data.status == "maintenance") {
                                showMaintenance()

                            } else {
                                showError(data.error);
                                
                            }
                        },
                        error: function (response) {

                            showErrorServe(1);

                        }

                    });

                }

                function LoadMove(term) {

                    var limit   = moviePage++;
                    var year    = movieFilterYear;
                    var orderby = movieFilterOrderBy;
                    var order   = movieFilterOrder;

                    $.ajax({

                        method: "GET",
                        url: siteUrlM + 'movie/categoriesList/',
                        data: { 
                            category: term,
                            year: year,
                            orderby: orderby,
                            order: order,
                            limit: limit,
                            uid: userId,
                        },
                        cache: true,
                        success: function (data) {

                            if (data.status == "success") {

                                $.each(data.movies, function(i, item) {
                                    $("#moviesContent .generalList").append(returnMoviePoster(item.id, item.title, item.poster, item.see))
                                });
                                lazyLoadLauncher()

                            }else if (data.status == "maintenance") {
                                showMaintenance()

                            } else {
                                showError(data.error);
                                
                            }
                        },
                        error: function (response) {

                            showErrorServe(1);

                        }

                    });

                }
                $(document).on("click", "[data-open-movie]", function() {
                    loadMoviePage($(this).attr("data-open-movie"))
                });

                function loadMoviePage(id) {
                    if (!id) {
                        return !1
                    }
                    $("#moviePage").remove();
                    $.ajax({

                        method: "GET",
                        url: siteUrlM + 'movie/post/',
                        data: { 
                            post : id,
                            uid  : userId
                        },
                        cache: true,
                        success: function (data) {

                            if (data.status == "success") {
                                var background = data.movie.background;
                                if (background == "" || background == "https://image.tmdb.org/t/p/original") {
                                    background = data.movie.poster
                                }
                                var wallpaperDownStatus = "";
                                if (data.movie.background == "") {
                                    wallpaperDownStatus = "hidden"
                                }
                                var rating = data.movie.rating;
                                if (rating = "N/A") {
                                    rating = "0.0"
                                }
                                var badQual = data.movie.badQual;
                                if (badQual == 1) {
                                    badQual = '<div class="badQual">FILME APENAS EM GRAVAÇÃO DE CINEMA, EM BREVE HD.</div>'
                                } else {
                                    badQual = ""
                                }
                                var director = data.movie.director;
                                if (director != "") {
                                    director = '<div class="title">Realizador</div><div class="text">' + data.movie.director + '</div><div class="h10"></div>'
                                }
                                var actors = data.movie.actors;
                                if (actors != "") {
                                    actors = '<div class="title">Elenco</div><div class="text">' + data.movie.actors + '</div><div class="h10"></div>'
                                }
                                var description = data.movie.description;
                                if (description != "") {
                                    description = '<div class="title">Sinopse</div><div class="text">' + data.movie.description + '</div>'
                                }
                                var hiddenDesc = "";
                                if (actors == "" && director == "" && description == "") {
                                    hiddenDesc = "hidden"
                                }
                                var seeLaterButton = '<div class="seelater hoverize" onclick="seeLaterMovie(\'' + data.movie.id + '\');"><img src="img/icon/bookmark.png" alt="">Ver depois</div>';
                                var seeLaterTopButton = '<img src="img/icon/bookmark.png" alt="a">';
                                if (data.movie.iSeeLater == !0) {
                                    seeLaterButton = '<div class="seelater hoverize" onclick="seeLaterMovie(\'' + data.movie.id + '\');"><img src="img/icon/bookmarkFill.png" alt="">Já viu?</div>';
                                    seeLaterTopButton = '<img src="img/icon/bookmarkFill.png" alt="a">'
                                }
                                var likeButton = '<div class="like hoverize" onclick="likeMovie(\'' + data.movie.id + '\');"><img src="img/icon/likes.png" alt="">Curtir</div>';
                                if (data.movie.iLike == !0) {
                                    likeButton = '<div class="like hoverize" onclick="likeMovie(\'' + data.movie.id + '\');"><img src="img/icon/likeFill.png" alt="">Curti</div>'
                                }
                                var playerTitle = "Escolha um player:";
                                if (data.movie.countPlayers == 0) {
                                    playerTitle = "Nenhum player disponível."
                                }
                                var genres = data.movie.genre;
                                if (genres == "undefined") {
                                    genres = ""
                                }
                                $("body,html").addClass("noScroll");
                                $("#content").append('<div id="moviePage" class="generalMoviePage" data-movie-id="' + data.movie.id + '"><div class="header" style="background-image:url(' + background + ');"><div class="clearfix"></div><div class="gradient"></div><div class="topIcons"><div class="goBack hoverize" onclick="closeMovie();"><img src="img/icon/goBack.png" alt=""></div><div class="seelater hoverize" onclick="seeLaterMovie(\'' + data.movie.id + '\');">' + seeLaterTopButton + '</div></div><div class="content"><div class="date">FILME <b>' + data.movie.year + '</b></div><div class="title">' + data.movie.title + '</div><div class="category">' + genres + '</div><div class="otherInfos"><div class="leftitem likes"><div class="icon"><img src="img/icon/likes.png" alt=""></div><b>' + data.movie.countLikes + '</b> Curtidas</div><div class="leftitem comments"><div class="icon"><img src="img/icon/comments.png" alt=""></div><b>' + data.movie.countComments + '</b> Comentários</div><div class="rating"><b>' + data.movie.rating + '</b>/10</div></div></div></div><div class="bigContent"><div class="options"><div class="trailer hoverize" onclick="openTrailer(\'' + data.movie.trailer + '\');"><img src="img/icon/play.png" alt="">Assistir Trailer</div>' + likeButton + seeLaterButton + '<div class="clearfix"></div></div><div class="description ' + hiddenDesc + '">' + director + actors + description + '</div><div class="players"><div class="title">' + playerTitle + badQual + '</div><div class="pList"></div></div><div class="isItSlow" onclick="openModal(\'faster\')"><img src="img/speed.png"/><div class="upt">Seu Vizion é lento?</div><div class="down">Clique para saber como deixar o Vizion rápido e com carregamento sem travamentos!</div><div class="clearfix"></div></div><div class="social"><div class="Gtitle">Curtiu o Filme?</div><div class="Gsubtitle">Compartilhe nas redes sociais!</div><div class="Gbtn facebook hoverize" onclick="Android.shareOnFacebook(\'' + data.movie.url + '\');"><img src="img/icon/facebook.png" alt=""></div><div class="Gbtn twitter hoverize" onclick="Android.shareOnTwitter(\'' + data.movie.url + '\');"><img src="img/icon/twitter.png" alt=""></div><div class="Gbtn googleplus hoverize" onclick="Android.shareOnGoogle(\'' + data.movie.url + '\');"><img src="img/icon/google.png" alt=""></div></div><div class="setWallpaper ' + wallpaperDownStatus + '"><div class="Gtitle">Curtiu a imagem?</div><div class="Gsubtitle">Defina a imagem do filme como papel de parede do seu celular.</div><div class="Gbtn hoverize" onclick="setAsWallpaper(\'' + background + '\');">ATIVAR PAPEL DE PAREDE</div></div></div></div>')
                                setTimeout(function() {
                                    $("#moviePage").addClass("showIt")
                                }, 100);
                                if (data.movie.countPlayers != 0) {
                                    $.each(data.playerList, function(i, item) {
                                        var playerDown = item.down;
                                        var playerUrl = item.url;
                                        var playerClass = "other";
                                        var playerLogo = "playerUnknown";
                                        if (playerUrl.indexOf("openload") !== -1) {
                                            playerClass = "openload";
                                            playerLogo = "playerOpenload"
                                        } else if (playerUrl.indexOf("thevid") !== -1) {
                                            playerClass = "thevid";
                                            playerLogo = "playerThevid"
                                        } else if (playerUrl.indexOf("vizerplayer") !== -1) {
                                            playerClass = "vizerplayer";
                                            playerLogo = "playerVizer";
                                        }
                                        var playerName = item.name;
                                        $("#moviePage .pList").append('<div class="item generalPlayer ' + playerClass + ' hoverize" data-player-down="' + playerDown + '" data-player-url="' + playerUrl + '" data-player-type="' + playerClass + '"><div class="icon"><img src="img/' + playerLogo + '.png" alt=""></div><div class="title">' + playerName + '</div></div>')
                                    })
                                }

                                Android.close();

                            }else if (data.status == "maintenance") {
                                showMaintenance()

                            } else {
                                showError(data.error)
                            }
                        },
                        error: function (response) {

                            showErrorServe(1)
                        }

                    });
}

function closeMovie() {
    $("#moviePage").removeClass("showIt");
    $("body,html").removeClass("noScroll");
    setTimeout(function() {
        $("#moviePage").remove()
    }, 300)
}

function androidSeeLaterShake() {
    if ($("#moviePage").length) {
        alert("shaked");
        var movie = $("#moviePage").attr("data-movie-id");
        seeLaterMovie(movie)
    }
}

function seeLaterMovie(movie) {
    if (userId != 0) {
        $.ajax({

            method: "POST",
            url: siteUrlM + 'user/seeLater',
            data: { 
                id: movie,
                uid: userId,
            },
            cache: true,
            success: function (data) {

                if (data == 1) {
                    $("#moviePage .options .seelater").html('<img src="img/icon/bookmarkFill.png" alt="fill" /> Já viu?');
                    $("#moviePage .topIcons .seelater").html('<img src="img/icon/bookmarkFill.png" alt="fill" />')
                }else if (data == 0){
                    $("#moviePage .options .seelater").html('<img src="img/icon/bookmark.png" alt="fill" /> Ver depois');
                    $("#moviePage .topIcons .seelater").html('<img src="img/icon/bookmark.png" alt="fill" />')
                }else{

                    showError(data)
                }
            },
            error: function (response) {

                showErrorServe(1)
            }

        });

    }else{

        showErrorServe(2)
    }
}

function likeMovie(movie) {
    if (userId != 0) {
        $.ajax({

            method: "POST",
            url: siteUrlM + 'user/movieLike',
            data: { 
                id: movie,
                uid: userId,
            },
            cache: true,
            success: function (data) {

                var countLikes = parseInt($("#moviePage .leftitem.likes b").html());
                if (data == 1) {
                    $("#moviePage .options .like").html('<img src="img/icon/likeFill.png" alt="fill" /> Curti');
                    $("#moviePage .leftitem.likes b").empty().html(countLikes + 1)

                }else if (data == 0){

                    $("#moviePage .options .like").html('<img src="img/icon/likes.png" alt="fill" /> Curtir');
                    $("#moviePage .leftitem.likes b").empty().html(countLikes - 1)

                }else{

                    showError(data)
                }
            },
            error: function (response) {

                showErrorServe(1)
            }

        });
    }else{

        showErrorServe(2)
    }
}

function returnSeriePoster(id, title, poster, episode, see) {
    if (episode == !1) {
        episode = ""
    } else {
        episode = '<span>' + episode + '</span>'
    }

    if (see == !0) {
        see = '<div class="mustsee" style="background-color:#ef1a51;">SEGUINDO</div>'
    } else {
        see = ""
    }

    return '<div class="item" onclick="showSeriePage(\'' + id + '\');"><div class="inner lazy loadBg" data-original="' + poster + '"><div class="img-op"></div><div class="img-hover"></div><div class="playicon"></div>'+see+'<div class="title">' + title + ' ' + episode + '</div></div></div>'
}

function getSeriesList(term, appendTo, slider) {

    $.ajax({

        method: "GET",
        url: siteUrlM + 'serie/'+ term,
        data: { 
            uid      : userId,
        },
        cache: true,
        success: function (data) {

            if (data.status == "success") {
                if (data.series == "none") {
                    return !1
                }
                $.each(data.series, function(i, item) {
                    var episd = item.episode;
                    if (episd == "no") {
                        episd = !1
                    }
                    $(appendTo).append(returnSeriePoster(item.id, item.title, item.poster, episd, item.see))
                });
                if (slider) {
                    $(appendTo).append('<div class="item"></div>');
                    createSlider(appendTo, 5)
                }
                lazyLoadLauncher()
            } else if (data.status == "logout") {
                logout()
            } else {
                showError(data.error)
            }
        },
        error: function (response) {

            showErrorServe(1)
        }

    });
}

function showSeriesPage() {
    $("#pagination").empty();
    $("#pagination").append('<div id="seriesPage" class="normalPage"><div class="listHeader series"><div class="item active list" onclick="openSeriesCatPage(\'list\');">Lista de séries</div><div class="item animes" onclick="openSeriesCatPage(\'animes\');">Animes</div><div class="item episodes" onclick="openSeriesCatPage(\'episodes\');">Últimos Episódios</div><div class="item following" onclick="openSeriesCatPage(\'following\');">Séries Seguindo</div><div class="item"></div></div><div class="content"></div></div>');
    listMenuSlide();
    openSeriesCatPage("list")
}

var animePage = 1;

function openSeriesCatPage(cat) {
    if (!cat) {
        return !1
    }
    showLoading();
    $("#seriesPage .listHeader .item").removeClass("active");
    $("#seriesPage .listHeader .item." + cat).addClass("active");
    $("#seriesPage .content").empty();
    if (cat == "list") {
        $("#seriesPage .content").append('<div class="generalTitle series"><b>Lista</b> De series</div><div class="h20"></div><div class="bigSeriesList"></div><div class="loadMoreItemsButton" onclick="loadMoreSeries();">CARREGAR MAIS SÉRIES</div>');
        loadMoreSeries()
    } else if (cat == "animes") {
        animePage = 1;
        $("#seriesPage .content").append('<div class="generalTitle series">MELHORES <b>ANIMES</b></div><div class="generalList listing listAnimes"></div><div class="h20"></div><div class="loadMoreItemsButton" onclick="LoadAnime(\'loadAnime\');">CARREGAR MAIS ANIMES</div></div>');
        LoadAnime('loadAnime')

    } else if (cat == "episodes") {
        $("#seriesPage .content").append('<div class="generalTitle series"><b>Últimos</b> Episódios</div><div class="generalList listing recentEpisodes"></div><div class="h20"></div>');
        getSeriesList("recent", "#seriesPage .recentEpisodes", !1)
    } else if (cat == "following") {
        $("#seriesPage .content").append('<div class="generalTitle series"><b>Séries</b> Seguindo</div><div</div><div class="generalList listing following"></div><div class="h20"></div>');
        if (userId != 0) {
            getSeriesList("following", "#seriesPage .generalList.following", !1)
        }else{
            showErrorServe(2)
        }
    }
}

var seriePage = 1;

function loadMoreSeries() {
    var limit = seriePage++;
    $.ajax({

        method: "GET",
        url: siteUrlM + 'serie/serieslist/',
        data: {
            limit: limit,
        },
        cache: true,
        success: function (data) {

            if (data.status == "success") {
                $.each(data.series, function(i, item) {
                    $("#seriesPage .bigSeriesList").append('<div class="item" onclick="showSeriePage(\'' + item.id + '\')"><img src="img/load.gif" data-original="' + item.image + '" class="lazy hoverize" /></div>')
                });
                lazyLoadLauncher()
            }else if (data.status == "maintenance") {
                showMaintenance()

            } else {
                showError(data.error);
                seriePage = 1;
            }
        },
        error: function (response) {

            showErrorServe(1)
        }

    });
}

function showSeriePage(id) {
    if (!id) {
        return !1
    }
    $("#seriePage").remove();
    $.ajax({

        method: "GET",
        url: siteUrlM + 'serie/post/',
        data: { 
            post : id,
            uid       : userId
        },
        cache: true,
        success: function (data) {

            if (data.status == "success") {
                var background = data.serie.background;
                if (background == "" || background == "https://image.tmdb.org/t/p/original") {
                    background = data.serie.poster
                }
                var wallpaperDownStatus = "";
                if (data.serie.background == "") {
                    wallpaperDownStatus = "hidden"
                }
                var rating = data.serie.rating;
                if (rating = "N/A") {
                    rating = "0.0"
                }
                var year = data.serie.year;
                if (year == "") {
                    year = "online"
                }
                var director = data.serie.director;
                if (director != "") {
                    director = '<div class="title">Realizador</div><div class="text">' + data.serie.director + '</div><div class="h10"></div>'
                }
                var actors = data.serie.actors;
                if (actors != "") {
                    actors = '<div class="title">Elenco</div><div class="text">' + data.serie.actors + '</div><div class="h10"></div>'
                }
                var description = data.serie.description;
                if (description != "") {
                    description = '<div class="title">Sinopse</div><div class="text">' + data.serie.description + '</div>'
                }
                var hiddenDesc = "";
                if (actors == "" && director == "" && description == "") {
                    hiddenDesc = "hidden"
                }
                var followButton = '<div class="followSerie hoverize" onclick="followSerie(\'' + data.serie.id + '\');"><img src="img/icon/arrowRight.png" alt="">SEGUIR</div>';
                var followTopButton = 'SEGUIR';
                var followTopClass = "";
                if (data.serie.iSeeLater == !0) {
                    followButton = '<div class="followSerie active hoverize" onclick="followSerie(\'' + data.serie.id + '\');"><img src="img/icon/checked.png" alt="">Seguindo</div>';
                    followTopButton = 'Seguindo';
                    followTopClass = "active"
                }
                var genres = data.serie.genre;
                if (genres == "undefined") {
                    genres = ""
                }
                $("body,html").addClass("noScroll");
                $("#content").append('<div id="seriePage" class="generalMoviePage" data-serie-id="' + data.serie.id + '"><div class="header" style="background-image:url(' + background + ');"><div class="clearfix"></div><div class="gradient"></div><div class="topIcons"><div class="goBack hoverize" onclick="closeSerie();"><img src="img/icon/goBack.png" alt=""></div><div class="follow hoverize ' + followTopClass + '" onclick="followSerie(\'' + data.serie.id + '\');">' + followTopButton + '</div></div><div class="content"><div class="date color">Serie <b>' + year + '</b></div><div class="title">' + data.serie.title + '</div><div class="category">' + genres + '</div><div class="otherInfos"><div class="leftitem follow"><div class="icon"><img src="img/icon/arrowRight.png" alt=""></div><b>' + data.serie.countLikes + '</b> Seguidores</div><div class="leftitem comments"><div class="icon"><img src="img/icon/comments.png" alt=""></div><b>' + data.serie.countComments + '</b> Comentários</div><div class="rating"><b>' + data.serie.rating + '</b>/10</div></div></div></div><div class="bigContent"><div class="options"><div class="trailer hoverize" onclick="openTrailer(\'' + data.serie.trailer + '\');"><img src="img/icon/play.png" alt="">Assistir Trailer</div>' + followButton + '<div class="clearfix"></div></div><div class="description ' + hiddenDesc + '">' + director + actors + description + '</div><div class="dataList" style="background-image:url(' + background + ');"></div><div class="isItSlow" onclick="openModal(\'faster\')"><img src="img/speed.png"/><div class="upt">Seu Vizion é lento?</div><div class="down">Clique para saber como deixar o Vizion rápido e com carregamento sem travamentos!</div><div class="clearfix"></div></div><div class="social"><div class="Gtitle">Curtiu a Série?</div><div class="Gsubtitle">Compartilhe nas redes sociais!</div><div class="Gbtn facebook hoverize" onclick="Android.shareOnFacebook(\'' + data.serie.url + '\');"><img src="img/icon/facebook.png" alt=""></div><div class="Gbtn twitter hoverize" onclick="Android.shareOnTwitter(\'' + data.serie.url + '\');"><img src="img/icon/twitter.png" alt=""></div><div class="Gbtn googleplus hoverize" onclick="Android.shareOnGoogle(\'' + data.serie.url + '\');"><img src="img/icon/google.png" alt=""></div></div><div class="setWallpaper ' + wallpaperDownStatus + '"><div class="Gtitle">Curtiu a imagem?</div><div class="Gsubtitle">Defina a imagem da série como papel de parede do seu celular.</div><div class="Gbtn hoverize" onclick="setAsWallpaper(\'' + background + '\');">ATIVAR PAPEL DE PAREDE</div></div></div></div>')
                setTimeout(function() {
                    $("#seriePage").addClass("showIt")
                }, 100);
                $("#seriePage .dataList").append('<div class="imgop"></div><div class="h20"></div><div class="generalTitle">Escolha uma temporada:</div><div class="h20"></div><div class="seasons"></div><div class="episodes"></div><div class="episodeData"></div>');
                if (data.seasonsCount != 0) {
                    $.each(data.seasons, function(i, item) {
                        var name = item.name + "ª temporada";
                        $("#seriePage .dataList .seasons").append('<div class="item" data-row-id="' + item.id + '">' + name + '</div>')
                    });
                    $("#seriePage .dataList .seasons").append('<div class="item hidden"></div>');
                    createSlider('#seriePage .dataList .seasons', 0)
                }

                Android.close();

            }else if (data.status == "maintenance") {
                showMaintenance()

            } else {
                showError(data.error)
            }
        },
        error: function (response) {

            showErrorServe(1)
        }

    });
}

function closeSerie() {
    $("#seriePage").removeClass("showIt");
    $("body,html").removeClass("noScroll");
    setTimeout(function() {
        $("#seriePage").remove()
    }, 300)
}

function close(){
    closeSerie();
    closeMovie();

    $(".itemSelectorBox").removeClass("active");

}

function followSerie(id) {
    if (userId != 0) {
        $.ajax({

            method: "POST",
            url: siteUrlM + 'user/followSerie',
            data: { 
                id: id,
                uid: userId,
            },
            cache: true,
            success: function (data) {

                var countFollowers = parseInt($("#seriePage .leftitem.follow b").html());
                if (data == 1) {
                    $("#seriePage .options .followSerie").html('<img src="img/icon/checked.png" alt=""> SEGUINDO');
                    $("#seriePage .topIcons .follow").html('SEGUINDO');
                    $("#seriePage .leftitem.follow b").empty().html(countFollowers + 1);
                    $("#seriePage .options .followSerie, #seriePage .topIcons .follow").addClass("active")

                }else if (data == 0){

                    $("#seriePage .options .followSerie").html('<img src="img/icon/arrowRight.png" alt=""> SEGUIR');
                    $("#seriePage .topIcons .follow").html('SEGUIR');
                    $("#seriePage .leftitem.follow b").empty().html(countFollowers - 1);
                    $("#seriePage .options .followSerie, #seriePage .topIcons .follow").removeClass("active")

                }else{

                    showError(data)
                }
            },
            error: function (response) {

                showErrorServe(1)
            }

        });
    }else{

        showErrorServe(2)
    }
}
$(document).on("click", "#seriePage .dataList .seasons .item", function() {
    getEpisodes($(this).attr("data-row-id"))
});

function getEpisodes(id) {
    $.ajax({

        method: "GET",
        url: siteUrlM + 'serie/episodes/',
        data: { 
            post: id,
            uid: userId,
        },
        cache: true,
        success: function (data) {

            if (data.status == "success") {

                if (data.episodeCount != 0) {
                    $("#seriePage .dataList .episodeData").empty();
                    $('#seriePage .dataList .generalTitle').html("Escolha um episódio:");
                    $('#seriePage .dataList .seasons .item').removeClass("active");
                    $('#seriePage .dataList .seasons .item[data-row-id="' + id + '"]').addClass("active");
                    $("#seriePage .dataList .episodes").empty().trigger('destroy.owl.carousel');
                    $.each(data.episodes, function(i, item) {
                        var name = item.name;
                        var iSawClass = "";
                        var iSawEye = "";
                        if (item.iSaw == !0) {
                            iSawClass = "seen";
                            iSawEye = '<img src="img/icon/eye.png" alt="eye" />'
                        }
                        $("#seriePage .dataList .episodes").append('<div class="item ' + iSawClass + '" data-row-id="' + item.id + '">' + iSawEye + name + '</div>')
                    });
                    $("#seriePage .dataList .episodes").append('<div class="item hide"></div>');
                    createSlider('#seriePage .dataList .episodes', 0)
                }else{

                    showErrorServe(3);
                }

            }else{

                showError(data.error)
            }
        },
        error: function (response) {

            showErrorServe(1)
        }

    });
}
$(document).on("click", "#seriePage .dataList .episodes .item", function() {
    getEpisodeData($(this).attr("data-row-id"))
});

function getEpisodeData(id) {
    $.ajax({

        method: "GET",
        url: siteUrlM + 'serie/player',
        data: { 
            post: id,
            uid: userId,
        },
        cache: true,
        success: function (data) {

            if (data.status == "success") {
                $("#seriePage .episodeData").empty();
                $('#seriePage .dataList .episodes .item').removeClass("active");
                $('#seriePage .dataList .episodes .item[data-row-id="' + id + '"]').addClass("active");
                if (data.iSaw == !0) {
                    $("#seriePage .dataList .episodeData").append('<div class="markAsSeen active" data-row-id="' + data.id + '"><img src="img/icon/eye.png" alt="eye" />Desmarcar como visto</div>')
                } else {
                    $("#seriePage .dataList .episodeData").append('<div class="markAsSeen" data-row-id="' + data.id + '"><img src="img/icon/eye.png" alt="eye" />Marcar como visto</div>')
                }
                if (data.countPlayers != 0) {
                    $.each(data.playerList, function(i, item) {
                        var playerDown = item.down;
                        var playerUrl = item.url;
                        var playerClass = "other";
                        var playerLogo = "playerUnknown";
                        if (playerUrl.indexOf("openload") !== -1 || playerUrl.indexOf("oload") !== -1) {
                            playerClass = "openload";
                            playerLogo = "playerOpenload"
                        } else if (playerUrl.indexOf("thevid") !== -1) {
                            playerClass = "thevid";
                            playerLogo = "playerThevid"
                        } else if (playerUrl.indexOf("vizerplayer") !== -1) {
                            playerClass = "vizerplayer";
                            playerLogo = "playerVizer";
                        }
                        var playerName = item.name;
                        $("#seriePage .dataList .episodeData").append('<div class="item generalPlayer ' + playerClass + ' hoverize" data-player-down="' + playerDown + '" data-player-url="' + playerUrl + '" data-player-type="' + playerClass + '"><div class="icon"><img src="img/' + playerLogo + '.png" alt=""></div><div class="title">' + playerName + '</div></div>')
                    })
                }

            }else{

                showError(data.error)
            }
        },
        error: function (response) {

            showErrorServe(1)
        }

    });
}
$(document).on("click", "#seriePage .dataList .markAsSeen", function() {
    markAsSeen($(this).attr("data-row-id"))
});

function markAsSeen(id) {
    if (userId != 0) {
        $.ajax({

            method: "POST",
            url: siteUrlM + 'user/markAsSeen',
            data: { 
                id: id,
                uid: userId,
            },
            cache: true,
            success: function (data) {

                var countFollowers = parseInt($("#seriePage .leftitem.follow b").html());
                if (data == 1) {
                    $('#seriePage .dataList .episodes .item[data-row-id="' + id + '"]').addClass("seen");
                    $('#seriePage .dataList .episodes .item[data-row-id="' + id + '"]').prepend('<img src="img/icon/eye.png" alt="eye" />');
                    $('#seriePage .dataList .markAsSeen[data-row-id="' + id + '"]').addClass("active").html('<img src="img/icon/eye.png" alt="eye" />Desmarcar como visto')

                }else if (data == 0){

                    $('#seriePage .dataList .episodes .item[data-row-id="' + id + '"]').removeClass("seen");
                    $('#seriePage .dataList .episodes .item[data-row-id="' + id + '"] img').remove();
                    $('#seriePage .dataList .markAsSeen[data-row-id="' + id + '"]').removeClass("active").html('<img src="img/icon/eye.png" alt="eye" />Marcar como visto')

                }else{

                    showError(data.error)
                }
            },
            error: function (response) {

                showErrorServe(1)
            }

        });
    }else{

        showErrorServe(2)
    }
}
$(document).on("click", ".generalPlayer", function() {
    var purldown = $(this).attr("data-player-down");
    var purl = $(this).attr("data-player-url");
    var type = $(this).attr("data-player-type");
    download = "";
    streamUrl = "";
    playerOriginal = "";
    playerMx = "";
    playerLocalcast = "";
    if (type == "openload") {

        if (mxStatus == "true") {
            playerMx = '<div class="stream item" onclick="openPlayer(\'' + purl + '\', \'onMxPlayer\');"><img src="img/icon/mxplayer.png" /> MXPLAYER</div>'
        }

        if (lcStatus == "true") {
            playerLocalcast = '<div class="stream item" onclick="openPlayer(\'' + purl + '\', \'onLocalcast\');"><img src="img/icon/localcast.png" /> LOCALCAST</div>'
        }

        if (purldown != "null") {

            download = '<div class="download item" onclick="Android.downloadVideo(\'' + purldown + '\')"><img src="img/icon/download.png" /> Baixar Video</div>';

        } 
        streamUrl = purl;

    }else if (type == "vizerplayer") {

        streamUrl = purldown;

    } else {

        streamUrl = purl;
    }

    $("#selectPlayerBox").remove();
    $("#content").prepend('<div id="selectPlayerBox" class="itemSelectorBox"><div class="stream item" onclick="openPlayer(\'' + streamUrl + '\', \'' + type + '\');"><img src="img/icon/stream.png" /> Assistir online</div> ' + playerOriginal + ' ' + playerMx + ' ' + playerLocalcast + ' ' + download + ' <div class="item duvidas" onclick="openModal(\'duvidas\');"><img src="img/icon/info.png" />Duvidas e problemas</div></div>');
    setTimeout(function() {
        $("#selectPlayerBox").addClass("active")
    }, 200)
});

function hideSelectPlayerBox() {
    $("#selectPlayerBox").removeClass("active");
    setTimeout(function() {
        $("#selectPlayerBox").remove()
    }, 200)
}

function showTvPage() {
    $("#pagination").empty();
    $("#pagination").append('<div id="tvPage"><div class="itemList"></div></div>');
    showLoading();
    $.ajax({

        method: "GET",
        url: siteUrlM + 'movie/tvChannels/',
        cache: true,
        success: function (data) {

            if (data.status == "success") {
                if (data.count != 0) {
                    $.each(data.channels, function(i, item) {
                        $("#tvPage .itemList").append('<div class="item hoverize" onclick="openChannelPlayers(\'' + item.id + '\');"><img src="' + item.image + '" alt="channel"/></div>')
                    })
                }
            }else if (data.status == "maintenance") {
                showMaintenance()

            } else {
                showError(data.error);
            }
        },
        error: function (response) {

            showErrorServe(1)
        }

    });
}

function openChannelPlayers(id) {
    if (!id) {
        return !1
    }
    $.ajax({

        method: "GET",
        url: siteUrlM + 'movie/tv/',
        data:{

            post: id
        },
        cache: true,
        success: function (data) {

            if (data.status == "success") {
                $("#channelPlayerBox").remove();
                $("#content").prepend('<div id="channelPlayerBox" class="itemSelectorBox"></div>');
                if (data.count != 0) {
                    $("#channelPlayerBox").append('<div class="tit">Escolha um player:</div>');
                    $.each(data.players, function(i, item) {
                        $("#channelPlayerBox").append('<div class="stream item" onclick="Android.openTvPlayer(\'' + item.url + '\');"><img src="img/icon/stream.png" /> ' + item.name + '</div>')
                    })
                } else {
                    $("#channelPlayerBox").append('<div class="tit">Nenhum player disponível.</div>')
                }
                setTimeout(function() {
                    $("#channelPlayerBox").addClass("active")
                }, 200)
            } else {
                showError(data.error)
            }
        },
        error: function (response) {

            showErrorServe(1)
        }

    });
}

function hideChannelPlayers() {
    $("#channelPlayerBox").removeClass("active");
    setTimeout(function() {
        $("#channelPlayerBox").remove()
    }, 200)
}

function showAccount() {
    $("#pagination").empty();
    var usRank = "";
    if (userRank == 5) {
        usRank = '<div class="item admin">ADMIN</div>'
    } else {
        usRank = '<div class="item user">USUÁRIO</div>'
    }
    var isVip = "";
    if (userRank >= 2) {
        isVip = '<div class="item vip">VIP</div>'
    }
    $("#pagination").append('<div id="accountPage"><div class="header"><div class="clearfix"></div><div class="image" style="background-image:url(' + userImage + ');"></div><div class="udata"><div class="username">' + userName + '</div><div class="email">' + userEmail + '</div><div class="rank">' + usRank + '' + isVip + '</div></div><div class="button w50 edit hoverize" onclick="openModal(\'changePw\')"><img src="img/icon/pw.png" alt="">Mudar Senha</div><div class="button w50 logout hoverize" onclick="logout();"><img src="img/icon/logout.png" alt="">Logout</div><div class="clearfix"></div></div><div class="h20"></div><div class="generalTitle profile">Informações</div><div class="buttonList"><div class="button vip hoverize" onclick="openModal(\'vip\')"><img src="img/icon/Vizion.png" alt="">VIP Vizion</div><div class="button beVip hoverize" onclick="openModal(\'winVip\')"><img src="img/icon/prize.png" alt="">GANHE VIP</div><div class="button duvidas hoverize" onclick="openModal(\'duvidas\')"><img src="img/icon/info.png" alt="">Problemas ou duvidas</div><div class="button speed hoverize" onclick="openModal(\'faster\')"><img src="img/icon/speed.png" alt="">Vizion MAIS RÁPIDO</div><div class="button cast hoverize" onclick="openModal(\'cast\')"><img src="img/icon/cast.png" alt="">CHROMECAST/DLNA</div><div class="button contact hoverize" onclick="OpenMail();"><img src="img/icon/contact.png" alt="">Contato</div><div class="button facebook hoverize" onclick="openVizer();"><img src="img/icon/world-web.png" alt="">Acesse Nosso Site</div></div></div>');

    showLoading()
}

function openModal(id) {
    $("#coolModal").remove();
    if (id == "vip") {
        $("body").append('<div id="coolModal"><img src="img/icon/close.png" class="close" onclick="closeCoolModal();" /><div class="text"><br /><img src="img/vip.png" alt="" /><br /><br /><div class="subTitle">O que é?</div>VIP é um usuário privilegiado com diversas funcionalidades extra.<br><br><div class="subTitle">Como posso ser VIP?</div>Pode ganhar em eventos/sorteios pelo facebook/Instagram, sorteio semanal no aplicativo, ou transmissão/live ao vivo.<br>Também pode ganhar por ser um usuário exemplar, um usuário que ajuda o site, compartilha e divulga.<br>Não é possivel comprar VIP.<br><br><div class="subTitle">Porque não posso comprar VIP?</div>O Vizion é um aplicativo sem fins lucrativos. <br>Logo, não podemos receber qualquer valor dos usuários, todos os ganhos em anúncios são usados em serviços para a melhoria do projeto. <br><br><div class="subTitle">Que previlégios tem?</div>Aplicativo sem anúncios <br>Player VIP/Rápido Pedidos destacados<br>Suporte mais rápido<br>Tag VIP em comentários e pedidos<br><div class="clearfix"></div></div></div>')
    } else if (id == "winVip") {
        $("body").append('<div id="coolModal"><img src="img/icon/close.png" class="close" onclick="closeCoolModal();" /><div class="text"><br /><img src="img/vip.png" alt="" /><br /><br /><div class="subTitle">Como ganhar VIP.</div>Você ajuda, nós ajudamos. <br>Toda a semana são sorteados 2 vips a usuários que mostram interesse em ajudar o projeto. <br>As pessoas são escolhidas aleatóriamente pelas redes sociais. Vamos olhar para você como alguem que realmente ajudou no projeto, por isso merece ser recompensado! <br><br>Para ganhar apenas precisa de compartilhar o nome do Vizion. <br>Partilhe qualquer coisa no facebook ou twitter com a tag <b>#Vizion</b> e pode ser 2 das pessoas escolhidas semanalmente.<br><br>Outra forma de ganhar VIP é com criação de conteúdo. <br>É youtuber e contem um numero razoavel de views? <br>Posta um video mostrando o Vizion para seu canal, e pode ganhar vários VIP\'s para você, família e amigos. <br>Obviamente que não é valido para canais iniciantes.<br><br>E ainda tem a ultima forma, que é participar dos eventos do facebook.<br>Em marcas importantes do projeto são sorteados dezenas de VIP\'s, por isso curta e fique atento(a);</div></div>')
    } else if (id == "duvidas") {
        $("body").append('<div id="coolModal"><img src="img/icon/close.png" class="close" onclick="closeCoolModal();" /><div class="text"><div class="title">Perguntas Frequentes:</div><br><b>Como falo "Vizion"?</b>"Vizion" se pronúncia na lingua inglesa, "vaizer". <br> <b>O Vizion é pago?</b> Não, o Vizion é totalmente grátis! <br><b>Tem como ser VIP?</b>Sim, verifique como no menu de VIP. <br><b>Funciona em todo o mundo?</b>Sim, o Vizion está disponível em todos os países. <br><b>Posso doar para o projeto?</b>Não, o Vizion é um projeto sem fins lucrativos, logo não é possível doar. <br><b>Se é sem fins lucrativos, porque tem anúncios?</b>Os Anúncios pagam o servidor e os serviços dos uploaders de ficheiros. <br><b>Tem alguma forma de ajudar o Vizion?</b>A unica forma de ajudar o projeto, é na divulgação, ajude divulgando e ganhe um VIP! <br><br><div class="title">Problemas:</div><br><b>O meu player não carrega!!!</b>O problema pode estar referido a duas situações. <br>A qualidade de sua internet não é boa, ou está assistindo em hora de pico, um hora em que tem muita gente assistindo ao mesmo tempo. <br>A qualidade de internet não tem nada a ver com os megas, pois isso não significa nada. O player tem limite de 1mb de download, por isso vai baixar igual com 1 mega ou 500 mega de internet... <br>A internet depende da distancia ao servidor ou satelite, se não acredita que isso é verdade, tente com 3G e verá como carrega sem qualquer problema 🙂 <br>Outro problema pode ser a congestão de pessoas no servidor. <br>Se lembre que o player não é do Vizion, por isso não vai adiantar nos insultar.<br>O Vizion usa players como openload, thevid etc... Esses players não são youtube obviamente, não ganham dinheiro como todos os outros serviços, por isso, não podem pagar milhões de dolares em servidores para todas as pessoas. <br>Se nenhuma dessas duvidas se encaixa no seu problema, não adianta tentar usar o Vizion, eu mesmo não recomendo. <br><b>Minha net é lenta, como escolho a qualidade?</b>No Vizion não é possível escolher a qualidade, essa função não está disponível porque os players não permitem. <br><b>Meu player fica cinzento!</b>Esse é um problema que acontece em celulares incompatíveis. Uma das soluções é instalar o google chrome no celular, caso continue não funcionando, não tem solução. <br><b>Aplicativo muito lento.</b>O Vizion é um aplicativo gigante, contem 60.000 videos no total, por isso é complicado deixar o aplicativo 100% rápido.<br><b>Não consigo usar Chromecast</b> Para usar chromecast leia o tutorial de chromecast na aba perfil.<br><b>Meus canais de TV não pegam.</b>Os canais mais uma vez podem estar congestionados, ou seu celular não é compatível.<br><b>Baixei o video mas não tem legenda!</b>Quando você baixa o video, a legenda não vem incluida, tem que baixar também a legenda e depois user um player que leia legenda. MXplayer é um bom exemplo.</br><b>Meu player não tem legenda?</b>No player tem um botão "CC", clique nele para mostrar a legenda.<br></div></div>')
    } else if (id == "faster") {
        $("body").append('<div id="coolModal"><img src="img/icon/close.png" class="close" onclick="closeCoolModal();" /><div class="text"><div class="title">Como deixar mais rápido:</div> O Vizion é um aplicativo grátis, logo irá funcionar igual Netflix, todo o trabalho de milhares de pessoas é feito por 2 pessoas, por isso esperamos respeito. <br> Em algumas internets do Brasil, o limite de download está bloqueado, por isso que o Vizion parece lento, mas na verdade é sua provedora de internet. Para desbloquear a internet, siga os seguintes passos. <br><br><b>Desbloquear por aplicativo externo</b> Pesquise no Google Play/Play Store por "DNS CHANGER", instale e ative o novo DNS e pode usar o Vizion mais rápido. <br><br><b>Desbloquear manualmente</b> Siga os passos no video seguinte. <br><br> <iframe width="180" height="300" src="https://www.youtube.com/embed/c6uqFBPjGcQ?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe></div>')
    } else if (id == "cast") {
        $("body").append('<div id="coolModal"><img src="img/icon/close.png" class="close" onclick="closeCoolModal();" /><div class="text"><div class="title">Chromecast:</div> Para usar chromecast ou enviar para a smart TV via dlna, instale o aplicativo "Localcast" pela google play. <br><br> Ao escolher um player no Vizion, irá mostrar a opção do localcast, você escolhe e nele você pode transmitir para seu chromecast, tv, airplay, etc... <br><br>Nem todas as TVs aceitam legendas em DLNA, se não mostrar na sua, não tem solução.</div>')
    } else if (id == "changePw") {
        if (userId != 0) {
            $("body").append('<div id="coolModal"><img src="img/icon/close.png" class="close" onclick="closeCoolModal();" /><div class="title">Mudar senha:</div><div class="changePw"><div class="error"></div><input type="password" placeholder="Senha atual" class="actualPw" autocomplete="off" /><input type="password" placeholder="Nova senha" autocomplete="off" class="newPw"/><input type="password" class="repeatNewPw" autocomplete="off" placeholder="Repetir nova senha"/><div class="button update">Atualizar</div></div></div>')
        }else{

            showErrorServe(2)
        }
    } else if (id == "updated") {
        $("body").append('<div id="coolModal"><img src="img/icon/close.png" class="close" onclick="closeCoolModal();" /><div class="title">Atualizado com sucesso</div></div>')
    } else if (id == "userImages") {
        $("body").append('<div id="coolModal" class="changeImage"><img src="img/icon/close.png" class="close" onclick="closeCoolModal();" /><div class="title">Imagem de Perfil</div><br><div class="vipImage"></div><b>Ao escolher uma das seguintes imagens, o perfil é automaticamente atualizado.</b><div class="imageList"></div></div>');
        if (userRank >= 2) {
            $(".changeImage .vipImage").append('<div class="title">Como é VIP pode carregar sua imagem de perfil automáticamente pelo seu facebook. Insira seu <b>ID</b> de usuário do facebook <b onclick="openBrowser(\'http://findmyfbid.com/\')">(Encontre aqui seu ID do facebook)</b>.</div><input type="text" placeholder="Nome de usuário facebook"/><div class="update">Atualizar</div>')
        }

        $.ajax({

            method: "POST",
            url: siteUrlM + 'user/imageslist/',
            cache: true,
            success: function (data) {

                if (data.status == "success") {
                    $.each(data.list, function(i, item) {
                        $(".changeImage .imageList").append('<div class="item lazy" data-original="' + item.image + '"></div>')
                    });
                    lazyLoadLauncher()
                } else {
                    closeCoolModal()
                }
            },
            error: function (response) {

                showErrorServe(1)
            }

        });
    }
    setTimeout(function() {
        $("#coolModal").addClass("active")
    }, 200)
}

function closeCoolModal() {
    $("#coolModal").removeClass("active");
    setTimeout(function() {
        $("#coolModal").remove()
    }, 200)
}
$(document).on("click", ".changePw .update", function() {
    var actualPw = $(".changePw .actualPw").val();
    var newPw = $(".changePw .newPw").val();
    var repeatNewPw = $(".changePw .repeatNewPw").val();
    $(".changePw .error").empty();
    if (newPw != repeatNewPw) {
        $(".changePw .error").html("Novas senhas são diferentes.");
        return !1
    }
    if (newPw.length < 5) {
        $(".changePw .error").html("Senha necessita pelo menos 6 letras.");
        return !1
    }
    if (newPw.length > 31) {
        $(".changePw .error").html("Limite de 32 letras.");
        return !1
    }
    $.ajax({

        method: "POST",<