/*
 * MCards
 * 
 * Available options
 * - iniitalTransitionSpeed - duration in miliseconds for initial repositioning, default: 1500
 * - bumpHeight - how high in pixels should the card move up on mouse hover, default: 10
 * - transitionSpeed - cards swap transition speed in miliseconds, default: 600
 */
jQuery(function($){$.fn.getCardPosition=function(){var matches=/(cardPos[0-9]+)/.exec($(this).attr('class'));return matches!==null?matches[1]:null;};var MCards=function(el,options){var defaults={initialTransitionSpeed:1500,bumpHeight:10,transitionSpeed:600};this.settings=$.extend(defaults,options);this.wrapper=$(el);this.cards=this.wrapper.find('div.card');this.getPositions();this.transitionStates();this.animateBump();this.cardsTransition();this.initialize();$('body').unload($.proxy(function(){this.wrapper.unbind('mcard');},this));};MCards.prototype.getPositions=function(){var positions={};this.cards.each(function(){positions[$(this).getCardPosition()]=$(this).position();});this.positions=positions;};MCards.prototype.transitionStates=function(){this.transition=false;this.wrapper.bind('transitionBegin.mcard',$.proxy(function(){this.transition=true;},this));this.wrapper.bind('transitionEnd.mcard',$.proxy(function(){this.transition=false;},this));};MCards.prototype.cardsTransition=function(){this.checkpoints=0;this.wrapper.bind('addCheckpoint.mcard',$.proxy(function(){this.checkpoints++;if(this.checkpoints===2){this.wrapper.trigger('transitionEnd.mcard');this.checkpoints=0;}},this));this.cards.click($.proxy(this.cardClick,this));};MCards.prototype.cardClick=function(event){var card1=$(event.target).closest('div.card');if(card1.hasClass('cardPos1')||this.transition===true){return;}
var card2=this.cards.filter('.cardPos1');var p1=card1.getCardPosition();var p2='cardPos1';this.wrapper.trigger('transitionBegin.mcard');this.executeTransition(card1,p2,p1);this.executeTransition(card2,p1,p2);};MCards.prototype.executeTransition=function(card,to,from){card.find('.inner').css('opacity',0);if(!$.browser.msie){card.css('opacity',0.5);}
var self=this;var afterTransition=function(){if(to==='cardPos1'){$(this).find('.inner').fadeTo(200,1,function(){self.wrapper.trigger('addCheckpoint.mcard');});}
else{self.wrapper.trigger('addCheckpoint.mcard');}};card.removeClass(from).addClass(to);card.stop().animate({'left':this.positions[to].left,'top':this.positions[to].top},this.settings.transitionSpeed,function(){if(!$.browser.msie){return $(this).fadeTo(100,1,afterTransition);}
afterTransition.apply(this);});};MCards.prototype.initialize=function(){this.wrapper.trigger('transitionBegin.mcard');this.cards.each($.proxy(function(index,card){card=$(card);var position=card.getCardPosition();if(card.hasClass('cardPos1')===false){card.find('.inner').fadeTo(0,0);}
card.css({'top':this.positions.cardPos1.top,'left':this.positions.cardPos1.left});card.animate({'top':this.positions[position].top,'left':this.positions[position].left},this.settings.initialTransitionSpeed,$.proxy(function(){this.wrapper.trigger('transitionEnd.mcard');},this));},this));};MCards.prototype.animateBump=function(){this.wrapper.find('div.card:not(div.cardPos1)').live('hover',$.proxy(function(event){if(this.transition===true){return;}
var card=$(event.target).closest('div.card');var shift=(event.type==='mouseenter')?'-='+this.settings.bumpHeight:this.positions[card.getCardPosition()].top;card.stop().animate({'top':shift});},this));};$.fn.mCards=function(){var options=arguments[0]||{};return $(this).each(function(){return new MCards(this,options);});};});