/*
 HTML5 Slideshow
 Version: 1.2.1
 (c) 2011 DMXzone.com
 @build 08-09-2011 09:47:05
*/
(function(e){function k(a,c){var b=this;this.version=n;this.$target=e(a);this.opts=e.extend(!0,{},k.options,c||{});this.preloadId=0;this.images=[];this.$target.append('<div class="'+clsLoader+'"></div>');this.hasSpryRegion()?Spry.Data.Region.addObserver(this._spryRegion,{onPostUpdate:function(){b.preloadImages.apply(b)}}):this.preloadImages()}function l(a,c){this.$target=e(a);this.opts=e.extend(!0,{},k.options,c||{});this.init()}var n="1.0.5";clsCtrl="dmxControl";clsLoader="dmxLoader";iPhone="iPhone"===
navigator.platform;iPod="iPod"===navigator.platform;iPad="iPad"===navigator.platform;iOS=iPhone||iPod||iPad;e.fn.dmxHTML5Slideshow=function(a){var c=Array.prototype.slice.call(arguments,1);this.each(function(){var b;e(this).data("slideshow")?b=e(this).data("slideshow"):(b=new k(this,a),e(this).data("slideshow",b));"string"===typeof a&&b[a]&&b[a].apply(b,c)});return this};k.options={autoPlay:!0,index:0,shuffle:!1,slide:{duration:8E3,placement:"center"},controls:{enabled:!0,autoHide:!0,position:"center",
playPause:!0,nextPrev:!0,firstLast:!0},description:{position:"top",effect:"slide",duration:400,easing:"swing",show:"slide"},transition:{effect:"fade",duration:1E3,easing:"swing"},kenburns:{enabled:!0,start:{zoom:"1~1.5",pan:"random"},end:{zoom:"1~1.5",pan:"random"}}};k.prototype={init:function(){var a=this;this.$slides=this.$target.find(".dmxSlide");this.width=this.$target.width();this.height=this.$target.height();if(this.opts.shuffle)for(var c,b,d=this.$slides.length;d;c=parseInt(Math.random()*d),
b=this.$slides[--d],this.$slides[d]=this.$slides[c],this.$slides[c]=b);if("random"===this.opts.index)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 a=e("a[onfocus]",this),b=e("a[onblur]",this);0<a.length&&(e(this).bind("show",a.attr("onfocus")),a.removeAttr("onfocus"));0<b.length&&(e(this).bind("hide",b.attr("onblur")),b.removeAttr("onblur"))});
this.opts.controls.enabled&&this.setupControls();this.setupDescriptions();this.opts.kenburns.enabled?this.$slides.dmxKenburns(this.opts.kenburns):this.$slides.find("img").each(function(){a.positionImage.call(a,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);this.opts.kenburns.enabled&&(this.paused?this.$slides.eq(this.curr).dmxKenburns("show"):this.$slides.eq(this.curr).dmxKenburns("animate",
this.opts.slide.duration+2*this.opts.transition.duration));if(!this.paused)this.timeoutId=setTimeout(function(){a.next.call(a)},this.opts.transition.duration+this.opts.slide.duration)},delegate:function(a,c){return function(){c.apply(a,arguments)}},preloadImages:function(){var a=this;0==this.images.length&&this.$target.find("img").each(function(){var b=new Image;b.onload=function(){this.loaded=!0};b.onerror=function(){this.loaded=!0};b.src=this.src;a.images.push(b)});for(var c=0;c<this.images.length;++c){if(this.images[c].complete)this.images[c].loaded=
!0;if(!this.images[c].loaded){this.preloadId=window.setTimeout(this.delegate(this,this.preloadImages),100);return}}this.init();this.$target.find("."+clsLoader).remove()},hasSpryRegion:function(){if("undefined"!=typeof Spry&&Spry.Data&&Spry.Data.regionsArray){this.isEmptyObject(Spry.Data.regionsArray)&&Spry.Data.initRegions();for(var a in Spry.Data.regionsArray)if(0<this.$target.find("#"+a).length)return this._spryRegion=a,!0}return!1},isEmptyObject:function(a){for(var c in a)return!1;return!0},setupControls:function(){var a=
this,c=this.opts.controls,b=e('<div class="dmxControlbar '+c.position+'"></div>').appendTo(this.$target);c.firstLast&&e('<div class="'+clsCtrl+' first"></div>').click(function(b){b.stopPropagation();a.first.call(a)}).appendTo(b);c.nextPrev&&e('<div class="'+clsCtrl+' prev"></div>').click(function(b){b.stopPropagation();a.prev.call(a)}).appendTo(b);c.playPause&&e('<div class="'+clsCtrl+" "+(this.opts.pause?"play":"pause")+'"></div>').click(function(b){b.stopPropagation();a.playPause.call(a)}).appendTo(b);
c.nextPrev&&e('<div class="'+clsCtrl+' next"></div>').click(function(b){b.stopPropagation();a.next.call(a)}).appendTo(b);c.firstLast&&e('<div class="'+clsCtrl+' last"></div>').click(function(b){b.stopPropagation();a.last.call(a)}).appendTo(b);switch(c.position){case "top":b.css("top",0);break;case "bottom":b.css("bottom",0)}if("center"===c.position){var d=b.outerWidth(),g=b.outerHeight();b.css({left:(this.width-d)/2,top:(this.height-g)/2})}c.autoHide&&(b.hide(),this.$target.hover(function(){b.fadeIn()},
function(){b.fadeOut()}))},setupDescriptions:function(){var a=this.opts.description,c=function(){switch(a.effect){case "fade":e(this).find(".dmxDescription").animate({opacity:"show"},a.duration,a.easing);break;case "slide":var b={};b[a.position]=0;e(this).find(".dmxDescription").animate(b,a.duration,a.easing);break;default:e(this).find(".dmxDescription").show()}},b=function(){var b=e(this).find(".dmxDescription");switch(a.effect){case "fade":b.animate({opacity:"hide"},a.duration,a.easing);break;case "slide":var c=
{};c[a.position]=-b.outerHeight();b.animate(c,a.duration,a.easing);break;default:b.hide()}};this.$slides.each(function(){var d=e(".dmxDescription",this).addClass(a.position);switch(a.position){case "top":d.css("top",0);break;case "bottom":d.css("bottom",0)}if("always"!==a.show){switch(a.effect){case "fade":d.hide();break;case "slide":d.css(a.position,-d.outerHeight())}"hover"===a.show?e(this).hover(c,b):"slide"===a.show&&(e(this).bind("show",c),e(this).bind("hide",b))}})},positionImage:function(a){var a=
e(a),c=1,b=a.width(),d=a.height(),c=this.width/b,g=this.height/d;switch(this.opts.slide.placement){case "stretch":b=this.width;d=this.height;break;case "fit":case "squeeze":c=c<g?c:g;b*=c;d*=c;break;case "fill":case "trim":c=c>g?c:g,b*=c,d*=c}a.css({width:b,height:d,left:(this.width-b)/2,top:(this.height-d)/2})},playPause:function(){this.paused?(this.play(),this.$target.find("."+clsCtrl+".play").removeClass("play").addClass("pause")):(this.pause(),this.$target.find("."+clsCtrl+".pause").removeClass("pause").addClass("play"))},
play:function(){this.paused=!1;this.opts.kenburns.enabled&&this.$slides.eq(this.curr).dmxKenburns("stop",!1);this.next()},pause:function(){this.paused=!0;clearTimeout(this.timeoutId);this.opts.kenburns.enabled&&this.$slides.eq(this.curr).dmxKenburns("stop",!0)},first:function(){this.go(0)},prev:function(){var a=this.curr-1;if(0>a)a=this.lastIndex;this.go(a)},next:function(){var a=this.curr+1;a>this.lastIndex&&(a=0);this.go(a)},last:function(){this.go(this.lastIndex)},go:function(a){clearTimeout(this.timeoutId);
var c=this,b=this.curr;this.curr=Math.min(Math.max(0,a),this.lastIndex);if(this.curr!==b){var d,a={left:0},g,h,f={left:0},j,i=this.opts.transition.effect;"random"===i&&(i=["fade","slide","reveil","push"][Math.floor(4*Math.random())]);switch(i){case "fade":a={opacity:"hide"};f={opacity:"show"};break;case "slide":g={display:"none"};h={zIndex:"12",left:this.width,display:"block"};f={left:0};j={zIndex:11};break;case "reveil":d={zIndex:12};a={left:this.width};g={zIndex:11,left:0,display:"none"};h={display:"block"};
break;case "push":a={left:-this.width};g={left:0,display:"none"};h={left:this.width,display:"block"};f={left:0};break;default:d={display:"none"},h={display:"block"}}this.$slides.eq(b).stop(!0,!0);this.$slides.eq(this.curr).stop(!0,!0);this.$slides.eq(b).trigger("hide");d&&this.$slides.eq(b).css(d);this.$slides.eq(b).animate(a,this.opts.transition.duration,this.opts.transition.easing,function(){g&&c.$slides.eq(b).css(g)});this.$slides.eq(this.curr).trigger("show");h&&this.$slides.eq(this.curr).css(h);
this.$slides.eq(this.curr).animate(f,this.opts.transition.duration,this.opts.transition.easing,function(){j&&c.$slides.eq(c.curr).css(j)});!e.support.opacity&&"fade"==i&&(this.$slides.eq(b).find("img").animate(a,this.opts.transition.duration,this.opts.transition.easing),this.$slides.eq(this.curr).find("img").animate(f,this.opts.transition.duration,this.opts.transition.easing));this.paused?this.opts.kenburns.enabled&&this.$slides.eq(this.curr).dmxKenburns("show"):(c=this,this.opts.kenburns.enabled&&
this.$slides.eq(this.curr).dmxKenburns("animate",this.opts.slide.duration+2*this.opts.transition.duration),this.timeoutId=setTimeout(function(){c.next.call(c)},this.opts.transition.duration+this.opts.slide.duration))}}};e.fn.dmxKenburns=function(a){var c=Array.prototype.slice.call(arguments,1);this.each(function(){var b;e(this).data("kenburns")?b=e(this).data("kenburns"):(b=new l(this,a),e(this).data("kenburns",b));"string"===typeof a&&b[a]&&b[a].apply(b,c)});return this};l.options={start:{zoom:"1~1.5",
pan:"random"},end:{zoom:"1~1.5",pan:"random"}};l.positions=["top-left","top-right","bottom-left","bottom-right"];l.prototype={init:function(){this.width=this.$target.width();this.height=this.$target.height();this.halted=!1;iOS?(this.useCanvas=!1,this.useTransition=!0):(this.checkCanvas(),this.useTransition=!1);if(this.useCanvas)this.setupCanvas();else{this.$image=this.$target.find("img");this.image=this.$image[0];this.image.loaded=!0;this.imgWidth=this.$image.width();this.imgHeight=this.$image.height();
var a=this.width/this.imgWidth,c=this.height/this.imgHeight,a=a>c?a:c;this.imgWidth=Math.round(this.imgWidth*a);this.imgHeight=Math.round(this.imgHeight*a);this.$image.width(this.imgWidth);this.$image.height(this.imgHeight)}},checkCanvas:function(){this.useCanvas=!!document.createElement("canvas").getContext},setupCanvas:function(){var a=this.$target.find("img");this.image=a[0];this.image.loaded=!0;this.imgWidth=a.width();this.imgHeight=a.height();var c=this.width/this.imgWidth,b=this.height/this.imgHeight,
c=c>b?c:b;this.imgWidth*=c;this.imgHeight*=c;c=document.createElement("canvas");c.width=this.width;c.height=this.height;this.ctx=c.getContext("2d");a.replaceWith(c);this.intervalId=0},stop:function(a){this.halted=a},show:function(){var a=this.imgWidth,c=this.imgHeight,b=(this.width-a)/2,d=(this.height-c)/2;this.useCanvas&&(this.ctx.clearRect(0,0,this.width,this.height),this.ctx.drawImage(this.image,b,d,a,c))},animate:function(a,c){if(this.image.loaded){this.halted=!1;var b=e.extend({},this.opts,c||
{}),d=this.getZoom(b.start),g=this.getZoom(b.end),h=this.getPan(b.start),b=this.getPan(b.end),f={width:d*this.imgWidth,height:d*this.imgHeight},j={width:g*this.imgWidth,height:g*this.imgHeight};f.left=-1<h.indexOf("left")?0:-1<h.indexOf("right")?this.width-f.width:(this.width-f.width)/2;f.top=-1<h.indexOf("top")?0:-1<h.indexOf("bottom")?this.height-f.height:(this.height-f.height)/2;j.left=-1<b.indexOf("left")?0:-1<b.indexOf("right")?this.width-j.width:(this.width-j.width)/2;j.top=-1<b.indexOf("top")?
0:-1<b.indexOf("bottom")?this.height-j.height:(this.height-j.height)/2;if(this.useCanvas){var i=this,l=(new Date).getTime();clearInterval(this.intervalId);this.intervalId=setInterval(function(){var b=(new Date).getTime()-l,c=b>a?1:b/a;if(i.image.loaded){var d=f.left+(j.left-f.left)*c,e=f.top+(j.top-f.top)*c,g=f.width+(j.width-f.width)*c,c=f.height+(j.height-f.height)*c;i.ctx.clearRect(0,0,i.width,i.height);i.ctx.drawImage(i.image,d,e,g,c)}(b>a||i.halted)&&clearInterval(i.intervalId)},1E3/60)}else if(this.useTransition){var k=
Math.round((this.width-this.imgWidth*d)/2),m=Math.round((this.height-this.imgHeight*d)/2),k=-1<h.indexOf("left")?0:-1<h.indexOf("right")?2*k:k,h=-1<h.indexOf("top")?0:-1<h.indexOf("bottom")?2*m:m,m=Math.round((this.width-this.imgWidth*g)/2),o=Math.round((this.height-this.imgHeight*g)/2),n=-1<b.indexOf("left")?0:-1<b.indexOf("right")?2*m:m,p=-1<b.indexOf("top")?0:-1<b.indexOf("bottom")?2*o:o;this.$image.css({width:this.imgWidth,height:this.imgHeight,"-webkit-transform-origin":"0 0","-webkit-transition-property":"-webkit-transform",
"-webkit-transition-duration":"0s","-webkit-transition-timing-function":"linear"});this.$image.css("-webkit-transform","translate3d("+k+"px,"+h+"px,0px) scale("+d+")");i=this;setTimeout(function(){i.$image.css("-webkit-transition-duration",a+"ms");i.$image.css("-webkit-transform","translate3d("+n+"px,"+p+"px,0px) scale("+g+")")},0)}else this.$image.css(f).animate(j,a,"linear")}},getZoom:function(a){a=a.zoom;if("string"===typeof a)if(-1<a.indexOf("~"))var c=a.split("~"),a=parseFloat(c[0]),c=parseFloat(c[1]),
a=a+Math.random()*(c-a);else a=parseFloat(a);return a},getPan:function(a){a=a.pan;"random"===a&&(a=l.positions[Math.floor(Math.random()*l.positions.length)]);return a}}})(jQuery);

