/*
 HTML5 Slideshow
 Version: 1.2.0
 (c) 2011 DMXzone.com
 @build 08-09-2011 10:47:05
*/
(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(),g=c.outerHeight();c.css({left:(this.width-e)/2,top:(this.height-g)/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,g=this.height/e;switch(this.opts.slide.placement){case "stretch":c=this.width;e=this.height;break;case "fit":case "squeeze":b=b<g?b:g;c*=b;e*=b;break;case "fill":case "trim":b=b>g?b:g,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 e,a={left:0},g,h,f={left:0},j,i=this.opts.transition.effect;i==="random"&&(i=["fade","slide","reveil","push"][Math.floor(Math.random()*4)]);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":e={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:e={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");e&&this.$slides.eq(c).css(e);this.$slides.eq(c).animate(a,this.opts.transition.duration,this.opts.transition.easing,function(){g&&b.$slides.eq(c).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&&b.$slides.eq(b.curr).css(j)});!d.support.opacity&&i=="fade"&&(this.$slides.eq(c).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"):(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),g=this.getZoom(c.end),h=this.getPan(c.start),c=this.getPan(c.end),f={width:e*this.imgWidth,height:e*this.imgHeight},j={width:g*this.imgWidth,height:g*this.imgHeight};f.left=h.indexOf("left")>-1?0:h.indexOf("right")>-1?this.width-f.width:(this.width-f.width)/2;f.top=h.indexOf("top")>-1?0:h.indexOf("bottom")>-1?this.height-f.height:(this.height-f.height)/2;j.left=c.indexOf("left")>-1?0:c.indexOf("right")>-1?this.width-j.width:(this.width-j.width)/2;j.top=c.indexOf("top")>
-1?0:c.indexOf("bottom")>-1?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*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*g)/2),o=Math.round((this.height-this.imgHeight*g)/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+")");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(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);

