Team:Tianjin/Resources/JS:app

function toggleMenu() {

   var t = $("#site-navigation"), e = $("#menu-icon");
   $("#nav-toggle").click(function ()
   {
       t.toggle(), e.toggleClass("active"), $("#site-header").toggleClass("modal")
   })

} function portfolioScroll() {

   var t = navigator.userAgent, e = $(".portfolio-list--wrapper"), i = $(".portfolio-list");
   if (-1 == t.indexOf("Mobile"))
   {
       var n = $(".scroll-bar").slider( 
       {
           range :!0,
           slide : function (t, n) 
           {
               i.width() > e.width() ? i.css("margin-left", Math.round(n.value  / 100 * (e.width() - i.width())) + "px") : i.css("margin-left", 
               0) 
           }
       });
   }
   else
   {
       $(".scroll-bar").remove(), $(".portfolio-list--outline").css({
           "overflow-x" : "scroll" 
       });
   }

} function smoothScroll() {

   $(".portfolio").find("a[href*='#']").click(function ()
   {
       if (location.pathname.replace(/^\//, "") == this.pathname.replace(/^\//, "") && location.hostname == this.hostname)
       {
           var t = $(this.hash);
           if (t = t.length ? t : $("[name=" + this.hash.slice(1) + "]"), t.length)
           {
               var e = t.position().top;
               return $(".page-container").animate( {
                   scrollTop : e
               }, 1e3), console.log(e), console.log(t.offset()), console.log($("#main-content").offset()), 
               !1
           }
       }
   });
   var t = $(".portfolio-details section"), e = $(".portfolio-nav");
   $(".page-container").on("scroll", function ()
   {
       var i = $(this).scrollTop();
       t.each(function ()
       {
           var n = $(this).position().top, o = n + $(this).outerHeight();
           i >= n && i <= o && (e.find("a").removeClass("active"), t.removeClass("active"), $(this).addClass("active"), 
           e.find("a[href='#" + $(this).attr("id") + "']").addClass("active"))
       })
   })

} function portfolioGuideNav() {

   $(".page-container").scroll(function ()
   {
       $(this).scrollTop() > $(window).height() ? $(".portfolio-nav-panel").fadeIn() : ($("#menu-icon span").removeClass("active"), 
       $(".portfolio-nav").hide(), !0 === $(".btn-hide").is(":visible") && ($(".btn-hide").hide(), $(".btn-guide").show()), 
       $(".portfolio-nav-panel").fadeOut())
   }), $("#portfolio-nav-toggle").on("click", function ()
   {
       $("#menu-icon span").toggleClass("active"), $(".portfolio-nav").slideToggle("slow"), $("#portfolio-nav-toggle .hint").toggle()
   })

} function gearTransform() {

   var t = $(window).width(), e = $(".gear-canvas--wrapper").outerWidth();
   ratio = t / e, ratio < 1 && $(".gear-canvas--wrapper").css(
   {
       "-webkit-transform" : "scale(" + ratio + ")", "-moz-transform" : "scale(" + ratio + ")", "-ms-transform" : "scale(" + ratio + ")", 
       "-o-transform" : "scale(" + ratio + ")", transform : "scale(" + ratio + ")"
   })

} function svgsnimations() {

   function t(t)
   {
       this.el = t, this.image = this.el.previousElementSibling, this.current_frame = 0, this.total_frames = 60, 
       this.path = [], this.length = [], this.handle = 0, this.init()
   }
   function e()
   {
       var t = r.clientHeight, e = window.innerHeight;
       return t < e ? e : t
   }
   function i()
   {
       return window.pageYOffset || r.scrollTop
   }
   function n(t)
   {
       var e = 0, i = 0;
       do {
           isNaN(t.offsetTop) || (e += t.offsetTop), isNaN(t.offsetLeft) || (i += t.offsetLeft)
       }
       while (t === t.offsetParent);
       return {
           top : e, left : i
       }
   }
   function o(t, o)
   {
       var a = t.offsetHeight, r = i(), s = r + e(), l = n(t).top, c = l + a;
       return l + a * (o || 0) <= s && c >= r
   }
   function a()
   {
       var e = Array.prototype.slice.call(document.querySelectorAll(".drawings svg")), i = [], n = !1, 
       a;
       e.forEach(function (e, n)
       {
           var a = new t(e);
           i[n] = a, setTimeout(function (t)
           {
               return function ()
               {
                   o(t.parentNode) && a.render()
               }
           }
           (e), 250)
       });
       var r = function ()
       {
           n || (n = !0, setTimeout(function ()
           {
               s()
           }, 60))
       },
       s = function ()
       {
           e.forEach(function (t, e)
           {
               o(t.parentNode, .5) && i[e].render()
           }), n = !1
       },
       l = function ()
       {
           function t()
           {
               s(), a = null
           }
           a && clearTimeout(a), a = setTimeout(t, 200);
       };
       window.addEventListener("scroll", r, !1), window.addEventListener("resize", l, !1)
   }
   var r = window.document.documentElement;
   window.requestAnimFrame = function ()
   {
       return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (t)
       {
           window.setTimeout(t, 1e3 / 60)
       }
   }(),
   window.cancelAnimFrame = function ()
   {
       return window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || function (t)
       {
           window.clearTimeout(t)
       }
   }(),
   t.prototype.init = function ()
   {
       var t = this;
       [].slice.call(this.el.querySelectorAll("path")).forEach(function (e, i)
       {
           t.path[i] = e;
           var n = t.path[i].getTotalLength();
           t.length[i] = n, t.path[i].style.strokeDasharray = n + " " + n, t.path[i].style.strokeDashoffset = n;
       })
   },
   t.prototype.render = function ()
   {
       this.rendered || (this.rendered = !0, this.draw())
   },
   t.prototype.draw = function ()
   {
       var t = this, e = this.current_frame / this.total_frames;
       if (e > 1) {
           window.cancelAnimFrame(this.handle);
       }
       else
       {
           this.current_frame++;
           for (var i = 0, n = this.path.length; i < n; i++) {
               this.path[i].style.strokeDashoffset = Math.floor(this.length[i] * (1 - e));
           }
           this.handle = window.requestAnimFrame(function ()
           {
               t.draw()
           })
       }
   },
   a()

} function lettering() {

   function t(t, e, i, n)
   {
       var o = t.text(), a = o.split(e), r = "";
       a.length && ($(a).each(function (t, e)
       {
           r += '' + e + "" + n
       }), t.attr("aria-label", o).empty().append(r))
   }
   var e = 
   {
       init : function ()
       {
           return this.each(function ()
           {
               t($(this), "", "char", "")
           })
       },
       words : function ()
       {
           return this.each(function ()
           {
               t($(this), " ", "word", " ")
           })
       },
       lines : function ()
       {
           return this.each(function ()
           {
               var e = "eefec303079ad17405c889e092e105b0";
               t($(this).children("br").replaceWith(e).end(), e, "line", "")
           })
       }
   };
   $.fn.lettering = function (t)
   {
       return t && e[t] ? e[t].apply(this, [].slice.call(arguments, 1)) : "letters" !== t && t ? ($.error("Method " + t + " does not exist on jQuery.lettering"), 
       this) : e.init.apply(this, [].slice.call(arguments, 0))
   }

} function funnytxt() {

   function t(t)
   {
       return / In / .test(t) || $.inArray(t, $.fn.textillate.defaults.inEffects) >= 0
   }
   function e(t)
   {
       return / Out / .test(t) || $.inArray(t, $.fn.textillate.defaults.outEffects) >= 0
   }
   function i(t)
   {
       return "true" !== t && "false" !== t ? t : "true" === t
   }
   function n(t)
   {
       var e = t.attributes || [], n = {};
       return e.length ? ($.each(e, function (t, e)
       {
           var o = e.nodeName.replace(/delayscale/, "delayScale");
           /^data-in-*/.test(o) ? (n.in = n.in || {}, n.in [o.replace(/data-in-/, "")] = i(e.nodeValue)) : /^data-out-*/.test(o) ? (n.out = n.out || {},
           n.out[o.replace(/data-out-/, "")] = i(e.nodeValue)) : /^data-*/.test(o) && (n[o] = i(e.nodeValue));
       }), n) : n
   }
   function o(t)
   {
       for (var e, i, n = t.length; n; e = parseInt(Math.random() * n), i = t[--n], t[n] = t[e], t[e] = i); return t
   }
   function a(t, e, i)
   {
       t.addClass("animated " + e).css("visibility", "visible").show(), t.one("animationend webkitAnimationEnd oAnimationEnd", 
       function ()
       {
           t.removeClass("animated " + e), i && i()
       })
   }
   function r(i, n, r)
   {
       var s = this, l = i.length;
       if (!l) {
           return void (r && r());
       }
       n.shuffle && (i = o(i)), n.reverse && (i = i.toArray().reverse()), $.each(i, function (i, o)
       {
           function s()
           {
               t(n.effect) ? c.css("visibility", "visible") : e(n.effect) && c.css("visibility", "hidden"), 
               !(l -= 1) && r && r()
           }
           var c = $(o), f = n.sync ? n.delay : n.delay * i * n.delayScale;
           c.text() ? setTimeout(function ()
           {
               a(c, n.effect, s)
           }, f) : s()
       })
   }
   var s = function (i, o)
   {
       var a = this, s = $(i);
       a.init = function ()
       {
a.$texts = s.find(o.selector), a.$texts.length || (a.$texts = $('
  • ' + s.html() + "
"),
           s.html(a.$texts)), a.$texts.hide(), a.$current = $("").text(a.$texts.find(":first-child").html()).prependTo(s), 
           t(o.in.effect) ? a.$current.css("visibility", "hidden") : e(o.out.effect) && a.$current.css("visibility", 
           "visible"), a.setOptions(o), a.timeoutRun = null, setTimeout(function ()
           {
               a.options.autoStart && a.start()
           },
           a.options.initialDelay)
       },
       a.setOptions = function (t)
       {
           a.options = t;
       },
       a.triggerEvent = function (t)
       {
           var e = $.Event(t + ".tlt");
           return s.trigger(e, a), e;
       },
       a.in = function (i, o)
       {
           i = i || 0;
           var s = a.$texts.find(":nth-child(" + (i + 1) + ")"), l = $.extend(!0, {},
           a.options, s.length ? n(s[0]) : {}), c;
           s.addClass("current"), a.triggerEvent("inAnimationBegin"), a.$current.text(s.html()).lettering("words"), 
           a.$current.find('[class^="word"]').css(
           {
               display : "inline-block", "-webkit-transform" : "translate3d(0,0,0)", "-moz-transform" : "translate3d(0,0,0)", 
               "-o-transform" : "translate3d(0,0,0)", transform : "translate3d(0,0,0)"
           }).each(function ()
           {
               $(this).lettering()
           }), c = a.$current.find('[class^="char"]').css("display", "inline-block"), t(l.in.effect) ? c.css("visibility", 
           "hidden") : e(l.in.effect) && c.css("visibility", "visible"), a.currentIndex = i, r(c, l.in, 
           function ()
           {
               a.triggerEvent("inAnimationEnd"), l.in.callback && l.in.callback(), o && o(a)
           })
       },
       a.out = function (t)
       {
           var e = a.$texts.find(":nth-child(" + (a.currentIndex + 1) + ")"), i = a.$current.find('[class^="char"]'), 
           o = $.extend(!0, {}, a.options, e.length ? n(e[0]) : {});
           a.triggerEvent("outAnimationBegin"), r(i, o.out, function ()
           {
               e.removeClass("current"), a.triggerEvent("outAnimationEnd"), o.out.callback && o.out.callback(), 
               t && t(a)
           })
       },
       a.start = function (t)
       {
           a.triggerEvent("start"), function t(e)
           {
               a.in (e, function ()
               {
                   var i = a.$texts.children().length;
                   e += 1, !a.options.loop && e >= i ? (a.options.callback && a.options.callback(), a.triggerEvent("end")) : (e %= i, 
                   a.timeoutRun = setTimeout(function ()
                   {
                       a.out(function ()
                       {
                           t(e)
                       })
                   },
                   a.options.minDisplayTime))
               })
           }
           (t || 0)
       },
       a.stop = function ()
       {
           a.timeoutRun && (clearInterval(a.timeoutRun), a.timeoutRun = null);
       },
       a.init()
   };
   $.fn.textillate = function (t, e)
   {
       return this.each(function ()
       {
           var i = $(this), o = i.data("textillate"), a = $.extend(!0, {}, $.fn.textillate.defaults, 
           n(this), "object" == typeof t && t);
           o ? "string" == typeof t ? o[t].apply(o, [].concat(e)) : o.setOptions.call(o, a) : i.data("textillate", 
           o = new s(this, a));
       })
   },
   $.fn.textillate.defaults = 
   {
       selector : ".texts", loop :!1, minDisplayTime : 2e3, initialDelay : 0, in : 
       {
           effect : "fadeInLeftBig", delayScale : 1.5, delay : 50, sync :!1, reverse :!1, shuffle :!1, 
           callback : function () {}
       },
       out : 
       {
           effect : "hinge", delayScale : 1.5, delay : 50, sync :!1, reverse :!1, shuffle :!1, callback : function () {}
       },
       autoStart :!0, inEffects : [], outEffects : ["hinge"], callback : function () {}
   }

} function txt() {

   $(".tlt").textillate(
   {
       minDisplayTime : 500, initialDelay : 0, autoStart :!0, in : {
           effect : "bounceIn", delay : 50
       },
       out : {
           effect : "bounceOut", delayScale : 1, delay : 50, shuffle :!0
       },
       loop :!0
   })

} function detectDevice() {

   var t = navigator.userAgent, e = $(window).width(), i = $(window).height();
if (console.log(t), console.log(e, i), e < 321 && $("#copy-right").replaceWith(""),
   t.indexOf("AppleWebKit")) {
       var n = $(window).height() - 16;
       $(".page-border").height(n)
   }
   e < 1025 ? $("#portfolio-slider").removeClass().addClass("slides") : $("#portfolio-slider").removeClass().addClass("slides-v")

} function work() {

   $(".work-detail .panel").hide(), $(".work-detail .panel:first").show(), $(".work-detail-nav li a").click(function ()
   {
       var t = $(this).attr("href");
       $(".work-detail-nav li a").removeClass("active"), $(this).addClass("active"), $(".work-detail section").hide(), 
       $(t).show()
   })

} var pageTransition = {

   init : function (t)
   {
       pageTransition.config = 
       {
           container : $("#main-content"), triggerAll : $("a.page-transit"), overlay : $("<section class='target--overlay'></section>"), 
           target : $(".target--overlay")
       },
       $.extend(pageTransition.config, t), pageTransition.setup(), $(window).on("popstate", function (t)
       {
           var e = t.state;
           $("title").html(t.originalEvent.state.title), $("#main-content").html(t.originalEvent.state.content), 
           $("body").removeClass().addClass(t.originalEvent.state.bodyclass)
       }), $(window).on("load", function ()
       {
           id = $("body").data("id"), $("body").hasClass("layout--work") && pageTransition.createTarget(id)
       })
   },
   setup : function ()
   {
       pageTransition.config.triggerAll.on("click", function (t)
       {
           t.preventDefault(), url = $(this).attr("href"), pageTitle = $(this).attr("rel"), pageLayout = $(this).attr("data-layout"), 
           $(this).hasClass("goto--page") ? (offset = $(this).find("picture").offset(), width = $(this).find("picture").outerWidth(), 
           height = $(this).find("picture").outerHeight(), id = $(this).attr("rel"), pageTransition.pageLoad(offset, 
           width, height, id), pageTransition.getContent(url)) : $(this).hasClass("backto--page") ? (offset = $(this).offset(), 
           width = $(this).outerWidth(), height = $(this).outerHeight(), ripple = pageTransition.config.target, 
           pageTransition.pageClose(ripple, offset, width, height), pageTransition.getContent(url)) : $(this).hasClass("page--navi") ? (offset = $(this).offset(), 
           width = $(this).outerWidth(), height = $(this).outerHeight(), id = $(this).attr("rel"), pageTransition.config.target.remove(), 
           pageTransition.pageLoad(offset, width, height, id), pageTransition.getContent(url)) : $(this).hasClass("menu-item") ? (pageTransition.indexMenuTrigger(), 
           setTimeout(function ()
           {
               pageTransition.getContent(url)
           }, 500)) : pageTransition.getContent(url)
       })
   },
   getContent : function ()
   {
       $.get(url, function (t)
       {
           newTitle = "4EB Studio - " + pageTitle, newBodyClass = "layout--" + pageLayout + " page--" + pageTitle, 
           $("title").html(newTitle), $("body").removeClass().addClass(newBodyClass), pageTransition.config.container.html($(t).find("#main-content").html()), 
           state = 
           {
               title : $("title").html(), content : $("#main-content").html(), bodyclass : $("body").attr("class"), 
               back :!0
           },
           history.pushState(state, newTitle, url, portfolioScroll(), smoothScroll(), portfolioGuideNav(), 
           toggleMenu(), gearTransform(), work(), detectDevice()), pageTransition.init()
       })
   },
   createTarget : function (t)
   {
       pageTransition.config.overlay.prependTo("body").addClass(t).css(
       {
           position : "absolute", opacity : 1, width : 0, height : 0, left : 0, top : 0, "border-radius" : "50%", 
           transform : "scale(0)", "z-index" : 99999
       })
   },
   pageLoad : function (t, e, i, n)
   {
       $(".page-border").css("opacity", 0), pageTransition.config.overlay.prependTo("body").addClass("portfolio--" + n).css(
       {
           position : "absolute", opacity : 1, width : 0, height : 0, left : t.left + e / 2, top : t.top + i / 2, 
           "z-index" : 99999
       }).animate({
           left : 0, top : 0, width : "100vw", height : "100vh", opacity : 1
       },
       800, function ()
       {
           $(this).css({
               width : 0, height : 0, "border-radius" : "50%", transform : "scale(0)"
           }), $(".page-border").css("opacity", 1), $(".page-container").scrollTop(0)
       })
   },
   pageClose : function ()
   {
       $(".page-border").css("opacity", 0), pageTransition.clickRipple(ripple, offset, width, height), 
       setTimeout(function ()
       {
           pageTransition.config.target.remove(), $(".page-border").animate({
               opacity : 1
           })
       }, 500)
   },
   clickRipple : function (t, e, i, n)
   {
       $(window).width() > 600 ? i <= n ? n = i : i = n : (i = 15, n = 15), $(".target--overlay").css({
           width : i, height : n, top : e.top + n / 2, left : e.left + i / 2
       }).addClass("rippleEffect")
   },
   indexMenuTrigger : function ()
   {
       blockOne = $("#home-navigation--wrapper"), blockTwo = $("#home-portfolio-list--wrapper");
       var t = $(window).height();
       blockOne_posY = (t - 16 - blockOne.height()) / 2, blockTwo_posY = (t - 16 - blockTwo.height()) / 2, 
       blockOne.css({
           position : "absolute", left : 0, top : blockOne_posY
       }).animate({
           left : "-100%"
       },
       "slow"), blockTwo.css({
           position : "absolute", right : 0, top : blockTwo_posY
       }).animate({
           right : "-100%"
       },
       "slow")
   }

}, siteLoading = {

   init : function (t)
   {
       siteLoading.config = 
       {
           loader : $("#logo-svg"), landing : $("#landing-container"), enter : $("#enter-link"), container : $(".page-border"), 
           vw : $(window).width(), vh : $(window).height(), overlay : $("<section class='enter--overlay'></section>"), 
           device : navigator.userAgent
       },
       $.extend(siteLoading.config, t), siteLoading.setup()
   },
   setup : function ()
   {
       $("html").hasClass("lt-ie10") ? siteLoading.ie() : (siteLoading.loading(), $(window).on("load", 
       function ()
       {
           siteLoading.transform(), siteLoading.ready()
       }), siteLoading.config.enter.on("click", function ()
       {
           siteLoading.enter()
       }))
   },
   ie : function ()
   {
       $("#loading").remove(), $(".page-border").remove(), $("body").load("ie.html")
   },
   loading : function ()
   {
       var t = siteLoading.config.loader.width(), e = siteLoading.config.loader.height(), i = (siteLoading.config.vw - t) / 2, 
       n = (siteLoading.config.vh - e) / 2;
       siteLoading.config.loader.css({
           left : i, top : n
       })
   },
   transform : function ()
   {
       var t = $(window).width(), e = $("#mbp-drawing svg").width();
       if (ratio = t / e, t < 800 && $("#mbp-wrapper").css(
       {
           "-webkit-transform" : "scale(" + ratio + ")", "-moz-transform" : "scale(" + ratio + ")", "-ms-transform" : "scale(" + ratio + ")", 
           "-o-transform" : "scale(" + ratio + ")", transform : "scale(" + ratio + ")"
       }), t < 800) var i = $("#mbp-drawing svg").height() * ratio;
       else var i = $("#mbp-drawing svg").height();
       var n = $(window).height();
       enterLinkPos = (n / 2 - i / 2) / 2, mbpWrapperHeight = n - enterLinkPos, $("#enter-link").offset({
           top : mbpWrapperHeight
       })
   },
   ready : function ()
   {
        - 1 == siteLoading.config.device.indexOf("Mobile") ? left = "60px" : left = "auto", siteLoading.config.loader.delay(3500).animate({
           left : left, top : "85px", transform : 0
       },
       "slow", function ()
       {
           $(this).removeClass("loading"), siteLoading.config.landing.find("#about-us").hide(), siteLoading.config.landing.show(), 
           svgsnimations(), siteLoading.config.landing.find("#about-us").delay(1500).fadeIn("slow")
       })
   },
   enter : function ()
   {
       siteLoading.config.overlay.prependTo("body").css(
       {
           position : "absolute", opacity : 0, width : 0, height : 0, left : "50vw", top : "50vh", background : "white", 
           "z-index" : 99999
       }).animate({
           left : 0, top : 0, width : "100vw", height : "100vh", opacity : 1
       },
       "slow", function ()
       {
           $("#loading").remove(), $(".enter--overlay").remove()
       })
   }

}; !function () {

   "use strict";
   siteLoading.init(), pageTransition.init(), portfolioScroll(), detectDevice(), toggleMenu(), smoothScroll(), 
   portfolioGuideNav(), gearTransform(), lettering(), funnytxt(), txt(), work(), $.preloadImages = function ()
   {
       for (var t = 0; t < arguments.length; t++) {
           $("<img />").attr("src", arguments[t]);
       }
   },
   $.preloadImages(), $(window).resize(function ()
   {
       gearTransform(), siteLoading.transform(), detectDevice()
   })

}();