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

