/*
Fathom.js v1.2
Copyright 2011, Mark Dalgleish

This content is released under the MIT License
github.com/markdalgleish/fathom/blob/master/MIT-LICENSE.txt
*/
(function(a,b,c){var d=function(a,b){this.container=a,this.options=b;return this.init()},e=a(b),f=a(document);d.prototype={defaults:{portable:c,portableTagName:"div",portableClass:"fathom-container",displayMode:"single",slideTagName:"div",slideClass:"slide",activeClass:"activeslide",inactiveClass:"inactiveslide",margin:100,onScrollInterval:300,scrollLength:600,timeline:c,video:c,onActivateSlide:c,onDeactivateSlide:c},init:function(){var b=this;this.config=a.extend({},this.defaults,this.options),this.$container=a(this.container),this.$slides=this.$container.find(this.config.slideTagName+(this.config.slideClass?"."+this.config.slideClass:"")),this.$firstSlide=this.$slides.filter(":first"),this.$lastSlide=this.$slides.filter(":last"),this.$activeSlide=this.activateSlide(this.$firstSlide),this._detectPortable()._setStyles()._setClasses()._setMargins()._setupEvents()._setupTimeline()._setupVideo()._setupScrollHandler();return this},nextSlide:function(){var a=this.$activeSlide.next();a.length===1&&a.hasClass(this.config.slideClass)&&this.scrollToSlide(a);return a},prevSlide:function(){var a=this.$activeSlide.prev();a.length===1&&this.scrollToSlide(a);return a},scrollToSlide:function(b){var c=this,d=this.config.portable?this.$portableContainer:a("html,body"),f=this.config.portable?this.$portableContainer:e,g=this.config.portable?this.$portableContainer.scrollLeft():0;this.isAutoScrolling=!0,d.stop().animate({scrollLeft:b.position().left+g-(f.width()-b.innerWidth())/2},c.config.scrollLength,function(){c.isAutoScrolling=!1});return this.activateSlide(b)},activateSlide:function(a){var b=a.get(0),d;if(this.$activeSlide!==c){d=this.$activeSlide.get(0);if(d===b)return a;this.$activeSlide.removeClass(this.config.activeClass).addClass(this.config.inactiveClass).trigger("deactivateslide.fathom"),typeof this.config.onDeactivateSlide=="function"&&this.config.onDeactivateSlide.call(d)}a.removeClass(this.config.inactiveClass).addClass(this.config.activeClass),this.$activeSlide=a,a.trigger("activateslide.fathom"),typeof this.config.onActivateSlide=="function"&&this.config.onActivateSlide.call(b);return a},setTime:function(a){var b=this._timeline||[];for(var c=0;c<b.length;c++)if(b[c].time<=a&&b[c+1].time>a){this.$activeSlide[0]!==b[c].slide[0]&&this.scrollToSlide(b[c].slide);break}},_detectPortable:function(){this.config.portable===c&&(this.$container.parent().is("body")?this.config.portable=!1:this.config.portable=!0);return this},_setupEvents:function(){var b=this;this.$container.delegate(this.config.slideTagName+"."+this.config.inactiveClass,"click",function(c){c.preventDefault(),b.scrollToSlide(a(this))}),f.keydown(function(a){var c=a.which;c===39||c===32?(a.preventDefault(),b.nextSlide()):c===37&&(a.preventDefault(),b.prevSlide())}),e.resize(function(){b._setMargins()});return this},_setStyles:function(){this.config.portable?(this.$portableContainer=a("<"+this.config.portableTagName+' class="'+this.config.portableClass+'" />'),this.$container.before(this.$portableContainer).appendTo(this.$portableContainer)):a("body").width(99999),this.$clearFloats=this.$container.append('<div style="clear:left"></div>'),this.$container.css("float","left"),this.$slides.css("float","left");return this},_setClasses:function(){this.$slides.addClass(this.config.inactiveClass),this.$activeSlide.removeClass(this.config.inactiveClass).addClass(this.config.inactiveClass);return this},_setMargins:function(){var b=this.config.displayMode,c=this.config.portable?this.$portableContainer:e,d=c.width(),f=Math.ceil((c.height()-this.$firstSlide.innerHeight())/2),g=Math.ceil((d-this.$firstSlide.innerWidth())/2),h=Math.ceil((d-this.$lastSlide.innerWidth())/2),i=Math.ceil(d/25);this.$container.css("margin-top",f),b==="single"?this.$slides.css("margin-right",g-i):b==="multi"&&this.$slides.css("margin-right",this.config.margin),this.$firstSlide.css("margin-left",g),this.$lastSlide.css("margin-right",h);if(!this.config.portable)a("html,body").width(this.$container.outerWidth());else{var j=parseInt(this.$container.css("padding-left"))+parseInt(this.$container.css("padding-right"));this.$slides.each(function(){j+=a(this).outerWidth(!0)}),this.$container.width(j)}return this},_setupTimeline:function(){function e(c){if(c.slide==null)d++;else if(a.type(c.slide)==="number")d=c.slide;else for(var e=b.filter(c.slide)[0],f=0;f<b.length;f++)if(b[f]===e){d=f;break}return b.eq(d)}function c(a){for(var b=(a.time||a).toString().match(/(((\d+):)?(\d+):)?(\d+)/),c=0,d=3;d<=5;d++)c=c*60+parseInt(b[d]||0);return c}var b=this.$slides,d=-1;if(!this.config.timeline)return this;this._timeline=[];for(var f=this.config.timeline,g=0;g<f.length;g++)this._timeline.push({time:c(f[g]),slide:e(f[g])});this._timeline.push({time:99999,slide:f[0].slide});return this},_setupVideo:function(){if(!this.config.video)this._setupDefaultTimeSource();else if(this.config.video.source==="vimeo")this._setupVimeoVideo(this.config.video);else throw"unknown video source, not supported";return this},_setupDefaultTimeSource:function(){var a=this,b=(new Date).getTime();setInterval(function(){var c=(new Date).getTime();a.setTime((c-b)/1e3)},250)},_setupVimeoVideo:function(c){function f(){var b="p"+c.id,d='<iframe id="'+b+'"\twidth="'+(c.width||360)+'" height="'+(c.height||203)+'" frameborder="0" src="http://player.vimeo.com/video/'+c.id+"?api=1&player_id="+b+'">';return a(d).appendTo(c.parent||"body")[0]}var d=this,c=this.config.video,e=!1;b.location.protocol==="file:"&&("console"in b&&console.log("vimeo video player api does not work with local files. Downgrading video support\nsee http://vimeo.com/api/docs/player-js"),e=!0),e?a(f()).bind("load",function(){d._setupDefaultTimeSource()}):a.getScript("http://a.vimeocdn.com/js/froogaloop2.min.js?",function(){$f(f()).addEvent("ready",function(a){var b=$f(a),e=!1;b.addEvent("play",function(a){e===!1&&(e=setInterval(function(){b.api("getCurrentTime",function(a,b){d.setTime(a)})},250))}),b.addEvent("pause",function(a){clearInterval(e),e=!1}),c.autoplay&&b.api("play")})})},_setupScrollHandler:function(){var b=this,d=b.config.slideTagName+(b.config.slideClass?"."+b.config.slideClass:""),f=this.config.portable?this.$portableContainer:e,g;b.scrolling=!1,setInterval(function(){if(b.scrolling&&(b.isAutoScrolling===!1||b.isAutoScrolling===c)){b.scrolling=!1;if(f.scrollLeft()===0)b.activateSlide(b.$firstSlide);else{var e=b.config.portable?f.position().left:0,h=b.config.portable?f.position().top:0,i={x:e+f.width()/2,y:h+f.height()/2};g=a(document.elementFromPoint(i.x,i.y)),g.is(d)?b.activateSlide(g):g=g.parents(d+":first").each(function(){b.activateSlide(a(this))})}}},b.config.onScrollInterval),f.scroll(function(){b.scrolling=!0});return this}},a.fn.fathom=function(a){new d(this,a);return this},d.defaults=d.prototype.defaults,d.setDefaults=function(b){a.extend(d.defaults,b)},b.Fathom=d})(jQuery,window);
