/*! fantasiajs - v0.0.1 - 2016-01-28 * Copyright (c) 2016 Emil Rune Møller; Licensed MIT */ !function(a){a.fn.fantasia=function(b){function c(){switch(d.orientationX+=(d.mouseX-d.orientationX)/e.magicNumber,d.orientationY+=(d.mouseY-d.orientationY)/e.magicNumber,d.rotateY=(d.orientationX-d.boxX0)*d.newRangeX/d.oldRangeX+d.minValue,d.rotateX=(d.orientationY-d.boxY0)*d.newRangeY/d.oldRangeY+d.minValue,d.shadowX=Math.abs((d.orientationX-d.boxX0)*d.shadowRange/d.oldRangeX+d.minShadowValue),d.shadowY=Math.abs((d.orientationY-d.boxY0)*d.shadowRange/d.oldRangeY+d.minShadowValue),d.shadow=(d.shadowX+d.shadowY)/2,e.type){case"3d":d.elem.css({transform:"rotateX("+d.rotateX+"deg) rotateY("+-d.rotateY+"deg)"}),d.elem.find(".shadow").css({opacity:d.shadow})}d.depths.each(function(){var b=a(this),c=a(this).data("depth"),f=c*e.depthValue;a(this).data("scale")===!1&&(f=0);var g=d.shadow/c*d.shadowDepthFactor;switch(0>g&&(g*=c),e.type){case"3d":b.css({"z-index":c,transform:"translate3d(0px,0px,"+f+"px)"}),b.find(".shadow").css({opacity:Math.abs(g)}),e.scaleDepths||(b.css({"z-index":c,transform:"translate3d(0,0,0)"}),b.find(".shadow").css({opacity:d.shadow}));break;default:b.css({"z-index":c,transform:"translate3d("+-d.rotateY*c+"px,"+-d.rotateX*c+"px,"+f+"px)"}),e.scaleDepths||b.css({"z-index":c,transform:"translate3d("+-d.rotateY*c+"px,"+-d.rotateX*c+"px, 0px)"})}}),window.requestAnimationFrame(c)}var d=this,e=a.extend({trackFrom:"body",perspectiveParent:null,perspective:"600px",rotationLimit:"20",type:"3d",scaleDepths:!0,depthValue:50,magicNumber:5},b);switch(d.elem=a(this),d.perspectiveContainer=a(e.perspectiveParent),d.trackingSelector=a(e.trackFrom),d.boxWidth=d.trackingSelector.width(),d.boxHeight=d.trackingSelector.height(),null===e.perspectiveParent?d.perspectiveContainer=a(e.trackFrom):d.perspectiveContainer=a(e.perspectiveParent),e.trackFrom){case window:d.boxTop=a(window).scrollTop(),d.boxLeft=0;break;default:d.boxTop=d.trackingSelector.offset().top,d.boxLeft=d.trackingSelector.offset().left}d.boxX0=d.boxLeft,d.boxX1=d.boxLeft+d.boxWidth/2,d.boxX2=d.boxLeft+d.boxWidth,d.boxY0=d.boxTop,d.boxY1=d.boxTop+d.boxHeight/2,d.boxY2=d.boxTop+d.boxHeight,d.minValue=-e.rotationLimit,d.maxValue=e.rotationLimit,d.oldRangeX=d.boxX2-d.boxX0,d.newRangeX=d.maxValue-d.minValue,d.oldRangeY=d.boxY2-d.boxY0,d.newRangeY=d.maxValue-d.minValue,d.minShadowValue=-1,d.maxShadowValue=1,d.shadowRange=d.maxShadowValue-d.minShadowValue,d.shadowDepthFactor=1.5,d.orientationX=d.boxX1,d.orientationY=d.boxY1,d.mouseX=d.orientationX,d.mouseY=d.orientationY,d.depths=d.elem.find("[data-depth]"),d.perspectiveContainer.css("perspective",e.perspective),d.trackingSelector.on("mousemove",function(a){d.mouseX=a.pageX,d.mouseY=a.pageY}),e.trackFrom===window&&a(document).on("scroll",function(){d.boxTop=a(window).scrollTop()}),window.requestAnimationFrame(c)}}(jQuery);