/* _________________________________________________________________________________________________ pz.itemAnimate version 0.03 param oSettings:Object { _type:String = '' / 'teaser' || 'eventAnnouncement' || 'menuItem' _timeAnimIn:Number = 120 / in milliseconds _timeAnimOut:Number = 600 / in milliseconds } _________________________________________________________________________________________________ _type:'teaser' needs following dom architecture: -- Object $(this) -- Object class: .imageLayer -- Object class: .alphaLayer -- Object class: .titleLayer -- Object class: .infoLayer _________________________________________________________________________________________________ version 0.04 -- eventAnnouncement: default values of _infoLayerLeft and _infoLayerTop changed (144/72) version 0.03 -- _type 'pageNavItem' added version 0.02 -- _type 'eventAnnouncement' added _________________________________________________________________________________________________ */ jQuery.fn.itemAnimate = function(oSettings) { return this.each( function() { if(oSettings==undefined) oSettings={}; var _this = jQuery(this); var _type = oSettings._type || ''; if(!_this.hasClass('pz-itemAnimate-complete') && _type!=''){ var _timeAnimIn = oSettings._timeAnimIn || 120; var _timeAnimOut = oSettings._timeAnimOut || 600; /* _________________________________________________________________________________________________ _type:'teaser' _________________________________________________________________________________________________ */ if(_type=='teaser'){ var _imageLayer = $('.imageLayer', _this); var _alphaLayer = $('.alphaLayer', _this); var _titleLayer = $('.titleLayer', _this); var _infoLayer = $('.infoLayer', _this); var _alphaLayerTop = 0; var _alphaLayerTopHover = 0-_imageLayer.height(); var _titleLayerTop = 0-_alphaLayer.height(); var _titleLayerTopHover = _titleLayer.height()-_alphaLayer.height(); var _infoLayerTop = 0-_titleLayer.height()-_alphaLayer.height()-_imageLayer.height(); _imageLayer.css( { 'left':0, 'top':0 } ).show(); _alphaLayer.css( { 'left':0, 'top':_alphaLayerTop } ).show(); _titleLayer.css( { 'left':0, 'top':_titleLayerTop } ).show(); _infoLayer.css( { 'left':0, 'top':_infoLayerTop } ).hide(); /* behaviour + animation */ _this.mouseenter(function(){ _alphaLayer.stop(true).move(0, _alphaLayerTopHover, _timeAnimIn, 'easeOutQuint', function(){ if($.browser.msie){ _infoLayer.show(); }else{ _infoLayer.fadeIn(_timeAnimIn); } }); _titleLayer.stop(true).move(0, _titleLayerTopHover, _timeAnimIn, 'easeOutQuint'); }).mouseleave(function(){ _infoLayer.hide(); _alphaLayer.stop(true).move(0, _alphaLayerTop, _timeAnimOut, 'easeOutQuint'); _titleLayer.stop(true).move(0, _titleLayerTop, _timeAnimOut, 'easeOutQuint'); }); } /* _________________________________________________________________________________________________ _type:'eventAnnouncement' _________________________________________________________________________________________________ */ if(_type=='eventAnnouncement'){ var _infoLayer = $('.infoLayer', _this); var _infoLayerLeft = 144; var _infoLayerLeftHover = 0; var _infoLayerTop = -72; /* behaviour + animation */ _this.mouseenter(function(){ _infoLayer.stop(true).move(_infoLayerLeftHover, _infoLayerTop, _timeAnimIn, 'easeOutQuint'); }).mouseleave(function(){ _infoLayer.stop(true).move(_infoLayerLeft, _infoLayerTop, _timeAnimOut, 'easeOutQuint'); }); } /* _________________________________________________________________________________________________ _type:'pageNavItem' _________________________________________________________________________________________________ */ if(_type=='pageNavItem'){ var _overLayer = $('.over', _this); /* behaviour + animation */ _this.mouseenter(function(){ _overLayer.slide(110, null, _timeAnimIn); }).mouseleave(function(){ _overLayer.slide(0, null, _timeAnimOut); }); } //-- complete _this.addClass('pz-itemAnimate-complete'); } } ) };