| /*!  | 
|  * animsition v3.4.3  | 
|  * http://blivesta.github.io/animsition/  | 
|  * Licensed under MIT  | 
|  * Author : blivesta  | 
|  * http://blivesta.com/  | 
|  */  | 
| (function($) {  | 
|   "use strict";  | 
|   var namespace = "animsition";  | 
|   var methods = {  | 
|     init: function(options) {  | 
|       options = $.extend({  | 
|         inClass: "fade-in",  | 
|         outClass: "fade-out",  | 
|         inDuration: 1500,  | 
|         outDuration: 800,  | 
|         linkElement: ".animsition-link",  | 
|         loading: true,  | 
|         loadingParentElement: "body",  | 
|         loadingClass: "animsition-loading",  | 
|         unSupportCss: [ "animation-duration", "-webkit-animation-duration", "-o-animation-duration" ],  | 
|         overlay: false,  | 
|         overlayClass: "animsition-overlay-slide",  | 
|         overlayParentElement: "body"  | 
|       }, options);  | 
|       var support = methods.supportCheck.call(this, options);  | 
|       if (!support) {  | 
|         if (!("console" in window)) {  | 
|           window.console = {};  | 
|           window.console.log = function(str) {  | 
|             return str;  | 
|           };  | 
|         }  | 
|         console.log("Animsition does not support this browser.");  | 
|         return methods.destroy.call(this);  | 
|       }  | 
|       var overlayMode = methods.optionCheck.call(this, options);  | 
|       if (overlayMode) {  | 
|         methods.addOverlay.call(this, options);  | 
|       }  | 
|       if (options.loading) {  | 
|         methods.addLoading.call(this, options);  | 
|       }  | 
|       return this.each(function() {  | 
|         var _this = this;  | 
|         var $this = $(this);  | 
|         var $window = $(window);  | 
|         var data = $this.data(namespace);  | 
|         if (!data) {  | 
|           options = $.extend({}, options);  | 
|           $this.data(namespace, {  | 
|             options: options  | 
|           });  | 
|           $window.on("load." + namespace + " pageshow." + namespace, function() {  | 
|             methods.pageIn.call(_this);  | 
|           });  | 
|           $window.on("unload." + namespace, function() {});  | 
|           $(options.linkElement).on("click." + namespace, function(event) {  | 
|             event.preventDefault();  | 
|             var $self = $(this);  | 
|             methods.pageOut.call(_this, $self);  | 
|           });  | 
|         }  | 
|       });  | 
|     },  | 
|     addOverlay: function(options) {  | 
|       $(options.overlayParentElement).prepend('<div class="' + options.overlayClass + '"></div>');  | 
|     },  | 
|     addLoading: function(options) {  | 
|       $(options.loadingParentElement).append('<div class="' + options.loadingClass + '"></div>');  | 
|     },  | 
|     removeLoading: function() {  | 
|       var $this = $(this);  | 
|       var options = $this.data(namespace).options;  | 
|       var $loading = $(options.loadingParentElement).children("." + options.loadingClass);  | 
|       $loading.fadeOut().remove();  | 
|     },  | 
|     supportCheck: function(options) {  | 
|       var $this = $(this);  | 
|       var props = options.unSupportCss;  | 
|       var propsNum = props.length;  | 
|       var support = false;  | 
|       if (propsNum === 0) {  | 
|         support = true;  | 
|       }  | 
|       for (var i = 0; i < propsNum; i++) {  | 
|         if (typeof $this.css(props[i]) === "string") {  | 
|           support = true;  | 
|           break;  | 
|         }  | 
|       }  | 
|       return support;  | 
|     },  | 
|     optionCheck: function(options) {  | 
|       var $this = $(this);  | 
|       var overlayMode;  | 
|       if (options.overlay || $this.data("animsition-overlay")) {  | 
|         overlayMode = true;  | 
|       } else {  | 
|         overlayMode = false;  | 
|       }  | 
|       return overlayMode;  | 
|     },  | 
|     animationCheck: function(data, stateClass, stateIn) {  | 
|       var $this = $(this);  | 
|       var options = $this.data(namespace).options;  | 
|       var dataType = typeof data;  | 
|       var dataDuration = !stateClass && dataType === "number";  | 
|       var dataClass = stateClass && dataType === "string" && data.length > 0;  | 
|       if (dataDuration || dataClass) {  | 
|         data = data;  | 
|       } else if (stateClass && stateIn) {  | 
|         data = options.inClass;  | 
|       } else if (!stateClass && stateIn) {  | 
|         data = options.inDuration;  | 
|       } else if (stateClass && !stateIn) {  | 
|         data = options.outClass;  | 
|       } else if (!stateClass && !stateIn) {  | 
|         data = options.outDuration;  | 
|       }  | 
|       return data;  | 
|     },  | 
|     pageIn: function() {  | 
|       var _this = this;  | 
|       var $this = $(this);  | 
|       var options = $this.data(namespace).options;  | 
|       var thisInDuration = $this.data("animsition-in-duration");  | 
|       var thisInClass = $this.data("animsition-in");  | 
|       var inDuration = methods.animationCheck.call(_this, thisInDuration, false, true);  | 
|       var inClass = methods.animationCheck.call(_this, thisInClass, true, true);  | 
|       var overlayMode = methods.optionCheck.call(_this, options);  | 
|       if (options.loading) {  | 
|         methods.removeLoading.call(_this);  | 
|       }  | 
|       if (overlayMode) {  | 
|         methods.pageInOverlay.call(_this, inClass, inDuration);  | 
|       } else {  | 
|         methods.pageInBasic.call(_this, inClass, inDuration);  | 
|       }  | 
|     },  | 
|     pageInBasic: function(inClass, inDuration) {  | 
|       var $this = $(this);  | 
|       $this.css({  | 
|         "animation-duration": inDuration / 1e3 + "s"  | 
|       }).addClass(inClass).animateCallback(function() {  | 
|         $this.removeClass(inClass).css({  | 
|           opacity: 1  | 
|         });  | 
|       });  | 
|     },  | 
|     pageInOverlay: function(inClass, inDuration) {  | 
|       var $this = $(this);  | 
|       var options = $this.data(namespace).options;  | 
|       $this.css({  | 
|         opacity: 1  | 
|       });  | 
|       $(options.overlayParentElement).children("." + options.overlayClass).css({  | 
|         "animation-duration": inDuration / 1e3 + "s"  | 
|       }).addClass(inClass);  | 
|     },  | 
|     pageOut: function($self) {  | 
|       var _this = this;  | 
|       var $this = $(this);  | 
|       var options = $this.data(namespace).options;  | 
|       var selfOutClass = $self.data("animsition-out");  | 
|       var thisOutClass = $this.data("animsition-out");  | 
|       var selfOutDuration = $self.data("animsition-out-duration");  | 
|       var thisOutDuration = $this.data("animsition-out-duration");  | 
|       var isOutClass = selfOutClass ? selfOutClass : thisOutClass;  | 
|       var isOutDuration = selfOutDuration ? selfOutDuration : thisOutDuration;  | 
|       var outClass = methods.animationCheck.call(_this, isOutClass, true, false);  | 
|       var outDuration = methods.animationCheck.call(_this, isOutDuration, false, false);  | 
|       var overlayMode = methods.optionCheck.call(_this, options);  | 
|       var url = $self.attr("href");  | 
|       if (overlayMode) {  | 
|         methods.pageOutOverlay.call(_this, outClass, outDuration, url);  | 
|       } else {  | 
|         methods.pageOutBasic.call(_this, outClass, outDuration, url);  | 
|       }  | 
|     },  | 
|     pageOutBasic: function(outClass, outDuration, url) {  | 
|       var $this = $(this);  | 
|       $this.css({  | 
|         "animation-duration": outDuration / 1e3 + "s"  | 
|       }).addClass(outClass).animateCallback(function() {  | 
|         location.href = url;  | 
|       });  | 
|     },  | 
|     pageOutOverlay: function(outClass, outDuration, url) {  | 
|       var _this = this;  | 
|       var $this = $(this);  | 
|       var options = $this.data(namespace).options;  | 
|       var thisInClass = $this.data("animsition-in");  | 
|       var inClass = methods.animationCheck.call(_this, thisInClass, true, true);  | 
|       $(options.overlayParentElement).children("." + options.overlayClass).css({  | 
|         "animation-duration": outDuration / 1e3 + "s"  | 
|       }).removeClass(inClass).addClass(outClass).animateCallback(function() {  | 
|         $this.css({  | 
|           opacity: 0  | 
|         });  | 
|         location.href = url;  | 
|       });  | 
|     },  | 
|     destroy: function() {  | 
|       return this.each(function() {  | 
|         var $this = $(this);  | 
|         $(window).unbind("." + namespace);  | 
|         $this.css({  | 
|           opacity: 1  | 
|         }).removeData(namespace);  | 
|       });  | 
|     }  | 
|   };  | 
|   $.fn.animateCallback = function(callback) {  | 
|     var end = "animationend webkitAnimationEnd mozAnimationEnd oAnimationEnd MSAnimationEnd";  | 
|     return this.each(function() {  | 
|       $(this).bind(end, function() {  | 
|         $(this).unbind(end);  | 
|         return callback.call(this);  | 
|       });  | 
|     });  | 
|   };  | 
|   $.fn.animsition = function(method) {  | 
|     if (methods[method]) {  | 
|       return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));  | 
|     } else if (typeof method === "object" || !method) {  | 
|       return methods.init.apply(this, arguments);  | 
|     } else {  | 
|       $.error("Method " + method + " does not exist on jQuery." + namespace);  | 
|     }  | 
|   };  | 
| })(jQuery); |