/*

 HTML5 Slideshow
 version 1.0.1
 (c) 2010 DMXzone

*/
(function(g){var b="1.0.1",d="dmxSlideshow",f="dmxSlide",a="dmxDescription",h="dmxControlbar";clsCtrl="dmxControl",clsLoader="dmxLoader",iPhone=navigator.platform==="iPhone",iPod=navigator.platform==="iPod",iPad=navigator.platform==="iPad",iOS=iPhone||iPod||iPad;g.fn.dmxHTML5Slideshow=function(j){var i=Array.prototype.slice.call(arguments,1);this.each(function(){var k;if(g(this).data("slideshow")){k=g(this).data("slideshow")}else{k=new e(this,j);g(this).data("slideshow",k)}if(typeof j==="string"&&k[j]){k[j].apply(k,i)}});return this};function e(k,j){var i=this;this.version=b;this.$target=g(k);this.opts=g.extend(true,{},e.options,j||{});this.preloadId=0;this.images=[];this.$target.append('<div class="'+clsLoader+'"></div>');this.$target.find("img").each(function(){var l=new Image();l.onload=function(){this.loaded=true};l.src=this.src;i.images.push(l)});this.preloadId=setInterval(function(){var m=true;for(var l=0;l<i.images.length;++l){if(!i.images[l].loaded){m=false;break}}if(m){clearInterval(i.preloadId);i.init();i.$target.find("."+clsLoader).remove()}},100)}e.options={autoPlay:true,index:0,shuffle:false,slide:{duration:8000,placement:"center"},controls:{enabled:true,autoHide:true,position:"center",playPause:true,nextPrev:true,firstLast:true},description:{position:"top",effect:"slide",duration:400,easing:"swing",show:"slide"},transition:{effect:"fade",duration:1000,easing:"swing"},kenburns:{enabled:true,start:{zoom:"1~1.5",pan:"random"},end:{zoom:"1~1.5",pan:"random"}}};e.prototype={init:function(){var l=this;this.$slides=this.$target.find("."+f);this.width=this.$target.width();this.height=this.$target.height();if(this.opts.shuffle){for(var m,k,n=this.$slides.length;n;m=parseInt(Math.random()*n),k=this.$slides[--n],this.$slides[n]=this.$slides[m],this.$slides[m]=k){}}if(this.opts.index==="random"){this.opts.index=Math.floor(Math.random()*this.$slides.length)}this.curr=this.opts.index;this.lastIndex=this.$slides.length-1;this.paused=!this.opts.autoPlay;this.timeoutId=0;this.$slides.each(function(){var j=g("a[onfocus]",this),i=g("a[onblur]",this);if(j.length>0){g(this).bind("show",j.attr("onfocus"));j.removeAttr("onfocus")}if(i.length>0){g(this).bind("hide",i.attr("onblur"));i.removeAttr("onblur")}});if(this.opts.controls.enabled){this.setupControls()}this.setupDescriptions();if(this.opts.kenburns.enabled){this.$slides.dmxKenburns(this.opts.kenburns)}else{this.$slides.find("img").each(function(){l.positionImage.call(l,this)})}this.$slides.hide().css("visibility","visible");this.$slides.eq(this.curr).trigger("show").animate({opacity:"show"},this.opts.transition.duration,this.opts.transition.easing);if(this.opts.kenburns.enabled){if(this.paused){this.$slides.eq(this.curr).dmxKenburns("show")}else{this.$slides.eq(this.curr).dmxKenburns("animate",this.opts.slide.duration+(2*this.opts.transition.duration))}}if(!this.paused){this.timeoutId=setTimeout(function(){l.next.call(l)},this.opts.transition.duration+this.opts.slide.duration)}},setupControls:function(){var k=this,l=this.opts.controls,i=g('<div class="'+h+" "+l.position+'"></div>').appendTo(this.$target);if(l.firstLast){g('<div class="'+clsCtrl+' first"></div>').click(function(n){n.stopPropagation();k.first.call(k)}).appendTo(i)}if(l.nextPrev){g('<div class="'+clsCtrl+' prev"></div>').click(function(n){n.stopPropagation();k.prev.call(k)}).appendTo(i)}if(l.playPause){g('<div class="'+clsCtrl+" "+(this.opts.pause?"play":"pause")+'"></div>').click(function(n){n.stopPropagation();k.playPause.call(k)}).appendTo(i)}if(l.nextPrev){g('<div class="'+clsCtrl+' next"></div>').click(function(n){n.stopPropagation();k.next.call(k)}).appendTo(i)}if(l.firstLast){g('<div class="'+clsCtrl+' last"></div>').click(function(n){n.stopPropagation();k.last.call(k)}).appendTo(i)}switch(l.position){case"top":i.css("top",0);break;case"bottom":i.css("bottom",0)}if(l.position==="center"){var j=i.outerWidth(),m=i.outerHeight();i.css({left:(this.width-j)/2,top:(this.height-m)/2})}if(l.autoHide){i.hide();this.$target.hover(function(){i.fadeIn()},function(){i.fadeOut()})}},setupDescriptions:function(){var k=this.opts.description,j=function(m){switch(k.effect){case"fade":g(this).find("."+a).animate({opacity:"show"},k.duration,k.easing);break;case"slide":var l={};l[k.position]=0;g(this).find("."+a).animate(l,k.duration,k.easing);break;default:g(this).find("."+a).show()}},i=function(n){var l=g(this).find("."+a);switch(k.effect){case"fade":l.animate({opacity:"hide"},k.duration,k.easing);break;case"slide":var m={};m[k.position]=-l.outerHeight();l.animate(m,k.duration,k.easing);break;default:l.hide()}};this.$slides.each(function(m){var l=g("."+a,this).addClass(k.position);switch(k.position){case"top":l.css("top",0);break;case"bottom":l.css("bottom",0)}if(k.show!=="always"){switch(k.effect){case"fade":l.hide();break;case"slide":l.css(k.position,-l.outerHeight());break}if(k.show==="hover"){g(this).hover(j,i)}else{if(k.show==="slide"){g(this).bind("show",j);g(this).bind("hide",i)}}}})},positionImage:function(o){var k=g(o),n=1,j=k.width(),l=k.height(),m=this.width/j,i=this.height/l;switch(this.opts.slide.placement){case"stretch":j=this.width;l=this.height;break;case"fit":case"squeeze":n=m<i?m:i;j*=n;l*=n;break;case"fill":case"trim":n=m>i?m:i;j*=n;l*=n;break}k.css({width:j,height:l,left:(this.width-j)/2,top:(this.height-l)/2})},playPause:function(){if(this.paused){this.play();this.$target.find("."+clsCtrl+".play").removeClass("play").addClass("pause")}else{this.pause();this.$target.find("."+clsCtrl+".pause").removeClass("pause").addClass("play")}},play:function(){this.paused=false;if(this.opts.kenburns.enabled){this.$slides.eq(this.curr).dmxKenburns("stop",false)}this.next()},pause:function(){this.paused=true;clearTimeout(this.timeoutId);if(this.opts.kenburns.enabled){this.$slides.eq(this.curr).dmxKenburns("stop",true)}},first:function(){this.go(0)},prev:function(){var i=this.curr-1;if(i<0){i=this.lastIndex}this.go(i)},next:function(){var i=this.curr+1;if(i>this.lastIndex){i=0}this.go(i)},last:function(){this.go(this.lastIndex)},go:function(o){clearTimeout(this.timeoutId);var r=this,l=this.curr;this.curr=Math.min(Math.max(0,o),this.lastIndex);if(this.curr===l){return}var q,j={left:0},n,p,m={left:0},i,k=this.opts.transition.effect;if(k==="random"){k=["fade","slide","reveil","push"][Math.floor(Math.random()*4)]}switch(k){case"fade":j={opacity:"hide"};m={opacity:"show"};break;case"slide":n={display:"none"};p={zIndex:"12",left:this.width,display:"block"};m={left:0};i={zIndex:11};break;case"reveil":q={zIndex:12};j={left:this.width};n={zIndex:11,left:0,display:"none"};p={display:"block"};break;case"push":j={left:-this.width};n={left:0,display:"none"};p={left:this.width,display:"block"};m={left:0};break;default:q={display:"none"};p={display:"block"}}this.$slides.eq(l).stop(true,true);this.$slides.eq(this.curr).stop(true,true);this.$slides.eq(l).trigger("hide");if(q){this.$slides.eq(l).css(q)}this.$slides.eq(l).animate(j,this.opts.transition.duration,this.opts.transition.easing,function(){if(n){r.$slides.eq(l).css(n)}});this.$slides.eq(this.curr).trigger("hide");if(p){this.$slides.eq(this.curr).css(p)}this.$slides.eq(this.curr).animate(m,this.opts.transition.duration,this.opts.transition.easing,function(){if(i){r.$slides.eq(r.curr).css(i)}});if(!this.paused){var r=this;if(this.opts.kenburns.enabled){this.$slides.eq(this.curr).dmxKenburns("animate",this.opts.slide.duration+(2*this.opts.transition.duration))}this.timeoutId=setTimeout(function(){r.next.call(r)},this.opts.transition.duration+this.opts.slide.duration)}else{if(this.opts.kenburns.enabled){this.$slides.eq(this.curr).dmxKenburns("show")}}}};g.fn.dmxKenburns=function(j){var i=Array.prototype.slice.call(arguments,1);this.each(function(){var k;if(g(this).data("kenburns")){k=g(this).data("kenburns")}else{k=new c(this,j);g(this).data("kenburns",k)}if(typeof j==="string"&&k[j]){k[j].apply(k,i)}});return this};function c(j,i){this.$target=g(j);this.opts=g.extend(true,{},e.options,i||{});this.init()}c.options={start:{zoom:"1~1.5",pan:"random"},end:{zoom:"1~1.5",pan:"random"}};c.positions=["top-left","top-right","bottom-left","bottom-right"];c.prototype={init:function(){this.width=this.$target.width();this.height=this.$target.height();this.halted=false;if(iOS){this.useCanvas=false;this.useTransition=true}else{this.checkCanvas();this.useTransition=false}if(this.useCanvas){this.setupCanvas()}else{this.$image=this.$target.find("img");this.image=this.$image[0];this.image.loaded=true;this.imgWidth=this.$image.width();this.imgHeight=this.$image.height();var k=this.width/this.imgWidth,i=this.height/this.imgHeight,j=k>i?k:i;this.imgWidth*=j;this.imgHeight*=j;this.$image.width(this.imgWidth);this.$image.height(this.imgHeight)}},checkCanvas:function(){this.useCanvas=!!document.createElement("canvas").getContext},setupCanvas:function(){var j=this,l=this.$target.find("img");this.image=l[0];this.image.loaded=true;this.imgWidth=l.width();this.imgHeight=l.height();var n=this.width/this.imgWidth,i=this.height/this.imgHeight,m=n>i?n:i;this.imgWidth*=m;this.imgHeight*=m;var k=document.createElement("canvas");k.width=this.width;k.height=this.height;this.ctx=k.getContext("2d");l.replaceWith(k);this.intervalId=0},stop:function(i){this.halted=i},show:function(){var j=this.imgWidth,k=this.imgHeight,i=(this.width-j)/2,l=(this.height-k)/2;if(this.useCanvas){this.ctx.clearRect(0,0,this.width,this.height);this.ctx.drawImage(this.image,i,l,j,k)}},animate:function(i,l){if(!this.image.loaded){return}this.halted=false;var u=g.extend({},this.opts,l||{}),q=this.getZoom(u.start),x=this.getZoom(u.end),w=this.getPan(u.start),C=this.getPan(u.end),n={width:q*this.imgWidth,height:q*this.imgHeight},m={width:x*this.imgWidth,height:x*this.imgHeight};n.x=w.indexOf("left")>-1?0:w.indexOf("right")>-1?this.width-n.width:(this.width-n.width)/2;n.y=w.indexOf("top")>-1?0:w.indexOf("bottom")>-1?this.height-n.height:(this.height-n.height)/2;m.x=C.indexOf("left")>-1?0:C.indexOf("right")>-1?this.width-m.width:(this.width-m.width)/2;m.y=C.indexOf("top")>-1?0:C.indexOf("bottom")>-1?this.height-m.height:(this.height-m.height)/2;if(this.useCanvas){var r=this,p=(new Date()).getTime();clearInterval(this.intervalId);this.intervalId=setInterval(function(){var G=(new Date()).getTime()-p,F=(G>i)?1:G/i;if(r.image.loaded){var o=n.x+((m.x-n.x)*F),E=n.y+((m.y-n.y)*F),s=n.width+((m.width-n.width)*F),D=n.height+((m.height-n.height)*F);r.ctx.clearRect(0,0,r.width,r.height);r.ctx.drawImage(r.image,o,E,s,D)}if(G>i||r.halted){clearInterval(r.intervalId)}},1000/60)}else{if(this.useTransition){var t=Math.round((this.width-(this.imgWidth*q))/2),B=Math.round((this.height-(this.imgHeight*q))/2),z=(w.indexOf("left")>-1)?-t:(w.indexOf("right")>-1)?t:0,v=(w.indexOf("top")>-1)?-B:(w.indexOf("bottom")>-1)?B:0;var y=Math.round((this.width-(this.width*x))/2),k=Math.round((this.height-(this.height*x))/2),j=(C.indexOf("left")>-1)?-y:(C.indexOf("right")>-1)?y:0,A=(C.indexOf("top")>-1)?-k:(C.indexOf("bottom")>-1)?k:0;this.$image.css({width:this.width,height:this.height,"-webkit-transition-property":"-webkit-transform","-webkit-transition-duration":"0s","-webkit-transition-timing-function":"linear"});this.$image.css("-webkit-transform","translate3d("+z+"px,"+v+"px,0px) scale("+q+")");var r=this;setTimeout(function(){r.$image.css("-webkit-transition-duration",i+"ms");r.$image.css("-webkit-transform","translate3d("+j+"px,"+A+"px,0px) scale("+x+")")},0)}else{this.$image.css(n).animate(m,i,"linear")}}},getZoom:function(m){var l=m.zoom;if(typeof l==="string"){if(l.indexOf("~")>-1){var k=l.split("~"),j=parseFloat(k[0]),i=parseFloat(k[1]);l=j+(Math.random()*(i-j))}else{l=parseFloat(l)}}return l},getPan:function(j){var i=j.pan;if(i==="random"){i=c.positions[Math.floor(Math.random()*c.positions.length)]}return i}}})(jQuery);
