(function($){$.ui=$.ui||{};$.fn.focus=function(options){return this.each(function(){var opts=$.extend({},options);if(opts!==false){new $.ui.focus(this,opts)}})};$.ui.focus=function(obj,options){this.settings={};if(options&&options.data){this.settings.data=$.extend({},$.ui.focus.settings.data,options.data);if(options.data.captions){this.caption=true}delete options.data}if(options&&options.bg){this.settings.bg=$.extend({},$.ui.focus.settings.bg,options.bg);delete options.bg}if(options&&options.sClass){this.settings.sClass=$.extend({},$.ui.focus.settings.sClass,options.sClass);delete options.sClass}this.settings=$.extend({},$.ui.focus.settings,this.settings,options);this.element=$(obj);this.initialize()};$.ui.focus.prototype={initialize:function(){if(this.interval){clearInterval(this.interval)}this.interval=0;this.animated=this.settings.animated;if(this.settings.onSelect){this.settings.onSelect(this)}if(this.element.find(this.settings.data.id).find(this.settings.data.list).size()==0){return false}if(this.element.find("."+this.settings.sClass.photo).size()!=0){this.element.find("."+this.settings.sClass.photo).remove()}$("<div>").addClass(this.settings.sClass.photo).insertAfter(this.element.find(this.settings.data.id));if(this.element.find("."+this.settings.sClass.caption).size()!=0){this.element.find("."+this.settings.sClass.caption).remove()}if(this.caption){$("<div>").addClass(this.settings.sClass.caption).insertAfter(this.element.find("."+this.settings.sClass.photo))}if(this.settings.bg.bool==true){$("<div>").addClass(this.settings.bg.className).css("opacity",1.0).insertAfter(this.element.find("."+this.settings.sClass.photo));this.$bg=this.element.find("."+this.settings.bg.className)}if(this.settings.data.photos){this.$photo=this.element.find("."+this.settings.sClass.photo)}if(this.settings.data.captions){this.$caption=this.element.find("."+this.settings.sClass.caption)}this.element.find(this.settings.data.id).hide();this.$transition=$([]);if(this.$photo){this.$transition=this.$transition.add(this.$photo)}if(this.$caption){this.$transition=this.$transition.add(this.$caption)}this.data=[];var _this=this;this.index=this.settings.index;this.element.find(this.settings.data.id).find(this.settings.data.list).each(function(){var $li=$(this);var $aThumb=$li.find(_this.settings.data.photos);_this.data.push({title:$aThumb.attr("alt"),slideUrl:$li.children("a").attr("href"),imgUrl:$aThumb.attr("src"),caption:$li.find(_this.settings.data.captions).remove()})});this.$photo.html(this.element.find(this.settings.data.id).find(this.settings.data.list).eq(this.index).html());if(this.settings.onSet){this.settings.onSet(this)}this.$image=this.$photo.find("img");this.$image.css("filter","revealTrans()");this.$photo.hover(function(e){if(_this.settings.onMouseOver&&e.target==$(this).find("img").get(0)){_this.settings.onMouseOver(_this)}},function(e){if(_this.settings.onMouseOut&&e.target==$(this).find("img").get(0)){_this.settings.onMouseOut(_this)}});if(this.settings.type==2){if(this.element.find("."+this.settings.sClass.thumb).size()==0){$("<div>").addClass(this.settings.sClass.thumb).append("<ul></ul>").appendTo(this.element);this.element.find(this.settings.data.id).find(this.settings.data.photos).each(function(i){$("<li>").append($(this).clone(true)).appendTo(_this.element.find("."+_this.settings.sClass.thumb+" ul"))})}this.$thumbs=this.element.find("."+this.settings.sClass.thumb+" ul").children();this.$thumbs.css("opacity",0.67)}else{if(this.settings.type==1){if(this.element.find("ol."+this.settings.sClass.num).size()==0){$("<ol></ol>").addClass(this.settings.sClass.num).appendTo(this.element);this.element.find(this.settings.data.id).find(this.settings.data.photos).each(function(i){$("<li>").append(i+1).appendTo(_this.element.find("ol."+_this.settings.sClass.num))})}this.$thumbs=this.element.find("ol."+this.settings.sClass.num).children()}}this.$thumbs.each(function(i){$(this).bind(_this.settings.event,function(e){var index=$.inArray(this,_this.$thumbs);_this.attachEvents(e,index);e.stopPropagation();return false}).hover(function(){$(this).not("."+_this.settings.sClass.selected).fadeTo("fast",1)},function(){$(this).not("."+_this.settings.sClass.selected).fadeTo("fast",0.67)})});this.$thumbs.filter("."+this.settings.sClass.selected).removeClass(this.settings.sClass.selected).end().eq(this.index).addClass(this.settings.sClass.selected);this.show(this.index);if(this.settings.auto){this.play()}},refresh:function(){var _this=this;var imgData=this.data[this.index];var isTransitioning=true;var transitionOutCallback=function(){isTransitioning=false;var imgData=_this.data[_this.index];if(_this.$caption){_this.$caption.empty().append(imgData.caption)}_this.buildImage(imgData)};if(this.animated=="slide"){this.settings.onTransitionOut(this.$photo,this.$bg,this.$caption,transitionOutCallback)}else{if(this.animated=="filter"){transitionOutCallback()}else{this.$transition.hide();transitionOutCallback()}}return this.syncThumbs()},buildImage:function(imgData){if(this.$photo){var _this=this;var nextIndex=this.getNextIndex(this.index);if(this.animated=="filter"){if($.browser.msie){with(this.$image.get(0).filters.revealTrans){Transition=this.settings.filter.transition;Duration=this.settings.filter.duration;apply();play()}}}this.$image.attr("src",imgData.imgUrl).attr("alt",imgData.title);this.$photo.find("a").attr("href",imgData.slideUrl)}if(this.animated=="slide"){this.settings.onTransitionIn(this.$photo,this.$bg,this.$caption)}else{this.$transition.show()}return this},syncThumbs:function(){this.$thumbs.filter("."+this.settings.sClass.selected).removeClass(this.settings.sClass.selected).end().eq(this.index).addClass(this.settings.sClass.selected)},attachEvents:function(e,index){this.pause();if(index>=0){this.show(index)}if(this.settings.auto){this.play()}e.preventDefault()},pause:function(){if(this.interval){this.toggleSlideshow()}return this},play:function(){if(!this.interval){this.toggleSlideshow()}return this},getNextIndex:function(index){var nextIndex=index+1;if(nextIndex>=this.data.length){nextIndex=0}return nextIndex},getPrevIndex:function(index){var prevIndex=index-1;if(prevIndex<0){prevIndex=this.data.length-1}return prevIndex},toggleSlideshow:function(){if(this.interval){clearInterval(this.interval);this.interval=0}else{var _this=this;this.interval=setInterval(function(){_this.ssAdvance()},this.settings.delay)}},ssAdvance:function(){var nextIndex=this.getNextIndex(this.index);this.show(nextIndex);return this},show:function(index){if(index<0){index=0}else{if(index>=this.data.length){index=this.data.length-1}}if(this.settings.onChange&&this.settings.type!==1){this.settings.onChange(this.$thumbs,this.index,index)}this.index=index;return this.refresh()}};$.extend($.ui.focus,{settings:{auto:false,type:2,index:0,delay:5000,data:{id:"ul",list:"li",photos:"img",captions:"span"},bg:{bool:false,className:"bg",bgcolor:"#000000"},sClass:{photo:"photo",caption:"caption",thumb:"thumb",num:"num",selected:"cur"},event:"click",animated:["slide","filter"][Math.floor(Math.random()*(["slide","filter"].length))],filter:{transition:23,duration:1},onSet:undefined,onSelect:undefined,onMouseOver:undefined,onMouseOut:undefined,onChange:function(thumbs,prevIndex,nextIndex){thumbs.eq(prevIndex).fadeTo("fast",0.67).end().eq(nextIndex).fadeTo("fast",1)},onTransitionOut:function(image,bg,caption,callback){if(bg){bg.fadeTo("fast",0)}if(caption){caption.fadeTo("fast",0.2)}image.fadeTo("fast",0.2,callback)},onTransitionIn:function(image,bg,caption){if(bg){bg.fadeTo("fast",0.5)}if(caption){caption.fadeTo("slow",1)}image.fadeTo("slow",1)}}})})(jQuery);